﻿var camWindowWidth = 355;
var camWindowHeight = 355;
var camInterval = null;
var curCamPath = "";
var month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var camIDsList = ["Cam1", "Cam2", "Cam3", "Cam4", "Cam5", "Cam6", "Cam7", "Cam8", "Cam9", "Cam10", "Cam11", "Cam12", 
                  "Cam13", "Cam14", "Cam15", "Cam16", "Cam17", "Cam18", "Cam19", "Cam20", "Cam21", "Cam22"];
var curCamIndex = 0;
var nextCamIndex = 0;
var prevCamIndex = 0;

function DisplayCamsList()
{
    CloseAllPopups();
    $("#CamsList").css("display", "");
    pageTracker._trackEvent("VodaCams", "Cams List Viewed");
}

function GetDateTime()
{
    var _now = new Date();
    var _sec = _now.getSeconds();
    var _strSec = _sec.toString();
    if (_sec < 10)
        _strSec = "0" + _sec.toString();        
    var _min = _now.getMinutes().toString();
    var _strMin = _min.toString();
    if (_min < 10)
        _strMin = "0" + _min.toString();
    var _hrs = _now.getHours().toString();
    var _year = _now.getFullYear().toString();    
    var _month = _now.getMonth();
    var _date = _now.getDate().toString();
    var _curDateTime = _date + " " + month[_month] + " " + _year + " " + _hrs + ":" + _strMin + ":" + _strSec;
    
    return _curDateTime;
}

function ZoomToCam(lon, lat, path, heading, zoomLevel)
{
    if (camInterval != null)
    {
        StopCamTimer();
    }
    CloseAllPopups();
    var evt = window.event || arguments.callee.caller.arguments[0];
    var sender = null;
    if(evt) //true if user clicked element else user clicked next or previous
    {
        sender = evt.target || evt.srcElement;
        //alert(sender.id);
        for (var i = 0; i < camIDsList.length; i++)
        {
            if (sender.id == camIDsList[i])
                curCamIndex = i;
        }
    }
    nextCamIndex = curCamIndex + 1;
    prevCamIndex = curCamIndex - 1;
    if (nextCamIndex >= camIDsList.length)
        nextCamIndex = 0;
    if (prevCamIndex < 0)
        prevCamIndex = camIDsList.length - 1;        
    curCamPath = path;
    camInterval = setInterval(FetchImage, 60000);
    var _obj = document.getElementById("CamContainer");
    if(_obj)
    {
        _obj.parentNode.removeChild(_obj);
    }
    
    var _curDateTime = GetDateTime();
        
    var _camLoc = new AGCoord(lat, lon);
    CentreCamBubble(_camLoc , zoomLevel);
    var _camDiv = document.createElement("div");
    _camDiv.setAttribute("id", "CamContainer");
    var _camHeadDiv = document.createElement("div");
    var _strHead = "<span id='CamTitle'>" + heading + "</span><br /><span id='CamUpdated'>Last Updated: " + _curDateTime + "</span><br />";
    _camHeadDiv.innerHTML = _strHead;
    var _camImg = document.createElement("img");
    _camImg.setAttribute("id", "CamImage");
    _camImg.setAttribute("src", path + "?rnd=" + Math.random());
    var _camFooter = document.createElement("div");
    _camFooter.setAttribute("id", "CamFooter");
    var prevCam = document.getElementById(camIDsList[prevCamIndex]).innerHTML;
    prevCam = prevCam.substring(0, prevCam.indexOf("(", 0));
    prevCam = Trim(prevCam);
    var nextCam = document.getElementById(camIDsList[nextCamIndex]).innerHTML;
    nextCam = nextCam.substring(0, nextCam.indexOf("(", 0));
    nextCam = Trim(nextCam);
    var _strDisclaimer = "<span id='CamDisclaim'>Cameras may stop transmitting. Last available image is displayed.</span>";
    _strDisclaimer += "<div class='CamStepContainer'><span class='CamStep' onclick=\'StepCam(" + (prevCamIndex) + ")\'>< Prev (" + prevCam + ")</span> | <span class='CamStep' onclick=\'StepCam(" + (nextCamIndex) + ")\'>(" + nextCam + ") Next ></span></div>";
    _camFooter.innerHTML = _strDisclaimer;
    _camDiv.appendChild(_camHeadDiv);
    _camDiv.appendChild(_camImg);
    _camDiv.appendChild(_camFooter);
    var _infoOpts = new AGInfoDisplayOptions(camWindowWidth, camWindowHeight);
    _infoOpts.noCloseOnClick = true;
    _infoOpts.onCloseFn = StopCamTimer;
    g_map.openInfoDisplay(_camLoc, _camDiv, _infoOpts);
    pageTracker._trackEvent("VodaCams", "Cam Image Viewed", heading);    
}

function CentreCamBubble(oCoord, zoomLevel)
{
    g_map.centreAndScale(oCoord, zoomLevel);

    var curMapSize = g_map.getSize();
    //calculation to place POI info window in the centre of the current viewable map
    var newCoord = null;
    var curWidth = curMapSize.width;
    var curHeight = curMapSize.height;
    if ((curWidth - camWindowWidth) > 0 && (curHeight - camWindowHeight > 0))
    {
        var newX = parseInt((curWidth - (camWindowWidth + (curWidth*0.1)))/2); // add 10% to width (leftwards shift) to compensate for map controls
        var newY = parseInt((curHeight - (camWindowHeight + (curHeight*0.2)))/2); // add 20% to height (downwards shift) to compensate for the bubble's stem
        newCoord = g_map.getCoordFromVisibleArea(new AGPoint(curWidth-newX, newY));
    }
    else
    {
        newCoord = g_map.getBoundingBox().getNorthEast();
    }

    g_map.centreAndScale(newCoord, zoomLevel);
}

function FetchImage()
{
    var _camDateTime = document.getElementById("CamUpdated");
    _camDateTime.innerHTML = "Last Updated: " + GetDateTime();
    var _camImg = document.getElementById("CamImage");
    _camImg.setAttribute("src", curCamPath + "?rnd=" + Math.random());
}

function StopCamTimer()
{
    clearInterval(camInterval);
    camInterval = null;
}

function StepCam(camIndex)
{
    curCamIndex = camIndex;
    var camID = camIDsList[camIndex];
    document.getElementById(camID).onclick();
}

function Trim(str)
{
    return str.replace(/^\s+|\s+$/g,"");
}