﻿var map;
var markerManager;
var leftlinksContainer;
var rightlinksContainer;

function map_load(classId) {

    if (GBrowserIsCompatible()) {
		var event 
		= function (result) //AI: Получаем начальные координаты и масштаб
			{
				var root = XmlRootByText(result);
				var objects = GetXmlNodesByTagName(root, 'StartCoords');
				
				for (i=0; i<objects.length; i++) 
				{
					var Scale = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Scale'));
					var Latitude = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Latitude'));
					var Longitude = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Longitude'));
					
					CreateMap(Latitude, Longitude, Scale);
				}
				//AI: Это для того чтобы с самого начала были загружены организации
				GetAllOrganizationObjects(classId, true);
			}
		HttpRequest('../../ajax/googlemapsstartcoords.aspx', null, 0, event);
    }
}

//AI: Функция создает карту и устанавливает центр
function CreateMap(latitude, longitude, scale)
{
	map = new GMap2(document.getElementById("map"));
    map.setCenter( new GLatLng(latitude,longitude),parseInt(scale));
	markerManager = new MarkerManager(map);

    var map_ctrl=new GLargeMapControl();
    var map_type_ctrl=new GMapTypeControl();
    var map_scale_ctrl=new GScaleControl();

    /* Добавить элементы навигации */
    map.addControl(map_ctrl);
    /* Кнопки выбора типа карты*/
    map.addControl(map_type_ctrl);
    /* Добавить масштабную линейку */
    map.addControl(map_scale_ctrl);
}


function GetAllOrganizationObjects(organizationClassID, linksDisabled)
{

	markerManager.clearMarkers();
	leftlinksContainer = document.getElementById("leftlinksContainer");
	rightlinksContainer = document.getElementById("rightlinksContainer");
	leftlinksContainer.innerHTML = ""; //AI: Это я так очищаю контейнер с ссылками
	rightlinksContainer.innerHTML = ""; //AI: Это я так очищаю контейнер с ссылками
	
	var event 
	= function (result) {
		
		var root = XmlRootByText(result);
		var objects = GetXmlNodesByTagName(root, 'Object');
		var markers = new Array();
		for (i=0; i<objects.length; i++) 
		{
			var Name = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Name'));
			var Address = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Address'));
			var PhoneNumber = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'PhoneNumber'));
			var Subway = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Subway'));
			var Latitude = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Latitude'));
			var Longitude = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'Longitude'));
			var MinScale = GetXmlNodeValue(GetXmlNodeByTagName(objects[i], 'MinScale'));
			
			SetMarker(Latitude, Longitude, MinScale, Name, Address, PhoneNumber, Subway);
			
			if (!linksDisabled)
				CreateLink(Latitude, Longitude, Name, Address, PhoneNumber, Subway, i);
		}
		markerManager.refresh();
		//alert((new Date() - start)/1000);
	}
	var filterType = document.getElementById("filterType");
	var filterValue = document.getElementById("filterValue");
	var start = new Date();

	HttpRequest('../../ajax/googlemapsorganizations.aspx?ClassID=' + organizationClassID + '&FilterType=' + encodeURIComponent(filterType.value) + '&filterValue=' + encodeURIComponent(filterValue.value), null, 0, event);
}

//AI: Функция устанавливает маркер
function SetMarker(latitude, longitude, minScale, name, address, phoneNumber, subway)
{
	if ((latitude == 0) || (longitude == 0)) return;
	var string;
	if(name!="") string = 'Название: ' + name + '<br/>';
	if(address!="") string += 'Адрес: ' +address + '<br/>';
	if(phoneNumber!="") string +="Телефон: " + phoneNumber +'<br/>';
	if(subway!="") string +="Метро: " + subway;
	
	var newMarker = new GMarker(new GLatLng(latitude,longitude));	
	newMarker.info = string;
	var handler = function() { newMarker.openInfoWindowHtml(string, {maxWidth: 200});};
				
	GEvent.addListener(newMarker, "click",	handler);
	//map.addOverlay(newMarker);
	markerManager.addMarker(newMarker, (minScale) ? minScale : 0);
	return newMarker;
}

//AI: Функция создает ссылки на компании.
function CreateLink(latitude, longitude, name, address, phoneNumber, subway, index)
{
	var newLink = document.createElement("a");
	var newP = document.createElement("p");
	var newDiv = document.createElement("div");
	var newSpan = document.createElement("span");
	
	
	
	if(name!="") newLink.innerHTML = name;
	if(address!="") newSpan.innerHTML = address;
	if(phoneNumber!="") newSpan.innerHTML +=", тел." + phoneNumber;
	if(subway!="") newSpan.innerHTML +=", м." + subway;
		
	newLink.style.cursor = "pointer";
	newDiv.className = "search_res";
	
	function handler () 
	{
		markerManager.clearMarkers();
		var newMarker = SetMarker(latitude, longitude, 0, name, address, phoneNumber, subway);
		markerManager.refresh();
		if ((latitude != 0) && (longitude != 0)) map.setCenter(new GLatLng(latitude,longitude));
		if (newMarker) window.setTimeout(function(){newMarker.openInfoWindowHtml(newMarker.info, {maxWidth: 200});}, 0);
		window.scrollTo(100,650);
	};
	newLink.onclick =handler; //AI: Навешиваем обработчик на событие onclick
	
	newP.appendChild(newLink);
	newDiv.appendChild(newP);
	newDiv.appendChild(newSpan);
	
	 if (index%2 == 0)
		leftlinksContainer.appendChild(newDiv);
	 else
		rightlinksContainer.appendChild(newDiv);
   

	
	
}

