//Javascript File panos.js

var last_id= 0;
var now_fly= false;
var now_fly_id= 0;
var time_me= false;

function more_panos( sec_name, sec_pos ) {
	
	var params= "type=more_pano&action=request&me="+me;
	if ( typeof( sec_name ) != "undefined" && sec_name != "" && typeof( sec_pos ) != "undefined" && sec_pos ) {
		params+= "&FIELD_TO_SORT="+FIELD_TO_SORT[ sec_pos ]+ "&SORT_ORIENTIR="+SORT_ORIENTIR[ sec_pos ]+ "&CNT_TO_SHOW="+CNT_TO_SHOW[ sec_pos ]+"&last_id="+last_id[ sec_pos ]+"&sec_name="+hex_escape(sec_name)+"&sec_pos="+sec_pos;
	} else {
		params+= "&FIELD_TO_SORT="+FIELD_TO_SORT+ "&SORT_ORIENTIR="+SORT_ORIENTIR+ "&CNT_TO_SHOW="+CNT_TO_SHOW+"&last_id="+last_id;
		if ( typeof( section_name ) != "undefined" && section_name != "" ) params+= "&sec_name="+hex_escape( section_name );
	}
	//alert( params );
	
	elementHTTP= new ajaxRequester( more_getted );
	if (  !elementHTTP.ajaxInit( translatorUrl+"need_more_pano.php" )  ) return;
	elementHTTP.ajaxHttp.onreadystatechange= function () { elementHTTP.unpackRequest(); }
	elementHTTP.sendParams( params );
}

function more_getted( obj ) {
	//alert( obj.responseParts );
	if ( obj.responseParts[0] ) {
		if ( obj.responseParts[ 3 ] ) { var pl_obj= document.getElementById( "pano_list_"+obj.responseParts[ 3 ] ); if ( !pl_obj ) return;
		} else { var pl_obj= document.getElementById( "pano_list" ); if ( !pl_obj ) return; }
		
		var div = document.createElement("DIV");
		div.innerHTML= obj.responseParts[0];
		pl_obj.appendChild(div);
	} //end if 
	
	if ( obj.responseParts[1] ) {
		if ( obj.responseParts[ 3 ] ) last_id[ obj.responseParts[ 3 ] ]= obj.responseParts[1];
		 else last_id= obj.responseParts[1];
	}
	if ( obj.responseParts[ 2 ] ) {
		if ( obj.responseParts[ 3 ] ) { var moreObj= document.getElementById( "more_ctrl_"+obj.responseParts[ 3 ] ); if ( !moreObj ) return;
		} else { var moreObj= document.getElementById( "more_ctrl" ); if ( !moreObj ) return; }
		
		moreObj.innerHTML= "";
	}
	
	more_panos_shift();
}

function changeList( list_way ) {
	var bar_img_obj= document.getElementById( "pl_bar" ); if ( !bar_img_obj ) return;
	var list_img_obj= document.getElementById( "pl_list" ); if ( !list_img_obj ) return;
	//alert( "in" );
	if ( list_way == "list" ) {
		bar_img_obj.className= "bar_passive";
		bar_img_obj.style.cursor= "pointer";
		bar_img_obj.onclick= function () { changeList( "bar" );  }
		
		list_img_obj.className= "line_active";
		list_img_obj.style.cursor= "default";
		list_img_obj.onclick= function () {  }
	} else {
		bar_img_obj.className= "bar_active";
		bar_img_obj.style.cursor= "default";
		bar_img_obj.onclick= function () { }
		
		list_img_obj.className= "line_passive";
		list_img_obj.style.cursor= "pointer";
		list_img_obj.onclick= function () { changeList( "list" );  }
	}
	
	createCookie( "pano_list_mode", list_way, 3560 );
	document.location= document.location;
}

function changeType( list_way ) {
	createCookie( "pano_list_type", list_way, 3560 );
	document.location= document.location;
}

function pl_fly_status ( div_id, way ) {
	
	clearTimeout( time_me );
	
	if ( way ) {
		var fly_obj= document.getElementById( "top_wide_"+div_id ); if ( !fly_obj ) return;
	
		if ( now_fly_id != div_id ) {
			fly_obj.style.display= "block";
			//Если сейчас показывается не эта всплывалка, другую нужно закрыть
			//pl_fly_status ( now_fly_id, 0 );
			if ( now_fly ) now_fly.style.display= "none";
			now_fly_id= div_id;
			now_fly= fly_obj;
		} 
	} else {
		if ( now_fly ) now_fly.style.display= "none";
		now_fly_id= 0;
		now_fly= false;
	}
}

function pl_shedule_close() {
	time_me= setTimeout( "pl_fly_status( now_fly_id, 0 )", 1000 );
}


var pointLT= false;
var pointRB= false;
var mapBounds= false;
var marks_in_action= new Array();
var awaiters= 0;

function looking_for_markers ( lt_LAT, lt_LON, rb_LAT, rb_LON ) {
	if ( typeof( pano_looking_for_another ) == "undefined" || !pano_looking_for_another ) return;
	/*alert( lt_LAT );
	alert( lt_LON );
	alert( rb_LAT );
	alert( rb_LON );*/
	if ( !lt_LAT || !lt_LON || !rb_LAT || !rb_LON ) return;
	
	var params= "type=looking_markers&action=request&lt_LAT="+lt_LAT+"&lt_LON="+lt_LON+"&rb_LAT="+rb_LAT+"&rb_LON="+rb_LON;
	
	jsAjaxUtil.ShowLocalWaitWindow( "overmap", "YMapsID", false );
	awaiters++;
	
	elementHTTP= new ajaxRequester( marks_getted );
	if (  !elementHTTP.ajaxInit( translatorUrl+"looking_for_markers.php" )  ) return;
	elementHTTP.ajaxHttp.onreadystatechange= function () { elementHTTP.unpackRequest(); }
	elementHTTP.sendParams( params );
}
	
function marks_getted( obj ) {
	//первыми идут строки, вида: *--*pano_id_||_LAT_||_LON_||_NAME*--*
	var list= obj.responseParts[0].split( "*--*" );
	var list_of_markers= new Array();
	for ( var i= 0; i< list.length; i++ ) {
		var l_parts= list[i].split( "_||_" );
		if ( typeof(marker_except) != "undefined" && marker_except && l_parts[0] == marker_except ) continue;
		//Накапливаем массив меток. Добавляем те, которых в массиве ещё нет
		if ( !marks_in_action[ l_parts[0] ] || typeof( marks_in_action[ l_parts[0] ] ) == "undefined" ) {
			marks_in_action[ l_parts[0] ]= { "LAT" : l_parts[1], "LON" : l_parts[2], "NAME" : l_parts[3], "SHOW" : false };
		}
		list_of_markers[ list_of_markers.length ]= l_parts[0];
	}
	refreshMarkers( list_of_markers );
}

function in_array (needle, haystack) {
    var key = '';
    for (key in haystack) {
        if (haystack[key] == needle) return true; 
    }
    return false;
}

function refreshMarkers( list_of_markers ) {
	//Нужные активировать, ненужные удалить (скрыть)
	//Проходим по массиву накопленных меток и смотрим, есть ли они в области видимости.
	for ( var mk in marks_in_action ) {
		if ( !mk ) continue;
		if ( in_array( mk, list_of_markers ) ) {
			//Эта метка должна быть видима
			if ( marks_in_action[ mk ].SHOW == false ) {
				//Нужно на карту добавить метку
				point = new YMaps.GeoPoint( marks_in_action[ mk ].LON, marks_in_action[ mk ].LAT );
				marks_in_action[ mk ][ "PLACEMARK" ]= new YMaps.Placemark( point, { style:"default#orangePoint" } );
				marks_in_action[ mk ][ "PLACEMARK" ].setIconContent( "" );
				marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ]= "<div onclick= 'fla_run ( \"http://pano.volne.ru/panoramas/general_pano/?xml="+mk+"\" )' style= 'width: 150; height: 15px; cursor: pointer; background-image: url(http://pano.volne.ru/panoramas/"+mk+"/source_pano/preview.jpg); background-position: center center; background-repeat: no-repeat; padding: 27px 0; text-align: center;'><img src= 'http://images.volne.ru/fla_play.gif' alt= 'Смотреть панораму' title= 'Смотреть панораму' /></div><div style= 'padding-top: 3px;'><a href= 'http://pano.volne.ru/"+mk+"/' style= 'font-size: 13px; font-family: Arial; font-style: oblique;'>"+marks_in_action[ mk ].NAME+"</a></div>";
				map.addOverlay( marks_in_action[ mk ][ "PLACEMARK" ] );
				
				YMaps.Events.observe( marks_in_action[ mk ][ "PLACEMARK" ], marks_in_action[ mk ][ "PLACEMARK" ].Events.Click, function ( pm, mEvent ) {
					pm.setBalloonOptions( {hasCloseButton:true, maxWidth:300, maxHeight:200 } );
					pm.setBalloonContent( pm[ "BALLOON_HTML" ] );
				});
				
				marks_in_action[ mk ].SHOW=true;
				//alert( "На карту добавить метку "+mk );
			}
		} else {
			//Эта метка не должна быть видима
			if ( marks_in_action[ mk ].SHOW == true ) {
				//Нужно на карту добавить метку
				//alert( "Убрать с карты метку "+mk );
				map.removeOverlay(marks_in_action[ mk ][ "PLACEMARK" ]);
				marks_in_action[ mk ].SHOW=false;
			}
		}
	} // end for
	if ( awaiters > 0 ) {
		for ( var i= 0; i < awaiters; i++ ) {
			jsAjaxUtil.CloseLocalWaitWindow( "overmap", "YMapsID" );
		}
		awaiters= 0;
	} else if ( awaiters < 0 ) awaiters= 0;
}

function more_sametags( current_id, last_id, cnt_to_get ) {
	if ( !current_id || !last_id ) return;
	var params= "type=more_sametags&action=request&current_id="+current_id+"&last_id="+last_id+"&cnt_to_get="+cnt_to_get;
	elementHTTP= new ajaxRequester( more_sametags_getted );
	if (  !elementHTTP.ajaxInit( translatorUrl+"need_more_sametags.php" )  ) return;
	elementHTTP.ajaxHttp.onreadystatechange= function () { elementHTTP.unpackRequest(); }
	elementHTTP.sendParams( params );
}

function more_sametags_getted ( obj ) {
	sametags_last_id= obj.responseParts[1];
	//Последний ID есть
	if ( obj.responseParts[0]  ) {
		//Есть что залить
		var pl_obj= document.getElementById( "sametags_list" ); if ( !pl_obj ) return;
		var div = document.createElement("DIV");
		div.innerHTML= obj.responseParts[0];
		pl_obj.appendChild(div);
	} //end if 
	
	if ( sametags_last_id == "0" ) {
		var moreObj= document.getElementById( "more_ctrl" ); if ( !moreObj ) return;
		moreObj.innerHTML= "";
	}
}

var action_marker_image= {
"r" : "http://images.volne.ru/map_marker_rent.gif", 
"s" : "http://images.volne.ru/map_marker_sale.gif"
};


function looking_for_rieltors_objects ( lt_LAT, lt_LON, rb_LAT, rb_LON ) {
		if ( typeof( rielt_o_looking_for_another ) == "undefined" || !rielt_o_looking_for_another ) return;
		/*alert( lt_LAT );
		alert( lt_LON );
		alert( rb_LAT );
		alert( rb_LON );*/
		if ( !lt_LAT || !lt_LON || !rb_LAT || !rb_LON ) return;
		
		var params= "type=looking_markers&action=request&lt_LAT="+lt_LAT+"&lt_LON="+lt_LON+"&rb_LAT="+rb_LAT+"&rb_LON="+rb_LON;
		
		if ( typeof( map_types_complect ) != "undefined" && map_types_complect.length ) {
			//Указываем скрипту, какие типы недвижимости не нужно отбирать
			params+= "&except_types="+map_types_complect.join( "-|-" );
		}
		
		if ( typeof( map_actions_complect ) != "undefined" && map_actions_complect.length ) {
			//Указываем скрипту, какие типы недвижимости не нужно отбирать
			params+= "&except_actions="+map_actions_complect.join( "-|-" );
		}
		
		jsAjaxUtil.ShowLocalWaitWindow( "overmap", "YMapsID", false );
		awaiters++;
		
		lfr_elementHTTP= new ajaxRequester( more_rielt_objects_getted );
		if (  !lfr_elementHTTP.ajaxInit( translatorUrl+"looking_for_rielt_objects_smart_view.php" )  ) return;
		lfr_elementHTTP.ajaxHttp.onreadystatechange= function () { lfr_elementHTTP.unpackRequest(); }
		lfr_elementHTTP.sendParams( params );
	}
	
	function more_rielt_objects_getted( obj ) {

		//alert( obj.responseParts );
		//return;
		/*первыми идут строки, вида: 
			$pano_id 0
			$[ "LAT" ] 1
			$[ "LON" ] 2
			SECTION_ID 3
			ACTION_MARKER 4
		*/
		var list= obj.responseParts[0].split( "*--*" );
		var list_of_markers= new Array();
		for ( var i= 0; i< list.length; i++ ) {
			var l_parts= list[i].split( "_||_" );
			
			if ( typeof(marker_except) != "undefined" && marker_except && l_parts[0] == marker_except ) continue;
			//Накапливаем массив меток. Добавляем те, которых в массиве ещё нет
			if ( typeof( marks_in_action[ l_parts[0] ] ) == "undefined" || !marks_in_action[ l_parts[0] ] ) {
				//alert( "work with array: "+l_parts.join( "\n\n" ) );
				marks_in_action[ l_parts[0] ]= { "LAT" : l_parts[1], "LON" : l_parts[2], "SECTION_ID" : l_parts[3], "ACTION_MARKER" : l_parts[4], "SHOW" : false };
			}
			list_of_markers[ list_of_markers.length ]= l_parts[0];
		}
		refreshRieltorsMarkers( list_of_markers );
	}
	
	function refreshRieltorsMarkers( list_of_markers ) {
		//Нужные активировать, ненужные удалить (скрыть)
		//Проходим по массиву накопленных меток и смотрим, есть ли они в области видимости.
		for ( var mk in marks_in_action ) {
			if ( !mk ) continue;
			if ( in_array( mk, list_of_markers ) ) {
				//Эта метка должна быть видима
				if ( marks_in_action[ mk ].SHOW == false ) {
					//Нужно на карту добавить метку
					point = new YMaps.GeoPoint( marks_in_action[ mk ].LON, marks_in_action[ mk ].LAT );
					var style_color_theme= ( sections_colors[ marks_in_action[ mk ][ "SECTION_ID" ] ] ) ? "default#"+sections_colors[ marks_in_action[ mk ][ "SECTION_ID" ] ]+"Point" : "default#yellowPoint";
					marks_in_action[ mk ][ "PLACEMARK" ]= new YMaps.Placemark( point, { style: style_color_theme } );
					var markerDesc=  ( action_marker_image[ marks_in_action[ mk ][ "ACTION_MARKER" ] ] ) ? "<div style= 'text-align: center;'><img width= '10' height= '10' src= '"+action_marker_image[ marks_in_action[ mk ][ "ACTION_MARKER" ] ]+"' /></div>" : "";
					marks_in_action[ mk ][ "PLACEMARK" ].setIconContent( markerDesc );
					
					//Забиваем пустышкой
					if ( typeof( marks_in_action[ mk ][ "BALLOON_HTML" ] ) == "undefined" || !marks_in_action[ mk ][ "BALLOON_HTML" ] ) {
						marks_in_action[ mk ][ "BALLOON_HTML" ]= "";
						marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ]= "";
					} else {
						marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ]= marks_in_action[ mk ][ "BALLOON_HTML" ];
					}
					marks_in_action[ mk ][ "PLACEMARK" ][ "POS" ]= mk;
					marks_in_action[ mk ][ "PLACEMARK" ].setBalloonOptions( {hasCloseButton:true, maxWidth:300, maxHeight:200 } );
					/*
					marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ]= '<div style= "font-family: Tahoma; font-size: 10px; font-weight: bold; text-align: center;">'+marks_in_action[ mk ][ "SECTION_NAME" ]+'</div><div style= "font-size: 14px; font-family: Arial; font-style: oblique; text-align: center; padding: 5px 0;">'+marks_in_action[ mk ][ "PRICE" ]+'</div>';
					if ( marks_in_action[ mk ][ "THUMB" ] ) marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ]+= '<div style= "text-align: center;"><a href= "'+marks_in_action[ mk ][ "URL" ]+'"><img src= "'+marks_in_action[ mk ][ "THUMB" ]+'" alt= "" /></a></div>';
					marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ]+= '<div style= "text-align: center;"><a href= "'+marks_in_action[ mk ][ "URL" ]+'">'+marks_in_action[ mk ][ "NAME" ]+'</a></div>';
					*/
					
					map.addOverlay( marks_in_action[ mk ][ "PLACEMARK" ] );
					
					YMaps.Events.observe( marks_in_action[ mk ][ "PLACEMARK" ], marks_in_action[ mk ][ "PLACEMARK" ].Events.Click, function ( pm, mEvent ) {
						if ( !pm[ "BALLOON_HTML" ] ) {
							pm.setBalloonContent( "..." );
							rielt_object_wide_info( pm[ "POS" ] );
							//alert( "Load for me ID info: "+pm[ "POS" ] );
						} else { 
							pm.setBalloonContent( pm[ "BALLOON_HTML" ] );
						}
					});
					
					marks_in_action[ mk ].SHOW=true;
					//alert( "На карту добавить метку "+mk );
				}
			} else {
				//Эта метка не должна быть видима
				if ( marks_in_action[ mk ].SHOW == true ) {
					//Нужно на карту добавить метку
					//alert( "Убрать с карты метку "+mk );
					map.removeOverlay(marks_in_action[ mk ][ "PLACEMARK" ]);
					marks_in_action[ mk ].SHOW=false;
				}
			}
		} // end for
		if ( awaiters > 0 ) {
			for ( var i= 0; i < awaiters; i++ ) {
				jsAjaxUtil.CloseLocalWaitWindow( "overmap", "YMapsID" );
			}
			awaiters= 0;
		} else if ( awaiters < 0 ) awaiters= 0;
	}
	
	function rielt_object_wide_info( obj_id ) {
		/*alert( lt_LAT );
		alert( lt_LON );
		alert( rb_LAT );
		alert( rb_LON );*/
		var params= "el_id="+obj_id;
		
		jsAjaxUtil.ShowLocalWaitWindow( "overmap", "YMapsID", false );
		awaiters++;
		
		elementHTTP= new ajaxRequester( rielt_object_wideinfo_getted );
		if (  !elementHTTP.ajaxInit( translatorUrl+"rielt_object_wide_info.php" )  ) return;
		elementHTTP.ajaxHttp.onreadystatechange= function () { elementHTTP.unpackRequest(); }
		elementHTTP.sendParams( params );
	}
	
	function rielt_object_wideinfo_getted ( obj ) {
		//alert( obj.responseParts );
		
		var l_parts= obj.responseParts[0].split( "_||_" );
		
		//Накапливаем массив меток. Добавляем те, которых в массиве ещё нет
		//alert( "work with array: "+l_parts.join( "\n\n" ) );
		
		var mk= l_parts[0];
		marks_in_action[ mk ][ "NAME" ]= l_parts[1];
		marks_in_action[ mk ][ "URL" ]= "http://"+l_parts[2];
		marks_in_action[ mk ][ "SECTION_NAME" ]= l_parts[3];
		marks_in_action[ mk ][ "THUMB" ]= l_parts[4];
		marks_in_action[ mk ][ "PRICE" ]= l_parts[5];
		
		//Теперь создаём HTML-код для балуна
		var action_suffix= ( marks_in_action[ mk ][ "ACTION_MARKER" ] == "r" ) ? "/месяц" : "";
		marks_in_action[ mk ][ "BALLOON_HTML" ]= '<div style= "font-family: Tahoma; font-size: 10px; font-weight: bold; text-align: center;">'+marks_in_action[ mk ][ "SECTION_NAME" ]+'</div><div style= "font-size: 14px; font-family: Arial; font-style: oblique; text-align: center; padding: 5px 0;">'+marks_in_action[ mk ][ "PRICE" ]+action_suffix+'</div>';
		if ( marks_in_action[ mk ][ "THUMB" ] ) marks_in_action[ mk ][ "BALLOON_HTML" ]+= '<div style= "text-align: center;"><a href= "'+marks_in_action[ mk ][ "URL" ]+'"><img src= "'+marks_in_action[ mk ][ "THUMB" ]+'" alt= "" /></a></div>';
		marks_in_action[ mk ][ "BALLOON_HTML" ]+= '<div style= "text-align: center;"><a href= "'+marks_in_action[ mk ][ "URL" ]+'">'+marks_in_action[ mk ][ "NAME" ]+'</a></div>';

		marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ]= marks_in_action[ mk ][ "BALLOON_HTML" ];
		marks_in_action[ mk ][ "PLACEMARK" ].setBalloonContent( marks_in_action[ mk ][ "PLACEMARK" ][ "BALLOON_HTML" ] );
		
		if ( awaiters > 0 ) {
			for ( var i= 0; i < awaiters; i++ ) {
				jsAjaxUtil.CloseLocalWaitWindow( "overmap", "YMapsID" );
			}
			awaiters= 0;
		} else if ( awaiters < 0 ) awaiters= 0;
	}
	
function mm_wide_info_switch() {
	var mm_obj= document.getElementById( "map_markers_wideinfo" ); if ( !mm_obj ) return;
	mm_obj.style.display= ( mm_obj.style.display == "none" ) ? "block" : "none";
}

function refresh_complect() {
	map_types_complect= []; //Очищаем массив
	
	var wi_obj= document.getElementById( "map_markers_wideinfo" ); if ( !wi_obj ) return;
	var candidates= wi_obj.getElementsByTagName( "input" );
	for ( var c in candidates ) {
		if ( typeof( candidates[c] ) == "undefined" || !candidates[c] ) continue;
		if ( typeof( candidates[c].id ) == "undefined" || !candidates[c].id ) continue;
		if ( candidates[c].id.indexOf( "legend" ) == -1 ) continue;
		if ( candidates[c].checked ) continue; // Нам нужны только неотмеченные метки
		var parts= candidates[c].id.split( "_" );
		map_types_complect[ map_types_complect.length ]= parts[1];
	} //end for
	
	looking_for_rieltors_objects( pointLT.__lat, pointLT.__lng, pointRB.__lat, pointRB.__lng );
}

function refresh_actions() {
	map_actions_complect= []; //Очищаем массив
	
	var wi_obj= document.getElementById( "map_markers_wideinfo" ); if ( !wi_obj ) return;
	var candidates= wi_obj.getElementsByTagName( "input" );
	for ( var c in candidates ) {
		if ( typeof( candidates[c] ) == "undefined" || !candidates[c] ) continue;
		if ( typeof( candidates[c].id ) == "undefined" || !candidates[c].id ) continue;
		if ( candidates[c].id.indexOf( "action" ) == -1 ) continue;
		if ( candidates[c].checked ) continue; // Нам нужны только неотмеченные метки
		var parts= candidates[c].id.split( "_" );
		map_actions_complect[ map_actions_complect.length ]= parts[1];
	} //end for
	
	looking_for_rieltors_objects( pointLT.__lat, pointLT.__lng, pointRB.__lat, pointRB.__lng );
}