var zoomListener = null;
var panListener = null;

function EventEndCPan(){
    //If the timer is set, clear it and reset it

    if (endPanTimer != null)   {
        window.clearTimeout(endPanTimer);
    }
	if( typeof HAR!="undefined" && !HAR.hasDirectionsRendered() )
    	endPanTimer = window.setTimeout(HandleEndPan, END_PAN_TIMER_DELAY);
} 
function HandleEndPan(){

    endPanTimer = null; 

    ShowResults();
} 
function ShowResults(e)   {

    document.getElementById('resultDiv').innerHTML="";
    
    
    updatepropcount();
    //alert('will get surrounding listings here');
}
// Call the Web service method to get the lat/longs 
function getPropInfo(){
    deletePoly();
    //stopMappan();

    updatepropcount(url, icon);
}

function stopMappan(){
    
    //gMapObj.map.DetachEvent("onendpan",EventEndCPan);
    //gMapObj.map.DetachEvent("onendzoom", EventEndCPan);

}

function ShowTraffic()      {
	gMapObj.map.LoadTraffic(true);
	gMapObj.map.ShowTrafficLegend(50,50);
	gMapObj.map.SetTrafficLegendText("The traffic legend");
}

function ClearTraffic()     {
	gMapObj.map.ClearTraffic();
}

function GetMapConner(url){
	//alert('call to get corners');
    var myMap = gMapObj.map.GetMapView();
    
    thismapcenter = gMapObj.map.GetCenter();
    //var latitude = latLongTokens[index].split(',')[0];
    topLeftLat = myMap.TopLeftLatLong.Latitude;
    topLeftLong = myMap.TopLeftLatLong.Longitude;
    bottomRightLat =myMap.BottomRightLatLong.Latitude;
    bottomRightLong = myMap.BottomRightLatLong.Longitude;
    
    //alert(topLeftLat +','+topLeftLong + ',' +bottomRightLat+ ',' + bottomRightLong);
    
    url = url.concat('&NElat=');
    url = url.concat(topLeftLat);
    
    url = url.concat('&NElng=');
    url = url.concat(topLeftLong);
    
    url = url.concat('&SWlat=');
    url = url.concat(bottomRightLat);
    
    url = url.concat('&SWlng=');
    url = url.concat(bottomRightLong);
    //alert(url);
    return(url);
    
}

function getHTTPObject() {
    var xmlhttp;
    try {
        xmlhttp = new XMLHttpRequest();
    } catch (e) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    return xmlhttp;
}

function CallToGetList(url, icon){
   // alert(url);
    //alert(icon)
    /* previous code
    var http=getHTTPObject();
    window.open(url,'mywindow','width=650,height=500,toolbar=yes, location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');

    http.open("GET", url, false);
    http.send(null);

    var mypoints=http.responseText;
    if(http.status == 200){
        SucceededCallback(mypoints, icon);
        //alert(mypoints);
    }
    var paramstart = url.indexOf('all=1')
    url = url.substring(0,paramstart+5);
    */
	//prompt(url)
    try{
        Ext.get('divMapsearch').mask('<img src="http://www.har.com/mapsearch/_js/ext/resources/images/default/shared/blue-loading.gif" /> Searching...');
        Ext.Ajax.request({
            method:'POST',
            url:url,
            success:SucceededCallback,
            failure:function(response, options){
                Ext.MessageBox.alert("Request Failed.", "Your request failed. Your search area was probably too large or too complicated and resulted in a seach failure. "+
                    "You can try your search again with the same criteria. If this error persists, try simplifying your search.");
                icon = "";
                clearSearchResult();
                Ext.get('divMapsearch').unmask();
            },
            params:{icon:icon},
            timeout:60000
        });
    }catch(err){
        Ext.get('divMapsearch').unmask();
    }
    //alert(url);
    //modified:
    /*
    //waitGen("dcHolder");
    var 	xmlhttp = getHTTPObject();
            
    xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState == 4) {
        // only if "OK"
        if (xmlhttp.status == 200) {
        SucceededCallback(mypoints, icon);
        isBusy=false;
        } else {
            alert("There was a problem retrieving data:\n" +
                xmlhttp.statusText);
                isBusy=false;
        }
        }
    };
    //if(isBusy){return;}
    xmlhttp.open("GET",url,true)
            xmlhttp.send(null)
            isBusy=true;
    var mypoints=xmlhttp.responseText;
//end modified
    */
    
}

//added function:
//do not touch below
function checkProx(){
    var isproxsearch = Ext.get('proxaddress').dom.value;
    if(isproxsearch != 'Enter Street Number and Street Name (i.e: 1234 kirby dr)'){
        markInputProxAddress();
    }
}

function updatepropcount() {
	
    HAR.PropertySearchApp.submitSearchRequest();
    HAR.PropertySearchApp.hideSearchForm();

}

function getUrlParameters(){
    var paramString = '';
    //waitGen();
    var Yearbuilt1 = '';
    var Yearbuilt2 = '';
    var dateback = '';

    var for_sale = ''
    
    if(Ext.get('radio_for_sale').dom.checked == true)		{
        for_sale = 1;

    }else if(Ext.get('radio_for_sold').dom.checked == true){
        for_sale = 0;

    }else if(Ext.get('radio_for_lease').dom.checked == true) {
        for_sale = 7;

    }
   // alert('for_sale is :'+ for_sale);
    if(for_sale == 7){
        var PROP_TYPE = checkboxval("PROP_TYPE","");
        if(PROP_TYPE !=''){
            PROP_TYPE = PROP_TYPE.concat("'end'");
        }
        var LEASE_PRICE_MIN = Ext.get('LEASE_PRICE_MIN').dom.value;
        var LEASE_PRICE_MAX = Ext.get('LEASE_PRICE_MAX').dom.value;
    }else {
        
        var Property_Class_ID =checkboxval("Property_Class_ID",""); 
        if(Property_Class_ID != ''){
            Property_Class_ID = Property_Class_ID.concat(0);
            // alert(Property_Class_ID);
        }
        var LISTING_PRICE_MIN = Ext.get('LISTING_PRICE_MIN').dom.value;
        // alert
        var LISTING_PRICE_MAX = Ext.get('LISTING_PRICE_MAX').dom.value;
        
        if(for_sale == 0){
            //  alert(searchform.Yearbuilt1.value+''+searchform.Yearbuilt2.value);

            Yearbuilt1 = Ext.get('Yearbuilt1').dom.value;
            Yearbuilt2 = Ext.get('Yearbuilt2').dom.value;
            if(Ext.get('dateback6').dom.checked == true)		{
                dateback = 'SIXMON';
            }else if(Ext.get('dateback1').dom.checked == true){
                dateback = 'Oneyear';
            }else {
                dateback = 'twoyear';
            }
        }
    }
    var BEDROOM_NUM = Ext.get('BEDROOM_NUM').dom.value;
    var FULL_BATH_NUM =  Ext.get('FULL_BATH_NUM').dom.value;
    var SQURE_FEET_MIN =  Ext.get('SQURE_FEET_MIN').dom.value;
    var SQURE_FEET_MAX =  Ext.get('SQURE_FEET_MAX').dom.value;
    var LOTSIZE_MIN =  Ext.get('LOTSIZE_MIN').dom.value;
    var LOTSIZE_MAX =  Ext.get('LOTSIZE_MAX').dom.value;
    var GARAGE_NUM =  Ext.get('GARAGE_NUM').dom.value;
    var GARAGE_DESC =  Ext.get('GARAGE_DESC').dom.value;
    var STORIES =      Ext.get('STORIES').dom.value;
	 var FORECLOSURE =  Ext.get('FORCL').dom.value;
    //alert('STORIES'+STORIES);

    var NEW_CONSTR = '';
    var YEAR_BUILT ='';
    var PRIVATE_POOL = '';
    var AREA_POOL = '';
    var GOLF = '';
    var VIRTUAL_TOURS = '';
    var OPEN_HOUSES = '';

    if(for_sale != 0){	
        NEW_CONSTR =  Ext.get('NEW_CONSTR').dom.value;
        YEAR_BUILT = Ext.get('YEAR_BUILT').dom.value;

        if( Ext.get('PRIVATE_POOL').dom.checked ){
            PRIVATE_POOL = 'Y';
        }
        if( Ext.get('AREA_POOL').dom.checked ){
            AREA_POOL ='Y';
        }
        if( Ext.get('GOLF').dom.checked ){
            GOLF = 'Y';
        }
        if( Ext.get('VIRTUAL_TOURS').dom.checked ){
            VIRTUAL_TOURS =  'Y';
        }
        if( Ext.get('OPEN_HOUSES').dom.checked ){
            OPEN_HOUSES =  'Y';
        }
    }



    paramString = paramString.concat('&for_sale=');
    paramString = paramString.concat(for_sale);

    
    if(for_sale == 7){
        
        if (PROP_TYPE != '' ){
            paramString = paramString.concat('&PROP_TYPE=');
            paramString = paramString.concat(PROP_TYPE);
        }
        if (LEASE_PRICE_MIN != ''){
            paramString = paramString.concat('&LEASE_PRICE_MIN=');
            paramString = paramString.concat(LEASE_PRICE_MIN);
        }
        if (LEASE_PRICE_MAX != ''){
            paramString = paramString.concat('&LEASE_PRICE_MAX=');
            paramString = paramString.concat(LEASE_PRICE_MAX);
        }
    }else{
        
        
        if (Property_Class_ID != ''){
            paramString = paramString.concat('&Property_Class_ID='); 
            paramString = paramString.concat(Property_Class_ID);
        }
        if (LISTING_PRICE_MIN != ''){
            paramString = paramString.concat('&LISTING_PRICE_MIN='); 
            paramString = paramString.concat(LISTING_PRICE_MIN);
        }
        if (LISTING_PRICE_MAX != ''){
            paramString = paramString.concat('&LISTING_PRICE_MAX=');
            paramString = paramString.concat(LISTING_PRICE_MAX);
        }
    }
    
    if (BEDROOM_NUM != ''){
        paramString = paramString.concat('&BEDROOM_NUM=');
        paramString = paramString.concat(BEDROOM_NUM);
    }
	if (FORECLOSURE != ''){
        paramString = paramString.concat('&FORCL=');
        paramString = paramString.concat(FORECLOSURE);
    }
	
	
	
    if (FULL_BATH_NUM != ''){
        paramString = paramString.concat('&FULL_BATH_NUM=');
        paramString = paramString.concat(FULL_BATH_NUM);
    }
    if (SQURE_FEET_MIN != ''){
        paramString = paramString.concat('&SQURE_FEET_MIN=');
        paramString = paramString.concat(SQURE_FEET_MIN);
    }
    if (SQURE_FEET_MAX != ''){
        paramString = paramString.concat('&SQURE_FEET_MAX=');
        paramString = paramString.concat(SQURE_FEET_MAX);
    }
    if (LOTSIZE_MIN != ''){
        paramString = paramString.concat('&LOTSIZE_MIN=');
        paramString = paramString.concat(LOTSIZE_MIN);
    }
    if (LOTSIZE_MAX != ''){
        paramString = paramString.concat('&LOTSIZE_MAX=');
        paramString = paramString.concat(LOTSIZE_MAX);
    }
    if (GARAGE_NUM != ''){
        paramString = paramString.concat('&GARAGE_NUM=');
        paramString = paramString.concat(GARAGE_NUM);
    }
    if (GARAGE_DESC != ''){
        paramString = paramString.concat('&GARAGE_DESC=');
        paramString = paramString.concat(GARAGE_DESC);
    }
    if (STORIES != ''){
        paramString = paramString.concat('&STORIES=');
        paramString = paramString.concat(STORIES);
    }

    if (PRIVATE_POOL != ''){
        paramString = paramString.concat('&PRIVATE_POOL=');
        paramString = paramString.concat(PRIVATE_POOL);
    }
    if (AREA_POOL != ''){
        paramString= paramString.concat('&AREA_POOL=');
        paramString = paramString.concat(AREA_POOL);
    }
    if (NEW_CONSTR != ''){
        paramString = paramString.concat('&NEW_CONSTR=');
        paramString = paramString.concat(NEW_CONSTR);
    }
    if (YEAR_BUILT != ''){
        paramString = paramString.concat('&YEAR_BUILT=');
        paramString = paramString.concat(YEAR_BUILT);
    }
    if (GOLF != ''){
        paramString = paramString.concat('&GOLF=');
        paramString = paramString.concat(GOLF);
    }
    if (VIRTUAL_TOURS != ''){
        paramString = paramString.concat('&VIRTUAL_TOURS=');
        paramString = paramString.concat(VIRTUAL_TOURS);
    }
    if (OPEN_HOUSES != ''){
        paramString=paramString.concat('&OPEN_HOUSES=');
        paramString = paramString.concat(OPEN_HOUSES);
    }
    
    
    if (Yearbuilt1 != ''){
        paramString=paramString.concat('&Yearbuilt1=');
        paramString = paramString.concat(Yearbuilt1);
    }
    if (Yearbuilt2 != ''){
        paramString=paramString.concat('&Yearbuilt2=');
        paramString = paramString.concat(Yearbuilt2);
    }
    if (dateback != ''){
        paramString=paramString.concat('&dateback=');
        paramString = paramString.concat(dateback);
    }

    return paramString;
}

function AddClickablePin(myid) {
    // Close any open windows
	HAR.customInfoWindow.close();
	// Open this window
	HAR.showWindow(myid);
}

function ClickablePin(myid) {
    
    var element = document.getElementById(myid);
    element.onclick = EventHandlerOnClick;

    
}

function AddClickPin(pinID,location, icon_url, title, details) {
  //  alert('im in mapnew.js addclickpin');
    var pin = new VEPushpin(pinID, location, icon_url, title, details);
    gMapObj.pushPinLayer.AddPushpin(pin);

    ClickablePin(pinID);
    
}

function EventHandlerOnClick(e) {
    if (e!=null){
        document.getElementById(e.currentTarget.id + "_" + gMapObj.mapGUID).onmouseover();
    } else {
        document.getElementById(window.event.srcElement.id).onmouseover();
    }
}

// This is the callback function that 
// processes the value returned by the Web service.
//function SucceededCallback(result, icon){
function SucceededCallback(response, options,searchType){
	
	//alert('did I come here in succeededcallback');
    var result = response.responseText;
    var icon = options.params.icon;
   // alert(icon);
	//var for_sale = forsale;
    var totalcnt = 0;
    var pushPinShape;

	var for_sale = ''
    
    if(Ext.get('radio_for_sale').dom.checked == true)		{
        for_sale = 1;

    }else if(Ext.get('radio_for_sold').dom.checked == true){
        for_sale = 0;

    }else if(Ext.get('radio_for_lease').dom.checked == true) {
        for_sale = 7;

    }
		//alert('in secceededcallback:' + for_sale);
    try{

        var points = result;
        propIcon = HAR.pins.blueHouse;//"http://www.har.com/mapsearch/graphics/smbluePointer.gif"
        
        if(points.length > 0 ) {
            
            var latLongTokens = points.split('|');
            var veLatLongs = new Array(latLongTokens.length -1);
            //alert(latLongTokens.length);
            var centerLatLong;
            totalcnt = latLongTokens[0].split(',')[1];
            
            var maplistinghtml = "<table width='100%' border='0' cellspacing='0' cellpadding='1'>"+
                "<tr><td class='columnHeader' width='25' nowrap>&nbsp;</td>"+
                "<td class='columnHeader' width='130' >Address</td>"+
                "<td class='columnHeader'>Price</td></tr>";
            
            var listingvewhtml = "<table width='100%' border='0' cellspacing='0' cellpadding='2' style='white-space:nowrap;'>"+
                "<tr><td class='columnHeader' width='40'>&nbsp;</td>"+
                "<td class='columnHeader' width='155'>Type</td>"+
                "<td class='columnHeader' width='175'>Address</td>"+
                "<td class='columnHeader' width='155'>Subdivision</td>"+
                "<td class='columnHeader'>Listing Price</td>"+
                "<td class='columnHeader'>Square Feet</td>"+
                "<td class='columnHeader'>Bed/Bath</td>"+
                "<td class='columnHeader'>Status</td></tr>";
            
            document.getElementById('resultDiv').style.display = '';
            document.getElementById('resultDiv').innerHTML ="<div class='itemLabel' style='padding-top:4px;'>Total listing count: "+totalcnt+"</div>";
			/*
			 if (for_sale == 0){
                    //propIcon = "http://www.har.com/mapsearch/graphics/RedPointerSmall.gif";
                    gMapObj.customIcon = icon;
                    detailurl ="http://www.har.com/HomeValueIDX/dispsetsoldparam.cfm?mlnum=";

                   // detailurl += mlnum;
                    detailurl += "&ptLat=";
                    detailurl +=latitude;
                    detailurl +="&ptLong=";
                    detailurl += longitude;
                    detailurl +="&ptZip";
                    detailurl += zip;
                    detailurl +="&ptAddress=";
                    detailurl += address;
                    //#latitude#&ptLong=#longitude#&ptZip=#zip#&ptAddress=#address#
                    
                } else{
					 detailurl ="http://search.har.com/idx/dispSearch.cfm?mlnum=";	
				}
			*/
            var property = {};
            for(index = 1; index <= veLatLongs.length-1; index++)      {
                var latitude = latLongTokens[index].split(',')[0];
                var longitude = latLongTokens[index].split(',')[1];
                var address  = latLongTokens[index].split(',')[2];
                var mlnum  = latLongTokens[index].split(',')[3];
                var pid  = latLongTokens[index].split(',')[4];
                var pPrice  = latLongTokens[index].split(',')[5];
                var propclass = latLongTokens[index].split(',')[6];
                var bed = latLongTokens[index].split(',')[7];
                var bath  = latLongTokens[index].split(',')[8];
                var sqft = latLongTokens[index].split(',')[9];
                var sqftsrc = latLongTokens[index].split(',')[10];
                var PropStatus  = latLongTokens[index].split(',')[11];
                var city  = latLongTokens[index].split(',')[12];
                var zip  = latLongTokens[index].split(',')[13];
                var bednum  = latLongTokens[index].split(',')[14];
                var bathnum  = latLongTokens[index].split(',')[15];
                var subdivision = latLongTokens[index].split(',')[16];
                var agentname  = latLongTokens[index].split(',')[17];
                var officename = latLongTokens[index].split(',')[18];
				var detailurl;
                //		alert(latitude+ ','+ longitude+','+pid);
                //number formating
                pPrice = '$'+new NumberFormat(pPrice).toFormatted();
                sqft = new NumberFormat(sqft).toFormatted();
                
				
				gMapObj.customIcon = icon;
				
			
             	 if (for_sale == 0){
                    //propIcon = "http://www.har.com/mapsearch/graphics/RedPointerSmall.gif";
                    gMapObj.customIcon = icon;
                    detailurl ="http://www.har.com/idx/HomeValue/dispSoldDetail.cfm?cid=";
					detailurl += cid;
					detailurl +="&sitetype=";
                    detailurl += sitetype;
					
                    detailurl += "&ptLat=";
                    detailurl +=latitude;
                    detailurl +="&ptLong=";
                    detailurl += longitude;
                    detailurl +="&ptZip=";
                    detailurl += zip;
                    detailurl +="&ptAddress=";
                    detailurl += address;
		              detailurl += "&mlnum=";
					//detailurl += "&mlnum=";
                    //#latitude#&ptLong=#longitude#&ptZip=#zip#&ptAddress=#address#
                    
                } else {
					  detailurl ="http://search.har.com/idx/dispSearch.cfm?cid=";
                    detailurl += cid;
					detailurl +="&sitetype=";
                    detailurl += sitetype;
					detailurl += "&mlnum=";
				}
                	
                //veLatLongs[index] = new VELatLong(latitude, longitude);
                
            
                //{{{ add property push pin to map
                if(latitude && longitude){
                    property = {};
                    property.address = address;
                    property.bedRoomCount = bednum;
                    property.bathRoomCount = bathnum;
                    property.city = city;
                    property.latitude = latitude;
                    property.listingPrice = pPrice;
                    property.longitude = longitude;
                    property.mlnum = mlnum;
                    property.propertyClass = propclass;
                    property.propertyClassId = pid;
                    property.propertyTypeId = null;
                    property.squareFeet = sqft;
                	property.squareFeetSource = sqftsrc;
                	property.status = PropStatus;
                    property.stories = null;
                    property.style = null;
                    property.subdivision = subdivision;
                    property.yearBuilt = null;
                	property.yearBuiltSource = null;
                    property.zip = zip;
                    property.detailurl = detailurl;
					
					property.cid = cid;
                   
                    property.sitetype = sitetype;
					
					
					//alert( property.detailurl);
                    try{
                        id = gMapObj.addPropertyPoint(property);
						//alert(property.cid)
                    }catch(err){
                        Ext.MessageBox.alert('Error', err.message);
                    }
                }                
                //}}}
                //id = pushPinShape.GetID();
                
                maplistinghtml += "<tr onmouseover=\"this.className='tdHover'\" class='tdOff' onmouseout=\"this.className='tdOff';\">"+
                    "<td><input type='Checkbox' id='chkSum_"+id+"' name='sumListMLNUM' value='"+mlnum +"' class='itemText' onclick=\"document.getElementById('chkDtl_"+id+"').checked = this.checked;\"></td>"+
                    "<td class='itemText'><span onclick=\"AddClickablePin('"+ id + "');\" style=\"cursor: pointer; text-decoration: underline;\">"+ address+ "</span></td>"+
                    "<td class='itemText'>"+pPrice+"</td></tr>"
                
                listingvewhtml += "<tr onmouseover=\"this.className='tdHover'\"  class='tdOff' onmouseout=\"this.className='tdOff';\">"+
                    "<td><input type='Checkbox' id='chkDtl_"+id+"' name='dtlListMLNUM' value='"+mlnum+"' class='smBlack' onclick=\"document.getElementById('chkSum_"+id+"').checked = this.checked;\"></td>"+
                    "<td class='itemText'>"+ propclass + "</a></td>"+
                    "<td class='itemText'>"+ address + "</a></td>"+
                    "<td class='itemText'>"+ subdivision +"</td>"+
                    "<td class='itemText'>"+ pPrice +"</td>"+
                    "<td class='itemText'>"+ sqft + sqftsrc +"</td>"+
                    "<td class='itemText'>" + bednum +"/"+ bathnum +"</td>"+
                    "<td class='itemText'>" + PropStatus +"</td></tr>"
                
            }//end for
            
            //alert(maplistinghtml);
            maplistinghtml +="</table>";
            document.getElementById('divMapListings').innerHTML = maplistinghtml;
            
            listingvewhtml+="</table>";
            document.getElementById('divListLoading').innerHTML = listingvewhtml;
            //document.getElementById('divListLoading').style.display = 'block';

            
        }// end if has result
        
		//	 alert(icon);
		//   if(gMapObj.polygonLayer.GetShapeCount() == 0){
   		//   alert(searchType);
		if(searchType !=  'poly' )
		{
				if( zoomListener == null &&  panListener == null )
				{
					zoomListener = google.maps.event.addListener(HAR.map, 'zoom_changed', EventEndCPan);
					panListener  = google.maps.event.addListener(HAR.map, 'dragend', EventEndCPan);
				}
        }else
		{
			// Stop any event that map already be registered
			if (endPanTimer != null)   
        		window.clearTimeout(endPanTimer);

			if( zoomListener != null &&  panListener != null )
			{
				google.maps.event.removeListener(zoomListener);
				google.maps.event.removeListener(panListener);
				zoomListener = null; 
				panListener = null;
			}	
		}
    	

    }catch(err){
        Ext.MessageBox.alert('Exception', err.message);
    }
    
    Ext.get('divMapsearch').unmask();
    if(totalcnt > 0 ){
        HAR.PropertySearchApp.tabs.unhideTabStripItem(1);
        HAR.PropertySearchApp.tabs.activate('rsltTab');
    }else{
        HAR.PropertySearchApp.tabs.hideTabStripItem(1);
        HAR.PropertySearchApp.tabs.activate('instrTab');
        Ext.MessageBox.alert('No Results','There are no results to show.');
    }
    
}



