var search__gMapLoaded = false;
//Height of the flash map. 
var flashMapHeight = '580px';
//Bxl config
var center_bxl;
var zoom_bxl;
//Namur config
var center_namur;
var zoom_namur;
var namurZip;
//Bxl + Namur config
var center_bxl_namur;
var zoom_bxl_namur;

var search__type_mandat = '';

var showFlash = false;
function toggleMaps(){
	//alert(search__type_mandat);
	if(showFlash){
		if(window.ie){
			$('mapFLASH').setStyle('display', 'block');
			$('mapGMP').setStyle('display', 'none');
		}
		else{
			$('flashMap').height = flashMapHeight;
			$('mapGMP').setStyle('height', '0px');
		}
        $('toggleMapsLink').innerHTML = ch_map_label_1;
	}
	else{
		if(window.ie){
			$('mapFLASH').setStyle('display', 'none');
			$('mapGMP').setStyle('display', 'block');
		}
		else{
			$('flashMap').height = '0';
			$('mapGMP').setStyle('height', flashMapHeight);
		}
        $('toggleMapsLink').innerHTML = ch_map_label_2;
		
		if(!search__gMapLoaded){
			search__gMapLoaded = true;
			var url = $('mapGMP').getProperty('url');
			var myAjax = new Ajax(url, {method: "get",data: 'isAjax=1',update: $('mapGMP'),onComplete: search__gMapDetails_onComplete,evalScripts: true});
			myAjax.request();
		}
		else
		{
			search__loadAllPoints();
		}			
	}
	showFlash = !showFlash;
}

function search__gMapDetails_onComplete() {
	//we redefine js functions of the pi4 plugin to do wat we want
	scriptLoaded   = search__scriptLoaded;
	loadAllPoints  = search__loadAllPoints;
	parseAllPoints = search__parseAllPoints;
	addPoints      = search__addPoints;
	addToSideBar   = search__addToSideBar;
	//init of google map
	dse_gmap_onload();
	//hiding search input
	$("gmapSearch-form").setStyle("display","none");
	//showing scroll with thumbnails
	$("gmapSearch-sideBar").setStyle("display","block");
	//search__initVars.delay(15000);
	//search__loadAllPoints.delay(16000);
}

//init of vars for recalibtaion of the map. Must be executed *after* google maps API is loaded
function search__initVars(){
	center_bxl = new GLatLng(50.85277512096733,4.3677520751953125);
	zoom_bxl = 11;
	center_namur = new GLatLng(50.467338942707045,4.87518310546875);
	zoom_namur = 12;
	namurZip = '5000';
	center_bxl_namur = new GLatLng(50.647718944182934,4.6966552734375);
	zoom_bxl_namur = 9;
}

/////////////  google maps plugin functions redefined ////////////////

function search__scriptLoaded(){
	loaded_script++;
	if(loaded_script==2){
		loadMap();
		//these functions must be here for synchronization issues
		search__initVars.delay(1000);
		search__loadAllPoints.delay(1250);
	}
}

function search__loadAllPoints(){
	var center;
	var zoom;
	//clear previous points
	map.clearOverlays();
	_allGMarkers = [];
	//remove all old thumbnails in sidebar below the gmap using specific DOM tables methods so all browsers (including ie) will do it right
	var sidebar =  $('gmapSearch-sideBar_in');
	while(sidebar.cells.length > 0){
		sidebar.deleteCell(0);
	}
	
	//loading new points
	showLoader("Initializing Search: querying points");
	var currentZipsArr = $('DS-autocomplete-field-zip-hidden').value.split(';,;');
	var currentZips;
	if(currentZipsArr.length == 1){
		//Namur only
		if(currentZipsArr[0] == namurZip){
			center = center_namur;
			zoom = zoom_namur;
		}
		//Bxl only
		else{
			center = center_bxl;
			zoom = zoom_bxl;
		}
		currentZips = currentZipsArr.join(',');
	}
	else{
		currentZips = currentZipsArr.join(',');
		//Bxl + Namur
		if(currentZips.indexOf(namurZip) != -1){
			center = center_bxl_namur;
			zoom = zoom_bxl_namur;
		}
		//Bxl only
		else{
			center = center_bxl;
			zoom = zoom_bxl;
		}
	}
	//reset center
	map.setCenter(center);
	//reset zoom
	map.setZoom(zoom);
	//we load custom points if any
	if(window.loadCustomPoints)
		loadCustomPoints();
	var allPointsAjax = new Ajax("/typo3conf/ext/ds_estate/res/ajax/gmap_getAllPoints.php",{method:"post",onComplete:search__parseAllPoints,data:{zip_codes:currentZips,type_mandat:search__type_mandat,lid:"1",site_code:"immolp"}}).request();
}

function search__parseAllPoints(responseText){
	changeLoaderText("Initializing Search: adding points");
	var xml = GXml.parse(responseText);
	_allMarkers = xml.documentElement.getElementsByTagName("point");
	
	_addingPointsCount = 0;
	_addingPointsInterval = setInterval("search__addPoints()",300);
	search__addPoints();
}
		
function search__addPoints(){

	for(var i=0;i<20;i++){
		if(_allMarkers[_addingPointsCount]==undefined) break;
		
		//vars
		var typeMandat = _allMarkers[_addingPointsCount].getAttribute("typeMandat").toInt();
		var lat = parseFloat(_allMarkers[_addingPointsCount].getAttribute("lat"));
		var lng = parseFloat(_allMarkers[_addingPointsCount].getAttribute("lng"));
		var uid = _allMarkers[_addingPointsCount].getAttribute("uid").toInt();
		var position = _allMarkers[_addingPointsCount].getAttribute("position");
		var type_id = _allMarkers[_addingPointsCount].getAttribute("type");
		var imgSrc = _allMarkers[_addingPointsCount].getAttribute("imgSrc");
		
		//Custom icon vars
		var imgPt = "fileadmin/templates/immolp/system/images/icongmap.png";
		var imgPt_w = 53;
		var imgPt_h = 60;
		var imgShadow = "fileadmin/templates/immolp/system/images/icongmap__s.png";
		var imgShadow_w = 53;
		var imgShadow_h = 60;
		var imgAnchor = [11, 50];
		
		//Custom icon
		var customIcon = new GIcon();
		var markerOptions;
		if(!navigator.appVersion.test("MSIE 6.0")){
			customIcon.image = imgPt;
			customIcon.iconSize = new GSize(imgPt_w ,imgPt_h);
			customIcon.shadow = imgShadow;
			customIcon.shadowSize = new GSize(imgShadow_w ,imgShadow_h);
			customIcon.iconAnchor = new GPoint(imgAnchor[0],imgAnchor[1]);
			customIcon.infoWindowAnchor = new GPoint(imgAnchor[0],imgAnchor[1]);
			markerOptions = { icon:customIcon };
		}
		else{
			markerOptions = {};
		} 
		
		//point
		var point = new GLatLng(lat, lng);
		
		//GMarker
		var marker = new GMarker(point, markerOptions);
		marker.infowindow = "ajaxLoad:"+uid;
		marker.positionFrom = position;
		marker.object_id = uid;
		marker.typeMandat = typeMandat;
		
		_allGMarkers.push(marker);
		
		//add to map
		map.addOverlay(marker);
		
		//add to sideBar
		search__addToSideBar(uid,imgSrc,[_allMarkers[_addingPointsCount].getAttribute("imgWidth"),_allMarkers[_addingPointsCount].getAttribute("imgHeight")],marker);
		
		_addingPointsCount++;
		
	}
	changeLoaderText("Loading points ("+_addingPointsCount+"/"+_allMarkers.length+")");
	
	if(_addingPointsCount>=_allMarkers.length){
		clearInterval(_addingPointsInterval);
		hideLoader();
		//enableSearchForm();
	}
}

function search__addToSideBar(object_id,imgSrc,imgSize,marker){
	var sideBar = $("gmapSearch-sideBar_in");
	var container = new Element("td",{uid:object_id,"valign":"top"});
	var image = new Element("img",{src:"/fileadmin/templates/immolp/photo/"+imgSrc,width:imgSize[0],height:imgSize[1]});
	container.adopt(image);
	container.injectInside(sideBar);
	
	container.addEvent("click",function(){
		loadAndOpenInfoWindow(marker);
	});
	
	marker.sideBarObject = container;
}
/*
function getCoords(){
	var center = __map.getCenter();
	alert('(' + center.lat() +','+ center.lng() + ') [---> '+ __map.getZoom() +' <---]');
}
*/