function getHTTPObject(){if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");else if (window.XMLHttpRequest) return new XMLHttpRequest();else {alert("Your browser does not support AJAX.");return null;}}	

var map = null;
var httpObject = null;	
var marker = new Array();
var default_map = "objects";
var default_query = null;
var default_list = "objects";
var object = null;
var agent = null;
var lock = false;
var mapmoved = false;
var nav0 = null;
var nav1 = null;
var nav2 = null;
var marker_temp = new Array();
var page_temp = null;
var scroll_position = 0;

function ajax(file,queryAdd){
	httpObject = getHTTPObject();	
	if (httpObject != null) {
		switch(file){
			case 'objects':
				query = "ajax/marker_data.php?";					
				for (var i = 0; i < document.sortObj.elements.length; i++) {
					if(document.sortObj.elements[i].type=='checkbox'){
						if(document.sortObj.elements[i].checked){val = 'on';}else{val = '';}			
					}else{
						val = document.sortObj.elements[i].value;
					}				
					query += ""+document.sortObj.elements[i].id+"="+val+"&";
				}
				//if(document.getElementById('description').value!==''){
				//		query += "&description="+document.getElementById('description').value;
				//}				
				if(queryAdd){
					query += queryAdd;
				}		
				default_map = "objects";
				default_list = "objects";
				
			break;
			case 'sortFields':
				document.getElementById('page').value = 1;
				query = "ajax/sort_fields.php?property_ID="+queryAdd+"&region_ID="+document.getElementById('region_ID').value+"&regionSub="+document.getElementById('regionSub').value+"&address="+document.getElementById('address').value+"&type_ID="+document.getElementById('type_ID').value+"&deal_ID="+document.getElementById('deal_ID').value
			break;
			case 'region':
				document.getElementById('page').value = 1;				
				query = "ajax/region_option.php?regionSub="+queryAdd+"&region_ID="+document.getElementById('region_ID').value
			break;
			case 'description':
				//document.getElementById('page').value = 1;		
				query = "ajax/marker_data.php?SWlat="+document.getElementById('SWlat').value+"&NElat="+document.getElementById('NElat').value+"&SWlng="+document.getElementById('SWlng').value+"&NElng="+document.getElementById('NElng').value+"&description="+document.getElementById('description').value+"&priceMin="+document.getElementById('priceMin').value+"&priceMax="+document.getElementById('priceMax').value+"&currency="+document.getElementById('currency').value+"&orderby="+document.getElementById('orderby').value+"&page="+document.getElementById('page').value+"&"+queryAdd;
				default_map = "description";
				default_list = "description";
				
			break;			
			case 'image':
				query = "ajax/image_gallery.php?"+queryAdd;
			break;
			case 'one':	
				if(document.getElementById('description').value!==''){hlw = "&hlw="+document.getElementById('description').value;}else{hlw = '';}
				if(document.getElementById('currency').value!==''){currency = "&currency="+document.getElementById('currency').value;}else{currency = '';}
				query = "ajax/object_one.php?ID="+queryAdd+hlw+currency;
				//alert(query);
				
			break;
			case 'agents':		
				query = "ajax/marker_data.php?SWlat="+document.getElementById('SWlat').value+"&NElat="+document.getElementById('NElat').value+"&SWlng="+document.getElementById('SWlng').value+"&NElng="+document.getElementById('NElng').value+"&"+queryAdd;
				//alert(query);
				mapmoved = true;
			break;
			/*
			case 'magazine':
				query = "data.html";				
			break;*/
		}
		//alert(default_map)
		//alert(file);
		//alert(query);
		buttons(file,queryAdd);		
		httpObject.open("GET",query, true);		
		httpObject.onreadystatechange = function(){
		if(httpObject.readyState <4){ ///// LOADINF MESSAGES
			
			document.getElementById('loading').innerHTML = 'Loading...';
			if(file=='one'){
			document.getElementById('map_object_description').innerHTML='';
			}
		}
		if(httpObject.readyState == 4){document.getElementById('loading').innerHTML = '&nbsp;';	
		
		switch(file){
		case 'objects': ///////////////////////////////////////////////////////////// objects
		
		case 'agents':
		case 'description':
			if(file=='agents'){place = 'map_object_description';}else{place = 'map_object_list';}	
			//document.getElementById('test').innerHTML = httpObject.responseText;					
			eval(httpObject.responseText)				
			for (value in marker) {map.removeOverlay(marker[value]);}
			document.getElementById(place).innerHTML = '';				
			
			//marker_temp[0] = '11';
			if(nav1==null){
				marker_temp = [];
			}
			for(i=0; i<data.length; i++){
				if(nav1==null){
				marker_temp[i] = [[data[i][0]],[data[i][1]],[data[i][2]],[data[i][3]]];				
				}				
				if(Number(data[i][0])==Number(object) && object!==null){ //// memory of selected object
					color = markerOptionsRed;
				}else{
					color = markerOptionsGreen;
				}	
				marker[data[i][0]] = createMarker(data[i][0],data[i][1],data[i][2],''+data[i][3]+'',color); ///// ADD MARKER					
				//document.getElementById(place).innerHTML +=field(data[i][0],''+data[i][3]+'');	/// ADD OBJECT TO LIST				
				document.getElementById(place).innerHTML += '<div class="obj" id="obj'+data[i][0]+'"><a href="/reality/?oid='+data[i][0]+'" onmouseover="markerOver('+data[i][0]+')" onmouseout="markerOut('+data[i][0]+')" id="mc'+data[i][0]+'" >'+data[i][3]+'</a></div>';
			}
			if(nav1==null){
				page_temp = page;
			}			
			if(file=="objects"){
				document.getElementById('tab1').scrollTop = scroll_position;
			}			
			document.getElementById('orderby').value = orderby;
			document.getElementById('page').value = page;
			document.getElementById('recFrom').innerHTML = recFrom; 
			document.getElementById('recTill').innerHTML = recTill; 
			document.getElementById('recCount').innerHTML = recCount;
			if(recTill>=recCount){document.getElementById('sUp').style.display = "none";}else{document.getElementById('sUp').style.display = "block";}
			if(recFrom>1){document.getElementById('sDown').style.display = "block";	}else{document.getElementById('sDown').style.display = "none";}			
		break;
		case 'image':
			document.getElementById('image_gallery').innerHTML = httpObject.responseText;
		break;
		case 'sortFields':
			document.getElementById('map_sortFields').innerHTML = httpObject.responseText;
		break;	
		case 'region':
			document.getElementById('regionSub_wrap').innerHTML = httpObject.responseText;
		break;	
		case 'one':
			document.getElementById('map_object_description').innerHTML = httpObject.responseText;
		break;		
		/*
		case 'magazine':
			alert(3);
			alert(httpObject.responseText);
		break;		*/
		
		}
		}};httpObject.send(null);
	}
}



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function initialize() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(56.95110362781094,24.106455445289612), 7);
		map.setMapType(G_NORMAL_MAP);
		map.setUIToDefault();		
		//map.addControl(new GLargeMapControl3D());		
		var maxZoom = 17;
		var minZoom = 4
		G_PHYSICAL_MAP.getMinimumResolution = function () { return minZoom };
        G_NORMAL_MAP.getMinimumResolution = function () { return minZoom };
        G_SATELLITE_MAP.getMinimumResolution = function () { return minZoom };
        G_HYBRID_MAP.getMinimumResolution = function () { return minZoom };
        G_PHYSICAL_MAP.getMaximumResolution = function () { return maxZoom };
        G_NORMAL_MAP.getMaximumResolution = function () { return maxZoom };
        G_SATELLITE_MAP.getMaximumResolution = function () { return maxZoom };
        G_HYBRID_MAP.getMaximumResolution = function () { return maxZoom }; 	
		var greenIcon = new GIcon(G_DEFAULT_ICON);
		greenIcon.image = "/img/icon-green.png";
		greenIcon.shadow = null;
		greenIcon.iconSize = new GSize(18, 31);
		greenIcon.iconAnchor = new GPoint(9, 31);
		
		var redIcon = new GIcon(G_DEFAULT_ICON);
		redIcon.image = "/img/icon-red.png";
		redIcon.shadow = null;
		redIcon.iconSize = new GSize(18, 31);
		redIcon.iconAnchor = new GPoint(9, 31);
	
		markerOptionsGreen = {zIndexProcess:normalMarker, icon:greenIcon};	
		markerOptionsRed = {zIndexProcess:specialMarker, icon:redIcon};
				
		for(i=0; i<data.length; i++){	
			marker_temp[i] = [[data[i][0]],[data[i][1]],[data[i][2]],[data[i][3]]];				
			marker[data[i][0]] = createMarker(data[i][0],data[i][1],data[i][2],''+data[i][3]+'',markerOptionsGreen);				
		}
		
		GEvent.addListener(map, "moveend", function() {
			mapmoved = true;
			if(lock==true){
				lock = false
			}else{
				getFrame();
				ajax(default_map,default_query);
			}
		})
		getFrame();
	}
}

function specialMarker() {
  return 9999;
}
depth = 0;
function normalMarker() {
  depth++
  return Math.floor(depth);
}


function createMarker(id,lat,lng,html,layout){
	var marker = new GMarker(new GLatLng(lat,lng), layout);
	GEvent.addListener(marker, 'mouseover',function(){
		objOver(id);
		var markerHTML = '<div class="obj" style="border:0px;">'+html+'</div>';
		marker.openInfoWindowHtml(markerHTML,{buttons:{close:{show:4}}});		
	})
	GEvent.addListener(marker, 'mouseout',function(){
		objOut(id);
		marker.closeInfoWindow();
	});
	GEvent.addListener(marker, 'click', function(){
		temp = object;
		if(id!==object){			
			object = null;
			markerOut(temp);
			//ajax('one',id);
            window.open("/reality/?oid="+id);
		}else{
			//lock = true;
			mapmoved = true;
			var point = marker.getPoint();
			map.setCenter(point,13)
		}
		objectOne(id);
		markerOver(id);		
	});
	/*
	GEvent.addListener(marker, 'dblclick', function(){
		//alert(1);
		//ajax('one',id);									 
	});*/	
	map.addOverlay(marker);
	return marker;
}


function buttons(file,query){
	//alert(file+' '+query)
	if(file=='one'){
		if(nav1==null){
			nav0= query;
		}else{
			nav2= query;
		}		
	}
	if(file=='agents'){		
		nav1= query;
		nav2 = null;
	}
	
	
	if(nav1!==null){
		document.getElementById('b_back1').style.display = 'block'
	}else{
		document.getElementById('b_back1').style.display = 'none'
	}	
	if(nav2!==null){
		document.getElementById('b_back2').style.display = 'block'
	}else{
		document.getElementById('b_back2').style.display = 'none'
	}	
	
}

function back2list(){
	window.location.reload()
}
function back(position){
	switch(position){
		case 0:					
			nav0 = null;
			nav1 = null;
			nav2 = null;
			marker_reset()
			default_map = default_list
			default_query = "";
			ajax(default_map,default_query); 
			objectList();		
		break;
		case 1:
			nav1 = null;
			nav2 = null;
			marker_reset()		
			markerOver(nav0);
			default_map = default_list
			default_query = "";
			ajax('one',nav0);
			objectOne();			
		break;
		case 2:
			nav2 = null;
			ajax('agents',nav1);
			objectOne();
		break;
	}	//alert(default_map)
	//alert(position+' 0:'+nav0+' 1:'+nav1+' 2:'+nav2);
	resetObject();
}

function marker_reset(){
	document.getElementById('page').value =page_temp			
	for (value in marker) {map.removeOverlay(marker[value]);}
	for(i=0; i<marker_temp.length; i++){				
		marker[marker_temp[i][0]] = createMarker(marker_temp[i][0],marker_temp[i][1],marker_temp[i][2],''+marker_temp[i][3]+'',markerOptionsGreen);				
	}	
}


function sdm(file,query){	
	resetObject();
	default_map = file;
	default_query = query;
	ajax(file,query); 
}
function resetObject(){
	temp = object;
	object = null;
	markerOut(temp);
}



function objectOne(id){	
	object = id;
	if(nav2==null){
		scroll_position = document.getElementById('tab1').scrollTop
	}
	document.getElementById('tab1').style.display="none";
	document.getElementById('tab2').style.display="block";		
}
function objectList(){
	document.getElementById('tab1').style.display="block";
	document.getElementById('tab1').scrollTop = scroll_position;
	document.getElementById('tab2').style.display="none";
}
function rset(){
	document.getElementById('orderby').value = '';
}
function oBy(){
	if(document.getElementById('orderby').value == ''){
		document.getElementById('orderby').value = 'ASC';
	}
	if(document.getElementById('orderby').value == 'ASC'){
		document.getElementById('orderby').value = 'DESC';
	}else{
		document.getElementById('orderby').value = 'ASC';
	}	
}

function getFrame(){
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();	
	var lngSpan = northEast.lng() - southWest.lng();
	var latSpan = northEast.lat() - southWest.lat();
	document.getElementById("NElng").value = northEast.lng();
	document.getElementById("NElat").value = northEast.lat();
	document.getElementById("SWlng").value = southWest.lng();
	document.getElementById("SWlat").value = southWest.lat();	
}

function gallery(source){
	document.getElementById("large_img").src = source;	
}
function dBox(ch){
	s=document.getElementById('shadow');
	switch(ch){		
		case 'true':
		s.style.display='block';
		break;
		case 'false':
		s.style.display='none';
		break;
	}
}
function extend(){
	if(document.getElementById('extend_search').style.display=='' || document.getElementById('extend_search').style.display=='none'){
		document.getElementById('extend_search').style.display="block";
	}else{
		document.getElementById('extend_search').style.display="none";
	}
}
function clear_search(){
	cl = document.getElementById('extend_search').getElementsByTagName("input");
	cl2 = document.getElementById('extend_search').getElementsByTagName("select");
	
	for (var i = 0; i < cl.length; i++) {
		  var elm = cl[i];
		 
		  switch(elm.type){
			case "checkbox":
				cl[i].checked =false;
			break;
			case "text":
				cl[i].value = '';
			break;	  
		  }
	}
	for (var i = 0; i < cl2.length; i++) {
		  var elm = cl2[i];
		 
		  switch(elm.type){
			case "select-one":
				cl2[i].value = '';
			break;	  
		  }
	}
}
function objOver(id){
	document.getElementById('obj'+id).style.backgroundColor='#e5e5e5';
}
function objOut(id){
	document.getElementById('obj'+id).style.backgroundColor='#ffffff';
}

function markerOver(id){
	temp = marker[id].getPoint();
    map.removeOverlay(marker[id])
	marker[id] = createMarker(id,marker[id].getPoint().lat(),marker[id].getPoint().lng(),''+document.getElementById('mc'+id).innerHTML+'',markerOptionsRed);
    map.addOverlay(marker[id])
	//marker[id].setImage("/img/icon-red.png")
}

function markerOut(id){
	if(object!==id){
		marker[id].setImage("/img/icon-green.png");
	}
}
function f_enter(myfield,e){
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;	
	if (keycode == 13) {
	   rset();sdm('description');objectList()
	   return false;
	}else{
	   return true;
	}
}
