﻿var blnLoaded = false;
var runOnce = false;
//This is a modified Virtual Earth Javascript file, based on drawing.js, supplied by Microsoft SDK.
// Added support for box


//Initial map parameters and Loading
function GetMap(){
    if(navigator.userAgent.indexOf("Firefox")!=-1){
        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) }
        }
    }
    map = new VEMap('divMap');
   
    
    var mapOptions = new VEMapOptions();
    mapOptions.EnableBirdseye = false;
    map.LoadMap(new VELatLong(43.7499999999998, -99.71000000000001), 4, VEMapStyle.Road, false,VEMapMode.Mode2D, true, 1, mapOptions);
    
    map.EnableShapeDisplayThreshold(false);
    //map.AddShapeLayer(slDrawing);
    map.AddShapeLayer(projLayer);
    map.AddShapeLayer(flLayer);
    map.AddShapeLayer(expLayer1);
    map.AddShapeLayer(expLayer2);
    map.AddShapeLayer(expLayer3);
    map.AddShapeLayer(expLayer4);
    map.AddShapeLayer(drawLayer);
    map.AddShapeLayer(cvgLayer);


   

    //AddMyControl();
    map.AttachEvent("onmousemove", MouseMove);
    map.AttachEvent("onstartpan", ClearDivs);
    map.AttachEvent("onclick", CenterMapOnClick);
    map.AttachEvent("onmouseover", OnMouseOverDisableInfo); //Custom onmouseoover event, VEEvents.js
    map.AttachEvent("onmouseout", OnMouseOutDisableInfo); //Custom onmouseout event, VEEvents.js
    map.AttachEvent("onendpan", FillCenterPoints);
    prevZoom = map.GetZoomLevel();
   
    if(document.getElementById("ctl00_Main_hdnLoadAll").value != ""){ 
        GetAll(); 
        document.getElementById("ctl00_Main_hdnLoadAll").value = '';
    }
}   


//Called when a project year is selected
function LoadProjectVE(value){
    document.getElementById("divMap").focus();
    map.DetachEvent("onmousemove", FindProjectShape);
    try{
        var piCenterLat = ""; var piCenterLong = ""; var piZoomLevel = "";
        if(document.getElementById('ctl00_Main_hdnProjectLoaded').value == 'true') 
        {
             piCenterLat = document.getElementById('ctl00_Main_hdnCenterLat').value;
             piCenterLong = document.getElementById('ctl00_Main_hdnCenterLong').value; 
             piZoomLevel = document.getElementById('ctl00_Main_hdnLoadedZoomLevel').value; 
        } 
        KeyView.ImageRetrievalService.InitializeNewProject(value, piCenterLat, piCenterLong, piZoomLevel, InitializeProjectEval);   
       }
    catch(e){
        alert(e.message);
    }
    document.forms[0].ctl00$Main$hdnProjState.value = '';
    document.forms[0].ctl00$Main$hdnProjCity.value = '';
    document.forms[0].ctl00$Main$hdnProjYear.value = '';
    
}

function ClearAllLayers() {
    projLayer.DeleteAllShapes();
    flLayer.DeleteAllShapes();
    expLayer0.DeleteAllShapes();
    expLayer1.DeleteAllShapes();
    expLayer2.DeleteAllShapes();
    expLayer3.DeleteAllShapes();
    expLayer4.DeleteAllShapes();
    drawLayer.DeleteAllShapes();
    cvgLayer.DeleteAllShapes();
    
}
function InitializeProjectEval(arg){
    eval(arg);
    document.getElementById('ProjectInfo').style.display = 'block';
    
    if(document.getElementById('ctl00_Main_hdnProjectLoaded').value == 'true' && runOnce == false)
    {
        runOnce = true;
        
        UpdateSelTotal();
        
       if(map.GetZoomLevel() >= minExpLevel) { 
            AttachExposureEvents(); 
            AJAXCallGetExposures();
       } 
       if(document.getElementById('ctl00_Main_hdnDrawingList').value != '')
        {
           AddDrawingsToVE();
           ScanForExpsInSavedDrawings();
        }
        document.getElementById('ctl00_Main_hdnProjectLoaded').value = '';
    }
}

function SuccessEval(arg){ eval(arg); } 



//GetExposuresInBounds return, cancels ShowLoading() screen
function SuccessEvalExposure(arg){
    eval(arg);
    document.getElementById('ctl00_Main_hdnAjax').value = '1';
   // HideLoading();
}


//show a loading label
function ShowLoading(){
  var el = document.createElement("div"); 
  el.setAttribute('id',"VELoading");
  //Now we should know the width and height of the VE map or else go and get it.
  var curr_width = 800;
  var curr_height = 600;
  el.style.top = ((curr_height - 25) / 2) + "px";
  el.style.left = ((curr_width - 105) / 2) + "px";
  el.style.border = "1px solid gray";
  el.style.font = "12px arial";
  el.style.background = "White";
  el.style.padding = "2px";
  el.style.verticalAlign = "middle";
  el.innerHTML = "<img src='images/spinner.gif' /> Please Wait. Loading data....";  
  map.AddControl(el);
}

//remove loading label
function HideLoading(){
  var el = document.getElementById("VELoading");
  el.parentNode.removeChild(el);
}

function FindLoc(){
try{
    map.Find(null, document.getElementById("txtFind").value);
}
catch(e){ alert(e.message); }
}
function OnFind(arg){
    alert(arg);
}



//Default webservice return statement, used by multiple calls
function GetExposuresEval(arg){ eval(arg);   if(map.GetZoomLevel() > 12){ AJAXCallGetExposures(); }   }

function GetAll(){
   var style = map.GetMapStyle();
   ClearDrawings();
   ClearAllLayers();
   ClearSavedProjectValues();
   ClearListBox();
   UpdateSelTotal();
    if (style != VEMapStyle.Aerial){ map.SetMapStyle(VEMapStyle.Aerial); }
    map.AttachEvent("onmousemove",FindProjectShape);
    KeyView.ImageRetrievalService.GetAllProjects(OnSuccess1);
}

function OnSuccess1(arg) {
    
    try {
        eval(arg);
    }
    catch (err) {
        alert(err); 
    }
}
//SHOW ALL COVERAGE SECTION

//Find image inside mouse pointer, bound to onmousemove
function FindProjectShape(e)
{
    var pixel = new VEPixel(e.mapX, e.mapY);
    var LL = map.PixelToLatLong(pixel);
    if(e.elementID != null)
    {
        var currShape = map.GetShapeByID(e.elementID);
        var currTitle = currShape.GetTitle();
        var currDescr = currShape.GetDescription();
        
        SetupProjectDiv(currTitle, currDescr);
        ShowProjectDiv(e.clientX, e.clientY);
    }
    else
    {
        if(IsProjDivShown)
        {
            ClearProjectDiv();
            HideProjectDiv();
        }
    }
}


function SetupProjectDiv(Title, Desc)
{   
    var aryTitle = Title.split(",");
    var aryDesc = Desc.split(",");
    
    document.getElementById("tdTitle").innerText = Title;
    document.getElementById("tdDateFlown").innerText = aryDesc[1];
    document.getElementById("tdImages").innerText = aryDesc[2];
    document.getElementById("tdRes").innerText = aryDesc[3];
    if(aryDesc[4] != aryDesc[5]){
        document.getElementById("tdOverlap").innerText = aryDesc[4] + "% - " + aryDesc[5] + "%";
    }
    else
    {
        document.getElementById("tdOverlap").innerText = aryDesc[4] + "%";
    }
    var btnLoad = document.getElementById('btnLoadProjectByShape');
        btnLoad.onclick = function() { LoadProjectByShape(aryDesc[0]) };
}

function ClearProjectDiv()
{
    document.getElementById("tdTitle").innerText = '';
    document.getElementById("tdDateFlown").innerText = '';
    document.getElementById("tdImages").innerText = '';
    document.getElementById("tdRes").innerText = '';
    document.getElementById("tdOverlap").innerText = '';
    var btnLoad = document.getElementById('btnLoadProjectByShape');
        btnLoad.onclick = null;
    IsProjDivShown = false;    
        
}

function HideProjectDiv() { document.getElementById('divProject').style.display = 'none'; }
function ShowProjectDiv(X, Y){
    var divProject = document.getElementById("divProject"); 
    divProject.style.display = 'block'; 
    divProject.style.top = Y + "px";
    divProject.style.left = X + "px";
    IsProjDivShown = true;
}

function LoadProjectByShape(projId)
{
//    HideProjectDiv();
//    //Clear shape layer
//    projLayer.DeleteAllShapes();
//    document.getElementById('hdnProjId').value = projId;
//    LoadProjectVE(projId);

    var frmMain = document.forms[0];
    frmMain.action = 'digital.aspx?ld=y&projId=' + projId;
    frmMain.submit();
}   

function ClearSavedProjectValues(){
    document.getElementById('ctl00_Main_hdnCenterLat').value = '';
    document.getElementById('ctl00_Main_hdnCenterLong').value = '';
    document.getElementById('ctl00_Main_hdnLoadedZoomLevel').value = '';
    document.getElementById('ctl00_Main_hdnList').value = '';
    document.getElementById('ctl00_Main_hdnDrawingList').value = '';
    document.getElementById('ctl00_Main_hdnProjectLoaded').value = '';

}

function ClearListBox() {
    lsbSelected.length = 0;
    lsbSelected.length = 1;
    lsbSelected.options[0].text = 'No Exposures currently selected.';
    lsbSelected.options[0].value = '';
}