// GLOBAL CONSTANT VALUE TO BE SET
// Expansion vars
var expanded = false;
var expandWidth = 150;
var expandHeight = 150;
var originalWidth="";
var originalHeight="";
// Map controls
var enlargeControl;
var contractControl;
var gSmallZoomControl;
var gMapTypeControl;
var gSmallMapControl;
var mapObj=null;
var map =null;
var marker=null;
var point=null;
var slat=null;
var slon=null;
var start=null;
var dlat=null;
var dlon=null;
var dzoom=10;
function Gload() {

	// Don't try and load the map if browser is not compatible
	if (!GBrowserIsCompatible()) {
		return;
	}
    
    // Load the map into the GenMapDiv id (this id should be used for all map apps across all pages)
    var mapObj = $('google-map');
    map = new GMap2(mapObj);
     map.setCenter(new GLatLng(43.907787,-79.359741),2);
    
	
	
	originalWidth = mapObj.offsetWidth - 6;
	originalHeight = mapObj.offsetHeight - 6;
          
    map.enableContinuousZoom();
    geoCoder = new GClientGeocoder();  
	
	// Setup the controls (views) for the map
	enlargeControl = new EnlargeControl();
	contractControl = new ContractControl();
	gSmallZoomControl = new GSmallZoomControl();
	gMapTypeControl = new GMapTypeControl();
	gSmallMapControl = new GSmallMapControl();
	map.addControl(enlargeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
	map.addControl(gSmallZoomControl);
}
function EnlargeControl() {
}
EnlargeControl.prototype = new GControl();
EnlargeControl.prototype.initialize = function(map) {
  var container = document.createElement("div");
  // the button
  var enlargeDiv = document.createElement("div");
  container.appendChild(enlargeDiv)
  enlargeDiv.style.width="32px";
  enlargeDiv.style.height="32px";
  enlargeDiv.style.cursor = "pointer";
  enlargeDiv.style.backgroundImage = "url(http://www.homeservices4me.com/img/view-ikn.gif)";
  enlargeDiv.style.backgroundRepeat= "no-repeat";
  enlargeDiv.style.backgroundColor = "transparent";
  GEvent.addDomListener(enlargeDiv, "click", function() { enlargeMap(); });
  map.getContainer().appendChild(container);
  return container;
}
EnlargeControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(1, 1));
}
function enlargeMap() {
	var mapObj = $('google-map');
    map.removeControl(enlargeControl);
	map.removeControl(gSmallZoomControl);
	map.addMapType(G_HYBRID_MAP);
    map.addControl(contractControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
	map.addControl(gMapTypeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(20, 1)));
	map.addControl(gSmallMapControl);
	originalWidth = 250;
	originalHeight = 175;
	mapObj.style.width = originalWidth + expandWidth + 'px';
	mapObj.style.height = originalHeight + expandHeight + 'px';
	mapObj.style.top =  '-' + expandWidth + 'px';
	var center = map.getCenter();
	map.checkResize();
	map.setCenter(center);
}

function contractMap() {
	var mapObj = $('google-map');
	map.removeControl(contractControl);
	map.removeControl(gMapTypeControl);
    //map.removeMapType(G_HYBRID_MAP);
	map.removeControl(gSmallMapControl);
	map.addControl(enlargeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
	map.addControl(gSmallZoomControl);
	mapObj.style.width  = originalWidth + 'px';
	mapObj.style.height = originalHeight + 'px';
	mapObj.style.top = '0px';
	var center = map.getCenter();
	map.checkResize();
	map.setCenter(center);
}
function ContractControl() {
}
ContractControl.prototype = new GControl();
ContractControl.prototype.initialize = function(map) {
  var container = document.createElement("div");
  // the button
  var enlargeDiv = document.createElement("div");
  container.appendChild(enlargeDiv)
  enlargeDiv.style.width="21px";
  enlargeDiv.style.height="21px";
  enlargeDiv.style.cursor = "pointer";
  enlargeDiv.style.backgroundImage = "url(http://www.homeservices4me.com/img/view-ikn.gif)";
  enlargeDiv.style.backgroundRepeat= "no-repeat";
  enlargeDiv.style.backgroundColor = "transparent";
  GEvent.addDomListener(enlargeDiv, "click", function() { contractMap(); });
  map.getContainer().appendChild(container);
  return container;
}
ContractControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(1, 1));
}
function ads_markers(loc,add,key){
	function createMarker(point,html,i) {
		var icon = new GIcon();
		icon.image = baseUrl+"img/"+i+".gif";
		icon.iconSize = new GSize(15, 25);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1);
		var marker = new GMarker(point,icon);
       	GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        return marker;
      }
	var mapObj = $('google-map');
	map = new GMap2(mapObj);
	var firstlatlon = loc[0].split(",");
	var firstlat = parseFloat(firstlatlon[0]);
	var firstlon = parseFloat(firstlatlon[1]);
	if(isNaN(firstlat) && isNaN(firstlon)){
		firstlat = parseFloat(document.getElementById('SearchHomelat').value);
		firstlon = parseFloat(document.getElementById('SearchHomelon').value);
	}
	map.setCenter(new GLatLng(firstlat,firstlon),dzoom);
  	originalWidth = mapObj.offsetWidth - 6;
	originalHeight = mapObj.offsetHeight - 6;
    map.enableContinuousZoom();
    geoCoder = new GClientGeocoder();  
	// Setup the controls (views) for the map
	enlargeControl = new EnlargeControl();
	contractControl = new ContractControl();
	gSmallZoomControl = new GSmallZoomControl();
	gMapTypeControl = new GMapTypeControl();
	gSmallMapControl = new GSmallMapControl();
	map.addControl(gSmallZoomControl);
   // map.addControl(gMapTypeControl);
    map.addControl(enlargeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
    //map.addMapType(G_SATELLITE_MAP);
    //map.addMapType(G_NORMAL_MAP);
    //map.removeMapType(G_HYBRID_MAP);
    for(i=0;i<loc.length-1;i++){
	var latlon = loc[i].split(",");
	var lat = parseFloat(latlon[0]);
	var lon = parseFloat(latlon[1]);
	var point1 = new GLatLng(lat,lon);
	var myHtml = key[i]+"<br>"+add[i];
	var marker = createMarker(point1,myHtml,i+1);
	map.addOverlay(marker);
	}
	map.setCenter(new GLatLng(firstlat,firstlon), map.getZoom());
}
function load_map(lat,long){
	mapObj = $('google-map');
	map = new GMap2(mapObj);
	if(dlat==null || dlon == null){
			dlat=37.4419;
			dlon=-122.1419;
		}
		if(lat!="" || long!="" ){
			dlat=lat;
			dlon=long;
		}
		settingMarker(dlat,dlon);
}
function settingMarker(latval,lonval){
			if (GBrowserIsCompatible()) { 
				mapObj = $('google-map');
				map = new GMap2(mapObj);
				document.getElementById("SearchHlat").value=parseFloat(latval);
				document.getElementById("SearchHlon").value=parseFloat(lonval);
				map.clearOverlays();
				map.setCenter(new GLatLng(latval,lonval), dzoom);
    			originalWidth = mapObj.offsetWidth - 6;
				originalHeight = mapObj.offsetHeight - 6;
				var icon = new GIcon();
				icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
				icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
				icon.iconSize = new GSize(12, 20);
				icon.shadowSize = new GSize(22, 20);
				icon.iconAnchor = new GPoint(6, 20);
				icon.infoWindowAnchor = new GPoint(5, 1);
				map.enableContinuousZoom();
    			enlargeControl = new EnlargeControl();
				contractControl = new ContractControl();
				gSmallZoomControl = new GSmallZoomControl();
				gMapTypeControl = new GMapTypeControl();
				gSmallMapControl = new GSmallMapControl();
				map.addControl(enlargeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
				map.addControl(gSmallZoomControl);
				/////Draggable markers
				var point = new GLatLng(latval,lonval);
				var markerD = new GMarker(point, {icon:icon, draggable: true,title:'Click and Drag'}); 
				map.addOverlay(markerD);
				markerD.enableDragging();
				GEvent.addListener(markerD, "dragend", function(){
				var temp=markerD.getPoint().toUrlValue();
				var latlong = temp.split(",");
				document.getElementById("SearchHlat").value=parseFloat(latlong[0]);
				document.getElementById("SearchHlon").value=parseFloat(latlong[1]);
				document.getElementById("AdLocationlat").value=parseFloat(latlong[0]);
				document.getElementById("AdLocationlon").value=parseFloat(latlong[1]);
				var call =document.getElementById('callPremiumads').value;
				if(call==1){
				premiumadsUpdate();
				}
				createCookie('hlatlonval',temp,365);
				});
          }
}
function locateAddress(address) {
	 if(address=="empty"){
	  var address = document.getElementById("from_address").value;
	  eraseCookie('latlonval');
	  createCookie('cadd',address,365);
	  }
	  var geocoder = new GClientGeocoder();
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found, Please enter a nearby city name then drag the red marker to your home address.");
			  map.clearOverlays();
			
			   map.setCenter(new GLatLng(dlat,dlon),dzoom);
			   document.getElementById("SearchHlat").value=parseFloat(dlat);
				document.getElementById("SearchHlon").value=parseFloat(dlon);
			 	eraseCookie('cadd');
			  } else {
               	var temp = "";
              	slat=point.lat();
			  	slon =point.lng();
			  	start = point;
				temp = slat+"," +slon;
				document.getElementById("SearchHlat").value=parseFloat(slat);
				document.getElementById("SearchHlon").value=parseFloat(slon);
				map.clearOverlays();
			    map.setCenter(new GLatLng(slat,slon), dzoom);
    			originalWidth = mapObj.offsetWidth - 6;
				originalHeight = mapObj.offsetHeight - 6;
				var icon = new GIcon();
				icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
				icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
				icon.iconSize = new GSize(12, 20);
				icon.shadowSize = new GSize(22, 20);
				icon.iconAnchor = new GPoint(6, 20);
				icon.infoWindowAnchor = new GPoint(5, 1);
				map.enableContinuousZoom();
    			enlargeControl = new EnlargeControl();
				contractControl = new ContractControl();
				gSmallZoomControl = new GSmallZoomControl();
				gMapTypeControl = new GMapTypeControl();
				gSmallMapControl = new GSmallMapControl();
				map.addControl(enlargeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
				map.addControl(gSmallZoomControl);
				/////Draggable markers
				var point = new GLatLng(slat,slon);
				var markerD = new GMarker(point, {icon:icon, draggable: true, title:'Click and Drag'}); 
				map.addOverlay(markerD);
				markerD.enableDragging();
				GEvent.addListener(markerD, "dragend", function(){
				var temp=markerD.getPoint().toUrlValue();
				var latlong = temp.split(",");
				document.getElementById("SearchHlat").value=parseFloat(latlong[0]);
				document.getElementById("SearchHlon").value=parseFloat(latlong[1]);
				createCookie('hlatlonval',temp,365);
				premiumadsUpdate();
				});
			  createCookie('hlatlonval',temp,365);
			  premiumadsUpdate();
			 }
          }
        );
      }
    }
function startplacelatlon(){
	mapObj = $('google-map');
	map = new GMap2(mapObj);
	if(document.getElementById('SearchHlat').value=="" && document.getElementById('SearchHlon').value==""){
	var address=readCookie('cadd');
	if(address!=null){
	var geocoder = new GClientGeocoder();
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " Home place not set");
			   return false;
			   } else {
              document.getElementById('SearchHlat').value = point.lat();
			  document.getElementById('SearchHlon').value=point.lng();
			  var frmobj = $('frmsearch');
			  frmobj.submit();
			  return true;
			}
          }
        );
      }
	}else{
		document.getElementById('SearchHlat').value=parseFloat(37.4419);
		document.getElementById('SearchHlon').value=parseFloat(-122.1419);
		return true;
	}
	return false;
	}else{
		var latval = document.getElementById('SearchHlat').value; 
		var lonval = document.getElementById('SearchHlon').value;
	}
}