﻿//////////////////////////////////////////////////////////////////////////////////////////////
//  Here we have the navigation helpers.
//////////////////////////////////////////////////////////////////////////////////////////////
var vNavigation = {};

vNavigation.Highlight = function(tID) {
    if (document.getElementById(tID + "-Middle").className != "Middle Selected") {
        document.getElementById(tID + "-Left").className = "LeftSide Highlight";
        document.getElementById(tID + "-Middle").className = "Middle Highlight";
        document.getElementById(tID + "-Right").className = "RightSide Highlight";
    }
}

vNavigation.HighlightOff = function(tID) {
    if (document.getElementById(tID + "-Middle").className != "Middle Selected") {
        document.getElementById(tID + "-Left").className = "LeftSide";
        document.getElementById(tID + "-Middle").className = "Middle";
        document.getElementById(tID + "-Right").className = "RightSide";
    }
}

vNavigation.Select = function(tID) {
    document.getElementById(tID + "-Left").className = "LeftSide Selected";
    document.getElementById(tID + "-Right").className = "RightSide Selected";
    document.getElementById(tID + "-Middle").className = "Middle Selected";
}

vNavigation.GoTo = function(tLocation) {
    window.location = tLocation;
}

//////////////////////////////////////////////////////////////////////////////////////////////
//	Here we have collapsable containers
//////////////////////////////////////////////////////////////////////////////////////////////
var vCollapse = {};

vCollapse.Speed = 1000;

vCollapse.DoOverTime = function(tItem, tEnd, tInterval) {
    var vItem = document.getElementById(tItem);
    var vHeight = vItem.offsetHeight;

    var vGood = false;
    if (vHeight > tEnd) {
        vItem.style.height = Math.max(tEnd, vHeight - tInterval) + "px";
        if ((tEnd + "px") == (vItem.style.height)) {
            vGood = true;
            vCollapse[tItem].State = "Collapsed";
            vCollapse[tItem].Button.className = "Collapsed";
        }
    }
    else {
        vItem.style.height = Math.min(tEnd, vHeight + tInterval) + "px";
        if ((tEnd + "px") == (vItem.style.height)) {
            vGood = true;
            vCollapse[tItem].State = "Expanded";
            vCollapse[tItem].Button.className = "Expanded";
        }
    }
    if (!vGood) {
        setTimeout("vCollapse.DoOverTime('" + tItem + "', " + tEnd + ", " + tInterval + ")", 1);
    }
}

vCollapse.Do = function(tContainer, tButton, tStyle) {
    var vItem = document.getElementById(tContainer);
    var vButton = document.getElementById(tButton);

    if (vCollapse[tContainer] == null || vCollapse[tContainer].State == "Expanded") {
        vCollapse[tContainer] = {};
        vCollapse[tContainer].State = "Expanded";
        vCollapse[tContainer].Height = vItem.offsetHeight;
        vCollapse[tContainer].Button = vButton;
    }

    var vAction = vCollapse[tContainer].State;
    switch (tStyle) {
        case "Expand Only":
            if (vAction == "Expanded") {
                vCollapse[tContainer].Button.className = "Expanded";
                vAction = "None";
            }
            break;
        case "Collapse Only":
            if (vAction == "Collapsed") {
                vCollapse[tContainer].Button.className = "Collapsed";
                vAction = "None";
            }
            break;
    }

    switch (vAction) {
        case "Expanded":
            vCollapse[tContainer].Height = vItem.offsetHeight;
            vCollapse[tContainer].State = "Changing";
            vCollapse.DoOverTime(tContainer, 0, vCollapse.Speed);
            break;
        case "Collapsed":
            vCollapse[tContainer].State = "Changing";
            vCollapse.DoOverTime(tContainer, vCollapse[tContainer].Height, vCollapse.Speed);
            break;
    }
}
