﻿function PixelClick(e)
{
    var x = e.mapX;
    var y = e.mapY;
    pixel = new VEPixel(x, y);
    LL = cc_map.PixelToLatLong(pixel);
    
    try{
    var qs = new Querystring()
    if(qs.Contains("showcoord"))
    {
        if(qs.Request("showcoord").toString().toLowerCase() == "true")
        {
            var div = document.getElementById("latlon");
            div.innerHTML = LL;
        }
    }
    }catch(e){}
}

//Get the siteId from URL
function getSiteId()
{
    // Use function from Querystring.js
    var qs = new Querystring()
    if(qs.Contains("csid"))
    {
        cc_CurrentSiteId = qs.Request("csid").toString();
    }
}

function GetMap()
{
    try
    {
        getSiteId();
        InitalizeMap();
        AddResetControl();
        GetSiteLocation();
    }
    catch(err)
    {
    }
}

function AddResetControl()
{
    var control;
    control = document.createElement("div");                
    control.id = "mapReset";               
    control.style.left = "55px";                
    control.innerHTML = "<a href='javascript:reset();'>Reset</a>";                 
    //cc_map.AddControl(control);
    $j(control).appendTo("#MSVE_dashboardContainer");
}

function reset()
{
    cc_map.Clear();
    GetSiteLocation();
}

function PlotNearbySites(result)
{
    if (result.d!="")
    {
        cc_map.Clear();
        var params = result.d.split(':');
        var ptsarray = new Array();
        for (var i=0; i<params.length; i++)
        {
            var latlon = params[i].split('|');
            if (latlon.length!=0)
            {
                var lat=latlon[0];
                var lon = latlon[1];
                var title = latlon[2];
                var address = latlon[3];
                var siteType = latlon[4];
                var siteId = latlon[5];
                var img = latlon[6];
                if (lat!="" )
                {
                
                    ptsarray[i] = new VELatLong(lat,lon);
                    if (siteType=="ClubSite")
                    {
                        AddPushPinUkSites(lat,lon,title,address,img,siteId);
                    }
                    else if (siteType=="CL")
                    {
                        AddPushPinCLSites(lat,lon,title,address,img,siteId);
                    }
                }
            }
        }
        AddPushPinCurrentSite(cc_CurrentLat,cc_CurrentLon,cc_CurrentTitle,cc_CurrentAddress,cc_CurrentImage,cc_CurrentSiteType, true); 
        ptsarray[ptsarray.length] = new VELatLong(cc_CurrentLat,cc_CurrentLon);
        cc_map.SetMapView(ptsarray);   
        //$j(document).pngFix();
    }   
}
function PlotLocations(result)
{
    //get site details
    var params = result.d.split('|');
    cc_CurrentLat = params[0];
    cc_CurrentLon = params[1];
    cc_CurrentTitle = params[2];
    cc_CurrentAddress = params[3];
    cc_CurrentSiteType = params[4];
    cc_CurrentSiteId = params[5];
    cc_CurrentImage = params[6];
 
    AddPushPinCurrentSite(cc_CurrentLat,cc_CurrentLon,cc_CurrentTitle,cc_CurrentAddress,cc_CurrentImage,cc_CurrentSiteType, false);
    //$j(document).pngFix();
}

function AddPushPinCurrentSite(lat,lon,title,address,img,siteType,selected)
{
    var latlon =new VELatLong(lat,lon);
    var shape = new VEShape(VEShapeType.Pushpin,latlon);
    var str_classDiv;
    var sb = new StringBuilder();
    
    switch(siteType.toString().toLowerCase())
    {
        case "clubsite":
            str_classDiv = "clubicon";
            break;
        case "cl":
            str_classDiv = "certicon";
            //CHECK FOR COOKIE
            var loggedin=readCookie("loginhash");
            if (loggedin==null)
            {
                address = "<a class='button_clear' href='"+ escape(cc_MemberLoginUrl) +"' >Please login to view address</a>";
            }
            break;
        case "att":
            str_classDiv = "atticon";
            break;
        default:
            str_classDiv = "clubicon";
    }
    
    if(selected)
    {
        str_classDiv += " selected";
    }
    
    shape.SetCustomIcon("<span class='"+ str_classDiv +"'></span>");
    
    //set title for the infobox
    shape.SetTitle(title);
    
    //set the description(remaining details for infobox)
    sb.append("<div id='sitedetails' style='width:400px;'>");
    sb.append("<div style='float:left;width:120px;'>");
    sb.append(address);    
    sb.append("</div>");
    sb.append("<div style='float:left;width:220px'>");
    if (img!="")
    {
        sb.append("<img width='100' src='"+img + "'/>");
    }
    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:GetNearbySites(" + lat + "," +lon + ")' >Nearby Club Sites</a><br\>");
    sb.append("<a href='javascript:GetNearbyCLSites(" + lat + "," +lon + ")'>Nearby CLs</a><br\>");
    //sb.append("<a href='javascript:GetAttractions(" + lat + "," + lon + ")'>Great Days Out nearby</a><br\>");
    sb.append("<a href=\"javascript:GetGreatDaysOut(" + lat + "," + lon + ",'" + title + "', '" + location.href + "')\">Great Days Out nearby</a><br\>");
    sb.append("</div>");
    sb.append("<b>Get directions:</b>");
    sb.append("<br/>");
    sb.append(" <a href=\"javascript:ShowDirections(\'TO\')\">To here</a> - <a href=\"javascript:ShowDirections(\'FROM\')\">From here</a>");
    sb.append("</div>");
    
    sb.append("<br/>");
    sb.append("<br/>");
    
    //directions
    sb.append("<div id='directions' style='display:none;'>");
    sb.append("<div>");
    sb.append(address);
    sb.append("</div>");
    
    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();' 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); 
    cc_map.SetCenterAndZoom(latlon,10);   
 
}


function GoToRoute()
{
    var divaddressText = document.getElementById("addressText");
    var txtFromTo = document.getElementById("txtFromTo");
    var start="";
    var end="";
    
    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");
    
    // 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($txtFromTo).bind('keypress', function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if(code == 13) {
            e.preventDefault();
            GoToRoute();
        }
    });
    
    $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
    
    divsitedetails.style.display = 'none';
    divdirections.style.display='block';
    
    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';
}

function Attractions_Plot(result)
{
    if (result.d=="")
    {
        // No attractions so what
    }
    else
    {
        var params = result.d.split(':;');
        var ptsarray = new Array();
        
        if (params.length!=0)
        {
            cc_map.Clear();
            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];
                    var img = data[15];
                    var alt = data[16];
                    
                    if (latitude!="" )
                    {
                        ptsarray[i] = new VELatLong(latitude,longitude);
                        AddPushPinAttractionNearby(latitude,longitude,attractionname,attractionid,true,img,alt,address1+', '+address2+', '+address3+', '+postcode);
                    }
                }
           }
           AddPushPinCurrentSite(cc_CurrentLat,cc_CurrentLon,cc_CurrentTitle,cc_CurrentAddress,cc_CurrentImage,cc_CurrentSiteType, true); 
           ptsarray[ptsarray.length] = new VELatLong(cc_CurrentLat,cc_CurrentLon);
           cc_map.SetMapView(ptsarray);
        }
     }
 }

 function GreatDaysOut_Plot(result) {
     if (result.d == "") {
         // No attractions so what
     }
     else {
         var params = result.d.split(':;');
         var ptsarray = new Array();

         if (params.length != 0) {
             cc_map.Clear();
             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 returnUrl = data[5];
                     var shortDescr = data[14];
                     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];
                     var img = data[15];
                     var alt = data[16];

                     if (shortDescr.length > 50) {
                         shortDescr = shortDescr.substring(0, 50) + '...';
                      }
                     
                     if (latitude != "") {
                         ptsarray[i] = new VELatLong(latitude, longitude);
                         AddPushPinGreatDaysOut(latitude, longitude, attractionname, attractionid, true, img, alt, '<strong>' + (address1 == ""? "": address1 + ', ') + address2 + '</strong><br/><br/>' + shortDescr, returnUrl);
                     }
                 }
             }
             AddPushPinCurrentSite(cc_CurrentLat, cc_CurrentLon, cc_CurrentTitle, cc_CurrentAddress, cc_CurrentImage, cc_CurrentSiteType, true);
             ptsarray[ptsarray.length] = new VELatLong(cc_CurrentLat, cc_CurrentLon);
             cc_map.SetMapView(ptsarray);
         }
     }
 }

function AddPushPinAttractionNearby(lat,lon,attractionname,attractionId,selected,img,alt,address)
{
    var latlon =new VELatLong(lat,lon);
    var shape = new VEShape(VEShapeType.Pushpin,latlon);
    var str_classDiv;
    var sb = new StringBuilder();
    
    str_classDiv = "atticon";
    
    shape.SetCustomIcon("<span class='"+ str_classDiv +"'></span>");
     
    //set title for the infobox
    shape.SetTitle(attractionname);
    
    //set the description(remaining details for infobox)
     sb.append("<div>");
    sb.append("<div style='float:left;width:50%;'>");
    sb.append(address);
    sb.append("</div>");
    sb.append("<div style='float:right;width:48%;'>");
    if (img!="")
    {
        sb.append("<img width='100' src='"+img + "' alt='" + alt + "' />");
    }
    sb.append("</div>");
    sb.append("</div>");
    sb.append("<div style='clear:both;'><!-- --></div>");
    sb.append("<br/>");
    sb.append("<div>");
    sb.append("<br/>");
    sb.append("<a href='/caravanclubapps/applications/attractions/site details.aspx?attid=" + attractionId + "' >View attraction details</a><br\>");
       
    sb.append("</div>");
    shape.SetDescription(sb.toString());
    cc_map.AddShape(shape); 
    //cc_map.SetCenterAndZoom(latlon,10);
}

function AddPushPinGreatDaysOut(lat, lon, attractionname, attractionId, selected, img, alt, address, returnUrl) {
    var latlon = new VELatLong(lat, lon);
    var shape = new VEShape(VEShapeType.Pushpin, latlon);
    var str_classDiv;
    var sb = new StringBuilder();

    str_classDiv = "atticon";

    shape.SetCustomIcon("<span class='" + str_classDiv + "'></span>");

    //set title for the infobox
    shape.SetTitle(attractionname);

    //set the description(remaining details for infobox)
    sb.append("<div>");
    sb.append("<div style='float:left;width:50%;'>");
    sb.append(address);
    sb.append("</div>");
    sb.append("<div style='float:right;width:48%;'>");
    if (img != "") {
        sb.append("<img width='100' src='" + img + "' alt='" + alt + "' />");
    }
    sb.append("</div>");
    sb.append("</div>");
    sb.append("<div style='clear:both;'><!-- --></div>");
    sb.append("<br/>");
    sb.append("<div>");
    sb.append("<br/>");    

    sb.append("<a href='/CaravanClubApps/Applications/Great-Days-Out/ProductDetail.aspx?productid=" + attractionId + "&latitude=" + lat + "&longitude=" + lon + "&returnUrl=" + returnUrl +"&linkText=Back to site details'>View attraction details</a><br\>");
    sb.append("</div>");
    shape.SetDescription(sb.toString());
    cc_map.AddShape(shape);
    //cc_map.SetCenterAndZoom(latlon,10);   
}

function AddPushPinUkSites(lat,lon,title,address,img,siteId)
{
    var latlon =new VELatLong(lat,lon);
    var shape = new VEShape(VEShapeType.Pushpin,latlon);
    var str_classDiv;
    var sb = new StringBuilder();
    
    str_classDiv = "clubicon";
    
    shape.SetCustomIcon("<span class='"+ str_classDiv +"'></span>");
    
    //set title for the infobox
    shape.SetTitle(title);
    
    //set the description(remaining details for infobox)
    sb.append("<div>");
    sb.append("<div style='float:left;width:50%;'>");
    sb.append(address);
    sb.append("</div>");
    sb.append("<div style='float:right;width:48%;'>");
    if (img!="")
    {
        sb.append("<img width='100' src='"+img + "'/>");
    }
    sb.append("</div>");
    sb.append("</div>");
    sb.append("<div style='clear:both;'><!-- --></div>");
    sb.append("<br/>");
    sb.append("<div>");
    sb.append("<br/>");
    sb.append( "<a href='/caravanclubapps/applications/uk-caravan-sites-and-parks/SiteDetails.aspx?csid=" + siteId + "' >View site details</a><br\>" );
    sb.append("</div>");
   
    
    shape.SetDescription(sb.toString());
    cc_map.AddShape(shape);    
}
function AddPushPinCLSites(lat,lon,title,address,img,siteId)
{
    var latlon =new VELatLong(lat,lon);
    var shape = new VEShape(VEShapeType.Pushpin,latlon);
    var str_classDiv;
    var sb = new StringBuilder();
    
    str_classDiv = "certicon";
    
    shape.SetCustomIcon("<span class='"+ str_classDiv +"'></span>");
    
    //set title for the infobox
    shape.SetTitle(title);
    
    //set the description(remaining details for infobox)
    sb.append("<div>");
    sb.append("<div style='float:left;width:50%;'>");
    var loggedin=readCookie("loginhash");
    if (loggedin==null)
    {
        address = "<a class='button_clear' href='"+ escape(cc_MemberLoginUrl) +"' >Please login to view address</a>";
    }
    sb.append(address);
    sb.append("</div>");
    sb.append("<div style='float:right;width:48%;'>");
    if (img!="")
    {
        sb.append("<img width='100' src='"+img + "'/>");
    }
    sb.append("</div>");
    sb.append("</div>");
    sb.append("<div style='clear:both;'><!-- --></div>");
    sb.append("<br/>");
    sb.append("<div>");
    sb.append("<br/>");
    sb.append("<a href='/planning-your-trip/uk-trips/uk-site-search-and-book/certificated-locations/site-detail?Id=" + siteId + "' >View site details</a><br\>");
    sb.append("</div>");
    shape.SetDescription(sb.toString());
    cc_map.AddShape(shape);    
}

function PlotDefaultOnError(result)
{
    alert("error");
}

//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;
}
