var SAS = {};

SAS.Nav = {
    elbowOn:new Image(),
    elbowOff:new Image(),
    leftnavShow:new Image(),
    leftnavHide:new Image(),
    leftnavHideInactive:new Image(),
    leftnavBulletOn:new Image(),
    leftnavBulletOff:new Image(),

    /*var for correlating current page with a leftnav level 1*/
    currentMetaAlias:null,

    /*var for sid in hash*/
    activeSid:null,

    /*vars for leftnav level 1*/
    selectedLevel1State:0,
    selectedLevel1:'',
    selectedLevel1Toggle:'',
    selectedLevel1Link:'',

    /*vars for leftnav links that dont toggle*/
    nonToggleState:0,
    nonToggleBullet:'',
    nonToggleLink:'',

    /*vars for leftnav level 2 & content*/
    selectedLevel2:'',
    selectedLevel2Link:'',
    selectedLevel2Elbow:'',
    selectedContent:''
}

/*Add listeners to links, handle leftnav & middle column*/
SAS.Nav.initializeDynamicList = function () {
    var objs, i, len, obj, href, sid;
    /*Leftnav links*/
    objs = YAHOO.util.Dom.getElementsByClassName('ln', 'a', 'leftnav');
    for (i = 0, len = objs.length; i < len; i++) {
        obj = objs[i];
        YAHOO.util.Event.addListener(obj, "click", function (evt) {
            href = this.getAttribute("href");
            sid = href.substr(href.indexOf('#') + 5) || "";
            try {
                if (SAS.Nav.currentMetaAlias == SAS.Nav.selectedLevel1) {
                    YAHOO.util.History.navigate("sid", sid);
                }
            } catch (e) {
                SAS.Nav.loadSection(sid);
            }
            if (SAS.Nav.currentMetaAlias == SAS.Nav.selectedLevel1) {
                YAHOO.util.Event.preventDefault(evt);
            }
        });
    }    
    /*Subcategory links*/
    objs = YAHOO.util.Dom.getElementsByClassName('sc', 'a', 'main');
    for (i = 0, len = objs.length; i < len; i++) {
        obj = objs[i];
        YAHOO.util.Event.addListener(obj, "click", function (evt) {
            href = this.getAttribute("href");
            sid = href.substr(href.indexOf('#') + 1);
            SAS.Nav.scroll(sid);
            YAHOO.util.Event.preventDefault(evt);
        });
    }
    /*Back To Top links*/
    objs = YAHOO.util.Dom.getElementsByClassName('toTop', 'a', 'main');
    for (i = 0, len = objs.length; i < len; i++) {
        obj = objs[i];
        YAHOO.util.Event.addListener(obj, "click", function (evt) {
            SAS.Nav.scroll('top');
            YAHOO.util.Event.preventDefault(evt);
        });
    }
    /*Remind IE6 to cache background images*/
    if (YAHOO.env.ua.ie == 6) {
        try {document.execCommand("BackgroundImageCache", false, true);} catch(e) {}
    }
    /*Handle middle column and leftnav*/
    this.selectedLevel1 = this.currentMetaAlias;
    this.loadSection(YAHOO.util.History.getCurrentState("sid"));
    this.level1(this.currentMetaAlias);
}

SAS.Nav.loadSection = function(sid) {
    try {
        /*Deactivate leftnav level 1 toggle & link*/
        if (this.selectedLevel1Toggle != '') this.selectedLevel1Toggle.src = this.leftnavHideInactive.src;  
        if (this.selectedLevel1Link != '') this.selectedLevel1Link.className = "navLevel1off";

        /*Deactivate previous leftnav level 2 elbow & link*/
        if (this.selectedLevel2Elbow != '') this.selectedLevel2Elbow.src = this.elbowOff.src;
        if (this.selectedLevel2Link != '') this.selectedLevel2Link.className = "inactive";

        /*Hide previous content*/
        if (this.selectedContent != '') this.selectedContent.className = "displayOff";

        if (sid !== "0" && document.getElementById('list'+sid) != null) {
            /*Show selected content*/
            this.selectedContent = document.getElementById('list'+sid);
            this.selectedContent.className = "displayOn";
            document.getElementById('pageHelp').className = "displayOff";
            this.activeSid = sid;
            /*Activate leftnav level 2 elbow & link*/
            if (document.getElementById('elbow'+this.currentMetaAlias+sid) != null) {
                this.selectedLevel2Elbow = document.getElementById('elbow'+this.currentMetaAlias+sid);
                this.selectedLevel2Elbow.src = this.elbowOn.src;
                this.selectedLevel2Link = document.getElementById('nav'+this.currentMetaAlias+sid);
                this.selectedLevel2Link.className = "active";
            }    
        } else {
            document.getElementById('pageHelp').className = "displayOn";
            this.activeSid = 0;
        }
    } catch (e) {}
}

/* level1 fires when level 1 of leftnav is clicked
   and when back/forward buttons are clicked */
SAS.Nav.level1 = function(parent) {
    if (!document.getElementsByTagName) return false;

    var parentNode = document.getElementById(parent);
    var childNode = document.getElementById(parent+'Level2');
    var toggleNode = document.getElementById(parent+'toggle');

    if (this.nonToggleState == 1) {
        /*This pages leftnav bullet doesnt toggle.
          User is clicking on a toggle so deactivate the nontoggling bullet*/
        this.nonToggleBullet.src = this.leftnavBulletOff.src;
        this.nonToggleLink.className = "noToggleOff";
        this.nonToggleState = 0;
    }

    if (this.selectedLevel1State == 0 && parent == this.currentMetaAlias && this.activeSid == '0') {
        /*Page is loading for first time, no sid parameter, open the leftnav*/
        toggleNode.src = this.leftnavHide.src;
        parentNode.className = "navLevel1on";
        childNode.className = "navLevel2on";
        this.selectedLevel1State = 1;
    } else if (parent == this.selectedLevel1 && this.selectedLevel1State == 1){
        /*Collapse the currently expanded section*/
        toggleNode.src = this.leftnavShow.src;
        parentNode.className = "navLevel1off";
        childNode.className = "displayOff";
        this.selectedLevel1State = 0;
    } else {
        /*Menu is currently expanded, expand a different part of the menu,
          OR page load and sid parameter exists*/

        /*Put blue plus icon next to section we want hidden*/
        this.selectedLevel1Toggle.src = this.leftnavShow.src;

        /*Deactivate level 1 link*/
        if (this.selectedLevel1Link!='') this.selectedLevel1Link.className = "navLevel1off";

        /*Hide previous level 2 section*/
        if (this.selectedLevel2 != '') this.selectedLevel2.className = "displayOff";

        /*Menu now collapsed so expand it*/
        if (this.activeSid != '0' && this.currentMetaAlias == parent){
            /*Show blue minus icon*/
            toggleNode.src = this.leftnavHideInactive.src;
        } else {
            /*Show orange minus icon, activate level 1 link*/
            toggleNode.src = this.leftnavHide.src;
            parentNode.className = "navLevel1on";
        }
        /*Expand selected section*/
        childNode.className = "navLevel2on";
        this.selectedLevel1State = 1;
    }
    this.selectedLevel1 = parent;
    this.selectedLevel1Toggle = toggleNode;
    this.selectedLevel1Link = parentNode;
    this.selectedLevel2 = childNode;
    return false;
}

/*Call to GA*/
SAS.Nav.Track = function(t) {
    try{
        if (typeof pageTracker !== 'undefined') {
            pageTracker._trackPageview(t);
        }
        else if (typeof firstTracker !== 'undefined' && typeof secondTracker !== 'undefined') {
            firstTracker._trackPageview(t);
            secondTracker._trackPageview(t);
        }
    }catch(e){}
}

/*Highlight links that dont toggle*/
SAS.Nav.setLink = function(id) {
    if (!document.getElementsByTagName) return false;
    try {
        this.nonToggleBullet = document.getElementById('nti'+id);
        this.nonToggleBullet.src = this.leftnavBulletOn.src;
        this.nonToggleLink = document.getElementById('nta'+id);
        this.nonToggleLink.className = "noToggleOn";
        this.nonToggleState = 1;
    }catch(e){}
}

/*Scroll up or down to given element*/
SAS.Nav.scroll = function(id) {
    var obj=document.getElementById(id);
    window.scrollTo(0,this.findPosition(obj));
}

/*Return height from top for given element*/
SAS.Nav.findPosition = function(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        curtop = obj.offsetTop;
        while (obj = obj.offsetParent) {
            curtop += obj.offsetTop;
        }
    }
    return curtop;
}

SAS.Nav.preloadListImages = function() {
    var a=new Array("/images/whitepapers/title_background.gif","/images/whitepapers/title_arrow.gif","/images/whitepapers/title_endcap.gif","/images/whitepapers/uparrow.gif");
    for(var i=0;i<a.length;i++){var x=new Image();x.src=a[i];}
}

SAS.Nav.preloadLeftNavImages = function() {
    this.elbowOn.src="/images/elbow_on.gif";
    this.elbowOff.src="/images/elbow_off.gif";
    this.leftnavShow.src="/images/navgraphics/plus.gif";
    this.leftnavHide.src="/images/navgraphics/minus.gif";
    this.leftnavHideInactive.src="/images/navgraphics/minus_inactive.gif";
    this.leftnavBulletOn.src="/images/dot_on.gif";
    this.leftnavBulletOff.src="/images/dot_off.gif";
}
SAS.Nav.preloadLeftNavImages();

/*CSS for when javascript enabled*/
SAS.style = "<style type='text\/css'>#leftnav dd.navLevel2off{display:none}.displayOff{display:none !important}.catWrap{display:none}.abstract{padding:5px;display:none}<\/style>";
document.write(SAS.style);