// JavaScript Document

var enablepersist = "on" //Enable saving state of content structure using session cookies? (on/off)
var collapseprevious = "no" //Collapse previously open content when opening present? (yes/no)

var contractsymbol = '<img src="/images/layout_new/widget-arrow-open.gif">' //HTML for contract symbol. For image, use: <img src="whatever.gif">
var expandsymbol   = '<img src="/images/layout_new/widget-arrow-closed.gif">' //HTML for expand symbol.

var siteCookieId = "newsroom";

var componentStates = new Array();

if (document.getElementById) {
    document.write('<style type="text/css">')
    document.write('.switchcontent{display:none;}')
    document.write('</style>')
}

// Gets the first element with the specified class name.
// Params:
//   rootObj - the root object for the search
//   className - the class name to search for
//   tagName - the type of tag to match against (optional)
function getElementByClass(rootObj, className, tagName) {
    var elements = rootObj.getElementsByTagName(tagName ? tagName : "*");

    for (var i = 0; i < elements.length; i++) {
        if (elements[i].className == className) {
            return elements[i];
        }
    }

    return null;
}

// Object that stores and manipulates state for a particular expand/collapse component
function ComponentState(inputString) {
    if (inputString) {
        var tokens = inputString.split("~");
        if (tokens.length > 1) {
            this.id = tokens[0];
            this.isExpanded = tokens[1] == "true";
        }
    } else {
        this.id = "";
        this.isExpanded = false;
    }

    // Serialize object state to string
    function serialize() {
        var tokens = new Array(this.id, this.isExpanded);
        return tokens.join("~");
    }
    this.serialize = serialize;

    // Update the argument component DIV according to this object's
    // current state
    function updateComponent(component) {
        var content = getElementByClass(component, 'switchcontent', 'div');
        var headerImage = getElementByClass(component, 'showstate', 'span');
        
        if (this.isExpanded) {
            content.style.display = "block";
            headerImage.innerHTML = contractsymbol;
                }
        else {
           content.style.display = "none";
           headerImage.innerHTML = expandsymbol;
         }
    }
    this.updateComponent = updateComponent;

    // Update this object's current state based on the
    // argument component DIV
    function updateState(component) {
        this.id = component.id;

        var content = getElementByClass(component, 'switchcontent', 'div');
        this.isExpanded = content.style.display == "block";
    }
    this.updateState = updateState;
}

// Serialize component states and persist in the site cookie
function saveComponentStates() {
    var serializedStates = new Array();

    for (var i = 0; i < componentStates.length; i++) {
        serializedStates.push(componentStates[i].serialize());
    }

    document.cookie = siteCookieId + "=" + serializedStates.join("|");
}

// Load persisted state information from the site cookie.
function loadComponentStates() {
    var search = siteCookieId + "=";

    var beginIndex = document.cookie.indexOf(search);
    if (beginIndex >= 0) {
        var endIndex = document.cookie.indexOf(";", beginIndex);
        if (endIndex < 0)
            endIndex = document.cookie.length;

        var cookieValue = unescape(document.cookie.substring(beginIndex + search.length, endIndex));
        var tokens = cookieValue.split("|");
        for (var i = 0; i < tokens.length; i++) {
            componentStates.push(new ComponentState(tokens[i]));
        }
    }
}


// Update component with persisted state.
// If no persisted state exists, a new state object is initialized based on
// the default value and added to the list.
function initializeState(id, defaultState) {
    var component = document.getElementById(id);
    var isLoaded = false;

    for (var i = 0; i < componentStates.length; i++) {
        if (id == componentStates[i].id) {
            isLoaded = true;
            componentStates[i].updateComponent(component);
            break;
        }
    }

    if (!isLoaded) {
        var newState = new ComponentState();
        newState.id = id;
        newState.isExpanded = (defaultState == true);
        newState.updateComponent(component);
        componentStates.push(newState);
    }
}

// Toggle state for the component
function toggleState(id) {
    var component = document.getElementById(id);

    for (var i = 0; i < componentStates.length; i++) {
        var state = componentStates[i];
        if (id == state.id) {
            state.isExpanded = !state.isExpanded;
            state.updateComponent(component);
            break;
        }
    }
}

function videoControl(n) {
    if (n == 1) {
        thisMovie("flvPlayer").playVideo();
    } else {
        thisMovie("flvPlayer").stopVideo();
    }

}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}

if (enablepersist == "on") {
    loadComponentStates();
    if (window.addEventListener)
        window.addEventListener("unload", saveComponentStates, false);
    else if (window.attachEvent)
        window.attachEvent("onunload", saveComponentStates);
    else if (document.getElementById)
        window.onunload = saveComponentStates;
}

