
function tuningMap(centerLat, centerLng, zoomLevel, mapType)
{
	
	// формируем MapTypeContainer
	
	if (mapTypeContainer != null) {

		var children = mapTypeContainer.childNodes;
		for (var i=children.length-1; i>=0; i--) {
			mapTypeContainer.removeChild(children[i]);
		}

		makeMapTypeContainer(mapType);
	}
	    
	    
	map.setCenter(new GLatLng(parseFloat(centerLat), parseFloat(centerLng)), parseInt(zoomLevel));
	
	
	switch (mapType) {
		///////////////////////
       	case 'G_NORMAL_MAP':
       	map.setMapType(G_NORMAL_MAP);
       	break;
       	///////////////////////
       	case 'G_SATELLITE_MAP':
       	map.setMapType(G_SATELLITE_MAP);
       	break;
       	///////////////////////
       	case 'G_HYBRID_MAP':
       	map.setMapType(G_HYBRID_MAP);
       	break;
       	///////////////////////
       	case 'G_PHYSICAL_MAP':
       	map.setMapType(G_PHYSICAL_MAP);
       	break;
       	///////////////////////
       	default:
       	map.setMapType(G_NORMAL_MAP);
       	break;
       	///////////////////////
    }
    
}

function load(divHeight)
{
    if (GBrowserIsCompatible()) {
		
		var div_map = $('id_google_map');
		div_map.style.height = divHeight;
        map = new GMap2(div_map);
        
        tuningMap(initialMapCenterLat, initialMapCenterLng, initialMapZoom, initialMapType);
        
        
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		
		
		map.addControl(new TashirZoomControl());
		map.addControl(new TashirPanControl());
		map.addControl(new TashirTypeControl());
                
        //map.addControl(new GSmallMapControl());
        //var mapControl = new GHierarchicalMapTypeControl();
        //map.addMapType(G_PHYSICAL_MAP);
        //map.addControl(mapControl);

        
        mgr = new MarkerManager(map);		
		load_geography();
		
		load_initial_settings();
		
	}
	
}

function load_geography()
{
	map.clearOverlays();
	mgr.clearMarkers();
	
	// create default Icons
	// for country
    var defaultCountryIcon        = new GIcon();
    defaultCountryIcon.image      = arrIcons['flagIcon'];
	defaultCountryIcon.iconSize   = new GSize(26, 30);
    defaultCountryIcon.iconAnchor = new GPoint(2, 29);
    defaultCountryIcon.infoWindowAnchor = new GPoint(13, 15);
    
    // for city
    var defaultCityIcon        = new GIcon();
    defaultCityIcon.image      = arrIcons['flagIcon'];
	defaultCityIcon.iconSize   = new GSize(26, 30);
    defaultCityIcon.iconAnchor = new GPoint(2, 29);
    defaultCityIcon.infoWindowAnchor = new GPoint(13, 15);
    
    // for articul
    var defaultArticulIcon        = new GIcon();
    defaultArticulIcon.image      = arrIcons['diamondIcon'];
	defaultArticulIcon.iconSize   = new GSize(21, 32);
    defaultArticulIcon.iconAnchor = new GPoint(10, 32);
    defaultArticulIcon.infoWindowAnchor = new GPoint(10, 16);
    
	GDownloadUrl(link, function(data) {
		
		var xml = GXml.parse(data);
		
		var arrCountry = xml.documentElement.getElementsByTagName("country");	
		var arrCountryLength = arrCountry.length;
			 
		for (var i = 0; i < arrCountryLength; i++) {
			
			var id = arrCountry[i].getAttribute("id");
			var name = arrCountry[i].getAttribute("name");
			var countCity = arrCountry[i].getAttribute("count_city");
			var countArticul = arrCountry[i].getAttribute("count_articul");
			var maxZoom = parseInt(arrCountry[i].getAttribute("max_zoom"));
			var point = new GLatLng(parseFloat(arrCountry[i].getAttribute("lat")), parseFloat(arrCountry[i].getAttribute("lng")));
			
			// значок
			var countryIcon = defaultCountryIcon;
			var badge = arrCountry[i].getAttribute("badge");
			var badgeWidth = parseInt(arrCountry[i].getAttribute("badge_width"));
			var badgeHeight = parseInt(arrCountry[i].getAttribute("badge_height"));
			if (badge != '') {
				
				// формируем значок
                var countryIcon        = new GIcon();
                countryIcon.image      = uploadDirName + "country/" + badge;
	            countryIcon.iconSize   = new GSize(badgeWidth, badgeHeight);
                countryIcon.iconAnchor = new GPoint(Math.ceil(badgeWidth/2), Math.ceil(badgeHeight/2));
                countryIcon.infoWindowAnchor = new GPoint(Math.ceil(badgeWidth/2), Math.ceil(badgeHeight/2));
				
			}
			
			
			var marker = markerCountry(point, countryIcon, id, name, countCity, countArticul);
			mgr.addMarker(marker, 2, maxZoom);
			
		}
		
		var arrCity = xml.documentElement.getElementsByTagName("city");	
		var arrCityLength = arrCity.length;
			 
		for (var i = 0; i < arrCityLength; i++) {
			
			var id = arrCity[i].getAttribute("id");
			var name = arrCity[i].getAttribute("name");
			var countArticul = arrCity[i].getAttribute("count_articul");
			var minZoom = parseInt(arrCity[i].getAttribute("min_zoom"));
			var maxZoom = parseInt(arrCity[i].getAttribute("max_zoom"));
			var point = new GLatLng(parseFloat(arrCity[i].getAttribute("lat")), parseFloat(arrCity[i].getAttribute("lng")));
			
			// значок
			var cityIcon = defaultCityIcon;
			var badge = arrCity[i].getAttribute("badge");
			var badgeWidth = parseInt(arrCity[i].getAttribute("badge_width"));
			var badgeHeight = parseInt(arrCity[i].getAttribute("badge_height"));
			if (badge != '') {
				
				// формируем значок
                var cityIcon        = new GIcon();
                cityIcon.image      = uploadDirName + "city/" + badge;
	            cityIcon.iconSize   = new GSize(badgeWidth, badgeHeight);
                cityIcon.iconAnchor = new GPoint(Math.ceil(badgeWidth/2), Math.ceil(badgeHeight/2));
                cityIcon.infoWindowAnchor = new GPoint(Math.ceil(badgeWidth/2), Math.ceil(badgeHeight/2));
				
			}
			
			
			var marker = markerCity(point, cityIcon, id, name, countArticul);
			mgr.addMarker(marker, minZoom, maxZoom);
			
		}
		
		var arrArticul = xml.documentElement.getElementsByTagName("articul");	
		var arrArticulLength = arrArticul.length;
			 
		for (var i = 0; i < arrArticulLength; i++) {
			
			var id = arrArticul[i].getAttribute("id");
			var cityId = arrArticul[i].getAttribute("city_id");
			var name = arrArticul[i].getAttribute("name");
			var address = arrArticul[i].getAttribute("address");
			var link = arrArticul[i].getAttribute("link");
			var pic = arrArticul[i].getAttribute("pic");
			var minZoom = parseInt(arrArticul[i].getAttribute("min_zoom"));
			var maxZoom = parseInt(arrArticul[i].getAttribute("max_zoom"));
			var point = new GLatLng(parseFloat(arrArticul[i].getAttribute("lat")), parseFloat(arrArticul[i].getAttribute("lng")));
			
			// значок
			var articulIcon = defaultArticulIcon;
			var badge = arrArticul[i].getAttribute("badge");
			var badgeWidth = parseInt(arrArticul[i].getAttribute("badge_width"));
			var badgeHeight = parseInt(arrArticul[i].getAttribute("badge_height"));
			if (badge != '') {
				
				// формируем значок
                var articulIcon        = new GIcon();
                articulIcon.image      = uploadDirName + "articul/" + badge;
	            articulIcon.iconSize   = new GSize(badgeWidth, badgeHeight);
                articulIcon.iconAnchor = new GPoint(Math.ceil(badgeWidth/2), Math.ceil(badgeHeight/2));
                articulIcon.infoWindowAnchor = new GPoint(Math.ceil(badgeWidth/2), Math.ceil(badgeHeight/2));
				
			}
			
			var marker = markerArticul(point, articulIcon, id, cityId, name, address, pic);
			mgr.addMarker(marker, minZoom, maxZoom - 1);
			var marker = markerArticulPodrobnee(point, articulIcon, id, cityId, name, address, pic, link);
			mgr.addMarker(marker, maxZoom);
			
		}
		
	});
    
	
}

function markerCountry(point, icon, id, name, countCity, countArticul)
{
	var marker = new GMarker(point, icon);
	var html = '<font class="infoWindowName"><b>' + name + '</b> <br/> города: ' + countCity + ' <br/> объекты: ' + countArticul + '</font>';
	html = html + ' <br/> <div style="padding-top: 5px;" ><a href="javascript:void(0)" onclick="update_country(' + id + '); return false;" class="infoWindowName">перейти к карте страны &raquo;</a></div>';
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	
	return marker;
}

function markerCity(point, icon, id, name, countArticul)
{
	var marker = new GMarker(point, icon);
	var html = '<font class="infoWindowName">город <b>' + name + '</b> <br/> количество объектов: '+countArticul + '</font>';
	html = html + ' <br/> <div style="padding-top: 5px;" ><a href="javascript:void(0)" onclick="update_city(' + id + '); return false;" class="infoWindowName">перейти к карте города &raquo;</a></div>';
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	
	return marker;
}

function markerArticul(point, icon, id, cityId, name, address, pic)
{
	var marker = new GMarker(point, icon);
	
	var infoHtml = '<font class="infoWindowName"><b>' + name + '</b> <br/> адрес: '+address + '</font>' + ' <br/> <div style="padding-top: 5px;" ><a href="javascript:void(0)" onclick="update_articul(' + id + ', ' + cityId + '); return false;" style="color: #002C77; font-size: 11px; text-decoration: underline;" >перейти к карте объекта &raquo;</a></div>';
	var picHtml = '';
	if (pic != '') {
		
		picHtml = '<img src="' + uploadDirName + 'articul/' + pic + '" alt="" width="100" >';
	}

	var html = '<table cellpadding="0" cellspacing="10" border="0" width="270" ><tr><td valign="top" width="100" >' + picHtml + '</td><td width="15"></td><td valign="top" align="left" >' + infoHtml + '</td></tr></table>';

	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	
	return marker;
}

function markerArticulPodrobnee(point, icon, id, cityId, name, address, pic, link)
{
	var marker = new GMarker(point, icon);
	
	var infoHtml = '<font class="infoWindowName"><b>' + name + '</b> <br/> адрес: '+address + '</font>' + ' <br/>';
	if (link != '') {
	    infoHtml = infoHtml + '<div style="padding-top: 5px;" ><a href="' + link + '" target="_blank" class="infoWindowName">подробнее..</a></div>';
    }
    
	var picHtml = '';
	if (pic != '') {
		
		picHtml = '<img src="' + uploadDirName + 'articul/' + pic + '" alt="" width="100" >';
	}

	var html = '<table cellpadding="0" cellspacing="10" border="0" width="270" ><tr><td valign="top" width="100" >' + picHtml + '</td><td width="15"></td><td valign="top" align="left" >' + infoHtml + '</td></tr></table>';

	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	
	return marker;
}

function showInitialMap()
{
	tuningMap(initialMapCenterLat, initialMapCenterLng, initialMapZoom, initialMapType);
	
	
}

function updateMap()
{

	GDownloadUrl(link, function(data) {
		var xml = GXml.parse(data);
		
		var mapSettings = xml.documentElement.getElementsByTagName("map");
		tuningMap(mapSettings[0].getAttribute("centerLat"), mapSettings[0].getAttribute("centerLng"), mapSettings[0].getAttribute("zoomLevel"), mapSettings[0].getAttribute("mapType"));
		
	});
	
}

function updateMapArticul()
{
	GDownloadUrl(link, function(data) {
		var xml = GXml.parse(data);
		
		var mapSettings = xml.documentElement.getElementsByTagName("map");
		tuningMap(mapSettings[0].getAttribute("centerLat"), mapSettings[0].getAttribute("centerLng"), mapSettings[0].getAttribute("zoomLevel"), mapSettings[0].getAttribute("mapType"));
		
		var arrArticul = xml.documentElement.getElementsByTagName("articul");
		
		var lat = arrArticul[0].getAttribute("lat");
		var lng = arrArticul[0].getAttribute("lng");
		
		if ( (lat != '') && (lng != '') ) {
			
			lat = parseFloat(lat);
			lng = parseFloat(lng);
			
		    var id = arrArticul[0].getAttribute("id");
		    var cityId = arrArticul[0].getAttribute("city_id");
		    var name = arrArticul[0].getAttribute("name");
		    var address = arrArticul[0].getAttribute("address");
		    var link = arrArticul[0].getAttribute("link");
		    var pic = arrArticul[0].getAttribute("pic");
    		var point = new GLatLng(lat, lng);
    		
    		
	        //var infoHtml = '<font class="infoWindowName"><b>' + name + '</b> <br/> адрес: '+address + '</font>' + ' <br/> <div style="padding-top: 5px;" ><a href="javascript:void(0)" onclick="update_articul(' + id + ', ' + cityId + '); return false;" class="infoWindowName">перейти к карте объекта &raquo;</a></div>';
	        var infoHtml = '<font class="infoWindowName"><b>' + name + '</b> <br/> адрес: '+address + '</font>' + ' <br/>';
	        if (link != '') {
	        	infoHtml = infoHtml + '<div style="padding-top: 5px;" ><a href="' + link + '" target="_blank" class="infoWindowName">подробнее..</a></div>';
	        }
	        
	        var picHtml = '';
	        if (pic != '') {
		        picHtml = '<img src="' + uploadDirName + 'articul/' + pic + '" alt="" width="100" >';
	        }

	        var html = '<table cellpadding="0" cellspacing="10" border="0" width="270" ><tr><td valign="top" width="100" >' + picHtml + '</td><td width="15"></td><td valign="top" align="left" >' + infoHtml + '</td></tr></table>';
    		
	        map.openInfoWindowHtml(point, html);
    		
		}
		
		
		
	});
	
}
