﻿/// <reference path="MDSMapIntelliSenseHelper/MDSMapIntelliSenseHelper.js" />

var _LastInputAdr = 
{
    street: "",
    suburb: "",
    postcode: "",
    state: "",
    adr: ""
}

//For Route
var _route = 
{
    from: { lat: 0, lng: 0,adr: "" },
    to: { lat: 0, lng: 0, adr: "" },        
    startMarker: null,
    listind: -1
};

//Route original view
var _routeOgView =
{
    zoom: 0,
    cx: 0,
    cy: 0
};

//Route original view
var _pushpinOgView =
{
    zoom: 0,
    cx: 0,
    cy: 0
};

//User location xy
var _userLoc =
{
    g_cx: 0,
    g_cy: 0
}    
//Page buffer
//********************
var rList_strVal;  //= new Array();  
var rList_x; //= new Array();
var rList_y; //= new Array();
var rList_Distance; //= new Array(); 
var rList_tot;

var Board_PageSearch = {};
var Board_PageResult = {};
var Board_PageDetail = {};
var Board_PageDD = {};
var Board_PageDDForm = {};
var Board_Util = {};

function loadMap() 
{
    initBoard_PageSearch();
    initBoard_PageResult();
    initBoard_PageDetail();
    initBoard_PageDD();
    initBoard_PageDDForm();
    initBoard_Util();
    _map =new MDSMap($get('MapWindow'));  
    _map.UserIDSet($get('UserID').value);    
    _map.LoadMap(null,null,495,400,635,500,4);
    Board_Util.SetPageState('SearchPage');
}

function unloadMap() 
{
    _map.UnloadMap();
}


function initBoard_PageSearch() {  
        
    Board_PageSearch.searchClick = function() 
    {      
        PageSearch_SearchAdrClickBody();
    }
    
    Board_PageSearch.clearClick = function() 
    {      
        $get('txtSuburb').value = "";
        $get('txtPostcode').value = "";
        $get('txtStreet').value = "";
        document.forms[0].filters[0].checked = true;
        for (var j = 1; j <= 9; j++) {
            box = eval("document.form1.CheckBox" + j); 
            if (box.checked == true) box.checked = false;
        } 
        $get('multiples').style.visibility='hidden';
        $get('errorMsg').style.visibility='hidden';       
    }
    
    Board_PageSearch.txtAdrEnterKey = function txtAdrEnterKey(e)
    {
        var pK = document.all? window.event.keyCode:e.which; //IE:Firefox
        if (pK == 13) 
        {
        PageSearch_SearchAdrClickBody();
        }
        else
        {
            $get('errorMsg').style.visibility='hidden';
            $get('multiples').style.visibility='hidden';
        }
    }
    
    function PageSearch_SearchAdrClickBody()
    { 
        var noNeedAddressSearch = PageSearch_SaveLastInputAdr();
        if (($get('multiples').style.visibility!=='hidden') && noNeedAddressSearch)
        {
            if ($get('cboLoc').options[$get('cboLoc').selectedIndex].value !="0") 
            {
                $get('multiples').style.visibility='hidden';
                $get('errorMsg').style.visibility='hidden';
                _LastInputAdr.adr = $get('cboLoc').options[$get('cboLoc').selectedIndex].text;
                var LatLong=$get('cboLoc').options[$get('cboLoc').selectedIndex].value.split("***");
                PageSearch_initSearch(LatLong[0],LatLong[1],0);
            }
        }
        else PageSearch_checkFormValid();
    }
    
    function PageSearch_SaveLastInputAdr()
    {
        var noNeedAddressSearch = true;
        var street,suburb,postcode;
        var ustreet,usuburb,postcode;        
        var lstreet,lsuburb,lpostcode;
        street = $get('txtStreet').value;
        ustreet=street.toUpperCase();

        suburb = $get('txtSuburb').value;
        suburb = Board_Util.trim(suburb," ");
        usuburb=suburb.toUpperCase();
        postcode = $get('txtPostcode').value;
        postcode = Board_Util.trim(postcode," ");
        
        lstreet = _LastInputAdr.street;
        lstreet = lstreet.toUpperCase();
        lsuburb = _LastInputAdr.suburb;
        lsuburb = lsuburb.toUpperCase();
        lpostcode = _LastInputAdr.postcode;     
              
        
        //if (lstreet != ustreet) 
        if (lstreet.indexOf(ustreet)< 0 )
        {
            _LastInputAdr.street = street;
            noNeedAddressSearch = false;
        }
        //if (lsuburb != usuburb) 
        if (lsuburb.indexOf(usuburb)< 0 )
        {
            _LastInputAdr.suburb = suburb;
            noNeedAddressSearch = false;
        }
        //if (lpostcode != postcode) 
        if (lpostcode.indexOf(postcode)< 0 )
        {
            _LastInputAdr.postcode = postcode;
            noNeedAddressSearch = false;
        } 
        return noNeedAddressSearch;
    }
    
    function PageSearch_checkFormValid() 
    {
        var suburb="";
        var street="";
        var state="";
        var postcode = "";
        if  ($get('txtSuburb').value != '') suburb= $get('txtSuburb').value;
        if  ($get('txtPostcode').value != '') postcode= $get('txtPostcode').value;
        if  ($get('txtStreet').value != '') street= $get('txtStreet').value;
        if ((suburb !="") || (postcode !="") || (street !=""))  
        {
            PageSearch_FindLoc(postcode,suburb,street,state);
        }    
        else
        {
            $get('errorMsg').style.visibility='visible';
            $get('errorMsg').innerHTML = 'We were unable to find the location specified. Please try new information.';
        }       
    }
    
    function PageSearch_FindLoc(postcode,suburb,street,state)
    {
        QLPipe.FindPostcodeAddress($get('UserID').value,postcode,suburb,street,state,PageSearch_FindLocCallBack);
    }
    
    function PageSearch_FindLocCallBack(results)
    {
        var multiples = $get('multiples');
        var cboLoc = $get('cboLoc');
        multiples.style.visibility='hidden';
        $get('errorMsg').style.visibility='hidden';
    
        switch(results.FullResult)
        {
            case 1://one addy                
            //_map.ZoomToPoint(results.Locations[0].Position.Y, results.Locations[0].Position.X, 13);
            var tempAdr = Board_Util.BuildCorrectAdr(results);
            _LastInputAdr.adr = tempAdr;
            PageSearch_initSearch(results.Locations[0].Position.X,results.Locations[0].Position.Y,0);
            break;
            
            case 100://multi address
            multiples.style.visibility='visible';
            $get('errorMsg').style.visibility='visible';
            $get('errorMsg').innerHTML="Multiple results found. Please select the best match from the list.  ";
            cboLoc.options.length=0;
            cboLoc[0]=new Option("Please select...","0");
            for(var a=0;a<results.Locations.length;a++)//populate the combobox with locations
            {
                var obj=new Option(results.Locations[a].Suburb+", "+results.Locations[a].State+", "+results.Locations[a].Postcode,results.Locations[a].Position.X+"***"+results.Locations[a].Position.Y);
                cboLoc[a+1]=obj;
            }
            break
            
            case 120://not valid postcode
            $get('errorMsg').style.visibility='visible';
            $get('errorMsg').innerHTML="The postcode entered does not match the State selected. Please try again.";
            globErr=true;
            break;
            
            default://no addy//invalid addy
            $get('errorMsg').style.visibility='visible';
            $get('errorMsg').innerHTML="We were unable to find the location specified. Please try new information.";
            globErr=true;
            break;
        }
    }
    function PageSearch_initSearch(x,y,ID)
    {
        var whereClaus = "";
        var totRadios = document.form1.filters.length-1;
        var fOption = -1;
            
        _userLoc.g_cx=x;
        _userLoc.g_cy=y;
    
        for (var j = 1; j <= 9; j++) {
            box = eval("document.form1.CheckBox" + j); 
            if (box.checked == true) whereClaus += box.id + ";";
        } 
    
        for (i=totRadios; i > -1; i--) {
            if (document.form1.filters[i].checked) {
            fOption = i; i = -1;
            }
        }
        whereClaus += document.form1.filters[fOption].value + ";";
    
        GeneralSearch.FindNearestInit($get('UserID').value,whereClaus,x,y,PageSearch_SearchNearestCallBack)
        Board_Util.DisplayProcessingInfo();
  
    }
    function PageSearch_SearchNearestCallBack(results)
    {
        //UndisplayProcessingInfo();
        if (results.tot > 0) Board_PageResult.ResultProcess(results);
        else
        {
            //dt = results.tot.toString();
            $get('errorMsg').style.visibility='visible';
            $get('errorMsg').innerHTML = 'Sorry, we are unable to find a listing that matches your search. Please refine your search and try again.'; 
        } 
    }
         
    
} //End of initBoard_PageSearch()


function initBoard_PageResult() {

    Board_PageResult.ResultProcess =function ResultProcess(results) 
    {
        rList_strVal = new Array();
        rList_x = new Array();
        rList_y = new Array();
        rList_Distance = new Array();
                        
        for (var mc=1;mc<=results.tot;mc++) 
        {
            rList_strVal[mc] = results.Items[mc].StringVal;
            rList_x[mc]= results.Items[mc].X;
            rList_y[mc]= results.Items[mc].Y;
            rList_Distance[mc] = Board_Util.roundNumber(results.Items[mc].Distance,2);
        }
        rList_tot = results.tot;
        //_map.Routes.Clear();
        PageResult_ShowPushpins();
        PageResult_ShowResultList();
        PageResult_SavePushpinView();
        Board_Util.SetPageState('ResultPage');
    }
    
    Board_PageResult.BackToResultPage = function BackToResultPage()
    {
        Board_Util.SetPageState('ResultPage');
        //_map.PopupHideAll();
        PageResult_ShowPushpins();
        //_map.ZoomToPoint(_pushpinOgView.cy, _pushpinOgView.cx, _pushpinOgView.zoom)
        _map.Refresh();
    }
    
    function PageResult_ShowAddressPin()
    {
        var newMarker = new MDSMarker( new MDSLatLong(_userLoc.g_cy,_userLoc.g_cx));
        var iconPath = "images/Center_pin.png";
        newMarker.SetIcon(iconPath,18,19,9,9);             
        newMarker.SetPopupContent( '<ul style="list-style-type:none;width:200px;">' +
        '<li><span style="color:#1874cd;font-weight:bold;">Address:</span></li><li>'+_LastInputAdr.adr+'</li>' +
        '</ul>');
        newMarker.SetPopupDisplay( MDSPopupDisplay.MouseOver );                       
        _map.Markers.Add( newMarker );    
    }
    
    function PageResult_ShowPushpins()
    {
        _map.Markers.Clear();
        _map.Routes.Clear();
        for (var mc=1;mc<=rList_tot;mc++) 
        {
            var newMarker = new MDSMarker( new MDSLatLong( rList_y[mc], rList_x[mc] ) );
            fieldL = rList_strVal[mc].split("***");
           
            iconPath = "images/icon" + mc + ".gif";
            newMarker.SetIcon(iconPath, 25, 28,12,14);             
                  
            newMarker.SetPopupContent( '<ul style="list-style-type:none;width:200px;">' +
                    '<li><span style="color:#1874cd;font-weight:bold;">Name:</span>&nbsp;&nbsp;&nbsp;&nbsp;</li><li>'+fieldL[1]+'</li>'+
                    '<li><span style="color:#1874cd;font-weight:bold;">Address:</span></li><li>'+fieldL[3]+'</li>' +
                    '<li><span style="color:#1874cd;font-weight:bold;">Suburb:</span></li><li>'+fieldL[4]+'</li>' +
                    '<li><span style="color:#1874cd;font-weight:bold;">Region:</span></li><li>'+fieldL[5]+'</li>' +
                    '<li><span style="color:#1874cd;font-weight:bold;">Phone:</span></li><li>'+fieldL[7]+'</li>' +
                    '</ul>');
            newMarker.SetPopupDisplay( MDSPopupDisplay.MouseOver );                       
            _map.Markers.Add( newMarker );    
        }
        PageResult_ShowAddressPin();
        _map.Refresh();
    }
    
    function PageResult_ShowResultList() 
    {
        var fieldL;
        var dt;
        var bgColour = '"#ffffff"';
        var refined_adr="";
        var services;
        var iconPath;
        var cssclass="details-light";
        dt = "<table cellspacing='0' cellpadding='1' border='0'>"
        for (var mc=1;mc<=rList_tot;mc++) 
        {
            fieldL = rList_strVal[mc].split("***");
            iconPath = "images/icon" + mc + ".gif";
            dt +="<tr><td rowspan='4'><img src=" + iconPath + " alt='Link to details' title='Link to details' onmouseover='Board_Util.thishand(this);' onclick='Board_PageDetail.StartDetailPage("+mc+");' />";
            dt += "</td><td rowspan='4'><img src='images/car.gif' title='Drive directions' alt='Drive directions' onmouseover='Board_Util.thishand(this);' onclick='Board_PageDDForm.StartDDFormPage("+mc+");' />";
            dt += "</td><td class='cTxt1'><a href='javascript:Board_PageDetail.StartDetailPage("+mc+");' class='lLnk1'>" + fieldL[1] + "</a></td></tr>";
            dt += "<tr><td class='cTxt1'>" + fieldL[3] + "</td></tr>";
            dt += "<tr><td class='cTxt1'>" + fieldL[4] + " , " + fieldL[6] + " " + fieldL[5] +  "</td></tr>";
            dt += "<tr><td class='cTxt1'>" + fieldL[7] +  "</td></tr>"; 
            dt += "<tr><td><br></td></tr>";    
        } 
        dt += "</table>";
        $get('resultList').innerHTML = dt;  //listDiv;
        $get('loclabel').innerHTML = "Nearest outlet to " + _LastInputAdr.adr; 
    }
    
    function PageResult_SavePushpinView()
    {
        _pushpinOgView.zoom = _map.CurrentZoom();
        var cLatLong = _map.CentreLatLong(); 
        _pushpinOgView.cx = cLatLong.Long;
        _pushpinOgView.cy = cLatLong.Lat;
    }   
    
}  //End of initBoard_PageResult() 

function initBoard_PageDetail() 
{
    Board_PageDetail.StartDetailPage = function StartDetailPage(ind)
    {
        Board_PageDetail.ListDetail(ind);
        _map.ZoomToPoint(rList_y[ind],rList_x[ind],14);
    }
    
    Board_PageDetail.ListDetail = function ListDetail(ind)
    {
        var fieldL;
        fieldL = rList_strVal[ind].split("***");
        Board_Util.SetPageState('DetailPage');
        dt = "<table><tr><td>";
        dt = "<table cellspacing='1' cellpadding='1' class='lubricantdetails'>";
        dt += "<tr><th colspan='3'><p class='cTxt14'>Location Information</p></th></tr>";
        dt += "<tr><td>Name:</td><td class='cTxt1'>" + fieldL[1] + "</td></tr>";
        dt += "<tr><td>Address:</td><td class='cTxt1'>" + fieldL[3] + "</td></tr>";
        dt += "<tr><td>Town/<br/>Suburb:</td><td class='cTxt1'>" + fieldL[4] + "</td></tr>";
        dt += "<tr><td>Region:</td><td class='cTxt1'>" + fieldL[5] + "</td>";
        dt += "<tr><td>Postcode:</td><td class='cTxt1'>" + fieldL[6] + "</td></tr>";
        dt += "<tr><td>Phone:</td><td class='cTxt1'>" + fieldL[7] + "</td></tr>";
        dt += "<tr><td>Distance:</td><td class='cTxt1'>" + rList_Distance[ind] + "</td></tr>";
        dt += "<tr><td rowspan='5' colspan='2' class='cTxt1'><img src='images/car.gif' style='vertical-align:bottom' title='Drive directions' alt='Drive directions' onmouseover='Board_Util.thishand(this);' onclick='Board_PageDDForm.StartDDFormPage("+ind+");'/><a href='javascript:onclick=Board_PageDDForm.StartDDFormPage("+ind+");'>Get Driving Instructions</a></td></tr>"; 
        dt += "</table>";
        dt += "</td></tr><tr><td>";
        dt += "<table cellspacing='0' cellpadding='1' class='lubricantdetails'>";
        dt += "<tr><th colspan='4' align='left'><p class='cTxt14'>Location Lubricant Types</p></th></tr>";
        dt += "<tr><td class='cTxt1'>Automotive</td><td class='cTxt1'>" + valYesNo(fieldL[9]) + "</td><td class='cTxt1'>Transport</td><td class='cTxt1'>" + valYesNo(fieldL[10]) + "</td></tr>";
        dt += "<tr><td class='cTxt1'>Industrial</td><td class='cTxt1'>" + valYesNo(fieldL[11])+ "</td><td class='cTxt1'>Motorcycle</td><td class='cTxt1'>" + valYesNo(fieldL[12]) + "</td></tr>";
        dt += "<tr><td class='cTxt1'>Marine</td><td class='cTxt1'>" + valYesNo(fieldL[13])+ "</td><td class='cTxt1'>Grease</td><td class='cTxt1'>" + valYesNo(fieldL[14]) + "</td></tr>";
        dt += "<tr><td class='cTxt1'>FoodGrade</td><td class='cTxt1'>" + valYesNo(fieldL[15]) + "</td><td class='cTxt1'>MetalWorking</td><td class='cTxt1'>" + valYesNo(fieldL[16]) + "</td></tr>";
        dt += "<tr><td class='cTxt1'>Agriculture</td><td class='cTxt1'>" + valYesNo(fieldL[17])+ "</td></tr></table>"; 
        dt += "</td></tr></table>"; 
        $get('page_details').innerHTML = dt;
    }
    
    function valYesNo(char1)
    {
        if (char1 == "Y") return "Yes" ;
        else return "No";
    }    
}

function initBoard_PageDDForm() 
{
    Board_PageDDForm.StartDDFormPage = function StartDDFormPage(ind)
    {
        Board_PageDDForm.clearClick();
        var fieldL = rList_strVal[ind].split("***");
        $get('txtToStreet').innerHTML = "";
        $get('txtToStreet').appendChild(document.createTextNode(fieldL[3]));
        $get('txtToSuburb').innerHTML = "";
        $get('txtToSuburb').appendChild(document.createTextNode(fieldL[4]));
        $get('txtToState').innerHTML = "";
        $get('txtToState').appendChild(document.createTextNode(fieldL[5]));
        _route.to.lat = rList_y[ind]; 
        _route.to.lng = rList_x[ind];
        _route.to.adr = fieldL[3] +", " + fieldL[4] + ", " + fieldL[5];
        _route.listind = ind;
        Board_Util.SetPageState("adrfrompage");
    }
    
    Board_PageDDForm.txtAdrEnterKey = function txtAdrEnterKey(e)
    {
        var pK = document.all? window.event.keyCode:e.which; //IE:Firefox
        if (pK == 13) 
        {
        PageDDForm_SearchAdrClickBody();
        }
        else
        {
            $get('errorMsg').style.visibility='hidden';
            $get('multiples').style.visibility='hidden';
        }
    }
    Board_PageDDForm.clearClick = function() 
    {      
        $get('txtFromSuburb').value = "";
        $get('txtFromPostcode').value = "";
        $get('txtFromStreet').value = "";
        $get('fromMultiples').style.display='none';
        $get('fromErrorMsg').style.display='none';       
    }
    
    Board_PageDDForm.fromAddressSearchClick= function fromAddressSearchClick()
    {
        PageDDForm_SearchAdrClickBody();
    }
    
    function PageDDForm_SearchAdrClickBody() 
    {
        if ($get('fromMultiples').style.display != "none") 
        {
            if ($get('fromCboLoc').options[$get('fromCboLoc').selectedIndex].value !="0") 
            {
   
            $get('fromMultiples').style.display="none";
            $get('fromErrorMsg').style.display = "none";
            var LatLong=$get('fromCboLoc').options[$get('fromCboLoc').selectedIndex].value.split("***");
            var fromAdr = $get('fromCboLoc').options[$get('fromCboLoc').selectedIndex].text;
            PageDDForm_BulidRouteFromObject(LatLong[0],LatLong[1],fromAdr)
            PageDDForm_startRoute();
            }    
        }
        else
        {         
            var fromStreet = $get('txtFromStreet').value;
            var fromSuburb = $get('txtFromSuburb').value;
            var fromPostcode = $get('txtFromPostcode').value;
            if (fromPostcode !="") fromSuburb = Board_Util.trim(fromPostcode, " ");
            //var fromState = $get('txtFromState').value; 
            fromState = "";  // trim(fromState," ")
            if (fromStreet == "") QLPipe.FindSuburb($get('UserID').value,fromSuburb,PageDDForm_fromSearchAddressCallBack); 
            else QLPipe.FindAddress($get('UserID').value,fromSuburb,fromStreet,fromState,PageDDForm_fromSearchAddressCallBack);
        }
    }
    
    function PageDDForm_fromSearchAddressCallBack(results) {
        var fromMultiples = $get('fromMultiples');
        fromMultiples.style.display = "none";
        var fromCboLoc = $get('fromCboLoc');
        fromCboLoc.style.visibility="hidden";
        var fromErrorMsg = $get('fromErrorMsg');
        fromErrorMsg.innerHTML = ""; 
        var selText, selValue, strSt;
        switch(results.FullResult)
        {
            case 1://one addy
            var fromAdr = Board_Util.BuildCorrectAdr(results);
            PageDDForm_BulidRouteFromObject(results.Locations[0].Position.X,results.Locations[0].Position.Y,fromAdr);
            PageDDForm_startRoute();
            break;
            case 100://multi address
            fromMultiples.style.display = "block";
            fromCboLoc.style.visibility="visible";
            fromErrorMsg.style.display="block";
            fromErrorMsg.innerHTML="<p>Multiple results found. Please Select the best match from the list.</p>";
            fromCboLoc.options.length=0;
            fromCboLoc[0]=new Option("Please select...","-1");            
            for(var a=0;a<results.Locations.length;a++)//populate the combobox with locations
            {
                strSt = results.Locations[a].StreetLine;
                if (strSt != "") strSt += ", ";
                selText= strSt+results.Locations[a].Suburb+", "+results.Locations[a].State+", "+results.Locations[a].Postcode;
                selValue = results.Locations[a].Position.X+"***"+results.Locations[a].Position.Y;
                var obj=new Option(selText,selValue);
                fromCboLoc[a+1]=obj;
            }
            break
            default://no addy//invalid addy
            fromErrorMsg.style.display="block";
            fromErrorMsg.innerHTML="<p>Sorry, we are unable to find a listing that matches your search. Please refine your search and try again.</p>";
            globErr=true;
            break;
        }  
   }
   
   function PageDDForm_BulidRouteFromObject(fromx,fromy,fromAdr)
    {
        _route.from.lat = fromy; 
        _route.from.lng = fromx;
        _route.from.adr = fromAdr;    
        _route.startMarker = new MDSMarker( new MDSLatLong( _route.from.lat, _route.from.lng ) );
        var iconPath = "images/Start_Icon.png";
        _route.startMarker.SetIcon(iconPath, 16, 16,8,8);
        _route.startMarker.SetPopupContent( '<p>Route Start point: '+_route.from.adr+'</p>' );
        _route.startMarker.SetPopupDisplay( MDSPopupDisplay.MouseOver );
    }  

    function PageDDForm_startRoute()
    {
        var fromErrorMsg=$get('fromErrorMsg'); 
        fromErrorMsg.style.display="block";
        fromErrorMsg.innerHTML="<p>Processing your request.</p>"; 
        RTPipe.DoRoute($get('UserID').value,_route.from.lat,_route.from.lng,_route.to.lat,_route.to.lng, Board_PageDD.RouteCallBack);
    }
} //End of initBoard_PageDDForm()

function initBoard_PageDD() 
{
    function PageDD_SaveRouteView()
    {
        _routeOgView.zoom = _map.CurrentZoom();
        var cLatLong = _map.CentreLatLong(); 
        _routeOgView.cx = cLatLong.Long;
        _routeOgView.cy = cLatLong.Lat; 
    } 
    
    Board_PageDD.RouteCallBack = function RouteCallBack(results) 
    {

    var bgColour = '"#ffffff"';
    var len; 
    if( results.Exception != null ) {
        $get('fromErrorMsg').innerHTML="<p>"+results.Exception+"</p>";  
    } 
    else 
    {
        _map.Markers.Remove( _route.startMarker );
        _map.Markers.Add( _route.startMarker );
                    
        //$get('fromErrorMsg').innerHTML = '<p>Done</p>';      
        _map.Routes.Clear();
        _map.Routes.Add( results.MapFileName, results.North, results.West, results.South, results.East );
        
        // build driving directions table. 
        var rtdetail ='<table class="tbl-driving-dirs">';
        rtdetail += '<tr><td colspan="7" class="ddaddress">Driving Directions from ' + _route.from.adr + ' to ' + _route.to.adr + '</td></tr>';
        rtdetail +='<tr><th>Step</th><th>Instruction</th><th>Road</th><th>Direction</th><th>Town/Suburb</th><th>Driving Distance</th><th>Time</th></tr>';      
        len=results.Itinerary.Segments[0].Directions.length;
        var lnk = "javascript:window.location='default.aspx';"; 
        for (i=0; i<len; i++) 
        {
          rtdetail += '<tr><td>'+results.Itinerary.Segments[0].Directions[i].ID+'</td>';
          rtdetail += '<td><img src="'+PageDD_getRouteImage(results.Itinerary.Segments[0].Directions[i].Instruction)+'" height="22px" width="25px" border="0"/></td>';
          rtdetail += '<td>'+results.Itinerary.Segments[0].Directions[i].Address.AddressLine+'</td>';
          rtdetail += '<td>'+results.Itinerary.Segments[0].Directions[i].Bearing+'</td>';
          rtdetail += '<td>'+results.Itinerary.Segments[0].Directions[i].Address.PrimaryCity+'</td>';
          rtdetail += '<td>'+PageDD_addUnit(results.Itinerary.Segments[0].Directions[i].Distance, 1)+'</td>';
          rtdetail += '<td>'+PageDD_addUnit(results.Itinerary.Segments[0].Directions[i].Duration, 0)+'</td></tr>';
        }
        
        rtdetail += '<tr><th colspan="5" class="lft">Totals</th><th class="rgt">'+PageDD_addUnit(Math.round(results.Itinerary.Distance*100)/100, 1)+'</th><th class="rgt">'+PageDD_addUnit(results.Itinerary.TripTime, 0)+'</th></tr>';
        rtdetail += '<tr><td colspan="7" align="right"><input type="button" class="cDat4" value="Search Again" onclick="' + lnk + '";" ></td></tr>';
        rtdetail += '</table>';
        $get('page_dd').innerHTML=rtdetail;  //PrintDDPage(results.Sub1,results.Sub2);
        _map.Refresh(); 
        Board_PageDetail.ListDetail(_route.listind); 
        PageDD_SaveRouteView();
        Board_Util.SetPageState('DDPage');    
        
        } 
    }
    
    function PageDD_getRouteImage(bearing) 
{
        var strInstructionPic="";
        bearing = bearing.toUpperCase().replace(/^\s+|\s+$/g, '');
    
        if (bearing.indexOf("TURN LEFT")>-1) 
            strInstructionPic = "left.gif";
        else if (bearing.indexOf("TURN RIGHT")>-1) // "TURN RIGHT":
            strInstructionPic = "right.gif";
        else if (bearing.indexOf("CONTINUES AS")>-1) // "CONTINUES AS":
            strInstructionPic = "straight.gif";
        else if (bearing.indexOf("CONTINUE AS")>-1) // "CONTINUE AS":
            strInstructionPic = "straight.gif";
        else if (bearing.indexOf("CONTINUE")>-1) // "CONTINUE":
            strInstructionPic = "straight.gif";
        else if (bearing.indexOf("PASS THROUGH")>-1) // "PASS THROUGH":
            strInstructionPic = "straight.gif";
        else if (bearing.indexOf("STAY ON")>-1) // "STAY ON":
            strInstructionPic = "straight.gif";
        else if (bearing.indexOf("BEAR LEFT")>-1) // "BEAR LEFT":
            strInstructionPic = "bear_left.gif";
        else if (bearing.indexOf("BEAR RIGHT")>-1) //  "BEAR RIGHT":
            strInstructionPic = "bear_right.gif";
        else if (bearing.indexOf("TURN BACK TO YOUR RIGHT")>-1) //  "TURN BACK TO YOUR RIGHT":
            strInstructionPic = "backright.gif";
        else if (bearing.indexOf("TURN BACK TO YOUR LEFT")>-1) // "TURN BACK TO YOUR LEFT":
            strInstructionPic = "backleft.gif";
        else if (bearing.indexOf("TURN BACK TO YOUR LEFT")>-1) // "TURN BACK TO YOUR LEFT":
            strInstructionPic = "backleft.gif";
        else 
        {
            if (bearing.indexOf("START")>-1) 
            strInstructionPic = "start.gif"
            else if (bearing.indexOf("FINISH")>-1) //InStr(1, bearing.ToUpper, "FINISH") Then
            strInstructionPic = "stop.gif"
            else if (bearing.indexOf("ROUNDABOUT")>-1) //InStr(1, bearing.ToUpper, "ROUNDABOUT") Then
            strInstructionPic = "round.gif"
            else
            strInstructionPic = "blank.gif"
        }        
    
        // should be "/mapDataSciences/shared/images/" - added dev reference for now.
        return "/mapDataSciences/shared/images/" + strInstructionPic;
    }
    
    function PageDD_addUnit(value, unit) {
        switch (unit) {
            case 0: // time
            if (value < 60 ) {
                return value + " seconds";
            } else {
                var s = value % 60;
                var m = Math.floor( value / 60 );
                if (m < 60) {
                    return (( m < 10 ) ? "0" + m : m) + ":" + ((s < 10) ? "0" + s : s) + " minutes";
                } else {
                    var h = Math.floor(m / 60);
                    m = m - (h * 60);
                    return ((h<10) ? "0"+h : h ) + ":" + ((m<10) ? "0"+m : m ) + ":" + ((s<10) ? "0"+s : s ) + " hours";
                }
            }
            break;
            case 1: // distance
            if (value < 1) {
                value = value * 1000;
                return value + " metres";
            } else {
                return value + " kms";
            }
            break;
            default:
            break;
        }
    }
} //End of initBoard_PageDD()

function initBoard_Util() {

    Board_Util.BuildCorrectAdr = function BuildCorrectAdr(results)
    {
        var tempAdr = "";
        if (results.Locations[0].StreetLine != "" ) tempAdr = results.Locations[0].StreetLine + ", ";
        if (results.Locations[0].Suburb != "" ) tempAdr += results.Locations[0].Suburb + ", ";
        tempAdr += results.Locations[0].State + ", ";
        tempAdr += results.Locations[0].Postcode;
        return tempAdr; 
    }
    
    Board_Util.DisplayProcessingInfo = function DisplayProcessingInfo()
    {
        $get('errorMsg').style.visibility='visible';
        $get('errorMsg').innerHTML="Processing your request.";
    }
    
    Board_Util.initLastInputAdr = function initLastInputAdr() 
    {
        _LastInputAdr.street=$get('txtStreet').value;
        var suburb = $get('txtSuburb').value;
        suburb = Board_Util.trim(suburb," ");
        _LastInputAdr.suburb= suburb;
        var postcode = $get('txtPostcode').value;
        postcode = Board_Util.trim(postcode," ");
        _LastInputAdr.postcode = postcode;
    }
    
    Board_Util.SetPageState = function SetPageState(PageType)
    {
        if (PageType == 'SearchPage')
        {
        $get('page_search').style.display='block';
        $get('container_backbar').style.display='none';
        $get('page_results').style.display='none';
        $get('page_details').style.display='none';        
        $get('MapWindow').style.display='none';        
        $get('page_dd').style.display = 'none';
        $get('page_ddform').style.display = 'none';
        $get('errorMsg').style.visibility='hidden';
        $get('multiples').style.visibility='hidden';
        $get('txtFromStreet').value = '';
        $get('txtFromPostcode').value = '';
        $get('txtFromSuburb').value = '';        
        Board_Util.initLastInputAdr();
        }
        else if (PageType == 'ResultPage')
        {
        $get('page_search').style.display='none';
        $get('container_backbar').style.display='none';
        $get('container_topresult').style.display='block';
        $get('page_results').style.display='block';
        $get('page_details').style.display='none';        
        $get('MapWindow').style.display='block';        
        $get('page_dd').style.display = 'none';
        $get('page_ddform').style.display = 'none';
        $get('errorMsg').style.visibility='hidden';
        $get('multiples').style.visibility='hidden';
        }
        else if (PageType == 'DetailPage')
        {
        $get('page_search').style.display='none';
        $get('container_backbar').style.display='block';
        $get('container_topresult').style.display='none';
        $get('page_results').style.display='none';
        $get('page_details').style.display='block';        
        $get('MapWindow').style.display='block';        
        $get('page_dd').style.display = 'none';
        $get('page_ddform').style.display = 'none';
        $get('errorMsg').style.visibility='hidden';
        $get('multiples').style.visibility='hidden';
        }
        else if (PageType == 'adrfrompage')
        {
        $get('page_search').style.display='none';
        $get('container_backbar').style.display='block';
        $get('container_topresult').style.display='none';
        $get('page_results').style.display='none';
        $get('page_details').style.display='none';        
        $get('MapWindow').style.display='none';        
        $get('page_dd').style.display = 'none';
        $get('page_ddform').style.display = 'block';
        $get('fromMultiples').style.display = "none";
        $get('fromErrorMsg').style.display="none";
        }
        else if (PageType == 'DDPage')
        {
        $get('page_search').style.display='none';
        $get('container_backbar').style.display='block';
        $get('container_topresult').style.display='none';
        $get('page_results').style.display='none';
        $get('page_details').style.display='block';        
        $get('MapWindow').style.display='block';        
        $get('page_dd').style.display = 'block';
        $get('page_ddform').style.display = 'none';
        $get('errorMsg').style.visibility='hidden';
        $get('multiples').style.visibility='hidden';
        }
        
        Board_Util.thishand = function thishand(obj)
        {
        obj.style.cursor='hand';    
        }
    }
    
    Board_Util.roundNumber = function roundNumber(num, dec) 
    {
	    var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	    return result;
    }
    
    Board_Util.trim = function trim(str, chars) {
        return Util_ltrim(Util_rtrim(str, chars), chars);
    }

    function Util_ltrim(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
    }

    function Util_rtrim(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
    }
} //End of initBoard_Util()   

