//var mm; // MapManager

function Application(pc) {
	this._pc = pc;
	this._tools_maps = {};
	
	this._toolbars = {
		route:[
			{text:"Braižyti maršrutą", onclick:"MyRoute.start(); $(this).parent().find('a').css({fontWeight:'normal'}); $(this).css({fontWeight:'bold'});", img:"common/images/marker-green.png"}
			,{text:"Komentuoti", onclick:"MyRoute.comment(); $(this).parent().find('a').css({fontWeight:'normal'}); $(this).css({fontWeight:'bold'});", img:"common/images/marker-blue-s.png"}
			,{text:"Išvalyti", onclick:"MyRoute.clear()"}
			,{text:"Undo", onclick:"MyRoute.undo()"}
			//,{text:"Test", onclick:"MyRoute.test()", demo:true}
			//,{text:"Test2", onclick:"MyRoute.test2()", demo:true}
			,{text:"Baigti", onclick:"MyRoute.end(); $(this).parent().find('a').css({fontWeight:'normal'});", img:"common/images/marker-pink.png"}
			//,{text:"Išsaugoti maršrutą", onclick:"addClosing()"}
		],
		mapedit:[
			{text:"Undo", onclick:"MapManager.undo()"},
			{text:"Išsaugoti pakeitimus", onclick:"MapManager.updateLocation()"},
			{text:"Baigti redagavimą", onclick:"app.exitLocationEditor()"}
		],
		maplist:[
			{text:"Rūšiuoti pagal: <select name=\"mapsort\" onchange=\"pc.show_left_content(Faces.render('#maps/index', pc.getArgs()?pc.getArgs().split(';'):[], this.value));\"><option>Pavadinimą</option><option value='1'>Rajoną</option><option value='2'>Metus</option><option value='3'>Nr.</option></select>", onclick:""}
			//,{text:"Map Index", onclick:"pc.frame(1);"}
			//,{text:"Google Maps", onclick:"LoadGmaps(true);"}
			,{text:"Įkelti naują žemėlapį", onclick:"pc.upload_map()", demo:true}
		],
		results:[
			{text:"Pirmas rezultatų puslapis", onclick:"document.getElementById('results_frame').src='/static/summer/index.html'"}
		]
	}
}

Application.prototype.setTools = function(tools_name) {
	if (this._current_tools == tools_name) return;

	var tools_el = document.getElementById(pc._current_page_name + "_tools");
	var tools = this._toolbars[tools_name];
	
	if(_demo) tools = tools.filter(function(x) {return (x.demo != true)}); 
	
	if(tools_el) {
		tools_el.innerHTML = Faces.render("#menu", {menu_items:tools, front_id:pc._current_page_name + "_menufront"});
	}
	this._current_tools = tools_name;
}

Application.prototype.findLOSFdata = function(cfg) {
	var form_id = "#" + cfg.form;
	var id = $(form_id + " .nr").val();
	
	$(form_id + " .countries").val("LTU").change();

    CDownloadUrl("get", "losf.txt", function (doc) {
		var data = doc.split("\n");
		//1054;2010;Kazlų Rūda;G.Ūsas, R.Čepaitienė;1:10000;2,5;Kazlų Rūdos sav.
		for(var i=0; i<data.length; i++) {
			var d = data[i].trim().split(";");
			if(d[0] == id) {
				$(form_id + " .title").val(d[2]);
				$(form_id + " .author").val(d[3]);
				$(form_id + " .year").val(d[1]);
				$(form_id + " .scale").val(d[4].split(":")[1]);
				$(form_id + " .contour").val(d[5].replace(",", "."));
				$(form_id + " .region").val(d[6]);
				break;
			}
		}
	});
	
}

Application.prototype.removeMap = function(id) {
    if (confirm("Remove map: " + id + "?")) {//if yes
		$.ajax({
			type: 'POST'
			,url: "/server/remove_map"
			,data: { id:id, password:"fake" }
			,success: function(data) {
				if(!data) alert("Remove failed! Unknown Server response.");
				if(data.status == 401) alert("Remove failed! No permission."); 
				if(data.status != 200) alert("Remove failed! Server Erorr: " + data.status);
				else { // OK
					pc.hash(pc.url({page:"maps", args:[]}));
					window.location.reload(true);
					//pc.getSI().load(id, function(id) { pc.hash(pc.url({page:"maps", args:[]})); });
				}
			}
			,error: function() { alert("Remove failed! Server Error."); }
			,dataType: "json"
		});
	}
}


Application.prototype.saveMapInfo = function(id) {
	//alert("implement saving...");
	// saving new mapdata
	pc.login(function() {
		var map_data = pc.getSI().getDB("maps")[id];

		var values = {
			title: $("#mapinfo_edit_form .title").val(),
			nr: $("#mapinfo_edit_form .nr").val(),
			author: $("#mapinfo_edit_form .author").val(),
			year: $("#mapinfo_edit_form .year").val(),
			scale: $("#mapinfo_edit_form .scale").val(),
			contour: $("#mapinfo_edit_form .contour").val(),
			country: $("#mapinfo_edit_form .countries").val(),
			description: $("#mapinfo_edit_form .description").val(),
			best_version: $("#mapinfo_edit_form .best_version").is(":checked"),
			region: $("#mapinfo_edit_form .region").is(":visible") ? $("#mapinfo_edit_form .region").val(): ""
		}
		
		var arg = {id:id};
		for(var key in values) {
			var value = values[key];
			if(value != map_data[key]) {
				arg[key] = value;
				map_data[key] = value;
			}
		}

		app.updateMapInfo(id);
		$("#mapinfo_edit_form .edit_cell").hide();
		$("#mapinfo_edit_form .value_cell").show();
	
		if(sizeOf(arg) > 1) {
			$.post("/server/updatemapdata", arg,
			function(data){
				if(data.status == 401) {
					pc.window({color:"#E0E6EC", width:250, top:100, html: "Reikalinga autorizacija!", onclose: function() { pc.window_hide() }});
				}
				//if(typeof onfin == "function") onfin();
				//else { alert(data.status == "200" ? "OK":"Error"); }
			}
			, "json");
		}
	});
}

Application.prototype.updateMapInfo = function(id) {
	var map_data = pc.getSI().getDB("maps")[id];
	
	$("#mapinfo_edit_form .title_val").html(map_data.title);
	$("#mapinfo_edit_form .nr_val").html(map_data.nr);
	$("#mapinfo_edit_form .author_val").html(map_data.author);
	$("#mapinfo_edit_form .year_val").html(map_data.year);
	$("#mapinfo_edit_form .scale_val").html(map_data.scale);
	$("#mapinfo_edit_form .contour_val").html(map_data.contour);
	$("#mapinfo_edit_form .country_val").html(map_data.country);
	$("#mapinfo_edit_form .region_val").html(map_data.region);
	$("#mapinfo_edit_form .description_val").html(map_data.description);
	
	if(!map_data.description) $("#mapinfo_edit_form .description_row").addClass("hide");
	$("#mapinfo_edit_form .best_version_row").hide();
	$("#mapinfo_edit_form .buttons").hide();

	$("#mapinfo_edit_form .edit_cell").hide();
	$("#mapinfo_edit_form .value_cell").show();
}

Application.prototype.editMapInfo = function(id) {
    CDownloadUrl("get", "countries.txt", function (doc) {
		var map_data = pc.getSI().getDB("maps")[id];
		var country = map_data.country || "LTU";
		var region = map_data.region || "Vilnius";

		var countries = doc.split("\n");
		var regions = [];
		var options = [];
		
		//console.log("country: ", country);
		
		
		for(var i=0; i<countries.length; i++) {
		    var c = countries[i].trim().split(";");
			options.push('<option value="' + c[0] + '"' + (c[0] == country ?' SELECTED':'') + '>' + c[1] + '</option>');

			if(c[0] == "LTU" && c[2]) {
				regions = c[2].split("#").map(function(x) {/*console.log(x==region); */return "<option" + ((x==region)?" SELECTED":"") + ">" + x + "</option>"});
			}
		}

		$("#mapinfo_edit_form .title").val(map_data.title);
		$("#mapinfo_edit_form .nr").val(map_data.nr);
		$("#mapinfo_edit_form .author").val(map_data.author.replace(/<br>/g, "\n"));
		$("#mapinfo_edit_form .year").val(map_data.year);
		$("#mapinfo_edit_form .scale").val(map_data.scale);
		$("#mapinfo_edit_form .contour").val(map_data.contour);
		$("#mapinfo_edit_form .description").val(map_data.description.replace(/<br>/g, "\n"));
		$("#mapinfo_edit_form .description_row").removeClass("hide");
		$("#mapinfo_edit_form .best_version_row").show();
		$("#mapinfo_edit_form .buttons_row").show();
		
		var region_row = $("#mapinfo_edit_form .region_row");

		if(options.length) {
			$("#mapinfo_edit_form .country_cell").html("<select class='countries' name='country'>" + options.join("") + "</select>");
			$("#mapinfo_edit_form .country_cell .countries").bind("change", function(x) {
				var region_select = $("#mapinfo_edit_form .region");
				
				if($(this).val() == "LTU") {
					region_row.show();
					region_select.show();
				}
				else {
					region_row.hide();
					region_select.hide();
				}
			});
		}

		if(country == "LTU") region_row.show();
		else region_row.hide();

		if(regions.length) {
			$("#mapinfo_edit_form .region_cell").html("<select class='region'>" + regions.join("") + "</select>");
		}
		
		$("#mapinfo_edit_form .value_cell").hide();
		$("#mapinfo_edit_form .edit_cell").show();

	});
}

Application.prototype.showMapInfoBaloon = function(id, obj, event) {
	//alert("baloon! " + id);
	var maps = pc.getSI().getDB("maps");
    var map_data = maps[id];
	
	//console.log(map_data);

	html = ['<div style="max-height:200px;width:auto;overflow:auto;background:white;border:1px solid black;"/><table style="width:100%;">'
,'<tbody><tr><td style="width: 120px;"><b>Pavadinimas:</b></td><td class="value_cell title_val">', map_data.title, '</td></tr>'
,'<tr><td><b>Numeris:</b></td><td class="value_cell nr_val">', map_data.nr, '</td></tr>'
,'<tr><td><b>Autoriai:</b></td><td class="value_cell author_val">', map_data.author, '</td></tr>'
,'<tr><td><b style="white-space: nowrap;">Išleidimo metai:</b></td><td class="value_cell year_val">', map_data.year, '</td></tr>'
,'<tr><td><b>Mastelis:</b></td><td class="value_cell scale_val">1:', map_data.scale,'</td></tr>'
,'<tr><td><b style="white-space: nowrap;">Horizontalių laiptas:</b></td><td class="value_cell contour_val">', map_data.contour, '</td></tr>'
,'<tr><td><b>Šalis:</b></td><td class="value_cell country_val">', map_data.country, '</td></tr>'
,'<tr class="region_row"><td><b>Rajonas:</b></td><td class="value_cell region_val">', map_data.region, '</td></tr>'
, map_data.description ? ('<tr><td><b>Aprašymas:</b></td><td class="value_cell description_val">' + map_data.description + '</td></tr>') : "",
,'</tbody></table></div>'].join("");

	
    fixedtooltip({width: 270, html:html, obj:obj, event:event, offset:[16,-16], show_border:false}, 300);

}

Application.prototype.loadMapInfo = function(id, row) {
	//console.log(id, row);
	var previous_info = document.getElementById("fastinfo");
	if(previous_info) {
		previous_info.parentNode.deleteRow(previous_info.sectionRowIndex);
	}
	
	if(row) {
		var tbl = row.parentNode;
		var index = row.sectionRowIndex+1;
		info_row = tbl.insertRow(index);
		info_row.id = "fastinfo";
		
		info_row.className = (row.getAttribute("onmouseout").toString().indexOf("even") != -1) ? "even" : "odd";
		
		var cell = info_row.insertCell(0);
		cell.setAttribute("colspan", "9");
		cell.innerHTML = Faces.render("#maps/mapinfo", id);
		//var textNode = document.createTextNode("blablabla");
		//cell.appendChild(textNode);
	}
}

Application.prototype.loaded = function(id) {
	return (id in this._tools_maps);
}

Application.prototype.centerGMap = function(id, bring2front, event) {
   if(!event) event = window.event
   if(event) event.cancelBubble=true
   if(event && event.stopPropagation) event.stopPropagation();

    var mm = MapManager.getInstance();
	var maps = pc.getSI().getDB("maps");
    var map_data = maps[id];

    var bounds = new GLatLngBounds(new GLatLng(map_data.bounds[0], map_data.bounds[1]), new GLatLng(map_data.bounds[2], map_data.bounds[3]));
	
	//map.setZoom(map.getBoundsZoomLevel(bounds));
    //map.setCenter(bounds.getCenter());
	var map = MapManager.getMap();
	var zoom = map.getBoundsZoomLevel(bounds);
	
	//console.log(id, " - center to: ", zoom, bounds);
	
    mm._map.setCenter(bounds.getCenter(), zoom, G_SATELLITE_MAP);

	if(!bring2front) return; // jeigu paspaude center - tai apsiribojame centravimu!

	if(this.isVisible(id)) { // bring to front if this is visible!
		this.loadGMap(id, true); // toggle == true == hide;
	}
	this.loadGMap(id); // show again!
	$("#map_" + id + " .map_toggle").attr("checked", "true");
}

Application.prototype.loadAllGMaps = function(checked) {
	for(var id in this._tools_maps) {
		var visible = this._tools_maps[id].visible;
		
		if(checked && !visible)	this.loadGMap(id);
		else if(!checked && visible) this.loadGMap(id, true);
	}
}

Application.prototype.isVisible = function(map_id) {
	return (this._tools_maps[map_id] && this._tools_maps[map_id].visible);
}

/* works as toggle */
Application.prototype.loadGMap = function(id, toggle, event) {
   if(!event) event = window.event
   if(event) event.cancelBubble=true
   if(event && event.stopPropagation) event.stopPropagation();


	if(IE != -1) {
		pc.window({
			color:"#E0E6EC", width:415, top:100,
			html: "<div align='center'>Jūsų naršyklė nėra palaikoma.<br/>Prašome naudotis <a href='http://www.mozilla.com/firefox/'>Mozilla Firefox</a>, <a href='http://www.google.com/chrome'>Google Chrome</a> arba <a href='http://www.opera.com/'>Opera.</a></div>",
			onclose: function() { pc.window_hide() }
		});
		return;
	}

	if(!toggle && this._tools_maps[id] && this._tools_maps[id].visible) return;

	if(!this._tools_maps[id]) {
	    this.addGoogleMap(id); // {} - reikia varneles  elemento ish mapindexo
		this.updateGoogleMaps();
		//img = $("#map_" + id + " .gmap_button")[0];
	}

    pc.executeGMapCode(function() { 
	    var mm = MapManager.getInstance();
		var map = MapManager.getMap();
		var maps = pc.getSI().getDB("maps");
		var map_data = maps[id];
	
		if(!app._tools_maps[id].visible) {
		    //img.on = true;
		    //img.src = "common/images/compass.png";
		    //img.src = "common/images/loading.gif";
			//openMapInfo(map_data);
		
			//map_data.onload = function() { 		/*alert("loading!"); Chrome bug */ /*img.src = "common/images/compass.png";*/ };
			mm.addSVGMap(id, map_data);
			app._tools_maps[id].visible = true;

			//if(map_data._marker) {
			//	map.removeOverlay(map_data._marker);
			//}
			$("#map_" + id + " .map_toggle").attr("checked", "true");
			//app.setTools("route");
		}
		else {
		    //img.on = false;
		    //img.src = "common/images/compass_off.png";
			mm.removeSVGMap(id);
			app._tools_maps[id].visible = false;
			//console.log("adding marker: ", map, map_data._marker)
			//if(map_data._marker) {
			//	map.addOverlay(map_data._marker);
			//}
			$("#map_" + id + " .map_toggle").attr("checked", "");
		}
		mm.refresh();
    });
}    

Application.prototype.removeAll = function() {
    if (confirm("Remove all maps?")) {//if yes
	    for(var id in this._tools_maps) {
		    this.removeGoogleMap(id);
	    }
	}
}

Application.prototype.locateGoogleMap = function(mapid, event) {
   if(!event) event = window.event
   if(event) event.cancelBubble=true
   if(event && event.stopPropagation) event.stopPropagation();

	MyRoute.end(); // end route painting if such was started
	
	this.loadGMap(mapid);
	var mm = MapManager.getInstance();
	//console.log("locateGoogleMap: ", mm);
	mm.enableEdit(mapid);
	app.setTools("mapedit");
}

Application.prototype.exitLocationEditor = function() {
	//console.log("exitLocationEditor");
	var mm = MapManager.getInstance();
	mm.saveChanges(true, function() {
		app.setTools("route");
	});
}


/* turi atstatyti visu zemelapio ikoneliu teisingas busenas - jeigu pvz buvo uzhkrautas ir rodomas! */
Application.prototype.removeGoogleMap = function(mapid, confirmation, event) {
   if(!event) event = window.event
   if(event) event.cancelBubble=true
   if(event && event.stopPropagation) event.stopPropagation();

   var maps = pc.getSI().getDB("maps");
	var map_data = maps[mapid];
	
	if(!confirmation || confirm("Remove map '" + map_data.title + "' ?")) {
    
		if(this._tools_maps[mapid].visible) {
			this.loadGMap(mapid, true); // hide
		}

		var el = $("#map2_" + mapid + " .gmap_button")[0] || {};
		el.src= 'common/images/earth_off.png'; // ishjungiam zymekli tarp zemelapiu
	
		delete this._tools_maps[mapid];
	
		if(pc._current_page_name == "gis") {
			this.updateGoogleMaps();
		}
	}
}

/* add many maps */
Application.prototype.addGoogleMaps = function(mapids) {
	for(var i=0; i<mapids.length; i++) {
		this.addGoogleMap(mapids[i], true);
	}
	this.updateGoogleMaps();
};

Application.prototype.addGoogleMap = function(mapid, notoggle) {
	var el = $("#map2_" + mapid + " .gmap_button")[0] || {};
	pc.clearArgs("gis"); // <- priversciam persikrauti #tools puslapi

	if(!this._tools_maps[mapid]) {
		this._tools_maps[mapid] = {visible:false};
	}
	else if (!notoggle) {
		this.removeGoogleMap(mapid);
	}

	el.src=(this.loaded(mapid))?'common/images/earth_on.png':'common/images/earth_off.png'
	
	$("#tool_maps_loaded").html((sizeOf(this._tools_maps) > 0) ? "<img style='padding-left:2px;position:relative;top:0px;' src='common/images/checked.png'>" :"");
}

Application.prototype.zoomToMaps = function() {
   pc.executeGMapCode(function(){ 
		
		var maps = pc.getSI().getDB("maps");
		var map = MapManager.getMap();
		var must_zoom = false;
	
		var bounds = new GLatLngBounds();
		for(var mapid in app._tools_maps) {
			var b = maps[mapid].bounds;
			if(!b.length) continue;
			var sw = new GLatLng(b[0], b[1]);
			var ne = new GLatLng(b[2], b[3]);
			bounds.extend(sw);
			bounds.extend(ne);
			must_zoom = true;
		}

		if(must_zoom) {
			var zoom = map.getBoundsZoomLevel(bounds);
			map.setCenter(bounds.getCenter(), zoom, G_SATELLITE_MAP);
		}
		
	});
}

/*
Parodo Tools Google maps freimus
*/
Application.prototype.updateGoogleMaps = function() {
    //console.log("update!", sizeOf(this._tools_maps), typeof pc.frame());


	$("#tool_maps_loaded").html("");
	if (sizeOf(this._tools_maps)) {
		pc.frame(0);
		pc.show_left_content(Faces.render("#tools/maplist", {maps:this._tools_maps}));

		//var mini_tabs = new TabManager();
		//mini_tabs.addTab("mini_map_tab", "mini_map", function() { return; });
		//mini_tabs.addTab("mini_events_tab", "mini_events", function() { return; });
		//mini_tabs.addTab("mini_comments_tab", "mini_comments", function() { return; });
	}
	else {
	    //if(typeof pc.frame() == "undefined") {
		    pc.frame(2);
		//}
	}

	this.loadGmaps();
	
	if(typeof MapManager != "undefined") {
		var mm = MapManager.getInstance();
		mm.refresh();
	}
}

Application.prototype.loadGmaps = function() {
	if(this._map_loaded) return;
	
	var maps = pc.getSI().getDB("maps");

	var data = Faces.get("#maps/index").getdata();
	
	//console.log(sizeOf(maps), " =?= " ,data.length);
	
	//console.log("data: ", data);
	
	document.getElementById("map_canvas3").style.display = "none";
	
    pc.executeGMapCode(function(){ 
		//pc.frame(0);
	    //MapManager.init();	
	    ToolsManager.activate("maps", 0);
		var map = MapManager.getMap();
		map.setCenter(new GLatLng(55.169438, 23.881275),7, G_NORMAL_MAP);

		
	    for(var i=0; i<data.length; i++) {
			var id = data[i][0];
			var map_data = maps[id];
			var bounds = map_data.bounds;
			if(!bounds || bounds.length == 1) continue;
			//console.log(bounds;
			
			//console.log((bounds[2] + bounds[0])/2, (bounds[3] + bounds[1])/2);
			var center = new GLatLng((bounds[2] + bounds[0])/2, (bounds[3] + bounds[1])/2);
			center._maps = data[i];
			
			//console.log(data[i])
			
			if(map_data.rotate) {
				var marker = new GMarker(center, { icon:osIcon, title:map_data.title});
			}
			else {
				var marker = new GMarker(center, {title:map_data.title});
			}
			
			for(var j=0; j<data[i].length;j++) maps[data[i][j]]._marker = marker;

			//GEvent.addListener(marker, "mouseover", function(c) {
			//	var map_name = maps[c._maps[0]].title;
				//map.openInfoWindow(c, map_name);
			//});

			//if(data[i].length > 1) {
			//	GEvent.addListener(marker, "click", function(c) {
			//		
			//		var map_ids = data[c._map_index];
			//		var maps = pc.getSI().getDB("maps");
			//		var html = ["<div style='font-weight:bold; margin-bottom:4px;'>", maps[map_ids[0]].title, "</div><table class='selectmaps_infowindow'><tr><th></th><th>Metai</th><th>Nr.</th><th>Rajonas</th><th>M</th><th>H</th></tr>"];

			//		for(var i=0; i<map_ids.length; i++) {
			//			var map_data = maps[map_ids[i]];
			//			html.push(["<tr><td><img src=\"common/images/os.png\" onclick=\"app.addGoogleMap(", map_data.id, ", true);app.updateGoogleMaps();\"/></td><td>", map_data.year, "</td><td>", map_data.nr, "</td><td>", map_data.region, "</td><td>1:", map_data.scale, "</td><td>", map_data.contour, "</td></tr>"].join(""));
			//		}
			//		html.push("</table>");
			//		map.openInfoWindow(c, html.join(""));
			//	});
			//}
			//else {
			
			GEvent.addListener(marker, "click", function(c) { 
				app.addGoogleMaps(c._maps);
				//for(var i=0; i<c._maps.length; i++) {
				//	app.addGoogleMap(c._maps[i], true);
				//}
				//app.updateGoogleMaps();
			});
			//}
			
			//console.log(map_data.title);
			//MapManager._os_markers[id] = marker;
			MapManager._markers.push(marker);
			//map.addOverlay(marker);
		}
		
		app._os_markers = new MarkerClusterer(map, MapManager._markers);
		
		app._map_loaded = true;
		app.setTools("route");
	});
}

var map_offset = {left:380, top:42};


function collapse_maplist() {
	pc.frame(0);
	
	$('#maplist .map_header th:nth-child(9)').hide();
	$('#maplist .map_rows td:nth-child(9)').hide();
	$('#maplist .map_header th:nth-child(8)').hide();
	$('#maplist .map_rows td:nth-child(8)').hide();
	//$('#maplist .map_header th:nth-child(6)').hide();
	//$('#maplist .map_rows td:nth-child(6)').hide();
	$('#maplist .map_header th:nth-child(7)').hide();
	$('#maplist .map_rows td:nth-child(7)').hide();

	$('#maplist .title_cell').css({"width":"150px"});
	$('#maplist').css({width:"380px"});
	$('#max_bar').show();
	app._maplist_collapsed = true;
}

function expand_maplist() {
	//console.log("expand!1");
	if(!app._maplist_collapsed) return;
	//console.log("expand!2");
	
	var previous_info = document.getElementById("fastinfo");
	if(previous_info) {
		previous_info.parentNode.deleteRow(previous_info.sectionRowIndex);
	}
	
	$('#maplist').css({width:"100%"});

	$('#maplist .map_header th:nth-child(9)').css({"display":"table-cell"});
	$('#maplist .map_rows td:nth-child(9)').css({"display":"table-cell"});
	$('#maplist .map_header th:nth-child(8)').css({"display":"table-cell"});
	$('#maplist .map_rows td:nth-child(8)').css({"display":"table-cell"});
	$('#maplist .map_header th:nth-child(7)').css({"display":"table-cell"});
	$('#maplist .map_rows td:nth-child(7)').css({"display":"table-cell"});
	
	$('#maplist .title_cell').css({"width":""});
	
	$('#max_bar').hide();
	app._maplist_collapsed = false;
}

//function expand_maplist() {
//	pc.suspend_left(true);pc.hash(pc.url({page:'maps', args:[]}));
//}

function openMapInfo(map_data) {
    var text = map_data.transform ? ['{bounds:[', map_data.transform.bounds,'], rotate:', map_data.transform.rotate,'}'].join("") : "";
	document.getElementById("mini_map").innerHTML = [
'<table><tr><td style="width:140px;"><b>Pavadinimas:</b></td><td>',map_data.title,'</td></tr>',
'<tr><td><b>Numeris:</b></td><td>',map_data.nr,'</td></tr>',
'<tr><td><b>Autoriai:</b></td><td>',map_data.author.split(",").join(",<br/>"),'</td></tr>',
'<tr><td><b>Išleidimo metai:</b></td><td>',map_data.year,'</td></tr>',
'<tr><td><b>Mastelis:</b></td><td>1:',map_data.scale,'</td></tr>',
'<tr><td><b>Horizontalių laiptas:</b></td><td>',map_data.contour,'</td></tr>',
'<tr><td><b>Rajonas:</b></td><td>',map_data.region,'</td></tr>',
'<tr><td><input type="submit" onclick="MapManager.center()" value="Center map"></td><td></td></tr>',
'<tr><td><input type="submit" onclick="EditMap()" value="Edit"></td><td><textarea id="new_transform" cols="20" rows="2">', text, '</textarea></td></tr></table>'].join("");


	document.getElementById("maplist").style.height = "50%";
	document.getElementById("mapinfo").style.display = "block";
	document.getElementById("mini_map_tab").onclick();
	
}

function show_img(map_id) {
	collapse_maplist();
	
	var maps = pc.getSI().getDB("maps");
	var map_data = maps[map_id];
	var ratio = map_data.width / map_data.height;
	//openMapInfo(map_data);
	
	var map_link = "maps/" + map_data.file;
	if(_demo) map_link = "/static/images/maps/" + map_data.file;
	
	
    var map_canvas = document.getElementById("map_canvas2");
	map_canvas.innerHTML = "<img id='map_loading' style='position:absolute; left:46%; top:46%' src='common/images/loading.gif'/>";
	
    var img = new Image(); //document.createElement("img");
	//img.style.width = ""; //map_canvas.offsetHeight*ratio + "px";
	//img.style.height = "100%"; //map_canvas.offsetHeight + "px";
	img.style.width = map_canvas.offsetHeight*ratio + "px";
	img.style.height = map_canvas.offsetHeight + "px";
	img.style.position = "absolute";
	img.style.cursor = "url(http://maps.gstatic.com/intl/en_ALL/mapfiles/openhand_8_8.cur), default"; //cursor: ;
	img.style.top = "0px";
	img.style.left = "0px";
	
	img.onload = function(x) { 
		DragHandler.attach(img);
		
		$("#map_loading").hide();
		img.style.display = "block";

		var zoom = document.createElement("img");
		zoom.style.width = "26px";
		zoom.style.height = "20px";
		zoom.style.position = "absolute";
		zoom.style.cursor = "default";
		zoom.style.top = "10px";
		zoom.style.right = "10px";
		zoom.src = "common/images/zoom_image.png";
		zoom.on = false;
	
		zoom.onclick = function() {
		//console.log(map_canvas.offsetWidth, map_canvas.offsetHeight);
			if(zoom.on) {
				//img.style.width = ""; //map_canvas.offsetHeight*ratio + "px";
				//img.style.height = "100%"; 
				img.style.width = map_canvas.offsetHeight*ratio + "px";
				img.style.height = map_canvas.offsetHeight + "px";
				img.style.top = "0px";
				img.style.left = "0px";
				zoom.src = "common/images/zoom_image.png";
				zoom.on = false;
			}
			else {
				img.style.width = map_data.width + "px";
				img.style.height = map_data.height + "px";
				zoom.src = "common/images/zoomout_image.png";
				zoom.on = true;
			}
		}
		map_canvas.appendChild(zoom);
		map_canvas.style.display = "block";
	}
	
	img.style.display = "none";
	$(img).attr({src: map_link}).appendTo($(map_canvas)); // Opera fix
	//img.src = map_link;
}




//function EditMap() {
//	var mm = MapManager.getInstance();
//	mm.enableEdit();
//}

/*
function loadMapMarkers(map) {
	var maps = pc.getSI().getDB("maps");
	var data = Faces.get("#maps/mapid").getdata();

    for(var i=0; i<data.length; i++) {
		var id = data[i][0];
		var map_data = maps[id];
		var bounds = map_data.bounds;
			
		//console.log((bounds[2] + bounds[0])/2, (bounds[3] + bounds[1])/2);
		var center = new GLatLng((bounds[2] + bounds[0])/2, (bounds[3] + bounds[1])/2);
		center._map_index = i;
		var marker = new GMarker(center, { icon:osIcon });

		//map_data._marker = marker;
		for(var j=0; j<data[i].length;j++) maps[data[i][j]]._marker = marker;

		//GEvent.addListener(marker, "click", new Function("param", "ShowInfo(" + id + ", [showMapInfo])"));
		GEvent.addListener(marker, "mouseover", function(c) {
			var map_id = data[c._map_index][0];
			var map_name = maps[map_id].title;
			//map.openInfoWindow(c, map_name);
		});
		//GEvent.addListener(marker, "mouseout", function() { 
		//	map.closeInfoWindow();
		//});
		GEvent.addListener(marker, "click", function(c) { 
			var map_id = data[c._map_index][0];
			//var map_data = maps[map_id];
		
			//LoadMap(map_id);
			map.closeInfoWindow();
			//pc.hash(pc.url({page:"map", args:[map_id]})); 
		});
			
		map.addOverlay(marker);
	}
}
*/



var DragHandler = {
	// private property.
	_oElem : null,
 
 
	// public method. Attach drag handler to an element.
	attach : function(oElem) {
		oElem.onmousedown = DragHandler._dragBegin;
 
		// callbacks
		oElem.dragBegin = new Function();
		oElem.drag = new Function();
		oElem.dragEnd = new Function();
 
		return oElem;
	},
 
 
	// private method. Begin drag process.
	_dragBegin : function(e) {
		var oElem = DragHandler._oElem = this;
		
		//console.log(oElem);
 
		if (isNaN(parseInt(oElem.style.left))) { oElem.style.left = '0px'; }
		if (isNaN(parseInt(oElem.style.top))) { oElem.style.top = '0px'; }
 
		var x = parseInt(oElem.style.left);
		var y = parseInt(oElem.style.top);
 
		e = e ? e : window.event;
		oElem.mouseX = e.clientX;
		oElem.mouseY = e.clientY;
 
		oElem.dragBegin(oElem, x, y);
 
		document.onmousemove = DragHandler._drag;
		document.onmouseup = DragHandler._dragEnd;
		return false;
	},
 
 
	// private method. Drag (move) element.
	_drag : function(e) {
		var oElem = DragHandler._oElem;
 
		var x = parseInt(oElem.style.left);
		var y = parseInt(oElem.style.top);
 
		e = e ? e : window.event;
		
		var left = x + (e.clientX - oElem.mouseX);
		var top = y + (e.clientY - oElem.mouseY);
		
		if(left <= 0 && (oElem.parentNode.offsetWidth - left <= oElem.width)) {
			oElem.style.left = left + 'px';
			oElem.mouseX = e.clientX;
		}
		
		if(top <= 0 && (oElem.parentNode.offsetHeight - top <= oElem.height)) {
			oElem.style.top = top + 'px';
			oElem.mouseY = e.clientY;
		}
 
		oElem.drag(oElem, x, y);
 
		return false;
	},
 
 
	// private method. Stop drag process.
	_dragEnd : function() {
		var oElem = DragHandler._oElem;
 
		var x = parseInt(oElem.style.left);
		var y = parseInt(oElem.style.top);
 
		oElem.dragEnd(oElem, x, y);
 
		document.onmousemove = null;
		document.onmouseup = null;
		DragHandler._oElem = null;
	}
 
}


function TabManager(ontab) {
    //var tm = this;
	this.ontab = ontab || function(tm, tab) {
		for(var itab in tm._tabs) {
			if(itab==tab) tm._setActive(itab);
			else tm._setInactive(itab);
		}
	};
	this._tabs = {};
}

TabManager.prototype._setActive = function(tab_id) {
	var tab_el = document.getElementById(tab_id);
	var content_el = document.getElementById(this._tabs[tab_id].content_id);

	if(typeof this._tabs[tab_id].ontab == "function") 
		this._tabs[tab_id].ontab(tab_el, content_el);

	add_class(tab_el, "active")
	content_el.style.display = "inline-block";
}

TabManager.prototype._setInactive = function(tab_id) {
	var tab_el = document.getElementById(tab_id);
	remove_class(tab_el, "active");
	
	var content_el = document.getElementById(this._tabs[tab_id].content_id);
	content_el.style.display = "none";
}

TabManager.prototype.addTab = function(tab_id, content_id, ontab) {
	this._tabs[tab_id] = {content_id:content_id, ontab:ontab};
	var tab_el = document.getElementById(tab_id);
	if(!tab_el) return;
	
	tab_el.style.cursor = "pointer";
	
	var tm = this;
	tab_el.onclick = function() {
	    //console.log("tab: ", tm, tab_id);
		tm.ontab(tm, tab_id);
	}
}



function ToolsManager() {
}

ToolsManager.activate = function(content_id, tools_index) {
   var toolbars = getElementsByClassName("tools", document.getElementById(content_id));
   
   for(var i=0; i<toolbars.length; i++) {
        var tb = toolbars[i];
		if(i == tools_index) tb.style.display = "block";
		else tb.style.display = "none";
   }
}


/* TOOOLS */
/*
var routePoints = new Array();
var routeMarkers = new Array();
var routeOverlays = new Array();
var map;
var totalDistance = 0.0;
var lineIx = 0;

var baseIcon = new GIcon();
baseIcon.iconSize=new GSize(20,30);
baseIcon.iconAnchor=new GPoint(10,30);
baseIcon.infoWindowAnchor=new GPoint(10,0);
baseIcon.infoShadowAnchor= new GPoint(10, 30);   
baseIcon.shadow = "common/images/shadow2.png";


var yellowIcon = (new GIcon(baseIcon, "common/images/marker-blue.png", null, ""));
var greenIcon = (new GIcon(baseIcon, "common/images/marker-green.png", null, ""));
var redIcon = (new GIcon(baseIcon, "common/images/marker-pink.png", null, ""));

//var orangeIcon = (new GIcon(baseIcon, "/images/orangeCircle.png", null, ""));
//var blueIcon = (new GIcon(baseIcon, "/images/blueCircle.png", null, ""));
//var violetIcon = (new GIcon(baseIcon, "/images/violetCircle.png", null, ""));












function load_tools() {
  if (GBrowserIsCompatible()) {
	//var centerPoint = new GLatLng(39.673370, -104.941406);

	//map = new GMap2(document.getElementById("map"),{draggableCursor:"crosshair"});
	//map.setCenter(centerPoint, 11);
	
	//getMapcenter();

	//map.addControl(new GMapTypeControl());
	//map.addControl(new GScaleControl());
	//map.addControl(new GLargeMapControl());

	var map = MapManager.getMap();

	//map.enableContinuousZoom();
	//GEvent.addListener(map, "moveend", getMapcenter);
	//GEvent.addListener(map, "click", mapClick);
  
//  ======== Add a map overview ==========
	var ovcontrol = new GOverviewMapControl(new GSize(120,120));
	map.addControl(ovcontrol);


	return;

	//var pl = new GPolyline.fromEncoded({
	//	color: "#0000ff",
//	/	weight: 4,
//		opacity: 0.8,
//		points: "_gkxEr}|vNcBwBoAoA{Jg@cBcBoA{@S?uBoA}@wBS_DbBwhATg@c[sDiT}\\g@i@{@S{@{@ScBRSnAg@SoAS{Eg@kCkClH?nAoF`LQRU{E~CgJ?g@jCqNrNcGz@?zJyBf@y@~CmC{@zJ?f@mAnA?f@x@z@bBR~HsIRe@jClKRz@`Dh@`Bd@vBRnF_DRSg@S?wBpFcGd@SScBwBvB{@T_D~Cg@?oA`B{@R{E~CqD{EUgJwB{@nAoA?kChJrIdJaBz@i@f@_DdBf@dEgEnFcGoP_N{@SeTvBqKoA{J_SsDoF?_Df@{@vB_XoAoPbLoZrDcBy@{EmC_D{ToAy@g@?_DlAgEgEcLg@g@qDnAqAkR_DyJy@i@mC?g@{@}CqNi@i@_ISoK_g@g@{@{EiCiCd@g@z@yGfOwBnAoARyJ_DuDRoAg@_D_IoKyEcGk\\gOx@cGy@{@}@sI_DcGgEwLbBuBRmCe@{JgOS}Jy@{@kHcBy[_]gEmPnA}Ef@g@vGwBgEa[rDqP|h@w[hMoFzJ{J~HwL{@_DoAkCcGwBuBgJyBoA_SfJiCz@{Jz@yBg@oU{OkCkCf@cLbBsIy@iCyGeB}H{@mCnFoAvB}ReEyGaIpFsSx@iHoAmCkHkCQ{JmM{TS_DvBuG?qFR{@vBoA~Hg@bBoAlCuL}@cG_IcGyEi@?sNUy@{@}@wLvBuB?aIcGgTgOSwLS_DoFoFwQTsDUg^kW}Hwe@U_DrI_l@|@_Dx@g@fTbBjC?j\\sD|OgEdJcGnAwBaB{EuDoAaLcB}J{JqDjCee@wGsD{JoAwB_X?cB{@g@g@kCqSkf@ye@gJkWoi@_]{JgESkHcBkHco@u[{Od@{@e@sIa]{@gJk\\kMkHoF_NgJcG?oAaBoAyGcBoAgESgYvG{@?wB_NcBgO~HoFrI_I~a@_]rNcVzJoAnU_q@nA{@rIsDrDsIwG_Ng@}CjMa]bBcGz@g@nF|@z@i@sDa[vGiYvBoAfJ_Dz@_DgEoKoA_NdBuL`VkWvLmH_Ie@kH?wB|Ce^|TyBx@cL?f@{T{@yEcQyBoFfEoKtDeJPmCoFg@{@gO}Huj@oA}OgOaBeBwQf@}@?mFsIyB_DyE_DaXrDcGrDbBkCvBgE{JsSoKsIqDSuDkHR{@xB?lAbBcBR",
//		levels: "P?CFDEADGDHBGIBDCEADCFDECFADFBFGCFCEEBDBCDGBEBFHDEABDFBCCDEBFCEFEDCFFECFGEFFCGEHEDCJFGDEDFGHDFBEGECFCIBEGCEDFFGHEFCGEKFECGEHDEFGCEIFDEFGHGHIFDEFGDFGEFJDFEDGEFDGHFEGEFIDEFBDGDFEFGHBDFDGLEFEGDHGDIDCFGHFGDEDFGDHEFGDBFJFHEFEIFCGKGEHEDFDEGCIEFGHFGICFEGDHJCECFGDHDFEGIFEFDGDHFDGEFGICFHFDGCJDEGEDEMFDGBDEP",
//		zoomFactor: 2,
//		numLevels: 18
//	});
//	map.addOverlay(pl);


 }
}



function mapClick(marker, point) {
	if (!marker) {
		addRoutePoint(point);
	}
}





function addRoutePoint(point) {
	var dist = 0;

	if (!routePoints[lineIx]) {
		routePoints[lineIx] = Array();
		routeMarkers[lineIx] = Array();
		routeOverlays[lineIx] = Array();
	}

	routePoints[lineIx].push(point);

	if (routePoints[lineIx].length > 1)	{
		plotRoute();
		dist = routePoints[lineIx][routePoints[lineIx].length-2].distanceFrom(point) / 1000;
		totalDistance += dist;
		
		var distance_value = totalDistance.toFixed(3);
		document.getElementById("tools_menufront").innerHTML = (distance_value > 0) ? ('Distance: '+ distance_value + ' km') : "";
	}
	else {
	    var marker = new GMarker(point,{icon:greenIcon,title:'Start'});
		routeMarkers[lineIx][routePoints[lineIx].length-1] = marker
		MapManager.getMap().addOverlay(marker);
	}
	//document.getElementById("route").innerHTML += point.y.toFixed(6) + ' ' + point.x.toFixed(6) + ' : ' + dist.toFixed(3) +"<br>";
}



function getMapcenter() {
	var map = MapManager.getMap();
	var center = map.getCenter();
	var z = map.getZoom();
	document.getElementById("coords").innerHTML = 'Map center:<br>' + center.y.toFixed(6) + ' ' + center.x.toFixed(6) + '<br>Zoom: ' + z;
}



function DEC2DMS(dec) {

	var deg = Math.floor(Math.abs(dec));
	var min = Math.floor((Math.abs(dec)-deg)*60);
	var sec = (Math.round((((Math.abs(dec) - deg) - (min/60)) * 60 * 60) * 100) / 100 ) ;

	deg = dec < 0 ? deg * -1 : deg;

	var dms  = deg + '&deg ' + min + '\' ' + sec + '"';
	return dms;
}

var x = 0;
var color = "#ff21b4";
function plotRoute() {
	var map = MapManager.getMap();
	
	//if (routeOverlays[lineIx]) {
	//	map.removeOverlay(routeOverlays[lineIx]); // pashaliname sena Linijos overlay'ju
	//}
	
	//console.log("rp: ", routePoints[lineIx]); //   [(54.69467017720923, 25.224952697753906), (54.692289094528554, 25.2191162109375)]
	//console.log(lineIx);
	
	var length = routePoints[lineIx].length;
	var previous = routePoints[lineIx][length-2];
	var last = routePoints[lineIx][length-1];
	
//	var line = new GPolyline(routePoints[lineIx], (x%2)?'#ff21b4':'red', 5, 0.7);
	
//	var color = "#ff21b4"; //(x%2)?'#ff21b4':'red'
	
	var c = map.fromLatLngToDivPixel(last);
	for(var i=0; i<routeOverlays[lineIx].length-1; i++) { // pries tai buvusios linijos neskaiciuojam
		//console.log("seg: ", routeOverlays[lineIx][i]);
		var seg = routeOverlays[lineIx][i];
		var a = map.fromLatLngToDivPixel(seg.getVertex(0));
		var b = map.fromLatLngToDivPixel(seg.getVertex(1));
		
		var dist = Geometry.calculateDistanceFromLine(a,b,c);
		if(dist < 10) {
			color = (seg.color == "red") ? "#ff21b4" : "red";
			break;
		}

		//console.log("dis: ", );
		
		//console.log("seg: ", seg, seg.color, a, b, c);
	}

	
	//(Geometry.calculateDistanceFromLine(a,b,c) < 0.5) ? "red" :

	
	var line = new GPolyline([previous, last], color, 5, 0.7);

	
	x++;

//	routeOverlays[lineIx] = line;
	routeOverlays[lineIx].push(line);

	map.addOverlay(line); // idedame naujai sukurta

}
function clearAll() {
    //console.log(lineIx);

	//while (lineIx > 0) {
	//	resetRoute();
	//}
	//var x = 0;
	while(true) {
		undoPoint();
		if(!routeMarkers[lineIx]) break;
	     //console.log("undo! ", lineIx, routePoints.length, routeMarkers.length, routeOverlays.length);
	}
	
	totalDistance = 0;
	document.getElementById("tools_menufront").innerHTML = '';
	//document.getElementById("route").innerHTML = 'Route points:<br>';
}


function resetRoute() {
	var map = MapManager.getMap();

	if (!routePoints[lineIx] || routePoints[lineIx].length == 0) {
		lineIx--;
	}
	
	if(lineIx < 0) return;

	routePoints[lineIx] = null;
	
	//if (routeOverlays[lineIx]) {
	while (routeOverlays[lineIx].length) {
		map.removeOverlay(routeOverlays[lineIx].pop());
	}

	for (var n = 0 ; n < routeMarkers[lineIx].length ; n++ ) {
		var marker = routeMarkers[lineIx][n];
		if (marker) {
			map.removeOverlay(marker);
		}
	}
	routeMarkers[lineIx] = null;

	//var html = document.getElementById("route").innerHTML;
	//html = html.replace(/<br>[^<]+<br>$/,'<br>');
	//document.getElementById("route").innerHTML = html;
	
}

function undoPoint() {
	var map = MapManager.getMap();

	if (!routePoints[lineIx] || routePoints[lineIx].length == 0) {
		lineIx--;
	}
	
	if (lineIx >= 0 && routePoints[lineIx].length > 1)	{

		var dist = routePoints[lineIx][routePoints[lineIx].length-2].distanceFrom(routePoints[lineIx][routePoints[lineIx].length-1]) / 1000;
		totalDistance -= dist;
		document.getElementById("tools_menufront").innerHTML = 'Total Distance: '+ totalDistance.toFixed(3) + ' km';

		//var html = document.getElementById("route").innerHTML;
		//html = html.replace(/<br>[^<]+<br>(<br>)*$/,'<br>');
		//document.getElementById("route").innerHTML = html;

		if (routeMarkers[lineIx][routePoints[lineIx].length-1]) {
			var marker = routeMarkers[lineIx].pop();
			if (marker) {
				map.removeOverlay(marker);
			}
		}
		routePoints[lineIx].pop();
		
		//plotRoute();
		
		map.removeOverlay(routeOverlays[lineIx].pop());
	}
	else {
		resetRoute();	
	}
}


function showPoints(xml) {
	var html = '';
	if (xml) {
		html = '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n';

		html += '<routes>\n';
		for (var i = 0 ; i < lineIx ; i++ ) {
			html += '  <route>\n';
			for (var n = 0 ; n < routePoints[i].length ; n++ ) {
				html += '    <p lat="' + routePoints[i][n].y.toFixed(8) + '" lon="' + routePoints[i][n].x.toFixed(8) + '"';
				if (routeMarkers[i][n]) {
					html += ' markerIcon="'+ routeMarkers[i][n].getIcon().image +'"';
				}
				html += ' />\n';
			}

			html += '  </route>\n';
		}
		html += '</routes>\n';
	}
	else {
		for (var i = 0 ; i < lineIx ; i++ ) {
			for (var n = 0 ; n < routePoints[i].length ; n++ ) {
				html += routePoints[i][n].y.toFixed(8) + ', ' + routePoints[i][n].x.toFixed(8) + '\n';
			}
			html += '----- new line ------ \n';
		}
	}

	if (html == '') {
		html += 'You must add a closing point to each line\n\n';
	}

	html += '\n\n';
//	html += encodePolyline();

	var nWin = window.open('','nWin','width=780,height=500,left=50,top=50,resizable=1,scrollbars=yes,menubar=no,status=no');
	nWin.focus();
	nWin.document.open ('text/xml\n\n');
	nWin.document.write(html);
	nWin.document.close();
}

var toolon = false;
function addStarting() {
    if(toolon) return;
	
	var map = MapManager.getMap();
	map.getDragObject().setDraggableCursor("crosshair");
	
	GEvent.addListener(map, "click", mapClick);
	toolon = true;
}

function addIntermediate() {
	var map = MapManager.getMap();
	if (routePoints[lineIx].length > 1)	{
		if (routeMarkers[lineIx][routePoints[lineIx].length-1]) {
			map.removeOverlay(routeMarkers[lineIx][routePoints[lineIx].length-1]);
		}
		routeMarkers[lineIx][routePoints[lineIx].length-1] = new GMarker(routePoints[lineIx][routePoints[lineIx].length-1],{icon:yellowIcon,title:'Point '+ routePoints[lineIx].length-1});
		map.addOverlay(routeMarkers[lineIx][routePoints[lineIx].length-1]);
	}
}


function addClosing() {
	var map = MapManager.getMap();
	if (routePoints[lineIx].length > 1)	{
		if (routeMarkers[lineIx][routePoints[lineIx].length-1]) {
			map.removeOverlay(routeMarkers[lineIx][routePoints[lineIx].length-1]);
		}
		routeMarkers[lineIx][routePoints[lineIx].length-1] = new GMarker(routePoints[lineIx][routePoints[lineIx].length-1],{icon:redIcon,title:'End'});
		map.addOverlay(routeMarkers[lineIx][routePoints[lineIx].length-1]);
		lineIx++;
		//document.getElementById("route").innerHTML += '<br>';

	}

	var divs = document.getElementsByTagName('DIV');
	for (var n = 0 ; n < divs.length ; n++ ) {
		if (divs[n].className == 'gmnoprint') {
			divs[n].className = '';
		}
	}



}





//-----------------------------------------
function encodePolyline() {
	var encodedPoints = '';
	var	encodedLevels = '';

	var plat = 0;
	var plng = 0;

	for (var n = 0 ; n < routePoints[lineIx].length ; n++ ) {
		var lat = routePoints[lineIx][n].y.toFixed(8);
		var lng = routePoints[lineIx][n].x.toFixed(8);

		var level = (n == 0 || n == routePoints[lineIx].length-1) ? 3 : 1;
		var level = 0;

		var late5 = Math.floor(lat * 1e5);
		var lnge5 = Math.floor(lng * 1e5);

		dlat = late5 - plat;
		dlng = lnge5 - plng;

		plat = late5;
		plng = lnge5;

		encodedPoints += encodeSignedNumber(dlat) + encodeSignedNumber(dlng);
		encodedLevels += encodeNumber(level);
	}


	var html = '';
	html += 'new GPolyline.fromEncoded({\n';
	html += '  color: "#0000ff",\n';
	html += '  weight: 4,\n';
	html += '  opacity: 0.8,\n';
	html += '  points: "'+encodedPoints+'",\n';
	html += '  levels: "'+encodedLevels+'",\n';
	html += '  zoomFactor: 16,\n';
	html += '  numLevels: 4\n';
	html += '});\n';

	return html;
}

function encodeSignedNumber(num) {
	var sgn_num = num << 1;

	if (num < 0) {
		sgn_num = ~(sgn_num);
	}

	return(encodeNumber(sgn_num));
}

// Encode an unsigned number in the encode format.
function encodeNumber(num) {
	var encodeString = "";

	while (num >= 0x20) {
		encodeString += (String.fromCharCode((0x20 | (num & 0x1f)) + 63));
		num >>= 5;
	}

	encodeString += (String.fromCharCode(num + 63));
	return encodeString;
}
*/
