﻿
var TOTAL_MARKER = 100;
var current_offset = 0;
var dhtml = new Dhtml();
var ajax = new Ajax();
var map = null;
var gmarkers = [];
var atmaddressList = [];
var bounds = new GLatLngBounds();
var displayResult_html = '';
var recordCount = 0;
var selectedIndex = -1;
var currentInfowindowIndex = -1;
var directionObj = null;
var geoCoderObj = null;
addarr= [];
var panFlag = false;
var panLat = 0;
var panLng = 0;
var searchby  = '';
var routeaddB ='';
var routeaddA ='';
var SetBounds = true ;
var searchlatitude = "" ;
var searchlongitude = "" ;

function handleSubmit(e) {
	var code =e.keyCode;
	if(code == 13) {
	    //document.getElementById('address').value='';document.getElementById('address').className='inputtextactive';
	    searchByText();
	}
}

function resize() {
	dhtml.setBounds('sliderTopLeft',leftMargin,topMargin,null,null);
	dhtml.setBounds('sliderTopMiddle',parseInt(leftMargin) + roundCornerImageWidth,topMargin,leftPanelWidth - parseInt(roundCornerImageWidth * 2),null);
	dhtml.setBounds('sliderTopRight',parseInt(leftMargin)+(leftPanelWidth - parseInt(roundCornerImageWidth )),topMargin,null,null);
	
	dhtml.setBounds('sliderMiddle',leftMargin,topMargin + roundCornerImageHeight,leftPanelWidth-(borderWidth *2),(leftPanelHeight - parseInt(roundCornerImageHeight * 2)));
    
    dhtml.setBounds('sliderBottomLeft',leftMargin,topMargin + (leftPanelHeight - roundCornerImageHeight) ,null,null);
    dhtml.setBounds('sliderBottomMiddle',leftMargin + roundCornerImageWidth,topMargin + (leftPanelHeight - roundCornerImageHeight) ,leftPanelWidth - parseInt(roundCornerImageWidth * 2),null);
    dhtml.setBounds('sliderBottomRight',leftMargin + (leftPanelWidth - parseInt(roundCornerImageWidth )),topMargin + (leftPanelHeight - roundCornerImageHeight) ,null,null);


    dhtml.setBounds('topLeft',(leftMargin + leftPanelWidth + vspace),topMargin,null,null);
    dhtml.setBounds('topMiddle',(leftMargin + leftPanelWidth + vspace) + roundCornerImageWidth,topMargin,mapPanelWidth - (roundCornerImageWidth * 2),roundCornerImageHeight -1);
    dhtml.setBounds('topRight',(leftMargin + leftPanelWidth + vspace)+ mapPanelWidth - roundCornerImageWidth,topMargin,null,null);
    dhtml.setBounds('mapToolbar',(leftMargin + leftPanelWidth + vspace),(topMargin + roundCornerImageHeight),mapPanelWidth-2,mapToolbarHeight);
    dhtml.setBounds('map',(leftMargin + leftPanelWidth + vspace),topMargin + roundCornerImageHeight + mapToolbarHeight + (borderWidth * 4),mapPanelWidth-2,mapPanleHeight - ((roundCornerImageHeight * 2)+ mapToolbarHeight + 4));
    
    dhtml.setBounds('progress',(leftMargin + leftPanelWidth + vspace)+1,topMargin + roundCornerImageHeight + mapToolbarHeight + (borderWidth * 4),mapPanelWidth-2,mapPanleHeight - ((roundCornerImageHeight * 2)+ mapToolbarHeight + 4));
    
    dhtml.setBounds('bottomLeft',(leftMargin + leftPanelWidth + vspace),topMargin + mapPanleHeight -roundCornerImageHeight,null,null);
    dhtml.setBounds('bottomMiddle',(leftMargin + leftPanelWidth + vspace)+ roundCornerImageWidth,topMargin + mapPanleHeight -roundCornerImageHeight,mapPanelWidth - (roundCornerImageWidth * 2),null);
    dhtml.setBounds('bottomRight',leftMargin + leftPanelWidth + vspace + mapPanelWidth - roundCornerImageWidth,topMargin + mapPanleHeight -roundCornerImageHeight,null,null);

    dhtml.setBounds('searchInput',leftMargin,0,(leftPanelWidth-borderWidth*3),searchInputHeight);
    dhtml.setBounds('searchResult',leftMargin,0,(leftPanelWidth-borderWidth*3),(leftPanelHeight - ((roundCornerImageHeight *2)+ (sliderHeight * 3)+searchBoxHeight +(sliderSpace *3)+searchResultHeight)));
    dhtml.setBounds('directionResult',leftMargin,0,(leftPanelWidth-borderWidth*3),(leftPanelHeight - ((roundCornerImageHeight *2)+ (sliderHeight * 3)+searchBoxHeight+(sliderSpace *3)+5)));
    dhtml.setBounds('directionText',leftMargin,0,null,(leftPanelHeight - ((roundCornerImageHeight *2)+ (sliderHeight * 3)+searchBoxHeight+110)));
}

function init() {
    //document.getElementById('slider1').className = 'selectedSlider'
    if (GBrowserIsCompatible()) {
    
        if(parseInt(screenWidth) > 0 && parseInt(screenHeight) > 0 ) {
            document.getElementById('sliderMiddle').style.height = (parseInt(screenHeight) - 145) + 'px';//'650px';     // 1280 X 800;
            document.getElementById('searchInput').style.height = (parseInt(screenHeight) - 238) + 'px';//'562px';
            document.getElementById('searchResult').style.height = (parseInt(screenHeight) - 277) + 'px';//'522px';
            document.getElementById('directionText').style.height = (parseInt(screenHeight) - 305) + 'px';//'495px';
            document.getElementById('topMiddle').style.width = (parseInt(screenWidth) - 280) + 'px';//'1000px';
            document.getElementById('bottomMiddle').style.width = (parseInt(screenWidth) - 280) + 'px';//'1000px';
            document.getElementById('map').style.width = (parseInt(screenWidth) - 264) + 'px';//'1016px';
            document.getElementById('map').style.height = (parseInt(screenHeight) - 167) + 'px';//'653px';         
            
            mapPanelWidth = ((parseInt(screenWidth) - leftMargin) - vspace) - leftPanelWidth -20;
            mapPanleHeight = ((parseInt(screenHeight)-topMargin) - mapToolbarHeight)- (roundCornerImageHeight *2)- 80;
            leftPanelHeight = ((parseInt(screenHeight)-topMargin) - (roundCornerImageHeight *2)) - 100;
            resize();
            
            dhtml.hideElement('fullscreenMenu');
        }
        else {
            resize();
        }
        
        
        map = new GMap2(document.getElementById("map"));
        
		map.enableScrollWheelZoom();
		map.enableContinuousZoom();
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		if(addTXT != null && addTXT.length > 0 ) 
		{
		    document.getElementById('address').value = addTXT;
		    searchByText();
		}
		else
		{
		    map.setCenter(new GLatLng(OnloadLatitude,OnloadLongitude), 13);
		    findNear(map);
		}
		
		GEvent.addListener(map, "dragend", function() {findNearPan(map);});
		        
        if(parseInt(screenWidth) > 0 && parseInt(screenHeight) > 0 ) {
            // load old map data
            searchby = opener.searchby;   
            if(parseInt(opener.addarr.length) == 2) 
            {
                addarr.push(new GLatLng(opener.addarr[0].lat(),opener.addarr[0].lng()));
                addarr.push(new GLatLng(opener.addarr[1].lat(),opener.addarr[1].lng()));
            }
            if(opener.panFlag) 
            {
                ajax = new Ajax();
                var postContent = '';
                postContent +="lat" + "=" + opener.panLat + "&";
                postContent +="lng" + "=" + opener.panLng + "&";
                postContent +="searchby" + "=" + escape(searchby) + "&";
                ajax.post("GetItems.aspx", postContent, processSearchResult);
            }
            else {
                searchATM(opener.document.getElementById('address').value);
            }
        }        		
	}
	
}

function prepareSearchBy() {
    var flag = true;
    var counter = 0;
    searchby = '';
    while(flag) {
        obj =  document.getElementById('searchby' + counter);
        if(obj != null && obj != 'undefined') {
            if(obj.checked == true)
                searchby+= obj.value + "|";
        }
        else 
            flag = false;
        counter++;
    }
    if(searchby.length <= 0) {
            flag = true;
            counter = 0;
            while(flag) {
            obj =  document.getElementById('searchby' + counter);
            if(obj != null && obj != 'undefined') {
                searchby+= obj.value + "|";
            }
            else 
                flag = false;
            counter++;
        }
    }
}
function searchATM(address) 
{
    dhtml.showElement('progress');
    panFlag = false;
    //addarr= new Array();
    dhtml.setText('driveSummary','');
    dhtml.setText('directionText','');
    prepareSearchBy();
    ajax = new Ajax();
    var postContent = '';
    postContent +="address" + "=" + escape(address) + "&";
    postContent +="lat" + "=" + searchlatitude + "&";
    postContent +="lng" + "=" + searchlongitude + "&";
    postContent +="searchby" + "=" + escape(searchby) + "&";
    ajax.post("GetItems.aspx", postContent, processSearchResult);
}
function searchByText () {
    map.clearOverlays();
    SetBounds = true ;
    var add = document.getElementById('address').value;    
    geoCoderObj = new GClientGeocoder();
    geoCoderObj.getLocations(add, function (result) { 
	    if (result.Status.code == G_GEO_SUCCESS) {	
		    var coord = result.Placemark[0].Point.coordinates;
		    var lat=coord[1];
		    var lng=coord[0];
		    searchlatitude = lat ;
		    searchlongitude = lng ;		    
		    //map.setCenter(new GLatLng(lat,lng), 13); // this is where the search takes place
		    //originalSearchMarker = new GMarker(new GLatLng(lat,lng),getIcon("http://images.locatorsearch.com/start.png"));
            //map.addOverlay(originalSearchMarker);
            //centreHtml = "<em>" + add + "</em><br/>";
            //originalSearchMarker.openInfoWindowHtml(centreHtml);
            //GEvent.addListener(originalSearchMarker, "click", function() {originalSearchMarker.openInfoWindowHtml(centreHtml);});
            searchATM(add)
	    }
	    else {
	        alert('Address not found as entered. Please check your address and try again.');
	    }
    });
}

function processSearchResult() {
	var ready = ajax.isReady();				
	if (ready) {
		response = ajax.response();
		//alert("Response : " +response);
		
		dhtml.hideElement('directionResult');		
		displayResult_html = '';
		dhtml.setText('searchResult',displayResult_html);
		recordCount = 0;
		current_offset = 0;
		TOTAL_MARKER = 100;	
		
		if(response != 'ERROR') {
			// var xmlDoc = request.responseXML;
              var xmlDoc = GXml.parse(response);
              
              // obtain the array of markers and loop through it
              if(xmlDoc != null && xmlDoc.documentElement !=null && xmlDoc.documentElement.getElementsByTagName("marker") != null) {                  
                  var markers = xmlDoc.documentElement.getElementsByTagName("marker");
                  recordCount = markers.length;                   
                  for (var i=0; i<gmarkers.length; i++) {
                    if(gmarkers[i] != null && gmarkers[i] != 'undefined')
                     map.removeOverlay(gmarkers[i]);
                  }
                  if(markers.length>0) 
                  {
                    bounds = new GLatLngBounds();
                  }
                  else  
                  {
                    //alert('No result returned.');
                    displayResult_html = '<table border="0" style="width: 100%; border: 0px solid #7d2231; padding: 5px; font-size: 12px; line-height: 14px; text-align: left; color: #7d2231;"><tr><td><img src="http://images.locatorsearch.com/locatorlite_error.gif" border="0" />&nbsp;&nbsp;Sorry, there are no locations within the map area.</td></tr></table>' ;
                  }
                  gmarkers = new Array();
                  atmaddressList = new Array();
                  //alert(markers.length);
                  for (var i = 0; i < markers.length; i++) {
                     // obtain the attributes of each marker
                     var lat = parseFloat(markers[i].getAttribute("lat"));
                     var lng = parseFloat(markers[i].getAttribute("lng"));
                     var label = GXml.value(markers[i].getElementsByTagName("label")[0]);
                     var icon = markers[i].getAttribute("icon");

                     // alert("point["+i+"] label="+label+":("+lat+", "+lng+")");
                     if (isNaN(lat) || isNaN(lng)) {
                        alert("bad point "+i);
                        continue;
                     }
                     var point = new GLatLng(lat,lng);
                     // get the tab info
                     tabInfo = markers[i].getElementsByTagName("tab");
                     tabs = new Array();
                     if (tabInfo.length > 0) {
                        // alert("processing "+tabInfo.length+" tabs");
                        for (var j = 0; j < tabInfo.length; j++) {
                            var tabLabel = GXml.value(tabInfo[j].getElementsByTagName("label")[0]);
                            var tabHtml = '';
                            if(j==0) {
                               addressobj = new ATMAddress();
                               addressobj.setTitle(GXml.value(tabInfo[j].getElementsByTagName("title")[0]));
                               addressobj.setAdd1(GXml.value(tabInfo[j].getElementsByTagName("add1")[0]));
                               addressobj.setAdd2(GXml.value(tabInfo[j].getElementsByTagName("add2")[0]));
                               addressobj.setImageUrl(GXml.value(tabInfo[j].getElementsByTagName("ImageUrl")[0]));
                               addressobj.setWorkPhone(GXml.value(tabInfo[j].getElementsByTagName("workphone")[0]));
                               addressobj.setDistance(GXml.value(tabInfo[j].getElementsByTagName("distance")[0]));
                               addressobj.setATMNetworkid(GXml.value(tabInfo[j].getElementsByTagName("atmnetworkid")[0]));
                               atmaddressList[i] = addressobj;
                               tabHtml = prepareTabWindow(addressobj,i);
                            }
                            else {
                                tabHtml = GXml.value(tabInfo[j].getElementsByTagName("contents")[0]);
                            }
                            
                           
                           // alert("point["+i+"] tab["+j+"] label="+tabLabel+", contents="+tabHtml);
                           if ((j==0) && (tabInfo.length > 2)){ //  adjust the width so that the info window is large enough for this many tabs
                              tabHtml = '<div style="width:'+ parseInt(tabInfo.length)*88+'px">' + tabHtml + '<\/div>';
                           }
                           tabs.push(new GInfoWindowTab(tabLabel,tabHtml));
                        }
                     } else { 
                        // alert("no tabs point "+i);
                        var tabLabel = "Nothing";
                        var tabHtml = markers[i].getAttribute("html");
                        tabs.push(new GInfoWindowTab(tabLabel,tabHtml));
                     }      
                     if(parseInt(recordCount) <= parseInt(TOTAL_MARKER))
                        TOTAL_MARKER = recordCount;
                     if(i == 0 ) {
                        displayResult_html = "<table width='100%' cellspacing='0' cellpadding='0' class='tbl'>";
                     }
                     // create the marker
                     var marker;
                     if(i<TOTAL_MARKER) {
                        marker = createTabbedMarker(point,label,tabs, icon,true);
                        }
                     else {
                        marker = createTabbedMarker(point,label,tabs, icon,false);  
                        displayResult_html += "</table>";
                     } 
                    
                     if(i<TOTAL_MARKER) {
                         bounds.extend(point);
                        map.addOverlay(marker);
                        }
                  }
                  if(markers.length>0) 
                  {
                    centerAndZoomOnBounds(bounds);
                  }
                  dhtml.showElement('searchResultContent');
                  if(StaticMessage.length > 0)
                  {
                    displayResult_html = StaticMessage + displayResult_html ;
                  }
                  dhtml.setText('searchResult',displayResult_html);
                  //dhtml.hideElement('searchInput');
                  //alert(recordCount % TOTAL_MARKER);
                  if(parseInt(recordCount % TOTAL_MARKER)> 0)
                    total_page = parseInt(recordCount / TOTAL_MARKER) +1;
                  else
                    total_page = parseInt(recordCount / TOTAL_MARKER);
                  if(gmarkers.length > 0 )
                    dhtml.setText('pageText',"");
                  else
                    dhtml.setText('pageText',"");
              }
              else
              {
                alert('No result found');
                dhtml.setText('pageText',"");
              }
              showSearchResult();
              
              if(gmarkers.length > 0 && DefaultInfoPopUp != "False")
              {
               tempVal = addTXT.replace(/%20/g, " ");
               for(var x=0;x<atmaddressList.length;x++)
               {
                    tempVal.indexOf(atmaddressList[x].getAdd1() > -1)
                    {
                       markerClicked(x);
                       break;
                    }
               }
              }  
		}
		else 
		{
			alert("Error occured while getting result");	
		}
		if(opener != null && opener.addarr != null && parseInt(opener.addarr.length) == 2)
            findDirection();
            
        dhtml.hideElement('progress');
	}
}

function prepareTabWindow(addobj,index) {
    var str ='';
    str += "<div class='wrapper'>";
    str += "<div class='title_column'>" + addobj.getTitle() +"</div>";
    if (addobj.getDistance() > 0)
    {
        str += "<div class='left_column'><span id='address__" + index + "'>" + addobj.getAdd1() + "<br>" + addobj.getAdd2() + "<br>Distance : " + addobj.getDistance() + " miles" ;
    }
    else
    {
        str += "<div class='left_column'><span id='address__" + index + "'>" + addobj.getAdd1() + "<br>" + addobj.getAdd2() ;
    }
    if(addobj.getWorkPhone() != null && addobj.getWorkPhone().length > 0)
    {
        str += "<br>Phone :" + addobj.getWorkPhone() + "</span></div>";
    }
    else
    {
        str += "</span></div>";
    }      
    str += "<div class='rightcolumn'>" + addobj.getImageUrl() + "</div>";    
    str += "<div class='one_column'>";
    str += "<a href='javascript:searchDirection(" + index + ");'>Get Directions</a>";
    str += "</div>";
    str += "<div>";
    str += "<div class=\"one_column\"><input class=\"infoTextBox\" value=\"Start Address\" onclick=\"javascript:document.getElementById('infoadd__" + index + "').value=''\"; type=\"text\" id=\"infoadd__" + index + "\" size=\"25\"/><input type=\"button\" value=\"Go\" onclick=\"searchDirection2('infoadd__" + index+ "','" + index + "')\";/></div>";    
    str += "</div>";
    str += "</div>";
    return str
}

function createTabbedMarker(point,label,tabs,icon,flag) {
        var marker;
        marker = new GMarker(point,getIcon(icon));        
        var marker_num = gmarkers.length;
        marker.marker_num = marker_num;
        marker.tabs = tabs;
        gmarkers[marker_num] = marker;
        
        GEvent.addListener(gmarkers[marker_num], "click", function() {
          marker.openInfoWindowTabsHtml(gmarkers[marker_num].tabs);
          
          for(var i=0;i<gmarkers.length;i++) {
            if(i== marker_num) {
                  document.getElementById('searchResult').scrollTop = document.getElementById('tablerow'+i).offsetTop; 
                  document.getElementById('tablerow'+i).className = 'rowSelected';
                  document.getElementById('lineRow'+i).className = 'rowSelected';
                  document.getElementById('lineobj'+i).className = 'hlineSelected';
                  if(document.getElementById('lineRow'+(i-1)) != null) {
                    document.getElementById('lineRow'+(i-1)).className = 'rowSelected';
                    document.getElementById('lineobj'+ (i-1)).className = 'hlineSelected';
                  }
              }
              else {
                  if(document.getElementById('tablerow'+i) != null){
                  document.getElementById('tablerow'+i).className = 'row';
                  document.getElementById('lineRow'+i).className = 'row';
                  document.getElementById('lineobj'+i).className = 'hline';
                  }
              }
          }
        });
        // add a line to the sidebar html
        if(flag)
        {
            displayResult_html += "<tr class='row' id='tablerow" + marker_num + "'><td><img id='img" + marker_num + "' style='cursor: pointer;padding-left: 5px;' onclick='javascript:markerClicked(" + marker_num + ")' src='" + gmarkers[marker_num].getIcon().image + "'></td><td>" + prepareResultAddress(atmaddressList[marker_num],marker_num) + "</td></tr>";
            displayResult_html += "<tr id='lineRow" + marker_num + "'><td colspan='2'><hr id='lineobj" + marker_num + "' class='hline'></td></tr>";
        }
        return marker;
}
function prepareResultAddress(addobj,i) {
    var str = '';
    str += "<div id= 'resultAddress__" + i + "' style='cursor: pointer; padding-left: 5px;' onmouseout='markermouseout(" + i + ")' onclick='toggleAddress(" + i + ");javascript:markerClicked(" + i + ");'"
    str += "<div><b>" + addobj.getTitle() + "</b>";
    str += "<br/><span id='address__" + i + "'>" + addobj.getAdd1() + "<br>";
    str += addobj.getAdd2() + "</span><br>";
    if (addobj.getDistance() > 0)
    {
        str +=  addobj.getDistance() + " miles<br>";
    }
    str += "Send To :" + "<a href=javascript:OpenSMSWindow('SMSTextMessage.aspx?Loc=" + parseInt(i+1) + "')><img src='images/smsphone.gif' border='0'>  SMS</a> | <a href=javascript:OpenEmailWindow('EmailMessage.aspx?Loc=" + parseInt(i+1) + "')><img src='http://images.locatorsearch.com/email.gif' border='0'> Email</a><br/>";
    
    if (addobj.getATMNetworkid().length > 0) 
    {
        str += "<a href='#'>Hours</a> | " + "<a href='javascript:searchDirection(" + i + ");'>Directions</a><br>"; ;
    }
    else 
    {
        str += "<a href='javascript:searchDirection(" + i + ");'>Directions</a><br>";
    } 
    str += "</div>";
    str += "</div>";
    
    return str;
}

function toggleAddress(index) {
    if(dhtml.isVisible('extadd_' + index)) {
        dhtml.hideElement('extadd_' + index);
    }
    else {
        dhtml.showElement('extadd_' + index);
    }
    for(var i=0;i<gmarkers.length;i++) {
            if(i== index) {
                  //document.getElementById('img'+i).focus();
                  document.getElementById('tablerow'+i).className = 'rowSelected';
                  document.getElementById('lineRow'+i).className = 'rowSelected';
                  document.getElementById('lineobj'+i).className = 'hlineSelected';
                  if(document.getElementById('lineRow'+(i-1)) != null) {
                    document.getElementById('lineRow'+(i-1)).className = 'rowSelected';
                    document.getElementById('lineobj'+ (i-1)).className = 'hlineSelected';
                  }
              }
              else {
                  if(document.getElementById('tablerow'+i) != null){
                  document.getElementById('tablerow'+i).className = 'row';
                  document.getElementById('lineRow'+i).className = 'row';
                  document.getElementById('lineobj'+i).className = 'hline';
                  }
              }
          }
}

function getAddressFromTab(htmlAdd) {
    var str = htmlAdd.substring(0,htmlAdd.indexOf('Distance :')-8) + "</div>";
    //  alert(str);
    return str;
    
}

function markermouseout(index) {
    document.getElementById('resultAddress__' + index).className = '';
}

function markerClicked(index) {
    if(currentInfowindowIndex != index)
        gmarkers[index].openInfoWindowTabsHtml(gmarkers[index].tabs);
     currentInfowindowIndex = index;
     
     document.getElementById('resultAddress__' + index).className = 'resultAddressImageOn';
     selectedIndex = index;
     dhtml.setText('driveToTxt',atmaddressList[index].getAdd1() + "," +atmaddressList[index].getAdd2());
     dhtml.showElement('driveInput');
}

function centerAndZoomOnBounds (bounds) 
{
   if(bounds != null && SetBounds != false) 
   {
       var center_lat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2.0;
       var center_lng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2.0;
       var center = new GLatLng(center_lat,center_lng)
       map.setCenter(center, map.getBoundsZoomLevel(bounds) + (parseInt(BoundsZoomLevel)));
   }
}

function next() {
    start = current_offset + TOTAL_MARKER;
    if(start >= recordCount) {
        //alert("You are at the end of records.");
    }
    else {
        
        if(parseInt(start) + parseInt(TOTAL_MARKER) < gmarkers.length)
            end = parseInt(start) + parseInt(TOTAL_MARKER);
        else
           end = gmarkers.length;
        prepareResult(start,end);
    }
}

function previous() {
    if(current_offset == 0 ) {
       // alert("You are at the begining of records.");
    }
    else {
        start = current_offset - TOTAL_MARKER;
        end = parseInt(start) + parseInt(TOTAL_MARKER);
        prepareResult(start,end);
    }
}

function prepareResult(start,end) {
    //map.clearOverlays();
    displayResult_html = '';
    dhtml.setText('searchResult',displayResult_html);
    displayResult_html = '<table cellspacing="0" cellpadding="0">';
    var bounds = new GLatLngBounds();
    for (var i=0;i<gmarkers.length;i++) {
        if(gmarkers[i] != null && gmarkers[i] != 'undefined')
            map.removeOverlay(gmarkers[i]);        
    }
    for(var i=start;i<end;i++) {
        //displayResult_html += "<tr class='row'><td><img style='cursor: pointer' onmouseclick='javascript:markerClicked(" + i + ")' src='" + gmarkers[i].getIcon().image + "'></td><td style='white-space: nowrap;'>" + prepareResultAddress(atmaddressList[i],i) + "</td></tr>";
        displayResult_html += "<tr class='row' id='tablerow" + i + "'><td><img id='img" + i + "' style='cursor: pointer;padding-left: 5px;' onclick='javascript:markerClicked(" + i + ")' src='" + gmarkers[i].getIcon().image + "'></td><td>" + prepareResultAddress(atmaddressList[i],i) + "</td></tr>";
        displayResult_html += "<tr id='lineRow" + i + "'><td colspan='2'><hr id='lineobj" + i + "' class='hline'></td></tr>";
        bounds.extend(gmarkers[i].getLatLng());
        //marker = new GMarker(opener.gmarkers[i].getLatLng(),getIcon(opener.gmarkers[i].getIcon().image));
        map.addOverlay(gmarkers[i]);
        //map.addOverlay(marker);
    }
    displayResult_html += '</table>';
    dhtml.setText('searchResult','');
    dhtml.setText('searchResult',displayResult_html);
    centerAndZoomOnBounds(bounds);
    dhtml.setText('pageText'," Showing " + (start + 1 ) + "-" + end + " of " + recordCount + " ");
    current_offset = start;
}



function findNear(map) {
    if(dhtml.isVisible('searchResultContent') || ( dhtml.getText('directionText') == null || dhtml.getText('directionText').length <= 0)) {
        dhtml.showElement('progress');
        map.clearOverlays();
        dhtml.setText('driveSummary','');
        dhtml.setText('directionText','');
        SetBounds = true ;
        
        var GLatLng = map.getCenter();
        
        var Latitude = GLatLng.lat();
        var Longitude = GLatLng.lng();       
        
        
        panLat = Latitude;
        panLng = Longitude;
        panFlag = true;
        
        prepareSearchBy();
        displayResult_html = '';
        ajax = new Ajax();
        var postContent = '';
        postContent +="lat" + "=" + Latitude + "&";
        postContent +="lng" + "=" + Longitude + "&";
        postContent +="searchby" + "=" + escape(searchby) + "&";
        ajax.post("GetItems.aspx", postContent, processSearchResult);
        
        addarr = new Array();
    }
}

function findNearPan(map) {
    if(dhtml.isVisible('searchResultContent') || ( dhtml.getText('directionText') == null || dhtml.getText('directionText').length <= 0)) {
        dhtml.showElement('progress');
        map.clearOverlays();
        dhtml.setText('driveSummary','');
        dhtml.setText('directionText','');
        SetBounds = false ;
        
        var GLatLng = map.getCenter();
        
        var Latitude = GLatLng.lat();
        var Longitude = GLatLng.lng();       
        
        
        panLat = Latitude;
        panLng = Longitude;
        panFlag = true;
        
        prepareSearchBy();
        displayResult_html = '';
        ajax = new Ajax();
        var postContent = '';
        postContent +="lat" + "=" + Latitude + "&";
        postContent +="lng" + "=" + Longitude + "&";
        postContent +="searchby" + "=" + escape(searchby) + "&";
        ajax.post("GetItems.aspx", postContent, processSearchResult);
        
        addarr = new Array();
    }
}

function searchDirection(index) {
    
    selectedIndex = index;
    dhtml.setText('driveSummary','');
    dhtml.setText('directionText','');
    dhtml.hideElement('searchResultContent');    
    dhtml.setText('driveToTxt',document.getElementById('address__' +index).innerHTML);
    dhtml.showElement('directionResult');
    dhtml.showElement('driveToFromContent');
    dhtml.showElement('driveInput');
}

function SetStartAddr(index) {
    
    selectedIndex = index;
    dhtml.setText('driveSummary','');
    dhtml.setText('directionText','');
    //dhtml.hideElement('searchResultContent');
    //dhtml.hideElement('searchInput');
    dhtml.setText('driveToTxt',document.getElementById('address__' +index).innerHTML);
    //dhtml.showElement('directionResult');
    //dhtml.showElement('driveToFromContent');
    //dhtml.showElement('driveInput');
}

function searchDirection2(objName,index) 
{
    dhtml.showElement('progress');
    showDirectionResult();
    selectedIndex = index;
    obj = document.getElementById(objName);
    dhtml.setText('driveSummary','');
    dhtml.setText('directionText','');
    dhtml.hideElement('searchResultContent');
//    dhtml.hideElement('searchInput');
    dhtml.setText('driveToTxt',document.getElementById('address__' +index).innerHTML);
//    dhtml.setText('driveAdd',document.getElementById(objName).value);
    document.getElementById('driveAdd').value = obj.value;
    dhtml.showElement('directionResult');
    dhtml.showElement('driveToFromContent');
    dhtml.showElement('driveInput');
//    alert(document.getElementById(objName).value);
    geocode(document.getElementById(objName).value);
}

function searchDirectionFromTab() {
    add = document.getElementById('driveAdd').value;    
    if(add != null && add.length > 0 ) {
        dhtml.showElement('progress');
        geocode(add);
    }
}

function geocode(address) {
    routeaddB = address;
    if (address != null && address.length > 0 && address != 'Start Address') 
    {
        geoCoderObj = new GClientGeocoder();
        geoCoderObj.getLocations(address, function (result) { 
		    if (result.Status.code == G_GEO_SUCCESS) {	
		        addarr= new Array();
			    var coord = result.Placemark[0].Point.coordinates;
			    var lat=coord[1];
			    var lng=coord[0];
			    routeaddA = atmaddressList[selectedIndex].getAdd1() +", " + atmaddressList[selectedIndex].getAdd2();
			    addarr.push(new GLatLng(lat, lng));
			    addarr.push(gmarkers[selectedIndex].getLatLng());
			    
			    findDirection();
		    }
		    else {
		        alert('Invalid address');
	            dhtml.hideElement('progress');
		    }
	    });
	}
	else {
	    alert('Starting Address is required');
	    dhtml.hideElement('progress');
	}
}

function findDirection() 
{
    //alert('finding direction' + addarr[0] + ":" + addarr[1]);
    directionobj = document.getElementById("directionText");
    if(directionObj != null)
    directionObj.clear();
    directionObj = new GDirections(map,directionobj);
    if(routeaddA.indexOf('<br>') > 0)
    {
        routeaddA = routeaddA.substring(0,routeaddA.indexOf('<br>')) ;
    } 
    str = routeaddB + " @" + addarr[0] + " to " + routeaddA + "@" + addarr[1];
    //directionObj.load("1740 PARK AVE, CA 90815 @33.78913,-118.1367 to 2300 Redondo Ave, Long Beach, CA 90809@33.79773,-118.1513");
    directionObj.load(str);
    GEvent.addListener(directionObj, "load", directionLoad);
    GEvent.addListener(directionObj, "error", GErrorOccured);
}
function directionLoad() {
    dhtml.hideElement('driveToFromContent');
    if(document.getElementById('address__' +selectedIndex) != null) {
        summaryTxt = 'Route Summary<br><b>From: </b>' + document.getElementById('driveAdd').value + '<br><b>To: </b>' + document.getElementById('address__' +selectedIndex).innerHTML
        dhtml.setText('driveSummary',summaryTxt);
    }
    else {
        if(opener != null && opener.document.getElementById('driveSummary')!= null) {
            dhtml.setText('driveSummary',opener.document.getElementById('driveSummary').innerHTML);
        }
    }
    dhtml.showElement('driveSummary');
    dhtml.showElement('directionText');
    dhtml.hideElement('progress');
}
function GErrorOccured() {
	var code = directionObj.getStatus().code;
	var reason="Code "+code;
	if (reasons[code]) {
	  reason = reasons[code]
	} 
	alert("Failed to obtain directions, "+reason);
	dhtml.hideElement('progress');
}


function fullscreen() {
     params  = 'width='+screen.width;
     params += ', height='+screen.height;
     params += ', top=0, left=0'
//     params += ', fullscreen=yes';

     newwin=window.open('index.aspx?w=' + screen.width + '&h='+ screen.height,'windowname4', params);
     if (window.focus) {newwin.focus()}
     return false;
}

function print() {
    params  = 'width=600';
    params += ', height=600';
    if(navigator.appName == "Microsoft Internet Explorer") {
        params += ', top=0, left=0,scrollbars =1'
    }
    else if(navigator.appName == "Netscape") {
        params += ', top=0, left=0,scrollbars=yes'
    }

     newwin=window.open('Print.aspx','windowname5', params);
     if (window.focus) {newwin.focus()}
     return false;    
}
