﻿// Tabs function to switch to the places tab on load
showPanel(0);

var map;
var slideImage = document.getElementById("slider");
var place =  document.getElementById("sliderinfo");
             
var imgWidth = -3000;
var maxLeft = imgWidth + document.body.clientWidth;
var curPos = imgWidth;
    
var help = new Array(100);

help[0] = "Locate Place";
help[0]

window.setTimeout("reset()", 5000);

function reset()
{
    maxLeft = imgWidth + document.body.clientWidth;
    slideImage = document.getElementById("slider");
    place =  document.getElementById("sliderinfo");

    curPos = imgWidth;
    slide();
}

function slide()
{
    // Move the img to the right
    if(curPos < maxLeft)
    {
        place.innerHTML = curPos + ", " + maxLeft;
        slideImage.style.left = curPos + 'px';        
        curPos +=10;
        
        window.setTimeout("slide()", 10);
    }
    else
    {
        slideImage.style.left = maxLeft;        
    
        fadeaway = 1;
        window.setTimeout("fadeAway()", 1000);
    }
}

var fadeaway = 1;

function fadeAway()
{
    if(fadeaway <= 0.3)
    {
        slideImage.style.left = '-3000px';   
        fadeBy(1, slideImage);
        window.setTimeout("reset()", 20000);
    }
    else
    {
        fadeaway -= 0.1;
        fadeBy(fadeaway, slideImage);
        window.setTimeout("fadeAway()", 200);
    }
}

var fadeAjaxAmt = 1;
var ajaxImage;
var fadeInfo;

var steps = "";

function fadeOutAjax()
{
    if(fadeInfo == null)
        fadeInfo = document.getElementById("fadeinfo");
        
    if(fadeAjaxAmt <= 0)
    {
        // reset
        ajaxImage.style.display = 'none'; 
        fadeAjaxAmt = 1;  
    }
    else
    {
        // Decriment and schedule loop
        fadeAjaxAmt = parseFloat(fadeAjaxAmt - 0.05).toFixed(2);
        window.setTimeout("fadeOutAjax()", 200);
    }
    //fadeInfo.innerHTML += fadeAjaxAmt + ", ";
    fadeBy(fadeAjaxAmt, ajaxImage );
 }


function showResultsPane(resultsString)
{
    if(!ajaxImage)
        ajaxImage = document.getElementById("ajaxlogo");
        
    document.getElementById("locateMatches").innerHTML = resultsString;
    document.getElementById("resultsPane").style.display = '';
    window.setTimeout("fadeOutAjax()", 200);
    
    fadeAjaxAmt = 1;
    fadeBy(fadeAjaxAmt, ajaxImage);
    ajaxImage.style.display = '';   
    
}

function hideInfoBox()
{
    infobox.style.display = 'none';
}

function showInfo(ctrl)
{
    var xy = findPosition(ctrl);
    
    // Create a string and assign left and top properties to it
    var pos = new Object();
    pos.left = "160px";
    pos.top = xy[1] + (ctrl.clientHeight / 2) - 40 + "px" ; 
    
    // Call the ajax function and pass our string with position values to it
    // as the call context -- this can be used in the callback function
    RootPage.GetFeatureInfo(ctrl.id, GetFeatureInfo_Callback, pos);
}

function showDebug()
{
    var obj = document.getElementById("debugPanel");
    obj.style.display = obj.style.display == "none" ? "" : "none";
}
        
var controlsString = new String();
controlsString = "";

var ctrls = "txtPlace,locatAddr,locatCity,locatState,locatZip,locatLat,locatLng";
var controlList = ctrls.split(",");

var lastHighlight;

var inputControl;

for (var i=0; i < controlList.length; i++)
{
    inputControl = document.getElementById(controlList[i]);
    inputControl.onclick = highLight;
}
document.getElementById("locatGeoClipboard").onclick = highLight;

var infobox;

function highLight(mozsrc)
{
    if(!infobox)
        infobox = document.getElementById("infobox");
    var src;
    
    if(mozsrc)
    {
        src = mozsrc.target;
    }
    else if(event.srcElement)
        src = event.srcElement;
        
    if(lastHighlight != src)
    {
        if(lastHighlight != null)
        {
            lastHighlight.style.borderColor = "#ffffff";
        }
    
        lastHighlight = src;
    }
    
    
    var xy = findPosition(lastHighlight);
    
    
    // Create a string and assign left and top properties to it
    var pos = new Object();
    pos.left = xy[0] + lastHighlight.clientWidth + 3 + "px";
    pos.top = xy[1] + (lastHighlight.clientHeight / 2) - 40 + "px" ; 
    //lastHighlight.offsetTop - 40 ;
    
    // Call the ajax function and pass our string with position values to it
    // as the call context -- this can be used in the callback function
    //RootPage.GetFeatureInfo(lastHighlight.id, GetFeatureInfo_Callback, pos);
    ShowInfoBox(src.id, pos);
    lastHighlight.style.borderColor = "#FFFF00";
    
}

function ShowInfoBox(id, pos)
{
    if(pos != null)
    {
        infobox.style.top = pos.top;
        infobox.style.left = pos.left;
    }
    
    if(document.getElementById("info_" + id) != null)
    {
        infobox.style.display = '';
        document.getElementById("infoboxresults").innerHTML = document.getElementById("info_" + id).innerHTML;
    }
}

function check_Clicked(ctrl)
{
    var xy = findPosition(ctrl);
    
    // Create a string and assign left and top properties to it
    var pos = new Object();
    pos.left = "160px";
    pos.top = xy[1] + (ctrl.clientHeight / 2) - 40 + "px" ; 
    
    ShowInfoBox(ctrl.id, pos);
}
function GetFeatureInfo_Callback(response)
{
    if(response.value != null)
    {
    
        if(response.context != null)
        {
            infobox.style.top = response.context.top;
            infobox.style.left = response.context.left;
        }
        
        infobox.style.display = '';
        document.getElementById("infoboxresults").innerHTML = response.value;
    }

}   

function findPosition( oLink ) {
  if( oLink.offsetParent ) {
    for( var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent ) {
      posX += oLink.offsetLeft;
      posY += oLink.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oLink.x, oLink.y ];
  }
}

// Loop through all image objects, find tiles and fade them    
function FadeTileImages(blnFade)
{
   // get the collection of flight nodes
   var mapImages = document.getElementsByTagName("IMG");
   for (var i = 0; i < mapImages.length; i++)
   {
      // Get a reference to the current image, test it and fade if needed
      var curMapImage = mapImages.item(i);
      if (curMapImage.src.indexOf('.google.com/mt')!=-1 || curMapImage.src.indexOf('.google.com/kh')!=-1)
      {
        if(blnFade)
        {
            fadeOut(curMapImage);
        }
        else
        {
            fadeIn(curMapImage);
        }
      }
      
    }
}
  
function findAddresses()
{
    var addr = document.getElementById('locatAddr').value;
    var city = document.getElementById('locatCity').value;
    var state = document.getElementById('locatState').value;
    var zip = document.getElementById('locatZip').value;
    
    alert(addr + city + state + zip);
    WebForm1.FindAddresses(addr, city, state, zip);
}

function DeciferGeo_CallBack(response)
{
    hideInfoBox();
    
    // Returned string is a semi-colon seperated list (Longitude, followed by latitude). 
    // If it contains 3 elements, the longitude could be determined. 
    var floats=response.value.split(";");
    
    if(floats.length >= 2)
    {
        var formControl = document.getElementById("locatLng");
        formControl.value = floats[0];
        
        formControl = document.getElementById("locatLat");
        formControl.value = floats[1];
    }
    
}

function FindAddresses_CallBack(response){
    hideInfoBox();
    showResultsPane(response.value);
}

function FindPlaces_CallBack(response){
    hideInfoBox();
    showResultsPane(response.value);
}

function showPanel(val)
{
    document.getElementById("resultsPane").style.display = 'none';

    var locPlace = document.getElementById("locatePlace");
    var lnkPlace = document.getElementById("linkPlace");
    
    var locAddress = document.getElementById("locateAddress");
    var lnkAddress = document.getElementById("linkAddress");

    var locGeo = document.getElementById("locateGeo");
    var lnkGeo = document.getElementById("linkGeo");
    
    locPlace.style.display = 'none';
    locAddress.style.display = 'none';
    locGeo.style.display = 'none';
    
    lnkPlace.className = '';
    lnkAddress.className = '';
    lnkGeo.className = '';
    
    if(!infobox)
        infobox = document.getElementById("infobox");
    infobox.style.top = "37px";
    infobox.style.left = "160px";
    
    fadeBy(0.92, infobox);
    var id;
    
    switch (val)
    {
        case 0:
            locPlace.style.display = '';
            lnkPlace.className = 'current';
            id = "linkPlace";
            break;
        case 1:
            locAddress.style.display = '';
            lnkAddress.className = 'current';
            id = "linkAddress";
            break;
        case 2:
            locGeo.style.display = '';
            lnkGeo.className = 'current';
            id = "linkGeo";
            break;
    }
 
    if(document.getElementById("info_" + id) != null)
    {
        document.getElementById("infoboxresults").innerHTML = document.getElementById("info_" + id).innerHTML;
        infobox.style.display = '';
    }   
    
}