var left_map;
var right_map;
var demo;
var start_adr;
var active_pane="right";
var left_map_code;
var right_map_code;
var number_of_panes;
//var left_superzoom=0;
//var right_superzoom=0;

G_PHYSICAL_MAP.getMaximumResolution = function () { return 21 };
G_NORMAL_MAP.getMaximumResolution = function () { return 23 };
G_SATELLITE_MAP.getMaximumResolution = function () { return 21 };
G_HYBRID_MAP.getMaximumResolution = function () { return 21 };

function windows_sizing(){	
	function set_position(pane,p_width,p_left,p_vert){
	//	$('#' + pane + '_map_pane').add('#' + pane + '_line').animate({'width':p_width + '%','left':p_left + '%'},1000,function(){left_map.checkResize();
	//	right_map.checkResize();});
				$('#' + pane + '_map_pane').add('#' + pane + '_line').css({'width':p_width + '%','left':p_left + '%'});

		$('#' + pane + '_vertical').css({'left':p_vert + '%'});
	}
	if (number_of_panes==2){
		set_position('left',49.75,0.125,25)
		set_position('right',49.75,50.125,75)
		$('.guide').add('[id$="_map_pane"]').css({'visibility':'visible'})
		}
	else {
		other_pane=(active_pane=="left")?"right":"left"
		set_position(active_pane,99.75,0.125,50)
	//	$('#' + other_pane + '_vertical').css({'left':'50%'}); // required for correct guide toggling
	//	get(other_pane+"_vertical").style.left=50+"%"; // required for correct guide toggling
		$('#'+active_pane+'_map_pane').add('#'+active_pane+'_vertical').add('#'+active_pane+'_line').css({'visibility':'visible'})
		$('#'+other_pane+'_map_pane').add('#'+other_pane+'_vertical').add('#'+other_pane+'_line').css({'visibility':'hidden'})
		}
	var pane_height=window_height-header_bottom-title_height; 
	$('#subtitles').css({'top':header_bottom,'height':title_height});
	$('[id$="_map_pane"]').add('[id$="_vertical"]').css({'top':header_bottom + title_height,'height':pane_height - 4}); // 4 - just adjustment
	$('[id$="_line"]').css({'top':header_bottom + (pane_height/2)+25}); //25 is just an adjustment
	if ($("#left_map_pane").width() > 1920)
		$("#left_map_pane").width(1920)
	if ($("#right_map_pane").width() > 1920)
		$("#right_map_pane").width(1920)
	if ($("#left_map_pane").height() > 1200)
		$("#left_map_pane").height(1200)
	if ($("#right_map_pane").height() > 1200)
		$("#right_map_pane").height(1200)	
	update_subtitle();
}

function set_active_pane(side){
	active_pane=side;
}

function set_number_of_panes(value){
	number_of_panes = value;
	setCookie("panes",number_of_panes)
}

function one_map_only(side){
	set_active_pane(side);
	set_number_of_panes(2); // to toggle to 1
	toggle_maps_number();
}

function redraw_maps(){
	if (right_map){ // first called by onresize when map is not ready
		var center=right_map.getCenter();
		update_control_bar();
		windows_sizing();
		if (demo){
			header_bottom=0;
			hide_header();
		}
		left_map.checkResize();
		right_map.checkResize();
		left_map.setCenter(center, Gzoom);
		right_map.setCenter(center, Gzoom);
	}
}

function toggle_maps_number(){
	set_number_of_panes(2/number_of_panes);
	close_infowin3();
	close_infowin4();
	close_link(1);	
	redraw_maps();
}

function zooming_tile(tx,ty,zl,map){
	var nx=tx, ny=ty; nz=zl;
	var mcode=(map==left_map)?left_map_code:right_map_code
	var map_superzoom=0;
	if (map)
		map_superzoom = Gzoom-map_list[map.mcode].zoom;
	if (map_superzoom>0){
		var zz=Math.pow(2,map_superzoom);
		nx=Math.floor(tx/(Math.pow(2,map_superzoom)));
		ny=Math.floor(ty/(Math.pow(2,map_superzoom)));
	    nz=zl-map_superzoom;
		tiles_expansion(map);
	}
	return tile_code(nx,ny,nz,mcode)
}
function left_tile(tx,ty,zl){return zooming_tile(tx,ty,zl,left_map)}
function right_tile(tx,ty,zl){return zooming_tile(tx,ty,zl,right_map)}

function remove_red_crosses(){
	if (left_map.mouse_cross){
		left_map.removeOverlay(left_map.mouse_cross);
		left_map.mouse_cross = null;
	}
	if (right_map.mouse_cross){
		right_map.removeOverlay(right_map.mouse_cross);
		right_map.mouse_cross = null;
	}
}

function red_cross_move(map,point){
	var other_map=left_map;
	if (map==left_map)
		other_map=right_map;
	
	if (other_map.mouse_cross)
		other_map.mouse_cross.setLatLng(point)
	else {
	//	remove_red_crosses();
	//	var mouse_cross = new GIcon({image:"../gallery/images/icons/target.png",iconSize:new GSize(48, 48),iconAnchor:new GPoint(24, 24)});	
		var mouse_cross = new GIcon({image:"../gallery/images/icons/mouse_cross.png",iconSize:new GSize(16, 16),iconAnchor:new GPoint(8, 8)});	
		var cross_marker = new GMarker(point, {icon:mouse_cross, draggable:true, bouncy:true, dragCrossMove:true});
		other_map.mouse_cross = cross_marker;
		other_map.addOverlay(cross_marker);
	}
}

function dragPoly(map){
	var point1 = map.first_point;
	var dragged_point=map.cross_marker.getPoint();
	var point3=new GLatLng(point1.lat(),dragged_point.lng() )
	var point4=new GLatLng(dragged_point.lat(),point1.lng() )
	if (map.poly_overlay) 
		map.removeOverlay(map.poly_overlay);		
	var polyPoints = [point1,point3,dragged_point,point4,point1];
	var poly_overlay = new GPolygon(polyPoints, "#400707", 1, 1.0, "#400707", .3);	
	map.addOverlay(poly_overlay);
	map.poly_overlay = poly_overlay;
}

function remove_green_crosses(){
	if (left_map.cross_marker)
		left_map.removeOverlay(left_map.cross_marker);
	if (right_map.cross_marker)	
		right_map.removeOverlay(right_map.cross_marker);
}

function add_green_cross(map,point){
	if (map.cross_marker)
		map.removeOverlay(map.cross_marker);
	map.first_point = point;
	var cross_icon = new GIcon({image:"../gallery/images/icons/cross_marker.png",iconSize:new GSize(16, 16),iconAnchor:new GPoint(5, 5)});
	var cross_marker = new GMarker(point, {icon:cross_icon, draggable:true, bouncy:true, dragCrossMove:true});
	cross_marker.map = map;
	cross_marker.point = point;
	map.addOverlay(cross_marker);
	GEvent.addListener(cross_marker, "dblclick", function(){dblclickzooming(overlay,this.getPoint());remove_green_crosses()});
	GEvent.addListener(cross_marker, "drag", function(){dragPoly(this.map);});
	GEvent.addListener(cross_marker, "dragend", function(){zoomToPoly(this.map)});
	map.cross_marker = cross_marker;
}

function leftClick(overlay, point) {
	if (point) {
		close_link(); // closing map list
		add_green_cross(left_map,point);
		add_green_cross(right_map,point);
	}
}

function zoomToPoly(map) {
	var bounds = map.poly_overlay.getBounds();
	var map_bounds=map.getBounds();
	var map_sw=map.fromLatLngToDivPixel(map_bounds.getSouthWest() )
	var map_ne=map.fromLatLngToDivPixel(map_bounds.getNorthEast() )
	var rect_sw=map.fromLatLngToDivPixel(bounds.getSouthWest() )
	var rect_ne=map.fromLatLngToDivPixel(bounds.getNorthEast() )

	var map_w=map_ne.x-map_sw.x;
	var map_h=map_sw.y-map_ne.y;
	var rect_w=rect_ne.x-rect_sw.x;
	var rect_h=rect_sw.y-rect_ne.y;
	zoom_x=Math.floor(map_w/rect_w);
	zoom_y=Math.floor(map_h/rect_h);
	var extra_zoom=Math.min(zoom_x,zoom_y)-1;
	var max_zoom;
	if (number_of_panes==2)
		max_zoom=Math.min(map_list[left_map_code].zoom,map_list[right_map_code].zoom)
	else
		max_zoom=map_list[eval(active_pane + '_map_code')].zoom
	var new_zoom=Math.min(max_zoom+1,Gzoom+extra_zoom); // just 1 superzoom
	zooming(new_zoom-Gzoom)
//	var new_zoom=map.getBoundsZoomLevel(bounds);
//	zooming(new_zoom-Gzoom)
	map.setCenter(bounds.getCenter());
	map.removeOverlay(map.poly_overlay);
	left_map.removeOverlay(left_map.cross_marker);
	right_map.removeOverlay(right_map.cross_marker);
	map_move(map)
}

var left_pid=null;
var right_pid=null;
var drag=null;
var drag_infodiv='';

function start_album(side,alb_list){ // can be called from functions_mapster for rightpid=XXXX 
	overlays["album"][side] = alb_list
	update_url();
	manage_album(side);
}

function read_album_list(side){
	var new_list="";	
	$('.' + side + 'alb').each(function(){							
		if (this.checked)
			new_list += ((new_list)? ',':'') + this.value;
	})
	start_album(side,new_list)
	close_album_list();
	$("#prev_next").css({'visibility':'hidden'}); // to avoid prev next doc errors
	//update_album_list(side);
}

var left_album_id=null;
var right_album_id=null;

function close_album_list(){
	$('.album_form').remove()
}

function check_all_albums(side,value){
	$('.' + side + 'alb').each(function(){this.checked = value})
}

function update_album_list(side){			
	close_album_list();
	close_infowin2(photo_list);
	var html='<br><b>На картах могут быть показаны маркеры содержащихся в галерее документов с указанными географическими координатами.<br/><br/>Выберите интересующие Вас альбомы:</b><br/><br/>' + 
	'<form action="#" name="' + side + '" class="'+side+'_album_form" onsubmit="read_album_list(this.name); return false;"><table width="320" cellspacing="0" cellpadding="2">';
	for (var aid in albums){	
		var alb=albums[aid];
	//	GLog.write("j="+j+" Albums.length="+albums.length+" alb.name="+alb.name+" alb.loaded_right="+alb.loaded_right)
		var check;
		if (side=="left")
			check=(alb.loaded_left)?' checked="checked" ':' ';
		else
			check=(alb.loaded_right)?' checked="checked" ':' ';
		html+='<tr style="background-color:'+change_color()+'"><td><input type="checkbox"' + check + ' class="' + side + 'alb" value="' + aid +
		'"/></td><td>&nbsp;' + get_album_title(aid) + '</td></tr>';
	}
	html+='</table><div style="padding:10px">' +
		'<p style="align:left;padding-left:40px"><a class="f" onclick="check_all_albums(&quot;'+side+'&quot;,true);" title="Отметить все альбомы"><b>Все альбомы</b></a> (документов всего: ' + total_pictures + ')<br/><br/>' +
		'<a class="f" onclick="check_all_albums(&quot;'+side+'&quot;,false);"><b>Сбросить метки всех альбомов</b></a></p>' +
		'<p style="padding-left:120px"><input type="submit" name="'+side+'submit" value="Готово" /></p></div></form>';
	var left=15;
	if (number_of_panes==1)
		left=40;
	else if (side=="right")
			left=65;
//	if (photo_list!=null && document.getElementById(photo_list)!=null)
//		document.getElementById(photo_list).style.visibility='hidden';
	var id=infowin(left+"%", "15%", "350px",  "Альбомы из галереи сайта",html); // !!!!!!!!
	$("#"+id).addClass('album_form');//id();
}

var left_full_map_shift=0;
var right_full_map_shift=0;

function show_shifted_win(title,side,w_height,html){
	if (side=="left"){
		infowin(20+left_full_map_shift*30,75+left_full_map_shift*30,w_height,title,html);
		left_full_map_shift++;
		}
	else{
		infowin(window_width/2+20+right_full_map_shift*30,75+right_full_map_shift*30,w_height,title,html);
		right_full_map_shift++;
		}
}

function show_full_map(side){
	var mcode = eval(side + '_map_code');
	var all_html='<table width="550"><tr><td>Код карты: ' + mcode + bsp
		+ 'Максимальный масштаб: ' + map_list[mcode].zoom + bsp + '<a href=../forum/viewtopic.php?t='+map_list[mcode].topic+'>Эта карта на форуме</a>'+ bsp 
		+ '<a href=../gallery/displayimage.php?pid='+map_list[mcode].pid+'>В галерее</a></td></tr>' 
		+ '<tr><td>' + map_subtitle(mcode) + '</td></tr>'
	//	+ '<tr><td align="justify"><p>' + map_list[mcode].comment + '</td></tr>'
		+ '<tr><td align="justify" id="d' + mcode + '"></td></tr>'
		+ '<tr><td align="center"><img' + pic_src(mcode,m_pic) + ' vspace="10" border="1" alt="Изображение загружается" /></td></tr></table>';
	show_shifted_win(map_list[mcode].name,side,570,all_html);
	$.get("../read_map.php?mode=comment&mcode=" + mcode,function(data){
			$("#d" + mcode).html('<p><i>' + data +'</i></p>')})
}

function show_legend(side){
	var mcode = eval(side + '_map_code');
	var url = '../' + dir_prefix + '/' + set_prefix(mcode) + mcode + '/legend.jpg';
	window.open(url,"Легенда карты " + map_list[mcode].name,"width=600,height=800")
//	var all_html='<a onclick="window.open(&quot;' + url + '&quot;,&quot;&quot;,&quot;width=600,height=800&quot;)" alt="Легенда карты"></a>'
	//<img src="' + url + '" hspace="0" vspace="0" width="468" height="648" align="middle" alt="Легенда карты" /></a>';
//	show_shifted_win(map_list[mcode].name,side,486,all_html)	
}

var links_div_id=null; // div with links shown

function close_link(option){
	if (option)
		update_url();
	close_infowin2(map_list_win_id);
	if (links_div_id!=null){
		$("#"+links_div_id).remove()
		links_div_id=null;		
	}
}

function coord_url(){
	var url = (number_of_panes==1) ?
		("panes=1&" + active_pane + "=" + eval(active_pane + "_map_code")) : 
		("panes=2&left=" + left_map_code + "&right=" + right_map_code);
	return url + latlng_url();
}

function main_url(){
	var str=location.href.replace("#","?")
	return str.split("?")[0]+"?" + coord_url()	
}

function current_url(){	
	return  main_url() + overlays_url();		
}

function show_link(){
	close_link(); // to avoid several windows opened
	var all_url=main_url() +"<br>"+ overlays_url();	
	links_div_id=infowin("30%", "15%",650,  "Ссылка на эту страницу", "<br>" + all_url
		 + '<br><b>Поделиться ссылкой с пользователями социальных сетей:</b><span id="social3"></span><br><b>HTML код для тех, кто хочет показать фрагмент данной карты на своем сайте:</b><br><br>&lt;iframe width="'
		 + ((number_of_panes==1)?425:700)
		 + '" height="350" frameborder="0" scrolling="no"  src="'
		 + all_url
		 + '&header=0">&lt;/iframe&gt;<br>&lt;a href="'
		 + all_url
		 + '">&lt;br&gt;Посмотреть всю карту&lt;/a&gt;<br><br>Вы можете изменить параметры <b>width</b> (ширина) и <b>height</b> (высота), определяющие размеры вставляемой карты в пикселях');
	add_social_links("social3")
}

function set_Gcenter(){
	lat=get("center_lat").value;
	lng=get("center_lng").value;
	if (isNaN(lat) || isNaN(lng)){
		lat = 55.755786
		lng = 37.617633
	}
	Gcenter=new GLatLng(lat, lng);
	left_map.setCenter(Gcenter, Gzoom);
	right_map.setCenter(Gcenter, Gzoom);
}

function toggle_header(option){ // 0 - hide 1 - show
	var old_vis=get(active_pane+"_vertical").style.visibility;
	if (option){
		title_height=23;
		header_bottom=40;
		get("header").style.visibility=get("control_bar").style.visibility=get("subtitles").style.visibility='visible';
		close_link();
		windows_sizing();
		get("screen_button").style.visibility='hidden'
	}
	else {
		title_height=header_bottom=0;
		windows_sizing();
		$(".guide").css({'visibility':old_vis})
		get("header").style.visibility=get("control_bar").style.visibility=get("subtitles").style.visibility='hidden';
		get("screen_button").style.left=window_width-50+'px'
		get("screen_button").style.visibility='visible'
	}	
}

function toggle_sync(){
	sync=!sync;
	update_control_bar();
	//alert(((sync)?'Установлен':'Отключен')+ ' режим синхронного перемещения карт')
}

function update_control_bar(){
	var start = '<a class="f" style="color:#FFF" href="../'
	var startj = '<a class="f" style="color:#FFF" onclick="'
	$("#center_lat").val(Gcenter.lat().toString().substring(0,9));
	$("#center_lng").val(Gcenter.lng().toString().substring(0,9));
	$("#zoom").html('<a style="color:#FFF" title="Текущий масштаб карты">' + Gzoom+ '</a>');
	var html =	startj + 'one_map_only(&quot;left&quot;)"'+map_pic_html(left_map_code,0)+' title="Детальный просмотр одной только левой карты">Левая</a>' +
				'.' + startj + 'toggle_sync()" title="Включение/отключение синхронного перемещения карт">' + ((sync)?'+':'<blink>&lt;&gt;</blink>') + '</a>.' +
				startj + 'one_map_only(&quot;right&quot;)"'+map_pic_html(right_map_code,0)+' title="Детальный просмотр одной только правой карты">Правая</a>';
	if (number_of_panes==1){
		mcode = (active_pane=="right") ? right_map_code : left_map_code;
		html = startj + 'toggle_maps_number();"'+two_map_pics_html()+' title="Режим просмотра и сравнения двух карт">2 карты</a>';		
		}
	var polymap = bsp + start + 'polymap.php#format=42' + latlng_url(1)+'"' + page_pic_html("polymap") + ' title="Переход к просмотру выбранного места сразу на нескольких картах">Много карт</a>';
	$("#maps_number").html(html + polymap)
	close_link();	
}

function windows_ordering(){
	if 	((map_win_number>0) && (header_bottom>0)){	
		for (var i = 0; i < map_win_number; i++)
			if (!(map_win[i].closed))
				if (window.focus) {map_win[i].focus()}	
	}
}

var snip_w = 600;
var snip_h = 400;
var snip_file;

function change_snip_size(w,h){
	if (w)
		$("#snip_w").val(w);
	if (h)
		$("#snip_h").val(h);	
	snip_w = $("#snip_w").val();
	snip_h = $("#snip_h").val();
	snip_w = Math.max(200,snip_w);
	snip_w = Math.min(800,snip_w);
	snip_h = Math.max(200,snip_h);
	snip_h = Math.min(500,snip_h);
	close_infowin(snip_win_id)
	$("#snip_w").val(snip_w);
	$("#snip_h").val(snip_h);
	save_tiles()
}

function save_tiles(){
//	window.print();
	if ($('.loading').is('div'))
		return
	var map = (active_pane=="right")? right_map : left_map;
	var mcode = map.mcode;
	if (map_list[mcode].zoom < Gzoom){
		Gzoom = map_list[mcode].zoom
		map.setZoom(Gzoom);
	}
	var m=(map.getContainer()).getElementsByTagName("img");
	//GLog.write("id="+(map.getContainer()).id)
	var lefttop = new GPoint();
	var snip_lefttop = new GPoint(Number.MAX_VALUE,Number.MAX_VALUE); // snip lefttop in pixels
	var prj = G_NORMAL_MAP.getProjection();
	var txt = "";
	var center_pixels = prj.fromLatLngToPixel(Gcenter,Gzoom); // map center in pixels
	var snip_sw = prj.fromPixelToLatLng(new GPoint(center_pixels.x-snip_w/2,center_pixels.y+snip_h/2),Gzoom);
	var snip_ne = prj.fromPixelToLatLng(new GPoint(center_pixels.x+snip_w/2,center_pixels.y-snip_h/2),Gzoom);
	var snip_bounds = new GLatLngBounds(snip_sw,snip_ne);
	var ext = "jpg";	
	if ((mcode == "0020090") || (mcode=="0120090") || (mcode=="0220090") || (mcode=="0320093") || (mcode=="0420090") || (mcode=="0420091") || (mcode=="0420092"))
		ext = "png";
//	GLog.write("snip bounds="+snip_bounds)
	for (var i=0;i<m.length; i++){
		var a=m.item(i);
		var dstyle=a.style;	
		if (a.width==256){
			lefttop.x = parseInt(dstyle.left);
			lefttop.y = parseInt(dstyle.top);
			var latlng = map.fromDivPixelToLatLng(lefttop);		 
			var tilePoint = prj.fromLatLngToPixel(latlng,Gzoom); // tile lefttop in pixels
			var sw_latlng = prj.fromPixelToLatLng(new GPoint(tilePoint.x,tilePoint.y+256),Gzoom);
			var ne_latlng = prj.fromPixelToLatLng(new GPoint(tilePoint.x+256,tilePoint.y),Gzoom);
			var tile_bounds = new GLatLngBounds(sw_latlng,ne_latlng);
		//	GLog.write("tile bounds="+tile_bounds)
			if (tile_bounds.intersects(snip_bounds) ){
				if ((tilePoint.x <= snip_lefttop.x) && (tilePoint.y <= snip_lefttop.y)){
					snip_lefttop.x = tilePoint.x;
					snip_lefttop.y = tilePoint.y;
				}
				txt += Math.floor(tilePoint.x/256) + "," + Math.floor(tilePoint.y/256) + "," + a.src + " ";
			}
		}
	}
//	GLog.write("txt="+txt)
	var snip = snip_lefttop.x + " " + snip_lefttop.y;
	var center = center_pixels.x + " " + center_pixels.y;
//	GLog.write('snip_lefttop='+snip+ ' js center=' + center)
	show_loading();
	var vis = ($('.guide').css('display')=='block')?1:0;
	snip_file = 'retromap_' + mcode + "_" + Math.floor(Math.random()*1000).toString(16);
	$.post("read_tiles.php", {txt:txt,snip:snip,h:snip_h,w:snip_w,vis:vis,center:center,file:snip_file,ext:ext}, function(data){
						if (data.indexOf("rror")>0)
							alert("Не получается построить файл с изображением этой карты");
						else {	
							var html = 'Формат в пикселях (от <a class="f" onclick="change_snip_size(200,200)"><u>200х200</u></a> до <a class="f" onclick="change_snip_size(800,500)"><u>800х500</u></a>): <input type="text" id="snip_w" size="1" style="background-color:#d4d0c7;font-size:8pt;" value="' + snip_w + '"/> x <input id="snip_h"  type="text" size="1" style="background-color:#d4d0c7;font-size:8pt;" value="' + snip_h + '"/>&nbsp;&nbsp;&nbsp;&nbsp;<button type="text" onclick="change_snip_size()"><img src="../images/cut.png" height="12"><small>&nbsp;Обновить</small></button>&nbsp;<button type="text" title="Скрыть/показать направляющие" onclick="$(&quot;.guide&quot;).toggle();change_snip_size()"><img src="../images/guides.png" height="12"><small>&nbsp;Центр</small></button></br></br><img src="/cache/' + snip_file + '.jpg?' + add_hash() + '">';
							snip_win_id = infowin(15, header_bottom+title_height+15,Math.max(620,snip_w+20), "Для сохранения изображения кликните по нему правой кнопкой мыши",html);	
					//		GLog.write(data)
						}
						$('.loading').remove();
				});
}

function zooming(extra_zoom){ // poitive or negative
	Gzoom+=extra_zoom;
//	left_superzoom+=extra_zoom;
//	right_superzoom+=extra_zoom;
	left_map.setCenter(Gcenter, Gzoom);
	right_map.setCenter(Gcenter, Gzoom);
	update_control_bar(); // just to show new zoom
}

function dblclickzooming(overlay, latlng){
	Gcenter=latlng;
	zooming(+1)
return true // to disable zooming in MS
}

function arrow_html(side,map_code,option){
/*	if (option=="up"){
		mcode=previous_map_code(map_code,1);
		txt="предыдущую"
		}
	else {
		mcode=next_map_code(map_code,1);
		txt="следующую"
	}
	return '<a onclick="load_map(&quot;' + side + '&quot;,&quot;' + mcode + '&quot;,1);"' + map_pic_html(mcode,0)+ '><img src="../images/arrow_' + option + '.png" border=0 title="Показать ' + txt + ' по списку карту"></a>';
*/	
	var fun = "prev";
	var txt = "предыдущую";
	if (option=="down"){
		fun = "next";
		txt = "следующую"
	}
	return '<a onclick="load_' + fun + '_map(&quot;' + side + '&quot;,&quot;' + map_code + '&quot;);"><img src="../images/arrow_' + option + '.png" border=0 title="Показать ' + txt + ' по списку карту, охватывающую выбранную территорию"></a>';
}

function central_tile_url(mcode){
	//	var url = map.getCurrentMapType().getTileLayers()[0].getTileUrl(center_tile,Gzoom);
	var center_pixels = G_NORMAL_MAP.getProjection().fromLatLngToPixel(Gcenter,Gzoom); // map center in pixels
	return "http://www." + map_list[mcode].url + "/" + tile_code(Math.floor(center_pixels.x/256),Math.floor(center_pixels.y/256),Gzoom,mcode) + ".jpg"
}

function load_next_map(side,map_code){
	show_loading();
	var current_map=false;
	for (i=0; i<ordered_map_list.length; i++){
		if (current_map){
			var next = ordered_map_list[i].mcode;
			if (ordered_map_list[i].mclass < 5){
				load_map(side,next,1);
				return;
			}
			else {
				var tile = new Image();
				tile.src = central_tile_url(next);
				tile.side = side;
				tile.next = next;
				tile.onerror = function(){load_next_map(this.side,this.next)};
				tile.onload = function(){load_map(this.side,this.next,1);};					
				return;
			}
		}
		if (ordered_map_list[i].mcode==map_code)
			current_map=true;
	}
	load_map(side,"0020090",1)
}

function seek_prev(i,side){
	if (ordered_map_list[i-1].mclass < 5)
		load_map(side,ordered_map_list[i-1].mcode,1);
	else {
		var tile = new Image();
		tile.src = central_tile_url(ordered_map_list[i-1].mcode);
		tile.side = side;
		tile.i = i-1;
		tile.onerror = function(){seek_prev((this.i-1<0) ? ordered_map_list.length-1 : this.i,this.side)};
		tile.onload = function(){load_map(this.side,ordered_map_list[this.i].mcode,1)};
	}
}

function load_prev_map(side,map_code){
	show_loading();
	for (i=0; i<ordered_map_list.length; i++){
		if (ordered_map_list[i].mcode==map_code){
			seek_prev((i==0) ? ordered_map_list.length-1 : i,side)
			return
		}
	}	
}

function subtitle_html(side, map_code, option){
	try{
	var left=(number_of_panes==2 && side=="right")? ((window_width/2)+50) : 50;
	var breadcrumb = (option && window_width > 1500) ? '&nbsp;<img src="../forum/styles/SoftBrown/theme/images/icon_home.gif"><a class="f" href=".."  title="Домашняя страница сайта">&nbsp;<b>Home</b></a>&nbsp;&gt;' : '';
	var map_title_html='<a class="f" onclick="one_map_only(&quot;' + side + '&quot;);"'+map_pic_html(map_code,0)+ '><b>' + map_list[map_code].name + '</b></a>';
	var maps_html = '<a class="f" onclick="show_map_list(&quot;' + left + 'px&quot;,&quot;75px&quot;,0,&quot;' + side + '&quot;)" title="Выбрать загружаемую карту"' + page_pic_html1("mapmenu") + '>&nbsp;<b>Выбор карты</b>&nbsp;';
	
	var icons_html = '<table cellspacing="0" cellpadding="2"><tr>';
	var tail = ' width="16" height="16"></a></td>';
	if (map_code.substr(0,2)=="11")
		icons_html += '<td><a '+page_pic_html("legend")+' onclick="show_legend(&quot;' + side + '&quot;);" ><img src="../images/legend.png" border=0 title="Показать условные обозначения"' + tail;
	var forum_html = '<a '+page_pic_html("forum")+' href="../forum/viewtopic.php?t=' + map_list[map_code].topic + '"><img src="../images/forum.png" border=0 title="Эта карта на форуме"' + tail;
	var gallery_html = '<a '+page_pic_html("gallery") + ' href="../gallery/displayimage.php?pid=' + map_list[map_code].pid + '"><img src="../images/gallery.png" border=0 title="Эта карта в галерее"' + tail;
	icons_html+= '<td><a ' + map_pic_html(map_code,4) + ' onclick="show_full_map(&quot;' + side + '&quot;);" > <img src="../images/full_map.png" border=0 title="Показать всю карту"' + tail +
		'<td>' + forum_html + '<td>' + gallery_html;
	icons_html += (option && window_width > 1300) ? '<td>&nbsp;&nbsp;Слои:&nbsp;</td>' : '';		
	for (var name in overlays)		
		if ((map_code.substr(0,2)!="01") || overlays[name].allmaps){
			var dbl = ((name == 'album')? 'ondblclick="update_album_list(&quot;' + side + '&quot;)"' : '');
			icons_html+= '<td><a '+page_pic_html(name)+' title="Показать/убрать '+overlays[name].title+'" onclick="overlay_toggle(&quot;'+name+'&quot;,&quot;' + side + '&quot;);"' + dbl + '><img src="../images/'+name+'.png"' + (eval("overlays[name]."+side)? 'style="border:2px inset"' : '') + tail;
		}
	icons_html += '</tr></table>';
	if (number_of_panes==2 && window_width < 1200)
		icons_html = '';
	var html = '<table cellspacing="0" cellpadding="0"><tr><td style="height:23px;" valign="middle">' + breadcrumb + '</td><td style="min-width:330px" align="left">&nbsp;' + map_title_html + '</td><td width="20px"><td>' + arrow_html(side,map_code,"up") + '</td><td style="min-width:16ex" align="center">' + maps_html + '</td><td>' + arrow_html(side,map_code,"down") + '</td><td width="20px"></td><td>' + icons_html + '</tr></table>';
	return html
	}
	catch(err){GLog.write("Error in subtiltle html");return ""}
}

function update_subtitle(){
	try{
	$("#left_subtitle,#right_subtitle").css({'position':'absolute','background-color':'#fffaec','top':'0px','left':'0px','height':title_height+"px",'width':'50%'});
	$("#right_subtitle").css({'left':'50%'});	
	if (number_of_panes==1){
		map_code=eval(active_pane+"_map_code");
		var left_width = (window_width < 1150) ? '100%' : '60%';
		var right_width = (window_width < 1150) ? '0%' : '40%';
		var right_left = (window_width < 1150) ? '100%' : '60%';
		$("#left_subtitle").css({'width':left_width}).html(subtitle_html(active_pane,map_code,1))
		$("#right_subtitle").css({'left':right_left,'width':right_width}).html(
			'<div style="text-align:right;padding:4px 50px 0px 0px">'
			+ '<a class="f" onclick="save_tiles()" title="Сохранить фрагмент карты на своем компьютере"><img src="../images/cut.png" height="12">&nbsp;Сохранить' + bsp  + bsp + '</a>'
			+ '<a '+page_pic_html("forum") + ' class="f" href="../forum/viewtopic.php?t=' + map_list[map_code].topic + '" title="Эта карта на форуме"><img src="../images/forum.png" height="12">&nbsp;На форуме' + bsp  + bsp + '</a>'
			+ '<a ' + page_pic_html("maplist1") + 'class="f" href="../map-table.html" title="Список карт, привязанных к координатной сетке"><img src="../gallery/images/icons/list.png" height="12">&nbsp;Все карты' + bsp  + bsp + '</a>'
			+ '<a ' + page_pic_html("map_pics") + 'class="f" href="../map-pictures.html" title="Миниатюры карт, привязанных к координатной сетке"><img src="../images/gallery.png" height="12">&nbsp;Миниатюры' + bsp  + bsp + '</a>'
	//	+ '<a onclick="load_prev_map(&quot;right&quot;,&quot;' + right_map_code + '&quot;)">&nbsp;+' + bsp  + '</a>'	
	//	+ '<a onclick="load_next_map(&quot;right&quot;,&quot;' + right_map_code + '&quot;)">&nbsp;_' + bsp  + '</a>'
		+ '</div>')
	}
	else {
		$("#left_subtitle").html(subtitle_html("left",left_map_code,0))
		$("#right_subtitle").html(subtitle_html("right",right_map_code,0))
	}
	//$('img[src*="album"]').parent().parent().dblclick(function() {
  //alert('Handler for .dblclick() called.');
//});
	}
	catch(err){}
}

var sync = true;

function map_move(map){
	Gcenter=map.getCenter();
	Gzoom=map.getZoom();
	update_control_bar();
	close_infowin6();
	if (sync){
		var other_map=left_map;
		if (map==left_map)
			other_map=right_map;	
		other_map.setCenter(Gcenter, Gzoom);
	}	
}

overlays=Array();

function overlay_toggle(name,side){
	//GLog.write("name="+name+" side="+side+" ov="+overlays[name][side])
//	if (name=="album"){ // for album just opening the album list
//		overlays[name].open_overlay(eval(side + '_map'))
//		left_pid=right_pid=null // closing all pid operations
//	}
//	else { // for other overlays - toggling		
		if (overlays[name][side]){	
			overlays[name].close_overlay(eval(side + "_map"))
			if (move_listeners[name])
				GEvent.removeListener(move_listeners[name])
			close_closeby_window(name)
			overlays[name][side] = null
		}
		else	
			overlays[name].open_overlay(eval(side + "_map")) 
//	}
	update_subtitle();
	update_url();
//	close_link(1);	
}

function overlays_url(){
	var url="";
	function add_overlay_url(name,ov,side){
		if (!ov)
			return
		var key = '1';	
		if (name == 'oldmos' || name == 'album')
			key = overlays[name][side]
		url += "&" + side + name + "=" + key;
		//GLog.write("url="+url)
	}
	for (var name in overlays){
		add_overlay_url(name,overlays[name].left,"left")
		add_overlay_url(name,overlays[name].right,"right")				
	}
	if (left_pid!=null)
		url += "&leftpid="+left_pid;
	if (right_pid!=null)
		url += "&rightpid="+right_pid;
	if (drag!=null)
		url += "&drag="+drag;			
	return url
}

function add_extra_overlays(){
	for (var name in overlays){
		if (name!="album"){	
			if (overlays[name].left && ((left_map_code.substr(0,2)!="01") || overlays[name].allmaps))
				overlays[name].open_overlay(left_map)
			if (overlays[name].right && ((right_map_code.substr(0,2)!="01") || overlays[name].allmaps))
				overlays[name].open_overlay(right_map)
		}
		else { // for albums avoiding album menu
			if (overlays["album"].left)
				manage_album("left");
			if (overlays["album"].right)
				manage_album("right");
		}
	}
}
function add_overlay(map,layer,ov){layer[map.side] = ov;  map.addOverlay(ov)} 
function delete_overlay(map){map.removeOverlay(this[map.side])} 

function open_routes(map){add_overlay(map,this,new GTileLayerOverlay(G_HYBRID_MAP.getTileLayers()[1]))}
function open_legend(map){add_overlay(map,this,new GGeoXml("http://retromap.ru/legends/"+a+".kml"))}
function open_wiki(map){add_overlay(map,this,new GLayer("org.wikipedia.ru"))}
function open_photo(map){show_panoramio(map.side);move_listeners['photo'] = GEvent.addListener(map, 'moveend',function(){show_panoramio(map.side);});add_overlay(map,this,new GLayer("com.panoramio.all"))}
function open_temple(map){move_listeners['temple'] = GEvent.addListener(map, 'moveend',function(){show_closeby(map.side,2)});show_closeby(map.side,2);add_overlay(map,this,new GGeoXml("http://retromap.ru/temples.kml"))}
function open_oldmos(map){manage_oldmos(map.side,"load")}
function close_oldmos(map){manage_oldmos(map.side,"unload")}
function open_album(map){overlays["album"][map.side] = '9999'; manage_album(map.side);}
function close_album(map){overlays["album"][map.side] = ''; manage_album(map.side);}
//function open_album(map){update_album_list(map.side)} 


function overlay_object(title,allmaps,open_overlay,close_overlay){
	this.title=title
	this.allmaps=allmaps
	this.open_overlay=open_overlay;
	this.close_overlay=close_overlay;
}
overlay_object.prototype.left=null;
overlay_object.prototype.right=null;

function init_overlays(){
	overlays["routes"] = new overlay_object("слой с объектами карты Google",false,open_routes,delete_overlay);
	overlays["photo"] = new overlay_object("ссылки современные фотографии Москвы с сайта Panoramio",false,open_photo,delete_overlay);
	overlays["wiki"] = new overlay_object("ссылки на Википедию",false,open_wiki,delete_overlay);
	overlays["temple"] = new overlay_object("ссылки на сайт &quot;Храмы России&quot;",false,open_temple,delete_overlay);
	overlays["oldmos"] = new overlay_object("ссылки на старые фотографии Москвы с сайта oldmos.ru",true,open_oldmos,close_oldmos);
	overlays["album"] = new overlay_object("ссылки на альбомы галереи",true,open_album,close_album);
//	overlays["legend"] = new overlay_object("условные обозначения карты",true,show_legend,show_legend);
}

//	left_legend=parser(param_str, "leftlegend=");
//	right_legend=parser(param_str, "rightlegend=");	
init_overlays()
/*
function destroy_map(map){
	if (map!=null)
		try{map.clearOverlays();}catch(e){} // otherwise extinfowindows are not closed
}
*/
function update_url(){
	if (demo)
		return 
//	GLog.write("url was updated:"+coord_url()+overlays_url())
	var mapster_url=location.href.replace("#","?").split("?")[0]
	var header_url=(header_bottom==0)?"&header=0":"";
	window.location.replace(mapster_url + "#" + coord_url()+ overlays_url() + header_url);

//	document.location.hash=coord_url()+overlays_url();
}

var progress;

function set_Google_listeners(map){
	map.disableDoubleClickZoom();
	map.disableContinuousZoom();
	map.disableScrollWheelZoom();
	GEvent.addListener(map, 'drag',function(){map_move(this)});	
	GEvent.addListener(map, 'dragend',function(){update_url()});
	GEvent.addListener(left_map, 'zoomend',function(){update_url()});
	GEvent.addListener(map, 'dblclick', dblclickzooming);
	GEvent.addListener(map, 'tilesloaded',function(){tiles_expansion(this)});
	GEvent.addListener(map, "click",leftClick);
	GEvent.addListener(map, 'mousemove',function(point){red_cross_move(this,point)})
	GEvent.addListener(map, 'mouseout',remove_red_crosses)
}

function load_map(side,map_code,option){
	//	GLog.write("loading map="+map_code);
	var div=get(side+"_map_pane");
	var map;
	var other_map;
	close_infowin3();
	set_active_pane(side);
	try{
		var map_type = map_list[map_code].type;
		}
	catch(err){
		alert("Попытка обращения к несуществующей или переименованной карте, код карты "+map_code+". Проверьте правильность информации в адресной строке браузера.");
		map_code=right_map_code=left_map_code="0020090";
		}
//	if (Gzoom > map_list[map_code].zoom && !demo) // decreasing zoom if above max to avoid superzooming at loading
//		Gzoom = map_list[map_code].zoom
	if (side=="left"){
	//	destroy_map(left_map);
		left_map_code=map_code;
		if (left_map)
			GEvent.clearListeners(left_map,'mousemove');
		map=left_map=new_map(div, map_code,2);
		other_map=right_map;
		setCookie("maps0",map_code);
		left_full_map_shift=0;
		}
	else {
	//	destroy_map(right_map);
		right_map_code=map_code;
		if (right_map)
			GEvent.clearListeners(right_map,'mousemove');
		map=right_map=new_map(div, map_code,2);
		other_map=left_map;
		setCookie("maps1",map_code);
		right_full_map_shift=0;
		}
	setCookie (side + "_map_code", map_code,false,"/");
	setCookie (side + "_map_code", map_code,false,"/gallery/");	
	map.side=side;
	set_Google_listeners(map);
	map.setZoom(Gzoom);
	if (other_map)
		map_move(map);
	if (header_bottom==0)
		map.addControl(new GSmallZoomControl());
	
	for (var aid in albums){
		if (side=="left")
			albums[aid].loaded_left=false
		else	
			albums[aid].loaded_right=false
	}
	try{amarkers[side]=[]}catch(e){}
	if (left_map && right_map){ // adding overlays - only when both maps exists
	//	GLog.write('adding overlays')
		add_extra_overlays();
		manage_drag("right",drag)
	//	GLog.write('overlays added')
	}
	update_control_bar(); // to update zoom
	if (option) // loading new map through next prev arrows
		update_url();
	update_subtitle();
	update_map_hits(map_code);
	$('.loading').remove();
}

function add_map_control(mapdiv,html) {
	var title = document.createElement("div");
	title.className='map_title';
	title.innerHTML=html;
	mapdiv.appendChild(title);
}

var timer;
var timer_is_on=0;
var first_map=1;
var seconds=0

function timedCount(){
	var mode=next_map_code;
	if (demo==2)
		mode=previous_map_code;
	else
		if (demo==3)
			mode=random_map_code;
	set_active_pane ("right");
	timer=setTimeout("timedCount()",5000);
	if (first_map)
		first_map=0;
	else	
		load_map("right",mode(right_map_code,1));
	add_map_control(get("right_map_pane"), "<b>"+ map_list[right_map_code].name+"</b>");
}

function demo_show(){
	hide_header();
	hide_lines();
	if (!timer_is_on)
	  {
	  timer_is_on=1;
	  timedCount();
	  }	 
}

function hide_lines(show){
	var vis = (show)? 'visible' : 'hidden';
	$(".guide").css({'visibility':vis})
}

function hide_header(){
	get("header").style.visibility=get("control_bar").style.visibility=get("subtitles").style.visibility='hidden';
}

function addAddressToMap(response) {
	var adr;
	var address=get("search_adr").value;
	if (!response || response.Status.code != 200) {
		if (start_adr==null)
			a=get("search_adr").value;
		else
			a=start_adr;
		alert("К сожалению, на карте не найден объект с указанным адресом: "+a);
		}
	else {		
		var place = response.Placemark[0];
		Gcenter= new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
		left_map.setCenter(Gcenter, Gzoom);	
		right_map.setCenter(Gcenter, Gzoom);	
		update_control_bar();
		adr='<br><b>' + start_adr + '</b><br>'
		if (place.address!=null)
			adr='<br><small>' + place.address + '</small><br>';
		var icon = new GIcon();
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1); 
		icon.iconSize = new GSize(11, 11);
		icon.shadowSize  = new GSize(0,0);
		icon.iconSize = new GSize(11, 11);
		icon.image = "../images/empty.png";
		var marker = new GMarker(Gcenter, {icon:icon});
		if (number_of_panes==2){
			left_map.addOverlay(marker);
			right_map.addOverlay(marker);
		}
		else
			if(active_pane=="left")
				left_map.addOverlay(marker);
			else
				right_map.addOverlay(marker);
		marker.openInfoWindowHtml(adr,{maxWidth:150});
	}
}

function FindAddress(response) {
	var current_address_div = get("current_address");
	if (!response || response.Status.code != 200)
		current_address_div.innerHTML = "Неизвестен";
	else {		
		var place = response.Placemark[0];
		if (place.address!=null)
			current_address_div.innerHTML = place.address;
	}
}

function showLocation(option){
	var geocoder = new GClientGeocoder();
	var address=(option==0)?start_adr:get("search_adr").value
	geocoder.getLocations(address, addAddressToMap);
}

var global_geocoder;
var adr_listener;
var left_cursor_listener;
var right_cursor_listener;

function check_address(){
	global_geocoder.getLocations(Gcenter, FindAddress);
}

var search_win_id="";

function mousemv(latlng){
	var delta_left=left_map.getCenter().distanceFrom(latlng);
	var delta_right=right_map.getCenter().distanceFrom(latlng);
	var delta_meters=Math.min(delta_left, delta_right);
	var result=0;
	if (delta_meters>999){ // in kilometers
		if (delta_meters/1000>999) 
			result=(delta_meters/1000).toFixed(0)+" km";
		else if  (delta_meters/1000>99)
			result=(delta_meters/1000).toFixed(1)+" km";
		else if  (delta_meters/1000>9)
			result=(delta_meters/1000).toFixed(2)+" km";
		else	
			result=delta_meters.toFixed(0)+" m";
		}
	else
		result=delta_meters.toFixed(0)+" m";		
	document.getElementById("delta_meters").innerHTML=result;
	
	var lat1=Gcenter.lat()
	var lat2=latlng.lat()
	var dLon=latlng.lng()-Gcenter.lng()
	var y = Math.sin(dLon) * Math.cos(lat2);
	var x = Math.cos(lat1)*Math.sin(lat2) - Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
	var azimuth = Math.atan2(y, x)* 180/Math.PI;
	var postfix = (azimuth<-45 && azimuth>-135)?'W':((azimuth<45 && azimuth>-45)?'N':((azimuth>45 && azimuth<135)?'E':'S'))
	if (azimuth<0)
		azimuth += 360
	//	var azimuth = Math.atan2(y, x)* 180/Math.PI;
//	var postfix = (azimuth<-45 && azimuth>-135)?'W':((azimuth<45 && azimuth>-45)?'N':((azimuth>45 && azimuth<135)?'E':'S'))
	document.getElementById("azimuth").innerHTML=Math.floor(azimuth) + '&deg;&nbsp;' + postfix;
	}

function map_searcher(){
	if (search_win_id!="")
		return
	close_infowin4();	
	var search_div = get("map_searcher");
	global_geocoder = new GClientGeocoder();	
	check_address();
	adr_listener=GEvent.addListener(left_map, 'moveend',check_address);
	search_win_id=infowin(15, header_bottom+title_height+15,435, "Поиск по сайту и поиск объектов по адресу на карте", "");
	var infodiv=get(search_win_id);
	search_div.style.visibility="visible";
	infodiv.appendChild(search_div);
	left_cursor_listener=GEvent.addListener(left_map, 'mousemove',mousemv);	
	right_cursor_listener=GEvent.addListener(right_map, 'mousemove',mousemv);	
}

function wrong_map_code(mcode){
	add_map(mcmap,mcode,"Неизвестная карта",18,0,0);
	alert('Попытка обращения к несуществующей или переименованной карте, код карты: '+mcode+'. Проверьте корректность содержимого адресной строки браузера и выберите требуемую карту из меню "Карты".') 
}

function check_map_codes(){
	var a;
	try{a=map_list[left_map_code].url}catch(e){wrong_map_code(left_map_code);} //left_map_code='0020090'}
	try{a=map_list[right_map_code].url}catch(e){wrong_map_code(right_map_code)} //;right_map_code='0020090'}
}

function load_parameters(){
	var param_str=location.href
	var former_mcode;
	//GLog.write("Parameters="+param_str)
//	number_of_panes = getCookie("panes"); !!!!! because from oldmos 2 panes are bad looking
	if (!number_of_panes)
		number_of_panes = 1;
	var a=parser(param_str, "panes=");
	if (a=="1"){
		number_of_panes = 1;
		active_pane = (parser(param_str,"left=")!=null) ? "left" : "right"
	}
	if (a=="2")
		number_of_panes = 2;
	if ((a=="left") || (a=="right")){
		number_of_panes=1;
		active_pane=a
	}			
	left_map_code="0020090";
	right_map_code="0020090";
	a=parser(param_str, "left=");
	if (a!=null)
		left_map_code=a;
	else{
		former_mcode=getCookie("left_map_code");
	//	GLog.write("mapster received cookie with former_mcode="+former_mcode)
		if (former_mcode!=null){
			left_map_code=former_mcode
		}	
	}	
	a=parser(param_str, "right=");
	if (a!=null)
		right_map_code=a;
	else{
		former_mcode=getCookie("right_map_code");
	//	GLog.write("mapster received cookie with former_mcode="+former_mcode)
		if (former_mcode!=null){
			right_map_code=former_mcode
		}	
	}
	var lat = Gcenter.lat();
	var lng = Gcenter.lng();
	if (left_map_code=="0519661" || right_map_code=="0519661"){		 	
		lat=55.848337;
		lng=37.384414;
	}
	try{
		if (map_list[left_map_code].coord!=null) // center point of gallery maps
			a=map_list[left_map_code].coord
		else 	if (map_list[right_map_code].coord!=null)
					a=map_list[right_map_code].coord
				else	
					a=parser(param_str, "coord=");
		if (a!=null){
			lat=parseFloat(a.split(",")[0]);
			lng=parseFloat(a.split(",")[1]);
		}
	}catch(e){}
	a=parser(param_str, "lat=");
	if (a!=null)
		if ((parseFloat(a)>-90) && (parseFloat(a)<90))
			lat=parseFloat(a);
	a=parser(param_str, "lng=");
	if (a!=null)
		if ((parseFloat(a)>-180) && (parseFloat(a)<180))
			lng=parseFloat(a);
	Gcenter=new GLatLng(lat, lng);
//	update_control_bar();
	//GLog.write("panes="+number_of_panes+" left="+left_map_code+" right="+right_map_code+" zoom="+Gzoom+" lat="+lat+" lng="+lng);
//	Gzoom=13;
	Gzoom=find_zoom(Gcenter);
	if (number_of_panes == 2)
		Gzoom = Math.min(Gzoom, map_list[left_map_code].zoom,map_list[right_map_code].zoom) // to avoid superzooming at loading
	else
		Gzoom = Math.min(Gzoom, map_list[eval(active_pane + "_map_code")].zoom)
	a=parser(param_str, "zoom=");
	if (a!=null)
		if ((parseInt(a)>0) && (parseInt(a)<24))
			Gzoom = parseInt(a);
	//try{Gzoom = Math.min(Gzoom, map_list[left_map_code].zoom,map_list[right_map_code].zoom)}catch(err){} // to avoid superzooming at loading
//	GLog.write("Gzoom="+Gzoom)
	demo=false;
	a=parser(param_str, "demo=");
	if (a!=null)
		if (parseInt(a)>0)
			demo=true;	
	header_bottom=40;
	a=parser(param_str, "header=");
	if (a!=null)
		if (parseInt(a)==0){
			title_height=header_bottom=0;
			get("left_subtitle").style.visibility='hidden';
			get("right_subtitle").style.visibility='hidden';
		}
	a=parser(param_str, "adr=");
	if (a!=null){
		var b=decodeURI(a);
		start_adr=b;	
	}
	for (var name in overlays){
		overlays[name].left=parser(param_str, "left"+name+"=");
		overlays[name].right=parser(param_str, "right"+name+"=");
	}
	left_pid=parser(param_str, "leftpid=");
	right_pid=parser(param_str, "rightpid=");	
	drag=parser(param_str, "drag=");
	debug=parser(param_str, "debug=");
}

var debug;

function rotate(){ // 1 - clock, 0 - counterclock
	function set_id(img){
		$(img).addClass('rotate')
	}
//	$("img").each(function(){
//		if (this.src.indexOf("hutun.ru") > 0)					   
//			set_id(this)});
	$("#right_map_pane").addClass('rotate')
	GLog.write("roateted")
}

function debugger3(){
	GLog.write("debugger")
	GEvent.addListener(right_map, 'tilesloaded',function(){rotate()});
}

function main(){
	load_parameters();
//	alert("before url="+ current_url())
//	var url = current_url().replace("?","#");
//	window.location.replace(url);
	var active=active_pane;
	set_header("mapster");
	windows_sizing();
	check_map_codes();
	load_map("left",left_map_code);
	load_map("right",right_map_code);
	set_active_pane(active); // which is set in parameters
	redraw_maps();
	if (demo) demo_show()
	if (header_bottom==0) hide_header();
	if (start_adr!=null) showLocation(0)
	if (left_pid) start_album("left","9999")
	if (right_pid) start_album("right","9999")
	manage_drag("right",drag);
	update_control_bar();
//	wlog("active="+active+" active_pane="+active_pane)
	if (debug){
		debugger3();
	}
} 
