﻿function ToggleSectionDisplay(divName, iconName) {
    var e = document.getElementById(divName);
    var i = document.getElementById(iconName);

    if (!e.style.display || e.style.display == 'none') {
        createCookie(divName, 'expanded', 10);

        e.style.display = 'block'; e.style.visibility = 'visible';
        i.src = 'Static/Collapse.gif';
        i.alt = 'Hide';
    }
    else {
        createCookie(divName, 'collapsed', 10);

        e.style.display = 'none'; e.style.visibility = 'hidden';
        i.src = 'Static/Expand.gif';
        i.alt = 'Show';
    }
}

function SelectMonth(oDate) {
    // Locate previously selected item
    var x = document.getElementById(fSelectedMonth);
    x.className = '';

    // Locate new selected item
    var x = document.getElementById('id' + oDate);
    x.className = 'fmDateSelected';

    // Store previously selected month
    fSelectedMonth = 'id' + oDate;
}

function SelectYear(oDate) {
    // Locate previously selected item
    var x = document.getElementById(fSelectedYear);
    x.className = '';

    // Locate new selected item
    var x = document.getElementById('id' + oDate);
    x.className = 'fmDateSelected';

    // Store previously selected month
    fSelectedYear = 'id' + oDate;
}

function SelectAllActivities(filterCategory, filterAll, toggleSection) {
    // Filter category panel
    var x = document.getElementById(filterCategory);

    // Grab all image elements and hide them
    var oImages = x.getElementsByTagName('IMG');

    for (var i = 0; i < oImages.length; i++) {
        // Ignore section toggle icons
        if (oImages[i].id != toggleSection) {
            oImages[i].style.display = 'none';
            oImages[i].style.visibility = 'hidden';
        }
    }

    // Locate all option
    var x = document.getElementById(filterAll);

    // Now just show the select 'all' option
    x.style.display = 'block';
    x.style.visibility = 'visible';
}

function SetAllState(filterCategory, filterAll, toggleSection) {
    // Filter category panel
    var x = document.getElementById(filterCategory);

    // Grab all image elements and hide them
    var oImages = x.getElementsByTagName('IMG');
    var bSelectedItem = false;

    for (var i = 0; i < oImages.length; i++) {
        if (oImages[i].id != filterAll && oImages[i].id != toggleSection) {
            if (oImages[i].style.visibility == 'visible') {
                bSelectedItem = true;
                break;
            }
        }
    }

    // Locate all option
    var x = document.getElementById(filterAll);

    // If a single item (excluding 'all' - fiAct0) is selected
    if (bSelectedItem) {
        // Hide the select 'all' option
        x.style.display = 'none';
        x.style.visibility = 'hidden';
    }
    else {
        // Now just show the select 'all' option
        x.style.display = 'block';
        x.style.visibility = 'visible';
    }

}


function ToggleDisplay(elementName) {

    var e = document.getElementById(elementName);

    if (!e.style.display || e.style.display == 'none') {
        e.style.display = 'block'; e.style.visibility = 'visible';
    }
    else {
        e.style.display = 'none'; e.style.visibility = 'hidden';
    }
}

function ToggleTimes() {
    var x = document.getElementById('chkTime');
    var oTimes = document.getElementsByName('planTime');

    if (x.checked == true) {
        for (var i = 0; i < oTimes.length; i++) {
            oTimes[i].className = 'visTime';
        }
    }
    else {
        for (var i = 0; i < oTimes.length; i++) {
            oTimes[i].className = 'invisTime';
        }

    }
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";

    document.cookie = name + "=" + value + expires + "; path=/";

}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

function SetVisibility(divName, mode) {
    var e = document.getElementById(divName);

    if (e) {
        if (mode == 'expanded') {
            e.style.display = 'block'; e.style.visibility = 'visible';
        }
        else {
            e.style.display = 'none'; e.style.visibility = 'hidden';
        }
    }
}


function OpenWebsite(lEventID) {
    dataReadySendToServer(lEventID, "Util/OpenWebsite.aspx");
}

//This fire when all components are validate...
function dataReadySendToServer(dataFields, callBackURL) {

    var xmlObj; //object been use for sending data to the server

    if (window.XMLHttpRequest) {//will exist in navigator, firefox , safari
        xmlObj = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {//IE 
        xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (xmlObj) {
        xmlObj.open("POST", callBackURL, true);
        xmlObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlObj.setRequestHeader("EventID", dataFields);   // EventID is an abitrary header...Can put it under any name, as long its name match to the header at the server side...
        xmlObj.send(dataFields);
        xmlObj.onreadystatechange = function readyCallback() {
            if (xmlObj.readyState == 4 && xmlObj.status == 200) {//finish sending=4.....success request=200...

                if (xmlObj.responseText == "success") {

                }
                delete xmlObj;
            }
        }
    }
}

function oseSaveYearUI() {
    var evDates = document.getElementById('EventDates');

    // Hide date popup
    evDates.style.display = 'none';
    evDates.style.visibility = 'hidden';

    var x = document.getElementById('idFilterDate');
    x.innerHTML = fSelectedMonth.substring(2) + ', ' + fSelectedYear.substring(2) + ' Onwards';
}

// Locate all month elements, unselect them all; select choosen element
// Unselect last month element, select new one
function oseToggleStyleUI(styleID) {

    // If all choosen, turn off all other activities
    if (styleID == 0) {
        SelectAllActivities('fmSubTypeFilter', 'fiStyle0', 'iStyle');
    }
    else {
        ToggleDisplay('fiStyle' + styleID);

        // If all items unselected, re-select 'all', otherwise all should be unselected
        SetAllState('fmSubTypeFilter', 'fiStyle0', 'iStyle');
    }
}

function oseToggleActUI(activityID) {

    // If all choosen, turn off all other activities
    if (activityID == 0) {
        SelectAllActivities('fmActFilter', 'fiAct0', 'iActivity');
    }
    else {
        ToggleDisplay('fiAct' + activityID);

        // If all items unselected, re-select 'all', otherwise all should be unselected
        SetAllState('fmActFilter', 'fiAct0', 'iActivity');
    }
}

function oseToggleEventUI(eventID) {

    // If all choosen, turn off all other activities
    if (eventID == 0) {
        SelectAllActivities('fmEventFilter', 'fiEvent0', 'iEvent');
    }
    else {
        ToggleDisplay('fiEvent' + eventID);

        // If all items unselected, re-select 'all', otherwise all should be unselected
        SetAllState('fmEventFilter', 'fiEvent0', 'iEvent');
    }
}