﻿
var mapWidth;
var mapHeight;
var map = null;
var _coursesLoaded = false;
var pinID = 1;
var _mapDirections = null;
var _mapDirections_veCourseLatLong = null;
var _tabContainer = null;
var _profile_SiteMembersAddress = null;

// Init
CheckFirefox()
addLoadEvent(GetMap);

function CheckFirefox()
{
    // If the browser is Firefox get the version number
    var ffv = 0;
    var ffn = "Firefox/"
    var ffp = navigator.userAgent.indexOf(ffn);
    if (ffp != -1) ffv = parseFloat(navigator.userAgent.substring(ffp + ffn.length));
    // If we're using Firefox 1.5 or above override the Virtual Earth drawing functions to use SVG
    if (ffv >= 1.5) {
      Msn.Drawing.Graphic.CreateGraphic=function(f,b) { return new Msn.Drawing.SVGGraphic(f,b) }
    }
    // end firefox 2
}


//Defer script until the page has loaded
function addLoadEvent(func) 
{ 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') 
        { window.onload = func; } 
    else 
        { window.onload = function() 
            { oldonload(); func(); } 
    }
}

function GetMap() {

    // get Profile Members Address
    //get_ProfileMembersAddress();
    map = new VEMap('div_CourseMap');
    if(r_lat)
       map.LoadMap(new VELatLong(r_lat,r_lon),_Zoom,'r',false); //8 = 40 miles, 9 = 20 miles, 10 = 10 miles, 7 = 60 miles
    else
        map.DeleteAllPushpins();
    
    map.AttachEvent('onmodenotavailable', modeNotAvailable);
    map.AttachEvent('oninitmode', doModeChange);

    
    GetCourses();
    
    
}

function modeNotAvailable()
{
    alert('Viewing mode is not available');
}

function GetCourses()
{
    RegionalCourses.GetRegionalPinIds(_RegionId, onGetRegionalCourses_Complete, onGetRegionalCourses_Error);
}

function onGetRegionalCourses_Complete(items)
{
    var a = new Array;
    var pinUrl;
    var latLong;
    var pinID;
    
    for(var i =0;i<items.length;i++)
    {
        try
        {
            if (items[i].IsFlagLeft)
            {
                if(items[i].IsPremier)
                    pinUrl = "UserFiles/images/flags/yellow/" + (i + 1) + "L.gif";
                else
                    pinUrl = "UserFiles/images/flags/red/" + (i + 1)  + "L.gif";
            }
            else
            {
                if(items[i].IsPremier)
                    pinUrl = "UserFiles/images/flags/yellow/" + (i + 1) + "R.gif";
                else
                    pinUrl = "UserFiles/images/flags/red/" + (i + 1)  + "R.gif";
            }
            
            pinId = items[i].ID;
            
            VEPushpin.ShowDetailOnMouseOver = false;            
            VEPushpin.OnMouseOverCallback = PinHover;
    
            latLong = new VELatLong(items[i].Latitude,items[i].Longitude);
            descript = items[i].Latitude + "," + items[i].Longitude;
            var pin = new VEPushpin(pinId, latLong, pinUrl, pinId + "","", 'iconStyle');
            map.AddPushpin(pin);
        }
        catch(ex)
        {
            throw ex;
        }
    }
    _coursesLoaded = true;
}

function ShowItem(v)
{
   if(_coursesLoaded)
    PinHover(0,0,v,null);
    
}
function onGetRegionalCourses_Error(err)
{
    alert(err.Title + "," + err.Description);
}

function PinHover(x,y,title,details)
{
    //alert(x + "," + y + "," + title + "," + details);
    
    if(details == '' || details == null)
    {
        var ID = title;
        RegionalCourses.GetItem(ID, onGetCourseItem_Complete, onGetCourseItem_Error);
    }
   else
   {
       //onShowDirectionsStepOver(x,y,title,details); //alert(details);
  }
    
    
    
}


function onGetCourseItem_Complete(item)
{
    var ID = item.ID;
    var DivShow = "vShow" + ID;
    var e=document.getElementById(ID+"_"+map.GUID);
    
    if(e!=null&&e!="undefined")
    {
    
        /*window.ero.setBoundingArea(
        new Microsoft.Web.Geometry.Point(0,0),
        new Microsoft.Web.Geometry.Point(document.body.clientWidth, document.body.clientHeight));*/
        
        var stemp;
        var website = '';
        //var website = "<br /><a href='" + item.SiteUrl + "' target='_blank'>view website</a><br />";
        
        if(item.IsPremier)
        {
                website += "<p>";
                website += "<a href='premier_courses_view.aspx?cid=" + item.ID + "' ><strong>View Premier Course Details</strong></a>";
                //if (item.SiteUrl != "")
                //    website += "<br /><a href='" + item.SiteUrl + "' target='_blank'>course website</a><br />";
                website += "</p>";
                
            stemp = "<div class='titleStyle_premier'>" + item.DisplayName + "</div>";
            stemp += "<div class='previewStyle' id='" + DivShow + "'>";
            // title           
            
            var premierImg = "<IMG SRC='App_Themes/kg_theme/images/premier.png' border='0' align='right' />";
            stemp = premierImg + stemp + item.Course_Info + website + "</div>";
            
        }
        else
        {
            website += "<p>";
            website += "<a href='" + item.SiteUrl + "' target='_blank'>view website</a><br />";
            website += "</p>";
            
            stemp = "<div class='titleStyle'>" + item.DisplayName + "</div>";
            stemp += "<div class='previewStyle' id='" + DivShow + "'>";
            
            var address = "<b>Address</b><br />" + item.Address + "<br />" + item.City + "<br />" +  item.State + " " + item.Zip + "<br />";
            stemp = stemp + address + website + "</div>";
          
            
        }
        
        stemp+= "<br /><a style='font-size:8pt;' href='javascript:ShowCourseDetail(" + item.ID + ");'>Show Weather & Directions</a>";
         
        window.ero.setContent(stemp);//"<div class='previewStyle' id='" + DivShow + "'>" + item.Course_Info + "</div>");
        window.ero.dockToElement(e); 
        
      
    }
}
function onGetCourseItem_Error(err)
{
    alert('Service Error: ' + err.get_message());
}

function AddPin(pinID, latitude,longitude,pinURL,title,description,iconStyle,titleStyle,previewStyle)
{
    if(pinURL == 'null') pinURL = null;
    var pin = new VEPushpin(pinID, new VELatLong(latitude,longitude), pinURL, title, description, iconStyle,titleStyle,previewStyle);
    map.AddPushpin(pin);
    pinID++;
}

function NavVisible(v)
{
    if(v)
        map.ShowDashboard();
    else
        map.HideDashboard()
}

//////////////////////////////////////////////////////////////////////////////
// Modal Course 

function ShowCourseDetail(courseId)
{
    RegionalCourses.GetRegionalDetailItem(courseId, onGetRegionDetailItem_Complete, onGetRegionDetailItem_Error);
    //ShowModalWeather();
}

function onGetRegionDetailItem_Complete(result)
{
    _mapDirections_veCourseLatLong = new VELatLong(result.Latitude,result.Longitude);
    
    $get('CourseName').innerHTML = result.CourseName;
    
    $get('weatherLocation').innerHTML = result.WeatherDisplayName;

    $get('weatherIcon').src = result.WeatherCurrent.Icon;
    $get('weatherTMP').innerHTML = result.WeatherCurrent.TMP;
    $get('weatherFeelsLike').innerHTML = result.WeatherCurrent.FeelsLike;
    $get('weatherWind').innerHTML = result.WeatherCurrent.Wind;
    $get('weatherHumidity').innerHTML = result.WeatherCurrent.Humidity;
    $get('weatherSunrise').innerHTML = result.WeatherCurrent.Sunrise;
    $get('weatherSunset').innerHTML = result.WeatherCurrent.Sunset;
    
    
    $get('forcast').innerHTML = DrawForcastItems(result.WeatherForcast)
    
    try
    {
        if($get('StartAddress_UseMemberAddress').checked == true)
            $get('input_startAddress').value = _profile_SiteMembersAddress;
    }
    catch(err)
    {
    }
        
        
    var myBehavior = $find("ModalWeather");
    myBehavior.show();
}

function DrawForcastItems(forcasts)
{
    
    var v = '';
    v += "<table cellpadding='0' cellspacing='0' border='0' width='500px'><tr>";
    for(var i=1;i<forcasts.length;i++)
    {
        v += "<td align='left' valign='top'>";
        v += "<table cellpadding='0' cellspacing='0' border='0'><tr>";
        v += "<td align='left' valign='top' width='32px' height='32px'>";
        v += "<img src='" + forcasts[i].Icon + "' border='0' width='32px' height='32px' /></td>";
        v += "<td align='right' valign='middle' style='font-weight:bold;'>" + forcasts[i].ForcastDate; + "</td></tr>";
        v += "<tr><td colspan='2' align='left' valign='top'>Temperature:&nbsp;&nbsp;" + forcasts[i].TMP + "</td></tr>";
        v += "<tr><td colspan='2' align='left' valign='top'>Precipitation:&nbsp;&nbsp;" + forcasts[i].Precipitation + "%</td></tr>";
        v += "<tr><td colspan='2' align='left' valign='top'>Sun:&nbsp;&nbsp;" + forcasts[i].Sunrise + " / " + forcasts[i].Sunset + "</td></tr>";
        v += "<tr><td colspan='2' align='left' valign='top'>" + forcasts[i].ForcastText + "</td></tr>";
        v += "</table></td>";
    }
    v += "</tr></table>";
    return v;

}
function onGetRegionDetailItem_Error(err)
{
    alert('Service Error: ' + err.get_message());
}



function ModalTabChange_Client(sender, e)
{
    _tabContainer = sender;
    var activeTab = _tabContainer.get_activeTabIndex();
    
    
    if(activeTab == 0)
        ShowDirctionsLinks(false);
    
    if(activeTab == 1)
        ShowDirctionsLinks(true);
}

function ShowDirctionsLinks(v)
{
    //alert(v);
    if(v)
    {
        $get('divDirectionsLinks').style.display ="block";
    }
    else
    {
        $get('divDirectionsLinks').style.display ="none";
    }
}



function ShowDirectionsDialog()
{
    $get('div_StartAddress').style.display='block';
    $get('div_StartAddress').style.visibility='visible'
}

function ShowDirections()
{
    //alert($get('input_startAddress').value);
    if( $get('input_startAddress').value  == '')
    {
        alert('Address cannot be empty');
        return false;
    }
        
    $get('div_StartAddress').style.display='none';
    $get('div_StartAddress').style.visibility='hidden';
    
    var StartAddress = $get('input_startAddress').value;
    //var start = '701 white horse road, voorhees,nj,08043';
    //var end = '2205 hamilton drive, voorhees,nj,08043';
    
    //alert(StartAddress);
    _mapDirections = new VEMap('Map_Directions');
    _mapDirections.LoadMap();
    
    _mapDirections.GetRoute(StartAddress,_mapDirections_veCourseLatLong,VEDistanceUnit.Miles,VERouteType.Shortest,onGotRoute);
    
    //(start, end, units, route_type, callback);
    
}

function onGotRoute(route)
{
//alert(route);
   var routeinfo="<br />Route info:<br /><br />";
   routeinfo += "Total distance: ";
   routeinfo += route.Itinerary.Distance+" ";
   routeinfo += route.Itinerary.DistanceUnit+"<br />";

   var steps="";
   var len = route.Itinerary.Segments.length;
   for(var i = 0; i<len ;i++)
   {
      steps+=route.Itinerary.Segments[i].Instruction+" -- (";
      steps+=route.Itinerary.Segments[i].Distance+") ";
      steps+=route.Itinerary.DistanceUnit+"<br />";
   }
   routeinfo += "<br /><br />Steps:<br />"+steps;
   
   //alert(routeinfo);
   /*sDirections = routeinfo;
   
   
   ShowDiv('div_directionsList');
   $get('div_directionsList').innerHTML = sDirections;*/
   
    //VEPushpin.ShowDetailOnMouseOver =true;        
    //VEPushpin.OnMouseOverCallback = onShowDirectionsStepOver;
}

var popMap = null;
function onShowPrintableDirections()
{
   if(popMap != null)
    popMap = null;
    
    //alert(_mapDirections_veCourseLatLong);
    var vURL = "http://maps.live.com/default.aspx?v=2&rtp=adr." + $get('input_startAddress').value + "~pos." + _mapDirections_veCourseLatLong.Latitude + "_" + _mapDirections_veCourseLatLong.Longitude + "_" + $get('CourseName').innerHTML;
    popMap = window.open(vURL);
   // alert(vURL);
    
    ///http://maps.live.com/default.aspx?v=2&rtp=adr.One%20Microsoft Way,%20Redmond,%20WA%2098052~pos.45.23423_-122.1232_MyPlace
}

function onShowDirectionsStepOver(x,y,title,details)
{
    var step = $get('divSteps').style.display='block';
    $get('divSteps').style.left = x;
    $get('divSteps').style.top = y;
    if(title == "End")
        $get('divSteps').innerHTML = details + " " + $get('CourseName').innerHTML
    else
        $get('divSteps').innerHTML = details;
    
    //$get('CourseName').innerHTML
    /*var e=document.getElementById(title+"_"+_mapDirections.GUID);
    alert(title+"_"+_mapDirections.GUID);
    alert(x + "," + y + "," + title + "," + details + "," + e);
    if(e!=null&&e!="undefined")
    {
     window.ero.setBoundingArea(
        new Microsoft.Web.Geometry.Point(0,0),
        new Microsoft.Web.Geometry.Point(document.body.clientWidth, document.body.clientHeight));
        
        var stemp = "<br />" + details;
           window.ero.setContent(stemp);
        window.ero.dockToElement(e); 
    }*/
}

function get_ProfileMembersAddress()
{
    Sys.Services.ProfileService.load(['SiteMemberAddress'], onProfileMembersAddress_Complete, onProfileMembersAddress_Error, null);
}
function onProfileMembersAddress_Complete(result)
{
    var v = Sys.Services.ProfileService.properties.SiteMemberAddress;
    var vMembersAddress = '';
    if(v != null)
    {
        _profile_SiteMembersAddress = v.Address1 + "," + v.City + "," + v.StateOrRegion + "," + v.Zip
    }
        
}
function onProfileMembersAddress_Error(err)
{
    alert('Service Error: ' + err.get_message());
}


function onStartAddress_CheckChanged()
{
   // alert($get('StartAddress_UseMemberAddress').checked);
    if($get('StartAddress_UseMemberAddress').checked == true)
        $get('input_startAddress').value = _profile_SiteMembersAddress;
    else
        $get('input_startAddress').value = "";
        
}

function CloseModal()
{
    //VEPushpin.ShowDetailOnMouseOver = false;            
    //VEPushpin.OnMouseOverCallback = PinHover;
    
      try
      {
        map.DeleteRoute();
      }
      catch (err)
      {
        alert(err.message);
      }
      
    Dispose_mapDirections();
    _mapDirections = null;
    if(_tabContainer !=null)
        _tabContainer.set_activeTabIndex(0);

 
    ShowDirectionsDialog();
}


//http://viavirtualearth.com/wiki/

function Dispose_mapDirections()
{
    if(_mapDirections != null)
    {
        _mapDirections.Dispose();
    }
}
function DisposeMap() //dispose map etc
{
    if (map != null)
    {
        map.Dispose();
    }
}

function onHoverMenu(linkButton, panel)
{
 // Create the behavior
    var link = new Sys.UI.Control($('ctl01_ContentPlaceHolder1_' + linkButton));
    var hoverBehavior = new AtlasControlToolkit.HoverMenuBehavior();
    hoverBehavior.set_PopupControlID('ctl01_ContentPlaceHolder1_' + panel);
    hoverBehavior.set_PopupPosition('Right');
                
    // Attach the behavior
    link.get_behaviors().add(hoverBehavior);
    hoverBehavior.initialize();

}

///////////////////////////////////////////
// 3D operations
//


function doModeChange()
{
      /* var mode = map.GetMapMode();
    if (mode==VEMapMode.Mode2D)
    {
        mode='2D Mode';
    }
    
    if (mode==VEMapMode.Mode3D) {
     var doc = document.getElementsByTagName('div');
        for (var i = 0; i < doc.length; i++) {
            var v = doc[i].id;
            if(doc[i].id.match("_pnlPopCourse") != null) 
                addShim(doc[i].id);
            
        }
        mode='3D Mode';
    }
    
  //alert('You are now in ' + mode +'.');*/

}
function testShim(v)
{
    AddMyControl();
}

function AddMyControl()
{
  var panelHead = "<table border=0 width='100%'>" +
        "<tr><td bgcolor='#C0C0CF'><p align='center'>My Panel</p></td></tr>"
  var panelFoot = "<tr><td bgcolor='#E0E0E0'><p align='center'>Produced by <br><a href='http://dev.live.com/virtualearth/articles.aspx?app=virtual_earth'>Windows Live Dev</a></td></tr></table>";
  var panelEmptyContent = "<tr><td>3D is neat</td></tr>" +
        "<tr><td> </td></tr>" +
        "<tr><td> </td></tr>";

  var panel = document.createElement("div");

  panel.id = "myControl";
  panel.style.top = "10px";
  panel.style.left = "500px";
  panel.style.width = "150px";
  panel.style.border = "2px solid blue";
  panel.style.background = "White";
  panel.innerHTML = panelHead + panelEmptyContent + panelFoot;
  map.AddControl(panel);
  addShim(panel);
}
function addShim(el)
{
   var shim = document.createElement("iframe");
  //shim.id = "myShim";
  shim.frameBorder = "0";
  shim.style.position = "absolute";
  shim.style.zIndex = "1";
  shim.style.top  = el.offsetTop;
  shim.style.left = el.offsetLeft;
  shim.width  = el.offsetWidth;
  shim.height = el.offsetHeight;
  el.shimElement = shim;
  el.parentNode.insertBefore(shim, el);
}

//
// end 3D operations
///////////////////////////////////////////




Sys.Application.notifyScriptLoaded();



/*<!--http://maps.live.com/?
v=2&
rtp=pos.qn6wkk8rhp1d_
701%20White%20Horse%20Road%20Suite%205%20Voorhees%20NJ%2008043~
pos.qmk3cg8qpfsp_2387%
Kings%20Highway%2c%20Woolwich%20Township%2c%20NJ%2008085

http://maps.live.com/?
v=2&
rtp=pos.qn6wkk8rhp1d_
701%20White%20Horse%20Road,Voorhees,NJ,08043~
pos.qmk3cg8qpfsp__2387%
4%20overlook%20drive,corinth,ny

http://maps.live.com/?v=2&rtp=pos.qn6wkk8rhp1d_701%20White%20Horse%20Road%2c%20Voorhees%2cNJ%2c08043~pos.qmk3cg8qpfsp_2387%20Kings%20Highway%2c%20Woolwich%20Township%2c%20NJ%2c%2008085%2c

%20 = space
%2c = comma -->*/
