﻿
var TOTAL_MARKER = 50;
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 directionFromFlag = false;
var directionToFlag = false;

var routemarker,routemarker1,routeLine;

function handleSubmit(e,flag,index) {
    var code = e.keyCode;
	if(code == 13) 
	{
	    if(flag) 
	    {
	        searchDirection3('infoaddTo__' + index,index);
	    }
	    else 
	    {
	        searchDirection4('infoaddFrom__' + index,index);
	    }
	}
}

function init() {
//dhtml.hideElement('direction');
//dhtml.hideElement('sp');
//dhtml.hideElement('directionPane');
//dhtml.hideElement('directionText');

dhtml.hideElement('locationBtn');
//dhtml.showElement('resetBtnLnk');
dhtml.hideElement('resetBtn');
document.getElementById('map').style.visibility='hidden';
    
    if (GBrowserIsCompatible()) {
    
//        document.getElementById('map'); 
//        alert(parseInt(document.getElementById('mainCol').offsetLeft));
//        dhtml.setBounds('progress',parseInt(document.getElementById('mainCol').offsetLeft) + 180,parseInt(document.getElementById('mainCol').offsetTop)+53,document.getElementById('map').clientWidth,document.getElementById('map').clientHeight);
        
        map = new GMap2(document.getElementById("map"));
        
		map.enableScrollWheelZoom();
		map.enableContinuousZoom();
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		if(addTXT != null && addTXT.length > 0 ) 
		{
		    if(searchTYPE != null && searchTYPE.length > 0)
		    {
		        if(searchTYPE == 'atm') {
		            document.getElementById('atmRadio').checked = true;
		        }
		        else if(searchTYPE == 'branch') {
		            document.getElementById('branchRadio').checked = true;
		        }
		        else {
		            document.getElementById('searchby').checked = true;
		        }
		    }
		    if(!isNaN(addTXT)) {
		        document.getElementById('zipText').value = addTXT;
		        searchByZip();
		    }
		    else {
		        document.getElementById('cityTxt').value = addTXT;
		        searchByText();
		    }
		}
		else {
		    var loc = google.loader.ClientLocation;
		    if (loc != null) 
		    {
		        map.setCenter(new google.maps.LatLng(loc.latitude, loc.longitude), 12);
		        findNear(map);
		    }
		    else
		    {
		        map.setCenter(new GLatLng(42.675720,-82.904320), 13);
		        findNear(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) {
    map.clearOverlays();
    showSearchResult();
    
    dhtml.showElement('progress');
    panFlag = false;
    dhtml.setText('driveSummary','');
    dhtml.setText('directionText','');
    prepareSearchBy();
            
    ajax = new Ajax();
    var postContent = '';
   
    postContent +="address" + "=" + escape(address) + "&";
    if(document.getElementById('searchby').checked == true)
        postContent +="searchby" + "=" + escape(document.getElementById('searchby').value) + "&";
    else if (document.getElementById('atmRadio').checked == true)
        postContent +="searchby" + "=" + escape(document.getElementById('atmRadio').value) + "&";
    else 
        postContent +="searchby" + "=" + escape(document.getElementById('branchRadio').value) + "&";
    
    ajax.post("GetItems.aspx", postContent, processSearchResult);
}
function searchByZip() 
{
    //map.clearOverlays();
    var continueYN = true ;
    var add = document.getElementById('zipText').value;    
    
    /*
    if (document.getElementById('zipText').value.length == 5)
    {
        var valid = "0123456789";
        var field = document.getElementById('zipText').value ;
        var t = "" ;      
        for (var i=0; i < field.length; i++) 
        {
            t = "" + field.substring(i, i+1);
            if (valid.indexOf(t) == "-1") 
            {
                continueYN =  false;
                break;
			}
        }
    }
    else
    {
        continueYN = false ;
    }
    */
    
    if (continueYN)
    {
        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];
		            //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/blank.gif"));
                    map.addOverlay(originalSearchMarker);
                    centreHtml = "<em>" + add + "</em><br/>";
                    GEvent.addListener(originalSearchMarker, "click", function() {originalSearchMarker.openInfoWindowHtml(centreHtml);});
                    searchATM(add);
                
	        }
	        else 
	        {
	            alert('Invalid Zip or Postal Code.');
	        }
        });
    }
    else
    {
        alert("Invalid Zip or Postal Code.");        
        /*
        if (document.getElementById('zipText').value.length != 5)
        {
            alert("Invalid ZIP Code entered.  Please enter a valid 5 digit ZIP Code.");
        }
        else
        {
            alert("Invalid characters in your ZIP Code.  Please try again.");
        }
        */
        
    }
}

function searchByText () {
    //map.clearOverlays();
    if ((document.getElementById('cityTxt').value.length > 0 && document.getElementById('stateList').value.length > 0) || (addTXT != null && addTXT.length > 0))
    {
        var add = document.getElementById('cityTxt').value;
        if(add != null && add.length > 0  && add != 'city')
        {
            if(document.getElementById('stateList').value != null && document.getElementById('stateList').value.length > 0)
                add += "," + document.getElementById('stateList').value; //+ ", US";
            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];
		            //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/blank.gif"));
                    map.addOverlay(originalSearchMarker);
                    centreHtml = "<em>" + add + "</em><br/>";
                    //originalSearchMarker.openInfoWindowHtml(centreHtml);
                    GEvent.addListener(originalSearchMarker, "click", function() {originalSearchMarker.openInfoWindowHtml(centreHtml);});
                    searchATM(add)
	            }
	            else 
	            {
	                alert('City not found as entered. Please check your city and try again.');
	            }
            });
        }
        else
        {
            alert("Please enter both City and State or ZIP Code.");
        }
    }
    else
    {
        alert("Please enter city and either state or country.");
    }
     
    
}

function processSearchResult() {
	var ready = ajax.isReady();				
	if (ready) {
		response = ajax.response();
		//alert("Response : " +response);
		dhtml.hideElement('directionResult');
		dhtml.hideElement('locationBtn');
		//dhtml.showElement('resetBtnLnk');
		displayResult_html = '';
		dhtml.setText('searchResult',displayResult_html);
		recordCount = 0;
		current_offset = 0;
		TOTAL_MARKER = 50;
		//
		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;
                  // alert("processing "+markers.length+" markers");
                  // map.clearOverlays();
                  // bug in clearOverlays
                  //map.clearOverlays();
                  //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 results returned.');
                  }
                  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]));
                               //alert("'" + 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]));
                               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 > 1)){ //  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);
                        }
                  }
                  centerAndZoomOnBounds(bounds);
                  dhtml.showElement('searchResultContent');
                  dhtml.setText('searchResult',displayResult_html);
                  $('#searchResult').jScrollPaneRemove()
                  $('#searchResult').jScrollPane({scrollbarWidth:27,animateTo:true});
                  if(gmarkers.length > 0) 
                  {
                    $('#searchResult')[0].scrollTo('#tablerow0');
                    
                  }
                  else {
                    map.clearOverlays();
                  }
                  //  $('#searchResult').reinitialiseOnImageLoad();
                  //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'," Showing " + (current_offset +1) + "-" + TOTAL_MARKER + " of " + recordCount + " ");
                  else
                    dhtml.setText('pageText'," Showing 0-0 of 0 ");
              }
              else
              {
                alert('No result found.');
                dhtml.setText('pageText'," Showing 0-0 of 0 ");
              }
              showSearchResult();
              if(gmarkers.length > 0 && addTXT != null && addTXT.length > 0 )
              {
               tempVal = addTXT.replace(/%20/g, " ");
               for(var x=0;x<atmaddressList.length;x++)
               {
                    tempVal.indexOf(atmaddressList[x].getAdd1() > -1)
                    {
                       //gmarkers[x].openInfoWindowTabsHtml(gmarkers[x].tabs);
                       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 resetMap() 
{
    dhtml.hideElement('locationBtn');
    dhtml.hideElement('resetBtn');
    //dhtml.showElement('resetBtnLnk');
    clearRouteItems();
    showSearchResult();
    gmarkers[selectedIndex].closeInfoWindow();
    bounds = new GLatLngBounds();
    for(var i=0;i<gmarkers.length;i++)
    {
        bounds.extend(gmarkers[i].getLatLng());
    }
    showInfoMarkers();
    centerAndZoomOnBounds(bounds);
}

function prepareTabWindow(addobj,index) {
    var str ='';
    str += "<div class='wrapper'>";
    str += "<div class='title_column'>" + addobj.getTitle() +"</div>";
    str += "<div class='left_column'><span id='address__" + index + "'>" + addobj.getAdd1() + "<br>" + addobj.getAdd2() + "<br>Distance: " + addobj.getDistance() + " miles" ;
    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 += "Directions: <a href='#' id='tolink' onClick=\"showDriveToBox('" + index + "')\">To here</a> - <a id='fromlink' href='#' onClick=\"showDriveFromBox('" + index + "')\">From here</a>";
    str += "</div>";
    str += "<div id='driveToBox" + index + "' style='visibility:hidden;display:none'>";
    str += "<div class=\"left_column\"><input class=\"infoTextBox\" value=\"Start Address\" onkeyup=\"handleSubmit(event,true," + index + ")\" onclick=\"javascript:document.getElementById('infoaddTo__" + index + "').value=''\"; type=\"text\" id=\"infoaddTo__" + index + "\" size=\"25\"/></div>";
    str += "<div class=\"rightcolumn\"><input type=\"image\" id='infoimggo1' onmouseout=\"changeinfoimage('infoimggo1','images/bubbleGo.gif')\" onmouseover=\"changeinfoimage('infoimggo1','images/bubbleGo_over.gif')\" src=\"images/bubbleGo.gif\"  border=\"0\" onclick=\"searchDirection3('infoaddTo__" + index+ "','" + index + "')\";/></div>";
    str += "</div>";
    str += "<div id='driveFromBox" + index + "' style='visibility:hidden;display:block'>";
    str += "<div class=\"left_column\"><input class=\"infoTextBox\" value=\"End Address\" onkeyup=\"handleSubmit(event,false," + index + ")\" onclick=\"javascript:document.getElementById('infoaddFrom__" + index + "').value=''\"; type=\"text\" id=\"infoaddFrom__" + index + "\" size=\"25\"/></div>";
    str += "<div class=\"rightcolumn\"><input type=\"image\" id='infoimggo2' onmouseout=\"changeinfoimage('infoimggo2','images/bubbleGo.gif')\" onmouseover=\"changeinfoimage('infoimggo2','images/bubbleGo_over.gif')\" src=\"images/bubbleGo.gif\" border=\"0\" onclick=\"searchDirection4('infoaddFrom__" + index+ "','" + index + "')\";/></div>";
    str += "</div>";
    str += "</div>";
    return str
}
function changeinfoimage(elm,path) {
    document.getElementById(elm).src = path;
}
function showDriveToBox(index) {
    dhtml.hideElement('driveFromBox' + index);
    dhtml.showElement('driveToBox' + index); 
    document.getElementById('tolink').className = 'selected'; 
    document.getElementById('fromlink').className = ''; 
       
}

function showDriveFromBox(index) {
    dhtml.hideElement('driveToBox' + index);
    dhtml.showElement('driveFromBox' + index); 
    document.getElementById('fromlink').className = 'selected'; 
    document.getElementById('tolink').className = '';
}


function createTabbedMarker(point,label,tabs,icon,flag) {
        var marker;
        marker = new GMarker(point,getIcon(icon));
        /*
        if (icon == 'ATM') 
        {
           marker = new GMarker(point,getIcon('http://images.locatorsearch.com/' + (gmarkers.length + 1) + ".png"));
        } 
        else 
        {
           marker = new GMarker(point,getIcon('http://images.locatorsearch.com/' + (gmarkers.length + 1) + ".png"));
        }
        */
        //marker = new GMarker(point);
        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) {
                    $('#searchResult')[0].scrollTo('#tablerow'+i);
                    document.getElementById('tablerow'+i).style.backgroundColor = '#E8F4FA';
                    selectedIndex = i;
                }
                else {
                    document.getElementById('tablerow'+i).style.backgroundColor = '#ffffff';
                }
          }
        });

        if(flag)
        {
            displayResult_html += "<p id='tablerow" + marker_num + "' onclick='javascript:markerClicked(" + marker_num + ")' class='listing' style='background: url(" + icon +") top left no-repeat;'>";
            displayResult_html += "<a href='javascript:markerClicked(" + marker_num + ")'>" + atmaddressList[marker_num].getTitle() + "</a>";
            displayResult_html += prepareResultAddress(atmaddressList[marker_num],marker_num);
            displayResult_html += "</p>";
        }
        return marker;
}
function prepareResultAddress(addobj,i) 
{
    var str = '';
    str +=  addobj.getAdd1() + "  -  " + addobj.getDistance() + " miles<br/>";
    str += addobj.getAdd2() + "<br/>";
    str += "<a href=javascript:OpenSMSWindow('SMSTextMessage.aspx?Loc=" + parseInt(i+1) + "')>Send to Phone</a><br/>";    
    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('tablerow'+i).style.backgroundColor = '#0699D1';
        }
        else {
            if(document.getElementById('tablerow'+i) != null){
                document.getElementById('tablerow'+i).style.backgroundColor = 'none';
            }
        }
    }
}

function getIcon(marker_str) 
{
	var blueIcon = new GIcon();
	blueIcon.image =  marker_str;
	//blueIcon.shadow = "http://images.locatorsearch.com/shadow50.png";
	if (marker_str.indexOf("start.png") > 0) 
	{
	    blueIcon.iconSize = new GSize(20, 34);
	    blueIcon.iconAnchor = new GPoint(34, 74);
	}
	else if (marker_str.indexOf("thefsb_logo.png") > -1) 
	{
	    blueIcon.iconSize = new GSize(71, 74);
	    blueIcon.iconAnchor = new GPoint(34, 74);
	}
	else if (marker_str.indexOf("thefsb_atm.png") > -1) 
	{
	    blueIcon.iconSize = new GSize(71, 74);
	    blueIcon.iconAnchor = new GPoint(34, 74);
	}	
	else if (marker_str.indexOf("thefsb_allpoint.png") > -1) 
	{
	    blueIcon.iconSize = new GSize(70, 50);
	    blueIcon.iconAnchor = new GPoint(34, 50);
	}
	else if (marker_str.indexOf("thefsb_moneypass.png") > -1) 
	{
	    blueIcon.iconSize = new GSize(44, 46);
	    blueIcon.iconAnchor = new GPoint(21, 46);
	}
	/*
	else if(marker_str.indexOf("S.png") > -1) 
	{
	    blueIcon.image =  "images/" + marker_str;
	    blueIcon.iconSize = new GSize(20, 34);
	    blueIcon.iconAnchor = new GPoint(9, 34);
	}
	else if(marker_str.indexOf("E.png") > -1) 
	{
	    blueIcon.image =  "images/" + marker_str;
	    blueIcon.iconSize = new GSize(20, 34);
	    blueIcon.iconAnchor = new GPoint(9, 34);
	}
	*/
	else
	{
	    blueIcon.iconAnchor = new GPoint(9, 34);
	}
	//blueIcon.shadowSize = new GSize(37, 34);
    
	blueIcon.infoWindowAnchor = new GPoint(35, 10);
	blueIcon.infoShadowAnchor = new GPoint(18, 25);
	blueIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
	return blueIcon;
}
function getAddressFromTab(htmlAdd) {
    var str = htmlAdd.substring(0,htmlAdd.indexOf('Distance :')-8) + "</div>";
    return str;
}

function markermouseout(index) {
    //document.getElementById('resultAddress__' + index).className = '';
}
function markerClicked(index) {
    if(currentInfowindowIndex != index)
        gmarkers[index].openInfoWindowTabsHtml(gmarkers[index].tabs);
     currentInfowindowIndex = index;
     
     for(var i=0;i<gmarkers.length;i++) {
        if(i== currentInfowindowIndex) {
            $('#searchResult')[0].scrollTo('#tablerow'+i);
            document.getElementById('tablerow'+i).style.backgroundColor = '#E8F4FA';
        }
        else {
            document.getElementById('tablerow'+i).style.backgroundColor = '#ffffff';
        }
    }
     selectedIndex = index;
     dhtml.setText('driveToTxt',atmaddressList[index].getAdd1() + "," +atmaddressList[index].getAdd2());
     dhtml.showElement('driveInput');
}

function centerAndZoomOnBounds (bounds) {
   if(bounds != null) {
       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));
   }
}
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','');
        
        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) {
    showDirectionResult();    
    selectedIndex = index;
    dhtml.setText('directionText','');
    dhtml.setText('driveToTxt',document.getElementById('address__' +index).innerHTML);
    showDirectionResult();
}

function SetStartAddr(index) {
    showDirectionResult();
    selectedIndex = index;
    dhtml.setText('directionText','');
    dhtml.setText('driveToTxt',document.getElementById('address__' +index).innerHTML);
}

function searchDirection2(objName,index) 
{
    dhtml.showElement('progress');
    showDirectionResult();
    selectedIndex = index;
    obj = document.getElementById(objName);
    dhtml.setText('directionText','');
    dhtml.setText('driveToTxt',document.getElementById('address__' +index).innerHTML);
    document.getElementById('driveAdd').value = obj.value;
    geocode(document.getElementById(objName).value);
}

function searchDirection3(objName,index) 
{
    if(document.getElementById(objName).value != null && document.getElementById(objName).value.length > 0 && document.getElementById(objName).value != 'Start Address')
    {
        directionToFlag = true;
        dhtml.showElement('progress');

        selectedIndex = index;
        obj = document.getElementById(objName);
        dhtml.setText('directionText','');
        //  dhtml.setText('driveToTxt',document.getElementById('address__' +index).innerHTML);
        //  document.getElementById('driveFromAdd').value = obj.value;
        //  document.getElementById('driveToAdd').value = atmaddressList[index].getAdd1() + "," + atmaddressList[index].getAdd2();
        
        geocode(document.getElementById(objName).value);
    }
    else
    {
        alert('Start Address is required.');
	    dhtml.hideElement('progress');
    }
    
}

function searchDirection4(objName,index) 
{
    if(document.getElementById(objName).value != null && document.getElementById(objName).value.length > 0 && document.getElementById(objName).value != 'End Address')
    {
        directionFromFlag = true;
        dhtml.showElement('progress');
        selectedIndex = index;
        obj = document.getElementById(objName);
        dhtml.setText('directionText','');
        //document.getElementById('driveToAdd').value = obj.value;
        //document.getElementById('driveFromAdd').value = atmaddressList[index].getAdd1() + "," + atmaddressList[index].getAdd2();
        geocode(document.getElementById(objName).value);
    }
    else
    {
        alert('End Address is required.');
	    dhtml.hideElement('progress');
    }
    
}

function searchDirectionFromLeftPanel() {
    addarr = new Array();
    add = document.getElementById('driveFromAdd').value;
    if(add != null && add.length > 0 ) {
        dhtml.showElement('progress');
        geocodeFromAdd(add);
    }
}

function geocodeFromAdd(address) {
    
    if(address != null && address.length > 0 ) {
        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];
			    routeaddB = address;    
                addarr.push(new GLatLng(lat, lng));
			    addarr.push(gmarkers[selectedIndex].getLatLng());
			    add = document.getElementById('driveToAdd').value;
                if(add != null && add.length > 0 ) {
                    dhtml.showElement('progress');
                    geocodeToAdd(add);
                }
			    
		    }
		    else {
		        alert('Invalid address.');
	            dhtml.hideElement('progress');
		    }
	    });
	}
	else {
	    alert('Starting Address is required.');
	    dhtml.hideElement('progress');
	}
}

function geocodeToAdd(address) {
    
    if(address != null && address.length > 0 ) {
        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 = address;    
                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 geocode(address) {
    gmarkers[selectedIndex].closeInfoWindow();
    if(address != null && address.length > 0 ) {
        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];
			    if(directionFromFlag) {
			        routeaddA = address;    
                    routeaddB = atmaddressList[selectedIndex].getAdd1() +", " + atmaddressList[selectedIndex].getAdd2() + " ";
                    addarr.push(new GLatLng(lat, lng));
                    addarr.push(gmarkers[selectedIndex].getLatLng());
                    directionFromFlag = false;
                }
                else if(directionToFlag) {
                    routeaddB = address;
                    routeaddA = atmaddressList[selectedIndex].getAdd1() +", " + atmaddressList[selectedIndex].getAdd2() + " ";
                    addarr.push(gmarkers[selectedIndex].getLatLng());
                    addarr.push(new GLatLng(lat, lng)); 
                    directionToFlag = false;
                }
			    findDirection();
		    }
		    else {
		        alert('Invalid address.');
	            dhtml.hideElement('progress');
		    }
	    });
	}
	else {
	    alert('Starting Address is required.');
	    dhtml.hideElement('progress');
	}
}

function findDirection() 
{
//    directionobj = document.getElementById("directionText");
    if(directionObj != null)
        directionObj.clear();
    directionObj = new GDirections(map);
    str = routeaddB + " @" + addarr[1].lat()+","+ addarr[1].lng() + " to " + routeaddA + "@" + addarr[0].lat()+","+ addarr[0].lng();
//    alert(str);
//    str = routeaddB + " to " + routeaddA;
    directionObj.load(str,{getSteps:true,getPolyline:true});
    GEvent.addListener(directionObj, "load",directionLoad);    
    GEvent.addListener(directionObj, "error", GErrorOccured);
}
function directionLoad() {
   // clearRouteItems();
    dhtml.hideElement('progress');
    showDirectionResult();
    gmarkers[selectedIndex].closeInfoWindow();

    clearInfoMarkers();

    dhtml.showElement('directionText');
    //dhtml.hideElement('resetBtnLnk');
    dhtml.showElement('locationBtn');
    dhtml.showElement('resetBtn');
    dhtml.hideElement('progress');
    showDirectionResult();    
    dhtml.setText('directionText',directionObj.getSummaryHtml());
    directionStr = "";
    
	var numofRoutes = directionObj.getNumRoutes();
	
	directionStr += "<br/>";
	directionStr += "<table style='width: 100%'>";
	directionStr += "<tr>";
	directionStr += "<td valign='middle' style='height:20px'><b>Start:</b> " + routeaddB + "</td>";
	directionStr += "</tr>";;
	if(parseInt(numofRoutes) > 0 ) 
	{
//	    directionStr += "<tr>";
//		directionStr += "<td valign='middle' style='height:20px'>Total distance is " + directionObj.getDistance().html + " and travel time is "  + directionObj.getDuration().html + "</td>";
//		directionStr += "</tr>";;	
	}
	for(var i=0;i<numofRoutes;i++) {
		route = directionObj.getRoute(i);		
		if(i == 0) {
		    directionStr += "<tr>";
		    directionStr += "<td>";
		    directionStr += "<table style='width: 100%' cellspacing='5'>";
		    directionStr += "<tr>";
		    directionStr += "<td style='width: 20px;height:20px'>&nbsp;</td>";
		    directionStr += "<td style='height:20px'>" + route.getDistance().html + " - about " + route.getDuration().html + "</td>";
		    directionStr += "<td style='width: 33px;height:20px'>&nbsp;</td>";
	        directionStr += "</tr>";
		}
		for(var k=0;k<route.getNumSteps();k++) 
		{
			step = route.getStep(k);
            directionStr += "<tr>";
		    directionStr += "<td style='width: 20px;height:20px'><a href='#' onclick=\"blowupMap('"+ step.getLatLng().lat()   + "','" + step.getLatLng().lng()  +"')\">" + (k+1) + "</a></td>";
		    directionStr += "<td style='height:20px'>" + step.getDescriptionHtml() + "</td>";
		    directionStr += "<td style='width: 33px;height:20px'>" + step.getDistance().html + "</td>";
	        directionStr += "</tr>";
	        directionStr += "<tr><td colspan='3'>&nbsp;</td></tr>";
		}
	}
    directionStr += "</table>";
	directionStr += "</td>";
	directionStr += "</tr>";
	if(parseInt(numofRoutes) > 0 ) {
        directionStr += "<tr>";
		directionStr += "<td  style='height:20px'><b>End:</b> " + routeaddA + "</td>";
		directionStr += "</tr>";;
	}
	//init();
	directionStr += "</table>";
	routeLine = directionObj.getPolyline();
	//map.addOverlay(routeLine);
	zoomlevel = map.getBoundsZoomLevel(directionObj.getPolyline().getBounds());
	//map.setCenter(directionObj.getPolyline().getBounds().getCenter(),zoomlevel);
    dhtml.setText('directionText',directionStr);
  
	
	//routemarker	= new GMarker(addarr[0],getIcon('S.png'));
	//map.addOverlay(routemarker);
	//routemarker1	= new GMarker(addarr[1],getIcon('E.png'));
	//map.addOverlay(routemarker1);

    $('#directionPane').jScrollPaneRemove();
    $('#directionPane').jScrollPane({scrollbarWidth:27,animateTo:true});
}
function showInfoMarkers()
{
    for(var i=0;i<gmarkers.length;i++)
    {
        map.addOverlay(gmarkers[i]);
    }
}
function clearInfoMarkers()
{
    for(var i=0;i<gmarkers.length;i++)
    {
        map.removeOverlay(gmarkers[i]);
    }
}
function clearRouteItems() 
{
     if(directionObj != null)
        directionObj.clear();
    if(routeLine != null)
    {
        map.removeOverlay(routeLine);               
    }       
    if(routemarker != null)
        map.removeOverlay(routemarker);
    if(routemarker1 != null)
        map.removeOverlay(routemarker1);
}
function blowupMap(lat,lng)
{
    map.showMapBlowup(new GLatLng(lat,lng));
}

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('Map.aspx?w=' + screen.width + '&h='+ screen.height,'windowname4', params);
     if (window.focus) {newwin.focus()}
     return false;
}

function print() {
    params  = 'width=670';
    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;    
}
