﻿//<%'NOTE: str_MapSearchResult, str_MapSearchString, boo_ChkAtt, boo_ChkCl, boo_ChkUk are variables RegisterClientScriptBlock fromSearchMap.aspx.cs %>
var arrivalDate="";
var departureDate="";
var showAvailability=false;
var cc_SearchType="";
var chkUk = null;
var chkCl = null;
var chkAtt = null;

$j(document).ready(function() { swapValues=[]; $j(".swap_value").each( function(i){ swapValues[i]=$j(this).val(); $j(this).focus(function() { if($j(this).val()==swapValues[i]) { $j(this).val("") } } ).blur(function() { if($j.trim($j(this).val())=="") { $j(this).val(swapValues[i]) } } ) } ) } );

function PixelClick(e)
{
    var x = e.mapX;
    var y = e.mapY;
    pixel = new VEPixel(x, y);
    LL = cc_map.PixelToLatLong(pixel);
}

function ResetSearchForm()
{
    arrivalDate="";
    departureDate="";
    document.getElementById("ctl00_MainContentPlaceHolder_ArrivalDate").value="Arrival";
    document.getElementById("ctl00_MainContentPlaceHolder_DepartureDate").value="Departure";
    document.getElementById("ctl00_MainContentPlaceHolder_searchstring").value="";;    
    ToggleSearchType();    
}

function ResetMap()
{
   arrivalDate="";
    departureDate="";
    document.getElementById("ctl00_MainContentPlaceHolder_ArrivalDate").value="Arrival";
    document.getElementById("ctl00_MainContentPlaceHolder_DepartureDate").value="Departure";
    document.getElementById("ctl00_MainContentPlaceHolder_searchstring").value="";;    
    chkUk.checked=false;
    chkCl.checked=false;
    //chkAtt.checked=false;
     getSearchType();
    ToggleSearchType();
    var divPaging = document.getElementById("paging");
    divPaging.innerHTML="";
    cc_map.Clear();
    cc_map.LoadMap(new VELatLong(54.07100021839142,-2.783999517560005),6);
    GetRegions();
}

function PopulateDestinationDate()
{
    var arrivalDateBox = document.getElementById("ctl00_MainContentPlaceHolder_ArrivalDate");
    var departureDateBox = document.getElementById("ctl00_MainContentPlaceHolder_DepartureDate");

    arrivalDate = arrivalDateBox.value;
    if (arrivalDate!="Arrival" && arrivalDate!="")
    {
        departureDateBox.value=arrivalDate;
    }
}


//********Load/Post back functions START*************//
//***************************************************//
function GetMap()
{
    chkUk = document.getElementById("ctl00_MainContentPlaceHolder_chkClubsites");
    chkCl = document.getElementById("ctl00_MainContentPlaceHolder_chkCLSites");
    //chkAtt = document.getElementById("ctl00_MainContentPlaceHolder_chkAttractions");
    
    InitalizeMap();
    
    // BEGIN: Auto complete
    $j("#ctl00_MainContentPlaceHolder_searchstring").autocomplete("/CaravanClubApps/Applications/Maps/AutoCompleteLocation.aspx", {
        extraParams: {
            matchType : "startswith",
            cacheName : "LocationsCache",
            cacheHrs : "1",
            cacheMin : "0",
            cacheSec : "0",
            returnCounties : true,
            returnRegions : true,
            returnSites : true,
            // searchOn fields only used by GetSites
            searchOnCounty : false,
            searchOnRegion : false,
            searchOnSite : true 
        },
        delay: 200,
        minChars: 2,
        cacheLength: 100,
        max: 100,
        autoFill: false,
        selectFirst: false,
        matchContains: "word",
        matchSubset: false,
        formatItem: function(row, i, num) {
            return eval('[' + row + ']')[0].Name;
        },
        formatMatch: function(row, i, num) {
            return eval('[' + row + ']')[0].Name;
        },
        formatResult: function(row, i, num) {
            return eval('[' + row + ']')[0].Name;
        }
    });
    // END: Auto complete
    
    var cc_searchBox = document.getElementById("ctl00_MainContentPlaceHolder_searchstring");    
    var searchString = cc_searchBox.value;
    
    try{
        var str_MapSearchCriteria = document.getElementById("ctl00_MainContentPlaceHolder_MapSearchCriteria").value;
        eval(str_MapSearchCriteria);
        if(str_MapSearchResult==undefined)
        {
            str_MapSearchResult = "";
        }
    }
    catch(e){
        var str_MapSearchResult = "";
    }
    
    if ((searchString!="" && searchString!="<Search location>") || str_MapSearchResult!="")
    {
        if(str_MapSearchResult!="")
        {
            var savedResult = {};
            savedResult['d'] = str_MapSearchResult;
            //<%'Retain checked options need to be set before SearchDatabase_Plot%>
            //chkAtt.checked = boo_ChkAtt;
            chkCl.checked = boo_ChkCl;
            chkUk.checked = boo_ChkUk;
            
            SearchDatabase_Plot(savedResult,str_MapSearchString);
        }
        else
        {
            ToggleSearchType();
            InitialSearch();
        }
    }
    else
    {
        getSearchType();
        ToggleSearchType();
        GetRegions();
    }
}

function WriteRegions(result)
{
     var params = result.d.split(':');
     var ptsarray = new Array();
     var sb = new StringBuilder();
     sb.append("<p>");
     sb.append("Please enter a city, town, county, postcode or club site name in the box above <br/><br/>(or)<br/><br/> Select one of the regions below");
     sb.append("</p>");
     sb.append("<p>");
     for (var i=0; i<params.length; i++)
     {
         var data = params[i].split('|');
         
         var RegionName =data[1];
         var count = data[2];
         if (data!="")
         {
            if (RegionName!="Unknown")
            {
                //<%//NOTE: ideally add javascript check to make sure club site tick box is selected but for now pass true for chkUk.checked sb.append("<a href=\"javascript:SearchDatabase(\'" + RegionName + "\'," + chkUk.checked + "," + chkCl.checked + "," + chkAtt.checked + ",1,10" + ") \" >" + RegionName + count + '</a><br/><br/>');%>
                sb.append("<a href=\"javascript:SearchRegion(\'" + RegionName + "\',1,10" + ") \" >" + RegionName + "</a><br/><br/>");
            }
         }
     }
     sb.append("<p>");
     DisplayMessage(sb.toString());
}

function getSearchType()
{
    var fullURL = parent.document.URL; 
    var qstring = fullURL.substring(fullURL.indexOf('?')+1, fullURL.length) 
    var params = qstring.split('=');
    cc_SearchType = params[1];
    
    if (cc_SearchType=="CS")
    {
       chkUk.checked=true;
    }
    if (cc_SearchType=="CL")
    {
       chkCl.checked=true;
    }
    if (cc_SearchType=="ATT")
    {
       //chkAtt.checked=true;
    }
}

function ToggleSearchType()
{
    var divDates = document.getElementById("dates");
    var divDepartureDate = document.getElementById('divDepartureDate');
    var divArrivalDate = document.getElementById('divArrivalDate');

    //if (chkUk.checked==true && chkCl.checked==false && chkAtt.checked==false)
    if (chkUk.checked == true && chkCl.checked == false )
    {
        divArrivalDate.style.display = 'block';
        divDepartureDate.style.display = 'block';
        divDates.style.display="block";
    }
    else
    {
        divArrivalDate.style.display = 'none';
        divDepartureDate.style.display = 'none';
        divDates.style.display="none";
    }
}

//********Load/Post back functions END*************//
//***************************************************//

//********Initial Search functions START*************//
//***************************************************//

function InitialSearch()
{
    var b_error = false;
    var cc_searchBox = document.getElementById("ctl00_MainContentPlaceHolder_searchstring");
    var searchString = cc_searchBox.value;

    var arrivalDateBox = document.getElementById("ctl00_MainContentPlaceHolder_ArrivalDate");
    var departureDateBox = document.getElementById("ctl00_MainContentPlaceHolder_DepartureDate");

    arrivalDate = arrivalDateBox.value;
    if (arrivalDate=="Arrival")
    {
        arrivalDate="";
    }
    departureDate = departureDateBox.value;
    if (departureDate=="Departure")
    {
        departureDate="";
    }
    
    if(!b_error && arrivalDate!="" && !ValidateDate(arrivalDate, "DD/MM/YYYY", "/"))
    {
        b_error = true;
        alert("Please enter a valid arrival date in dd/mm/yyyy format");
    }
    if(!b_error && departureDate!="" && !ValidateDate(departureDate, "DD/MM/YYYY", "/"))
    {
        b_error = true;
        alert("Please enter a valid departure date in dd/mm/yyyy format");
    }
    if(!b_error && (arrivalDate != "" && departureDate == ""))
    {
        departureDate = arrivalDate;
        departureDateBox.value = arrivalDate;
    }
    if(!b_error && (departureDate != "" && arrivalDate == ""))
    {
        arrivalDate = departureDate;
        arrivalDateBox.value = departureDate;
    }
    //check if the search term matches the existing Region\County in the database 
    //else search virtual earth
    if(!b_error)
    {
        searchString=searchString.replace("(Club Site)","");
        searchString=searchString.replace("(CL)","");
        //SearchDatabase(searchString,chkUk.checked,chkCl.checked,chkAtt.checked,1,10);
        SearchDatabase(searchString, chkUk.checked, chkCl.checked, false, 1, 10);
    }
}

function SearchResults(result,searchString)
{
   //var cc_searchBox = document.getElementById("ctl00_MainContentPlaceHolder_searchstring");
   //var searchString = cc_searchBox.value;
   var results = result.d.split('CC_PAGING')[0];
    if (results=="")
    {
        cc_map.Find(null, searchString + ", UK" ,null,null,null,null,true,true,true,false,VirtualEarthResults);
    }
    else
    {
        SearchDatabase_Plot(result,searchString);
    }
    return false;
}

function VirtualEarthResults(thelayer,resultsArray,places,hasMore,veErrorMessage)
{
    var cc_searchBox = document.getElementById("ctl00_MainContentPlaceHolder_searchstring");
    var searchString = cc_searchBox.value;
    if(places != null && places.length >0)
    {
        if (places.length>1)
        {
            
            DisplayDidYouMean(places);
        }
        else
        {
            var latitude = places[0].LatLong.Latitude;
            var longitude = places[0].LatLong.Longitude;
            if (latitude=="54.07100021839142" && longitude=="-2.783999517560005")
            {
                // Now search in Ireland
                var message="";
                if (searchString=="")
                {
                    message = "Please enter a valid search term";
                }
                else
                {
                    message = "<i>'" + searchString + "'</i> is not a valid search term";
                }
                DisplayValidationMessage(message);
            }
            else
            {
                  
                SearchWithLatLon(latitude,longitude,searchString,1,10,"SearchWithLatLon");
            }
        }
        
    }
    else
    {
        alert("No Results");
    }
}

function DisplayDidYouMean(places)
{
     var sb = new StringBuilder();
     sb.append("Did you mean?");
     sb.append("<ul>");
     sb.append("<li>");
     for (var i=0; i<places.length; i++)
     {
         var latitude = places[i].LatLong.Latitude;
         var longitude = places[i].LatLong.Longitude;
         var place = places[i].Name.split(',')[0];
         
         sb.append("<a href=\"javascript:SearchWithLatLon(" +latitude + "," + longitude + ",\'" + place +  "\', 1, 10, \'SearchWithLatLon\')\" >" + places[i].Name + "</a><br/><br/>");
     }
     sb.append("</li>");
     sb.append("</ul>");
     DisplayMessage(sb.toString());
}

//search plotting and paging
function SearchDatabase_Plot(result,currentPlace)
{
    var cc_searchBox = document.getElementById("ctl00_MainContentPlaceHolder_searchstring");
    cc_searchBox.value=currentPlace;
    var resultsDiv  = document.getElementById("mapResults");
    if (result.d=="")
    {
        cc_map.Clear();
        resultsDiv.innerHTML="";
        DisplayValidationMessage("No results found!!<br/><br/> Please change your search criteria and try again." )
    }
    else
    {
        var paging = result.d.split('CC_PAGING');
        var params = result.d.split('CC_PAGING')[0].split(':;');
        var ptsarray = new Array();
        var pageValues = paging[1].split(',');
        var start = pageValues[1];
                    
        //clear map and results beflore plotting
        cc_map.Clear();
        resultsDiv.innerHTML="";
        
        if (params.length!=0)
        {
        
            var sb = new StringBuilder();
            sb.append("<ul>");
            
            for (var i=0; i<params.length; i++)
            {
                var data = params[i].split('|');
               
                if (data[0]!="")
                {
                    var siteType = data[0];
                    var siteId = data[1];
                    var title = data[2];
                    var address = data[3];
                    var lat=data[4];
                    var lon = data[5];
                    var available=data[6];
                    var img = data[7];
                    var imgAlt = data[8];
                    var clubOwned = data[9];
                    
                    if (lat!="" || lat!=undefined )
                    {
                        ptsarray[i] = new VELatLong(lat,lon,i+1);
                        var site = new InitialSiteObject(lat,lon,title,address,siteId,siteType,available,img,imgAlt,clubOwned);
                        Search_AddPushPin(site,parseInt(start));
                        sb.append(Search_AddResultsToDiv(resultsDiv,site,parseInt(start),'search'));
                        start = parseInt(start)+1;
                    
                    }
                }
           }
            cc_map.SetMapView(ptsarray);
            sb.append("</ul>");   
            resultsDiv.innerHTML =sb.toString() ;
            //display paging
            DisplaySearchDatabasePaging(paging[1],currentPlace);
            //$j(document).pngFix();
         }
    }
    return false;
}

function DisplaySearchDatabasePaging(paging,searchCriteria)
{
    var pageValues = paging.split(',');
    var total = pageValues[0];
    var start = pageValues[1];
    var count = pageValues[2];
    var end = parseInt(start) + parseInt(count)-1;
    
    var startnext = parseInt(start)+10;
    var startprev = parseInt(start)-10;
    var NextUrl = "javascript:SearchDatabase(\'" + searchCriteria + "\'," + chkUk.checked + "," + chkCl.checked + "," + false + "," + startnext + ",10)";
    var PrevUrl = "javascript:SearchDatabase(\'" + searchCriteria + "\'," + chkUk.checked + "," + chkCl.checked + "," + false + "," + startprev + ",10)";
    
    var divPaging = document.getElementById("paging");
    var sb = new StringBuilder();
    sb.append("<div class='paginationWrapper clearfix' >");
    sb.append("<p class='showing'>");
    sb.append("Showing " + start + " to " + end + " of " + total + " results for '" + searchCriteria + "'");
    if(arrivalDate!="" || departureDate!="")
    {
        sb.append("<br />Sites shown in grey are not available for the chosen dates");
    }
    sb.append("</p>");
    sb.append("<ul class='pagination floatRight'>");
      if (start!=1)
    {
        sb.append("<li>")
        sb.append("<a class='map-search-prev' href=\"" + PrevUrl + "\">Previous</a> ");
        sb.append("</li>");
    }
    if (end!=total)
    {
        sb.append("<li>")
        sb.append("<a class='map-search-next' href=\"" + NextUrl + "\">Next</a> ");
        sb.append("</li>");
    }
  
    sb.append("</ul>");
    sb.append("</div>");
    
    divPaging.innerHTML = sb.toString();
}

function SearchWithLatLon_Plot(result,currentPlace,currentlat,currentlon)
{
    var cc_searchBox = document.getElementById("ctl00_MainContentPlaceHolder_searchstring");
    cc_searchBox.value=currentPlace;
    var resultsDiv  = document.getElementById("mapResults");
    if (result.d=="")
    {
        cc_map.Clear();
        resultsDiv.innerHTML="";
        DisplayValidationMessage("No results found!!<br/><br/> Please change your search criteria and try again." )
    }
    else
    {
        var paging = result.d.split('CC_PAGING');
        var params = result.d.split('CC_PAGING')[0].split(':;');
        var pageValues = paging[1].split(',');
        var start = pageValues[1];
        var ptsarray = new Array();
        
        //clear map and results beflore plotting
        cc_map.Clear();
        resultsDiv.innerHTML="";
        
        if (params.length!=0)
        {
            var sb = new StringBuilder();
            sb.append("<ul>");
            
            for (var i=0; i<params.length; i++)
            {
                var data = params[i].split('|');
               
                if (data[0]!="")
                {
                    var siteType = data[0];
                    var siteId = data[1];
                    var title = data[2];
                    var address = data[3];
                    var lat=data[4];
                    var lon = data[5];
                    var available=data[6];
                    var img = data[7];
                    var imgAlt = data[8];
                    var clubOwned = data[9];
                    
                    var allyear = "";
                                      
                    
                    if (lat!="" || lat!=undefined )
                    {
                        ptsarray[i] = new VELatLong(lat,lon,i+1);
                        var site = new InitialSiteObject(lat,lon,title,address,siteId,siteType,available,img,imgAlt,clubOwned);
                        Search_AddPushPin(site,start);
                        sb.append(Search_AddResultsToDiv(resultsDiv,site,start,'search'));
                        start = parseInt(start)+1;
                    }
                }
           }
           
           GetDetailsById(cc_CurrentSiteId,cc_CurrentSiteType);
           ptsarray[ptsarray.length] = new VELatLong(currentlat,currentlon,i+1);
           cc_map.SetMapView(ptsarray);
           sb.append("</ul>");   
           resultsDiv.innerHTML =sb.toString() ;
           //display paging
            var paging = result.d.split('CC_PAGING');
            DisplaySearchWithLatLonPaging(paging[1],currentPlace,currentlat,currentlon);
            
            //$j(document).pngFix();
         }
    }
}

function DisplaySearchWithLatLonPaging(paging,searchCriteria,lat,lon)
{
    var pageValues = paging.split(',');
    var total = pageValues[0];
    var start = pageValues[1];
    var count = pageValues[2];
    var end = parseInt(start) + parseInt(count)-1;
    
    var startnext = parseInt(start)+10;
    var startprev = parseInt(start)-10;
    var NextUrl = "javascript:SearchWithLatLon(\'" + lat + "\',\'" + lon + "\',\'" + searchCriteria + "\'," + startnext + ",10)";
    var PrevUrl = "javascript:SearchWithLatLon(\'" + lat + "\',\'" + lon + "\',\'" + searchCriteria + "\'," + startprev + ",10)";
    
    var divPaging = document.getElementById("paging");
    var sb = new StringBuilder();
    sb.append("<div class='paginationWrapper clearfix' >");
    sb.append("<p class='showing'>");
    sb.append("Showing " + start + " to " + end + " of " + total + " results near '" + searchCriteria + "'");    
    sb.append("</p>");
    sb.append("<ul class='pagination floatRight'>");
      if (start!=1)
    {
        sb.append("<li>")
        sb.append("<a class='map-search-prev' href=\"" + PrevUrl + "\">Previous</a> ");
        sb.append("</li>");
    }
    if (end!=total)
    {
        sb.append("<li>")
        sb.append("<a class='map-search-next' href=\"" + NextUrl + "\">Next</a> ");
        sb.append("</li>");
    }
  
    sb.append("</ul>");
    sb.append("</div>");
    
    divPaging.innerHTML = sb.toString();
}

//********Initial Search functions END*************//
//***************************************************//
function Search_AddResultsToDiv(resultsDiv,site,i,searchType)
{
    var num = i;
    var sb = new StringBuilder();
    var str_classDiv;
    var str_classLi;
    
    switch(site.SiteType.toString().toLowerCase())
    {
        case "clubsite":
            str_classDiv = "clubicon";
            break;
        case "cl":
            str_classDiv = "certicon";
            break;
        case "att":
            str_classDiv = "atticon";
            break;
        default:
            str_classDiv = "clubicon";
    }
    
    if (num %2)
    {
        str_classLi = "odd";
    }
    else
    {
        str_classLi = "";
    }    
    
    if((arrivalDate!="" || departureDate!="") && (site.ClubOwned != undefined && site.ClubOwned.toString().toLowerCase() == "cs"))
    {
        if (site.Available.toString().toLowerCase() == "false")
        {
           str_classDiv += " seasonal";
        }
    }
    
    str_classDiv += " list";
    sb.append("<li class='"+ str_classLi +"'>");
    sb.append("<div class='"+ str_classDiv +"'>" + num +"</div>");

    var sbAvailabilityUrl = new StringBuilder();

    sbAvailabilityUrl.append("/caravanclubapps/applications/uk sites/CalendarResult.aspx?");
    sbAvailabilityUrl.append("site=" + site.SiteName + "&");
    sbAvailabilityUrl.append("arrivalDate=" + arrivalDate + "&");
    sbAvailabilityUrl.append("departureDate=" + departureDate + "&");

    sb.append("<h3>");
    sb.append(site.SiteName)
    sb.append("</h3>");
    var loggedin=readCookie("loginhash");
    if(site.SiteType == "CL")
    {
        
        if (loggedin==null)
        {
         
        }else{
            sb.append("<p>"+ site.Address + "</p>");
        }
    }
    else
    {
        sb.append("<p>"+ site.Address + "</p>");
    }
    sb.append("</h3>");
    if (site.SiteType=="ClubSite")
    {
        if(site.ClubOwned.toString().toLowerCase() == "cs")
        {
            sb.append( "<a class='button_clear' href='/caravanclubapps/applications/uk-caravan-sites-and-parks/SiteDetails.aspx?csid=" + site.SiteId + "&pgrf=map' >View details and price guide</a>" );
            sb.append("<a   href='" + sbAvailabilityUrl.toString() +"'>Check availability & book now</a>");
        }else{
            sb.append( "<a class='button_clear' href='/caravanclubapps/applications/uk-caravan-sites-and-parks/SiteDetails.aspx?csid=" + site.SiteId + "&pgrf=map' >View site / contact details</a>" );
        }
    }
    else if(site.SiteType=="CL")
    {
        if (loggedin==null)
        {
           sb.append("<br/><a class='button_clear' href='"+ cc_MemberLoginUrl +"' >Please login to view address</a>");
        }
        sb.append("<a class='button_clear' href='/planning-your-trip/uk-trips/uk-site-search-and-book/certificated-locations/site-detail?Id="+ site.SiteId + "&pgrf=map' >View details</a>");
    }
    else
    {
        sb.append("<a class='button_clear' href='/caravanclubapps/applications/attractions/Site Details.aspx?attid="+ site.SiteId + "&pgrf=map' >View details</a>");
    }
    sb.append("</li>");
    return sb.toString();
}

function Search_AddPushPin(site,i)
{
    var latlon =new VELatLong(site.Lat,site.Lon);
    var shape = new VEShape(VEShapeType.Pushpin,latlon);
    var str_classDiv;
    var siteName = site.SiteName;
    siteName = siteName.replace(/'/, "&#39");
    siteName = siteName.replace(/&/, "&amp");
    var siteImage = site.SiteImage;
    siteImage = siteImage.replace(/'/, "&#39");
    siteImage = siteImage.replace(/&/, "&amp");
    
    switch(site.SiteType.toString().toLowerCase())
    {
        case "clubsite":
            str_classDiv = "clubicon";
            break;
        case "cl":
            str_classDiv = "certicon";
            break;
        case "att":
            str_classDiv = "atticon";
            break;
        default:
            str_classDiv = "clubicon";
    }
    
    if (i==0)
    {
        str_classDiv += " selected";
        shape.SetCustomIcon("<span class='"+ str_classDiv +"'></span>");
    }
    else
    {
        if((arrivalDate!="" || departureDate!="") && (site.ClubOwned != undefined && site.ClubOwned.toString().toLowerCase() == "cs"))
        {
            if (site.Available.toString().toLowerCase() == "false")
            {
               str_classDiv += " seasonal";
            }
        }
        shape.SetCustomIcon("<span class='"+ str_classDiv +"'>" +i+"</span>")
    }
    shape.SetTitle(site.InfoBoxTitle);
    
    var sb = new StringBuilder();
    sb.append("<div id='sitedetails'>");
    sb.append("<div style='float:left;width:50%;'>");
    if (site.SiteType=="CL")
    {
        //CHECK FOR COOKIE
        var loggedin=readCookie("loginhash");
        if (loggedin==null)
        {
            sb.append("<a class='button_clear' href='"+ escape(cc_MemberLoginUrl) +"' >Please login to view address</a>");
        }else{
            sb.append(site.Address);
        }
    }
    else
    {
         sb.append(site.Address);
    }
    
    sb.append("</div>");
    sb.append("<div style='float:right;width:48%;'>");
    if (siteImage!="")
    {
        sb.append("<img width=\"100\" src=\""+ siteImage +"\" alt=\""+ siteName +"\" />");
    }
    sb.append("</div>");
    
    sb.append("<div style='clear:both;'><!-- --></div>");
    sb.append("<br/>");
    sb.append("<div>");
    sb.append("<b>Show on the map:</b>")
    sb.append("<br/>");
    
    sb.append("<a href='javascript:MapSearchNearby(\"" + site.Lat + "\",\"" + site.Lon + "\",\"" + siteName + "\",\"" + site.SiteId + "\",\"UK\",\"" + site.SiteType + "\");'>Nearby Club Sites</a><br\>");
    sb.append("<a href='javascript:MapSearchNearby(\"" + site.Lat + "\",\"" + site.Lon + "\",\"" + siteName + "\",\"" + site.SiteId + "\",\"CL\",\"" + site.SiteType + "\");'>Nearby CLs</a><br\>");
    //sb.append("<a href='javascript:MapSearchNearby(\"" + site.Lat + "\",\"" + site.Lon + "\",\"" + siteName + "\",\"" + site.SiteId + "\",\"ATT\",\"" + site.SiteType + "\");'>Great Days Out nearby</a><br\>");
    sb.append("<br/>");
    sb.append("<br/>");
    
    sb.append("<b>Get directions:</b>");
    sb.append("<br/>");
    sb.append("<a href=\"plan-a-route.aspx?toAltID=" + siteName + "&toID=" + site.SiteId + "&toLat=" + site.Lat + "&toLon=" + site.Lon + "&toName=" + siteName + "&toType=" + site.SiteType + "\">To here</a>");
    sb.append(" - <a href=\"plan-a-route.aspx?fromAltID=" + siteName + "&fromID=" + site.SiteId + "&fromLat=" + site.Lat + "&fromLon=" + site.Lon + "&fromName=" + siteName + "&fromType=" + site.SiteType + "\">From here</a>");
    //sb.append("<a href=\"javascript:ShowDirections(\'TO\')\">To here</a> - <a href=\"javascript:ShowDirections(\'FROM\')\">From here</a>");

    sb.append("</div>");
    sb.append("</div>");
    //directions
    sb.append("<div id='directions' style='display:none;'>");

    
    sb.append("<br/>");
    sb.append("<b>Get directions:</b>");
    sb.append("<br/>");
    sb.append("<br/>");
    sb.append("<div id='lnkText'> </div>");
    sb.append("<br/>");
    sb.append("<div id='addressText'>Start address:</div>");
    sb.append("<input type='text' id='txtFromTo'/>");
    sb.append("<input type='hidden' id='hdnFromTo'/>");
    sb.append("<br/>");
    sb.append("<br/>");
    //sb.append("<input type='button' class='button' onclick='GoToRoute(\"" + site.Lat + "\",\"" + site.Lon  + "\",\"" + siteName + "\");' value='Go' id='btnRoute'/>");
    sb.append("<input type='button' class='button' onclick='GoToRoute(\"" + site.SiteId + "\",\"" + site.Lat  + "\",\"" + site.Lon  + "\",\"" + site.SiteName  + "\",\"" + site.SiteType  + "\");' value='Go' id='btnRoute'/>");
    sb.append("<br/>");
    sb.append("<br/>");
    
    sb.append("<a href='javascript:ShowSiteDetails()'>back</a>");
    sb.append("</div>");

    shape.SetDescription(sb.toString());
    cc_map.AddShape(shape);    
}

function MapSearchNearby(lat,lon,searchstring,siteId,searchType,siteType)
{
    if (searchType=="UK")
    {
        chkUk.checked =true;
        chkCl.checked=false;
        //chkAtt.checked=false;
    }
    if (searchType=="CL")
    {
        chkUk.checked =false;
        chkCl.checked=true;
        //chkAtt.checked=false;
    }
    if (searchType=="ATT")
    {
        chkUk.checked =false;
        chkCl.checked=false;
        //chkAtt.checked=true;
    }
    ResetSearchForm();
    
    cc_CurrentSiteId = siteId;
    cc_CurrentSiteType = siteType;
    SearchWithLatLon(lat,lon,searchstring,1,10);
   // GetSitebySiteId(siteId, searchType); 
}


//********MAP Search functions START*************//
//***********************************************//
function PlotCurrentSite(result)
{
    if (result.d!="")
    {
        var params = result.d.split(':;');
        var ptsarray = new Array();
    
        var data = params[0].split('|');
        if (data.length!=0)
        {
            var siteType = data[0];
            var siteId = data[1];
            var title = data[2];
            var address = data[3];
            var lat=data[4];
            var lon = data[5];
            var available=data[6];
            var img = data[7];
            var imgAlt = data[8];
            var clubOwned = data[9];

            if (lat!="" )
            {
                var site = new InitialSiteObject(lat,lon,title,address,siteId,siteType,"True",img,imgAlt,clubOwned);
                Search_AddPushPin(site,0);
            } 
        }
        //$j(document).pngFix();
    }
}
//********MAP Search functions END*************//
//***********************************************//


//********Results Box Display functions START********//
//***************************************************//
function DisplayMessage(message)
{
    var resultsDiv  = document.getElementById("mapResults");
    var sb = new StringBuilder();
    sb.append("<div style='width:170px;padding:10px;margin:10px;'>");
       
    
    sb.append("<p>" + message + "</p>");
    sb.append("</div>");
    resultsDiv.innerHTML=sb.toString();
}


function DisplayValidationMessage(message)
{
    var resultsDiv  = document.getElementById("mapResults");
    var sb = new StringBuilder();
    sb.append("<div style='border:solid 1px Red;width:170px;padding:10px;margin:10px;'>");
    sb.append("<p><b>Please check the following items.</b></p>");
   
    
    sb.append("<p>" + message + "</p>");
    sb.append("</div>");
    resultsDiv.innerHTML=sb.toString();
}
//********Results Box Display functions START********//
//***************************************************//


function PlotDefaultOnError(result)
{
    alert("error");
}

function getSpan(siteType,availability)
{
    //show default..just in case
    var span="<span class='marker site'><span>";
    
    if (siteType=="ClubSite")
    {
        if (availability=="True")
        {
            span="<span class='marker site'><span>";
        }
        else
        {
            span="<span class='marker site-seasonal'><span>";
        }
    }
    if (siteType=="CL")
    {
        if (availability=="True")
        {
            span="<span class='marker cert'><span>";
        }
        else
        {
            span="<span class='marker cert-seasonal'><span>";
        }
    }
    if (siteType=="ATT")
    {
        if (availability=="True")
        {
            span="<span class='marker att'><span>";
        }
        else
        {
            span="<span class='marker att-seasonal'><span>";
        }
    }
    return span;
}

//read cookie
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function InitialSiteObject(pLat,pLon,pSiteName,pAddress,pSiteId,pSiteType,pAvailable,pSiteImage,pSiteImageAlt,pClubOwned)
{
   this.Lat = pLat;
   this.Lon = pLon;
   this.SiteName = pSiteName;
   this.Address = pAddress;
   this.SiteId=pSiteId;
   this.SiteType = pSiteType;
   this.Available=pAvailable;
   this.SiteImage=pSiteImage;
   this.SiteImageAlt=pSiteImageAlt;
   this.ClubOwned=pClubOwned;
   
   var image="/caravanclubapps/format/images/map-pins/site.png";
   if (pSiteType=="ClubSite")
   {
      
        if (pAvailable=="True")
        {
            image="<div class='clubicon'>";
        }
        else
        {
            image="<div class='clubicon-seasonal'>";
        }
        
    }
    if (pSiteType=="CL")
    {
        if (pAvailable=="True")
        {
            image="<div class='certicon'>";
        }
        else
        {
            image="<div class='certicon-seasonal'>";
        }    
    }
    
    if (pSiteType=="ATT")
    {
        if (pAvailable=="True")
        {
            image="<div class='atticon'>";
        }
        else
        {
            image="<div class='atticon-seasonal'>";
        }
    }
    
    this.MapImage=image;
    
    var infoTitle="";
    if (pSiteType=="ClubSite")
    {
        infoTitle = "<a href='/caravanclubapps/applications/uk-caravan-sites-and-parks/SiteDetails.aspx?csid=" + pSiteId + "&pgrf=map' >" + pSiteName + "</a>";
    }
    else if(pSiteType=="CL")
    {
        var infoTitle="<a href='/planning-your-trip/uk-trips/uk-site-search-and-book/certificated-locations/site-detail?Id=" + pSiteId + "&pgrf=map' >" + pSiteName + "</a>";
    }
    else
    {
        var infoTitle="<a href='/caravanclubapps/applications/attractions/site details.aspx?attid=" + pSiteId + "&pgrf=map' >" + pSiteName + "</a>";
    }
    this.InfoBoxTitle = infoTitle;
}

function MapSiteObject(pLat,pLon,pSiteName,pAddress,pAllYear,pSiteId,pSiteType,pAvailable,pSiteImage,current)
{
   this.Lat = pLat;
   this.Lon = pLon;
   this.SiteName = pSiteName;
   this.Address = pAddress;
   this.AllYear = pAllYear;
   this.SiteId=pSiteId;
   this.SiteType = pSiteType;
   this.Available=pAvailable;
   this.SiteImage=pSiteImage;
   
   var image="/caravanclubapps/format/images/map-pins/site.png";
   if (pSiteType=="ClubSite")
   {
        if (current==true)
        {
            image="/caravanclubapps/format/images/map-pins/site.png";
        }
        else
        {
            image="/caravanclubapps/format/images/map-pins/site-seasonal.png";
        }
        
    }
    if (pSiteType=="CL")
    {       
         if (current==true)
         {
            image="/caravanclubapps/format/images/map-pins/certificated.png";
         }
         else
         {
            image="/caravanclubapps/format/images/map-pins/certificated-seasonal.png";
         }
    
    }
    
    this.MapImage=image;
    
    var infoTitle="";
    if (pSiteType=="ClubSite")
    {
        infoTitle = "<a href='/caravanclubapps/applications/uk-caravan-sites-and-parks/SiteDetails.aspx?csid=" + pSiteId + "&pgrf=map' >" + pSiteName + "</a>";
    }
    else
    {
        var infoTitle="<a href='/planning-your-trip/uk-trips/uk-site-search-and-book/certificated-locations/site-detail?Id=" + pSiteId + "&pgrf=map' >" + pSiteName + "</a>";
    }
    
    this.InfoBoxTitle = infoTitle;    
}

//Attractions Start
function Attractions_Plot(result)
{
    if (result.d=="")
    {
        
        // No attractions so what
        
    }
    else
    {
        var params = result.d.split(':;');
        
        
        if (params.length!=0)
        {
        
            var sb = new StringBuilder();
            for (var i=0; i<params.length; i++)
            {
                var data = params[i].split('|');
               
                if (data[0]!="")
                {
                    var attractionid=data[0];
                    var date = data[1];
                    var attractionname = data[2];
                    var address1 = data[3];
                    var address2 = data[4];
                    var address3 = data[5];
                    var postcode = data[6];
                    var latitude=data[7];
                    var longitude = data[8];
                    var website = data[9];
                    var telephone = data[10];
                    var prices = data[11];
                    var offer = data[12];
                    var nearestclub = data[13];
                    
                    if (latitude!="" )
                    {
                        
                        var attraction =new AttractionObject(attractionid,date,attractionname,address1,address2,address3,postcode,latitude,longitude,website,telephone,prices,offer,nearestclub);
                        Attraction_AddPushPin(attraction);
                    }
                }
           }
        }
     }
}


function Attraction_AddPushPin(attraction)
{
    var latlon =new VELatLong(attraction.Latitude,attraction.Longitude);
    var shape = new VEShape(VEShapeType.Pushpin,latlon);
    
    shape.SetCustomIcon("<div style='postion:relative;background:url(/caravanclubapps/format/images/map-pins/attraction.png) no-repeat 0 0;height:30px;width:26px;color:#fff;text-align:left;padding-left:2px;font-size:11px;font-weight:bold;cursor:pointer;'><div style='position:relative;top:4px;left:1px;'></div></div>")
   
    shape.SetTitle(attraction.AttractionName);
    cc_map.AddShape(shape);    
}

function AttractionObject(pAttractionId,pDate,pAttractionName,pAddress1,pAddress2,pAddress3,pPostcode,pLatitude,pLongitude,pWebsite,pTelephone,pPrices,pOffer,pNearestClubsite)
{
    this.AttractionId = pAttractionId;
    this.Date = pDate;
    this.AttractionName = pAttractionName;
    this.Address1 = pAddress1;
    this.Address2 = pAddress2;
    this.Address3 = pAddress3;
    this.Postcode = pPostcode;
    this.Latitude = pLatitude;
    this.Longitude = pLongitude;
    this.Website = pWebsite;
    this.Telephone = pTelephone;
    this.Prices = pPrices;
    this.Offer = pOffer;
    this.NearestClubSite = pNearestClubsite;
}
//Attractions End

function GoToRoute(ID, Lat, Lon, Name, Type)
{
    var divaddressText = document.getElementById("addressText");
    var txtFromTo = document.getElementById("txtFromTo");
    var start="";
    var end="";
    
    var cc_CurrentSiteId = ID;
    var cc_CurrentLat = Lat;
    var cc_CurrentLon = Lon;
    var cc_CurrentTitle = Name;
    var cc_CurrentSiteType = Type;
        
    var fromAltID = "";
    var fromID = "";
    var fromLat = "";
    var fromLon = "";
    var fromName = "";
    var fromType = "";
        
    var toAltID = "";
    var toID = "";
    var toLat = "";
    var toLon = "";
    var toName = "";
    var toType = "";
    
    // Get text from input
    var locationName = $j("#directions > #txtFromTo").val();
    // Get data produced by autocomplete if matched
    var locationData = $j("#directions > #hdnFromTo").val();
    if(locationData != "")
    {
        locationData = eval('(' + locationData + ')');
    }
    
    if (divaddressText.innerText=="Start address:")
    {
        start = txtFromTo.value;
        end = cc_CurrentTitle;
        
        // Get text box site details
        fromAltID = (locationData.AltID != null) ? locationData.AltID : "";
        fromID = (locationData.ID != null) ? locationData.ID : "";
        fromLat = (locationData.Lat != null) ? locationData.Lat : "";
        fromLon = (locationData.Lon != null) ? locationData.Lon : "";
        fromName = (locationData.Name != null) ? locationData.Name : locationName;
        fromType = (locationData.Type != null) ? locationData.Type : "";
        
        // Get current site details
        toAltID = "";
        toID = cc_CurrentSiteId;
        toLat = cc_CurrentLat;
        toLon = cc_CurrentLon;
        toName = cc_CurrentTitle;
        toType = cc_CurrentSiteType;
    }
    else
    {
        start = cc_CurrentTitle;
        end = txtFromTo.value;
        
        // Get current site details
        fromAltID = "";
        fromID = cc_CurrentSiteId;
        fromLat = cc_CurrentLat;
        fromLon = cc_CurrentLon;
        fromName = cc_CurrentTitle;
        fromSiteType = cc_CurrentSiteType;
        
        // Get text box site details
        toAltID = (locationData.AltID != null) ? locationData.AltID : "";
        toID = (locationData.ID != null) ? locationData.ID : "";
        toLat = (locationData.Lat != null) ? locationData.Lat : "";
        toLon = (locationData.Lon != null) ? locationData.Lon : "";
        toName = (locationData.Name != null) ? locationData.Name : locationName;
        toType = (locationData.Type != null) ? locationData.Type : "";
    }
    
    switch(fromType.toString().toLowerCase())
    {
        case "clubsite":
            fromName = fromName.replace(/ Caravan Club Site/i, "");
            fromName = fromName.replace(/ \(Club Site\)/i, "");
            fromName += " (Club Site)";
            break;
        case "cl":
            fromName = fromName.replace(/ \(CL\)/i, "");
            fromName += " (CL)";
            break;
       default:
            break;
    }
    
    switch(toType.toString().toLowerCase())
    {
        case "clubsite":
            toName = toName.replace(/ Caravan Club Site/i, "");
            toName = toName.replace(/ \(Club Site\)/i, "");
            toName += " (Club Site)";
            break;
        case "cl":
            toName = toName.replace(/ \(CL\)/i, "");
            toName += " (CL)"
            break;
       default:
            break;
    }
    
    var sb = new StringBuilder();
    sb.append("/caravanclubapps/applications/maps/plan-a-route.aspx");
    sb.append("?fromAltID=" + encodeURIComponent(fromAltID));
    sb.append("&fromID=" + encodeURIComponent(fromID));
    sb.append("&fromLat=" + fromLat);
    sb.append("&fromLon=" + fromLon);
    sb.append("&fromName=" + encodeURIComponent(fromName));
    sb.append("&fromType=" + fromType);
    
    sb.append("&toAltID=" + encodeURIComponent(toAltID));
    sb.append("&toID=" + encodeURIComponent(toID));
    sb.append("&toLat=" + toLat);
    sb.append("&toLon=" + toLon);
    sb.append("&toName=" + encodeURIComponent(toName));
    sb.append("&toType=" + toType);
    
    window.location = sb;
}

//function ShowDirections(fromto)
//{
//    var divsitedetails = document.getElementById("sitedetails");
//    var divdirections = document.getElementById("directions");
//    var divlnkText = document.getElementById("lnkText");
//    var divaddressText = document.getElementById("addressText");
//    divsitedetails.style.display = 'none';
//    divdirections.style.display='block';
//    
//    // BEGIN: Auto complete
//    var $txtFromTo = $j("<input type=\"text\" id=\"txtFromTo\" />").autocomplete("/CaravanClubApps/Applications/Maps/AutoCompleteLocation.aspx", {
//        extraParams: {
//            cacheName : "LocationsCache",
//            cacheHrs : "1",
//            cacheMin : "0",
//            cacheSec : "0",
//            matchType : "startswith",
//            returnCounties : false,
//            returnRegions : false,
//            returnSites : true,
//            searchType : "",
//            searchOnCounty : false,
//            searchOnRegion : false,
//            searchOnSite : true                 
//        },
//        delay: 200,
//        minChars: 2,
//        cacheLength: 100,
//        max: 100,
//        autoFill: false,
//        selectFirst: false,
//        matchContains: "word",
//        formatItem: function(row, i, num) {
//            return eval('[' + row + ']')[0].Name;
//        },
//        formatMatch: function(row, i, num) {
//            return eval('[' + row + ']')[0].Name;
//        },
//        formatResult: function(row, i, num) {
//            return eval('[' + row + ']')[0].Name;
//        }
//    });
//    
//    $j("#directions > #txtFromTo").replaceWith($txtFromTo);
//    
//    // Add result formatting for plot
//    $j("#directions > #txtFromTo").result(function(event, data, formatted) {
//        $j(this).next("input").val(formatted);
//    });
//    // END: Auto complete
//    
//    if (fromto=="TO")
//    {
//        divaddressText.innerHTML = "Start address:";
//        divlnkText.innerHTML="To here - <a href=\"javascript:ShowDirections(\'FROM\')\" >From here</a>";
//        
//    }
//    else
//    {
//        divaddressText.innerHTML = "End address:";
//        divlnkText.innerHTML="<a href=\"javascript:ShowDirections(\'TO\')\" >To here</a> - From here";
//    }
//}

function ShowSiteDetails()
{
    var divsitedetails = document.getElementById("sitedetails");
    var divdirections = document.getElementById("directions");
    divsitedetails.style.display = 'block';
    divdirections.style.display='none';
}

