


if( window.adb_bGecko )
{
	window.eval( "window.HTMLElement.prototype.children getter = adb_geckoChildrenGetter;" );
}




/**** for index pages ****/

var currentView = "";

if (window.location.search.indexOf("developer=yes")!=-1) {
	currentView = "developer";
}
else {
	currentView = "reviewer";
}

function gotoDevelopersView(element) {
	if (currentView=="developer") {
		element.href = element.href + "?developer=yes";
	}
}
var toggleViewText = "";
	
if (currentView=="developer") {
	toggleViewText = "Click here for Reviewer's View &raquo;";
}
else {
	toggleViewText = "Click here for Developer's View &raquo;";
}

function viewToggler(element) {
	if (currentView=="reviewer") {
		element.href = element.href + "?developer=yes";
	}
}

/**********************/
if(window.adb_fAttachEvent)adb_fAttachEvent( "load", adb_compWindowOnload );

//window.onload = adb_compWindowOnload;
document.getElementsByClassName = adb_compDocumentGetElementsByClassName;
var adb_aAllThePanels = new Array();
var adb_aClassInstances = new Array();

var adb_oOpacityObject = {
	aOpacityTypes : [
		{ nOpacity : 50, aElementClassnames : [ "framework-header", "aoc-title-container" ], aElementIds : [ "framework-footer-container" ]  },
		{ nOpacity : 30, aElementIds : [ "framework-navigation-horizontal", "nav-bar-container-inner" ] },
		{ nOpacity : 35, aElements : adb_aAllThePanels }
	],
	aOpacityElements : []
};

function adb_compWindowOnload()
{
	if( currentView != "developer" ) { return };	
	adb_compInitialisePanelArray();
	adb_compInitialiseOpacityElements();
	adb_assignPanelEvents();
}

function adb_compInitialiseOpacityElements()
{
    var oOpacityObject = adb_oOpacityObject;
	var aOpacityTypes = oOpacityObject.aOpacityTypes;
	var nOpacityTypes = aOpacityTypes.length;
	var oOpacityType, aElements, aElementIds, nElementIds, j, sElementId, eElement, nOpacityLevel;
	var aOpacityElements = new Array(), aElementClassnames, nElementClassnames; 
	for( var i=0; i<nOpacityTypes; i++ )
	{
		oOpacityType = aOpacityTypes[ i ];
		if( oOpacityType.aElements == null )
		{
			aElements = new Array();
			aElementIds	= oOpacityType.aElementIds;
			if( aElementIds != null )
			{
				nElementIds	= aElementIds.length;
				for( j=0; j<nElementIds; j++ )
				{
					sElementId = aElementIds[ j ];
					eElement = document.getElementById( sElementId );
					if( eElement != null )
					{
						aElements.push( eElement );   
					}
				}
			}
			aElementClassnames	= oOpacityType.aElementClassnames;
			if( aElementClassnames != null )
			{
				nElementClassnames	= aElementClassnames.length;
				for( j=0; j<nElementClassnames; j++ )
				{
					aElements = aElements.concat( document.getElementsByClassName( aElementClassnames[ j ], "div" ) );
				}
			}
			oOpacityType.aElements = aElements;
		}
		aOpacityTypeElements = oOpacityType.aElements;
		var nOpacityTypeElements = aOpacityTypeElements.length;
		nOpacityLevel = oOpacityType.nOpacity;
		for( j=0; j<nOpacityTypeElements; j++ )
		{
			eElement = aOpacityTypeElements[ j ];
			eElement.nOpacity = nOpacityLevel;
            aOpacityElements.push( eElement );
		}
	}
	oOpacityObject.aOpacityElements	= aOpacityElements;
}

function adb_compInitialisePanelArray()
{
	adb_fGetPanelsInElement( document.body );
}

function adb_assignPanelEvents()
{
	var aAllThePanels = adb_aAllThePanels;
	var nAllThePanels = aAllThePanels.length;
	var ePanel;
	var sEventOver = ( adb_bIE ) ? "onmouseenter" : "onmouseover";
	var sEventOut  = ( adb_bIE ) ? "onmouseleave" : "onmouseout";
	for ( var i=0; i<nAllThePanels; i++ )
	{
		ePanel = aAllThePanels[ i ];
		ePanel.style.cursor = "default";
		ePanel[ sEventOver ] = borderOn;
		ePanel[ sEventOut ]	 = borderOff;
		sCompClassname = adb_fGetPanelCompClassname( ePanel );
		if( sCompClassname != null )
		{
			ePanel.onclick = adb_compPanelOnClick;
			if( adb_aClassInstances[ sCompClassname ] == null )
			{
				adb_aClassInstances[ sCompClassname ] = new Array();	
			}
			ePanel.nInstance = ( adb_aClassInstances[ sCompClassname ].push( true ) ); 
            ePanel.sCompClassname = sCompClassname;
		}
	}
}


function pageElementsVisibility( sAction, eCurrent )
{
	var aOpacityElements = adb_oOpacityObject.aOpacityElements;
	var nOpacityElements = aOpacityElements.length;
	var eDOMElement, nOpacityLevel, eDiv, eOpaque;
	var bShow = ( sAction == "show" );
	for( var i=0; i<nOpacityElements; i++ )
	{
		eDOMElement = aOpacityElements[ i ];
		if( eDOMElement	== eCurrent ){ continue };
		eOpaque = eDOMElement;
        if( eDOMElement.sCompClassname == "global-two-column-mainpic" )
		{
			eDiv = eDOMElement.getElementsByTagName( "div" )[ 2 ];
			if( eDiv.className == "global-two-column-mainpic-relative" )
			{
				eOpaque = eDiv;	
			}
		}
		nOpacityLevel = ( bShow ? 100 : eDOMElement.nOpacity );
		eOpaque.style.MozOpacity = nOpacityLevel/100;
		eOpaque.style.opacity = nOpacityLevel/100;
		eOpaque.style.filter = "alpha( opacity="+ nOpacityLevel + ")";
	}
}
	
function borderOn()
{
	var eOpaque = this;
	if( this.sCompClassname == "global-two-column-mainpic" )
	{
		var eDiv = this.getElementsByTagName( "div" )[ 2 ];
		if( eDiv.className == "global-two-column-mainpic-relative" )
		{
			eOpaque = eDiv;	
		}
	}
	eOpaque.style.MozOpacity = 1;
	eOpaque.style.opacity = 1; 
	eOpaque.style.filter = "alpha( opacity=100)";
	pageElementsVisibility( "hide", this );

}

function borderOff()
{
	pageElementsVisibility( "show" );
}

function adb_compPanelOnClick( e )
{
	var oEvent = adb_fGetEvent( e );
	var bValidClick = adb_compGetPanelValidClick( oEvent );
	if( bValidClick )
	{
		if( this.sCompClassname == "" )
		{
			alert( "there is no classname specified for this comp on the outermost DIV. Please fix." );
			return;
		}
	  
		event.returnValue = false;
		event.cancelBubble = true;
		var sFilename = "";
		var aMatches = window.location.href.match( /pages-and-components(\/|\\)(.*)/ )
		if( aMatches != null )
		{
			sFilename = aMatches[ 2 ].replace(window.location.search, "" );	
		}
		window.location = ( "../../shared-components/common/componenttool.htm?class=" + this.sCompClassname +"&filename=" + sFilename +"&instance=" + this.nInstance );
		return false;
	}
}
	
function adb_compGetPanelValidClick( oEvent )
{
	var eSrcElement = adb_fGetSrcElement( oEvent );
	var sTagName = eSrcElement.tagName.toLowerCase();
	var sParentTagName = eSrcElement.parentNode.tagName.toLowerCase();
	switch( sTagName )
	{
		case "input":
		case "label":
		case "select":
		case "a":
			return false;
	}
    switch( sParentTagName )
	{
		case "a":
			return false;
	}
	return true;
}


function getDIVs()
{
	adb_compInitialisePanels();
}

function adb_geckoChildrenGetter()
{
	var aChildren = new Array();
	var aChildnodes = this.childNodes;
	var nChildnodes	= aChildnodes.length;
	var eChildnode;
	for( var i=0; i<nChildnodes; i++ )
	{
		eChildnode = aChildnodes[ i ];
		if( eChildnode.nodeType != 3 )
		{						
			aChildren.push( eChildnode ); 
		}
	}
	return aChildren;
}

function adb_compDocumentGetElementsByClassName( sClassName, sTagName )
{
	sTagName = ( sTagName || "*" );
	var aAllByTag = document.body.getElementsByTagName( sTagName );
	var nAllByTag = aAllByTag.length;
	var eElement, aElements = new Array();
    var xClassName = new RegExp( "(^|\\s)" + sClassName + "(\\s|$)" ); 
	for( var i=0; i<nAllByTag; i++ )
	{
		eElement = aAllByTag[ i ];
		if( xClassName.test( eElement.className ) )
		{
			aElements.push( eElement );
		}
	}
	return aElements;
}



