/**
 * Unobtrusive Image Rollovers
 * By: Paul McLanahan <paul dot mclanahan at digital insight>
 */
var Roll = Class.create()
Roll.prototype = {
    
    imgObjects: [],
    
    initialize: function(){
        if(!document.getElementsByTagName)return;
        all_links = document.getElementsByClassName('rollover');
        for(var i = 0; i < all_links.length; i++){
            var linkObj = all_links[i]; 
            if (linkObj.childNodes && linkObj.childNodes.length == 1 && linkObj.childNodes[0].nodeName.toLowerCase() == 'img'){

                // preload rollover images
                this.imgObjects[this.imgObjects.length] = new Image();
                this.imgObjects[this.imgObjects.length-1].src = linkObj.childNodes[0].src.replace(/_off(\.[^.]{3})$/,"_on$1");
                
                // add mouseover and mouseout event handlers to links
                //libDI.addEvent(linkObj,'mouseover',Roll.imgOn,false);
                //libDI.addEvent(linkObj,'mouseout',Roll.imgOff,false);
                Event.observe(linkObj,'mouseover',Swap.over);
                Event.observe(linkObj,'mouseout',Swap.out);
            }
        }
        all_subnav = document.getElementsByClassName('navSwap');
        for(var j = 0; j < all_subnav.length; j++){
            var divObj = all_subnav[j];
            Element.setStyle(divObj,$H({
            	visibility: 'hidden',
            	display: 'none'
            }));
			var imgObj = document.getElementById(divObj.id.substr(7));
			var lnkPos = Position.page(imgObj);
			var divDims = Element.getDimensions(divObj.firstChild);
			var bodyDims = Element.getDimensions(document.body || document.getElementsByTagName(body)[0]);
			//alert(divObj.firstChild.className + "\n" + $H(divDims).inspect());
			if(lnkPos[0]+divDims.width > bodyDims.width){
				divObj.firstChild.style.left = (bodyDims.width - divDims.width - 50)+"px";
			}
			else{
				//ir section sub-nav needs to be offset so it doesn't run off the side of the page
				if(divObj.id == 'subnav-ir'){
					ir_offset = 400;
				} else {
					ir_offset = 0;
				}
				divObj.firstChild.style.left = (lnkPos[0]-2)-ir_offset+"px";
			}
            Element.setStyle(divObj,$H({visibility:'visible'}));
            Event.observe(divObj,'mouseout',Swap.out);
            Event.observe(divObj,'mouseover',Swap.overMenu);
			if(Element.hasClassName(divObj,'selected')){
				//Element.show(divObj);
	            Element.setStyle(divObj,$H({display:'block'}));
			}
        }
    },
    
    imgOn: function(e){
        linkObj = Event.findElement(e,'a');
        if(!linkObj)return;
        linkObj.childNodes[0].src = linkObj.childNodes[0].src.replace(/_off(\.[a-z]{3})$/,"_on$1");
    },
    
    imgOff: function(e){
        linkObj = Event.findElement(e,'a');
        if(!linkObj)return;
        linkObj.childNodes[0].src = linkObj.childNodes[0].src.replace(/_on(\.[a-z]{3})$/,"_off$1");
    }
    
}

/**
 * Unobtrusive Swapping Horizontal Menu
 * By: Paul McLanahan <paul dot mclanahan at digital insight>
 */
 
var Swap = {

    currentTimer: false,
    currentDiv: false,
    currentImg: false,
    
    over: function(e){
        aObj = Event.findElement(e,'a');
        if(!aObj)return;
        Swap.overMenu();
        Swap.off();
        imgObj = aObj.firstChild;
        imgObj.src = imgObj.src.replace(/_off(\.[a-z]{3})$/,"_on$1");
        divID = 'subnav-'+imgObj.name;
        divObj = document.getElementById(divID);
        divObj.style.display = 'block';
        
        Swap.currentDiv = divObj;
        Swap.currentImg = imgObj;
    },
    
    overMenu: function(e){
        if(Swap.currentTimer)
            window.clearTimeout(Swap.currentTimer);
    },
    
    out: function(e){
        Swap.currentTimer = window.setTimeout(Swap.off,3000);
    },
    
    off: function(){
        if(Swap.currentDiv && Swap.currentImg){
            Swap.currentDiv.style.display = 'none';
            Swap.currentImg.src = Swap.currentImg.src.replace(/_on(\.[a-z]{3})$/,"_off$1");
        }
    }
}

function startNav(){
	var cfNavigation = new Roll();	
}

Event.observe(window,'load',startNav);