/* 
	adbcom_global.js
	v 1.16 
	May 14 2006
*/
/*****************************************************************************************************************************/
/*****************************************************************************************************************************/
/****************                                                                                     ************************/
/****************                           IMPORTANT NOTE. PLEASE READ                               ************************/
/****************                                                                                     ************************/
/****************                                                                                     ************************/
/****************   Some of the statements included here are slated to be included in the <head>      ************************/
/****************   of each page.                                                                     ************************/
/****************                                                                                     ************************/
/****************   Search for the text "<head>" in this file to identify them                        ************************/
/****************   and see notes regarding their use.                                                ************************/
/****************                                                                                     ************************/
/****************                        ********************************                             ************************/
/****************                                                                                     ************************/
/****************   There may be some DEBUG code in this file, placed here for development            ************************/
/****************   purposes.                                                                         ************************/
/****************                                                                                     ************************/
/****************   Search for "DEBUG" and remove commented statements.                               ************************/
/****************                                                                                     ************************/
/****************                                                                                     ************************/
/*****************************************************************************************************************************/
/*****************************************************************************************************************************/

window.onload = adb_fWindowOnLoad;

String.prototype.trim = function(){return this.replace( /(^\s*)|(\s*$)/g, "")};
String.prototype.noSpaces = function(){return this.replace( /\s/g, "")};
var adb_oNavigator = window.navigator;
var adb_sUserAgent = adb_oNavigator.userAgent.toLowerCase();
var adb_bSafari = adb_sUserAgent.indexOf("safari")!=-1;

var adb_bGecko = ( adb_oNavigator.product && adb_oNavigator.product.toLowerCase() == "gecko" ) && !adb_bSafari;
var adb_bGeckoOld = adb_bGecko;
if( adb_bGecko )
{
	var adb_bFF = ( adb_sUserAgent.indexOf( "firefox" ) != -1 );
	if( adb_bFF	&& ( adb_oNavigator.productSub && ( parseInt( adb_oNavigator.productSub ) >= 20051111 ) ) )
	{
		adb_bGeckoOld = false;	
	}
}

var adb_bOpera = ( window.opera != null );
var adb_bOperaXSLT = false;
if( adb_bOpera )
{
	adb_bOperaXSLT = ( window.XSLTProcessor != null );
}
var adb_bIE55  = ( adb_sUserAgent.indexOf("msie 5.5") != -1 ) && !adb_bOpera;
var adb_bIE6   = ( adb_sUserAgent.indexOf('msie 6')  != -1 ) && !adb_bOpera;
var adb_bIE    = ( ( adb_bIE55 || adb_bIE6 ) );

var adb_bHTTP = null;

var adb_sEmStandardId = "adb_eEmStandard";
var adb_aLoadExecutes = new Array();

var adb_sEventOver = adb_bIE ? "onmouseenter" : "onmouseover";
var adb_sEventOut  = adb_bIE ? "onmouseleave" : "onmouseout";

var adb_sDelimiterLevel1 = "|";
var adb_sDelimiterLevel2 = "~";

var adb_sPanelClass = "aoc-genericpanel";
var adb_sColumnClass = "aoc-genericcolumn";
var adb_sPageFooterId = "framework-footer-container";
var adb_sTitleButtonsClass = "aoc-title-buttons-inner";
var adb_sPageContentClass = "vgn-inner-pagecontent";
var adb_sBorderTopLeftClass = "b-tl";


var adb_aImagesLoaded = new Array();

var adb_aAllThePanels = new Array();
var adb_aAllTheComps = new Array();

var adb_aWindowOnLoadBegin = new Array();
var adb_aWindowOnLoadEnd = new Array();

function adb_fWindowOnLoad()
{	
	adb_fWindowOnLoadBegin();
	
	adb_fCreateEmStandard();
	adb_fInitialisePanelArray();
	adb_fInitialiseCompArray();
	
	adb_fWindowOnLoadEnd();	
}

function adb_fWindowOnLoadBegin() { adb_fExecuteFunctions( adb_aWindowOnLoadBegin ); };
function adb_fWindowOnLoadEnd() { adb_fExecuteFunctions( adb_aWindowOnLoadEnd ); };
function adb_fExecuteFunctions( aFunctions )
{
	var nFunctions = aFunctions.length;
	var sFunction;
	for ( var i=0; i<nFunctions; i++ )
	{
		sFunction = aFunctions[ i ];
		if( typeof window[ sFunction ] == "function" )
		{
			window[ sFunction ]();
		}
	}
}

function adb_fWindowOnLoadBeginAdd( sFunction ) { window.adb_aWindowOnLoadBegin.push( sFunction ); };
function adb_fWindowOnLoadEndAdd( sFunction ) { window.adb_aWindowOnLoadEnd.push( sFunction ); };


function adb_fRedoOverhead(){ adb_fRedoPanelArray(); adb_fRedoCompArray(); };
function adb_fRedoPanelArray(){ adb_fClearPanelArray(); adb_fInitialisePanelArray(); }
function adb_fRedoCompArray(){ adb_fClearCompArray(); adb_fInitialiseCompArray(); }
function adb_fClearPanelArray(){ window.adb_aAllThePanels = new Array() };
function adb_fClearCompArray(){ window.adb_aAllTheComps = new Array() };
function adb_fGetPanelArray() { return window.adb_aAllThePanels };
function adb_fGetCompArray() { return window.adb_aAllTheComps };
function adb_fGetCompsByClass( sClass ) { return adb_fGetCompArray()[ sClass ] || new Array() };
function adb_fGetSingleComp( sClass )
{ 
	var aComps = adb_fGetCompArray()[ sClass ];
	if( aComps )
	{
		return aComps[ 0 ];	
	}
	return null;
};

function adb_fGetCompPanel() { return adb_fGetPanelArray()[ this.nPanelIndex ]; };
function adb_fGetPanelPanel(){ return adb_fGetPanelContainer( this, true ); };

function adb_fInitialisePanelArray()
{			  
	adb_fGetPanelsInElement( document.body );
}

function adb_fInitialiseCompArray()
{
	var aComps  = adb_fGetCompArray();
	var aPanels = adb_fGetPanelArray();
	var nPanels = aPanels.length;
	var ePanel, aDivs, eComp, j, sClasses, aClasses, nClasses, sClass;
	var fGetCompPanel = adb_fGetCompPanel;
	for( var i=0; i<nPanels; i++ )
	{
		ePanel = aPanels[ i ];
		aDivs = ePanel.getElementsByTagName( "div" );
		if( aDivs.length )
		{
			eComp = aDivs[ 0 ];
			sClasses = eComp.className;
			aClasses = sClasses.split( " " );
			nClasses = aClasses.length;
			for( j=0; j<nClasses; j++ )
			{
				sClass = aClasses[ j ];
				if( aComps[ sClass ] == null )
				{
					aComps[ sClass ] = new Array();
				}
				aComps[ sClass ].push( eComp );
			}
			aComps.push( eComp );
			eComp.nPanelIndex = i;
			ePanel.sCompClass = eComp.sCompClass = aClasses[ 0 ];
            eComp.mGetPanel = fGetCompPanel;
		}
	}
}

function adb_fGetPanelsInElement( eElement )
{   
	var bIsPanel = ( eElement != document.body );
	var aAllThePanels = adb_aAllThePanels;
	var sPanelClass = adb_sPanelClass;
	var aDivs = eElement.getElementsByTagName( "div" );	
	var nDivs = aDivs.length;
	if( nDivs == 0 )
	{
		return false; 
	}
	var bRetval = false, eDiv, bDuplicate, j, aClassnames, k, nClassnames, sClassname, bHasNested, nPanels;
	for( var i=0; i<nDivs; i++ )
	{
		eDiv = aDivs[ i ];
		aClassnames = eDiv.className.split( " " );
		nClassnames = aClassnames.length;
		for( j=0; j<nClassnames; j++ )
		{
			sClassname = aClassnames[ j ];
			switch( sClassname )
			{
				case sPanelClass:
					eDiv.mGetPanel = adb_fGetPanelPanel;
					bHasNested = adb_fGetPanelsInElement( eDiv );	
					if( !bHasNested )
					{
						bDuplicate = false;
						nPanels = aAllThePanels.length;
						for ( var k=0; k<nPanels; k++ )
						{
							if( aAllThePanels[ k ] == eDiv )
							{
								bDuplicate= true;
								break;
							}
						}
						if( !bDuplicate )
						{
							aAllThePanels.push( eDiv );
							
						}
						bRetval = true;
					}
					break;
//                 case adb_sPageContentClass:
//                     window.ePageContent = eDiv;
//                     break;
				case adb_sBorderTopLeftClass:	
					window.adb_aCutoffs.push( adb_fGetId( eDiv ) );
					break;
				case adb_sTitleButtonsClass:
					window.adb_sTitleButtonsId = adb_fGetId( eDiv );
					break;
				case adbpers_sContentContainerClass:
					window.adbpers_aContent.push( adb_fGetId( eDiv ) );
					break;
					
			}
		}
	}
	return bRetval
}

var adb_aCutoffs = new Array();



function adb_fGetFooterElement() { return document.getElementById( adb_sPageFooterId ) };

function adb_fGetPanelCompClassname( ePanel )
{
	var aDivs = ePanel.getElementsByTagName( "div" );
	if( aDivs.length )
	{
		var sClassName = aDivs[ 0 ].className;
		aClassName = sClassName.match( /^.*?(\s|$)/ );
		return aClassName[ 0 ].trim();
	}
	return null;
}

function adb_fGetPreviousSibling( eElement )
{
	var ePrevious = eElement.previousSibling;
	if( ePrevious != null )
	{
		while( ePrevious != null && ePrevious.nodeType != 1 )
		{
			ePrevious = ePrevious.previousSibling;	
		}
	}
	return ePrevious;
}

function adb_fGetNextSibling( eElement )
{
	var eNext = eElement.nextSibling;
	if( eNext != null )
	{
		while( eNext != null && eNext.nodeType != 1 )
		{
			eNext = eNext.nextSibling;	
		}
	}
	return eNext;
}

function adb_fGetParentElement( eElement )
{
	while( eElement.nodeType != 1 )
	{
		eElement = eElement.parentNode;	
	}
    return eElement;
}

function adb_fGetEvent( e ){ return ( e || window.event ); };

function adb_fGetSrcElement( oEvent )
{
	var eSrcElement = ( oEvent.srcElement || oEvent.target );
	while( eSrcElement.nodeType != 1 )
	{
		eSrcElement = eSrcElement.parentNode;	
	}
    return eSrcElement;
}

function adb_fEventGetPageX( oEvent )
{						 
	return ( ( oEvent.x != null ) ? ( oEvent.x + adb_fGetScrollLeft() ) : oEvent.pageX );
}

function adb_fEventGetPageY( oEvent )
{                        
	return ( ( oEvent.y != null ) ? ( oEvent.y + adb_fGetScrollTop() ) : oEvent.pageY );
}

function adb_fEventCancel( e )
{
	var oEvent = adb_fGetEvent( e );
	oEvent.returnValue = false;
	return false;
}

function adb_fSetInnerText( eElement, sText ) { ( eElement.innerText != null ) ? ( eElement.innerText = sText ) : ( eElement.textContent = sText ) };
function adb_fGetInnerText( eElement )
{ 
	var sText = '';	
	if( eElement.innerText != null )
	{
		sText = eElement.innerText;
        if( ( sText.trim().length == 0 ) && ( adb_bSafari ) && ( eElement.hasChildNodes() ) )
		{
			var oText = eElement.firstChild;
			if( oText.nodeType == 3 )
			{
				sText = oText.nodeValue;
			}
        }
	}
	else if( eElement.textContent != null )
	{
		sText = eElement.textContent;
	}
	return sText;
};

function adb_fAddClassName( eElement )
{
	var sTempClass = eElement.className.trim();
	var aArguments = ( typeof arguments[ 1 ] == "string" ) ? arguments : arguments[ 1 ]; 
	var nArguments = aArguments.length;
	for( var i=1; i<nArguments; i++ )
	{
		sTempClass += ( " " + aArguments[ i ] );	
	}
	eElement.className = sTempClass;	
}

function adb_fRemoveClassName( eElement )
{
	//status =(adb_fRemoveClassName.caller)
	var sTempClass = eElement.className.trim();
	var aArguments = ( typeof arguments[ 1 ] == "string" ) ? arguments : arguments[ 1 ]; 
	var nArguments = aArguments.length;
	for( var i=1; i<nArguments; i++ )
	{
		sTempClass = sTempClass.replace( aArguments[ i ], "").trim();	
	}
	eElement.className = sTempClass;	
}

function adb_fHasClassName( eElement, sClass )
{
	var aClasses = eElement.className.trim().split( " " );
	var nClasses = aClasses.length;
	for( var i=0; i<nClasses; i++ )
	{
		if( aClasses[ i ] == sClass )
		{
			return true;
		}
	}
	return false;
}

function adb_fGetCurrentStyle( eElement, sProperty )
{	 
	if( eElement.currentStyle != null ) 
	{                           
		return eElement.currentStyle[ sProperty.replace( /(\-)(.{1})/g, function(a,b,c){return c.toUpperCase()}) ];
	}
	else
	{
		var oDefaultView = document.defaultView;
		if( oDefaultView.getComputedStyle ) 
		{
			return oDefaultView.getComputedStyle( eElement, null ).getPropertyValue( sProperty );
		}
	}
	return null;
}

function adb_fMakeParamsArray( sParams )
{
	var aParams = sParams.trim().split( adb_sDelimiterLevel1 );
	var nParams = aParams.length;
	var aNames = new Array();
	var aParam, sParam, nEquals, sName, sValue;
	for( var i=0; i<nParams; i++ )
	{
		sParam = aParams[ i ];
		nEquals = sParam.indexOf( "=" );
		sName = sParam.substr( 0, nEquals );
		sValue = sParam.slice( nEquals + 1 );
//         aParam = aParams[ i ].split( "=" );
//         aNames[ aParam[ 0 ] ] = aParam[ 1 ];
//         aNames.push( aParam[ 0 ] );
		
		aNames[ sName ] = sValue;
		aNames.push( sName );
	}
	return aNames;
}

function adb_fGetCompParam( eElement, sParam ) { return adb_fGetElementPassedParams( eElement, true )[ sParam ]; };
function adb_fGetElementParam( eElement, sParam ) { return adb_fGetElementPassedParams( eElement, false )[ sParam ]; };

function adb_fGetElementPassedParams( eElement, bComp )
{
	if( bComp ) { eElement = adb_fGetCompContainer( eElement ); };
	if( typeof eElement.aPassedParams == "undefined" )
	{
		eElement.aPassedParams = adb_fMakeParamsArray( eElement.id );
	}
	return eElement.aPassedParams;
}


function adb_fGetParentByProperty( eElement, eOuterElement, sProperty, sValue, bParent )
{	
	sValue = sValue.toLowerCase();
	var xValue = new RegExp( "(^|\\s)" + sValue + "(\\s|$)" );
	if( bParent ) { eElement = eElement.parentNode; };
	while( !xValue.test( eElement[ sProperty ].toLowerCase() ) )
	{	
		eElement = eElement.parentNode;
		if( ( eElement == eOuterElement ) || ( eElement == null ) ) { return null };	
	}
	return eElement;
}

function adb_fGetParentByTagName( eElement, sTagName, eOuterElement, bParent )
{                       
	return adb_fGetParentByProperty( eElement, ( eOuterElement || document.body ), "tagName", sTagName, bParent );	
}

function adb_fGetParentByClassName( eElement, sClass, eOuterElement, bParent )
{
	return adb_fGetParentByProperty( eElement, ( eOuterElement || document.body ), "className", sClass, bParent );	
}

function adb_fGetPanelContainer( eElement, bParent )
{
	return adb_fGetParentByClassName( eElement, adb_sPanelClass, null, bParent );	
}

function adb_fGetCompContainer( eElement )
{
	var ePanel = adb_fGetPanelContainer( eElement, false );
	return adb_fGetFirstElementByClassName( ePanel, ePanel.sCompClass );	
}

function adb_fGetFirstElementByTagName( eParent, sTagName )
{
	return eParent.getElementsByTagName( sTagName )[ 0 ];
}

function adb_fGetElementByTagName( eParent, sTagName )
{
	if( eParent.tagName.toLowerCase() == sTagName.toLowerCase() )
	{
		return eParent;
	}
	else
	{
		return adb_fGetFirstElementByTagName( eParent, sTagName );
	}
}

var adb_sSelectedPopoutClass = "currentpopout";

function adb_fSetSelectedPopout()
{
	adb_fClearSelectedPopouts();
	var aElements = arguments;
	var aSelected = new Array();
    if( aElements != null )
	{
		var nElements = aElements.length;
		for( var i=0; i<nElements; i++ )
		{
			adb_fAddClassName( aElements[ i ], adb_sSelectedPopoutClass );
			aSelected.push( aElements[ i ] ); 	
		}
	}
	window.adb_aSelectedPopouts = aSelected;
   // alert(window.adb_aSelectedPopouts.length)
}

function adb_fGetSelectedPopouts()
{
	return window.adb_aSelectedPopouts;
}

function adb_fClearSelectedPopouts()
{
	var aElements = adb_fGetSelectedPopouts();
    if( aElements != null )
	{
		var nElements = aElements.length;
		//alert(nElements)
		for( var i=0; i<nElements; i++ )
		{
			 //   window.status = "c-"+ aElements[ i ].className
			adb_fRemoveClassName( aElements[ i ], adb_sSelectedPopoutClass );
		   //	window.status += aElements[ i ].className+aElements[ i ].innerText
		}
	}
	window.adb_aSelectedPopouts = null;
}

function adb_fFixMozPosBug() { if( adb_bGeckoOld ) { setTimeout( "adb_fFixMozPosBug2()", 10 ); } };

function adb_fFixMozPosBug2()
{	
	var aCutoffs = window.adb_aCutoffs;
	var nCutoffs = aCutoffs.length;
	var eCutoff;
	for( var i=0; i<nCutoffs; i++ )
	{
		if( eCutoff = document.getElementById( aCutoffs[ i ] ) )
		{
			eCutoff.style.marginTop = "1px";
			eCutoff.style.marginTop = "0px";
		}
	}
}

function adb_fGetFirstElementByClassName( eParent, sClass )
{
	return adb_fGetElementsByClassName.call( eParent, sClass )[ 0 ];
}

function adb_fGetElementsByClassName( sClass, sTagName )
{
	if( sTagName )
	{
		var aChildren = this.getElementsByTagName( sTagName );
	}
	else
	{
		var aChildren = adb_bIE55 ? this.all : this.getElementsByTagName( "*" );
	}
	var nChildren = aChildren.length;
	var eChild;
	var fHasClassName = adb_fHasClassName;
	var aClassElements = new Array();
	for( var i=0; i<nChildren; i++ )
	{
		eChild = aChildren[ i ];
		if( fHasClassName( eChild, sClass ) )
		{
			aClassElements.push( eChild	);
		}
	}
	return aClassElements;
}


function adb_fGetCSSBySelector( sSelector )
{
	var aStylesheets = document.styleSheets;
	var nStylesheets = aStylesheets.length;
	var aRules, nRules, j, eRule;
	for( var i=0; i<nStylesheets; i++ )
	{
		aRules = aStylesheets[ i ].rules; 
		nRules = aRules.length;
		for( j=0; j<nRules; j++ )
		{
			eRule = aRules[ j ];
			if( eRule.selectorText == sSelector )
			{                    
				return eRule.style.cssText;
			}
		}
	}
	return null;
}

// need next function as form.elements does not return the BUTTONs in safari, and we have no need for fieldsets.
function adb_fGetFormElements( eForm )
{
	var aElements = new Array();
	var aAllElements = adb_bIE55 ? eForm.all : eForm.getElementsByTagName( "*" );
	var nAllElements = aAllElements.length;
	var eAllElement;
	for( var i=0; i<nAllElements; i++ )
	{
		eAllElement	= aAllElements[ i ];
		switch( eAllElement.tagName.toLowerCase() )
		{
			case "input":
			case "button":
			case "select":
			case "textarea":
				aElements.push( eAllElement );
				break;
		}
	}	
	return aElements;
}

function adb_fGetId( eElement )
{
	var sId = eElement.id.trim();
	if( sId == "" )
	{
		sId = eElement.uniqueID;
		eElement.id = sId;
	}
	if( sId == null )
	{
		sId = adb_fGetRandomIdentifier();
        eElement.id = sId;
	}
	return sId;
}

function adb_fGetRandomIdentifier()
{
	var oDate = new Date(); 
	return ( "id" + oDate.getHours() + oDate.getMinutes() + oDate.getSeconds() + oDate.getMilliseconds() + ( Math.random() * ( 1 + Math.random() ) ) ).replace( /\./g, "" );
}

function adb_fGetScrollTop() { return ( (adb_bGecko || adb_bSafari ) ? window.pageYOffset : adb_bIE6 ? document.documentElement.scrollTop  : document.body.scrollTop ); };
function adb_fGetScrollLeft(){ return ( (adb_bGecko || adb_bSafari ) ? window.pageXOffset : adb_bIE6 ? document.documentElement.scrollLeft : document.body.scrollLeft ); };
function adb_fGetClientWidth() { return ( ( adb_bIE55 || adb_bOpera ) ? document.body.clientWidth : adb_bSafari ? window.innerWidth : document.documentElement.clientWidth ); };
function adb_fGetClientHeight() { return ( ( adb_bIE55 || adb_bOpera ) ? document.body.clientHeight  : adb_bSafari ? window.innerHeight : document.documentElement.clientHeight ); };
function adb_fGetScrollFirer()  { return ( (adb_bGecko || adb_bSafari ) ? window : adb_bIE6 ? document.documentElement : document.body ); };

function adb_fKeepInWindow( eElement, nLeftPos, nTopPos )
{
	var nMinSpace = 5;

	var nWindowLeftEdge = adb_fGetScrollLeft();
	var nWindowTopEdge  = adb_fGetScrollTop();
	var nWindowWidth    = adb_fGetClientWidth();
	var nWindowHeight   = adb_fGetClientHeight();
	var nWindowRightEdge  = ( nWindowLeftEdge + nWindowWidth ) - nMinSpace;
	var nWindowBottomEdge = ( nWindowTopEdge + nWindowHeight ) - nMinSpace;
	
	var nElementRightEdge = nLeftPos + eElement.offsetWidth;
	var nElementBottomEdge = nTopPos + eElement.offsetHeight;;
    if( nElementRightEdge > nWindowRightEdge )
	{
		nLeftPos -= ( nElementRightEdge - nWindowRightEdge );
		nLeftPos = Math.max( nMinSpace, nLeftPos );
	}

	if( nElementBottomEdge > nWindowBottomEdge )
	{
		nTopPos -= ( nElementBottomEdge - nWindowBottomEdge );
		nTopPos = Math.max( nMinSpace, nTopPos );
	}
	
	if( nTopPos < nWindowTopEdge )
	{
		nTopPos = nWindowTopEdge + nMinSpace;	
	}
	
	if( nLeftPos < nWindowLeftEdge )
	{
		nLeftPos = nWindowLeftEdge + nMinSpace;	
	}
	return [ nLeftPos, nTopPos ];
}

function adb_fShowSelects()
{
	if( adb_bIE )
	{
		var aSelects = document.getElementsByTagName( "select" );
		var nSelects = aSelects.length;
		var eSelect, sPreviousVisibility;
		for( var i=0; i<nSelects; i++ )
		{
			eSelect = aSelects[ i ];
			sPreviousVisibility = eSelect.sPreviousVisibility;
			if( sPreviousVisibility != null )
			{
				eSelect.style.visibility = sPreviousVisibility;
				eSelect.sPreviousVisibility = null;
			}
		}
	}
}

function adb_fHideSelects( eElement )
{	
	if( adb_bIE )
	{
		var aSelects = document.getElementsByTagName( "select" );
		var nSelects = aSelects.length;
		if( nSelects )
		{
            if( eElement )
			{
				var aToHide = new Array();
				var nElementLeft = eElement.offsetLeft;
				var nElementTop = eElement.offsetTop;
				var nElementRight = ( nElementLeft + eElement.offsetWidth );
				var nElementBottom = ( nElementTop + eElement.offsetHeight );
				var fGetElementLeft  = adb_fGetElementLeft;
				var fGetElementTop   = adb_fGetElementTop;
				var nSelectLeft, nSelectRight, nSelectTop, nSelectBottom, bOverlap;
				for( var i=0; i<nSelects; i++ )
				{
					eSelect = aSelects[ i ];
					nSelectLeft = fGetElementLeft( eSelect );
					nSelectRight = ( nSelectLeft + eSelect.offsetWidth );
					nSelectTop  = fGetElementTop( eSelect );
					nSelectBottom = ( nSelectTop + eSelect.offsetHeight );
					if( !(
						   ( nElementTop > nSelectBottom ) ||
						   ( nElementBottom < nSelectTop ) ||
						   ( nElementRight < nSelectLeft ) || 
						   ( nElementLeft > nSelectRight ) ) )
					{
						aToHide.push( eSelect );
					}
				}
			}
			else
			{
				var aToHide = aSelects;
			}
            var fGetCurrentStyle = adb_fGetCurrentStyle;
			var nToHide = aToHide.length;
			var eToHide;
			for( var i=0; i<nToHide; i++ )
			{
				eToHide = aToHide[ i ];
				eToHide.sPreviousVisibility = fGetCurrentStyle( eToHide, "visibility" );
				eToHide.style.visibility = "hidden";
			}
		}
	}
}

function adb_fDateValues( oDate )
{
	var aDays = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ]; 
	var aMonths = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; 
	this.nHours = oDate.getHours();
	this.nNon24 = ( this.nHours % 12 );
	this.sAmPm  = ( ( this.nHours >= 12 ) ? "pm" : "am" ),
	this.nMinutes = oDate.getMinutes();
	this.sMinutes = ( "00" + this.nMinutes ).slice( -2 );
    this.nDay = oDate.getDay();
	this.sDay = aDays[ this.nDay ];
	this.nDate = oDate.getDate();
	this.nMonth = oDate.getMonth();
	this.sMonth = aMonths[ this.nMonth ];
	this.sNon24Dot = ( this.nNon24 + "." + this.sMinutes + this.sAmPm );
	this.sNon24Colon = ( this.nNon24 + ":" + this.sMinutes + this.sAmPm );
}

function adb_fElementTextDecNone() { this.style.textDecoration = "none"; };
function adb_fElementTextDecUL() { this.style.textDecoration = "underline"; };

function adb_fGetTitleButtons()
{
	var sContainerId = window.adb_sTitleButtonsId;
	if( sContainerId )
	{
		return document.getElementById( sContainerId );
	}
	return null;
}

function adb_fShowTitleButtons()
{
	var eButs = adb_fGetTitleButtons();
	if( eButs )
	{
		eButs.style.display = "block";	
	}
}
/**
	PRELOAD / SIZE Images - START
**/
function adb_fLoadImages()
{
	var aImagesLoaded = adb_aImagesLoaded;
	var nImagesLoaded = aImagesLoaded.length;
	var aImages = arguments;
	var nImages = aImages.length;
	var sImageSrc, oImage;
	for( var i=0, j=nImagesLoaded; i<nImages; i++, j++ )
	{
		sImageSrc = aImages[ i ];
		if( aImagesLoaded[ sImageSrc ] == null )
		{
			oImage = new Image();
			oImage.src = sImageSrc;
			aImagesLoaded[ j ] = oImage;
			aImagesLoaded[ sImageSrc ] = j;	
		}
	}
}

function adb_fImageOnLoad( eImage )
{
	eImage = ( this || eImage );
	adb_fSetImageEmDims.call( eImage );
	eImage.onload = null;	
}

function adb_fSetImageEmDims()
{
	if( !adb_bOpera )
	{
		this.style.width  = adb_fGetEmValue( this.width );
		this.style.height = adb_fGetEmValue( this.height );
	}
}
/**
	PRELOAD / SIZE Images handler - END
**/
/**
	ELEMENT PAGE POSITION retrieval - START
**/
function adb_fGetElementLeft( eElement )   { return adb_fGetElementLeftTop( eElement, "offsetLeft", "clientLeft" ); };
function adb_fGetElementTop( eElement )    { return adb_fGetElementLeftTop( eElement, "offsetTop", "clientTop" ); };
function adb_fGetElementRight( eElement )  { return ( adb_fGetElementLeft( eElement ) + eElement.offsetWidth );  };
function adb_fGetElementBottom( eElement ) { return ( adb_fGetElementTop( eElement )  + eElement.offsetHeight ); };
function adb_fGetElementCentre( eElement ) { return ( adb_fGetElementLeft( eElement ) + ( eElement.offsetWidth / 2 ) ); };
function adb_fGetElementMiddle( eElement ) { return ( adb_fGetElementTop( eElement )  + ( eElement.offsetHeight / 2 ) ); };

function adb_fGetElementLeftTop( eElement, sOffset, sClient )
{
	var nPos = eElement[ sOffset ];
	var eParElement = eElement.offsetParent;
	var sTagName, nClient;
	while( eParElement != null )
	{
		if( ( ( sTagName = eParElement.tagName.toLowerCase() ) != "table" ) && ( sTagName != "body" ) )
		{
			if( ( nClient = eParElement[ sClient ] ) != null ) { nPos += nClient; }
		}
		nPos += eParElement[ sOffset ];
		eParElement = eParElement.offsetParent;
	}
	return nPos;
}
/**
	ELEMENT PAGE POSITION retrieval - END
**/
/**
	FIXED position component API ( for comps that reposition on window scroll ) - START
**/
function adb_fFixedSetPositionFixed( eFixed ) { adb_fFixedSetObject( new adb_fFixedObject( eFixed, ( adb_bIE || adb_bOpera || adb_bGeckoOld || adb_bSafari ) ) ); };
function adb_fFixedSetObject( oFixed ) { window.adb_oFixed = oFixed };
function adb_fFixedGetObject() { return window.adb_oFixed };

function adb_fFixedObject( eFixed, bAbsolute )
{   
    this.eElement = eFixed;
	this.eColumn = adb_fGetParentByClassName( eFixed, adb_sColumnClass );
	var eGutter = adb_fGetPreviousSibling( eFixed );
	if( eGutter != null )
	{
		this.eOffsetElement = eGutter;
		this.fGetOriginalTop = adb_fGetElementBottom;
	}
	else
	{
		this.eOffsetElement = this.eColumn;
		this.fGetOriginalTop = adb_fGetElementTop;
	}
	this.eFooterGutter = adb_fGetPreviousSibling( adb_fGetFooterElement() );
    this.mGetOriginalTop = adb_fFixedGetOriginalTop;
	this.mGetScrollTop = adb_fGetScrollTop;
	this.mSetPosition = bAbsolute ? adb_fFixedSetPositionAbs : adb_fFixedSetPositionFix;
	this.mGetKidsHeight = adb_fFixedGetKidsHeight;
	this.mSetPosition();
    adb_fAttachEvent( "scroll", adb_fFixedOnScroll,  window );
    adb_fAttachEvent( "resize", adb_fFixedOnScroll );
    if( adb_bGeckoOld )
	{ 
	    window.adb_oAutoscrollTimer = null;
    	adb_fAttachEvent( "DOMMouseScroll", adb_fFixedOnMousescroll,  window,   true );
		adb_fAttachEvent( "keypress",       adb_fFixedCheckKeypress,  document );
		adb_fAttachEvent( "keyup",          adb_fFixedCheckKeypress,  document );
		adb_fAttachEvent( "mousedown",      adb_fFixedCheckMousedown, document );
		adb_fAttachEvent( "click",          adb_fFixedCheckClick,     document );
	}
}

function adb_fFixedGetOriginalTop() { return this.fGetOriginalTop( this.eOffsetElement ); };
function adb_fFixedCheckMousedown( e ) { if( e.button == 1 ) { adb_fFixedSetAutoscrollTimer(); } };
function adb_fFixedCheckClick() { adb_fFixedClearAutoscrollTimer(); };
function adb_fFixedSetAutoscrollTimer() { window.adb_oAutoscrollTimer = window.setTimeout( "adb_fFixedOnAutoscroll()", 10 ); };
function adb_fFixedClearAutoscrollTimer() { window.clearTimeout( window.adb_oAutoscrollTimer ); window.adb_oAutoscrollTimer = null; };
function adb_fFixedOnAutoscroll() { adb_fFixedOnScroll(); adb_fFixedSetAutoscrollTimer(); };
function adb_fFixedOnMousescroll() { clearTimeout( adb_oAutoscrollTimer ); setTimeout( "adb_fFixedOnScroll()", 100 ); }
function adb_fFixedOnScroll() { adb_fFixedGetObject() ? adb_fFixedGetObject().mSetPosition() : null; }
	 
function adb_fFixedCheckKeypress( e )
{
	var nKey = e.keyCode;
	if( nKey >=33 && nKey <=40 )
	{
		adb_fFixedOnScroll();	
	}
}

function adb_fFixedSetPositionFix()
{		  
	var nHeight = this.mGetKidsHeight( this.eElement );
	this.eColumn.style.height = ( ( this.eElement.offsetTop - ( adb_bGecko ? this.eColumn.offsetTop : 0 ) + nHeight ) + "px" ); 
	var nScrollTop = this.mGetScrollTop();
	var nOrigTop = this.mGetOriginalTop();
	var nNewTop = ( nScrollTop + 2 );  
	var nFooterGutterTop = adb_fGetElementTop( this.eFooterGutter );
	if( ( nOrigTop + nHeight ) >= nFooterGutterTop )
	{
		this.eElement.style.position = "static";	
	}
	else if( nNewTop <= nOrigTop )
	{
		this.eElement.style.position = "static";	
	}
	else
	{
		var nNewBottom = ( nNewTop + this.eElement.offsetHeight );
		var nOverflow = ( nNewBottom - nFooterGutterTop  );
		if( nOverflow > 0 )
		{
			this.eElement.style.position = "absolute";
			nOverflow = Math.max( 0, nOverflow );
			this.eElement.style.top = ( nNewTop - nOverflow ) + "px";
		}
		else
		{  
			this.eElement.style.position = "fixed";
            this.eElement.style.top = "2px";
		}
	}
}

function adb_fFixedGetKidsHeight( eParent )
{
	var aChildren = eParent.childNodes;
	var nChildren = aChildren.length;
	var nHeight = 0;
	var eChild;
	for ( var i=0; i<nChildren; i++ )
	{
		eChild = aChildren[ i ];
		if( eChild.nodeType == 1 )
		{
			nHeight += eChild.offsetHeight;
		}
	}
	return nHeight;
}

function adb_fFixedSetPositionAbs()
{							 
    this.eColumn.style.height = ( this.mGetKidsHeight( this.eColumn ) + "px" );
	var nNewTop = Math.max( this.mGetOriginalTop(), this.mGetScrollTop() + 2 );
	var nNewBottom = ( nNewTop + this.eElement.offsetHeight );
	var nOverflow = Math.max( 0, ( nNewBottom - adb_fGetElementTop( this.eFooterGutter ) ) );
  //      this.eElement.style.top = ( nNewTop - nOverflow ) + "px";
this.eElement.style.top = adb_fGetEmValue( nNewTop - nOverflow );
}
/**
	FIXED position component API ( for comps that reposition on window scroll ) - END
**/
/**
	determining EMs ( relative measurement ) - START
**/
function adb_fCreateEmStandard()
{
	var eEM = document.createElement( "div" );
	eEM.id = adb_sEmStandardId;
	eEM.style.position = "absolute";
	eEM.style.visibility = "hidden";
	eEM.style.top = "0px";
	eEM.style.left = "0px";
	eEM.style.width = "1em";
	eEM.style.height = "1em";
	eEM.style.overflow = "hidden";
	document.body.appendChild( eEM );
}

function adb_fGetEmElement() { return document.getElementById( adb_sEmStandardId ); };

function adb_fGetEmValue( nPixels )
{
	return ( ( eEM = adb_fGetEmElement() ) ? ( ( nPixels / eEM.offsetHeight ) + "em" ) : ( nPixels + "px" ) );
}

function adb_fGetRelativeEmValue( nPixels )
{
	return adb_fGetEmValue( adb_fGetRelativePixels( nPixels ) );
}

function adb_fGetRelativePixels( nPixels )
{
	return ( ( eEM = adb_fGetEmElement() ) ? ( nPixels * ( eEM.offsetHeight / 16 ) ) : nPixels );
}

function adb_fGetPixelValue( nEM )
{
	return ( adb_fGetEmElement().offsetHeight * nEM );
}


/**
	determining EMs ( relative measurement ) - END
**/
/**
	COOKIE-related - START
**/

function adb_fGetCookie( sName )
{
	var sDocCookie = document.cookie;
	var xName = new RegExp( sName + "=([^\\;]*)" );
	var aMatches = sDocCookie.match( xName ); 
	if( aMatches != null )
	{
		var sValue = unescape( aMatches[ 1 ] );
		sValue = sValue.trim();
        return ( sValue );
	}
	return null;
}

function adb_fDeleteCookie( sName ) { adb_fSetCookie( sName, "", new Date() ); };

function adb_fSetCookie( sName, sValue, vDate )
{
	if( vDate == null )
	{
		var dDate = new Date();
		dDate.setDate( dDate.getDate() + 30 );
		var sExpires = ( "; expires=" + dDate.toGMTString() );
	}
	else if( vDate == "session" )
	{
		var sExpires = ( ";" );
	}
	else
	{
		var sExpires = ( "; expires=" + vDate.toGMTString() );	
	}
	document.cookie = [ sName, "=", escape( sValue ), sExpires, "; path=/;" ].join("");
}

function adb_fGetUserId()
{
	window.adb_sUserId = "test-unique-id-"+adb_fGetId( document.body ); // delete this for live 
	if( typeof window.adb_sUserId == "undefined" )
	{
		var sUserId = adb_fGetCookie( adb_sCookieUserId );
        if( sUserId )
		{
			sUserId = sUserid.trim();
		}
		window.adb_sUserId = sUserId;
	}
	return window.adb_sUserId;
}

var adb_sCookieUserId          = "just";
var adb_sCookieUserName        = "hant";
var adb_sCookieUserDisplayName = "uifd";
var adb_sCookieUserType        = "tred";
var adb_sCookieUserTokenId     = "jnhg";

var adb_sCookieShopStateJS     = "adbshop_state";
var adb_sCookieShopStateXML    = "adb_shop_cart";

var adb_sCookieShopQuote       = "adbquote";
var adb_sCookieLoginAttempt    = "adb_login_attempt"

var adb_sTypeG = "G";
var adb_sTypeP = "P";
var adb_sTypeC = "C";

function adb_fGetUserType() { return ( adb_fGetCookie( adb_sCookieUserType ) || adb_sTypeG ); };
function adb_fGetUserName() { return adb_fGetCookie( adb_sCookieUserName ) }; 
function adb_fGetUserDisplayName() { return adb_fGetCookie( adb_sCookieUserDisplayName ) }; 
function adb_fGetUserLoggedIn() { return adb_fGetCookie( adb_sCookieUserTokenId ) }; 
function adb_fGetShopStateJS() { return adb_fGetCookie( adb_sCookieShopStateJS ); };
function adb_fGetShopStateXML() { return adb_fGetCookie( adb_sCookieShopStateXML ); };
function adb_fGetShopQuote() { return adb_fGetCookie( adb_sCookieShopQuote ); };
function adb_fGetLoginAttempt() { return adb_fGetCookie( adb_sCookieLoginAttempt ); };

function adb_fDeleteUserType() { adb_fDeleteCookie( adb_sCookieUserType ); };
function adb_fDeleteUserName() { adb_fDeleteCookie( adb_sCookieUserName ); };
function adb_fDeleteUserDisplayName() { adb_fDeleteCookie( adb_sCookieUserDisplayName ); };
function adb_fDeleteLoginAttempt() { adb_fDeleteCookie( adb_sCookieLoginAttempt ); };

function adb_fSetLoginAttempt() { adb_fSetCookie( adb_sCookieLoginAttempt, "1", "session" ); };

function adb_fIsGuest() { return ( adb_fGetUserType() == adb_sTypeG ); };
function adb_fIsLoggedIn() { return ( adb_fGetUserLoggedIn() != null ); };
function adb_fHasUserName() { return ( adb_fGetUserName() != null ); };
function adb_fHasDisplayName() { return ( adb_fGetUserDisplayName() != null ); };
function adb_fHasShopQuote() { return ( adb_fGetShopQuote() != null ); };
function adb_fHasLoginAttempt() { return ( adb_fGetLoginAttempt() != null ); };

function adb_fHasShopBasket()
{
	var sStateCookie = adb_fGetShopStateXML()
	if( sStateCookie != null )
	{
		sStateCookie = sStateCookie.noSpaces();	
		if( ( /<cart><.+><\/cart>/ ).test( sStateCookie ) )
		{
			return true;
		}
	}
	sStateCookie = adb_fGetShopStateJS();
	if( sStateCookie != null )
	{
		sStateCookie = sStateCookie.replace( /[NaN|\|]/g, "" );
		if( parseInt( sStateCookie ) > 0 )
		{
			return true;
		}
	}
    return false;
}

function adb_fIsShopBasketPage()
{
	return ( window.adbshop_fInitialise != null )
}

/**
	COOKIE-related - END
**/
/**
	EVENT attaching/detaching cross-browser API - START
**/
function adb_fAttachEvent( sEvent, vFunction, eElement, bKeepCase ) { adb_fBindEvent( "attachEvent", "addEventListener", sEvent, vFunction, eElement, bKeepCase ); };		
function adb_fDetachEvent( sEvent, vFunction, eElement, bKeepCase ) { adb_fBindEvent( "detachEvent", "removeEventListener", sEvent, vFunction, eElement, bKeepCase ); };

function adb_fBindEvent( sAttach, sListener, sEvent, vFunction, eElement, bKeepCase )
{
	eElement = ( eElement || window );
	var fFunction = null;
	if( typeof vFunction == "string" )
	{
		fFunction = window[ vFunction ];
	}
	else
	{
		fFunction = vFunction;	
	}
	if( fFunction != null )
	{
		if( !bKeepCase )
		{
			sEvent = sEvent.toLowerCase();
		}
		if( sEvent.indexOf( "on" ) == 0 )
		{
			sEvent = sEvent.slice( 2 );
		}
		if( ( sEvent == "load" ) && ( eElement == window ) )
		{
			window.adb_aLoadExecutes.push( fFunction ); 
		}
		if( window[ sAttach ] )
		{
			eElement[ sAttach ]( "on" + sEvent, fFunction );
		}
		else
		{
			eElement[ sListener ]( sEvent, fFunction, false ); 
		}		
	}
}
/**
	EVENT attaching/detaching cross-browser API - END
**/
/**
	AJAX-related - START
**/
var adb_nHTTPTimeout = 10000;

function adb_fCanHttp()
{
	var bHTTP = window.adb_bHTTP;
	if( typeof bHTTP != "boolean" )
	{
		var oHTTP;
		var fGetBrowserHTTP;
		bHTTP = true;
		if( window.XMLHttpRequest != null )
		{
			try
			{
				oHTTP = new XMLHttpRequest();
				fGetBrowserHTTP = adb_fGetHTTPGecko;
			}
			catch( e )
			{
				bHTTP = false;
			}
		}
		else if( adb_bIE )
		{
			try
			{
				oHTTP = new ActiveXObject( "Msxml2.XMLHTTP" );
				fGetBrowserHTTP = adb_fGetHTTPIeNew;
			} 
			catch( e )
			{
				try
				{
					oHTTP = new ActiveXObject( "Microsoft.XMLHTTP" );
					fGetBrowserHTTP = adb_fGetHTTPIeOld;
				}
				catch ( f )
				{
					bHTTP = false;
				}
			}
		}
		window.adb_bHTTP = bHTTP;
		if( bHTTP )
		{
			window.adb_fGetBrowserHTTP = fGetBrowserHTTP;	
		}
	}
	return bHTTP;
}

function adb_fGetHTTPIeNew() { return new ActiveXObject( "Msxml2.XMLHTTP" ); };
function adb_fGetHTTPIeOld() { return new ActiveXObject( "Microsoft.XMLHTTP" ); };
function adb_fGetHTTPGecko() { return new XMLHttpRequest(); };
function adb_fGetHTTP()      { return window.adb_fGetBrowserHTTP(); };

function adb_fSendHTTP( sURL, bAsync, fCall )
{
	var oHttp = adb_fGetHTTP();
	if( bAsync )
	{
		if( fCall != null )
		{
			var aArguments = new Array();
			var nReceived = arguments.length;
			var nExpected = adb_fSendHTTP.length;
			for( var i=nExpected; i<nReceived; i++ )
			{
				aArguments.push( arguments[ i ] );	
			}
            oHttp.onreadystatechange = function()
			{	   
				if( oHttp.readyState == 4 )
				{
					if( oHttp.status == 0 || oHttp.status == 200 )
					{
						fCall.apply( oHttp, aArguments ); 
					}
				}
			}
		}
	}
    oHttp.open( "GET", sURL, bAsync );
    try { oHttp.send( null ); }
	catch(e) { return false; }
	return oHttp;
}

function adb_fSendHTTPSync( sURL ) { return adb_fSendHTTP( sURL, false ); };
function adb_fSendHTTPASync( sURL ) { return adb_fSendHTTP( sURL, true ); };

function adb_fHTTPAbort( sElementId )
{
	var oElementHttp = adb_fGetElementHttp( sElementId );
	if( !oElementHttp.bHttpComplete )
	{
		var oHttp = oElementHttp.oHttp;
		if( oHttp && oHttp.abort )
		{	 
			oHttp.abort();
			oElementHttp.onError( sElementId );	
		}
	}
}

var adb_aElementHttps = new Array();

function adb_fSetElementHttp( sElementId, oElementHttp ) { window.adb_aElementHttps[ sElementId ] = oElementHttp; };
function adb_fGetElementHttp( sElementId ) { return window.adb_aElementHttps[ sElementId ]; };

function adb_fSetHTTPResponseHTML( eElement, sURL, bAsync, fOnSingleComplete, fOnSingleError, fOnSeriesComplete )
{
	adb_fSetHTTPResponseContent( "html", eElement, sURL, bAsync, fOnSingleComplete, fOnSingleError, fOnSeriesComplete );
}

function adb_fSetHTTPResponseText( eElement, sURL, bAsync, fOnSingleComplete, fOnSingleError, fOnSeriesComplete )
{
	adb_fSetHTTPResponseContent( "text", eElement, sURL, bAsync, fOnSingleComplete, fOnSingleError, fOnSeriesComplete );
}

function adb_fSetHTTPResponseContent( sType, eElement, sURL, bAsync, fOnSingleComplete, fOnSingleError, fOnSeriesComplete )
{
	var oElementHttp = new Object();
    var sElementId = adb_fGetId( eElement );
    adb_fSetElementHttp( sElementId, oElementHttp );
	
	var oHttp = adb_fGetHTTP();
    oHttp.onreadystatechange = function()
	{	   
		if( oHttp.readyState == 4 )
		{
		  //  clearTimeout( oElementHttp.oHttpTimeout	);
			if( oHttp.status == 0 || oHttp.status == 200 )
			{
				oElementHttp.bHttpComplete = true;
				switch( sType )
				{
					case "html":
						eElement.innerHTML = oHttp.responseText;
						break;
					case "text":
						adb_fSetInnerText( eElement, oHttp.responseText );
						break;
				}
				if( fOnSingleComplete != null )
				{
					fOnSingleComplete( sElementId );	
				}
				if( fOnSeriesComplete != null )
				{
					fOnSeriesComplete();	
				}
			}
			else
			{
				fOnSingleError( sElementId );	
			}
		}
	}
	oElementHttp.oHttp = oHttp;
	oElementHttp.bHttpComplete = false;
	oElementHttp.onError = ( fOnSingleError || new Function() );
  //  oElementHttp.oHttpTimeout = setTimeout( "adb_fHTTPAbort( '" + sElementId + "' )", adb_nHTTPTimeout );
	oHttp.open( "GET", sURL, bAsync ); 
    try
	{
		oHttp.send( null );
	}
	catch( e )
	{			  
		if( fOnSingleError != null )
		{
		 //   clearTimeout( oElementHttp.oHttpTimeout	);
			fOnSingleError( sElementId, e );	
		}
	}
}
/**
	AJAX-related - END
**/
/**
   XSLT-related - END
**/
    
var adb_fDoTransform = adb_bIE ? adb_fDoTransformIE : adb_bGecko ? adb_fDoTransformNS : adb_bOperaXSLT ? adb_fDoTransformOp : adb_fDoTransformNot;

function adb_fDoTransformNot(){ return false; }

function adb_fDoTransformIE( sXMLURL, sXSLURL, eContainer, fOnTransform, fOnError )
{
	var dXML = new ActiveXObject( "Msxml2.DOMDocument" );
	dXML.async = true;
	dXML.onreadystatechange = function()
	{
		if( dXML.readyState == 4 )
		{
			var oError = dXML.parseError;
			if( oError.errorCode != 0 )
			{
				if( fOnError ){ fOnError( "xml", eContainer, oError.reason ); };
				// handle error oError.reason
			}
			else
			{
				var dXSL = new ActiveXObject("Msxml2.DOMDocument.3.0");
				dXSL.async = true;
				dXSL.onreadystatechange = function()
				{   			
					if( dXSL.readyState == 4 )
					{
						var oError = dXSL.parseError;
						if( oError.errorCode != 0 )
						{
							if( fOnError ){ fOnError( "xsl", eContainer, oError.reason ); };
							// handle error oError.reason
						   // alert(oError.reason)
						}
						else
						{
							var sHTML = dXML.transformNode( dXSL );
							eContainer.innerHTML = sHTML;
							if( fOnTransform ) { fOnTransform( eContainer ); };
						}
					}
				}
				dXSL.load( sXSLURL );
			}
		}
	}
    dXML.load( sXMLURL );
}

function adb_fDoTransformNS( sXMLURL, sXSLURL, eContainer, fOnTransform, fOnError )
{  
	var oXSLTProcessor = new XSLTProcessor();
	var oImplementation = document.implementation; 
	var dXML = oImplementation.createDocument( "", "dummy", null );
	dXML.onload = function()
	{
		var dXSL = oImplementation.createDocument("", "dummy1", null);
		dXSL.onload = function()
		{
			oXSLTProcessor.importStylesheet( dXSL );
			var dHTML = oXSLTProcessor.transformToFragment( dXML, document );
            eContainer.innerHTML = "";
            eContainer.appendChild( dHTML );
			if( fOnTransform ) { fOnTransform( eContainer ); };
		};
		try
		{
			dXSL.load( sXSLURL );
		}
		catch( e )
		{
			if( fOnError ){ fOnError( "xsl", eContainer, e.name ); };
		}
	};
	try
	{
		dXML.load( sXMLURL );
	}
	catch( e )
	{   
		if( fOnError ){ fOnError( "xml", eContainer, e.name ); };
	}
}

function adb_fDoTransformOp( sXMLURL, sXSLURL, eContainer, fOnTransform, fOnError )
{		
	if( adb_fCanHttp() )
	{
		adb_fSendHTTP( sXMLURL, true, adb_fDoTransformOp2, sXSLURL, eContainer, fOnTransform, fOnError );
	}
}

function adb_fDoTransformOp2( sXSLURL, eContainer, fOnTransform, fOnError )
{   
	adb_fSendHTTP( sXSLURL, true, adb_fDoTransformOp3, this.responseXML, eContainer, fOnTransform, fOnError );
}

function adb_fDoTransformOp3( dXML, eContainer, fOnTransform, fOnError )
{
	var dXSL = this.responseXML;
	var oXSLTProcessor = new XSLTProcessor();
    oXSLTProcessor.importStylesheet( dXSL );
	var dHTML = oXSLTProcessor.transformToFragment( dXML, document );
    eContainer.innerHTML = "";
    eContainer.appendChild( dHTML );
    if( fOnTransform ) { fOnTransform( eContainer ); };
}

/**
   XSLT-related - END
**/                                                                     

/************************************

	BANNER REPLACEMENT
	substitution of random header image
	Used: all pages ( statements must stay in a global js file )
	
************************************/
adb_fWindowOnLoadBeginAdd( "adbbanner_fDisplayBanner" );

var adbbanner_sImgId = "banner-jpg";

document.write("<style type='text\/css'>\n",
			   "#" + adbbanner_sImgId    + "{visibility:hidden}\n",
			   "." + adb_sTitleButtonsClass    + "{display:none}\n",
			   "<\/style>\n" );			

function adbbanner_fDisplayBanner()
{		  
	var eImg = document.getElementById( adbbanner_sImgId );
	if( eImg != null )
	{
		var aBanners = ( window.framework_banner_arrImages );
		if( aBanners )
		{
			var nBanners = aBanners.length;
			if( nBanners )
			{
				var nRandom = nBanners;
				while( nRandom > ( nBanners - 1 ) )
				{
					nRandom	= Math.floor( Math.random() * nBanners );
				}
				var oBanner = aBanners[ nRandom ];
				var sBannerSrc = oBanner.src; 
				if( sBannerSrc != null )
				{
					eImg.onload = function(){this.style.visibility = "visible";};
					eImg.src = ( window.framework_banner_path + sBannerSrc );
					var sBannerAlt = oBanner.alt;
					if( sBannerAlt != null )
					{
						eImg.alt = sBannerAlt;
						eImg.title = sBannerAlt;	
					}
					return;
				}
			}
		}
		else
		{
		eImg.style.visibility = "visible";
	}
}
}
/************************************
	END - BANNER REPLACEMENT
************************************/

/************************************

	HEADER ROLLOVER
	for both Nav and SubNav bars
	Used: all pages ( statements must stay in a global js file )
	
************************************
adb_fAttachEvent( "load", adbhdrroll_fInitialise );

var adbhdrroll_sNavBarId = "nav-bar-container-inner";
var adbhdrroll_sSubNavBarId = "sub-nav-container";
var adbhrdroll_sImageExt = ".gif";
var adbhrdroll_sImageRolloverSuffix = "-rollover";
var adbhrdroll_sImageRolloverSrcEnd = ( adbhrdroll_sImageRolloverSuffix + adbhrdroll_sImageExt );

function adbhdrroll_fInitialise()
{
	adbhdrroll_fSetup( adbhdrroll_sNavBarId );
	adbhdrroll_fSetup( adbhdrroll_sSubNavBarId );
}

function adbhdrroll_fSetup( sNavBarId )
{
	var eNavBar = document.getElementById( sNavBarId );
	if( eNavBar )
	{
		var aImgs = eNavBar.getElementsByTagName( "img" );
		var nImgs = aImgs.length;
		var eImg, sSrc, sClass, sSrcOver;
		var xSelected = /selected/;
		var xRollover = /rollover/;
		var sImageExt = adbhrdroll_sImageExt;
		var sImageRolloverSrcEnd = adbhrdroll_sImageRolloverSrcEnd;
		var fLoadImages = adb_fLoadImages;
		for( var i=0; i<nImgs; i++ )
		{
			eImg = aImgs[ i ];
			sSrc = eImg.src;
			sClass = eImg.className;
			if( xSelected.test( sClass ) || xRollover.test( sSrc ) ) { continue };
			eImg.sInitialSrc = sSrc;
			sSrcOver = sSrc.replace( sImageExt, "" ) + sImageRolloverSrcEnd;
			fLoadImages( sSrcOver );
			eImg.sRolloverSrc = sSrcOver;
			eImg.onmouseover = function(){ this.src = this.sRolloverSrc };
			eImg.onmouseout  = function(){ this.src = this.sInitialSrc };
		}
	}
}
************************************
	END - HEADER ROLLOVER
************************************/


/************************************

	HEADER ROLLOVER
	for both Nav and SubNav bars
	Used: all pages ( statements must stay in a global js file )
	
************************************/
adb_fAttachEvent( "load", adbhdrroll_fInitialise );

var adbhdrroll_sNavBarId = "nav-bar-container-inner";
var adbhdrroll_sSubNavBarId = "sub-nav-container";
var adbhrdroll_sImageExt = ".gif";
var adbhrdroll_sImageRolloverSuffix = "-rollover";
var adbhrdroll_sImageRolloverSrcEnd = ( adbhrdroll_sImageRolloverSuffix + adbhrdroll_sImageExt );

function adbhdrroll_fInitialise()
{
	adbhdrroll_fSetup( adbhdrroll_sNavBarId );
	adbhdrroll_fSetup( adbhdrroll_sSubNavBarId );
}

function adbhdrroll_fSetup( sNavBarId )
{
	var eNavBar = document.getElementById( sNavBarId );
	if( eNavBar )
	{
		var aImgs = eNavBar.getElementsByTagName( "img" );
		var nImgs = aImgs.length;
		var eImg, sSrc, sClass, sSrcOver;
		var xSelected = /selected/;
		var xRollover = /rollover/;
		var sImageExt = adbhrdroll_sImageExt;
		var sImageRolloverSrcEnd = adbhrdroll_sImageRolloverSrcEnd;
		var fLoadImages = adb_fLoadImages;
		for( var i=0; i<nImgs; i++ )
		{
			eImg = aImgs[ i ];
			sSrc = eImg.src;
			sClass = eImg.className;
			if( xSelected.test( sClass ) || xRollover.test( sSrc ) ) { continue };
			eImg.sInitialSrc = sSrc;
			sSrcOver = sSrc.replace( sImageExt, "" ) + sImageRolloverSrcEnd;
			fLoadImages( sSrcOver );
			eImg.sRolloverSrc = sSrcOver;
			eImg.onmouseover = function(){ this.src = this.sRolloverSrc };
			eImg.onmouseout  = function(){ this.src = this.sInitialSrc };
		}
	}
}
/************************************
	END - HEADER ROLLOVER
************************************/



/************************************

	SIMPLE TEXT INPUT FOCUS 
	text replacement onfocus and onblur
	Used: all pages ( statements must stay in a global js file )
	
************************************/
adb_fAttachEvent( "load", adbinputs_fInitialise );

function adbinputs_fInitialise()
{
	var aInputs = new Array();
	var aAllInputs = document.body.getElementsByTagName( "input" );
	var nAllInputs = aAllInputs.length;
	var eInput, sDefault;
	for( var i=0; i<nAllInputs; i++ )
	{
		eInput = aAllInputs[ i ];
		if( ( eInput.type == "text" ) )
		{
			sDefault = eInput.defaultValue;
			if( sDefault != null )
			{
				if( sDefault.trim().length > 0 )
				{
					aInputs.push( eInput );	
				}
					
			}
		}
    }
	var nInputs = aInputs.length;
	var bFound = false;
	for( i=0; i<nInputs; i++ )
	{
		eInput = aInputs[ i ];
		if( !bFound )
		{
			if( eInput.id != "" )
			{
				 window.adb_sGeckoFocus = eInput.id;
				 bFound = true;
			}
		}
		if( adb_fHasClassName( eInput, adbforms_sReadonlyClass ) )
		{
			continue;
		}
		if( eInput.onfocus == null )
		{
			eInput.onfocus = adbinputs_fOnFocus;
			eInput.onblur = adbinputs_fOnBlur;
		}
	}
}

function adbinputs_fOnFocus() { if( this.value.trim() == this.defaultValue ){ this.value = '' } };
function adbinputs_fOnBlur()  { if( this.value.trim().length == 0 ){ this.value = this.defaultValue } };
/************************************
	END - SIMPLE TEXT INPUT FOCUS 
************************************/

/************************************

	RATE IT! 
	User 5-star rating functionality
    Used: framework pages ( statements could be moved to a framework-only js file )
	
************************************/
adb_fAttachEvent( "load", adbrate_fInitialise );

var adbrate_sClassname = "aoc-rating";
var adbrate_sStarKeywordHollow = "hollow";
var adbrate_sStarKeywordSolid = "solid";
var adbrate_sSavedClass = "saved";
var adbrate_sSavedMessage = "Saved";

var adbrate_sQueryRating = "rating";
var adbrate_sQueryUserId = "userId";
var adbrate_sQueryProgId = "programmeId";

var adbrate_sParamRatingText = "ratingtext";
var adbrate_sParamProgId = "progid";

var adbrate_sBaseURLAttrib = "rating";

document.write("<style type='text\/css'>\n",
			   "." + adbrate_sClassname    + "{display:block!important;;}\n",
               ".star-rating-head { display:block!important; }\n",
			   ".rated-recommendations-content .programme-title span { cursor:pointer; cursor:hand; }\n",

			   "<\/style>\n" );
			
function adbrate_fInitialise()
{
	var aRates = adb_fGetElementsByClassName.call( document.body, adbrate_sClassname, "p" );
	var nRates = aRates.length;
	var eRate, sProgrammeId, aImgs, nImgs, eImg, j, eSpan, sSrc, sSrcSolid;
	var sEventOver = adb_sEventOver;
	var sEventOut  = adb_sEventOut;
	var sKeywordHollow = adbrate_sStarKeywordHollow;
	var sKeywordSolid = adbrate_sStarKeywordSolid;
	
	var sMessages, aMessages = new Array();
	if( nRates > 0 )
	{
		eRate = aRates[ 0 ];
        sMessages = adb_fGetCompParam( eRate, adbrate_sParamRatingText );
		if( sMessages ) { aMessages = sMessages.split( adb_sDelimiterLevel2 ); };
	}
	
	for( i=0; i<nRates; i++ )
	{
		eRate = aRates[ i ];
		sProgrammeId = adb_fGetElementParam( eRate, adbrate_sParamProgId );
        if( sProgrammeId )
		{
			aImgs = eRate.getElementsByTagName( "img" );
			nImgs = aImgs.length;
			if( nImgs > 0 )
			{
				eImg = aImgs[ 0 ];
				sSrc = eImg.src;
				eRate.sSrcHollow = eImg.src;
				sSrcSolid = sSrc.replace( sKeywordHollow, sKeywordSolid );
					eRate.sSrcSolid  = sSrcSolid;
					adb_fLoadImages( sSrcSolid );
					eRate.aMessages = aMessages;
					for( j=0; j<nImgs; j++ )
					{
						eImg = aImgs[ j ];
						eImg.nIndex = j;
						eImg[ sEventOver ] = adbrate_fOnMouseover;
						eImg.onclick = adbrate_fOnClick;
						eImg.alt = "";
						eImg.nRating = ( j + 1 );
						eImg.sProgrammeId = sProgrammeId;
					}
					eRate[ sEventOut ] = adbrate_fOnMouseout;
					eSpan = adb_fGetFirstElementByTagName( eRate, "span" );
					if( eSpan )
					{
						eSpan.innerHTML = "&nbsp;";
						eSpan[ sEventOver ] = adbrate_fOnMouseout;	
					}
					adbrate_fSetState( eRate );
				}
			}
		}
	}

function adbrate_fSetState( eRate )
{
	var aStars = eRate.getElementsByTagName( "img" );
	var nStars = aStars.length;
	for( var i=0; i<nStars; i++ )
	{
		eStar = aStars[ i ];
		eStar.sStateSrc = eStar.src;
	}
    var eSpan = adb_fGetFirstElementByTagName( eRate, "span" );
	if( eSpan )
	{
		eSpan.sStateClass = eSpan.className;
		eSpan.sStateText = eSpan.innerHTML;
	}
}

function adbrate_fRestoreState( eRate )
{
	var aStars = eRate.getElementsByTagName( "img" );
	var nStars = aStars.length;
	for( var i=0; i<nStars; i++ )
	{
		eStar = aStars[ i ];
		eStar.src = eStar.sStateSrc;
	}
    var eSpan = adb_fGetFirstElementByTagName( eRate, "span" );
	if( eSpan )
	{
		adb_fAddClassName( eSpan, eSpan.sStateClass );
		eSpan.innerHTML = eSpan.sStateText;
	}
}

function adbrate_fOnMouseover()
{
	var eRate = this.parentNode;
	var nIndex = this.nIndex;
	var aStars = eRate.getElementsByTagName( "img" );
	var nStars = aStars.length;
	var sSolidSrc = eRate.sSrcSolid;
	var sHollowSrc = eRate.sSrcHollow;
	var sCurrentSrc = sSolidSrc;
	var eStar;
	for( var i=0; i<nStars; i++ )
	{
		eStar = aStars[ i ];
		eStar.src = sCurrentSrc;
		if( i == nIndex )
		{
			sCurrentSrc = sHollowSrc;	
		}
	}
	var eSpan = adb_fGetFirstElementByTagName( eRate, "span" );
	if( eSpan )
	{
		eSpan.className = "";
		adb_fSetInnerText( eSpan, ( eRate.aMessages[ nIndex ] || "" ) );
	}
}

function adbrate_fOnMouseout()
{	
	var eRate = adb_fGetParentByTagName( this, "p" );
	adbrate_fRestoreState( eRate );
}

function adbrate_fOnClick( e )
{
	var eRate = adb_fGetParentByTagName( this, "p" );
    adbrate_fShowSaved( eRate );
	adbrate_fSetState( eRate );
	if( adbrate_fPostRating( this ) )
	{
		var oEvent = adb_fGetEvent( e );
		oEvent.returnValue = false;
		return false;	
	}
	return true;
}

function adbrate_fShowSaved( eRate )
{
	var eSpan = adb_fGetFirstElementByTagName( eRate, "span" );                                     
	if( eSpan )
	{
		adb_fSetInnerText( eSpan, adbrate_sSavedMessage );
		eSpan.className = adbrate_sSavedClass;
	}
}

function adbrate_fPostRating( eImg )
{
	if( adb_fCanHttp() )
	{
		var sUserId = adb_fGetUserId();
		if( sUserId )
		{
			var sBaseURL = adb_fGetCompParam( eImg, adbrate_sBaseURLAttrib );
			if( sBaseURL )
			{
				
				//var sURL = [ sBaseURL,"?",adbrate_sQueryUserId,"=",sUserId,"&",adbrate_sQueryRating,"=",eImg.nRating,"&",adbrate_sQueryProgId,"=",eImg.sProgrammeId ].join( "" );
				var sURL = [ sBaseURL,"&",adbrate_sQueryRating,"=",eImg.nRating,"&",adbrate_sQueryProgId,"=",eImg.sProgrammeId ].join( "" );
				//alert(sURL)
				return adb_fSendHTTPASync( sURL );
			}
		}
	}
	return false;
}
/************************************
	END - RATE IT! 
************************************/

/************************************

	GENERAL FORM HANDLING
	Used: on pages with forms
		  created as subsets of MASTER FORM TEMPLATE ( statements could move to a separate js file loaded only into "form" pages )
		  
************************************/
adb_fAttachEvent( "load", adbforms_fInitialise );

var adbforms_sFormCompClass          = "global-form";
var adbforms_sFormClass              = "global-form-form";
var adbforms_sRequiredFieldClass     = "form-input-highlight-required";
var adbforms_sInvalidFieldClass      = "form-input-highlight-invalid";
var adbforms_sDefaultWarningClass    = "global-form-tip-warning";
var adbforms_sRequiredWarningClass   = "global-form-tip-warning-required";
var adbforms_sInvalidWarningClass    = "global-form-tip-warning-invalid";
var adbforms_sDefaultTipClass        = "form-tip-text";
var adbforms_sRequiredTipClass       = "form-tip-text-required";
var adbforms_sInvalidTipClass        = "form-tip-text-invalid";
var adbforms_sFormLineClass          = "global-form-inputline";
var adbforms_sFormLineInputClass     = "global-form-inputline-input";
var adbforms_sDefaultValueClass      = "global-form-input-default-value";
var adbforms_sHiddenInputTipClass    = "global-form-input-tip";
var adbforms_sInputWrapperSpanPrefix = "wrapper-";
var adbforms_sHintsTipsPanelId       = "forms-tip-container";
var adbforms_sHintsTipsPanelBodyId   = "forms-tip-body";
var adbforms_sRequiredClass          = "required";
var adbforms_sValidExclusionClass    = "no-validation";
var adbforms_sReadonlyClass          = "readonly";
var adbforms_sRequiredWarning        = "The highlighted field above is a required field. Please enter a value.";
var adbforms_sInvalidWarning         = "Please correct the value you have entered in the highlighted field above.";
var adbforms_sClassBoundDisplay      = "bound-display";

document.write("<style type='text/css'>\n",
			   "." + adbforms_sHiddenInputTipClass + "{visibility:hidden!important;height:1px!important;width:0px!important;overflow:hidden!important;}\n",
			   "#" + adbforms_sHintsTipsPanelId    + "{display:block!important;}\n",
			   "." + adbforms_sClassBoundDisplay    + "{display:none;}\n",
			   "</style>\n" );			

function adbforms_fInitialise()
{	  
	adbforms_fSetOnSubmitAndOnFocus();
	adbforms_fSetPositionFixed();
}

function adbforms_fSetOnSubmitAndOnFocus()
{
	var aForms = document.forms;
	var nForms = aForms.length;
	var eForm, aElements, nElements, j, eElement, sElementType;
	for( var i=0; i<nForms; i++ )
	{
		eForm = aForms[ i ];
		if( ( eForm.className == adbforms_sFormClass ) || 
			( adb_fGetParentByClassName( eForm, adbforms_sFormCompClass ) != null ) )
		{
			aElements = adb_fGetFormElements( eForm );
			nElements = aElements.length;
			for( j=0; j<nElements; j++ )
			{
				eElement = aElements[ j ];
			   	if( adb_fHasClassName( eElement, adbforms_sReadonlyClass ) )
				{
					continue;
				}
				if( eElement.type != null ) 
				{
					sElementType = eElement.type.replace( /\-.*$/, "" );
                    switch( sElementType )
					{
						case "hidden":
							break;
						case "image":
						case "submit":
							eElement.onclick = adbforms_fHandleSubmitButtonClick;
							break;
						case "select":
							eElement.onchange = adbforms_fHandleSelectOnChange;
							if( eElement.selectedIndex > 0 )
							{
								adbforms_fHandleSelectOnChange.call( eElement );  
							}
						default:
							eElement.onfocus = adbforms_fHandleInputFocusAuto;
							break;
					}
				}
			}
			eForm.onsubmit = adbforms_fHandleFormSubmit;
		}
	}
}

function adbforms_fHandleSubmitButtonClick( e ) { window.adbforms_eSubmitClicked = this };
function adbforms_fGetSubmitButtonClicked() { return window.adbforms_eSubmitClicked };

function adbforms_fHandleInputFocusAuto( e )
{	
	adbforms_fHandleInputFocus( this );
}

function adbforms_fHandleInputFocus( eInput )
{		 
	eInput = ( eInput || this );
	switch( eInput.type )
	{
		case "text":
		case "file":
		case "textarea":
			eInput.bHasDefaultValue = true;
			if( eInput.value == eInput.defaultValue )
			{
				eInput.value = "";
			}
			break;
	}
	adbforms_fShowInputTip( eInput );
	eInput.onblur = adbforms_fHandleInputBlur;
}

function adbforms_fShowInputTip( eInput )
{
	var eTipHint = document.getElementById( adbforms_sHintsTipsPanelBodyId );
	if( eTipHint != null )
	{
		var eInputTip = adbforms_fGetSiblingInputTipText( eInput );
		if( eInputTip != null )
		{
			if( eTipHint.sDefaultText == null )
			{
				eTipHint.sDefaultText = eTipHint.innerHTML;
			}
			eTipHint.innerHTML = eInputTip.innerHTML;
			eInput.bHasTip = true;
		}
	}
}

function adbforms_fHandleInputBlur()
{
	this.onblur = null;
	if( this.bHasDefaultValue && this.value.trim().length == 0 )
	{
		this.value = this.defaultValue;
	}
	if( this.bHasTip )
	{
		var eTip = document.getElementById( adbforms_sHintsTipsPanelBodyId );
		eTip.innerHTML = eTip.sDefaultText;	
	}
}

function adbforms_fHandleSelectOnChange()
{			   
	var aOptions = this.options;
	var nOptions = aOptions.length;
	var eOption = aOptions[ this.selectedIndex ];
	var sClasses = eOption.className;
	var aClasses = sClasses.trim().split( " " );
	var nClasses = aClasses.length;
	var xBound = /^bind\[(.*)\]$/;

	var sClass, aMatches, sBindings, aBindings, nBindings, j, k, sBinding, aBinding, sBindingName, sBoundId, eBoundElement, k;
	for ( var i=0; i<nClasses; i++ )
	{
		sClass = aClasses[ i ];
		aMatches = sClass.match( xBound );
		if( aMatches != null )
		{
			sBindings = aMatches[ 1 ];
			if( sBindings )
			{
				aBindings = sBindings.split( "_" );
				nBindings = aBindings.length;
				for ( j=0; j<nBindings; j++ )
				{
					sBinding = aBindings[ j ];
					aBinding = sBinding.split( "-" )
					sBindingName = aBinding[ 0 ];
					switch( sBindingName )
					{
						case "display":
							sBoundId = aBinding[ 1 ];
							eBoundElement = document.getElementById( sBoundId );
							if( eBoundElement )
							{
								eBoundElement.style.display = "inline";
								adb_fRemoveClassName( eBoundElement, adbforms_sValidExclusionClass );
								if( !eOption.bAssigned )
								{
									for( k=0; k<nOptions; k++ )
									{
										if( k != this.selectedIndex )
										{
											if( aOptions[ k ].className.indexOf( sBinding ) == -1 )
											{
												adb_fAddClassName( aOptions[ k ], "bind[hide-" + sBoundId + "]" );
											}
										}
									}
									eOption.bAssigned = true;
								}
							}
							break;
						case "hide":
							sBoundId = aBinding[ 1 ];
							eBoundElement = document.getElementById( sBoundId );
							if( eBoundElement )
							{   
								adb_fAddClassName( eBoundElement, adbforms_sValidExclusionClass );
								eBoundElement.style.display = "none";
							}
							break;
							
							
					}
				}
			}
		}
	}
}

function adbforms_fClearFormErrors( eForm )
{
	var aElements = eForm.elements;
	var nElements = aElements.length;
	var eElement;
	for( var i=0; i<nElements; i++ )
	{
		eElement = aElements[ i ];
		adbforms_fRemoveContainerClassName( eElement, adbforms_sRequiredFieldClass, adbforms_sInvalidFieldClass );
		adbforms_fHideTipWarning( eElement );
	}
}

function adbforms_fHandleFormSubmit( e )
{	 
	var eForm = this;
	var oEvent = adb_fGetEvent( e );
	var bAllCool = true;
	var eSubmitClicked = adbforms_fGetSubmitButtonClicked();
	var bProceed = ( ( eSubmitClicked == null ) || ( eSubmitClicked.className.indexOf( adbforms_sValidExclusionClass) == -1 ) )
	if( bProceed )
	{
		var aElements = eForm.elements;
		var nElements = aElements.length;
		var eElement;
		for( var i=0; i<nElements; i++ )
		{
			eElement = aElements[ i ];
			eElement.onblur = null;
		}
		adbforms_fClearFormErrors( eForm );
		bAllCool = adbforms_fCheckRequiredFields( eForm, eSubmitClicked );
		if( bAllCool )
		{
			bAllCool = adbforms_fCheckValidateFields( eForm, eSubmitClicked );
		}
		if( adb_bGeckoOld && !bAllCool ) { adb_fFixMozPosBug(); adb_fFixedOnScroll() };
	}
	oEvent.returnValue = bAllCool;
	return bAllCool;
}

function adbforms_fGetRequiredFields( eForm, eSubmitClicked )
{
	var aElements = adb_fGetFormElements( eForm );
	var nElements = aElements.length;
	var eElement, eLineDiv; 
	var aRequired = new Array();
	var sFormLineClass = adbforms_sFormLineClass;
	var sRequiredClass = adbforms_sRequiredClass;
	for( var i=0; i<nElements; i++ )
	{
		eElement = aElements[ i ];
		if( eElement == eSubmitClicked )
		{
			break;
		}
		eLineDiv = adb_fGetParentByClassName( eElement, sFormLineClass );
		if( eLineDiv && eLineDiv.className.indexOf( sRequiredClass ) != -1 )
		{
			aRequired.push( eElement );
		}
	}
	return aRequired;
}

function adbforms_fGetSiblingDefValue( eElement )        { return adbforms_fGetSiblingByClassName( eElement, adbforms_sDefaultValueClass ) };
function adbforms_fGetSiblingInputTipText( eElement )    { return adbforms_fGetSiblingByClassName( eElement, adbforms_sHiddenInputTipClass ) };

function adbforms_fGetElementContainer( eElement )
{
	var eContainer = eElement.parentNode;	
	if( eContainer.className.indexOf( adbforms_sInputWrapperSpanPrefix ) == 0 )
	{
		 eContainer = eContainer.parentNode;
	}
	return eContainer;
}

function adbforms_fGetSiblingByClassName( eElement, sClassName )
{								
	var eLineDiv = adb_fGetParentByClassName( eElement, adbforms_sFormLineInputClass );
	if( eLineDiv )
	{
		var aSiblings = eLineDiv.childNodes;
		var nSiblings = aSiblings.length;
		var xClassName = new RegExp( "\\b" + sClassName + "\\b" ); 
		for ( var i=0; i<nSiblings; i++ )
		{
			eSibling = aSiblings[ i ];
			if( xClassName.test( eSibling.className ) )
			{
				return eSibling;
			}
		}
	}
	return null;
}

function adbforms_fCheckRequiredFields( eForm, eSubmitClicked )
{
	var aRequired = adbforms_fGetRequiredFields( eForm, eSubmitClicked );
	var nRequired = aRequired.length;
	if( nRequired != 0 )
	{
		var eRequired, sElementType, bHasValue;
		for ( var i=0; i<nRequired; i++ )
		{
			eRequired = aRequired[ i ];
			sElementType = eRequired.type.replace( /\-.*$/, "" );
			bHasValue = true;
			switch( sElementType )
			{
				case "password":
				case "text":
				case "textarea":
			    case "file":
					bHasValue = adbforms_fCheckValueInput( eRequired, sElementType );
					break;
				case "checkbox":
					bHasValue = adbforms_fCheckValueCheckbox( eRequired, sElementType );
					break;
				case "radio":
					bHasValue = adbforms_fCheckValueRadio( eRequired, sElementType );
					break;
				case "select":
					bHasValue = adbforms_fCheckValueSelect( eRequired, sElementType );
					break;
			}
			if( !bHasValue )
			{
				adbforms_fMarkRequiredField( eRequired );
				return false;	
			}
		}
	}
	return true;
}

function adbforms_fCheckValueInput( eInput )
{
	var sValue = eInput.value.trim();
	if( sValue.length == 0 )
	{
		return false;	
	}
	var sDefaultValue = adbforms_fGetInputDefaultValue( eInput );
	if( sDefaultValue != null )
	{
		//alert([sValue , sDefaultValue.trim(),sValue == sDefaultValue.trim()])
		sDefaultValue = sDefaultValue.trim();
		if( sValue == sDefaultValue )
		{	   
			return false;	
		}
	}
	return true;
}

function adbforms_fCheckValueInputSiblings( eElement, sType )
{
	var sTagName = eElement.tagName;
	var aSiblings = adbforms_fGetElementSiblings( eElement, sTagName, sType );
	var nSiblings = aSiblings.length;
	for(var i=0; i<nSiblings; i++ )
	{
		if( adbforms_fGetElementSelected( aSiblings[ i ], sType ) )
		{
			return true;
		}
	}
	return false;
}
	
function adbforms_fGetElementSelected( eElement, sType )
{
	switch( sType )
	{
		case "checkbox":
		case "radio":
			return ( eElement.checked );
		case "select":
			return ( eElement.selectedIndex > ( ( eElement.size <= 1 ) ? 0 : -1 ) );
	}
}
	
function adbforms_fGetElementSiblings( eElement, sTagName, sType )
{
	var eContainer = adbforms_fGetElementContainer( eElement );
	var aElements = eContainer.getElementsByTagName( sTagName );
	var aSiblings = new Array();
	var nElements = aElements.length;
	for (var i=0; i<nElements; i++ )
	{
		eElement = aElements[ i ];
		if( eElement.type.indexOf( sType ) == 0 )
		{
			aSiblings.push( eElement );
		}
	}
	return aSiblings;
}

function adbforms_fCheckValueCheckbox( eCheckbox, sType ) { return adbforms_fCheckValueInputSiblings( eCheckbox, sType ) };
function adbforms_fCheckValueRadio(    eRadio, sType    ) { return adbforms_fCheckValueInputSiblings( eRadio,    sType ) };
function adbforms_fCheckValueSelect(   eSelect, sType   ) { return adbforms_fCheckValueInputSiblings( eSelect,   sType ) };

function adbforms_fGetInputDefaultValue( eInput )
{
	var eSibling = adbforms_fGetSiblingDefValue( eInput );
	if( eSibling != null )
	{
		var sValue = adb_fGetInnerText( eSibling )
		sValue = sValue.trim();
		if( sValue.length != 0 )
		{
			return sValue;
		}
	}
	return null;
}

function adbforms_fMarkRequiredField( eInput )
{
	adbforms_fHiliteProblemField( eInput, adbforms_sRequiredFieldClass, adbforms_sRequiredWarning, adbforms_sRequiredWarningClass, adbforms_sRequiredTipClass );
}

function adbforms_fMarkInvalidField( eInput )
{
	adbforms_fHiliteProblemField( eInput, adbforms_sInvalidFieldClass,  adbforms_sInvalidWarning, adbforms_sInvalidWarningClass, adbforms_sInvalidTipClass );
}


function adbforms_fHiliteProblemField( eInput, sFieldClass, sWarning, sWarningClass, sTipClass )
{
	adbforms_fShowTipWarning( eInput, sWarning, sWarningClass, sTipClass );
	adbforms_fAddContainerClassName( eInput, sFieldClass );
	eInput.focus();
}

function adbforms_fGetInputTipElement( eInput, sClass )
{
	var eParentDiv = adbforms_fGetElementContainer( eInput );
	var eLineDiv = eParentDiv.parentNode.parentNode.parentNode;
	var aDivs = eLineDiv.getElementsByTagName( "div" );
	var nDivs = aDivs.length;
	var eDiv;
	var xClass = new RegExp( sClass );
	for( var i=0; i<nDivs; i++ )
	{
		eDiv = aDivs[ i ];
		if( xClass.test( eDiv.className ) )
		{
			return eDiv;
		}
	}
	return null;
}

function adbforms_fGetInputTipWarning( eInput )
{
	return adbforms_fGetInputTipElement( eInput, adbforms_sDefaultWarningClass );
}

function adbforms_fGetInputTipText( eInput )   
{
	return adbforms_fGetInputTipElement( eInput, adbforms_sDefaultTipClass );
}


function adbforms_fShowTipWarning( eInput, sWarning, sWarningClass, sTipClass )
{         						
	var eInputTipDefault = adbforms_fGetSiblingInputTipText( eInput );
	
	if( eInputTipDefault )
	{
		var eParentDiv = adbforms_fGetElementContainer( eInput );
		var eLineDiv = eParentDiv.parentNode.parentNode.parentNode;
				
		var eInputTipWarning = adbforms_fGetInputTipWarning( eInput );
		if( eInputTipWarning == null )
		{
			eInputTipWarning = document.createElement( "div" );
			eInputTipWarning.className = adbforms_sDefaultWarningClass;
			eLineDiv.appendChild( eInputTipWarning );
		}
		eInputTipWarning.innerHTML = sWarning;
		adb_fAddClassName( eInputTipWarning, sWarningClass );	
	
		var eInputTipText = adbforms_fGetInputTipText( eInput );
		if( eInputTipText == null )
		{
			eInputTipText = document.createElement( "div" );
			eInputTipText.className = adbforms_sDefaultTipClass;
			eLineDiv.appendChild( eInputTipText );
		}
		eInputTipText.innerHTML = eInputTipDefault.innerHTML;
		
		adb_fAddClassName( eInputTipText, sTipClass );

	}
}

function adbforms_fHideTipWarning( eInput )
{
	var eInputTipText = adbforms_fGetInputTipText( eInput );
	if( eInputTipText != null )
	{
		adb_fRemoveClassName( eInputTipText, adbforms_sRequiredTipClass, adbforms_sInvalidTipClass );
		var eInputTipWarning = adbforms_fGetInputTipWarning( eInput );
		if( eInputTipWarning != null )
		{
			adb_fRemoveClassName( eInputTipWarning, adbforms_sRequiredWarningClass, adbforms_sInvalidWarningClass );
		}
	}
}              

function adbforms_fAddContainerClassName( eElement, sClass )
{
	var eContainer = adbforms_fGetElementContainer( eElement );
	var aSiblings = eContainer.getElementsByTagName( eElement.tagName );
	var nSiblings = aSiblings.length;
	if( nSiblings > 1 )
	{
		adb_fAddClassName( eContainer, sClass );
		var eSibling;
		for( var i=0; i<nSiblings; i++)
		{
			eSibling = aSiblings[ i ];
			adb_fAddClassName( eSibling, sClass );	
		}
	}
	else
	{
		adb_fAddClassName( eElement, sClass );
	}
}

function adbforms_fRemoveContainerClassName( eElement, sClass )
{
	var eContainer = adbforms_fGetElementContainer( eElement );
	var aSiblings = eContainer.getElementsByTagName( eElement.tagName );
	var nSiblings = aSiblings.length;
	if( nSiblings > 1 )
	{
		adb_fRemoveClassName( eContainer, arguments );
		var eSibling;
		for( var i=0; i<nSiblings; i++)
		{
			eSibling = aSiblings[ i ];
			adb_fRemoveClassName( eSibling, arguments );	
		}
	}
	else
	{
		adb_fRemoveClassName( eElement, arguments );
	}
}

function adbforms_fCheckValidateFields( eForm, eSubmitClicked )
{
	var fValidateElement = window.adbvalid_fValidateElement;
	if( fValidateElement )
	{
		var aElements = adb_fGetFormElements( eForm );
		var nElements = aElements.length;
		var eElement, sElementType, bHasValue;
        for ( var i=0; i<nElements; i++ )
		{
			eElement = aElements[ i ];
			if( eElement == eSubmitClicked )
			{
				break;
			}
			if( adb_fHasClassName( eElement, adbforms_sValidExclusionClass ) )
			{
				continue;
			}
			sElementType = eElement.type.replace( /\-.*$/, "" );
			bHasValue = true;
			switch( sElementType )
			{
				case "password":
				case "text":
				case "textarea":
				case "file":
					bHasValue = adbforms_fCheckValueInput( eElement, sElementType );
					break;
				case "checkbox":
					bHasValue = adbforms_fCheckValueCheckbox( eElement, sElementType );
					break;
				case "radio":
					bHasValue = adbforms_fCheckValueRadio( eElement, sElementType );
					break;
				case "select":
					bHasValue = adbforms_fCheckValueSelect( eElement, sElementType );
					break;
			}
			if( bHasValue )
			{
				if( !fValidateElement( eElement ) )
				{
					adbforms_fMarkInvalidField( eElement );
					return false;
				}
			}
		}
	}
	return true;
}

function adbforms_fSetPositionFixed()
{
	var eHints = document.getElementById( adbforms_sHintsTipsPanelId );
	if( eHints )
	{
		adb_fFixedSetPositionFixed( eHints );
	}
}


/************************************
	END - GENERAL FORM HANDLING
************************************/

/************************************
	CHANNEL LISTING ROLLOVER
    Used: Entertainment 2.1 ( statements could move to a separate js file loaded only in ENT2.1)
************************************/
adb_fAttachEvent( "load", adbchnlroll_fInitialise );

var adbchnlroll_sCompClass = "multichannel-listing";
var adbchnlroll_sProgrammeClass = "programme";
var adbchnlroll_sHighlightClass = "selected"; 

function adbchnlroll_fInitialise()
{
	var aListings = adb_fGetCompsByClass( adbchnlroll_sCompClass );
	if( aListings != null )
	{
		eListing = aListings[ 0 ];
		if( eListing != null )
		{
			var eTable = eListing.getElementsByTagName( "table" )[ 0 ];
			if( eTable != null )
			{
				var sProgrammeClass = adbchnlroll_sProgrammeClass;
				var sEventOver = adb_sEventOver;
				var sEventOut  = adb_sEventOut;
				var aCells = eTable.getElementsByTagName( "td" );
				var nCells = aCells.length;
				var eCell, aProgrammes, nProgrammes, j, eProgramme;
				for ( var i=0; i<nCells; i++ )
				{
					eCell = aCells[ i ];
					if( adb_fHasClassName( eCell, sProgrammeClass ) )
					{
						aProgrammes = eCell.getElementsByTagName( "li" );
						nProgrammes = aProgrammes.length;
						for( j=0; j<nProgrammes; j++ )
						{
							eProgramme = aProgrammes[ j ];
							aLinks = eProgramme.getElementsByTagName( "a" );
							if( aLinks.length )
							{
								eLink = aLinks[ 0 ];
								adb_fRemoveClassName( eLink, "none-hvr" );
								eProgramme.bHasLink = true;
							}
							eProgramme[ sEventOver ] = adbchnlroll_fOnMouseover;
							eProgramme[ sEventOut ] = adbchnlroll_fOnMouseeout;
							eProgramme.onclick = adbchnlroll_fOnClick;
							window.adb_aCutoffs.push( adb_fGetId( eProgramme ) );
							if( adb_fHasClassName( eProgramme, adb_sSelectedPopoutClass ) )
							{
								window.adb_aSelectedPopouts = [ eProgramme ];
							}
							
						}
					}
				}
			}
		}
	}
}
   
function adbchnlroll_fOnMouseover() { adb_fAddClassName( this, adbchnlroll_sHighlightClass ) };
function adbchnlroll_fOnMouseeout() { adb_fRemoveClassName( this, adbchnlroll_sHighlightClass ) }; 

function adbchnlroll_fOnClick( e )
{	   
	if( this.bHasLink )
	{
		var eLink = this.getElementsByTagName( "a" )[ 0 ];
        if( adb_fCanHttp() )
		{
			var oEvent = ( e || window.event );
			adbchnlroll_fOnMouseeout.call( this ); 
			adb_fSetSelectedPopout( this );
			var sProgrammeName = adb_fGetInnerText( this );
			var sURL = eLink.id;
			adbpopout_fProcessLink( this, sURL );	
				
			oEvent.cancelBubble = true;
			oEvent.returnValue = false;
			return false;
		}
		else
		{
			if( typeof eLink.click != "undefined" )
			{
				eLink.click();	
			}
			else
			{
				window.location.href = eLink.href;
			}
		}
	}
}
/************************************
	END - CHANNEL LISTING ROLLOVER
************************************/

/************************************

	SUGGESTIONS LISTING ROLLOVER
    Used: framework 5.2 ( statements could move to a separate js file loaded only in framework 5.2 )
************************************/
//adb_fAttachEvent( "load", adbsuggroll_fInitialise );

var adbsuggroll_sCompClass = "sugg-listing";
var adbsuggroll_sCompClassNew = "suggest-listing";
var adbsuggroll_sProgrammeClass = "programme";
var adbsuggroll_sHighlightClass = "selected"; 
 
var adbsuggroll_sParamBaseURL = "popouturl";
var adbsuggroll_sParamProgId = "progid";
var adbsuggroll_sParamEventId = "eventid";
var adbsuggroll_sParamChannelId = "channelid";

var adbsuggroll_sQueryProgId = "programId";
var adbsuggroll_sQueryEventId = "eventId";
var adbsuggroll_sQueryChannelId = "channelId";

function adbsuggroll_fInitialise()
{
	var aListings = adb_fGetCompsByClass( adbsuggroll_sCompClass );
    if( aListings == null )
	{
		aListings = adb_fGetCompsByClass( adbsuggroll_sCompClassNew );
	}
    if( aListings != null )
	{
		var nListings = aListings.length;
		for ( var j=0; j<nListings; j++ )
		{
			var eListing = aListings[ j ];
			var eTable = eListing.getElementsByTagName( "table" )[ 0 ];
			if( eTable != null )
			{
				var sProgrammeClass = adbsuggroll_sProgrammeClass;
				var fMouseover = adbsuggroll_fOnMouseover;
				var fMouseout = adbsuggroll_fOnMouseeout;
				var fClick = adbsuggroll_fOnClick;
				var sEventOver = adb_sEventOver;
				var sEventOut  = adb_sEventOut;
				var fHasClassname = adb_fHasClassName;
				var fRemoveClassname = adb_fRemoveClassName;
				var aCells = eTable.getElementsByTagName( "td" );
				var nCells = aCells.length;
				var eCell, aProgrammes, nProgrammes, j, eProgramme;
				for ( var i=0; i<nCells; i++ )
				{
					eCell = aCells[ i ];
                    if( fHasClassname( eCell, sProgrammeClass ) )
					{
						if( fHasClassname( eCell, adb_sSelectedPopoutClass ) )
						{
							window.adb_aSelectedPopouts = [ eCell ];
						}
						eCell[ sEventOver ] = fMouseover;
						eCell[ sEventOut ] = fMouseout;
						eCell.onclick = fClick;
					}
				}
			}
		}
	}
}

function adbsuggroll_fOnMouseover() { adb_fAddClassName( this, adbsuggroll_sHighlightClass ) };
function adbsuggroll_fOnMouseeout() { adb_fRemoveClassName( this, adbsuggroll_sHighlightClass ) }; 

function adbsuggroll_fOnClick( e )
{	  					 
	var oEvent = adb_fGetEvent( e );
	oEvent.cancelBubble = true;
	if( adb_fCanHttp() )
	{
		var sBaseURL, sProgrammeId, sEventId, sChannelId;
		if( sBaseURL = adb_fGetCompParam( this, adbsuggroll_sParamBaseURL ) )
		{
			if( sProgrammeId = adb_fGetElementParam( this, adbsuggroll_sParamProgId ) )
			{
				if( sEventId = adb_fGetElementParam( this, adbsuggroll_sParamEventId ) )
				{
					if( sChannelId = adb_fGetElementParam( this, adbsuggroll_sParamChannelId ) )
					{
                        adbsuggroll_fOnMouseeout.call( this );
						adb_fSetSelectedPopout( this );
                        
						
/***************************************************************************
	 DEBUG - MY SUGGESTIONS - DELETE LINES BELOW WHEN NOT TESTING LOCALLY
*****************************************************************************/		
		
var sURLLocal = ( sBaseURL + sProgrammeId.toLowerCase() + ".html" );
var sURLLive = [ "specifiedBaseURLincludingQueryString&",adbsuggroll_sQueryProgId,"=",sProgrammeId,"&",adbsuggroll_sQueryEventId,"=",sEventId,"&",adbsuggroll_sQueryChannelId,"=",sChannelId ].join( "" );
var sURL = sURLLocal;

var aAlert = [
	"FOR LOCAL DEBUGGING PURPOSES ONLY\n-------------------------------------------------",
	"\nJS is about to load the synopsis from this URL:\n",
	"--> " + sURLLocal,
	"\nHOWEVER,",
	"\nJS has determined that the live URL should be:\n",
	"--> " + sURLLive,
	"\nPlease delete these debug statements before testing live version.",
	"\nThey are clearly delineated in adbcom_global.js with \"DEBUG - LOGIN MY SUGGESTIONS\" comments" 
]; 

alert(aAlert.join("\n"))

/***************************************************************************
	 DEBUG - MY SUGGESTIONS - DELETE LINES ABOVE WHEN NOT TESTING LOCALLY
*****************************************************************************/		
						
						
						
/***************************************************************************
	 DEBUG - MY SUGGESTIONS - UNCOMMENT LINE BELOW WHEN NOT TESTING LOCALLY
*****************************************************************************/		

					  //  var sURL = [ sBaseURL,"&",adbsuggroll_sQueryProgId,"=",sProgrammeId,"&",adbsuggroll_sQueryEventId,"=",sEventId,"&",adbsuggroll_sQueryChannelId,"=",sChannelId ].join( "" );

/***************************************************************************
	 DEBUG - MY SUGGESTIONS - UNCOMMENT LINE ABOVE WHEN NOT TESTING LOCALLY
*****************************************************************************/		
						
						adbpopout_fProcessLink( this, sURL );
						oEvent.returnValue = false;
						return false;
					}
				}
			}
		}
	}
	return true;
}

/************************************
	END - SUGGESTIONS LISTING ROLLOVER
************************************/

/************************************
	PLANNER LISTING ROLLOVER
    Used: framework 5.1.1 ( statements could move to a separate js file loaded only in framework 5.1.1 )
************************************/
adb_fAttachEvent( "load", adbplanroll_fInitialise );

var adbplanroll_sCompClass = "planner-listing";
var adbplanroll_sProgrammeClass = "programme";
var adbplanroll_sOptionsClass = "options";
var adbplanroll_sHighlightClass = "selected"; 

function adbplanroll_fInitialise()
{			
	var sCompClass = adbplanroll_sCompClass;
	var aListings = adb_fGetCompsByClass( sCompClass );
    if( aListings != null )
	{
		eListing = aListings[ 0 ]; 
		if( eListing != null )
		{
			var eTable = eListing.getElementsByTagName( "table" )[ 0 ];
			if( eTable != null )
			{
				var sProgrammeClass = adbplanroll_sProgrammeClass;
				var sOptionsClass = adbplanroll_sOptionsClass;
				var fMouseover = adbplanroll_fOnMouseover;
				var fMouseout = adbplanroll_fOnMouseeout;
				var fClick = adbplanroll_fOnClick;
				var sEventOver = adb_sEventOver;
				var sEventOut  = adb_sEventOut;
				var fHasClassname = adb_fHasClassName;
				var fRemoveClassname = adb_fRemoveClassName;
				var aRows = eTable.getElementsByTagName( "tr" );
				var nRows = aRows.length;
				var eRow, eCell, eCellProgramme, bProgramme, j, eProgramme;
				for ( var i=0; i<nRows; i++ )
				{
					eRow = aRows[ i ];
					eCellProgramme = eRow.cells[ 0 ];
					if( eCellProgramme )
					{
						bProgramme = fHasClassname( eCellProgramme, sProgrammeClass );
						if( bProgramme)
						{
							aLinks = eCellProgramme.getElementsByTagName( "a" );
							if( aLinks.length )
							{
								eLink = aLinks[ 0 ];
								fRemoveClassname( eLink, "none-hvr" );
								eCellProgramme.bHasLink = true;
							}
							eCellProgramme[ sEventOver ] = fMouseover;
							eCellProgramme[ sEventOut ] = fMouseout;
							eCellProgramme.onclick = fClick;
							if( fHasClassname( eCellProgramme, adb_sSelectedPopoutClass ) )
							{
								window.adb_aSelectedPopouts = [ eCellProgramme ];
							}

						}
					}
					eCellOptions = eRow.cells[ 1 ];
					if( eCellOptions )
					{
						bOptions = fHasClassname( eCellOptions, sOptionsClass );	
						if( bOptions )
						{
							eCellOptions[ sEventOver ] = fMouseover;
							eCellOptions[ sEventOut ] = fMouseout;
							eCellOptions.onclick = fClick;
                            if( fHasClassname( eCellOptions, adb_sSelectedPopoutClass ) )
							{
								window.adb_aSelectedPopouts.push( eCellOptions );
							}
						}
					}
				}
			}
		}
	}
}

function adbplanroll_fOnMouseover()
{ 
	var eTR = this.parentNode; //adb_fGetParentByTagName( this, "tr" );
	adb_fAddClassName( eTR.cells[ 0 ], adbplanroll_sHighlightClass );
	adb_fAddClassName( eTR.cells[ 1 ], adbplanroll_sHighlightClass );
};

function adbplanroll_fOnMouseeout()
{ 
	var eTR = this.parentNode;//adb_fGetParentByTagName( this, "tr" );
	adb_fRemoveClassName( eTR.cells[ 0 ], adbplanroll_sHighlightClass );
	adb_fRemoveClassName( eTR.cells[ 1 ], adbplanroll_sHighlightClass );
}

function adbplanroll_fOnClick( e )
{
	var oEvent = adb_fGetEvent( e );
	var eTR = this.parentNode;
	var eCell = eTR.cells[ 0 ];
    var eLink = eCell.getElementsByTagName( "a" )[ 0 ];
	if( eLink )
	{
		if( adb_fCanHttp() )
		{
			adbplanroll_fOnMouseeout.call( this );
			adb_fSetSelectedPopout( eCell, eTR.cells[ 1 ] );
			
			
//             var sProgrammeName = adb_fGetInnerText( eCell );
//             sProgrammeName = sProgrammeName.replace( / /g, "_" ).toLowerCase();
//             sURL = "plannerpopout/" + sProgrammeName + ".html";
			
			sURL = adb_fGetId( eLink );
				 
			adbpopout_fProcessLink( this, sURL );
			oEvent.cancelBubble = true;
			oEvent.returnValue = false;
			return false;
		}
		else
		{
			if( typeof eLink.click != "undefined" )
			{
				eLink.click();	
			}
			else
			{
				window.location.href = eLink.href;
			}
		}
	}
}

/************************************
	END - PLANNER LISTING ROLLOVER
************************************/

/************************************
	framework AND ENT POPOUT
    Used: framework 5.1.1, framework 5.2, Ent 2.1 ( statements could move to a separate js file loaded only in framework 5.1.1, framework 5.2, Ent 2.1 )
************************************/
var adbpopout_sRetrieveMessage = "Retrieving Programme Info...";
var adbpopout_sRetrieveHTML = '<h4 class="message">'+adbpopout_sRetrieveMessage+'</h4>'; 
var adbpopout_sClassPopoutRow = "popout";
var adbpopout_sClassPopoutClose = "close";

function adbpopout_fProcessLink( eCell, sURL )
{	 
    adbpopout_fGetPopout( sURL, adbpopout_fReadyPopoutArea( eCell ).cells[ 0 ] );
}

function adbpopout_fReadyPopoutArea( eCell )
{
    var eParentTR = adb_fGetParentByTagName( eCell, "tr" );
    var eParentTable = adb_fGetParentByTagName( eParentTR, "table" );
	var aRows = eParentTable.rows;
	var nRows = aRows.length;
	var eRow;
	var sClassPopoutRow = adbpopout_sClassPopoutRow;
	var fHasClassname = adb_fHasClassName;
	for ( var i=0; i<nRows; i++ )
	{
		eRow = aRows[ i ];
		if( fHasClassname( eRow, sClassPopoutRow ) )
		{
			eRow.style.display = "none";
			eRow.cells[ 0 ].style.display = "none";
			eRow.cells[ 0 ].innerHTML = "";	
		}
	}
	var nNewRowIndex = ( eParentTR.rowIndex + 1 );
	var eNextRow = eParentTable.rows[ nNewRowIndex ];
	if( eNextRow == null || ( eNextRow.className != sClassPopoutRow ) )
	{
		eNextRow = eParentTable.insertRow( ( nNewRowIndex == nRows ) ? -1 : nNewRowIndex );
		eNextRow.className = sClassPopoutRow;
		var eCellPopout = eNextRow.insertCell( -1 );
		eCellPopout.colSpan = eParentTR.cells.length;
	}
	else
	{
		var eCellPopout = eNextRow.cells[ 0 ];
	}
    eNextRow.style.display = "";
    eCellPopout.style.display = "";
	eCellPopout.innerHTML = adbpopout_sRetrieveHTML;
    adb_fFixMozPosBug();
	return eNextRow;
}

function adbpopout_fGetPopout( sPopoutURL, eCell )
{
	adb_fSetHTTPResponseHTML( eCell, sPopoutURL, true, adbpopout_fOnPopoutDisplay );
}

function adbpopout_fOnPopoutDisplay( sCellId )
{			 
	adbpopout_fSetPopoutClose( document.getElementById( sCellId ) );
	adb_fFixMozPosBug();
}

function adbpopout_fSetPopoutClose( ePopoutCell )
{
	var aPars = ePopoutCell.getElementsByTagName( "p" );
	var nPars = aPars.length;
	var ePar, aLinks, eLink;
	for ( var i=0; i<nPars; i++ )
	{
		ePar = aPars[ i ];
		if( adb_fHasClassName( ePar, adbpopout_sClassPopoutClose ) )
		{
			aLinks = ePar.getElementsByTagName( "a" );
			eLink = aLinks[ 0 ];
			if( eLink )
			{	
				eLink.onclick = adbpopout_fPopoutClose;
			}
		}
	}
}

function adbpopout_fPopoutClose( e )
{		
	var oEvent = adb_fGetEvent( e );
    var eParentTR = adb_fGetParentByTagName( this, "tr" );
	if( eParentTR )
	{
		eParentTR.style.display = "none";
        eParentTR.cells[ 0 ].style.display = "none";
		eParentTR.cells[ 0 ].innerHTML = "";		
	}
	adb_fClearSelectedPopouts();
	oEvent.cancelBubble = true;
	oEvent.returnValue = false;
	return false;
}
/************************************
	END - framework AND ENT POPOUT
************************************/

/************************************

	PRINT BUTTON
    Used: all pages ( statements must stay in a global js file )
	
************************************/
adb_fAttachEvent( "load", adbprint_fInitialise );


var adbprint_sClassLink = "none-hvr";
var adbprint_sImgAlt = "Print Button";
var adbprint_sImgTitle = "Click to Print Page";
var adbprint_sImgSrc = "../../shared-files/images/extended-grid/linklist-arrow-gray-small.gif";
var adbprint_sText = "Print this page";

/*
var adbprint_sClassLink = "none-hvr";
var adbprint_sImgAlt = "";
var adbprint_sImgTitle = "Click to view US Website";
var adbprint_sImgSrc = "../../shared-files/images/extended-grid/linklist-arrow-gray-small.gif";
var adbprint_sText = "US Website";
*/
function adbprint_fInitialise()
{
	var eContainer = adb_fGetTitleButtons();
	if( eContainer && window.print )
	{
			/*var eImg = document.createElement( "img" );
			eImg.border = 0;
			eImg.hSpace = 0;
			eImg.vSpace = 0;
			eImg.alt = adbprint_sImgAlt;
			eImg.title = adbprint_sImgTitle;
			eImg.src = adbprint_sImgSrc;
			 
		var eLink = document.createElement( "a" );
		eLink.className = adbprint_sClassLink;
		eLink.href = "#";
		//eLink.onclick = adbprint_fOnClick;
		adb_fSetInnerText( eLink, adbprint_sText );
			 
		eContainer.appendChild( eImg );
		eContainer.appendChild( eLink );*/
		adb_fShowTitleButtons();	
	}
}

function adbprint_fOnClick( e )
{
	if( window.print )
	{
		if( adbprint_fOnBeforePrint( e ) )
		{
		window.print();
		var oEvent = adb_fGetEvent( e );
		oEvent.returnValue = false;
		return false;		
	}
	}
	return true;
}

// overwrite this function if page changes need to be made before printing.
function adbprint_fOnBeforePrint( e )
{
	window.scrollTo( 0, 0 );
	return true;
}
/************************************
	END - PRINT BUTTON
************************************/

/************************************

	PERSONALISATION
    Used: 

************************************/
adb_fAttachEvent( "load", adbpers_fInitialise );

function adbpers_fInitialise()
{ 
    adbpers_fHdrInitialise();
	adbpers_fNavInitialise();
	adbpers_fContentInitialise();
}

/* 
	PERSONALISATION - HEADER ( Welcome / Login )
*/
var adbpers_sHdrIdWelcome = "aoc-welcome";

var adbpers_sHdrParamWelcome = "welcome"; 
var adbpers_sHdrParamNotyouText = "nytxt";
var adbpers_sHdrParamNotyouURL = "nyurl";
var adbpers_sHdrParamLogin = "login";
var adbpers_sHdrParamLogout = "logout";
var adbpers_sHdrParamValueMarker = "_";
var adbpers_sHdrClassLinkNotyou = "underline-hvr";

document.write("<style type='text\/css'>\n",
			   "#" + adbpers_sHdrIdWelcome    + "{display:none}\n",
			   "<\/style>\n" );	

function adbpers_fHdrInitialise()
{
	adbpers_fHdrSetWelcome();
	adbpers_fHdrSetLogin();
}

function adbpers_fHdrSetWelcome()
{
	var eWelcome = document.getElementById( adbpers_sHdrIdWelcome );
	if( eWelcome )
	{
		if( !adb_fIsGuest()	&& adb_fHasDisplayName() )
		{
			var bShow = adbpers_fHdrMakeWelcome( eWelcome, !adb_fIsLoggedIn() ); 
		}
		else
		{
			var bShow = false;	
		}
		eWelcome.style.display = bShow ? "block" : "none";
	}
}

function adbpers_fHdrMakeWelcome( eWelcome, bNotYou )
{
	var eContainer = adb_fGetParentByTagName( eWelcome, "div", null, true );
	var sWelcome = adb_fGetElementParam( eContainer, adbpers_sHdrParamWelcome );
	if( sWelcome && adb_fHasDisplayName() )
	{
		var sDisplayName = adb_fGetUserDisplayName();
		sWelcome = sWelcome.replace( adbpers_sHdrParamValueMarker, sDisplayName );
		var oText = document.createTextNode( sWelcome );
		
		var eSpan = document.createElement( "span" );
		eSpan.appendChild( oText );
		
		if( bNotYou )
		{
			var sNyURL = adb_fGetElementParam( eContainer, adbpers_sHdrParamNotyouURL );
			if( sNyURL )
			{
				var sNyTxt = adb_fGetElementParam( eContainer, adbpers_sHdrParamNotyouText );
				if( sNyTxt ) 
				{
					var aNyTxt = sNyTxt.split( adbpers_sHdrParamValueMarker );
					if( aNyTxt.length == 3 )
					{
						oText = document.createTextNode( " " + aNyTxt[ 0 ] );
						eSpan.appendChild( oText );
						
						var eLink = document.createElement( "a" );
						eLink.className = adbpers_sHdrClassLinkNotyou;
						eLink.href = sNyURL;
						eLink.onclick = adbpers_fHdrNotYouOnClick;
						adb_fSetInnerText( eLink, aNyTxt[ 1 ] );
						eSpan.appendChild( eLink ); 
						
						oText = document.createTextNode( aNyTxt[ 2 ] ); 
						eSpan.appendChild( oText ); 
					}
				}
			}
		}
		
		eWelcome.innerHTML = "";
		eWelcome.appendChild( eSpan );
		return true;
	}
    return false;    
}


function adbpers_fHdrNotYouOnClick()
{
	adb_fDeleteUserType();
	adb_fDeleteUserName();
	adb_fDeleteUserDisplayName();
}

function adbpers_fHdrSetLogin()
{
	if( adb_fGetTitleButtons() )
	{
		adb_fIsGuest() ? null : !adb_fIsLoggedIn() ? adbpers_fHdrMakeLogin() : adbpers_fHdrMakeLogout();
	}
}

function adbpers_fHdrMakeLogin()
{ 
	adb_fShowTitleButtons();
    //adbpers_fHdrShowLogin( adbpers_sHdrParamLogin ); 
};
function adbpers_fHdrMakeLogout(){ adbpers_fHdrShowLogin( adbpers_sHdrParamLogout );};

function adbpers_fHdrShowLogin( sParamName )
{
	var eTitButs, sText, eLink, eSpan;
	if( eTitButs = adb_fGetTitleButtons() )
	{
		if( sParamValue = adb_fGetElementParam( eTitButs, sParamName ) )
		{
			if( eLink = adb_fGetFirstElementByTagName( eTitButs, "a" ) )
			{
				var aParams = sParamValue.split( adb_sDelimiterLevel2 );
				if( aParams.length == 2 )
				{
					adb_fSetInnerText( eLink, aParams[ 0 ] );
						eLink.href = aParams[ 1 ];
						return true;
					}
				}
			}
		adb_fShowTitleButtons();	
	}
	return false;
}

/* 
	PERSONALISATION - HORIZONTAL NAV BAR
*/
var adbpers_sNavArrayName = "framework_header_arrNavItems";
var adbpers_sNavBarId = "nav-bar-container";
var adbpers_sNavBarKeywordShoppingBasket = "basket";
var adbpers_sNavBarKeywordRetrieveQuote = "quote";

function adbpers_fNavInitialise()
{
	var aNavItems = adbpers_fNavGetItems(); 
	
	if( aNavItems.length )
	{
		if( !adbpers_fNavQuoteInitialise( aNavItems ) )
		{
		   adbpers_fNavShopInitialise( aNavItems );	
		}
		adbpers_fNavShowItems( aNavItems );
		if( window.adbhdrroll_fInitialise ) { adbhdrroll_fInitialise(); };
	}
}

function adbpers_fNavGetItems()
{
	return ( window[ adbpers_sNavArrayName ] || new Array() );
}

function adbpers_fNavShopInitialise( aNavItems )  { if( adb_fHasShopBasket() && !adb_fIsShopBasketPage() ) { adbpers_fNavMarkItem( aNavItems, adbpers_sNavBarKeywordShoppingBasket ); } };
function adbpers_fNavQuoteInitialise( aNavItems ) { if( adb_fHasShopQuote() ) { return adbpers_fNavMarkItem( aNavItems, adbpers_sNavBarKeywordRetrieveQuote ); }; return false; };
	
function adbpers_fNavMarkItem( aNavItems, sKeyword ) 
{
	var nItems = aNavItems.length;
	var aItem, sSrc, aMatches, xKeyword;
	for( var i=0; i<nItems; i++ )
	{
		aItem = aNavItems[ i ];
		if( ( aItem != null ) && ( aItem.constructor == window.Array ) )
		{
			if( aItem.sFilename == null )
			{
				sSrc = aItem[ 0 ];
				if( sSrc )
				{
					aMatches = sSrc.match( /([^\/]+$)/ );
					if( aMatches )
					{
						aItem.sFilename = aMatches[ 1 ];
					}
				}
			}
			xKeyword = new RegExp( sKeyword );
			if( xKeyword.test( aItem.sFilename ) )
			{
				aItem.bShow = true;
				return true;	
			}
		}
	}
	return false;
}

function adbpers_fNavShowItems( aNavItems )
{
    var eNavBar = document.getElementById( adbpers_sNavBarId );
	if( eNavBar	)
	{
		var eUL = adb_fGetFirstElementByTagName( eNavBar, "ul" );
		if( eUL )
		{
			var nItems = aNavItems.length;
			var aItem, aListItems, eLI, eA, eImg, eNextLI;
			for( var i=0; i<nItems; i++ )
			{
				aItem = aNavItems[ i ];
				if( aItem.bShow )
				{
					aListItems = eUL.getElementsByTagName( "li" );
							
					eLI = document.createElement( "li" );
					eLI.title = aItem[ 2 ];
						eA = document.createElement( "a" );
						eA.href = aItem[ 1 ];
							eImg = document.createElement( "img" );
							eImg.hspace = 0;
							eImg.vspace = 0;
							eImg.border = 0;
							eImg.alt = aItem[ 2 ];
							eImg.onload = adb_fImageOnLoad;
							eImg.src = aItem[ 0 ];
							eA.appendChild( eImg );
						eLI.appendChild( eA );
						
					eNextLI = aListItems[ i ];
					if( eNextLI != null )
					{
						eUL.insertBefore( eLI, eNextLI );
					}
					else
					{
						eUL.appendChild( eLI );	
					}
				}
			}
		}
	}
}

/* 
	PERSONALISATION - CONTENT
*/
var adbpers_sContentContainerClass = "aoc-personal";
var adbpers_aContent = new Array();
var adbpers_sContentQueryUserId = "userId";
var adbpers_sContentQueryUserType = "usertype";

var adbpers_sContentParamType = "type";
var adbpers_sContentParamTypeValueUsertype = "u"; 
var adbpers_sContentParamTypeValueLoggedin = "g"; 
var adbpers_sContentParamTypeValueLoggingin = "l"; 
var adbpers_sContentParamURL = "url"; 


document.write("<style type='text\/css'>\n",
			   ".aoc-columns-container ." + adbpers_sContentContainerClass    + "{display:none}\n",
			   "<\/style>\n" );	

function adbpers_fContentInitialise()
{                     
	if( adbpers_fContentGetPersonals().length )
	{                        
		adb_fCanHttp() ? adbpers_fContentCustomise() : adbpers_fContentCancel();
	}
}

function adbpers_fContentGetPersonals() { return window.adbpers_aContent; };

function adbpers_fContentCustomise()
{				                    
	var aPersonals = adbpers_fContentGetPersonals();
	var nPersonals = aPersonals.length;
	var nFinal = ( nPersonals - 1 );
	var ePersonal;
	for( var i=0; i<nPersonals; i++ )
	{
		if( ePersonal = document.getElementById( aPersonals[ i ] ) )
		{	
			adbpers_fContentProcessElement( ePersonal, ( i == nFinal ) );

			//adbpers_fContentSetHTML( ePersonal, sUserType, ( i == nFinal ) );
		}
	}
}

function adbpers_fContentProcessElement( ePersonal, bFinal )
{                 
	switch( adb_fGetElementParam( ePersonal, adbpers_sContentParamType ) )
	{
		case adbpers_sContentParamTypeValueUsertype:
			adbpers_fContentUsertypeProcess( ePersonal, bFinal );
			break;
		case adbpers_sContentParamTypeValueLoggingin:
			adbpers_fContentLogginginProcess( ePersonal, bFinal );
			break;
		case adbpers_sContentParamTypeValueLoggedin:
			adbpers_fContentLoggedinProcess( ePersonal, bFinal );
			break;
		default:
			adbpers_fContentCancelPersonal( ePersonal, bFinal );	
			break;
	}
}

function adbpers_fContentUsertypeProcess( ePersonal, bFinal )
{
	if( adb_fIsGuest() )
	{
		var bProceed = false;
		if( adb_fHasShopBasket() )
		{
			bProceed = true;
			var sUserType = adb_sTypeP;
		}
	}
	else
	{
		var bProceed = true;
		var sUserType = adb_fGetUserType();
	}
	bProceed ? adbpers_fContentUsertypeSetHTML( ePersonal, bFinal, sUserType ) : adbpers_fContentCancelPersonal( ePersonal, bFinal );
}

function adbpers_fContentLoggedinProcess( ePersonal, bFinal )
{
	if( adb_fIsLoggedIn() )
	{
		var bProceed = true;
	}
	else
	{
		var bProceed = false;
	}
	bProceed ? adbpers_fContentLoggedinSetHTML( ePersonal, bFinal ) : adbpers_fContentCancelPersonal( ePersonal, bFinal );
}

function adbpers_fContentLoggedinSetHTML( ePersonal, bFinal )
{
	var sURL = adb_fGetElementParam( ePersonal, adbpers_sContentParamURL );
	if( sURL )
	{
		adb_fSetHTTPResponseHTML( ePersonal, sURL, true, adbpers_fContentLoggedinOnSingleComplete, adbpers_fContentOnSingleError, ( bFinal ? adbpers_fContentOnPersonalDisplay : null ) );
	}
	else
	{
		adbpers_fContentCancelPersonal( ePersonal, bFinal );	
	}
}


function adbpers_fContentUsertypeSetHTML( ePersonal, bFinal, sUserType )
{
	var sURL = adb_fGetElementParam( ePersonal, sUserType );
	if( sURL )
	{
		adb_fSetHTTPResponseHTML( ePersonal, sURL, true, adbpers_fContentUsertypeOnSingleComplete, adbpers_fContentOnSingleError, ( bFinal ? adbpers_fContentOnPersonalDisplay : null ) );
	}
	else
	{
		adbpers_fContentCancelPersonal( ePersonal, bFinal );	
	}
}

function adbpers_fContentLogginginProcess( ePersonal, bFinal )
{         
	if( adb_fIsLoggedIn() )
	{
        adb_fDeleteLoginAttempt();
		var bFetch = true;
		var bTrapSubmit = false;
	}
	else if( adb_fHasLoginAttempt() )
	{
		adb_fDeleteLoginAttempt();
		var bFetch = true;
		var bTrapSubmit = true;
	}
	else
	{
		var bFetch = false;
		var bTrapSubmit = true;
	}
	ePersonal.bSubmit = bTrapSubmit;
	bFetch ? adbpers_fContentLogginginSetHTML( ePersonal, bFinal ) : adbpers_fContentLogginginOnSingleComplete( ePersonal );
}
 
function adbpers_fContentLogginginTrapSubmit( ePersonal )
{
	var eForm = adb_fGetFirstElementByTagName( ePersonal, "form" );
	if( eForm )
	{
		adb_fAttachEvent( "submit", adbpers_fContentLogginginOnSubmit, eForm );
	}
}

function adbpers_fContentLogginginOnSubmit()
{
	adb_fSetLoginAttempt();
}


function adbpers_fContentLogginginSetHTML( ePersonal, bFinal )
{
	var sURL = adb_fGetElementParam( ePersonal, adbpers_sContentParamURL );
	if( sURL )
	{
/***************************************************************************
	 DEBUG - LOGIN PORTLET - DELETE LINES BELOW WHEN NOT TESTING LOCALLY
*****************************************************************************/		
		
   if(ePersonal.bSubmit)
   {
	   sURL = sURL.replace( ".html", "_error.html" );
	   var aAlert = [
		   "FOR LOCAL DEBUGGING PURPOSES ONLY\n-------------------------------------------------",
		   "\nJS has detected a login attempt but no logged-in cookie,",
		   "so the portlet it will fetch will be an error portlet from a different URL than the one specified in the HTML.",
		   "\nIn live version the server will deliver the error portlet from the same URL.",
		   "\nPlease delete these debug statements before testing live version.",
		   "\nThey are clearly delineated in adbcom_global.js with \"DEBUG - LOGIN PORTLET\" comments" 
	   ]; 
	   
	   alert(aAlert.join("\n"))
   }
		
/***************************************************************************
	 DEBUG - LOGIN PORTLET - DELETE LINES ABOVE WHEN NOT TESTING LOCALLY
*****************************************************************************/		
		adb_fSetHTTPResponseHTML( ePersonal, sURL, true, adbpers_fContentLogginginOnSingleComplete, adbpers_fContentOnSingleError, ( bFinal ? adbpers_fContentOnPersonalDisplay : null ) );
	}
	else
	{
		adbpers_fContentCancelPersonal( ePersonal, bFinal );	
	}
}

function adbpers_fContentCancel()
{							
	var aPersonals = adbpers_fContentGetPersonals()
	var nPersonals = aPersonals.length;
	for( var i=0; i<nPersonals; i++ )
	{
		adbpers_fContentShowPersonal( aPersonals[ i ] );
	}
}

function adbpers_fContentOnPersonalDisplay()
{
	adb_fRedoOverhead();
	adb_fExecuteFunctions([ "adbalign_fInitialise", "adbarrow_fInitialise" ]);
}

function adbpers_fContentUsertypeOnSingleComplete( sPersonalId ) { adbpers_fContentShowPersonal( sPersonalId ); };
function adbpers_fContentLoggedinOnSingleComplete( sPersonalId ) { adbpers_fContentShowPersonal( sPersonalId ); };
function adbpers_fContentLogginginOnSingleComplete( vPersonalId )
{
	adbpers_fContentShowPersonal( vPersonalId );
    var ePersonal = ( typeof vPersonalId == "string" ) ? document.getElementById( vPersonalId ) : vPersonalId;
	if( ePersonal.bSubmit )
	{	
		adbpers_fContentLogginginTrapSubmit( ePersonal );	
	}
}

function adbpers_fContentOnSingleError( sPersonalId ) { adbpers_fContentShowPersonal( sPersonalId ); };

function adbpers_fContentShowPersonal( vPersonal )
{	  
	var ePersonal = ( typeof vPersonal == "string" ) ? document.getElementById( vPersonal ) : vPersonal;	
	if( ePersonal ) { ePersonal.style.display = "block"; };
}

function adbpers_fContentCancelPersonal( vPersonal, bFinal )
{		
	adbpers_fContentShowPersonal( vPersonal );
	if( bFinal )
	{
		adbpers_fContentOnPersonalDisplay();	
	}
}

/************************************
	END - PERSONALISATION
************************************/

/************************************

	RECOMMENDATIONS XSLT
    Used: 
	
************************************/
adb_fAttachEvent( "load", adbrecs_fInitialise );

//adb_fWindowOnLoadEndAdd( "adbrecs_fInitialise" );

var adbrecs_aCompClasses = [ "framework-recommendations", "rated-recommendations", "sugg-listing" ];
var adbrecs_sClassContainer = "recommendations-xml";
var adbrecs_sClassTransformed = "transformed-xml";
var adbrecs_sClassMorerecs = "morerecs-xml";
var adbrecs_sClassResetrecs = "resetrecs-xml";

var adbrecs_sParamXMLURL = "xml";
var adbrecs_sParamXSLURL = "xsl";
var adbrecs_sParamProgrammeURL = "programme";
var adbrecs_sParamDate = "date";
var adbrecs_sParamDateTime = "datetime";
var adbrecs_sParamDuration = "duration";
var adbrecs_sParamProgrammeId = "progid";
var adbrecs_sParamEventId = "eventid";
var adbrecs_sParamChannelId = "channelid";

var adbrecs_sQueryUserId = "userId";
var adbrecs_sQueryProgId = "programmeId";
var adbrecs_sQueryEventId = "eventId";
var adbrecs_sQueryChannelId = "channelId";

var adbrecs_sClassConvertDate = "convert-date";
var adbrecs_sClassConvertDateTime = "convert-datetime";
var adbrecs_sClassConvertDuration = "convert-duration";
var adbrecs_sClassConvertLinkNone = "convert-link-none";
var adbrecs_sClassConvertLinkUndHvr = "convert-link-ul-hvr";
var adbrecs_sClassConvertLinkNoneHvr = "convert-link-none-hvr";

function adbrecs_fWriteStyle()
{
	var aStyle = [ "<style type='text\/css'>\n" ];
	var aCompClasses = adbrecs_aCompClasses;
	var nCompClasses = aCompClasses.length;
	for( var i=0; i<nCompClasses; i++ )
	{
		aStyle.push( "." + aCompClasses[ i ] + "{display:block;}\n" );
	}
	aStyle.push( "." + adbrecs_sClassMorerecs + "{display:block;}\n" );
	aStyle.push( "." + adbrecs_sClassResetrecs + "{display:block;}\n" );
	aStyle.push( "." + adbrecs_sClassContainer + "{display:none;}\n" );
	aStyle.push( "</style>\n" );			
	document.write( aStyle.join( "" ) );
}

adbrecs_fWriteStyle();

function adbrecs_fInitialise()
{			   
	var aClasses = adbrecs_aCompClasses;
	var nClasses = aClasses.length;
	var aComps, nComps, eComp, eXML, eTransformed;
	for( var i=0; i<nClasses; i++ )
	{		  
		aComps = adb_fGetCompsByClass( aClasses[ i ] );
		nComps = aComps.length;
        if( nComps > 0 )
		{
			eComp = aComps[ 0 ];
			eXML = adb_fGetFirstElementByClassName( eComp, adbrecs_sClassContainer );
			if( eXML )
			{	
				eTransformed = adb_fGetFirstElementByClassName( eXML, adbrecs_sClassTransformed );
				if( eTransformed )
				{
					adbrecs_fOnTransform( eXML );
				}
				else
				{
					adbrecs_fSetMoreRecs( eXML );
					adbrecs_fGetRecommend( eXML );
				}
				break;
			}
		}
	}
}

function adbrecs_fSetMoreRecs( eXML )
{
	var aMorerecs = adb_fGetElementsByClassName.call( document.body, adbrecs_sClassMorerecs, "p" );
	var nMorerecs = aMorerecs.length;
	var eMorerec; 
	for ( var i=0; i<nMorerecs; i++ )
	{
		eMorerec = aMorerecs[ i ];
		eMorerec.sXMLid = adb_fGetId( eXML );
		eMorerec.onclick = adbrecs_fMoreRecsOnClick;
	}
}

function adbrecs_fMoreRecsOnClick( e )
{
	var eXML = document.getElementById( this.sXMLid	);
	adbrecs_fGetRecommend( eXML );
	adb_fGetEvent( e ).returnValue = false;
	return false;	
}

function adbrecs_fGetRecommend( eContainer )
{	
	var sXMLURL = adb_fGetCompParam( eContainer, adbrecs_sParamXMLURL );
	if( sXMLURL )
	{
		sXMLURL += ( "?" + adb_fGetRandomIdentifier() );
		var sXSLURL = adb_fGetCompParam( eContainer, adbrecs_sParamXSLURL );
		if( sXSLURL )
		{	
			//sXSLURL += ( "?" + adb_fGetRandomIdentifier() );
			adb_fDoTransform( sXMLURL, sXSLURL, eContainer, adbrecs_fOnTransform, adbrecs_fOnError );
			return;
		}
	}
	// maybe error handle here; hide the comp or something
}

function adbrecs_fOnTransform( eContainer )
{
	eContainer.style.display = "block";
    //alert(eContainer.innerHTML)

   // adb_fRedoOverhead();
    adbrecs_fDoConversions( eContainer );
	adb_fExecuteFunctions([ "adbrate_fInitialise", "adbalign_fInitialise", "adbarrow_fInitialise", "adbsuggroll_fInitialise" ]);
	adb_fFixMozPosBug();
}

function adbrecs_fOnError( sType, eContainer, sError )
{
	var sErrorHTML = ( "<div class='default_message'>" + sType.toUpperCase() + " ERROR:<br/>" + sError + "</div>" );
	eContainer.innerHTML = sErrorHTML;
	eContainer.style.display = "block";
}

function adbrecs_fDoConversions( eContainer )
{
	adbrecs_fConvertDate( eContainer );
	adbrecs_fConvertDateTime( eContainer );
	adbrecs_fConvertDuration( eContainer );
	adbrecs_fConvertLinks( eContainer );
}

function adbrecs_fConvertDate( eContainer )
{
	var aDates = adb_fGetElementsByClassName.call( eContainer, adbrecs_sClassConvertDate );
    var nDates = aDates.length;
	var eDate, nDate, oDateValues, sDisplay;
	for( var i=0; i<nDates; i++ )
	{
		eDate = aDates[ i ];
		nDate = Number( adb_fGetElementParam( eDate, adbrecs_sParamDate ) );
		if( !isNaN( nDate ) )
		{
			oDateValues = new adb_fDateValues( new Date( nDate ) );
			sDisplay = [ oDateValues.sDay, oDateValues.sMonth, oDateValues.nDate ].join( " " );
			adb_fSetInnerText( eDate, sDisplay );
		}
	}
}

function adbrecs_fConvertDateTime( eContainer )
{
	var aDates = adb_fGetElementsByClassName.call( eContainer, adbrecs_sClassConvertDateTime );
    var nDates = aDates.length;
	var eDate, nDate, oDateValues, sDisplay;
	for( var i=0; i<nDates; i++ )
	{
		eDate = aDates[ i ];
		nDate = Number( adb_fGetElementParam( eDate, adbrecs_sParamDateTime ) );
		if( !isNaN( nDate ) )
		{
			oDateValues = new adb_fDateValues( new Date( nDate ) );
			sDisplay = [ oDateValues.sNon24Dot, oDateValues.sDay, oDateValues.nDate, oDateValues.sMonth ].join( " " );
			adb_fSetInnerText( eDate, sDisplay );
		}
	}
}

function adbrecs_fConvertLinks( eContainer )
{
	adbrecs_fConvertLinksByClass( adbrecs_sClassConvertLinkNone, eContainer, new Function(), new Function(), adbrecs_fLinkOnClick );
	adbrecs_fConvertLinksByClass( adbrecs_sClassConvertLinkUndHvr, eContainer, adb_fElementTextDecNone, adb_fElementTextDecUL, adbrecs_fLinkOnClick );
	adbrecs_fConvertLinksByClass( adbrecs_sClassConvertLinkNoneHvr, eContainer, adb_fElementTextDecUL, adb_fElementTextDecNone, adbrecs_fLinkOnClick );
}

function adbrecs_fConvertLinksByClass( sClass, eContainer, fMouseover, fMouseout, fClick )
{
	var aLinks = adb_fGetElementsByClassName.call( eContainer, sClass );
	var nLinks = aLinks.length;
    var sEventOver = adb_sEventOver;
	var sEventOut  = adb_sEventOut;
	var eLink;
	for( var i=0; i<nLinks; i++ )
	{
		eLink = aLinks[ i ];
		eLink[ sEventOver ] = fMouseover;
		eLink[ sEventOut ] = fMouseout;
		fMouseout.call( eLink );
        eLink.onclick = fClick;
	}
}

function adbrecs_fLinkOnClick( e )
{
	var sProgrammeURL, sProgrammeId, sEventId, sChannelId;
	if( sProgrammeURL = adb_fGetCompParam( this, adbrecs_sParamProgrammeURL ) ) 
	{
		if( sProgrammeId = adb_fGetElementParam( this, adbrecs_sParamProgrammeId ) )
		{
			if( sEventId = adb_fGetElementParam( this, adbrecs_sParamEventId ) )
			{
				if( sChannelId = adb_fGetElementParam( this, adbrecs_sParamChannelId ) )
				{
					var sUserId = adb_fGetUserId(); 
			   // 	var sURL = [ sProgrammeURL,"&",adbrecs_sQueryProgId,"=",sProgrammeId,"&",adbrecs_sQueryEventId,"=",sEventId,"&",adbrecs_sQueryChannelId,"=",sChannelId ].join( "" );
					var sURL = [ sProgrammeURL,"?",adbrecs_sQueryProgId,"=",sProgrammeId,"&",adbrecs_sQueryEventId,"=",sEventId,"&",adbrecs_sQueryChannelId,"=",sChannelId ].join( "" );
				//	alert(sURL)
					window.location.href = sURL;
				}
			}
		}
	}
}

			
function adbrecs_fConvertDuration( eContainer )
{	   
	var aDurations = adb_fGetElementsByClassName.call( eContainer, adbrecs_sClassConvertDuration );
    var nDurations = aDurations.length;
	var eDuration, sDuration, aDates, nStartDate, nEndDate, oDateValues, sStartTime, sEndTime, sDisplay;
	for( var i=0; i<nDurations; i++ )
	{
		eDuration = aDurations[ i ];
		sDuration = adb_fGetElementParam( eDuration, adbrecs_sParamDuration );
		if( sDuration )
		{
			aDates = sDuration.split( adb_sDelimiterLevel2 );
			if( aDates.length == 2 )
			{
				nStartDate = Number( aDates[ 0 ] );
				if( !isNaN( nStartDate ) )
				{
					oDateValues = new adb_fDateValues( new Date( nStartDate ) );
					sStartTime = oDateValues.sNon24Colon;
					
					nEndDate = Number( aDates[ 1 ] );
					if( !isNaN( nEndDate ) )
					{
						oDateValues = new adb_fDateValues( new Date( nEndDate ) );
						sEndTime = oDateValues.sNon24Colon;
						
						sDisplay = [ sStartTime, sEndTime ].join( "-" );
						adb_fSetInnerText( eDuration, sDisplay );
					}
				}
			}
		}
	}
}

/************************************
	END - RECOMMENDATIONS XSLT
************************************/

/************************************

	ARROW LINK ROLLOVER
	Used: most pages ( statements should stay in a global js file )
	
************************************/
adb_fAttachEvent( "load", adbarrow_fInitialise );

var adbarrow_sImageExt = ".gif";
var adbarrow_sImageRolloverSuffix = "-horiz";
var adbarrow_sImageRolloverSrcEnd = ( adbarrow_sImageRolloverSuffix + adbarrow_sImageExt );
var adbarrow_aClasses = [ "aoc-arrowlink", "aoc-arrowlink-right" ];
var adbarrow_sClassOmit = "no-hover";

function adbarrow_fInitialise()
{
	var aClasses = adbarrow_aClasses;
	var nClasses = aClasses.length;
	var aArrows = new Array();
	for( var i=0; i<nClasses; i++ )
	{
		aArrows = aArrows.concat( adb_fGetElementsByClassName.call( document.body, aClasses[ i ], "p" ) );
	}
	var nArrows = aArrows.length;
	if( nArrows )
	{
		var eArrow, aLinks, nLinks, eRollover;
		var sEventOver = adb_sEventOver;
		var sEventOut  = adb_sEventOut;
		for ( i=0; i<nArrows; i++ )
		{
			eArrow = aArrows[ i ];
			if( !adb_fHasClassName( eArrow, adbarrow_sClassOmit ) )
			{
				aLinks = eArrow.getElementsByTagName( "a" );
				nLinks = aLinks.length;
				eRollover = ( nLinks > 0 ) ? aLinks[ 0 ] : eArrow.parentNode;
				eRollover[ sEventOver ] = adbarrow_fOnMouseover;
				eRollover[ sEventOut ] = adbarrow_fOnMouseout;
			}
		}
	}
}

function adbarrow_fOnMouseover()
{
	var eImg = this.getElementsByTagName( "img" )[ 0 ];
	eImg.src = eImg.src.replace( adbarrow_sImageExt, adbarrow_sImageRolloverSrcEnd );
}

function adbarrow_fOnMouseout()
{
	var eImg = this.getElementsByTagName( "img" )[ 0 ];
	eImg.src = eImg.src.replace( adbarrow_sImageRolloverSrcEnd, adbarrow_sImageExt );
}
/************************************
	END - ARROW LINK ROLLOVER
************************************/



/************************************

	BOTTOM BORDER ALIGNMENT
    Used: 
	
************************************/
adb_fWindowOnLoadEndAdd( "adbalign_fInitialise" );

var adbalign_sExpandElementClass = "b-bl";
var adbalign_bListenSet = false;

function adbalign_fInitialise()
{
	var aCompGroups = new Array();
    var sExpandElementClass = adbalign_sExpandElementClass;
	var fGetElementTop = adb_fGetElementTop;
	var fGetId = adb_fGetId;
	var aAligned = new Array();
	var aPageComps = adb_fGetCompArray();
	var nPageComps = aPageComps.length;
	var ePageComp, nCompTop, sCompClass, sParentId, oByTop, oByClass, aByParent;
	for( var i=0; i<nPageComps; i++ )
	{
		ePageComp = aPageComps[ i ];
        nCompTop = fGetElementTop( ePageComp );
		sCompClass = ePageComp.sCompClass;
		sParentId = fGetId( ePageComp.mGetPanel().parentNode );		
        if( !( oByTop   = aAligned[ nCompTop ] ) )   { oByTop    = aAligned[ nCompTop ]  = new Object(); };
		if( !( oByClass = oByTop[ sCompClass ] ) )   { oByClass  = oByTop[ sCompClass ]  = new Object(); };
		if( !( aByParent = oByClass[ sParentId ] ) ) { aByParent = oByClass[ sParentId ] = new Array(); aCompGroups.push( aByParent ); };
	    aByParent.push( ePageComp );
	}
	var bHasAlign = false;
	var nCompGroups = aCompGroups.length;
    var aCompGroup, nCompGroup, nMaxHeight, sMaxHeight, j, eComp, eInnerBorder;
    var fGetEmValue = adb_fGetEmValue;
	var fGetFirstElementByClassName = adb_fGetFirstElementByClassName;
	var sHeightStyle = ( adb_bIE || adb_bOpera ) ? "height" : "minHeight" ;
	for( i=0; i<nCompGroups; i++ )
	{
		aCompGroup = aCompGroups[ i ];
        nCompGroup = aCompGroup.length;
		if( nCompGroup > 1 )
		{	
			bHasAlign = true;
			nMaxHeight = 0;
			for( j=0; j<nCompGroup; j++ )
			{
				nMaxHeight = Math.max( aCompGroup[ j ].offsetHeight, nMaxHeight );
			}
			sMaxHeight = fGetEmValue( nMaxHeight );
			for( j=0; j<nCompGroup; j++ )
			{
				if( eInnerBorder = fGetFirstElementByClassName( aCompGroup[ j ], sExpandElementClass ) )
				{
					eInnerBorder.style[ sHeightStyle ] = sMaxHeight;
				}
			}
		}
	}
	if( bHasAlign )
	{
		adbalign_fSetResizeListen();	
	}
}

function adbalign_fSetResizeListen()
{
	return;
	if( window.adbalign_bListenSet )
	{
		return;
	}
	if( !adb_bOpera && ( document.getElementById( "lutzy" ) == null ) )
	{
		var eIfram = document.createElement( "iframe" );
		eIfram.id = "lutzy"
		eIfram.style.width = "10em";
		eIfram.style.height = "10em";
		eIfram.style.position = "absolute";
		eIfram.style.top = "0px";
		eIfram.style.left = "-20em";
		eIfram.src = ""
		document.body.appendChild( eIfram );
        if( typeof eIfram.onresize == "undefined" )
		{
			var wIfram = window.frames[ window.frames.length - 1 ];
			wIfram.document.write('lutz')
			wIfram.document.close();
			wIfram.onresize = adbalign_fInitialise;
		}
		else
		{
			eIfram.onresize = adbalign_fInitialise;	
		}
	}
	window.adbalign_bListenSet = true;	
}

/************************************
	END - BOTTOM BORDER ALIGNMENT
************************************/


/************************************

	POLL
	Used: somewhere in framework. currently is in OTHER TEMPLATES 13 
	
************************************/
adb_fAttachEvent( "load", adbpoll_fInitialise );

var adbpoll_sCompClass = "poll";
var adbpoll_sDisabledClass = "butdisabled";
var adbpoll_sDisabledTitle = "Choose an option then click here to vote.";
var adbpoll_sIEDisabledArrow = "lightgrey";

function adbpoll_fInitialise()
{
	var aPolls = adb_fGetCompsByClass( adbpoll_sCompClass );
	var nPolls = aPolls.length;
	var ePoll, eForm, aElements, nElements, eElement, j, eArrow, aMatches;
	for( var i=0; i<nPolls; i++ )
	{
		ePoll = aPolls[ i ];
		eForm = adb_fGetFirstElementByTagName( ePoll, "form" );
		if( eForm )
		{
			aElements = adb_fGetFormElements( eForm );
			nElements = aElements.length;
			for ( j=0; j<nElements; j++ )
			{
				eElement = aElements[ j ];
				switch( eElement.type )
				{
					case "radio":
						eElement.checked = false;
						eElement.onclick = adbpoll_fEnableForm;
						break;
					case "submit":
						adb_fAddClassName( eElement, adbpoll_sDisabledClass );
					    eElement.sOrigTitle = eElement.title;
						eElement.title = adbpoll_sDisabledTitle; 
						if( adb_bIE )
						{
							eArrow = adb_fGetFirstElementByTagName( eElement, "img" );
							aMatches = eArrow.src.match( /([^-]+?)\.gif/ );
							if( aMatches )
							{
								eArrow.sOrigSrc = eArrow.src;
								eArrow.src = eArrow.src.replace( aMatches[ 1 ].toString(), adbpoll_sIEDisabledArrow );	
							}
						}
						if( adb_bSafari )
						{
							eElement.onclick = adb_fEventCancel;
						}
						else
						{
							eElement.disabled = true;
						}
						eForm.sSubmitId = adb_fGetId( eElement );
						adb_fFixMozPosBug();
						break;
				}
			}
		}
	}
}

function adbpoll_fEnableForm()
{
	var sSubmitId = this.form.sSubmitId;
	if( sSubmitId )
	{
		var eSubmit = document.getElementById( sSubmitId );
		adb_fRemoveClassName( eSubmit, adbpoll_sDisabledClass );
	    eSubmit.disabled = false;
		if( adb_bSafari )
		{
			eSubmit.onclick = null;
		}
		eSubmit.title = eSubmit.sOrigTitle; 
		if( adb_bIE )
		{
			var eArrow = adb_fGetFirstElementByTagName( eSubmit, "img" );
			if( eArrow.sOrigSrc	)
			{
				eArrow.src = eArrow.sOrigSrc;
			}
		}
		adb_fFixMozPosBug();
	}
}

/************************************
	END - POLL
************************************/

/************************************
	SINGLE CHANNEL LISTING By Time Scrolling
    Used: Entertainment 5.1 ( statements could move to a separate js file loaded only in ENT5.1)
************************************/
adb_fAttachEvent( "load", adbtimelist_fInitialise );

var adbtimelist_sCompClass             = "time-listing";
var adbtimelist_sContainerClass        = "time-listing-programmes";
var adbtimelist_sTableContainerClass   = "time-listing-table-container";
var adbtimelist_sTableContainerClassJS = "time-listing-table-container-js";
var adbtimelist_sClassNavbar           = "time-listing-navbar";
var adbtimelist_sClassNavbarInner      = "time-listing-navbar-inner";
var adbtimelist_sClassNavbarPos        = "time-listing-navbar-pos";
var adbtimelist_sClassNavbarBar        = "time-listing-navbar-bar";
var adbtimelist_sClassNavbarBarBot     = "time-listing-navbar-bar-bottom";

var adbtimelist_sClassNavbarLink       = "underline-hvr";

var adbtimelist_sClassNavbarImg        = "time-listing-navbar-img";
var adbtimelist_sClassNavbarText       = "time-listing-navbar-text";
var adbtimelist_sClassNoborder         = "noborder";

var adbtimelist_sPrev                  = "-";
var adbtimelist_sNext                  = "+";
var adbtimelist_sProgramme             = "Programme";

var adbtimelist_sImgPath               = "../../../shared-files/images/extended-grid/";
var adbtimelist_sImgSrcPrev            = "arrow-up.gif";
var adbtimelist_sImgSrcNext            = "arrow-down.gif";
var adbtimelist_sImgAltPrev            = "Previous 4 Programmes";
var adbtimelist_sImgAltNext            = "Next 4 Programmes";

var adbtimelist_aRowValues             = new Array();

var adbtimelist_nRowsVisible           = 4;

document.write("<style type='text\/css'>\n",
			   "." + adbtimelist_sCompClass + " ." + adbtimelist_sTableContainerClass + "{ overflow:hidden }\n",
			   "<\/style>\n" );	

function adbtimelist_fInitialise()
{
	var aListings = adb_fGetCompsByClass( adbtimelist_sCompClass );
	if( aListings != null )             
	{
		var nListings = aListings.length;
		var eListing;
		for( var i=0; i<nListings; i++ )
		{
			eListing = aListings[ i ];
			adbtimelist_fChangeScrolling( eListing, i );
			adbtimelist_fRePopulate( eListing, i );
		}
	}
}

function adbtimelist_fChangeScrolling( eComp, nIndex )
{	 
	var eContainer = adb_fGetFirstElementByClassName( eComp, adbtimelist_sContainerClass );
	var eTableContainer = adb_fGetFirstElementByClassName( eComp, adbtimelist_sTableContainerClass );
	eContainer.insertBefore( adbtimelist_fMakeNav( true, nIndex ), eTableContainer );
	eContainer.appendChild( adbtimelist_fMakeNav( false, nIndex ) );
	adb_fFixMozPosBug();
}

function adbtimelist_fMakeNav( bTop, nIndex )
{
    var eNavbar = document.createElement( "div" );
	adb_fAddClassName( eNavbar, adbtimelist_sClassNavbar );
	
		var eNavbarInner = document.createElement( "div" );
		adb_fAddClassName( eNavbarInner, adbtimelist_sClassNavbarInner );
	
			var eNavbarPos = document.createElement( "div" );
			adb_fAddClassName( eNavbarPos, adbtimelist_sClassNavbarPos );
			
				var eNavbarBar = document.createElement( "div" );
				adb_fAddClassName( eNavbarBar, adbtimelist_sClassNavbarBar );
				if( !bTop ) { adb_fAddClassName( eNavbarBar, adbtimelist_sClassNavbarBarBot ) };
				
				var eNavbarImg = document.createElement( "div" );
				adb_fAddClassName( eNavbarImg, adbtimelist_sClassNavbarImg );
					
					var eImg = document.createElement( "img" );
					eImg.border = 0;
					eImg.hspace = 0;
					eImg.vspace = 0;
					eImg.alt = ( bTop ? adbtimelist_sImgAltPrev : adbtimelist_sImgAltNext );
					eImg.src = adbtimelist_sImgPath + ( bTop ? adbtimelist_sImgSrcPrev : adbtimelist_sImgSrcNext );
				
				eNavbarImg.bTop = bTop;
				eNavbarImg.nIndex = nIndex;
				eNavbarImg.onclick = adbtimelist_fNavOnClick;
				eNavbarImg.appendChild( eImg );
				
				var eNavbarText = document.createElement( "div" );
				adb_fAddClassName( eNavbarText, adbtimelist_sClassNavbarText );
                adb_fSetInnerText( eNavbarText, ( bTop ? adbtimelist_sPrev : adbtimelist_sNext ) );
				
					var eNavbarSpan = document.createElement( "span" );
					
						var eNavbarLink = document.createElement( "a" );
						eNavbarLink.href = "#";
						adb_fAddClassName( eNavbarLink, adbtimelist_sClassNavbarLink );
						eNavbarLink.onclick = adb_fEventCancel;
						adb_fSetInnerText( eNavbarLink, ( adbtimelist_sProgramme ) );
					
					eNavbarSpan.appendChild( eNavbarLink );
					
				eNavbarText.bTop = bTop;
				eNavbarText.nIndex = nIndex;
				eNavbarText.onclick = adbtimelist_fNavOnClick;
				eNavbarText.appendChild( eNavbarSpan );
	
			eNavbarPos.appendChild( eNavbarBar );
			eNavbarPos.appendChild( eNavbarImg );
			eNavbarPos.appendChild( eNavbarText );
		eNavbarInner.appendChild( eNavbarPos );
	eNavbar.appendChild( eNavbarInner );
	return eNavbar;
}
			
function adbtimelist_fNavOnClick()
{
	var nIndex = this.nIndex;
	var aValues = adbtimelist_fGetRowArray( nIndex );
	if( aValues )
	{
		var nRowsVisible = adbtimelist_nRowsVisible;
		var nRows = aValues.length - 1;
		var nStart = this.bTop ? Math.max( aValues.nStart - nRowsVisible, 0 ) : ( aValues.nStart + nRowsVisible );
		if( nStart <= nRows )
		{
			var eTable = document.getElementById( aValues.sTableId ); 
			var aRows = eTable.rows;
			var aCells, eRow, aDisplay;
			for( var i=0; i<nRowsVisible; i++ )
			{
				eRow = eTable.rows[ i + 1 ];
				aCells = eRow.cells;
				aDisplay = aValues[ nStart + i ];
				if( aDisplay != null )
				{
					sTime = aDisplay[ 0 ];
					sProgramme = aDisplay[ 1 ];
				}
				else
				{
					sTime = sProgramme = "";
				}
				aCells[ 0 ].innerHTML = sTime;
				aCells[ 1 ].innerHTML = sProgramme;
			}
			aValues.nStart = nStart;
		}
	}
}

function adbtimelist_fRePopulate( eComp, nIndex )
{
	var eTableContainer = adb_fGetFirstElementByClassName( eComp, adbtimelist_sTableContainerClass );
	var eTable = adb_fGetFirstElementByTagName( eTableContainer, "table" );
	var aRows = eTable.rows;
	var nRows = aRows.length - 1;
	var eRow, aCells;
	var aValues = new Array();
	var fGetInnerText = adb_fGetInnerText;
    for( var i=1; i<=nRows; i++ )
	{
		eRow = aRows[ i ];
		aCells = eRow.cells;
		aValues[ i - 1 ] = [  aCells[ 0 ].innerHTML , aCells[ 1 ].innerHTML ]; 
	}
	var nDelete = ( adbtimelist_nRowsVisible + 1 );
    for( i=nRows; i>=nDelete; i-- )
	{
		eTable.deleteRow( i );
	}
	adb_fAddClassName( aRows[ i ], adbtimelist_sClassNoborder );
	aValues.nStart = 0;
	aValues.sTableId = adb_fGetId( eTable );
	adbtimelist_fSetRowArray( aValues, nIndex );
	adb_fAddClassName( eTableContainer, adbtimelist_sTableContainerClassJS );
}

function adbtimelist_fSetRowArray( aRows, nIndex ) { window.adbtimelist_aRowValues[ nIndex ] = aRows; };
function adbtimelist_fGetRowArray( nIndex ) { return window.adbtimelist_aRowValues[ nIndex ]; };

/************************************
	END - SINGLE CHANNEL LISTING By Time Scrolling
************************************/
