// JavaScript Document

  

  
  <!-- Mapping: Begin -->
  var map;
  var currItem = -1;

  function highlightMarker(marker) {
	propertyId = -1;
	if (marker)
		propertyId = marker.getId();
	highlightItem(propertyId);
  }
  
  var waitingForResults = false;






  function highlightItem(propertyId) {
		
		//alert("New!\npropertyId: "+propertyId+"\ncurrItem: "+currItem);
		
		if (waitingForResults){
			return;
		}
	
		if (currItem != -1){
			
			marker = map.getMarkerById(currItem);
			
			if (marker) {
				marker.setImage(marker.pdImage);
				marker.hovering = false;
				// marker.restoreImage();
				marker.hideTooltip();
			}
			
			obj = document.getElementById("add" + currItem);
			objA = document.getElementById("a" + currItem);
			objB = document.getElementById("p_img" + currItem);
			objC = document.getElementById("a" + currItem);
		
			if (obj){
				obj.style.backgroundColor = "";
			}
			if (objA){
				objA.style.backgroundColor = "";
			}
			if (objB){
				objB.style.backgroundColor = "";
			}
			if (objC){
				objC.style.backgroundColor = "";
			}
		}
		
		currItem = propertyId;

		if (currItem != -1){
			marker = map.getMarkerById(currItem);
			// marker.setImage("http://www.hawaiilife.com/img/marker.png");
			if (marker) {
				marker.setImage(marker.pdHover);
				marker.hovering = true;
				marker.showTooltip();
			}
			
			objA = document.getElementById("p_details" + currItem);
			objB = document.getElementById("p_img" + currItem);
			objC = parent.document.getElementById("a" + currItem);
			
			if (objA){
				objA.style.backgroundColor = "#C15426";
				objA.style.color = "#FFFFFF";
			}
			if (objB){
				objB.style.backgroundColor = "#363636";
			}
			if (objC){
				objC.style.backgroundColor = "#e6e7e8";
			}
			
		}
	}




/*


  function highlightItem(propertyId, isSponsored) {

		alert("propertyId: "+propertyId+"\ncurrItem: "+currItem);


	if (waitingForResults)
		return;
	if (currItem != -1)
	{
		marker = map.getMarkerById(currItem);
		if (marker) {
			marker.setImage(marker.pdImage);
			marker.restoreMarkerZIndex();
			marker.hovering = false;
			// marker.restoreImage();
			marker.hideTooltip();
		}
  		objA = document.getElementById("p_details" + currItem);
  		objB = document.getElementById("p_img" + currItem);
  
		if(isSponsored){
			bgc = "";
		}else{
			bgc = "";
		}		
		if (objA) {
			objA.style.backgroundColor = bgc;
			objA.style.color = bgc;
    }
		if (objB)
			objB.style.backgroundColor = bgc;
	}
	currItem = propertyId;

	if (currItem != -1)
	{
		marker = map.getMarkerById(currItem);
		// marker.setImage("http://www.hawaiilife.com/img/marker.png");
		if (marker) {
			marker.setImage(marker.pdHover);
			marker.topMarkerZIndex();
			marker.hovering = true;
			marker.showTooltip();
		}
  		objA = document.getElementById("p_details" + currItem);
  		objB = document.getElementById("p_img" + currItem);
  
		var bgc;
		if(isSponsored){
			bgc = "#C15426";
		}else{
			bgc = "#C15426"; // "#DD6326";
		}
		if (objA) {
			objA.style.backgroundColor = bgc;
			objA.style.color = "#FFFFFF";
    }
		if (objB)
			objB.style.backgroundColor = "#363636";
	}
  }
	
	*/
  
  function propDetail(mlsNo) {
	var center = map.getCenter();
	var lat = center.lat();
	var lng = center.lng();
	document.location = "viewproperty.php?mls=" + mlsNo + "&zoom=" + map.getZoom() + "&lat=" + lat + "&lng=" + lng;
	// document.location = "http://www.hawaiilife.com/property" + mlsNo + ".html";
  	//showDetailOverlay(mlsNo);
  }

  function clickMarker(marker) {
	// propDetail(marker.mlsNo);
	
	showDetailOverlay(marker.mlsNo);
  }

  // Create our custom marker icon
  var icon = new GIcon();
  icon.image = "http://www.hawaiilife.com/img/marker.png";
  // icon.shadow = "http://www.hawaiilife.com/img/shadow.png";
  icon.iconSize = new GSize(18, 40); // 16,37
  // icon.shadowSize = new GSize(25, 40);
  icon.iconAnchor = new GPoint(6, 40);
  icon.infoWindowAnchor = new GPoint(5, 1);

  homeIcon = new GIcon(icon);
  homeIcon.image = "http://www.hawaiilife.com/img/marker-h.png";
  homeIcon.pdHover = "http://www.hawaiilife.com/img/marker-h-hot.png";
  homeIcon.iconSize = new GSize(16, 23);
  homeIcon.iconAnchor = new GPoint(5, 30);
  homeIcon.infoWindowAnchor = new GPoint(5, 1);
  
  landIcon = new GIcon(icon);
  landIcon.image = "http://www.hawaiilife.com/img/marker-l.png";
  landIcon.pdHover = "http://www.hawaiilife.com/img/marker-l-hot.png";
  landIcon.iconSize = new GSize(16, 23);
  landIcon.iconAnchor = new GPoint(5, 30);
  landIcon.infoWindowAnchor = new GPoint(5, 1);

  condoIcon = new GIcon(icon);
  condoIcon.image = "http://www.hawaiilife.com/img/marker-c.png";
  condoIcon.pdHover = "http://www.hawaiilife.com/img/marker-c-hot.png";
  condoIcon.iconSize = new GSize(16, 23);
  condoIcon.iconAnchor = new GPoint(5, 30);
  condoIcon.infoWindowAnchor = new GPoint(5, 1);

  selectIcon = new GIcon(icon);
  selectIcon.image = "http://www.hawaiilife.com/img/marker_cold.png";
  selectIcon.pdHover = "http://www.hawaiilife.com/img/marker.png";
  // selectIcon.shadow = "http://www.hawaiilife.com/img/shadow.png";
  selectIcon.iconSize = new GSize(18, 40);
  // selectIcon.shadowSize = new GSize(25, 40);
  selectIcon.iconAnchor = new GPoint(6, 40);
  selectIcon.infoWindowAnchor = new GPoint(5, 1);

  var markerCount = 0;
  
  function findMarkerByMLS(mls) {
	var marker = map.getFirstMarker();
	while (marker) {
		if (marker.mlsNo == mls)
			return marker;
		marker = map.getNextMarker();
	}
	alert("MLS " + mls + " marker not found.");
	return null;
  }
  
  function setMarkerFavoriteState(mls, selected) {
	var marker = findMarkerByMLS(mls);
	if (marker) {
		var kind = marker.kind;

		var icon;
		if (kind == "home")
			icon = homeIcon;
		else if (kind == "land")
			icon = landIcon;
		else
			icon = condoIcon;
		if (selected)
			icon = selectIcon;

		marker.pdImage = icon.image;
		marker.pdHover = icon.pdHover;
		if (marker.hovering)
			marker.setImage(icon.pdHover);
		else
			marker.setImage(icon.image);
		marker.oldImagePath = "";
	}
	// alert("mls, selected: " + mls + ", " + selected);
  }

  function addMarker(kind, mlsNo, propertyId, tooltip, lat, lon, address, selected) {
    // alert("Hurray!");
	// GLog.write("addMarker");
	markerCount = markerCount + 1;
	var marker;
	var icon;

	if (kind == "home")
		icon = homeIcon;
	else if (kind == "land")
		icon = landIcon;
	else
		icon = condoIcon;

	if (selected)
		icon = selectIcon;

	//var marker = map.getMarkerById(propertyId);
	var marker;
	if (marker == null) {
	  marker = new PdMarker(new GLatLng(lat,lon),icon);
	  marker.pdImage = icon.image;
	  marker.pdHover = icon.pdHover;
	  map.addOverlay(marker);

	  // marker.setHoverImage("img/marker.png");
	  GEvent.addListener(marker, 'mouseover', function() {
	    highlightMarker(marker); // propertyId
		});

	  GEvent.addListener(marker, 'mouseout', function() {
	    highlightItem(-1);
	  });

	  GEvent.addListener(marker, 'click', function() {
		parent.wasabox.start('/detail.php?mls_no='+marker.mlsNo);
		//clickMarker(marker); // mlsNo
	  });
	} else {
	  // re-use marker
	  marker.display(true);
	  marker.setPoint(new GLatLng(lat,lon));
	  marker.setImage(icon.image);
	  marker.pdImage = icon.image;
	  marker.pdHover = icon.pdHover;
	  marker.oldImagePath = ""; // make sure icon doesn't switch back to original on hover
	  // marker.setIcon(icon);
	}

	marker.hovering = false;
	marker.kind  = kind;
	marker.mlsNo = mlsNo;
	marker.setTooltip(tooltip);
    marker.setId(propertyId);
  }
  
	// PMJ Oct 2, 2007
	
	var currCenter = null;
	var watchMove = true;

	function coordRound(x) {
		return Math.round(x * 10000) / 10000;
	}
  
	function regionSearch() {
		if (!watchMove) {
			watchMove = true;
			return;
		}
    formObj = document.getElementById('quickSearch'); // PMJ Jan 12, 2009
		if (document.getElementById('move_checkbox').checked) {
			bounds = map.getBounds();
			ne = bounds.getNorthEast();
			sw = bounds.getSouthWest();

			// reduce map area
			mapSpan = bounds.toSpan();
			latSpan = mapSpan.lat();
			lngSpan = mapSpan.lng();
			ne = new GLatLng(ne.lat() - latSpan * .10, ne.lng() - lngSpan * .05);
			sw = new GLatLng(sw.lat() + latSpan * .10, sw.lng() + lngSpan * .10);
			
			n = coordRound(ne.lat());
			s = coordRound(sw.lat());
			e = coordRound(ne.lng());
			w = coordRound(sw.lng());
			
			performSearch = true;
			if (currCenter) {
				mapDiagonal = ne.distanceFrom(sw);
				maxNudge = mapDiagonal / 8;
				movement = map.getCenter().distanceFrom(currCenter);
				// alert("mapdiag, maxnudge, movement: " + mapDiagonal + ", " + maxNudge + ", " + movement);
				performSearch = movement > maxNudge;
			}
			if (performSearch) {
				currCenter = map.getCenter(); // getCenterLatLng, will be set in doSearch in any case...
				// formObj  = document.getElementById('quickSearch');
				oldValue = formObj.input.value;
				
				//Yacine 11-03-07: added the  if else control structure
				//If Map was used to search
				//Input coord and do search
				
				if(true){
					formObj.input.value = "region " + n + "," + w + "," + s + "," + e;
					formObj.hiddenInput.value = "region " + n + "," + w + "," + s + "," + e;
					runMapSearch(formObj.hiddenInput);
					
				//Text search was used
				//Store coord in hidden ouput
				}else{
					formObj.hiddenInput.value = "region " + n + "," + w + "," + s + "," + e;
				}

			}
		}
		formObj.input.value = "Currently searching with map"; // reset input field??  maybe.
	}

	function loadMap(markerCode) {
  		var obj;
		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map"));
			
    		if (typeof(G_PHYSICAL_MAP) == "undefined")
      			if (obj = $('type_terrain_option')){
        			//obj.style.display = "none";
				}
				if (screen.width < 1024){
					overviewWidth = 100;
				}else{
					overviewWidth = 150;
				}
				overview = new GOverviewMapControl(new GSize(overviewWidth, .75 * overviewWidth));
				map.addControl(overview, new GControlPosition(G_ANCHOR_BOTTOM_RIGHT)); 
		if (true){
      		map.addControl(new GScaleControl());
		}else{
      		// map.addControl(new GMapKitMapControls3d());
      		map.addControl(new ExtLargeMapControl());
		}
		map.enableDoubleClickZoom();
		
		if (mapZoom)
			map.setCenter(new GLatLng(mapLat, mapLng), mapZoom);
		else
			map.setCenter(new GLatLng(20.519644, -157.554932), 7);
		// map.setCenter(new GLatLng(37.4419, -122.1419), 13);
		map.setMapType(G_HYBRID_MAP);
		map.addControl(new GLargeMapControl());
		//map.addControl(new GMapTypeControl()); // region 23,-180,22.225,-90
		
		// PMJ Oct 2, 2007
		// currCenter = map.getCenterLatLng();
		//	if (true) { //  || !currCenter.equals(map.getCenterLatLng())) {
		GEvent.addListener(map, "dragend", function() {
			regionSearch();
		}); 
		GEvent.addListener(map, "moveend", function() {
			//Yacine 11-03-07
			//When map moves as a result of a text search
			//We don't want to run a coordinate-based search.
			//alert(checkTextSearch());
			if(checkTextSearch() == false){
				regionSearch();
			}
			
		}); 	
		GEvent.addListener(map, "zoomend", function() {
			if(checkTextSearch() == false){
				currCenter = null;
				regionSearch();
			}
		}); 			

		// pos = markerCode.indexOf("<!--");
		// theCode = markerCode.substring(pos + 4);
		// theCode = theCode.substring(0, theCode.length - 3);
		// GLog.write("eval");
		//alert(theCode);
								//addMarker("home",193545,1,"tooltip",22.208246,-159.666968,"1",false);map.zoomToMarkers(10,2);
		//eval(theCode.toString());
	}
  }
  
  // PMJ Jan 12, 2008
  
  function $(a) {
    return document.getElementById(a);
  }
  
  currMapTypeDomID = "type_hybrid";
  
  function setMapType(mapType, mapTypeDomID) {
    var obj;
    if (obj = $(currMapTypeDomID))
      obj.className = "";
    currMapTypeDomID = mapTypeDomID;
    if (obj = $(currMapTypeDomID)) {
      obj.className = "curr_type";
      obj.blur();
    }
    map.setMapType(mapType);
  }

  function debug(a) {
  }

  
  // AJAX

function getHTTPObject() {
	var xmlhttp;

	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		} @else xmlhttp = false;
	@end
	@*/

	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}

function ajax(s) {
	// alert("ajax: " + s);
	var d = new Date();
	s = s + "&x=" + d.getTime();
	var xmlhttp = getHTTPObject();
	xmlhttp.open("GET", "ajax.php?" + s);
	xmlhttp.onreadystatechange = function() {
	 if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				response = xmlhttp.responseText;
				// alert(response);
				eval(response);
			}else
				alert("Error: " + xmlhttp.status);
			}
	 }
	xmlhttp.send(null);
}

var mapZoom = null;

function getCurrLatLng() {
	ajax('');
}

getCurrLatLng();

