// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

var map;
var mapLayers = new Array
var layerDisplay = new Array
var startLatLng = new google.maps.LatLng(51.665, 39.20);

function gmap_init(layerUrls, isMain) {
	if (isMain) {
		gmap_init_main(layerUrls);
	} else {
		gmap_init_place(layerUrls);
	}
}

function gmap_init_main(layerUrls) {
	var myOptions = {
		zoom: 13,
		center: startLatLng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	var layerOptions = {
		suppressInfoWindows:false, 
		preserveViewport:true, 
		map:map
	};
	mapLayers[2] = new google.maps.KmlLayer(layerUrls[0], layerOptions);
	google.maps.event.addListener(mapLayers[2], 'click', function(kmlEvent) {
		kmlEvent.featureData.description = kmlEvent.featureData.description.gsub("_blank", "_self");
    });	
	layerDisplay[2] = true; 

	mapLayers[3] = new google.maps.KmlLayer(layerUrls[1], layerOptions);
	google.maps.event.addListener(mapLayers[3], 'click', function(kmlEvent) {
		kmlEvent.featureData.description = kmlEvent.featureData.description.gsub("_blank", "_self");
    });	
	layerDisplay[3] = true; 

	mapLayers[4] = new google.maps.KmlLayer(layerUrls[2], layerOptions);
	google.maps.event.addListener(mapLayers[4], 'click', function(kmlEvent) {
		kmlEvent.featureData.description = kmlEvent.featureData.description.gsub("_blank", "_self");
    });	
	layerDisplay[4] = true; 

	mapLayers[5] = new google.maps.KmlLayer(layerUrls[3], layerOptions);
	google.maps.event.addListener(mapLayers[5], 'click', function(kmlEvent) {
		kmlEvent.featureData.description = kmlEvent.featureData.description.gsub("_blank", "_self");
    });	
	layerDisplay[5] = true; 
}
  
function gmap_init_place(layerUrls) {
	var myOptions = {
			zoom: 11,
			center: startLatLng,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
		    disableDefaultUI: true
		};
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	var layerOptions = {
			suppressInfoWindows:true, 
			preserveViewport:false, 
			map:map
		};
	mapLayers[0] = new google.maps.KmlLayer(layerUrls[0], layerOptions);
	map.setZoom(12);
}

function changeDistrict(e) {
	var gll, zoom = 14;
	switch(e) {
		case "all": gll = new google.maps.LatLng(51.67, 39.21); zoom=12; break;
		case "downtown": gll = new google.maps.LatLng(51.665, 39.20); break;
		case "left": gll = new google.maps.LatLng(51.668, 39.2520); zoom=13; break;
		case "north": gll = new google.maps.LatLng(51.71, 39.16700); break;
		case "southwest": gll = new google.maps.LatLng(51.646, 39.14); break;
		case "chertovizk": gll = new google.maps.LatLng(51.85, 39.3); zoom=12; break;
	}
	map.setCenter(gll);
	map.setZoom(zoom);
}

function toggleLayer(n, thisButton) {
	newMap = (layerDisplay[n] == true) ? null : map;
	mapLayers[n].setMap(newMap);
	layerDisplay[n] = !layerDisplay[n];
	// swap button image to an opposite one
	var newButtonId = $(thisButton).identify();
	if (layerDisplay[n] == true) { 
		newButtonId = newButtonId.sub('alt', 'def');
	} else {
		newButtonId = newButtonId.sub('def', 'alt');
	}
	$(thisButton).setStyle("visibility:hidden");
	$(newButtonId).setStyle("visibility:visible");
}

var Cursor = {
    pointer:function(event){
        event.element().setStyle({cursor:"pointer"});
    },

    normal:function(event){
        event.element().setStyle({cursor:"crosshair"});
    },

    auto:function(event){
        event.element().setStyle({cursor:"auto"});
    },

    crosshair:function(event){
        event.element().setStyle({cursor:"crosshair"});
    },

    move:function(event){
        event.element().setStyle({cursor:"move"});
    },

    e_resize:function(event){
        event.element().setStyle({cursor:"e-resize"});
    },

    ne_resize:function(event){
        event.element().setStyle({cursor:"ne-resize"});
    },

    n_resize:function(event){
        event.element().setStyle({cursor:"n-resize"});
    },

    se_resize:function(event){
        event.element().setStyle({cursor:"se-resize"});
    },

    sw_resize:function(event){
        event.element().setStyle({cursor:"sw-resize"});
    },

    s_resize:function(event){
        event.element().setStyle({cursor:"s-resize"});
    },

    w_resize:function(event){
        event.element().setStyle({cursor:"w-resize"});
    },

    text:function(event){
        event.element().setStyle({cursor:"text"});
    },

    wait:function(event){
        event.element().setStyle({cursor:"wait"});
    },

    help:function(event){
        event.element().setStyle({cursor:"help"});
    },

    progress:function(event){
        event.element().setStyle({cursor:"progress"});
    }
}

