
function display_() {
	if(!el('sbmap')) return;
	if(el('search_type') && el('search_type').value=='map' && window.location.search.indexOf('autosearch_id')=='-1'){
		el('sbmap').style.display = 'block' ;
		el('sbmap').style.visibility = 'visible';
	}
	else{
		el('sbmap').style.display = 'none';
		el('sbmap').style.visibility = 'hidden';
	}
}

function infoHtml(listing,template_name){
    var s=el(template_name).innerHTML;
    for(var i in listing){
        if(i=='price'){
            var v=addCommas(listing[i]);
        }else{
            var v=listing[i];

        }   
        if(v==null || v=='' || v==' ') v='N/A';
        s=s.replace('{$'+i+'}',v ,'gi');
        s=s.replace('%7B$'+i+'%7D', v,'gi');
    }
    return s;
}

var sb_disp;
var _form=el(g_formName);
var _o_point;
var _o_zoom;
var _map_loaded_=false;

	

var _trk_sc_0 = new Array();
var _trk_sc_1 = new Array();
var _use_transaction_algorithm = false;

(function(){
var f_old = document.createElement;
document.createElement = function(a){
    try{
        var r = f_old(a); //IE
    }catch(e){
        try{
            var r = f_old.call(this,a); //FF
        }catch(e){
            _use_transaction_algorithm = true;
        }    
    }
    if(a=='script')_trk_sc_0.push(r);
    return r;
}
})()

function ver_trk(){
    for(var i in _trk_sc_0)
        if(_trk_sc_0[i].src!=_trk_sc_1[i]){
            _trk_sc_1[i] = _trk_sc_0[i].src;
            if(_trk_sc_1[i].indexOf('maps.google.com/maps?spn=')!=-1)
                GTransaction(true);
        }
}
setInterval('ver_trk();',1000);

//get or FHU : start with this extent
if(el('extent_sw') && el('extent_sw').value!='' && el('extent_sw').value!=' '){
	var _o_bounds=el('extent_sw').value+','+el('extent_ne').value;
}

if(!window._o_bounds || _o_bounds=='' || _o_bounds==' '){
	var _o_bounds='13.239945,-137.460937,70.020587,-51.328125';
}
var map,bounds,_o_ext, _o_bounds_points;
var _Markers_=[];

function  initMap(){
	if(map) return;
	var jafieb=new Image();
	jafieb.src='http://www.google.com/intl/en_ALL/mapfiles/smc.png';

    if (GBrowserIsCompatible()) {
        _map_loaded_=true;
        map = new GMap2(document.getElementById(g_divMap));


	
	        
        function searchMap(){}
        searchMap.prototype = new GControl();
        searchMap.prototype.initialize = function(map) {
            var con = map.getContainer();
            var oButton = document.createElement('div');
            oButton.appendChild(document.createTextNode('Search map'));
            oButton.id = 'sbmap';
            //DOM:map covers
            //oButton.style.width ='52px';
            acl.style([oButton],{width:'72px',cursor:'pointer',background:'#FFF',border:'1px solid black',padding:'0px 5px 1px 5px',zIndex:251});
            con.appendChild(oButton);
            oButton.onclick = function (){ beforeSubmit(); }
            return oButton;
        }
        
       
		bounds = new GLatLngBounds;
        map.enableContinuousZoom();
        map.enableDoubleClickZoom();
        
        
        map.addControl(new GMapTypeControl());
	    map.addControl(new GScaleControl());
        
        /*
		GEvent.addListener(map, "infowindowclose", function() {
            map.setCenter(_o_point,_o_zoom);
        })
        */
		
        GEvent.addListener(map, "moveend", function () {
            if(map.getInfoWindow().isHidden()){
                _o_zoom=map.getZoom();
                _o_point=map.getCenter();
            }
			updateExtent();
			updateGCount(map.getBounds(), map.getZoom(),map.getCurrentMapType());
        });
        GEvent.addListener(map, "zoomend", function (oldZoom,newZoom) {
            if(map.getInfoWindow().isHidden()){
                _o_zoom=map.getZoom();
                _o_point=map.getCenter();
            }
			updateExtent();
        });

		var a=_o_bounds.split(',');
		_o_bounds_points = new GLatLngBounds( new GLatLng(a[0],a[1]),new GLatLng(a[2],a[3]) );
		_o_zoom=map.getBoundsZoomLevel(_o_bounds_points);
		_o_point=_o_bounds_points.getCenter();

		var t=el(g_divMap).style.display;
		el(g_divMap).style.display='block';
		_o_ext=_o_bounds;
		
		map.addControl(new GSmallMapControl());
		gz_ctrl=new GZoomControl();
		map.addControl(gz_ctrl,new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(70,9)) );

		map.addControl(new searchMap(),new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(140,9)) );
		setInterval('display_();',1000);
		map.setCenter(_o_point,_o_zoom);map.setMapType(G_NORMAL_MAP);map.checkResize();setTimeout('map.setMapType(G_NORMAL_MAP);',200);
		var __tmp=new GKeyboardHandler(map);

		document.onunload=function (){ GUnload(); }
		
		if(el('search_type') && el('search_type').value=='map'){
			updateExtent();
		}

	}
}      


function drawMapResults(results){
    if(mapResults_loaded){
	    map.checkResize();
		return;
	}
	bounds = new GLatLngBounds;
	mapResults_loaded = true;

	for (var i in results){
		if(results[i].lat && results[i].lon && results[i].lat!=0 && results[i].lon!=0){ 
        	_Markers_[results[i].id]=new createMarker(results[i]);
			map.addOverlay(_Markers_[results[i].id]); 
		}
    }
    map.checkResize();
	var _CenterRes=!(el('search_type') && el('search_type').value=='map') || (the_criteria && the_criteria.search_recommended);
	if(!bounds.isEmpty() && bounds.getCenter().lat()!=0 && bounds.getCenter().lng()!=0 && _CenterRes){
		_o_zoom=map.getBoundsZoomLevel(bounds);
		map.setZoom(_o_zoom);
		map.panTo(bounds.getCenter());
		_o_point=bounds.getCenter();
	}else{
		map.setCenter(_o_point,_o_zoom);
		map.panTo(_o_point);
	}
}






// Creates a marker at the given point with the given number label
function createMarker(listing) {
    var point=new GLatLng(listing.lat,listing.lon);
    var icon = new GIcon();
    icon.image =g_listing_icon[0];
    if(g_listing_icon[listing.hometype]!=null && g_listing_icon[listing.hometype]!='' && g_listing_icon[listing.hometype]!=' ') icon.image = g_listing_icon[listing.hometype];
    //icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	if(g_listing_local && g_listing_local!=null && g_listing_local!='' && g_listing_local!=' ' && listing.local_listing && listing.local_listing=='t') icon.image = g_listing_local;
	if(g_listing_featured && g_listing_featured!=null && g_listing_featured!='' && g_listing_featured!=' '&& listing.featured_prop && listing.featured_prop=='t') icon.image = g_listing_featured;
    icon.iconSize = new GSize(16, 16);
    //icon.shadowSize = new GSize(22, 20);
    icon.iconAnchor = new GPoint(4, 20);
    icon.infoWindowAnchor = new GPoint(8, 8);
    var marker = new GMarker(point,icon);
    
    GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(el('map_tpl_'+listing.id).innerHTML);
        
    });
    
    GEvent.addListener(marker, "infowindowclose", function() {
        //map.setCenter(_o_point,_o_zoom);
    })
    
    bounds.extend(point);
    return marker;
}


function ZoomTo(listing_id){
    var listing=getListingById(listing_id);
	if((listing.lat==null && listing.lon==null) || (listing.lat==0 && listing.lon==0)) return;
	var p=new GLatLng(listing.lat,listing.lon);
    _o_point=map.getCenter();
    _o_zoom=map.getZoom();
	map.panTo(p);
	_Markers_[listing_id].openInfoWindowHtml(el('map_tpl_'+listing_id).innerHTML);
}

function getListingById(listing_id){
    for(var i in listings) if( listings[i].id==listing_id ) return listings[i];
    return false;
}


function updateExtent(){
	if(!window.map){return;}
	if(el('search_type').value=='map'){
		var SW=map.getBounds().getSouthWest().toUrlValue();
		var NE=map.getBounds().getNorthEast().toUrlValue();
	}else{
		var SW='';
		var NE='';
	}
	if(el('extent_sw')){
		el('extent_sw').value=SW;
		el('extent_ne').value=NE;
	}
	if(window.optionSelected){
		optionSelected(el('extent_sw'),'SW');
		optionSelected(el('extent_ne'),'NE');
	}
}



// transaction variables
var GCount = 0;
var GBounds = null;
var GZoom = null;
var GType = null;

// function to check for new transactions
function updateGCount(mapBounds, mapZoomLevel, mapType)
{
        if(!_use_transaction_algorithm) return;
        // null checks are for initial map load transaction
        var updateMapBounds =    (GBounds == null) || !GBounds.intersects(mapBounds);
        var updateMapZoomLevel = (GZoom == null) || (GZoom != mapZoomLevel);
        var updateMapType =      (GType == null) || (GType != mapType);

        if (updateMapBounds || updateMapZoomLevel) { GBounds = mapBounds; } 
		if (updateMapZoomLevel) { GZoom = mapZoomLevel;}
        if (updateMapType)      { GType = mapType;     }

        if (updateMapBounds || updateMapZoomLevel || updateMapType)
        {
            //GLog.write("transaction count: " + (++GCount));
			GTransaction(true);
        }

}

function GTransaction(oneMoreTime){
	var _url__= "/gtransaction?rand="+Math.random()+'&dt='+(new Date()).getTime();
	GDownloadUrl(_url__, function(data, responseCode) {
	  if(responseCode!='200' && oneMoreTime){
		  setTimeout('GTransaction(null);',800);
	  }
	});
}

