
/* DOM HELPER (v.20090311) 
----------------------------------------------------*/
var DOM = {
    Get: function(elm) { if (typeof elm === 'string') { return document.getElementById(elm) } else { return elm } },
    Create: function(tag, cssClass, id) { var tmp = document.createElement(tag); if (cssClass) { tmp.className = cssClass }; if (id) { tmp.id = id }; return tmp },
    Remove: function(elm) { var elm = this.Get(elm); elm.parentNode.removeChild(elm) },
    Add: function(elm, target) { var elm = this.Get(elm); var target = this.Get(target); if (elm && target) { target.appendChild(elm) } },
    AddFirst: function(elm, target) { var elm = this.Get(elm); var target = this.Get(target); if (elm && target) { target.insertBefore(elm, DOM.ChildNodes(target)[0]) } },
    AddAfter: function(elm, target) { var parent = target.parentNode; if (parent) { if (DOM.LastChild(parent) == target) { parent.appendChild(elm) } else { parent.insertBefore(elm, DOM.NextSibling(target)) } } },
    AddBefore: function(elm, target) { var parent = target.parentNode; if (parent) { parent.insertBefore(elm, target) } },
    SetAttribute: function(elm, type, value) { if (DOM.GetAttribute(elm, type)) { elm.removeAttribute(type) }; var t = document.createAttribute(type); t.nodeValue = value; elm.setAttributeNode(t) },
    GetAttribute: function(elm, attrib) { for (var q = 0, qn = elm.attributes.length; q < qn; q++) { if (elm.attributes[q].nodeName.toLowerCase() == attrib.toLowerCase()) { return elm.attributes[q].nodeValue } } },
    PreviousSibling: function(node) { if (node.previousSibling) { node = node.previousSibling; while (node != null && node.nodeType != 1) { node = node.previousSibling }; return node }; return null },
    NextSibling: function(node) { if (node.nextSibling) { node = node.nextSibling; while (node != null && node.nodeType != 1) { node = node.nextSibling }; return node }; return null },
    FirstChild: function(node) { if (node) { var children = DOM.ChildNodes(node); if (children.length > 0) { return children[0] }; return null }; return null },
    LastChild: function(node) { if (node) { var children = DOM.ChildNodes(node); if (children.length > 0) { return children[children.length - 1] }; return null }; return null },
    ChildNodes: function(node) { if (node) { var children = node.childNodes, tmp = []; if (children.length > 0) { for (var ii = 0, nn = children.length; ii < nn; ii++) { var node = children[ii]; if (node.nodeType == 1) tmp.push(node) }; return tmp }; return null }; return null },
    GetByClassName: function(parent, tag, classname) { var arrReturnElements = new Array(); if (parent) { var d = (tag == '*' && parent.all) ? parent.all : parent.getElementsByTagName(tag); classname = classname.replace(/\-/g, '\\-'); var e = new RegExp('(^|\\s)' + classname + '(\\s|$)'), oElement = null; for (var i = 0, n = d.length; i < n; i++) { oElement = d[i]; if (e.test(oElement.className)) arrReturnElements.push(oElement) } } return (arrReturnElements) },
    GetByAttribute: function(parent, tag, attrib, value) { var f = new Array(); if (parent) { var e = (tag == '*' && parent.all) ? parent.all : parent.getElementsByTagName(tag); var g = (typeof value != 'undefined') ? new RegExp("(^|\\s)" + value + "(\\s|$)") : null, h, j; for (var i = 0, n = e.length; i < n; i++) { h = e[i]; j = h.getAttribute && DOM.GetAttribute(h, attrib); if (typeof j == 'string' && j.length > 0) { if (typeof value == 'undefined' || (g && g.test(j))) { f.push(h) } } } } return f }
};


/* SET PATH TO SITE LAYOUT GRAPHICS
----------------------------------------------------*/
var siteLayoutGraphicsPath = "/Templates/Media/LayoutGraphics/";


/* MISC
----------------------------------------------------*/
var arrObjHolder = new Array();
var globalMapVar = [];

var arrSlideHolder = new Array();
var currSlide = 0;

var slideTimer = new Array();


/* EVENTHANDLER FOR DOMONLOAD
//## ADD FUNCTIONS THAT SHOULD RUN ON DOM LOAD
----------------------------------------------------*/
var onPageLoad = function () {
    //##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##


    /*
    Hide fieldsets by default for javascript clients, non javascript clients will show these by default
    */
    if (!document.getElementById) return false;
    var l, u
    l = $('label-interact');
    u = $('user-interact');
    if (l != null) l.style.display = 'none';
    if (u != null) u.style.display = 'none';

    pullquote.init();
    loadTooltips();

    partnerLogos();
    googleMapsFilter();
    gMapsContact();
    restyleTable();
    foldingMenu();
    dfkMainMenu();
    dfkAdjustStartPagePushHeights();
    flasFallbackPictureSlide();
    DisableSelect();
    newsRoomExpandMedia();
    toggleBookmarks();

    addEvent(window, 'load', function () { LnkTarget.init("class", "new-win"); });
    addEvent(window, 'unload', EventCache.flush);
    InitializePlatformSpecificFunctions();

    //##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##
};



//window.onscroll=updateShadebox;

/* EVENTHANDLER FOR ADDING EVENTS TO OBJECTS
----------------------------------------------------*/
var addEvent = function(obj, type, fn) { if (obj.addEventListener) { obj.addEventListener(type, fn, false); EventCache.add(obj, type, fn) } else if (obj.attachEvent) { obj['e' + type + fn] = fn; obj[type + fn] = function() { obj['e' + type + fn](window.event) }; obj.attachEvent('on' + type, obj[type + fn]); EventCache.add(obj, type, fn); } else { obj['on' + type] = obj['e' + type + fn] } }
var EventCache = function() { var listEvents = []; return { listEvents: listEvents, add: function(node, sEventName, fHandler) { listEvents.push(arguments) }, flush: function() { var i, item; for (i = listEvents.length - 1; i >= 0; i = i - 1) { item = listEvents[i]; if (item[0].removeEventListener) { item[0].removeEventListener(item[1], item[2], item[3]) } if (item[1].substring(0, 2) != 'on') { item[1] = 'on' + item[1] }; if (item[0].detachEvent) { item[0].detachEvent(item[1], item[2]) }; item[0][item[1]] = null } } } } ();
var removeEvent = function(obj, type, fn) { if (obj.removeEventListener) { obj.removeEventListener(type, fn, false) } else if (obj.detachEvent) { obj.detachEvent('on' + type, obj[type + fn]); obj[type + fn] = null; obj['e' + type + fn] = null } }
//addEvent(window,'unload',EventCache.flush);

function InitializePlatformSpecificFunctions() { }
/* TOGGLE DIV VISIBILITY
----------------------------------------------------*/
// For expanding / collapsing form elements such as label editing, comment, send etc
function toggle(elem) {

    // check that the browser supports the methods used
    if (!document.getElementById) return false;

    var e, eid, comment, send, subscribe, btn_comment, btn_send, btn_subscribe

    eid = elem.id;
    comment = $('comment');
    send = $('send');
    subscribe = $('subscribe');
    btn_comment = $('btn-comment');
    btn_send = $('btn-send');
    btn_subscribe = $('btn-subscribe');


    // determine which fieldset and content to show
    switch (eid) {
        // show fieldset for labels 
        case "label":
            e = $('label-interact');
            break;

        // show fieldset for comments, send and subscribe  
        default:
            e = $('user-interact');

            //toggle visibility for fieldset
            e.style.display = 'block';

            // decide what to show out of comment, send or subscribe box, and toggle expand/collapse image
            switch (eid) {
                case "btn-comment":
                    if (comment.style.display != 'block') {
                        comment.style.display = 'block';
                        send.style.display = 'none';
                        btn_comment.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-collapse.gif)';
                        btn_send.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';

                        // subscribe will not always be visible, check if subscribe area exists or not
                        if (subscribe != null) {
                            subscribe.style.display = 'none';
                            btn_subscribe.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        }
                    } else {
                        btn_comment.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        e.style.display = 'none';
                        comment.style.display = 'none';
                    }
                    break;

                case "btn-send":
                    if (send.style.display != 'block') {
                        send.style.display = 'block';
                        comment.style.display = 'none';
                        btn_comment.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        btn_send.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-collapse.gif)';

                        // subscribe will not always be visible, check if subscribe area exists or not
                        if (subscribe != null) {
                            subscribe.style.display = 'none';
                            btn_subscribe.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        }
                    }
                    else {
                        btn_send.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        e.style.display = 'none';
                        send.style.display = 'none';
                    }
                    break

                case "btn-subscribe":
                    if (subscribe.style.display != 'block') {
                        subscribe.style.display = 'block';
                        comment.style.display = 'none';
                        send.style.display = 'none';
                        btn_comment.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        btn_send.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        btn_subscribe.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-collapse.gif)';
                    }
                    else {
                        btn_subscribe.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
                        e.style.display = 'none';
                        subscribe.style.display = 'none';
                    }
                    break
            }
            break

    }

    // toggle visibility of fieldset for labels
    if (e.id != "user-interact" && e.style.display == 'block') {
        e.style.display = 'none';
        elem.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
        elem.style.backgroundRepeat = 'no-repeat';
    }
    else {
        if (e.id != "user-interact") {
            e.style.display = 'block';
            elem.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-collapse.gif)';
        }
    }

    // SET FOCUS TO RELATED TEXTFIELD
    switch (eid) {
        case 'label':
            if (!$('add-label')) return;
            var objTextfield = $('add-label').getElementsByTagName('input')[0];
            try {
                if (objTextfield) objTextfield.focus();
            } catch (err) { }
            break;
    }

    e = null;
    return false;
}

// close fieldset
function closebox(elem) {
    // check that the browser supports the methods used
    if (!document.getElementById || !document.createElement || !document.appendChild) return false;

    var e, btn_comment, btn_send, btn_subscribe

    e = $(elem);
    btn_comment = $('btn-comment');
    btn_send = $('btn-send');
    btn_subscribe = $('btn-subscribe');

    // close fieldset containing the close button
    e.style.display = 'none';

    // reset expand/collapse button
    if (e.id != "label-interact") {
        if (!btn_comment) return;
        btn_comment.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
        btn_send.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
        btn_subscribe.style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
    }
    else
        $('label').style.backgroundImage = 'url(' + siteLayoutGraphicsPath + 'btn-expand.gif)';
    return false;
}


// function for adding quotes in text
var pullquote = {
    init: function() {

        // check that the browser supports the methods used
        if (!document.getElementById || !document.createElement || !document.appendChild) return false;
        var oElement, oPullquote, oPullquoteP, oQuoteContent, i, j;

        // find all span elements with a class name of pullquote
        var arrElements = document.getElementsByTagName('span');
        var oRegExp = new RegExp("(^|\\s)pullquote(\\s|$)");

        for (i = 0; i < arrElements.length; i++) {

            // save the current element
            oElement = arrElements[i];
            if (oRegExp.test(oElement.className)) {
                // create the blockquote and p elements
                oPullquote = document.createElement('blockquote');
                oPullquote.className = oElement.className
                oPullquoteP = document.createElement('p');

                // insert the pullquote text
                for (j = 0; j < oElement.childNodes.length; j++) {
                    oPullquoteP.appendChild(oElement.childNodes[j].cloneNode(true));
                }

                oPullquote.appendChild(oPullquoteP);

                // insert the blockquote element before the span elements parent element
                oElement.parentNode.parentNode.insertBefore(oPullquote, oElement.parentNode);
            }
        }
    }
};

// lightbox
function lightbox(elem) {

    // check that the browser supports the methods used
    if (!document.getElementById || !document.createElement || !document.appendChild) return false;

    var e, fade, light;

    fade = $('fade');
    fade.style.display = 'none';

    light = $('light');
    light.style.display = 'none';

    if (elem.id = "lightbox-a") {
        if (fade.style.display == 'none' && light.style.display == 'none') {
            var fadeHeight = Math.max($('wrap').clientHeight, document.body.clientHeight);
            fade.style.height = fadeHeight + 'px';
            fade.style.display = 'block';
            light.style.display = 'block';

            addEvent(window, 'scroll', updateLightbox);
            addEvent(window, 'resize', updateFadebox);
        }
    }
}

var updateFadebox = function() {
    var fadeBox = $('fade');
    var fadeHeight = Math.max($('wrap').clientHeight, document.body.clientHeight);
    fadeBox.style.height = fadeHeight + 'px';
};

function updateLightbox() {
    var elmLight = $('light');
    var currScrollTop = document.documentElement.scrollTop;
    elmLight.style.top = currScrollTop + 120 + 'px';
}

// close lightbox
function closelightbox() {

    // check that the browser supports the methods used
    if (!document.getElementById || !document.createElement || !document.appendChild) return false;

    $('fade').style.display = 'none';
    if ($('light')) $('light').style.display = 'none';
    if ($('flexlight')) $('flexlight').style.display = 'none';

    removeEvent(window, 'scroll', updateFadebox);
    removeEvent(window, 'resize', updateFadebox);

}


// redirect function
function gotoURL(str) {
    location.href = str;
}


/* GET ELEMENTS BY CLASSNAME
----------------------------------------------------*/
var getElementsByClassName = function(oElm, strTagName, strClassName) {
    var arrElements = (strTagName == '*' && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for (var i = 0; i < arrElements.length; i++) {
        oElement = arrElements[i];
        if (oRegExp.test(oElement.className)) {
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements);
}


/* FUNCTIONALITY FOR NEW TOOLTIPS
----------------------------------------------------*/
var loadTooltips = function() {
    var arrTipElems = getElementsByClassName(document, "*", "tooltips");
    var intElems = arrTipElems.length;
    for (var i = 0; i < intElems; i++) {
        var TipElm = arrTipElems[i];
        if (TipElm.getAttribute('title')) {
            addEvent(TipElm, 'mouseover', DisplayTooltip);
        }
    }
}


/* DISPLAY TOOLTIP
----------------------------------------------------*/
var DisplayTooltip = function(event) {
    var elmTitle = this.getAttribute('title');
    if (!elmTitle) return;
    this.setAttribute('rel', elmTitle);
    this.setAttribute('title', '');

    if ($('tooltip-container')) {
        this.div = $('tooltip-container');
    } else {
        this.div = document.createElement('div');
        this.div.id = 'tooltip-container';
    }

    arrObjHolder['infoLyr'] = this.div;
    if (document.all) {
        x = event.clientX + document.body.scrollLeft;
        y = event.clientY + document.documentElement.scrollTop;
    } else {
        x = event.pageX;
        y = event.pageY;
    }
    if (x < 0) { x = -500; }
    if (y < 0) { y = -500; }
    this.div.style.left = (x - 30) + 'px';
    this.div.style.top = (y + 5) + 'px';
    this.div.zIndex = 1000;
    this.div.innerHTML = '<em>' + elmTitle + '</em>';
    document.getElementsByTagName('body')[0].appendChild(this.div);
    this.div.style.display = 'block';
    addEvent(this, 'mouseout', HideTooltip);
}

/* HIDE TOOLTIP
----------------------------------------------------*/
var HideTooltip = function() {
    arrObjHolder['infoLyr'].innerHTML = '';
    arrObjHolder['infoLyr'].style.display = 'none';
    this.setAttribute('title', this.getAttribute('rel'));
}


/* Open specific links in new window */
var LnkTarget = {
    init: function(att, val) {
        if (document.getElementById && document.createElement && document.appendChild) {
            var strAtt = ((typeof att == 'undefined') || (att == null)) ? 'class' : att;
            var strVal = ((typeof val == 'undefined') || (val == null)) ? 'new-win' : val;
            var arrLinks = document.getElementsByTagName('a');
            var oLink;
            var oRegExp = new RegExp("(^|\\s)" + strVal + "(\\s|$)");
            for (var i = 0; i < arrLinks.length; i++) {
                oLink = arrLinks[i];
                if ((strAtt == 'class') && (oRegExp.test(oLink.className)) || (oRegExp.test(oLink.getAttribute(strAtt)))) {
                    oLink.onclick = LnkTarget.openWin;
                }
            }
        }
    },
    openWin: function(e) {
        var event = (!e) ? window.event : e;
        if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return true;
        else {
            var oWin = window.open(this.getAttribute('href'), '_blank');
            if (oWin) {
                if (oWin.focus) oWin.focus();
                return false;
            }
            oWin = null;
            return true;
        }
    }
};

/* toggle flash on startpage */
var InitTopFlash = function() {
    var topFlash = $('newsflash');
    if (!topFlash) return;

    var rootNode = $('MCommunications');
    if (!rootNode) return;

    window.setTimeout('TopFlash.Close(266)', 5000);
}

var TopFlash = {
    Open: function(height) {
        var flash = $('newsflash'); if (!flash) return;
        var flashContent = flash.firstChild; if (!flashContent) return;

        /* IE6 fix - set flash area to display block */
        if (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) {
            Obj.Show(flash);
            TopFlash.ToogleElm;
        } else {
            slideTimer[flash] = window.setTimeout('Obj.ShowSlide("' + flash.id + '",null, "' + height + '")', 0);
            window.setTimeout(TopFlash.ToogleElm, 1250);
        }
        var flashArea = flash.getElementsByTagName('div')[0];
        if (flashArea) Obj.Show(flashArea);
    },
    Close: function(height) {
        var flash = $('newsflash'); if (!flash) return;
        var flashContent = flash.firstChild; if (!flashContent) return;

        /* IE6 fix - set flash area to display none */
        if (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) {
            Obj.Hide(flash);
            TopFlash.ToogleElm;
        } else {
            slideTimer[flash] = window.setTimeout('Obj.HideSlide("' + flash.id + '", "' + height + '")', 0);
            window.setTimeout(TopFlash.ToogleElm, 1250);
        }
        var flashArea = flash.getElementsByTagName('div')[0];
        if (flashArea) Obj.Hide(flashArea);
    },
    ToogleElm: function() {
        var contentinner = $('contentinner');
        if (!contentinner) return;

        var a = $('flashtoggler');
        if (!a) {
            var maincontent = $('maincontent');
            if (!maincontent) return;

            var flashtoggler = $('flashtoggler');
            if (flashtoggler) return;

            var p = document.createElement('p');
            var a = document.createElement('a');
            var aTxt = document.createTextNode('Show');
            a.appendChild(aTxt);
            a.setAttribute('href', '#');
            a.setAttribute('id', 'flashtoggler');
            a.className = 'open';
            a.onclick = function() { TopFlash.Open(266) };

            p.appendChild(a);
            DOM.AddBefore(p, maincontent);
        } else {
            if (a.className == 'open') {
                a.className = 'close';
                var aTxt = document.createTextNode('Hide');
                a.replaceChild(aTxt, a.firstChild);
                a.onclick = function() { TopFlash.Close(266) };
            } else {
                a.className = 'open';
                var aTxt = document.createTextNode('Show');
                a.replaceChild(aTxt, a.firstChild);
                a.onclick = function() { TopFlash.Open(266) };
            }
        }
    }
}


/* PARTNER LOGOS
----------------------------------------------------*/
var partnerLogos = function() {
    if (!$('footer')) return;
    var imgElm = $('footer').getElementsByTagName('img'); if (!imgElm) return;
    for (var i = 0, n = imgElm.length, elm = null; i < n; i++) {
        elm = imgElm[i];
        // get value of src
        var src = elm.getAttribute('src');
        // get filename
        var fileName = src.substring(src.lastIndexOf('/') + 1);
        // get the first letters of the filename
        var subFilename = fileName.substring(0, 4);
        if (subFilename != "off-") return;
        addEvent(elm, 'mouseover', partnerLogosMouseOver);
        addEvent(elm, 'mouseout', partnerLogosMouseOut);
    }
}

/* HOVER PARTNER LOGOS
----------------------------------------------------*/
var partnerLogosMouseOver = function() {
    // get value of src
    var src = this.getAttribute('src');
    // get filename
    var fileName = src.substring(src.lastIndexOf('/') + 1);
    // strip the four first letters of the filename
    var hoverFileName = fileName.substring(4);
    // set new src with the new file name
    var newSrc = src.substring(0, src.lastIndexOf('/') + 1) + hoverFileName;
    // set new value to src
    this.setAttribute('src', newSrc);
}
var partnerLogosMouseOut = function() {
    var src = this.getAttribute('src');
    var fileName = src.substring(src.lastIndexOf('/') + 1);
    var hoverFileName = 'off-' + fileName;
    var newSrc = src.substring(0, src.lastIndexOf('/') + 1) + hoverFileName;
    this.setAttribute('src', newSrc);
}

/* GOOGLE MAPS FILTER
----------------------------------------------------*/
var googleMapsFilter = function() {
    var ddList = getElementsByClassName(document, 'LI', 'ddlist');
    if (!ddList) return;
    for (var i = 0, n = ddList.length, elm = null; i < n; i++) {
        elm = ddList[i];
        var ul = elm.getElementsByTagName('UL')[0];
        var lia = ul.getElementsByTagName('A');
        for (var j = 0, m = lia.length, elmUL = null; j < m; j++) {
            elmUL = lia[j];
            addEvent(elmUL, 'click', ddElement)
        }
    }
}
var ddElement = function(e) {
    CancelEvent(e);
    var parent = this.parentNode;
    while (parent.className.indexOf('ddlist') == -1) {
        parent = parent.parentNode;
    }
    target = parent.getElementsByTagName('SPAN')[0];
    target.innerHTML = this.innerHTML;

    HiddenFieldService = document.getElementById("ctl00_ctl00_ChildMasterContent_MainContentArea_HiddenGoogleFieldService");
    HiddenFieldGeographicLocation = document.getElementById("ctl00_ctl00_ChildMasterContent_MainContentArea_HiddenGoogleFieldGeographicLocation");

    if (parent.className == "ddlist") {
        hiddenValue = this.id;
        HiddenFieldService.value = hiddenValue;
    }
    return;
}

/*  RESTYLE TABLES
----------------------------------------------------*/
var restyleTable = function() {
    var domTable = getElementsByClassName(document, 'table', 'restyled');
    if (!domTable) return;
    for (var i = 0, n = domTable.length, table = null; i < n; i++) {
        table = domTable[i];
        if (!table) return;

        var row = table.getElementsByTagName('TR')[0];
        var tds = DOM.ChildNodes(row);
        for (var x = 0, nn = tds.length; x < nn; x++) {
            var td = tds[x];
            var tdValue = td.innerHTML;
            td.parentNode.removeChild(td);
            var th = DOM.Create('TH');
            th.innerHTML = tdValue;
            DOM.Add(th, row);
        }
        var tableRows = table.getElementsByTagName('TR');
        for (var y = 0, m = tableRows.length; y < m; y++) {
            var tr = tableRows[y];
            if (y % 2 != 1) tr.className = 'tablealtrow';
        }
    }
};


/*  GOOGLE MAPS SAGE COMPANY PAGE
----------------------------------------------------*/
var googleCenterHack = function() {
    if (globalMapVar && globalMapVar.length > 0) {
        for (var i = 0, n = globalMapVar.length; i < n; i++) {
            globalMapVar[i].checkResize();
            globalMapVar[i].setCenter(globalMapVar[parseInt(i + 1)].getCenter())
            i++;
        }
    }
}

var gMapsContact = function() {
    var mainContent = $('maincontent'); if (!mainContent) return;
    var mapThumb = getElementsByClassName(mainContent, 'A', 'mapthumb');
    if (!mapThumb) return;
    for (var i = 0, n = mapThumb.length, elm = null; i < n; i++) {
        elm = mapThumb[i];
        elm.style.display = 'block';
        addEvent(elm, 'click', openGoogleMap);
    }
    var mapGoogle = getElementsByClassName(mainContent, 'DIV', 'mapcontact');
    if (!mapGoogle) return;
    for (var j = 0, m = mapGoogle.length, elmMap = null; j < m; j++) {
        elmMap = mapGoogle[j];
        elmMap.style.display = 'none';
        var closeMapGoogle = elmMap.getElementsByTagName('A')[0];
        addEvent(closeMapGoogle, 'click', closeGoogleMap);
    }
}
var openGoogleMap = function(e) {
    CancelEvent(e);
    var mapGoogle = DOM.NextSibling(this); //next
    Fade.In(mapGoogle, 1);
    Fade.Out(this, 70);
}
var closeGoogleMap = function(e) {
    CancelEvent(e);
    var mapThumbParent = this.parentNode.parentNode;
    var mapThumb = getElementsByClassName(mapThumbParent, 'A', 'mapthumb')[0];
    Fade.In(mapThumb, 1);
    Fade.Out(this.parentNode, 70);
}

/* FOLDING MENU - SAGE
----------------------------------------------------*/
var foldingMenu = function() {
    var foldingMenu = $('foldingmenu'); if (!foldingMenu) return;
    var nestedUL = foldingMenu.getElementsByTagName('UL');
    for (var i = 0, n = nestedUL.length, elmUL = null; i < n; i++) {
        elmUL = nestedUL[i];
        elmUL.style.display = 'none';
    }
    var link = getElementsByClassName(foldingMenu, 'A', 'foldingmenulink');
    for (var i = 0, n = link.length, elmLink = null; i < n; i++) {
        elmLink = link[i];
        addEvent(elmLink, 'click', toggleMenu);
    }
}
var toggleMenu = function(e) {
    CancelEvent(e);
    var allUL = this.parentNode.parentNode.getElementsByTagName('UL');
    for (var i = 0, n = allUL.length, elmUL = null; i < n; i++) {
        elmUL = allUL[i];

        if (elmUL.parentNode.className != 'first') elmUL.parentNode.className = '';

        DOM.ChildNodes(elmUL.parentNode)[0].childNodes[0].innerHTML = '+';
        elmUL.style.display = 'none';
    }
    var nestedUL = this.parentNode.getElementsByTagName('UL')[0];


    if (this.parentNode.className == 'first') {
        this.parentNode.className = (this.parentNode.className == 'selected first') ? 'first' : 'first selected';
    } else {
        this.parentNode.className = (this.parentNode.className == 'selected') ? '' : 'selected';
    }

    var span = DOM.ChildNodes(this)[0];
    span.innerHTML = (span.innerHTML == '+') ? '&#8211;' : '+';
    Fade.In(nestedUL, 100);
}

/* HOVER MAIN MENU - DF King
----------------------------------------------------*/
var dfkMainMenu = function() {
    var topMenuWrapper = $('DFKing'); if (!topMenuWrapper) return;
    var topMenu = getElementsByClassName(topMenuWrapper, 'UL', 'topmenu')[0];
    if (!topMenu) return;
    var firstLis = DOM.ChildNodes(topMenu)
    for (var i = 0, n = firstLis.length, elm = null; i < n; i++) {
        elm = firstLis[i];
        addEvent(elm, 'mouseover', checkClassName);
        addEvent(elm, 'mouseout', resetClassName);

    }
}

/* ADJUST START PAGE PUSH HEIGHTS - DF King
----------------------------------------------------*/
var dfkAdjustStartPagePushHeights = function () {
    var topMenuWrapper = $('DFKing'); if (!topMenuWrapper) return;
    var pushDivs = getElementsByClassName(topMenuWrapper, 'DIV', 'box');
    var intHeight = 0;
    for (var i = 0; i < pushDivs.length; i++) {
        var div = pushDivs[i];
        if (div.offsetHeight > intHeight) {
            intHeight = div.offsetHeight;
        }
    }
    for (var i = 0; i < pushDivs.length; i++) {
        var div = pushDivs[i];
        div.style.height = intHeight;
    }
}

/* HOVER MAIN MENU LI CLASSNAME - DF King
----------------------------------------------------*/
var checkClassName = function() {
    var previousSibbling = DOM.PreviousSibling(this);
    var nextSibbling = DOM.NextSibling(this);
    if (nextSibbling) {
        var link = nextSibbling.getElementsByTagName('A')[0];
        var hoverLink = this.getElementsByTagName('A')[0];
        if (link.className == 'selected' || link.className == 'selected child') {
            hoverLink.style.borderRight = 'none';
            hoverLink.style.paddingRight = '10px';
        }
    }
    if (previousSibbling) {
        var link = previousSibbling.getElementsByTagName('A')[0];
        var hoverLink = this.getElementsByTagName('A')[0];
        if (link.className == 'selected' || link.className == 'selected child') {
            hoverLink.style.borderLeft = 'none';
            hoverLink.style.paddingLeft = '10px';
        }
    }
    // if hover first li element and the next one is selected
    if (!previousSibbling) {
        var link = nextSibbling.getElementsByTagName('A')[0];
        var hoverLink = this.getElementsByTagName('A')[0];
        hoverLink.style.borderLeft = 'none';
        hoverLink.style.paddingLeft = '10px';
        if (link.className == 'selected' || link.className == 'selected child') {
            hoverLink.style.borderRight = 'none';
        }
    }
}
/* HOVER MAIN MENU LI RESET CLASSNAME - DF King
----------------------------------------------------*/
var resetClassName = function() {
    var previousSibbling = DOM.PreviousSibling(this);
    var nextSibbling = DOM.NextSibling(this);
    if (nextSibbling) {
        var link = nextSibbling.getElementsByTagName('A')[0];
        if (link.className == 'selected') {
            //Do nothing for now
        }
    }
    if (previousSibbling) {
        var link = previousSibbling.getElementsByTagName('A')[0];
        if (link.className == 'selected') {
            //Do nothing for now
        }
    }
}

/* FLASH FALLBACK PICTURE SLIDE
----------------------------------------------------*/
var flasFallbackPictureSlide = function() {
    var slideContainer = $('flashfallbackcontainer'); if (!slideContainer) return;
    var slides = getElementsByClassName(slideContainer, 'DIV', 'slide');
    // Create and add Slide Navigation container
    var slideNav = DOM.Create('DIV', 'no-select', 'slidenav');
    DOM.AddFirst(slideNav, slideContainer);
    // Loop through slides and create and add Slide Navigation
    for (var i = 0, n = slides.length; i < n; i++) {
        slides[0].style.display = 'block';
        arrSlideHolder.push(slides[i]);
        var slideLink = DOM.Create('A', 'slidelink');
        slideLink.innerHTML = parseInt(i + 1);
        addEvent(slideLink, 'click', navigateSlide);
        DOM.Add(slideLink, slideNav);
    }
    var slideLeft = DOM.Create('A', 'prev');
    var slideRight = DOM.Create('A', 'next');
    slideRight.innerHTML = '&nbsp;';
    slideLeft.innerHTML = '&nbsp;';
    DOM.AddFirst(slideRight, slideNav);
    DOM.AddFirst(slideLeft, slideNav);
    addEvent(slideRight, 'click', navigateSlideNext);
    addEvent(slideLeft, 'click', navigateSlidePrev);

    var slideNav = $('slidenav'); if (!slideNav) return;
    var slideNavA = DOM.GetByClassName(slideNav, 'A', 'slidelink');
    for (var j = 0, m = slideNavA.length, elm = null; j < m; j++) {
        elm = slideNavA[j];
        elm.className = 'slidelink';
        slideNavA[0].className = elm.className + ' selected';
    }

}
/* NAVIGATE PICTURE SLIDE PREVIOUS
----------------------------------------------------*/
var navigateSlidePrev = function() {
    arrSlideHolder[currSlide].style.display = 'none';
    currSlide--;
    if (currSlide < 0) currSlide = arrSlideHolder.length - 1;
    var slideNav = $('slidenav'); if (!slideNav) return;
    var slideNavA = DOM.GetByClassName(slideNav, 'A', 'slidelink');
    for (var j = 0, m = slideNavA.length, elm = null; j < m; j++) {
        elm = slideNavA[j];
        elm.className = 'slidelink';
        slideNavA[currSlide].className = elm.className + ' selected';
    }
    arrSlideHolder[currSlide].style.display = 'block';
    this.blur();
}
/* NAVIGATE PICTURE SLIDE NEXT
----------------------------------------------------*/
var navigateSlideNext = function() {
    arrSlideHolder[currSlide].style.display = 'none';
    currSlide++;
    if (currSlide > arrSlideHolder.length - 1) currSlide = 0;
    var slideNav = $('slidenav'); if (!slideNav) return;
    var slideNavA = DOM.GetByClassName(slideNav, 'A', 'slidelink');
    for (var j = 0, m = slideNavA.length, elm = null; j < m; j++) {
        elm = slideNavA[j];
        elm.className = 'slidelink';
        slideNavA[currSlide].className = elm.className + ' selected';
    }
    arrSlideHolder[currSlide].style.display = 'block';
    this.blur();
}

/* NAVIGATE PICTURE SLIDE
----------------------------------------------------*/
var navigateSlide = function() {
    currSlide = this.innerHTML - 1;
    for (var i = 0, n = arrSlideHolder.length, elm = null; i < n; i++) {
        elm = arrSlideHolder[i];
        elm.style.display = 'none';
    }
    var slideNav = $('slidenav'); if (!slideNav) return;
    var slideNavA = DOM.GetByClassName(slideNav, 'A', 'slidelink');
    for (var j = 0, m = slideNavA.length, elm = null; j < m; j++) {
        elm = slideNavA[j];
        elm.className = 'slidelink';
    }
    this.className = this.className + ' selected';
    arrSlideHolder[currSlide].style.display = 'block';
    this.blur();
}

var DisableSelect = function() {
    this.Disable = function(e) {
        CancelEvent(e);
        this.onselectstart = function() { return false }
        return false;
    };
    var elms = DOM.GetByClassName(document, '*', 'no-select');
    for (var ii = 0, nn = elms.length; ii < nn; ii++) {
        addEvent(elms[ii], 'mousedown', this.Disable);
    }
};

/* NEWS ROOM - PREPARE EXPANDED MEDIA FEED
----------------------------------------------------*/
var newsRoomExpandMedia = function() {
    var expandMediaBox = DOM.GetByClassName(document, 'DIV', 'expand');
    if (!expandMediaBox) return;
    for (var i = 0, n = expandMediaBox.length, elm = null; i < n; i++) {
        /*make a clone of the node and insert it efter*/
        elm = expandMediaBox[i]
        var linkList = elm.getElementsByTagName('UL')[0];
        if (linkList) {
            var clonedLinkList = linkList.cloneNode(true);
            DOM.Remove(linkList);
        }
        var expand = elm.cloneNode(true);

        expand.style.display = 'none';
        expand.style.marginTop = '0'; // IE7 SKJUTER NER UNDERLIGGANDE INNEHÅLL ÄVEN FAST DETTA OBJEKT ÄR POSITION ABSOLUTE!? - SÄTTER MARGIN TOP TILL 0PX.
        DOM.AddAfter(expand, elm);
        var heading = expand.getElementsByTagName('H2')[0];
        /*create clone wrappers*/
        var expandWrapper = DOM.Create('DIV', 'expandwrapper');
        var expandWrapperInner = DOM.Create('DIV', 'expandwrapperinner');
        DOM.Add(expandWrapper, expand);
        DOM.Add(heading, expandWrapper);
        var mediaArray = '';
        /*modify the clones*/
        var topwrapper = DOM.GetByClassName(expand, 'DIV', 'servicetop');
        if (!topwrapper) return;
        for (var a = 0, s = topwrapper.length, elmTop = null; a < s; a++) {
            elmTop = topwrapper[a];
            elmTop.className = 'servicewrapper';
            DOM.Add(expandWrapperInner, expandWrapper);
        }
        var bottomWrapper = DOM.GetByClassName(expand, 'DIV', 'servicebottom');
        if (!bottomWrapper) return;
        for (var b = 0, h = bottomWrapper.length, elmBottom = null; b < h; b++) {
            elmBottom = bottomWrapper[b];
            mediaArray += elmBottom.innerHTML.toString();
            DOM.Remove(elmBottom);
            expandWrapperInner.innerHTML = mediaArray;
        }
        expandWrapper.className += ' sideways';

        /*display only the first media item on page load*/
        var mediaItem = DOM.GetByClassName(elm, 'DIV', 'servicebottom');
        for (var q = 0, w = mediaItem.length, elmItem = null; q < w; q++) {
            elmItem = mediaItem[q];
            elmItem.style.display = 'none';
        }
        if (linkList) {
            //linkList.style.display = 'none';
            DOM.AddAfter(clonedLinkList, heading);
            clonedLinkList.style.position = 'absolute';
            clonedLinkList.style.top = '10px';
            clonedLinkList.style.left = '200px';
        }
        mediaItem[0].style.display = 'block';
        expand.style.top = -mediaItem[0].offsetHeight + 'px';
        addEvent(mediaItem[0], 'click', showMediaFeed);

        closeExpand = DOM.GetByClassName(expand, 'LI', 'closeexpandedmodule')[0];
        if (closeExpand) addEvent(closeExpand, 'click', hideMediaFeed);

        // Get the Media Items and add click event
        var serviceItem = DOM.GetByClassName(expand, 'DIV', 'service');
        for (var qqq = 0, www = serviceItem.length, elmService = null; qqq < www; qqq++) {
            elmService = serviceItem[qqq];
            addEvent(elmService, 'click', showMediaItemModal);
        }

    }
}
/* NEWS ROOM - SHOW EXPANDED MEDIA FEED
----------------------------------------------------*/
var showMediaFeed = function(e) {
    CancelEvent(e);
    this.style.visibility = 'hidden';
    var allExpand = DOM.GetByClassName(document, 'DIV', 'sideways');
    for (var i = 0, n = allExpand.length, elm = null; i < n; i++) {
        elm = allExpand[i];
        elm.parentNode.style.display = 'none';
        var defaultMediaItem = DOM.PreviousSibling(elm.parentNode);
        DOM.GetByClassName(defaultMediaItem, 'DIV', 'servicebottom')[0].style.visibility = 'visible';
    }
    DOM.NextSibling(this.parentNode).style.display = 'block';
}
/* MODAL POPUP FOR MEDIA ITEM
----------------------------------------------------*/
var showMediaItemModal = function(e) {
    CancelEvent(e);
    var flexLight = $('flexlight'); if (!flexLight) return;
    flexibleLightbox(flexLight);
}
/* GET DATA FOR MEDIA ITEM MODAL POPUP
----------------------------------------------------*/
var getMediaItemModalData = function(h2, linkText, href, innerHtml) {
    var serviceContent = $('servicecontent'); if (!serviceContent) return;
    var heading = DOM.PreviousSibling(DOM.PreviousSibling(serviceContent));
    var link = DOM.ChildNodes(DOM.NextSibling(serviceContent))[0];

    heading.innerHTML = h2;
    link.innerHTML = linkText;
    DOM.SetAttribute(link, 'href', href);
    serviceContent.innerHTML = innerHtml;
}
/* NEWS ROOM - HIDE EXPANDED MEDIA FEED
----------------------------------------------------*/
var hideMediaFeed = function(e) {
    CancelEvent(e);
    DOM.GetByClassName(DOM.PreviousSibling(this.parentNode.parentNode.parentNode), 'DIV', 'servicebottom')[0].style.visibility = 'visible';
    this.parentNode.parentNode.parentNode.style.display = 'none';

}
/* LIGHTBOX 2 - FOR DYNAMIC CONTENT
----------------------------------------------------*/
var flexibleLightbox = function(elem) {

    // check that the browser supports the methods used
    if (!document.getElementById || !document.createElement || !document.appendChild) return false;

    var e, fade, light;

    fade = $('fade');
    fade.style.display = 'none';

    light = $('flexlight');
    light.style.display = 'none';

    if (elem.id == "flexlight") {
        if (fade.style.display == 'none' && light.style.display == 'none') {
            var fadeHeight = Math.max($('wrap').clientHeight, document.body.clientHeight);
            fade.style.height = fadeHeight + 'px';
            fade.style.display = 'block';
            light.style.display = 'block';

            var currScrollTop = document.documentElement.scrollTop;
            elem.style.top = currScrollTop + 120 + 'px';

            addEvent(window, 'scroll', updateFlexLightbox);
            addEvent(window, 'resize', updateFadebox);
        }
    }
}

function updateFlexLightbox() {
    var elmLight = $('flexlight');
    var currScrollTop = document.documentElement.scrollTop;
    elmLight.style.top = currScrollTop + 120 + 'px';
}
/* TOGGLE SHARE THIS BOOKMARKS AND E-MAIL
----------------------------------------------------*/
var toggleBookmarks = function() {
    var togglemenu = DOM.GetByClassName($('sharethis'), 'UL', 'togglesection')[0];
    if (!togglemenu) return;
    var toggleMenuItem = togglemenu.getElementsByTagName('LI');
    for (var i = 0, n = toggleMenuItem.length, elm = null; i < n; i++) {
        elm = toggleMenuItem[i];
        addEvent(elm, 'click', toggleItem);
    }
    var toggleItemContainer = DOM.GetByClassName($('sharethis'), 'DIV', 'toggleitemcontainer')[0];
    toggleItemContainer.style.display = 'none';
}
/* TOGGLE SHARE THIS BOOKMARKS AND E-MAIL
----------------------------------------------------*/
var toggleItem = function(e) {
    CancelEvent(e);
    var toggleMenuItem = this.parentNode.getElementsByTagName('LI');
    for (var i = 0, n = toggleMenuItem.length, elm = null; i < n; i++) {
        elm = toggleMenuItem[i];
        elm.className = '';
    }
    this.className = (this.className == 'selected') ? '' : 'selected';

    var toggleItemContainer = DOM.GetByClassName($('sharethis'), 'DIV', 'toggleitemcontainer');
    for (var j = 0, m = toggleItemContainer.length, elmContainer = null; j < m; j++) {
        elmContainer = toggleItemContainer[j];
        elmContainer.style.display = (elmContainer.style.display == 'none') ? 'block' : 'none';
    }
}
/* ANIMATION
----------------------------------------------------*/
var cubicOut = function(t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b; }
var iPopAnimation = {
    Start: function(obj, x, y, width, height) {
        iPopAnimation.Animator = obj;
        iPopAnimation.Animation = { time: 0, top: 0, left: 0, width: 0, height: 0, changeTop: 0, changeLeft: 0, changeHeight: 0, changeWidth: 0, duration: 0.0, timer: null, element: null };
        iPopAnimation.Animation.time = 0;
        iPopAnimation.Animation.top = obj.TriggerY - 5;
        iPopAnimation.Animation.left = obj.TriggerX - 5;
        iPopAnimation.Animation.height = 0;
        iPopAnimation.Animation.width = 10;
        iPopAnimation.Animation.changeTop = y - iPopAnimation.Animation.top + 10;
        iPopAnimation.Animation.changeLeft = x - iPopAnimation.Animation.left;
        iPopAnimation.Animation.changeWidth = width;
        iPopAnimation.Animation.changeHeight = height;
        iPopAnimation.Animation.duration = 25;
        iPopAnimation.Animation.element = elmAnimator;
        iPopAnimation.Animation.timer = setInterval("iPopAnimation.Animate();", 15);
    },
    Close: function() {
        iPopAnimation.Animator.style.visibility = 'visible';
        iPopAnimation.Animation.time = 0;
        iPopAnimation.Animation.top = iPOP.Top;
        iPopAnimation.Animation.left = iPOP.Left;
        iPopAnimation.Animation.height = iPOP.Height;
        iPopAnimation.Animation.width = iPOP.Width;
        iPopAnimation.Animation.changeTop = parseInt(iPOP.TriggerY - iPOP.Top);
        iPopAnimation.Animation.changeLeft = parseInt(iPOP.TriggerX - iPOP.Left);
        iPopAnimation.Animation.changeWidth = -iPOP.Width;
        iPopAnimation.Animation.changeHeight = -iPOP.Height;
        iPopAnimation.Animation.duration = 25;
        iPopAnimation.Animation.element = iPopAnimation.Animator;
        iPopAnimation.Animation.timer = setInterval("iPopAnimation.Animate();", 15);
    },
    Stop: function() {
        DOM.Remove(iPopAnimation.Animator);
        clearInterval(iPopAnimation.Animation.timer);
        iPopAnimation.Animation.timer = null;
    },
    Animate: function() {
        var move = null;
        if (iPopAnimation.Animation.time > iPopAnimation.Animation.duration) {
            clearInterval(iPopAnimation.Animation.timer);
            iPopAnimation.Animation.timer = null;
            iPopAnimation.Animator.style.display = 'none';
            iPOP.iPop.style.visibility = 'visible';
        } else {
            //## LEFT
            move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.left, iPopAnimation.Animation.changeLeft, iPopAnimation.Animation.duration)
            iPopAnimation.Animation.element.style.left = parseInt(move) + 'px';

            //## TOP
            move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.top, iPopAnimation.Animation.changeTop, iPopAnimation.Animation.duration)
            iPopAnimation.Animation.element.style.top = parseInt(move) + 'px';

            //## WIDTH
            move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.width, iPopAnimation.Animation.changeWidth, iPopAnimation.Animation.duration)
            iPopAnimation.Animation.element.style.width = parseInt(move) + 'px';

            //## HEIGHT
            move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.height, iPopAnimation.Animation.changeHeight, iPopAnimation.Animation.duration)
            iPopAnimation.Animation.element.style.height = parseInt(move) + 'px';

            iPopAnimation.Animation.time++;

        }

    }
};

/* OPACITY FADE
----------------------------------------------------*/
var Fade = {
    In: function(uid, opacity) { if (typeof uid == 'object') { if (uid.id) { uid = uid.id; } else { var newUid = Guid(); DOM.SetAttribute(uid, 'id', newUid); uid = newUid; } } var obj = $(uid); if (!obj) return; obj.style.display = 'block'; if (opacity <= 100) { Fade.setOpacity(obj, opacity); opacity += 5; fadeTimer = window.setTimeout('Fade.In("' + uid + '",' + opacity + ')', 40) } else { Fade.setOpacity(obj, 100); obj.style.filter = ''; fadeTimer = null; window.setTimeout("googleCenterHack()", 1) } },
    Out: function(uid, opacity) { if (typeof uid == 'object') { if (uid.id) { uid = uid.id; } else { var newUid = Guid(); DOM.SetAttribute(uid, 'id', newUid); uid = newUid; } } var obj = $(uid); if (!obj) return; if (opacity > 0) { Fade.setOpacity(obj, opacity); opacity -= 5; fadeTimer = window.setTimeout('Fade.Out("' + uid + '",' + opacity + ')', 30) } else { obj.style.display = 'none'; Fade.setOpacity(obj, 0); fadeTimer = null; } },
    setOpacity: function(obj, opacity) { if (!obj) return; obj.style.filter = 'alpha(style=0,opacity:' + opacity + ')'; obj.style.KHTMLOpacity = (opacity / 100); obj.style.MozOpacity = (opacity / 100); obj.style.opacity = (opacity / 100) }
};
/* CREATE GUID
----------------------------------------------------*/
var Guid = function() { var fakeGuid = '' + new Date().getTime() * Math.ceil(Math.random() * 100); fakeGuid = fakeGuid.substring(0, 12); return fakeGuid };

// show/hide an object
var Obj = {
    Show: function(elm) {
        if (elm.style.display != 'block') elm.style.display = 'block';
    },
    Hide: function(elm) {
        if (elm.style.display != 'none') elm.style.display = 'none';
    },
    ShowSlide: function(elmId, height, orgHeight) {
        var box = $(elmId);
        height += 20;
        if (height >= orgHeight) {
            slideTimer[elmId] = null;
            window.clearTimeout(slideTimer);
            box.style.height = 'auto';
            return;
        }
        box.style.height = height + 'px';
        slideTimer[elmId] = window.setTimeout('Obj.ShowSlide("' + elmId + '",' + height + ', ' + orgHeight + ')', 80);
    },
    HideSlide: function(elmId, height) {
        var box = $(elmId);
        height -= 20;
        if (height <= 0) {
            box.style.height = '0';
            slideTimer[elmId] = null;
            window.clearTimeout(slideTimer);
            return;
        }
        box.style.height = height + 'px';
        slideTimer[elmId] = window.setTimeout('Obj.HideSlide("' + elmId + '",' + height + ')', 80);
    }
}

/* GET ELEMENT POSITION
----------------------------------------------------*/
var getElmPosition = {
    GetX: function(obj) {
        var curleft = 0;
        if (obj.offsetParent) {
            while (1) { curleft += obj.offsetLeft; if (!obj.offsetParent) break; obj = obj.offsetParent; };
        } else if (obj.x) { curleft += obj.x; }
        return curleft;
    },
    GetY: function(obj) {
        var curtop = 0;
        if (obj.offsetParent) {
            while (1) { curtop += obj.offsetTop; if (!obj.offsetParent) break; obj = obj.offsetParent; };
        } else if (obj.y) { curtop += obj.y; }
        return curtop;
    }
}


/* CANCEL EVENT
----------------------------------------------------*/
var CancelEvent = function(e) { if (e.preventDefault) { e.preventDefault() } else { e.returnResult = false }; if (e.stopPropagation) { e.stopPropagation() } else { e.cancelBubble = true; event.returnValue = false; } };



/* SHORTCUT: GET ELEMENT BY ID
----------------------------------------------------*/
var $ = function(elm) { return document.getElementById(elm); }




/* CONSOLE OUTPUT
----------------------------------------------------*/
var Console = function() {
    return {
        Log: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.log(msg, args) },
        Info: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.info(msg, args) },
        Warn: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.warn(msg, args) },
        Error: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.error(msg, args) }
    }
} ();


/* DOM LOAD
----------------------------------------------------*/
var onDOMload = function() { if (arguments.callee.done) return; arguments.callee.done = true; if (_timer) clearInterval(_timer); onPageLoad() };
/*@cc_on
@if(@_win32 || @_win64)if (document.getElementById) { document.write("<script id=\"ieScriptLoad\" defer src=\"//:\"><\/script>"); document.getElementById("ieScriptLoad").onreadystatechange = function() { if (this.readyState == "complete") { onDOMload() } } } @end@*/
if (document.addEventListener) { document.addEventListener('DOMContentLoaded', onDOMload, false) }; if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) { var _timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { onDOMload() } }, 10) } window.onload = onDOMload;
/* CHECK IF KEY EVENT IS FOR ENTER OR RETURN
----------------------------------------------------*/
function isEnter(e) {
    var keynum;
    if (window.event) // IE
    {
        keynum = e.keyCode;
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which;
    }
    return (e.keyCode == 13 || e.keyCode == 3);
}






/* ------ Script for dynamic box on landing page starts here ----- */

var slideShow = {};
slideShow.abort = null;
slideShow.slideHolder = new Array();
slideShow.slideNumber = 0;
slideShow.rotationTime = 7000;
slideShow.slideTimer = new Array();

slideShow.init = function () {
    var slides, i, n, dynBox, newsContainer, elm, elmChild, firstSlide, div;
    dynBox = $('dynamic-content-box'); if (!dynBox) return;
    newsContainer = document.getElementById('news-container');

    slides = newsContainer.getElementsByTagName('DT');

    var boxHeight = 367;
    var finalTotalHeight = 0;

    // Loop through slides and add events
    for (var i = 0, n = slides.length; i < n; i++) {
        var height = Math.round(boxHeight / slides.length) - 2;
        finalTotalHeight += height;

        // Webkit & IE handles table-cell level elements differently from FF because border thickness is added to height.
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || /WebKit/i.test(navigator.userAgent)) {
            height -= 0;
        }

        elm = slides[i];
        elmChild = DOM.FirstChild(elm);
        elm.style.height = height + 'px';
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
            var ieversion = new Number(RegExp.$1)
            if (ieversion >= 8) {
                elmChild.style.display = 'table-cell';
            }
        }

        slideShow.slideHolder.push(slides[i]);
        addEvent(slides[i], 'click', slideShow.changeSlide);
        addEvent(slides[i], 'mouseover', slideShow.abortRotate);
        addEvent(slides[i], 'mouseout', slideShow.playRotate);
    }
    dynBox.style.height = finalTotalHeight + (slides.length * 2) + 'px';

    for (var i = 0, n = slides.length; i < n; i++) {
        DOM.NextSibling(slides[i]).style.height = finalTotalHeight + (slides.length * 2) - 1 + 'px';
    }

    // Show first slide
    firstSlide = DOM.NextSibling(slides[0]);
    slides[0].className = 'active';
    firstSlide.className = 'active';
    div = firstSlide.getElementsByTagName('DIV')[0];
    div.style.bottom = '0px';

    // Start rotation
    slideShow.abort = setTimeout('slideShow.rotate()', slideShow.rotationTime);
}

slideShow.changeSlide = function () {
    var i, n, elm, elmChild, div, img, currentSlide;

    slideShow.abortRotate();

    currentSlide = DOM.NextSibling(this);
    for (i = 0, n = slideShow.slideHolder.length, elm = null; i < n; i++) {
        if (slideShow.slideHolder[i] == this) {
            slideShow.slideNumber = i;
        }
        elm = slideShow.slideHolder[i];
        elmChild = DOM.NextSibling(elm);
        elm.className = '';
        elmChild.className = '';
    }
    this.className = 'active';
    currentSlide.className = 'active';
    div = currentSlide.getElementsByTagName('DIV')[0];
    slideShow.showSlide(div.id, -200, 0);
    img = currentSlide.getElementsByTagName('IMG')[0];
    img.style.display = 'block';
    Fade.In(img, 10);
    this.blur();
}

slideShow.rotate = function () {
    var newsContainer, slides, currentSlide, i, n, elm, elmChild, div, img;
    newsContainer = document.getElementById('news-container');
    slides = newsContainer.getElementsByTagName('DT');

    // Get current slide
    slideShow.slideNumber = (slideShow.slideNumber == slides.length - 1) ? 0 : slideShow.slideNumber + 1;
    currentSlide = DOM.NextSibling(slides[slideShow.slideNumber]);

    // Change slide
    for (i = 0, n = slides.length, elm = null; i < n; i++) {
        elm = slides[i];
        elmChild = DOM.NextSibling(elm);
        elm.className = '';
        elmChild.className = '';
    }
    slides[slideShow.slideNumber].className = 'active';
    currentSlide.className = 'active';
    div = currentSlide.getElementsByTagName('DIV')[0];
    slideShow.showSlide(div.id, -200, 0);
    img = currentSlide.getElementsByTagName('IMG')[0];
    Fade.In(img, 10);

    slides.selectedIndex = slideShow.slideNumber;
    slideShow.abort = setTimeout('slideShow.rotate()', slideShow.rotationTime);
}

slideShow.abortRotate = function () {
    if (slideShow.abort)
        clearTimeout(slideShow.abort);
}

slideShow.playRotate = function () {
    slideShow.abort = setTimeout('slideShow.rotate()', slideShow.rotationTime);
}

slideShow.showSlide = function (elmId, height, orgHeight) {
    var box = $(elmId);
    height += 20;
    if (height >= orgHeight) {
        slideShow.slideTimer[elmId] = null;
        window.clearTimeout(slideShow.slideTimer);
        box.style.bottom = '0px';
        return;
    }
    box.style.bottom = height + 'px';
    slideShow.slideTimer[elmId] = window.setTimeout('slideShow.showSlide("' + elmId + '",' + height + ', ' + orgHeight + ')', 45);
}

addEvent(window, 'load', slideShow.init);

