var SIDEBUTTON_COLOR_NORMAL    = "";
var SIDEBUTTON_COLOR_MOUSEDOWN = "#5A5A5A";
var SIDEBUTTON_COLOR_MOUSEOVER = "#007253";
var SIDEBUTTON_COLOR_MOUSEUP   = SIDEBUTTON_COLOR_MOUSEOVER;
var SIDEBUTTON_COLOR_MOUSEOUT  = SIDEBUTTON_COLOR_NORMAL;

var SETTINGSMENUITEM_COLOR_NORMAL    = "#5A5A5A";
var SETTINGSMENUITEM_COLOR_MOUSEDOWN = "#1A1A1A";
var SETTINGSMENUITEM_COLOR_MOUSEOVER = "#8A8A8A";
var SETTINGSMENUITEM_COLOR_MOUSEUP   = SIDEBUTTON_COLOR_MOUSEOVER;
var SETTINGSMENUITEM_COLOR_MOUSEOUT  = SIDEBUTTON_COLOR_NORMAL;
var SETTINGSMENUITEM_COLOR_SELECTED  = "#007253";

var OBJTYPE_SIDEBUTTON       = "sideButton";
var OBJTYPE_SETTINGSMENUITEM = "settingsmenuitem";
var OBJTYPE_IMGGRID = "imgGridImage";
var OBJTYPE_ADDICON = "addicon";

var ACCEPTED_FILETYPES = new Array("JPG", "JPEG", "GIF");

var URLMATRIX = [];
URLMATRIX ["logo"]                     = "welcome.html";
URLMATRIX ["SIDEBUTTON_OTHERLINKS"]    = "otherlinks.html";
URLMATRIX ["SIDEBUTTON_PHOTOGALLERY"]  = "scripts/cgi/imagemanager.pl?cmd=getphotosection";
URLMATRIX ["SIDEBUTTON_LOGINSETTINGS"] = "loginsettings.html";
URLMATRIX ["SIDEBUTTON_NEWSLETTERS"]   = "newsletters.html";
URLMATRIX ["SIDEBUTTON_PAC"]           = "pac.html";
URLMATRIX ["SIDEBUTTON_ABOUT"]         = "about.html";
URLMATRIX ["SIDEBUTTON_STAFFLOGIN"]    = "stafflogin.html";
URLMATRIX ["STAFFLOGIN_EDITSETTINGS"]  = "loginsettings.html";
URLMATRIX ["SIDEBUTTON_LIBRARY"]       = "library.html";
URLMATRIX ["SIDEBUTTON_CODEOFCONDUCT"] = "codeofconduct.html";
URLMATRIX ["SIDEBUTTON_CLASSPAGES"]    = "classpages.html";


var TABCONTENT = [];
TABCONTENT[0] = "TABCONTENT_WELCOME";
TABCONTENT[1] = "TABCONTENT_PHOTOS";
TABCONTENT[2] = "TABCONTENT_NEWSLETTERS";
TABCONTENT[3] = "TABCONTENT_PAC";
TABCONTENT[4] = "TABCONTENT_PASSWORD";
TABCONTENT[5] = "TABCONTENT_ABOUT";

var TABS = [];
TABS[0] = "TAB_WELCOME";
TABS[1] = "TAB_PHOTOS";
TABS[2] = "TAB_NEWSLETTERS";
TABS[3] = "TAB_PAC";
TABS[4] = "TAB_PASSWORD";
TABS[5] = "TAB_ABOUT";

// This is to create an associative array linking the tab ids to the content ids
var TABMATRIX = [];
TABMATRIX[TABS[0]] = TABCONTENT[0];
TABMATRIX[TABS[1]] = TABCONTENT[1];
TABMATRIX[TABS[2]] = TABCONTENT[2];
TABMATRIX[TABS[3]] = TABCONTENT[3];
TABMATRIX[TABS[4]] = TABCONTENT[4];
TABMATRIX[TABS[5]] = TABCONTENT[5];

var MAX_IMGWIDTH = 750;

var g_selectedTab;

function mouseOver(obj) {
    switch (obj.className) {
        case OBJTYPE_SIDEBUTTON:
            obj.style.backgroundColor = SIDEBUTTON_COLOR_MOUSEOVER;
            break;

        case OBJTYPE_SETTINGSMENUITEM:
            if (obj != g_selectedTab) {
                obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_MOUSEOVER;
            }
            break;

        case OBJTYPE_ADDICON:
            obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_MOUSEOVER;
    }
}
function mouseOut (obj) {
    switch (obj.className) {
        case OBJTYPE_SIDEBUTTON:
            obj.style.backgroundColor=SIDEBUTTON_COLOR_MOUSEOUT;
            break;

        case OBJTYPE_SETTINGSMENUITEM :
            if (obj != g_selectedTab) {
                obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_MOUSEOUT;
            }
            break;
            
        case OBJTYPE_ADDICON:
            obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_MOUSEOUT;
    }
}
function mouseDown (obj) {
    switch (obj.className) {
        case OBJTYPE_SIDEBUTTON:
            obj.style.backgroundColor = SIDEBUTTON_COLOR_MOUSEDOWN;
            break;

        case OBJTYPE_SETTINGSMENUITEM || OBJTYPE_ADDICON:
            if (obj != g_selectedTab) {
                obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_MOUSEDOWN;
            }
            break;

        case OBJTYPE_ADDICON:
            obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_MOUSEDOWN;
    }
}
function mouseUp (obj) {
    switch (obj.className) {
        case OBJTYPE_SIDEBUTTON:
            obj.style.backgroundColor = SIDEBUTTON_COLOR_MOUSEUP;
            break;

        case OBJTYPE_SETTINGSMENUITEM || OBJTYPE_ADDICON:
            if (obj != g_selectedTab) {
                obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_MOUSEUP;
            }
    }
}

function clickEvent (obj, extraData) {
    switch (obj.className) {
        case OBJTYPE_SETTINGSMENUITEM:
            settingMenuItemClick(obj);
            break;

        case OBJTYPE_IMGGRID:
            getEnlargedImage(obj);
            break;
        default:
            var id = obj.getAttribute("id");
            if ( (id.indexOf("gotoPhotoPage") != -1) || (id == "prevImgPage") || (id == "nextImgPage") ) {
                var toPage = extraData;
                getImagePage(toPage);
            } else {
                switchScreen(obj);
            }
            
            break;
    }
}

var g_imgCaption;
function enlargementCallback (httpResponseText) {
    loadXML (httpResponseText);
    var imgSrc     = getXMLTagContent ("src");
    g_imgCaption = getXMLTagContent ("caption");
    var imgDispDiv = document.getElementById ("imgDispDiv");

    var imgSectionEl = document.getElementById("imgSection");
    imgSectionEl.removeChild(imgDispDiv);

    document.getElementById ("imgLoading").style.display = "block";

    loadImage ("images/photos/" + imgSrc, loadImageCallback);
}

function loadImageCallback(img) {

    var newImgDispDiv = document.createElement("div");
    newImgDispDiv.setAttribute("id", "imgDispDiv");

    var imgDispDivContents = '<a href="' + img.src + '" target="NewWindow" id="imgDispLink">';
    imgDispDivContents    += '    <img id="imgDispImage" src="' + img.src + '" alt="' + g_imgCaption + ' name="imgDispImage" />'
    imgDispDivContents    += '</a>'
    imgDispDivContents    += '<p id="imgDispCaption">' + g_imgCaption + '</p>';

    newImgDispDiv.innerHTML = imgDispDivContents;
    document.getElementById("imgSection").appendChild(newImgDispDiv);

    document.getElementById ("imgLoading").style.display = "none";
}


function getEnlargedImage(obj) {
    var id = obj.getAttribute("id");
    var num = id.split('_')[1];
    params = "cmd=getenlargement&id=" + num;
    getServerResponse_POST ("scripts/cgi/imagemanager.pl", params, enlargementCallback);
}


function getImgPageCallback (httpResponseText) {
    var browseDiv = document.getElementById("imgBrowseDiv");
    browseDiv.innerHTML = httpResponseText;
}

function getImagePage (pageNum) {
    params = "cmd=getpage&pageid=" + pageNum;
    getServerResponse_POST ("scripts/cgi/imagemanager.pl", params, getImgPageCallback);
}

function switchScreen(obj) {
    var id = obj.getAttribute("id");
    var url = URLMATRIX[id];
    if (url != undefined) {
        dw_loadExternal (url);
    }
}

function settingMenuItemClick(obj) {
    if (obj == g_selectedTab)
        return;
    
    // hide all tab content, and revert all colors.
    for (var i=0; i<TABS.length; i++) {
        var curTabContentId = TABCONTENT[i];
        var curTabContentElem = document.getElementById(curTabContentId);
        curTabContentElem.style.display = "none";

        var curTabId = TABS[i];
        var curTabElem = document.getElementById(curTabId);
        curTabElem.style.backgroundColor = SETTINGSMENUITEM_COLOR_NORMAL;
        curTabElem.style.cursor = "pointer";
        curTabElem.style.paddingTop = "4px";
    }
    
    var newTabId = obj.getAttribute("id");
    var newTabContentId = TABMATRIX[newTabId];
    document.getElementById(newTabContentId).style.display = "block";
    obj.style.backgroundColor = SETTINGSMENUITEM_COLOR_SELECTED;
    obj.style.cursor = "default";
    obj.style.paddingTop = "10px";
    g_selectedTab = obj;
}

function passCallback (httpResponseText) {
    var invalidLabel = document.getElementById('invalidPassword');
    var tooManyLabel = document.getElementById('tooManyPassword');
    
    tooManyLabel.style.visibility = "hidden";
    invalidLabel.style.visibility = "hidden";

    if (httpResponseText == "FALSE") {
        invalidLabel.style.visibility = "visible";

    } else if (httpResponseText == "TOOMANY") {
        tooManyLabel.style.visibility = "visible";

    } else {

        var settingsFormDiv = document.getElementById('settingsFormDiv')
        settingsFormDiv.innerHTML = httpResponseText;
        
        document.getElementById('loginDiv').style.display = "none";
        g_selectedTab = document.getElementById("TAB_WELCOME");
        g_selectedTab.style.backgroundColor = SETTINGSMENUITEM_COLOR_SELECTED;
        g_selectedTab.style.cursor = "default";
        g_selectedTab.style.paddingTop = "10px";
    }
}

function checkPassword() {
    var url = "scripts/cgi/verifypass.pl";
    var params = "product=" + adjustFormValue(document.getElementById('username').value);
    params +=   "&serial=" + adjustFormValue(document.getElementById('password').value);
    getServerResponse_POST (url, params, passCallback);
}

function changePass() {
    var invalidLabel = document.getElementById('invalidPassword');
    invalidLabel.style.visibility = "hidden";
}


function checkUploadedFiletypes(inputId) {
    if (checkExtension(inputId, ACCEPTED_FILETYPES)) {
        return true;
    } else {
        document.getElementById("filetypeerror").style.visibility = "visible";
        document.getElementById("filetypeerrorhead").style.visibility = "visible";

        var innerCode ="The file selected was not a valid web image. <br />Please choose a file with one of the following formats:<br />";

        innerCode += "(";
        for (var i=0; i<ACCEPTED_FILETYPES.length; i++) {
            var sep = (i == 0) ? "" : ", "

            innerCode += sep + ACCEPTED_FILETYPES[i];
        }
        innerCode += ")";

        var msgElem = document.getElementById("filetypeerrormsg");
        msgElem.innerHTML = innerCode;
        
        return false;
    }
    
}


function submitenter(e) {
    var keycode;
    if (window.event) {
        keycode = window.event.keyCode;
    } else if (e) {
        keycode = e.which;
    }

    if (keycode == 13) {
        checkPassword();
    }
}



function deleteButton_click(rowId, tableId, oldFileCountId, deletedId, value) {

	var rowEl  = document.getElementById(rowId);
	var tableEl = document.getElementById(tableId);
	tableEl.removeChild(rowEl);

	// decrement the number of old files
	var oldFileCountEl = document.getElementById(oldFileCountId);
	var oldFileCount = parseInt(oldFileCountEl.getAttribute("value"));
	oldFileCountEl.setAttribute("value", oldFileCount-1);
	  
	var delEl = document.getElementById(deletedId);
	var oldDelList = delEl.getAttribute("value");
	if (oldDelList == "") {
		listSep = "";
	} else {
		listSep = ", ";
	}
	
	delEl.setAttribute("value", oldDelList + listSep + value);
}


function addButton_click (newFileCountId, tableId, titleSize) {
	var newFileCountEl = document.getElementById (newFileCountId);
	var newFileCount = parseInt (newFileCountEl.getAttribute("value")) + 1;
	var newRowId = "NEWSLETTERS_TableRow_" + newFileCount;
	var tableEl  = document.getElementById (tableId);

	var newRowEl = tableEl.insertRow(newFileCount-1);
	newRowEl.setAttribute ("id", newRowId);
	var captionInputName = "NewCaption_" + newFileCount;
	var fileInputName = "NewFile_" + newFileCount;
	newRowEl.insertCell(0).innerHTML = " <input name='" + captionInputName + "' type='text' size='" + titleSize + "' /> ";
	newRowEl.insertCell(1).innerHTML = " <input name='" + fileInputName    + "' type='file' /> ";

	newFileCountEl.setAttribute ("value", newFileCount);
}