var OfficeGMaps = new Object({
	Start: function(){
		$("div.officemap").each(function (i) {
			var id = $(this).attr('id').split("-");
			var map = new GMap2(document.getElementById($(this).attr('id')));			
			
			if(id[0] == "largemap"){
				OfficeGMaps.GetCoords(id[1], map, 100);
			} else {
				OfficeGMaps.GetCoords(id[1], map, 4);
			}
			
			GEvent.addListener(map, "click", function() {
				OfficeGMaps.MapZoom(id[1]);
				return false;
			});
			
			$(this).next().filter("span.zoom").click(function (){
				OfficeGMaps.MapZoom(id[1]);
				return false;
			});
		});
	},
	
	SetCenter: function(map, location, minuszoom){
		
		var coordinates = location['coords'].split(",");
		
		if(minuszoom == 100){
			map.setCenter(new GLatLng(parseFloat(coordinates[0]),parseFloat(coordinates[1])), parseInt(coordinates[2]));
			OfficeGMaps.AddFlag(map, location);
		} else if(minuszoom < 1){
			map.setCenter(new GLatLng(parseFloat(coordinates[0]),parseFloat(coordinates[1])), parseInt(coordinates[2]));
			OfficeGMaps.AddFlag(map, location, 1);
			OfficeGMaps.AddLink(map, location);
		} else {
			map.setCenter(new GLatLng(parseFloat(coordinates[0]),parseFloat(coordinates[1])), parseInt(coordinates[2]) - minuszoom);
		}
		
		return true;
	},
	
	GetOtherOffice: function(office, map){
		//location = INT, id of location
		$.post("/inc/s_getofficecoords.php", { other: office },
		function(data){
			if(data.error){
				alert('Error: #' + data.error);
				return false;
			} else {				
				//GMaps.SetCenter(data.coords);
				
				$.each(data.other, function(n, val) {
					OfficeGMaps.AddFlag(map, val);
					OfficeGMaps.AddLink(map, val);
				});

				return true;
			}
		}, "json");
	},
	
	AddLink: function(map, pointdata){//coords, id, text
		var coordinates = pointdata['coords'].split(",");
		var point = new GLatLng(parseFloat(coordinates[0]), parseFloat(coordinates[1]));
				
		var windowtext = '<h3>' + pointdata['name'] + '<\/h3>' + pointdata['desc'];
		
		$("<a>")
		.appendTo("#mapnav")
		.attr("href", "#")
		.text(pointdata['name'])
		.click(function(){
			/*
			if(GMaps.Markers[id].isHidden()) {
			  GMaps.Markers[id].show();
			 } else {
			  GMaps.Markers[id].hide();
			}
			*/
			if(pointdata['name']){
				map.openInfoWindowHtml(point, windowtext);
				map.panTo(point);
			}
			
			return false;
		});
	},
	
	AddFlag: function(map, pointdata, openinfo){
		var coordinates = pointdata['coords'].split(",");
		var point = new GLatLng(parseFloat(coordinates[0]), parseFloat(coordinates[1]));
		var windowtext = '<h3>' + pointdata['name'] + '<\/h3>' + pointdata['desc'];
		
		var Flag = new GIcon();

		Flag.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";///images/interface/gmap-flag-4.png				
		Flag.iconSize = new GSize(12, 20);
		Flag.iconAnchor = new GPoint(6, 20);
			
		Flag.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		Flag.shadowSize = new GSize(22, 20);
		
		markerOptions = { icon:Flag };
		var FlagMarker = new GMarker(point, markerOptions);
		
		GEvent.addListener(FlagMarker, "click", function() {
			map.openInfoWindowHtml(point, windowtext);
			map.panTo(point);
		});
		
		if(openinfo){
			map.openInfoWindowHtml(point, windowtext);
		}
		
		//Add to array coodrs
		//GMaps.Markers[pointdata['id']] = FlagMarker;
		
		map.addOverlay(FlagMarker);
		
		return true;
	},
	
	GetCoords: function(office, map, minuszoom){
		$.post("/inc/s_getofficecoords.php", { id: office },
			function(data){
				if(data.error){
					alert('Error: #' + data.error);
					return false;
				} else {
					OfficeGMaps.SetCenter(map, data.location, minuszoom);
				}
			}
		, "json");
	},
	
	MapZoom: function(office){
		if(GBrowserIsCompatible()) {
			var winWidth = $(window).width();
			var winHeight  = $(window).height();
			
			var blockWidth = winWidth-50;
			var winLeft = ((winWidth-blockWidth)/4)-10;
			var winBlockHeight = winHeight-75;
			
			$.blockUI({ message: '<a id="closemap">Закрыть</a>\n<div style="height: ' + winBlockHeight + 'px" id="mapblock"></div><div id="mapnav"></div>', css: { 
				border: '5px solid #F5F6F7', 
				padding: '0', 
				backgroundColor: '#FFF',
				opacity: '1',
				'-webkit-border-radius': '5px', 
				'-moz-border-radius': '5px',
				top: '5px',
				left: winLeft,
				width: blockWidth,
				height: winHeight-75,
				margin: '15px',
				textAlign: 'left',
				cursor: 'default'
			} });
								
			$('#closemap').click(function() { 
				$.unblockUI({ fadeOut: 200 });
			});
			
			
			map = new GMap2(document.getElementById("mapblock"));
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			
			OfficeGMaps.GetCoords(office, map, 0);
			OfficeGMaps.GetOtherOffice(office, map);
			
			//GMaps.GetLocationCoords(GMaps.ParentLocationID, "setcenter");
			//GMaps.GetChildLocation(GMaps.ParentLocationID);
			//alert('zoom');
		}
	}
		
});


$(document).ready(function() {
	OfficeGMaps.Start();

	$("#front-addres").accordion({
		collapsible: true,
		autoHeight: false								 
	});
});
