﻿var loader;

var searchOut;    
var map;
var pinsOnMap;
var curPin;
var overview = false;
var overviewPanToPos = null;
var latePoiPop = null;
var searchPins = null;
var curPage = 1;
var numPages = 0;
var routeAry = new Array();
var orderBy = 'id';
var orderDir = 'ASC';
var popPhoto = false;
var lastOverviewPin = null;
var pageLen = 20;
var lPrice;
var hPrice;
var lBed;
var hBed;
var lBath;
var hBath; 
var city;
var type;
var opentime;
var curBox;

var searchResultCnt = 0;
var searchFirst = null;

var lastOverPin;
var oldImgZ = 0;
var oldTxtZ = 0;
var imageAry;
var thumbAry;
var curImg;
var searchTrackingId;
var firstSearch = false;

function init()
{
    if( pageSize != undefined && pageSize != 0){
        pageLen = pageSize;
    }else{
        if (bare) pageLen = 10;
    }
    
    
    
    if (Utilities.ie6) Utilities.fixPng(document.getElementById('logoImage'));
    searchOut = document.getElementById('searchOut');
    loader = document.getElementById('Loader');
    loader.style.top = Utilities.getAbsoluteTop(document.getElementById('map')) + 364 + "px";
    loader.style.left = Utilities.getAbsoluteLeft(document.getElementById('map')) + 445 + "px";
    showLoader();

    var mapPos = findPos(document.getElementById("map"));
    zoomBuildBar(mapPos);
    
     var myInfoBubble = document.createElement("DIV");
     myInfoBubble.style.position="absolute";
     myInfoBubble.style.zIndex=100000;
     myInfoBubble.style.display="none";
     myInfoBubble.className = 'poiBorder';
     myInfoBubble.style.width = '350px';
     myInfoBubble.style.height = '150px';
     myInfoBubble.onmousedown = function(e) { 
        if (!e) var e = window.event;
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
     };
     myInfoBubble.onmouseup = function(e) {   
        if (!e) var e = window.event;
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
     };
     myInfoBubble.onmousemove = function(e) {
        if (!e) var e = window.event;
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
     };
     
     var poiPointer = document.createElement("IMG");
     poiPointer.src = "schemes/" + scheme + "/pointer.gif";
     poiPointer.style.position="absolute";
     poiPointer.style.top = '152px';
     poiPointer.style.left = '102px';
     poiPointer.style.width = '15px';
     poiPointer.style.height = '10px';
     poiPointer.style.zIndex=100010;
     myInfoBubble.appendChild(poiPointer);

     var closeButton = new Icon("img/poi-close.gif",326,4,19,19);
    
    map = new Map(document.getElementById("map"));
    map.addCopyrightMessage("&#169; 2010 Maps.com. Map data &#169; 2010 Tele Atlas <a href=\"javascript:launchSmall('http://www.decarta.com/legal/TA_TOU.html');\">Terms of Use</a>");
    var zoom = new ZoomController(dzoom);
    map.addZoomController(zoom);
    zoom.hide();
    
    var infoWindow = new InfoWindow(myInfoBubble,90,156,closeButton);
    map.addCustomInfoWindow(infoWindow);
    
  var pos = new Position(dpos);
  map.centerOnPosition(pos, function() {
      pinsOnMap = new Object();
      doSearch(false);
      EventRegistry.addListener(map, "moveend", getPOIData);
      EventRegistry.addListener(map, "zoomend", zoomCheck);
      hideLoader();
      zoomCheck();
      firstSearch = true;
  });
    
    try
    {
    //Lat49
    //var publisherId = '42'; // Use your own publisher Id
    //var iePngFixUrl = "http://192.168.1.200/CCDL3/AppOH/img/iepngfix.htc"; // See step 3
    //Lat49.initAds(publisherId,iePngFixUrl); 
    }
    catch (ex)
    {
    }
}

function getPOIData()
{
    if (zoomLevel > zoomThreshold) return;
    
    var bbox = map.getBoundingBox();
    
    var url = '/CCDL3/AppOH/POIData.ashx?'
        + 'cid=' + clientId
        + '&type=' + clientType
        + '&maxLat=' + bbox.getMaxPosition().lat
        + '&maxLon=' + bbox.getMaxPosition().lon
        + '&minLat=' + bbox.getMinPosition().lat
        + '&minLon=' + bbox.getMinPosition().lon;

    var xmlHttp = getXmlReqObj();
    xmlHttp.onreadystatechange=function()
    {
        if(xmlHttp.readyState==4)
        {
            doPOI(eval('(' + xmlHttp.responseText + ')'));
        }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
  
}

function zoomCheck()
{
    lastOverviewPin = null;
    if (overviewPanToPos != null)
    {
        map.panToPosition(overviewPanToPos);
        overviewPanToPos = null;
    }
    
    if (zoomLevel <= zoomThreshold)
    {
        if (overview)
        {
            map.removeAllPins();
            overview = false;
        }
        getPOIData();
        return;
    } else {
        overview = true;
        map.removeAllPins();
        var url = '/CCDL3/AppOH/OverviewData.ashx?cid=' + clientId
            + '&type=' + clientType;
        var xmlHttp = getXmlReqObj();
        xmlHttp.onreadystatechange=function()
        {
            if(xmlHttp.readyState==4)
            {
                doOverview(eval('(' + xmlHttp.responseText + ')'));
            }
        }
        xmlHttp.open("GET",url,true);
        xmlHttp.send(null);
    }            
}

function doOverview(overviewData)
{
    for(var i=0; i<overviewData.length; i++)
    {
        var pos = new Position(overviewData[i].clat + ' ' + overviewData[i].clon);
        var iconUrl = 'OverviewIcon.ashx?cnt=' + overviewData[i].count + '&city=' + overviewData[i].city;
        var icon = new Icon(iconUrl,60,17,120,34);  
        var pin = new Pin(pos, null, null, icon);       
        pin.pinImg.style.cursor = 'pointer';
        if (Utilities.ie6) Utilities.fixPng(pin.pinImg);
        EventRegistry.addListener(pin,"click", overviewClick);
        EventRegistry.addListener(pin,"mouseover", overviewOver);
        map.addPin(pin);
    }
}

function overviewOver(pin)
{
    if (lastOverviewPin != null)
        lastOverviewPin.pinImg.style.zIndex = 1000;
        
    lastOverviewPin = pin;
    pin.pinImg.style.zIndex = 20000;
}

function overviewClick(pin)
{
    lastOverViewPin = null;
    map.removeAllPins();
    pinsOnMap = new Object();
    overviewPanToPos = pin.getPosition();
    document.getElementById('zb' + zoomLevel).style.backgroundColor = zoomColors[zoomLevel-1];
    zoomLevel = zoomThreshold;
    document.getElementById('zb' + zoomLevel).style.backgroundColor = zoomSelectColor;
    map.getZoomController().zoomToNewLevel(zoomLevel)
}

function doPOI(poiData)
{   
    var bbox = map.getBoundingBoxViewable();
    var keepPins = new Object();
    var zind = 1000;
    
    var cntOnMap = 0;
    
    for(var i=0; i<poiData.length; i++)
    {
 
        //try
        //{
        if (latePoiPop == poiData[i].id)
        {      
            if (pinsOnMap[poiData[i].id])
            {
                //doNearPop(pinsOnMap[poiData[i].id]);
                doLatePop(pinsOnMap[poiData[i].id]);
            }
        }
                    
        if (searchPins != null)
        {
            if (! searchPins[poiData[i].id])
                continue;
        }
        
        
        
        if (bbox.contains(new Position(poiData[i].lat + ' ' + poiData[i].lon)))
            cntOnMap++;   
        
        if (pinsOnMap[poiData[i].id])
        {                   
            keepPins[poiData[i].id] = pinsOnMap[poiData[i].id];
            continue;
        }                  
        
        var pos = new Position(poiData[i].lat + ' ' + poiData[i].lon);
        
        var iconUrl = '/CCDL/icons/' + poiData[i].icon;
        
        var tx = poiData[i].tx;
        if (poiData[i].did.length == 3) tx = tx - 5;
        else if (poiData[i].did.length == 1) tx = tx + 3;
        else if (poiData[i].did.length == 2) tx = tx - 1;
        else if (poiData[i].did.length == 4) tx = tx - 8;
        if( GetDisableNum( poiData[i].opts) == false){
            var over = new TextOverlay(poiData[i].did,tx,poiData[i].ty,"#000000","10pt","verdana");
        }else{
            var over = new TextOverlay("",tx,poiData[i].ty,"#000000","10pt","verdana");
        }
        var icon = new Icon(iconUrl, poiData[i].ax, poiData[i].ay, poiData[i].w, poiData[i].h, over);
        var pin = new Pin(pos, null, null, icon);        
        pin.dataId = poiData[i].id;
        pin.pinImg.style.cursor = 'pointer';
        zind++;
        pin.pinImg.style.zIndex = zind;
        pin.pinTxt.style.cursor = 'pointer';
        zind++;
        pin.pinTxt.style.zIndex = zind;
        if( GetDisableClick( poiData[i].opts) == false)
        {
        EventRegistry.addListener(pin,"click", poiClick);
        }
        EventRegistry.addListener(pin,"mouseover", overPin);

        map.addPin(pin);
        
        pinsOnMap[poiData[i].id] = pin;
        keepPins[poiData[i].id] = pin;
        
        if (latePoiPop == poiData[i].id)
        {
            doLatePop(pin);             
        }               
        //}
        //catch (Ex)
        //{
        //    alert(Ex);
       // }
    }
    
    for(id in pinsOnMap)
    {
        if (! keepPins[id])
        {
            map.removePin(pinsOnMap[id]);
        }
    }
    pinsOnMap = keepPins;
    
    //alert(cntOnMap + ' ' + searchResultCnt);
    
    lastOverPin = null;
    
    if ((cntOnMap == 0) && (searchResultCnt > 0))
    {
        map.panToPosition(new Position(searchFirst.lat + ' ' + searchFirst.lon));
        searchResultCnt = 0;
        getPOIData();
    }  
    
    //Lat49
    var cpos = map.getCenterPosition();
    var adLat = Math.round(cpos.lat*1000)/1000;
    var adLon = Math.round(cpos.lon*1000)/1000;
    //Lat49.updateAdByLatLon('Lat49AD',cpos.lat,cpos.lon,zoomLevel);
    //Lat49.updateAdByLatLon('Lat49AD',adLat,adLon,zoomLevel);
    //Lat49.updateAdByLatLon('Lat49AD',85.051,-179.999,16);
}

function doNearPop(pin)
{
    if (curPin) curPin.hideInfoWindow();
    
    latePoiPop = null;
    poiClick(pin);            
}

function doLatePop(pin)
{
    if (curPin) curPin.hideInfoWindow();
    
    latePoiPop = null;
    setTimeout(function()
    {
        poiClick(pin);
    },2000);            
}

function poiClick(pin)
{   
    showLoader();
    var xmlHttp = getXmlReqObj();
    xmlHttp.onreadystatechange=function()
    {
        if(xmlHttp.readyState==4)
        {
            pin.setMessage(makePoiHTML(eval('(' + xmlHttp.responseText + ')')));
            pin.showInfoWindow();
            map.panToPosition(pin.getPosition());
            curPin = pin;
            if (popPhoto)
            {
                popPhoto = false;
                togglePoiTab('poiPhotoTab');
            }
            hideLoader();
            curBox = document.getElementById('poicbox-' + pin.dataId);
        }
    }
    xmlHttp.open("GET","POIInfoOH.ashx?cid=" + clientId
     + "&id=" + pin.dataId,true);
    xmlHttp.send(null);
}       

function makePoiHTML(data)
{
    var html = '<div id="poiInfoOuter"><!-- ie6 --></div>'
        + '<div id="poiInfoInner"><!-- ie6 --></div>'
        + '<div id="poiLinkInner"><!-- ie6 --></div>'
        + '<div id="poiMainTab" class="poiTab" style="visibility: visible; overflow-y: auto;">'
        + '<table border="0" cellpadding="0" cellspacing="0" class="smTxt">'
        + '<tr><td align="center" width="1%" style="padding: 2px; border-right: solid 1px #666666; border-bottom: solid 1px #666666;" class="poiNumber"><b>' + data.number + '</b></td>';
        
    var rteBox = '<input align="absmiddle" id="poicbox-' + data.id + '" type="checkbox" onclick="toggleRoutePoi(' + data.id + ',this);" title="Check here to add this listing to your route."';
    if (routeAry.indexOf(data.id) > -1) rteBox += ' checked';
    rteBox += ' />';
        
    if (data.featured)
        data.name = '<img src="img/star_gold.gif" />&nbsp;' + data.name;
    
    if (data.name != '')
        html += '<td style="padding-left: 2px;">' + rteBox + '<b>' + data.name + '</b></td>';
    else
        html += '<td style="font-size: 8pt;">' + rteBox + 'Add to route</td>';
        
    var twidth = '100%';
    if ((data.seller.length > 30) || (data.realtor.length > 30)) twidth = '94%';
        
    html += '</tr></table>'
        + '<table border="0" cellpadding="0" cellspacing="0" class="smTxt" width="' + twidth + '">'
        + '<tr><td colspan="2" class="poiInfoCellLeft">' + data.addr + ', ' + capWords(data.city) + '</td></tr>'
        + '<tr><td class="poiInfoCellLeft" valign="top">';
        //+ data.price + '</td>';
    
    if (data.price != '')
        html += data.price + '<br/>';
    
    if (data.bb != '')
        html += data.bb + '<br/>';
    
    var doopen = false;
    
    if (data.open != '')
    { 
        if (data.open.length < 26)
            html += data.open + '<br/>';
        else
            doopen = true;
    }
        
    html += '</td><td align="right" class="poiInfoCellRight" valign="top">';
    
    if (data.seller != '')
        html += data.seller + '<br/>';
    
    if (data.realtor != '')
        html += data.realtor + '<br/>';
        
    if (data.phone != '')
        html += data.phone + '<br/>';
        
    if (data.email != '')
        html += data.email + '<br/>';
    
        
    html += '</td></tr></table>'
        + '</div>'
        + '<div id="poiDetailTab" class="poiTab" style="visibility: hidden;">'
        + '<div style="position: relative;">'
        + '<table border="0" cellpadding="0" cellspacing="0" class="smTxt">'
        + '<tr><td align="center" width="1%" style="padding: 2px; border-right: solid 1px #666666; border-bottom: solid 1px #666666;" class="poiNumber"><b>' + data.number + '</b></td>'
        + '<td style="font-size: 8pt;">' + rteBox + 'Add to route</td></tr></table>';
        
        if (data.url != '')
            html += '<div style="position:absolute; left: 240px; top: 0px;">'
                + '<a href="javascript:launch(\'' + data.url + '\');" style="font-size: 9pt;" title="Go to the listing website.">Go to website</a></div>';
        
        html += '</div><div style="width: 340px; height: 97px; overflow-y: auto; margin-top: 2px; font-size: 9pt;">'
        + data.desc;
        
    if (data.mls != ''){
        html += '<br/>MLS: <a href="javascript:launch(\'' + data.mls + '\');">' + data.mlsNum + '</a>';
     }else if( data.mlsNum != ''){
        html += '<br/>MLS: ' + data.mlsNum;
     }
   if (doopen)
        html += '<br/>' + data.open;
        
        html += '</div></div>'   
        + '<div id="poiPhotoTab" class="poiTab" style="visibility: hidden;">';
        
       if (data.imageUrl != '')
       {
            if (data.imageUrl.indexOf(';') > -1)
            {
                curImg = 0;
                imageAry = data.imageUrl.split(';');
                thumbAry = data.thumbUrl.split(';');
                html += '<a href="javascript:togglePoiTab(\'poiMainTab\');" style="font-size: 9pt;">&lt;&nbsp;main</a><br/><center>'
                + '<table width="100%" cellpadding="0" cellspacing="0"><tr><td align="center" valign="middle">'
                + '<a id="mainTgt" href="javascript:launchSmall(\'' + imageAry[0] + '\');">'
                + '<img src="' + thumbAry[0] + '" height="85" border="0" id="thmbTgt" />'
                + '</a></td></tr>'
                + '<tr><td align="center" style="font-size: 9pt; padding-top: 3px;">'
                + '<img src="img/arw-l.gif" style="margin-right: 5px; cursor: pointer;" onclick="imageMove(-1);" />'
                + '<span id="imgTxt" style="width: 35px; text-align: center;">1 of ' + imageAry.length + '</span>'
                + '<img src="img/arw-r.gif" style="margin-left: 5px; cursor: pointer;" onclick="imageMove(1);" />'
                + '</td></tr></table></center>'                 
            }
            else
            {
                html += '<a href="javascript:togglePoiTab(\'poiMainTab\');" style="font-size: 9pt;">&lt;&nbsp;main</a><br/><center>'
                + '<table width="100%" cellpadding="0" cellspacing="0"><tr><td align="center" valign="middle">'
                + '<a href="javascript:launchSmall(\'' + data.imageUrl + '\');">'
                + '<img src="' + data.thumbUrl + '" height="85" border="0" />'
                + '</a></td></tr>'
                + '<tr><td align="center" style="font-size: 9pt;">Click on the picture to see a larger version.</td></tr></table></center>'
            }
        }        
    
        html += '</div><div id="poiSub"><div style="margin-left: 3px; margin-top: 0px;">'        
        + '<a href="javascript:togglePoiTab(\'poiMainTab\');" style="color: #ffffff;">Main</a>&nbsp;&nbsp;&nbsp;';
        
    if ((data.desc != '') || (data.url != '') || doopen)
        html += '<a href="javascript:togglePoiTab(\'poiDetailTab\');" style="color: #ffffff;" title="Click here for further details.">Details</a>&nbsp;&nbsp;&nbsp;';
    
    if (data.imageUrl != '')
        html += '<a href="javascript:togglePoiTab(\'poiPhotoTab\');" style="color: #ffffff;" title="Click to view a photo of this listing.">Photo</a>&nbsp;&nbsp;&nbsp;';
    
    if (data.url != '')
        html += '<a href="javascript:launch(\'' + data.url + '\');" style="color: #ffffff;" title="Click to visit the web site.">Website</a>&nbsp;&nbsp;&nbsp;'
           
    
    html += '<a href="javascript:goDirections(\'' + data.id + '\');" style="color: #ffffff;" title="Get driving directions to this location.">Directions</a>'
        + '&nbsp;&nbsp;&nbsp;'
        + '<a href="javascript:goEmail(\'' + data.id + '\',\'' + data.number + '\');" style="color: #ffffff;" title="Email listing address and details to yourself.">Email</a>'
        + '&nbsp;&nbsp;&nbsp;'
        + '<a href="javascript:goSMS(\'' + data.id + '\',\'' + data.number + '\');" style="color: #ffffff;" title="Text message details to your mobile phone.">Send to Phone</a>'

        + '</div></div>';
        
    return html;
}

function goSMS(id, did)
{
    //launchSmall("Send2Phone.aspx?id=" + id + "&did=" + did);
    window.open("Send2Phone.aspx?id=" + id + "&did=" + did ,"Window1","menubar=no,width=400,height=175,toolbar=no,location=no,status=no");
}

function goEmail(id, did)
{
    //launchSmall("Email.aspx?id=" + id + "&did=" + did);
    window.open("Email.aspx?id=" + id + "&did=" + did ,"Window1","menubar=no,width=400,height=185,toolbar=no,location=no,status=no");
}

function togglePoiTab(tabName)
{
    document.getElementById('poiMainTab').style.visibility = 'hidden';
    document.getElementById('poiDetailTab').style.visibility = 'hidden';
    document.getElementById('poiPhotoTab').style.visibility = 'hidden';
    document.getElementById(tabName).style.visibility = 'visible';
}

function goToLink(id, lat, lon, featured)
{
    if (lat == "0")
    {
        alert("I'm sorry we couldn't find that location.");
        return;    
    }

    var fs = firstSearch;
    firstSearch = false;
    if (featured) resetSearch();
    firstSearch = fs;
    
    if (overview)
    {
        map.removeAllPins();
        pinsOnMap = new Object();
        latePoiPop = id;
        overviewPanToPos = new Position(lat + ' ' + lon);
        zoomButtonClick(document.getElementById('zb4'));                   
    } else {
        map.panToPosition(new Position(lat + ' ' + lon));
        latePoiPop = id;
        getPOIData();
    }
    
    scroll(0,Utilities.getAbsoluteTop(document.getElementById('map')));
}

function goToPhoto(id, lat, lon)
{
    popPhoto = true;
    goToLink(id, lat, lon);
}

function goToRefBox()
{
    resetSearch();
    
    var ref = document.getElementById('RefBox').value;  
    var xmlHttp = getXmlReqObj();
    xmlHttp.onreadystatechange=function()
    {
        if(xmlHttp.readyState==4)
        {
            var coords = eval('(' + xmlHttp.responseText + ')');
            if (coords.lat == "0")
            {
                alert("I'm sorry we couldn't find that location.");
            } else
            {
                goToLink(coords.id, coords.lat, coords.lon);
            }
        }
    }
    xmlHttp.open("GET","RefGo.ashx?cid=" + clientId + "&id=" + ref,true);
    xmlHttp.send(null);  
}


function resetSearch()
{
    if(document.getElementById('LowPriceBox'))
        document.getElementById('LowPriceBox').selectedIndex = 0;
    if(document.getElementById('HighPriceBox'))
        document.getElementById('HighPriceBox').selectedIndex = document.getElementById('HighPriceBox').options.length - 1;
    if (document.getElementById('LowBedBox'))
        document.getElementById('LowBedBox').selectedIndex = 0;
    if (document.getElementById('HighBedBox'))
        document.getElementById('HighBedBox').selectedIndex = document.getElementById('HighBedBox').options.length - 1;
    if (document.getElementById('LowBathBox'))
        document.getElementById('LowBathBox').selectedIndex = 0;
    if (document.getElementById('HighBathBox'))
        document.getElementById('HighBathBox').selectedIndex = document.getElementById('HighBathBox').options.length - 1;
    if (document.getElementById('CityBox'))
        document.getElementById('CityBox').selectedIndex = -1;
    if (document.getElementById('TypeBox'))
        document.getElementById('TypeBox').selectedIndex = -1;
    if (document.getElementById('OpenBox'))
        document.getElementById('OpenBox').selectedIndex = -1;
   
    doSearch( false);
    /////////////////////////////////////////////////////// change
   /*
    */
}

function getSearchUrl(si)
{
    si = ((si - 1) * pageLen) + 1;

    return "SearchOH.ashx?cid=" + clientId
        + "&si=" + si
        + "&lPrice=" + lPrice
        + "&hPrice=" + hPrice
        + "&lBed=" + lBed
        + "&hBed=" + hBed
        + "&lBath=" + lBath
        + "&hBath=" + hBath
        + "&city=" + city
        + "&type=" + type
        + "&open=" + opentime
        + "&oby=" + orderBy
        + "&odir=" + orderDir
        + "&pageLen=" + pageLen;
}

function doSearch( zoomPastOverview)
{
    //clearRoute();
    if (curPin) curPin.hideInfoWindow();
    
    orderBy = 'id';
    orderDir = 'ASC';
    
    if (document.getElementById('LowPriceBox'))
        lPrice = document.getElementById('LowPriceBox').value;
    else lPrice = 0;
    if (document.getElementById('HighPriceBox'))
        hPrice = document.getElementById('HighPriceBox').value;
    else hPrice = 99999999;
    if (document.getElementById('LowBedBox'))
        lBed = document.getElementById('LowBedBox').value;
    else lBed = 0;
    if (document.getElementById('HighBedBox'))
        hBed = document.getElementById('HighBedBox').value;
    else hBed = 99;
    if (document.getElementById('LowBathBox'))
        lBath = document.getElementById('LowBathBox').value;
    else lBath = 0;
    if (document.getElementById('HighBathBox'))
        hBath = document.getElementById('HighBathBox').value;
    else hBath = 99;
    
    city = '';
    if (document.getElementById('CityBox'))
    {
        var cityBox = document.getElementById('CityBox');
        for (var i=0; i<cityBox.options.length; i++)
        {
            if (cityBox.options[ i ].selected)
                city += cityBox.options[i].value + ':';
        }
    }
    
    type = '';
    if (document.getElementById('TypeBox'))
    {
        var typeBox = document.getElementById('TypeBox');
        for (var i=0; i<typeBox.options.length; i++)
        {
            if (typeBox.options[ i ].selected)
                type += typeBox.options[i].value + ':';
        }
    }
    
    opentime = '';
    if (document.getElementById('OpenBox'))
    {
        var openBox = document.getElementById('OpenBox')
        for (var i=0; i<openBox.options.length; i++)
        {
            if (openBox.options[ i ].selected)
                opentime += openBox.options[i].value + ':';
        }
    }
    
    var searchUrl = getSearchUrl(1);
    
   // searchOut.innerHTML = searchUrl;
   // return;
    
    var searchBtn = document.getElementById('searchButton');
    var resetBtn = document.getElementById('resetButton');
    searchOut.innerHTML = 'Please wait...<br/>&nbsp;';
    searchBtn.src = 'schemes/' + scheme + '/search-btn-dis.gif';
    searchBtn.disabled = true;   
    
    try
    {
        var xmlHttp = getXmlReqObj();
        xmlHttp.onreadystatechange=function()
        {
            if(xmlHttp.readyState==4)
            {                    
                var searchRet = eval('(' + xmlHttp.responseText + ')');
                searchResultCnt = searchRet.resultCount;
                searchTrackingId = searchRet.trackingId;
                
                if (searchRet.searchPins[0] == 'all')
                {
                    searchPins = null;
                    searchOut.innerHTML = 'Search for listings<br/>using this form.';
                    resetBtn.disabled = true;
                    resetBtn.src = 'schemes/' + scheme + '/reset-btn-dis.gif';
                    searchResultCnt = 0;
                }
                else
                {
                    searchPins = new Object();               

                    for (var i=0; i<searchRet.searchPins.length; i++)
                    {
                        searchPins[searchRet.searchPins[i]] = true;
                    }
                    
                    searchOut.innerHTML = "Showing <b>" + searchRet.resultCount + "</b> listings that<br/>"
                    + "match your search criteria.";    
                    
                    resetBtn.disabled = false;
                    resetBtn.src = 'schemes/' + scheme + '/reset-btn.gif'; 
                } 
                
                numPages = Math.floor(searchRet.resultCount / pageLen);
                
                if ((searchRet.resultCount % pageLen) > 0) numPages++;
                curPage = 1;
                
                buildTable(searchRet.infoSet);
               
                if (! overview)
                {
                    pinsOnMap = new Object();
                    map.removeAllPins();
                    getPOIData();
                }    
                if( zoomPastOverview == true && zoomLevel > zoomThreshold){
                
                    setTimeout(function()
                    {
                         zoomButtonClick(document.getElementById('zb' + zoomThreshold));
                    },500);   
                } 
                
                searchBtn.src = 'schemes/' + scheme + '/search-btn.gif';
                searchBtn.disabled = false;
                
                if (window.imLid)
                {
                    if (imLid != null)
                    {
                        var lid = imLid;
                        imLid = null;
                        document.getElementById('RefBox').value = lid;
                        goToRefBox();                        
                    }
                }
            }
        }
        xmlHttp.open("GET",searchUrl,true);
        xmlHttp.send(null);
    }
    catch (ex)
    {
        searchOut.innerHTML = "There was an error performing your search.";
        searchBtn.src = 'schemes/' + scheme + '/search-btn.gif';
        searchBtn.disabled = false;
    }

    if (firstSearch) {
        firstSearch = false;
        popEmailSearch();
    }              
}

function changePage(page)
{
    var searchUrl = getSearchUrl(page);
    
    var xmlHttp = getXmlReqObj();
    xmlHttp.onreadystatechange=function()
    {
        if(xmlHttp.readyState==4)
        {   
            var searchRet = eval('(' + xmlHttp.responseText + ')');                 
            curPage = page;
            buildTable(searchRet.infoSet);
        }
    }
    xmlHttp.open("GET",searchUrl,true);
    xmlHttp.send(null);
}

function buildTable(data)
{

    var out = document.getElementById('searchTable');
	
    if (out.getElementsByTagName('table').length > 0)
    {
        var tbl = out.getElementsByTagName('table')[0];
        out.removeChild(tbl);
        checkRouteEnablers();
    }
    
    var tbl = document.createElement('table');
    tbl.cellSpacing = 1;
    tbl.cellPadding = 0;
    tbl.border = 0;
    tbl.className = 'searchTable';
	
    var tbody = document.createElement('tbody');   
	
    var hdrRow = document.createElement('tr');
    hdrRow.className = 'searchTableHeader';
    
    var rteHdr = document.createElement('th');
    rteHdr.width = '30';
    rteHdr.align = 'center';
    rteHdr.appendChild(document.createTextNode('Rte'));
    var idHdr = document.createElement('th');
    idHdr.width = '34';
    idHdr.align = 'center';
    var idHdrLink = document.createElement('a');
    idHdrLink.className = 'pagerLink';
    idHdrLink.href = "javascript:sortSearch('id');";
    idHdrLink.appendChild(document.createTextNode('ID'));
    idHdrLink.title = 'Click here to sort the listings by their number.';
    idHdr.appendChild(idHdrLink);
    var addrHdr = document.createElement('th');
    addrHdr.width = '197';
    var addrHdrLink = document.createElement('a');
    addrHdrLink.className = 'pagerLink';
    addrHdrLink.href = "javascript:sortSearch('city');";
    addrHdrLink.appendChild(document.createTextNode('Location'));
    addrHdrLink.title = 'Click here to sort the listings by city.';
    addrHdr.appendChild(addrHdrLink);
    var bedHdr = document.createElement('th');
    bedHdr.width = '32';
    bedHdr.align = 'center';
    var bedHdrLink = document.createElement('a');
    bedHdrLink.className = 'pagerLink';
    bedHdrLink.href = "javascript:sortSearch('beds');";
    bedHdrLink.appendChild(document.createTextNode('Bed'));
    bedHdrLink.title = 'Click here to sort the listings by number of beds.';
    bedHdr.appendChild(bedHdrLink);
    var bathHdr = document.createElement('th');
    bathHdr.width = '32';
    bathHdr.align = 'center';
    var bathHdrLink = document.createElement('a');
    bathHdrLink.className = 'pagerLink';
    bathHdrLink.href = "javascript:sortSearch('baths');";
    bathHdrLink.appendChild(document.createTextNode('Bth'));
    bathHdrLink.title = 'Click here to sort the listings by number of baths.';
    bathHdr.appendChild(bathHdrLink);
    var priceHdr = document.createElement('th');
    priceHdr.width = '80';
    priceHdr.align = 'center';
    var priceHdrLink = document.createElement('a');
    priceHdrLink.className = 'pagerLink';
    priceHdrLink.href = "javascript:sortSearch('price');";
    priceHdrLink.appendChild(document.createTextNode('Price'));
    priceHdrLink.title = 'Click here to sort the listings by price.';
    priceHdr.appendChild(priceHdrLink);
    var openHdr = document.createElement('th');
    openHdr.width = '105';
    openHdr.appendChild(document.createTextNode('Open Times'));
    var gotoHdr = document.createElement('th');
    gotoHdr.width = '28';    

    hdrRow.appendChild(rteHdr);
    hdrRow.appendChild(idHdr);
    hdrRow.appendChild(addrHdr);
    hdrRow.appendChild(bedHdr);
    hdrRow.appendChild(bathHdr);
    hdrRow.appendChild(priceHdr);
    hdrRow.appendChild(openHdr);
    hdrRow.appendChild(gotoHdr);
    
    tbody.appendChild(hdrRow);
    
    var blankLinesToDraw = 0;
    var actualLineNum = 0;
    for(var i=0; i<pageLen; i++)
    {
      
        
        if (i == 0) searchFirst = data[i];
        
        var row = document.createElement('tr');
        
        if (actualLineNum % 2) 
            row.className = 'searchTableAltRow';
        else
            row.className = 'searchTableRow';
            
            
        
        
        if ((data[i] != null) && !GetDisableList(data[i].opts))
        {
            actualLineNum++;
            var rtecell = document.createElement('td');
            var rteChk = document.createElement('input');
            rteChk.id = 'chk-' + data[i].id
            rteChk.type = 'checkbox';
            if (rteChk.addEventListener)
            {
	            rteChk.addEventListener('click', checkRouteEnablers, false); 
            } else if (rteChk.attachEvent){			
	            rteChk.attachEvent('onclick', checkRouteEnablers);
            }
            if ((data[i].lat == '0') && (data[i].lon == '0'))
                rteChk.disabled = true;
            rteChk.title = 'Using these checkboxes you can plan a route between multiple stops.';
            rtecell.align = 'center';
            rtecell.appendChild(rteChk);
            
            if (routeAry.indexOf(data[i].id) > -1)
            {
                rteChk.checked = true;
                rteChk.defaultChecked = true;
            }
            else rteChk.checked = false;
    		
            var idcell = document.createElement('td');
            idcell.align = 'center';
            if (data[i].featured)
                idcell.style.fontWeight = 'bold';            
            idcell.appendChild(document.createTextNode(data[i].number));
            var addrcell = document.createElement('td');
            addrcell.style.paddingLeft = '2px';
            
            var addrText = capWords(data[i].addr);
            
            if (data[i].photo > 0)
            {
                var photoimg = 'photo.gif';
                if (data[i].photo > 1) photoimg = 'mphoto.gif';
                addrText = '<a href="javascript:goToPhoto(\'' + data[i].id + '\',\'' + data[i].lat + '\',\'' + data[i].lon + '\');"><img src="img/' + photoimg + '" border="0" /></a>&nbsp;' + addrText;
            }                  
            
            if (data[i].featured)
            {
                addrcell.style.fontWeight = 'bold';
                addrText = '<img src="img/star_gold.gif" />&nbsp;' + addrText;                
            }

            var addrspan = document.createElement('span');
            addrspan.innerHTML = addrText;
            addrcell.appendChild(addrspan);

            var bedcell = document.createElement('td');
            bedcell.align = 'center';
            var beds = data[i].beds;
            if (beds == 0) beds= 'n/a';
            else if (beds == 0.5) beds = 'Stu';
            bedcell.appendChild(document.createTextNode(beds));
            var bathcell = document.createElement('td');
            bathcell.align = 'center';
            var baths = data[i].baths;
            if (baths == 0) baths = 'n/a';
            bathcell.appendChild(document.createTextNode(baths));
            var pricecell = document.createElement('td');
            pricecell.align = 'center';
            pricecell.appendChild(document.createTextNode(data[i].price));
            var opencell = document.createElement('td');
            opencell.style.paddingLeft = '2px';
            opencell.appendChild(document.createTextNode(data[i].open));
            var goTocell = document.createElement('td');
            goTocell.align = 'center';
            var goToLink = document.createElement('a');
            goToLink.href = 'javascript:goToLink("' + data[i].id + '","' + data[i].lat + '","' + data[i].lon + '");';
            //goToLink.appendChild(document.createTextNode('Go To'));
            goToLink.innerHTML = 'Go<br/>To';
            goToLink.title = 'Click to go directly to this listing';
            goTocell.appendChild(goToLink);
            
            row.appendChild(rtecell);
            row.appendChild(idcell);
            row.appendChild(addrcell);
            row.appendChild(bedcell);
            row.appendChild(bathcell);
            row.appendChild(pricecell);
            row.appendChild(opencell);
            row.appendChild(goTocell);
            tbody.appendChild(row);
        } else
        {
            blankLinesToDraw++;
            
        }
        
        
         
               
    }
    
    for( var k = 0; k < blankLinesToDraw; k++){
            
            var row = document.createElement('tr');
            
            if ((pageLen - blankLinesToDraw + k) % 2) 
                row.className = 'searchTableAltRow';
            else
                row.className = 'searchTableRow';
            var rte = document.createElement('td');
            var rteChk = document.createElement('input');
            rteChk.disabled = true;
            rteChk.type = 'checkbox';
            rte.align = 'center';
            rte.appendChild(rteChk);
            row.appendChild(rte);
            for (var j=0; j<7; j++)
            {
                var emptyCell = document.createElement('td');
                emptyCell.innerHTML = '&nbsp;<br/>&nbsp;';
                row.appendChild(emptyCell);
            }
            
            tbody.appendChild(row);
    }
	
    var pagerRow = document.createElement('tr');
    pagerRow.className = 'searchTableHeader';
    var pagerCell = document.createElement('td');
    pagerCell.colSpan = 8;
    pagerCell.id = 'pager';

    var lowPage = curPage - 5;
    var adjustHigh = 0;
    if (lowPage < 1){
        adjustHigh = -lowPage;
        lowPage = 1;
    }
    else
    {
        var tmp = lowPage - 5;
        if (tmp < 1) tmp = 1;
        var DpageLink = document.createElement('a');
        DpageLink.className = 'pagerLink';
	    DpageLink.href = 'javascript:changePage(' + tmp + ');';
	    DpageLink.appendChild(document.createTextNode('<'));
	    DpageLink.style.marginLeft = '3px';
	    DpageLink.style.marginRight = '3px';
	    pagerCell.appendChild(DpageLink);
    }
    
    var highPage = curPage + 5 + adjustHigh;
    if (highPage > numPages) highPage = numPages;

    for(var i=lowPage; i<=highPage; i++)
    {
        if (i == curPage)
        {
	        var pageLink = document.createElement('span');
	        //pageLink.style.marginLeft = '3px';
	        pageLink.style.marginRight = '3px';
	        pageLink.appendChild(document.createTextNode(i));
	        pagerCell.appendChild(pageLink);
        }
        else
        {
	        var pageLink = document.createElement('a');
	        pageLink.className = 'pagerLink';
	        pageLink.href = 'javascript:changePage(' + i + ');';
	        pageLink.appendChild(document.createTextNode(i));
	        pageLink.style.marginLeft = '3px';
	        pageLink.style.marginRight = '3px';
	        pagerCell.appendChild(pageLink);
        }
    }
    
    if (highPage != numPages)
    {
        var tmp = highPage + 5;
        if (tmp > numPages) tmp = numPages;
        var ApageLink = document.createElement('a');
        ApageLink.className = 'pagerLink';
	    ApageLink.href = 'javascript:changePage(' + tmp + ');';
	    ApageLink.appendChild(document.createTextNode('>'));
	    ApageLink.style.marginLeft = '3px';
	    //ApageLink.style.marginRight = '3px';
	    pagerCell.appendChild(ApageLink);
    }   

    pagerRow.appendChild(pagerCell);
    tbody.appendChild(pagerRow);
    
    tbl.appendChild(tbody);
    out.appendChild(tbl);
}

function toggleRoutePoi(id, box)
{   
    if(box.checked)
    {
        if (routeAry.indexOf(id) == -1)
            routeAry.push(id);
    }
	else
	{
	    if (routeAry.indexOf(id) > -1)
	        routeAry.splice(routeAry.indexOf(id),1);
	}
	
	var out = document.getElementById('searchTable');
	
	if (out.getElementsByTagName('table').length > 0)
	{
		var tbl = out.getElementsByTagName('table')[0];
		var chkBoxs = tbl.getElementsByTagName('input');
		for(var i=0; i<chkBoxs.length; i++)
		{
		    var chkid = chkBoxs[i].id.substr(4,chkBoxs[i].id.length);
		    if (chkid == id)
		        chkBoxs[i].checked = box.checked;
		}
    }
    var disble = true;
    if (routeAry.length > 0) disable = false;
	
	toggleRouteButtons(disable);
}

function checkRouteEnablers()
{    
	var disable = true;
	var out = document.getElementById('searchTable');
	
	if (out.getElementsByTagName('table').length > 0)
	{
		var tbl = out.getElementsByTagName('table')[0];
		var chkBoxs = tbl.getElementsByTagName('input');
		for(var i=0; i<chkBoxs.length; i++)
		{
		    var id = chkBoxs[i].id.substr(4,chkBoxs[i].id.length);
		    	    
		    if(chkBoxs[i].checked)
		    {
		        if (routeAry.indexOf(id) == -1)
		            routeAry.push(id);
		    }
			else
			{
			    if (routeAry.indexOf(id) > -1)
			        routeAry.splice(routeAry.indexOf(id),1);
			}
			if (curBox)
			{
			    if (curBox.id.substr(8,curBox.id.length) == id)
			        curBox.checked = chkBoxs[i].checked;
			}
		}
	}

	if (routeAry.length > 0) disable = false;
	
	toggleRouteButtons(disable);
}

function doRoute()
{
	var stopReq = '';
	for(var i=0; i<routeAry.length; i++)
	{
		stopReq += routeAry[i] + ',';
	}
	if (stopReq == '')
	{
	    alert("You must check some locations to get a route.");
	    return;
	}
	
	goDirections(stopReq.substr(0,stopReq.length-1));
}

function goDirections(stops)
{
    if (!bare)
    {
        var dirUrl = 'Directions.aspx?cid=' + clientId + '&stops=' + stops;
        window.open(dirUrl);
    }
    else
    {
        //var dirUrl = 'BareBonesDD.aspx?cid=' + clientId + '&stops=' + stops;
        var dirUrl = 'Directions.aspx?cid=' + clientId + '&stops=' + stops;
        
        window.open(dirUrl,'DD','width=600,height=750,resizable=yes,scrollbars=yes');
    }
}

function clearRoute()
{
	routeAry = new Array();
	
	var out = document.getElementById('searchTable');
	
	if (out.getElementsByTagName('table').length > 0)
	{
		var tbl = out.getElementsByTagName('table')[0];
		var chkBoxs = tbl.getElementsByTagName('input');
		for(var i=0; i<chkBoxs.length; i++)
		{
			chkBoxs[i].checked = false;
		}
	}
	toggleRouteButtons(true);
	
	if (curBox)
	    curBox.checked = false;
}

function toggleRouteButtons(state)
{
    var rteBtn = document.getElementById('routeButton');
	var clrBtn = document.getElementById('clearRouteButton');
	
	if (! state)
	{
	    rteBtn.src = 'schemes/' + scheme + '/route-btn.gif';
	    clrBtn.src = 'schemes/' + scheme + '/clear-rte-btn.gif';
	} else {
	    rteBtn.src = 'schemes/' + scheme + '/route-btn-dis.gif';
	    clrBtn.src = 'schemes/' + scheme + '/clear-rte-btn-dis.gif';
	}
}

function sortSearch(tag)
{
    if (orderBy == tag)
    {
        if (orderDir == 'ASC')
            orderDir = 'DESC';
        else
            orderDir = 'ASC';
    } else
    {
        orderBy = tag;
        orderDir = 'ASC';
    }
    
    changePage(curPage);
}

function setType(type)
{
    map.setMapType(type);
}

function overPin(pin)
{
    
    if (lastOverPin != null)
    {
        lastOverPin.pinImg.style.zIndex = oldImgZ;
        lastOverPin.pinTxt.style.zIndex = oldTxtZ;
    }
        
    lastOverPin = pin;
    var iz = pin.pinImg.style.zIndex;
    if (iz != 20000) oldImgZ = iz;
    var tz = pin.pinTxt.style.zIndex;
    if( tz != 20001) oldTxtZ = tz;
    pin.pinImg.style.zIndex = 20000;
    pin.pinTxt.style.zIndex = 20001;
}

function imageMove(dir)
{
    curImg = curImg + dir;
    if (curImg < 0) curImg = imageAry.length - 1;
    if (curImg >= imageAry.length) curImg = 0;
    
    document.getElementById('thmbTgt').src = thumbAry[curImg];
    document.getElementById('mainTgt').href = "javascript:launchSmall('" + imageAry[curImg] + "');";
    document.getElementById('imgTxt').innerHTML = (curImg+1) + ' of ' + imageAry.length;
}

function resetMapToCenter()
{
    //zoomButtonClick(document.getElementById('zb' + dzoom));
    overviewPanToPos = new Position(dpos);
    setTimeout(function()
    {
         zoomCheck();
    },2000);   
}

function popEmailSearch(){
        window.open("EmailSearch.aspx?tid=" + searchTrackingId ,"Window1","menubar=no,width=400,height=300,toolbar=no,location=no,status=no");
}


function GetDisableNum(opts)
{
    if (opts >= 4) return true;
    else return false;
}

function GetDisableClick(opts)
{
    if ((opts % 4) >= 2) return true;
    else return false;
}

function GetDisableList(opts)
{
    if( (opts % 2) >= 1) return true;
    else return false;
}


