
/* <JasobNoObfs> */
/***************************************************
 portal_globalnav.js
 * v1.8 2007-03-27
***************************************************/
/* </JasobNoObfs> */

String.prototype.trim = function(){return this.replace( /(^s*)|(s*$)/g, "")};

var skynav_sIdNav          = "aoc-globalnav";
var skynav_sIdCom          = "aoc-gn-com";
var skynav_sIdSites        = "aoc-gn-sites";
var skynav_sClassItem      = "aoc-gn-item";
var skynav_sClassHead      = "aoc-gn-head";
var skynav_sClassSlider    = "aoc-gn-slider";
var skynav_nDurationWipe   = 300;
var skynav_nDurationSlide  = 300;
var skynav_nSlideOffset    = 10;                    // null == 100%; 0 == in-situ;

var skynav_sXMLTagSection  = "section";
var skynav_sXMLTagSite     = "site";
var skynav_sXMLTagDisplay  = "display";
var skynav_sXMLTagUrl      = "url";
var skynav_sXMLAttrId      = "id";
var skynav_sXMLAttrDisplay = "displayname";
var skynav_sXMLAttrIdCom   = "skyCom";
var skynav_sXMLAttrIdSites = "skySites";

var skynav_aSliders            = new Array();
var skynav_sCurrentlyVisibleId = null;

var skynav_oSections = new Object();
skynav_oSections[ skynav_sXMLAttrIdCom ] = skynav_sIdCom; 
skynav_oSections[ skynav_sXMLAttrIdSites ] = skynav_sIdSites;

var skynav_sJSArray = "skynav_aGlobalNav";
var skynav_sJSArrayURLVariable = "skynav_sJSURL";
var skynav_sJSArrayURL = window[ skynav_sJSArrayURLVariable ];
var skynav_bURLDefined = ( skynav_sJSArrayURL != null );
if( skynav_bURLDefined )
{
	skynav_fAttachEvent( "load", skynav_fInitialise );
	document.write('<script language="javascript" type="text/javascript" src="' + skynav_sJSArrayURL + '"></script>');
}

function skynav_fAttachEvent( sEvent, fFunction, eElement )
{
	eElement = ( eElement || window );
	if( fFunction != null )
	{
		if( window[ "attachEvent" ] ) { eElement[ "attachEvent" ]( "on" + sEvent, fFunction ); }
		else { eElement[ "addEventListener" ]( sEvent, fFunction, false ); }		
	}
}

function skynav_fGetFirstElementByTagName( eParent, sTagName ) { return eParent.getElementsByTagName( sTagName )[ 0 ]; };


function skynav_fSetInnerText( eElement, sText ) { ( eElement.innerText != null ) ? ( eElement.innerText = sText ) : ( eElement.textContent = sText ) };

function skynav_fInitialise()
{ 
    var eNav = document.getElementById( skynav_sIdNav );
    var eUL = skynav_fGetFirstElementByTagName( eNav, "ul" );
	var aJSArray = window[ skynav_sJSArray ]
    if( document.getElementById( skynav_sIdNav ) && aJSArray )
	{ 
		//eUL.innerHTML = "";
		skynav_fBuildXHTML( eUL, aJSArray );
	};
}

function skynav_fBuildXHTML( eUL, aSections  )
{
    var aSections = window[ skynav_sJSArray ];
	var nSections = aSections.length;
	var oSection, sSectionId, sItemId, eItem, eHead, eStrong, eBG, eInitialHead;
	for( var i=0; i<nSections; i++ )
	{
		oSection = aSections[ i ];
		sSectionId = oSection[ skynav_sXMLAttrId ];
		sItemId = skynav_oSections[ sSectionId ];
		if( sItemId )
		{
			eItem = document.createElement( "li" );
			eItem.id = sItemId;
			eItem.className = skynav_sClassItem;
			
			eHead = document.createElement( "div" );
			eHead.className = skynav_sClassHead;
			
			eHead.sSliderId = sItemId;
			eHead.onmouseover = skynav_fItemOnMouseover;
			if( skynav_sIdSites == sItemId )
			{
				eInitialHead = eHead;
			}
				eStrong = document.createElement( "strong" );
				skynav_fSetInnerText( eStrong, oSection[ skynav_sXMLAttrDisplay ] );
				eHead.appendChild( eStrong );
				
				eBG = document.createElement( "div" );
				eHead.sBGId = eBG.id = ( skynav_sClassHead + i );
				eHead.appendChild( eBG );
				
			eItem.appendChild( eHead );
			eItem.appendChild( skynav_fCreateSliderElements( sItemId, oSection ) );
			
			eUL.appendChild( eItem );
		}
	}
	if( eInitialHead )
	{
		skynav_fItemOnMouseover.call(eInitialHead);
	}
	
}

function skynav_fCreateSliderElements( sItemId, oSection )
{           
	var eSlider = document.createElement( "div" );
	eSlider.className = skynav_sClassSlider;
	
	if( skynav_sIdCom == sItemId ) 
	{
		eSlider.bMoveRight = false;
//         eSlider.style.visibility = "visible";
//         skynav_sCurrentlyVisibleId = sItemId;
	}
	else
	{
		eSlider.bMoveRight = true;	
	}
	
	var eOL = document.createElement( "ol" );
	var aSites = oSection[ skynav_sXMLTagSite ];
	var nSites = aSites.length;
	var oSite, oDisplay, sDisplay, oURL, sURL, eLI, eLink;
	for( var i=0; i<nSites; i++ )
	{
		oSite = aSites[ i ];
		sDisplay = oSite[ skynav_sXMLTagDisplay ];
		sURL = oSite[ skynav_sXMLTagUrl ];
        eLI = document.createElement( "li" );
        eLink = document.createElement( "a" );
		eLink.href = sURL;
		skynav_fSetInnerText( eLink, sDisplay );
        eLI.appendChild( eLink );
		eOL.appendChild( eLI );
	}
	eSlider.appendChild( eOL );
	skynav_fSetSlider( sItemId, eSlider );
	return eSlider;
}

function skynav_fSetSlider( sId, eSlider )
{
	window.skynav_aSliders[ sId ] = eSlider;
	window.skynav_aSliders.push( sId );
}
	
function skynav_fGetSlider( sId )
{
	return window.skynav_aSliders[ sId ];
}

function skynav_fItemOnMouseover( e )
{        
	var sHeadSliderId = this.sSliderId;
	if( this.nHeadWidth == null )
	{
		var eBG = document.getElementById( this.sBGId );
		this.nHeadWidth = eBG.offsetWidth;
		if( sHeadSliderId == skynav_sIdCom )
		{
			this.nHeadWidth += eBG.offsetLeft;	
		}
	}
	
	if( skynav_sCurrentlyVisibleId != sHeadSliderId )
	{
		skynav_sCurrentlyVisibleId = sHeadSliderId;
		var aSliders = skynav_aSliders;
		var nSliders = aSliders.length;
		var sSliderId, eSlider, eList;
		for( var i=0; i<nSliders; i++ )
		{
			sSliderId = aSliders[ i ];
			if( sHeadSliderId != sSliderId )
			{
				eSlider = skynav_fGetSlider( sSliderId );
			    eSlider.style.visibility = "hidden";
				eList = skynav_fGetFirstElementByTagName( eSlider, "ol" );
				eList.style.width = "auto";
			}
	   }
	   window.skynav_oSlider = new skynav_fSlider( sHeadSliderId, this.nHeadWidth  );
       skynav_oSlider.mStartWipe()
       skynav_oSlider.mStartSlide()
	}
}

function skynav_fSlider( sSliderId, nHeadWidth )
{
	var eElement = skynav_fGetSlider( sSliderId );
	var eItem = document.getElementById( sSliderId );
	var nItemWidth = eItem.offsetWidth;
	
	this.eList = skynav_fGetFirstElementByTagName( eElement, "ol" );
	
	var nListWidth = this.eList.offsetWidth;
	if( nListWidth <= 0 )
	{
		var aListItems = this.eList.getElementsByTagName( "li" );
		var nListItems = aListItems.length;
		for( var i=0; i<nListItems; i++ )
		{   
            nListWidth = Math.max(nListWidth,aListItems[ i ].offsetLeft);
			nListWidth += aListItems[ i ].offsetWidth; 
		}
	}
	
	
	this.eList.nOriginalListWidth = nListWidth;
	
    var nSliderWidth = this.eList.nOriginalListWidth;
	
	this.eList.style.width = ( ( nSliderWidth + 50 ) + "px" ); 
	
	eElement.style.width = (nSliderWidth) + "px";
    
	this.bMoveRight = ( eElement.bMoveRight == true ); 
	this.nEndLeft = this.bMoveRight ? nHeadWidth+10 : ( nItemWidth - nSliderWidth - nHeadWidth -18);
    
	if( skynav_nSlideOffset != null )
	{
		this.nStartLeft = this.bMoveRight ? ( 0 - skynav_nSlideOffset ) : ( 0 + skynav_nSlideOffset );
	}
	else
	{
		this.nStartLeft = this.bMoveRight ? ( ( 0 - nSliderWidth ) ) : ( nSliderWidth );
	}
	
    this.nDistanceToMove = 0 - this.nStartLeft;
	
	this.nDistanceToWipe = (nSliderWidth);
	
    this.eElement = eElement;
	this.nPeriodWipe = ( Math.PI / ( 2 * skynav_nDurationWipe ) );
	this.nPeriodSlide = ( Math.PI / ( 2 * skynav_nDurationSlide ) );
	this.mCheckEnd = this.bMoveRight ? this.mCheckEndRight : this.mCheckEndLeft;
	
	this.nElementWidth = nSliderWidth;
	
	
	this.eElement.style.left = ( ( this.nEndLeft ) + "px" );
	
    this.eList.style.left = ( this.nStartLeft + "px" );
}
skynav_fSlider.prototype.mCheckEndRight = skynav_fSliderCheckEndRight;
skynav_fSlider.prototype.mCheckEndLeft  = skynav_fSliderCheckEndLeft;
skynav_fSlider.prototype.mStartSlide    = skynav_fSliderStartSlide;
skynav_fSlider.prototype.mMoveSlide     = skynav_fSliderMoveSlide;
skynav_fSlider.prototype.mStartWipe     = skynav_fSliderStartWipe;
skynav_fSlider.prototype.mMoveWipe      = skynav_fSliderMoveWipe;
skynav_fSlider.prototype.mOnComplete    = skynav_fSliderComplete;

function skynav_fSliderCheckEndRight( nNewLeft ) { return ( nNewLeft >= 0 ) };
function skynav_fSliderCheckEndLeft( nNewLeft )  { return ( nNewLeft <= 0 ) };
function skynav_fSliderStartSlide()
{
    if( !skynav_nDurationSlide )
	{
		return;
	}
	this.eList.style.left = ( this.nStartLeft + "px" );
	this.eElement.style.visibility = "visible"; 
	this.nStartMillisecondsSlide = ( new Date() ).getTime();
	this.nEndMillisecondsSlide = ( this.nStartMillisecondsSlide + skynav_nDurationSlide );
    this.mMoveSlide();
}

function skynav_fSliderMoveSlide()
{
	var dNewTime = Math.min( this.nEndMillisecondsSlide, ( new Date() ).getTime() );
	var nNewLeft = Math.round( ( this.nDistanceToMove * Math.sin( this.nPeriodSlide  * ( dNewTime - this.nStartMillisecondsSlide ) ) ) + this.nStartLeft );
	if( this.mCheckEnd( nNewLeft ) )
	{   
		nNewLeft = 0;
		this.mOnComplete();
	}
	else
	{  
	   setTimeout( "window.skynav_oSlider.mMoveSlide()", 10 );
	}
    this.eList.style.left = ( nNewLeft + "px" );
}

function skynav_fSliderStartWipe()
{         
	this.eElement.style.visibility = "visible";
	if( !skynav_nDurationWipe )
	{   
		return;
	}
	this.nStartMillisecondsWipe = ( new Date() ).getTime();
	this.nEndMillisecondsWipe = ( this.nStartMillisecondsWipe + skynav_nDurationWipe );  
	this.mMoveWipe();
}

function skynav_fSliderMoveWipe()
{   
	var dNewTime = Math.min( this.nEndMillisecondsWipe, ( new Date() ).getTime() );
	
	var nNewWidth = Math.round( this.nDistanceToWipe * Math.sin( this.nPeriodWipe  * ( dNewTime - this.nStartMillisecondsWipe ) ) );
    if( nNewWidth >= this.nDistanceToWipe )
	{
		nNewWidth = this.nDistanceToWipe;
	}
	else
	{
	    setTimeout( "window.skynav_oSlider.mMoveWipe()", 10 );
	}
    if( this.bMoveRight )
	{
	    this.eElement.style.clip = "rect(0 " + nNewWidth + "px auto 0)"; 
	}
	else
	{
	    nNewWidth = this.eElement.offsetWidth - nNewWidth
		this.eElement.style.clip = "rect(0 auto auto " + nNewWidth + "px)";
	}
}

function skynav_fSliderComplete(){}


