﻿//PREFIX ALL VARIABLES WITH CC AS WE DO NOT WANT THESE INTEREFERING 
//WITH ANY THIRD PARTY JAVASCRIPT AT A LATER DATE

var $j = jQuery.noConflict();
var cc_map = null;
var cc_mapRestrictionUnit = null;
var cc_MapStartPanPoint = null;
var cc_CurrentLat=null;
var cc_CurrentLon = null;
var cc_CurrentTitle=null;
var cc_CurrentImage=null;
var cc_CurrentAddress=null;
var cc_CurrentSiteType=null;
var cc_CurrentSiteId=null;
var cc_MapWebService="/caravanclubapps/web services/MapWebService.asmx/";
var cc_ContentType = "application/json;charset=utf-8";
var cc_MapType = VEDashboardSize.Small;
var cc_MemberLoginUrl=null;

//Initialize Map
function InitalizeMap()
{
    cc_map = new VEMap('myMap');
    cc_map.SetDashboardSize(cc_MapType);
    //token
    var tokenControl = document.getElementById("ctl00_MainContentPlaceHolder_vetoken");
    if (tokenControl!=null)
    {
        if (tokenControl.value!="")

        {
         cc_map.SetClientToken(tokenControl.value);
        }
    }
    var memberLoginUrl = document.getElementById("ctl00_MainContentPlaceHolder_MemberLoginUrl");
    if(memberLoginUrl!=null)
    {
        cc_MemberLoginUrl = memberLoginUrl.value;
    }
    cc_map.LoadMap(new VELatLong(54.07100021839142,-2.783999517560005),6);
    cc_map.AttachEvent("onclick", PixelClick);
    cc_map.AttachEvent("onendzoom", map_onendzoom);
    cc_map.AttachEvent("onendpan", map_onendpan); 
    cc_map.AttachEvent("onstartpan", map_onstartpan);
 }

//Geocode calculations for Restricing user on panning the map
var GeoCodeCalc = {};
GeoCodeCalc.EarthRadiusInMiles = 3956.0;
GeoCodeCalc.EarthRadiusInKilometers = 6367.0;
GeoCodeCalc.ToRadian = function(v) { return v * (Math.PI / 180);};
GeoCodeCalc.DiffRadian = function(v1, v2) { 
return GeoCodeCalc.ToRadian(v2) - GeoCodeCalc.ToRadian(v1);
};
GeoCodeCalc.CalcDistance = function(lat1, lng1, lat2, lng2, radius) { 
return radius * 2 * Math.asin( Math.min(1, Math.sqrt( ( Math.pow(Math.sin((GeoCodeCalc.DiffRadian(lat1, lat2)) / 2.0), 2.0) + Math.cos(GeoCodeCalc.ToRadian(lat1)) * Math.cos(GeoCodeCalc.ToRadian(lat2)) * Math.pow(Math.sin((GeoCodeCalc.DiffRadian(lng1, lng2)) / 2.0), 2.0) ) ) ) );
};

cc_mapRestrictionUnit = GeoCodeCalc.EarthRadiusInMiles; 

function map_onstartpan(e)
{
    //Get the current map center point before panning begins
    cc_MapStartPanPoint = cc_map.GetCenter();
} 
function map_onendpan(e)
{
    //Get total distance panned from map center
    var distance = GeoCodeCalc.CalcDistance(
        "54.07100021839142",
        "-2.783999517560005",
        cc_map.GetCenter().Latitude,
        cc_map.GetCenter().Longitude,
        cc_mapRestrictionUnit
        ); 

    //Check distance panned from original center point
    if (distance > 500)
    {
        //Move map back to the last point that was
        //within the desired restriction radius
        cc_map.SetCenter(cc_MapStartPanPoint);
    }
} 

function map_onendzoom(e)
{
    //Check if the map is zoomed out further than
    //the set restriction
    if (e.zoomLevel < 6)
    {
        //Zoom the map back in to the restricted area
        cc_map.SetZoomLevel(6);
    }
} 