/* scripts.js */

//// global constants
// top level menus
var SITENAV_MENUS = ['homemenu', 'meetmenu', 'servmenu', 'solmenu',
                     'pressmenu', 'contactmenu'];
// div ids for submenus
var SUBNAV_MENUS =  ['nonav', 'meetnav', 'servnav', 'solnav',
                     'newsnav', 'nonav'];
// light up color
var LIGHTUP_MENU_COLOR = '#8bc064';



/// IMAGE BASED SITE NAVIGATION
function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

var preloadFlag = false;
function preloadImages() {
	if (document.images) {
		index_02_index_03_down = newImage("images/index_02-index_03_down.jpg");
		index_03_index_04_down = newImage("images/index_03-index_04_down.jpg");
		index_03_down = newImage("images/index_03-down.jpg");
		index_03_over = newImage("images/index_03-over.jpg");
		index_04_index_03_down = newImage("images/index_04-index_03_down.jpg");
		index_04_down = newImage("images/index_04-down.jpg");
		index_04_index_03_over = newImage("images/index_04-index_03_over.jpg");
		index_04_over = newImage("images/index_04-over.jpg");
		index_05_over = newImage("images/index_05-over.jpg");
		index_05_index_04_down = newImage("images/index_05-index_04_down.jpg");
		index_05_down = newImage("images/index_05-down.jpg");
		index_05_index_04_over = newImage("images/index_05-index_04_over.jpg");
		index_06_index_05_over = newImage("images/index_06-index_05_over.jpg");
		index_06_over = newImage("images/index_06-over.jpg");
		index_06_index_05_down = newImage("images/index_06-index_05_down.jpg");
		index_06_down = newImage("images/index_06-down.jpg");
		index_07_index_06_over = newImage("images/index_07-index_06_over.jpg");
		index_07_over = newImage("images/index_07-over.jpg");
		index_07_down = newImage("images/index_07-down.jpg");
		index_07_index_06_down = newImage("images/index_07-index_06_down.jpg");
		index_08_index_07_over = newImage("images/index_08-index_07_over.jpg");
		index_08_index_07_down = newImage("images/index_08-index_07_down.jpg");
		index_11_index_03_over = newImage("images/index_11-index_03_over.jpg");
		index_11_index_04_over = newImage("images/index_11-index_04_over.jpg");
		index_12_index_04_over = newImage("images/index_12-index_04_over.jpg");
		index_13_index_05_over = newImage("images/index_13-index_05_over.jpg");
		index_13_index_04_over = newImage("images/index_13-index_04_over.jpg");
		index_14_index_05_over = newImage("images/index_14-index_05_over.jpg");
		index_14_index_06_over = newImage("images/index_14-index_06_over.jpg");
		index_14_index_04_over = newImage("images/index_14-index_04_over.jpg");
		preloadFlag = true;
	}
}

/// end image based sitenav

// get the style object of the specified element
function getStyleObject(obj) {
    var styleObj;
    if (typeof obj == "string") {
        if (document.getElementById) {
            styleObj = document.getElementById(obj).style;
        }
        else if (document.all) {
            styleObj = document.all[obj].style;
        }
    }
    else if (obj.style) {
        styleObj = obj.style;
    }
    return styleObj;
}

// return the element object for the specified Id passed as a string
function getElementObject(eltId) {

    var eltObj;

    // If the eltId is a string, look it up using either W3C or IE4+ DOMs.
    // Otherwise return the empty eltObj
    if (typeof eltId == "string") {

        // if W3C DOM, get the element object
        if (document.getElementById) {
            eltObj = document.getElementById(eltId);
        }

        // otherwise try IE4 DOM
        else if (document.all) {
            eltObj = document.all[obj];
        }

    }

    // return object found (or not found)
    return eltObj;
}


// initialize the navigation menus, we need to determine their centers
// for subnav placement, as well as which menu should be "lit" for the
// current page
function initNavMenus(sidebarOffset, lightMenu) {

    // iterate through sitenav menu to determine their centers
    for (i = 0; i < SITENAV_MENUS.length; i++) {

        // if this sitenav menu has no submenu, skip to the next
        if (SUBNAV_MENUS[i] == 'nonav') { continue; }

        // grab the element objects specified by their Ids
        siteNavObj = getElementObject(SITENAV_MENUS[i]);
        subNavObj = getElementObject(SUBNAV_MENUS[i]);

        // calculate the center of the current siteNavObj
        center = (siteNavObj.offsetWidth / 2) + siteNavObj.offsetLeft;

        // find the width of the corresponding SUBNAV menu and calculate
        // it's left offset.  We have to set it's display.style to "block"
        // so it reports a width, we then hide it again real quick.
        subNavObj.style.display = 'block';
        subNavObj.style.left =
            parseInt((center - (subNavObj.offsetWidth / 2)) - sidebarOffset)
            + 'px';
        subNavObj.style.display = 'none';
    }

    // light up the specified menu
    getElementObject(lightMenu).style.color = LIGHTUP_MENU_COLOR;
}

// show a subnav menu
function showSubNav(subNavId) {

    // iterate through the subnavs, showing the one selected and hiding
    // the others
    for (i = 0; i < SUBNAV_MENUS.length; i++) {

        // get the subNav element object
        subNavObj = getElementObject(SUBNAV_MENUS[i]);

        // if the current element matches the target, display the menu,
        // otherwise hide it
        if (SUBNAV_MENUS[i] == subNavId) {
            subNavObj.style.display = 'block';
        }
        else {
            subNavObj.style.display = 'none';
        }
    }
}

// hide a subnav when mousing out of it
function hideSubNav(obj) {

    /*
    // get the event and where it went
    var relTarget;
    var e = obj.onmouseout;
    alert(e);
    if (!e) e = window.event;
    if (e.relatedTarget) relTarget = e.relatedTarget;
    else if (e.toElement) relTarget = e.toElement;

    subNavContainer = getElementObject('subnav');
    if (relTarget == subNavContainer) obj.style.display = 'none';
    */
}
