// JavaScript Document
/****************************
Copyright Opera Software 2004
****************************/
addEvent( window, 'load', load );
var popID;
var tID;
var flash;
var browser;

if(navigator.appName.indexOf('Netscape') == -1) 
{
	browser = 'IE'; 
} 
else 
{ 
	browser = 'NN';
}


function load() 
{
	inMenu = false;
	flash = getNode( "flash" );
	body = document.getElementsByTagName( "body" )[0];

	last = null;
	if( getNode( "products" ) == null ) return;	

	var prds  = new MenuP( getNode( "products" ));
	var downloads  = new MenuP( getNode( "downloads" ));
	var digi_lib  = new MenuP( getNode( "digital_library" ));
	var support  = new MenuP( getNode( "support" ));
	var company  = new MenuP( getNode( "company" ));
		
	prds.add( new Menu( "ClickView Software", "/products/overview.php" ) );
	prds.add( new Menu( "ClickView Live", "/live" ) );
	prds.add( new Menu( "ClickView 24-7", "/247" ) );
	prds.add( new Menu( "ClickView Home", "/home" ) );
	prds.add( new Menu( "Access Manager", "/accessmanager") );
	prds.add( new Menu( "Hardware Accessories", "/products/hardware.php" ) );
	prds.add( new Menu( "Pricing", "/products/pricingNZ.php" ) );
	prds.add( new Menu( "Product Trials", "/trial/NZ/" ) );
	prds.create( );

	digi_lib.add( new Menu( "ClickView Digital Video Library", "/videolibrary" ) );
	digi_lib.add( new Menu( "ClickView Exchange", "/exchange" ) );
	digi_lib.add( new Menu( "Discovery Education", "/discovery" ) );
	digi_lib.add( new Menu( "4Learning", "/4Learning" ) );
	digi_lib.create( );
	
	support.add( new Menu( "Knowledgebase Articles", "/support/knowledge.php" ) );
	support.add( new Menu( "Installation Instructions", "/support/install.php" ) );
	support.add( new Menu( "Online Tutorials", "/support/flash_tutorial.php" ) );
	support.add( new Menu( "ClickView FAQ", "/support/faq.php" ) );
	support.add( new Menu( "Training Manuals", "/training/" ) );
	support.add( new Menu( "ClickView Home Help", "/home/help/" ) );
	support.add( new Menu( "Error Database", "/support/errors.php" ) );
	support.add( new Menu( "System Requirements", "/support/system_requirements.php" ) );
	support.add( new Menu( "Terms and Conditions", "/terms/index.php" ) );
	support.create( );
	
	company.add( new Menu( "Contact", "/contact" ) );
	company.add( new Menu( "Events", "/events" ) );
	company.add( new Menu( "Work at ClickView", "/jobs" ) );
	company.add( new Menu( "Case Studies", "/news/cstudy.php" ) );
	company.create();
	
}

function MenuP ( node ) 
{
	this.node = node;
	this.menuItems = new Array();

	MenuP.prototype.add = function( menuItem ) {
	this.menuItems[ this.menuItems.length ] = menuItem;	
}

	MenuP.prototype.create = function( ) {
		var dNode = document.createElement( "div" );
		dNode.className = "jsMenu";
		var str = "_" + this.node.id;
		dNode.setAttribute( "id", str );
		var w = this.node.offsetWidth;

		//dNode.style.width = w > 145 ? w+"px" : "145px";
		dNode.style.width = 150+"px";
		dNode.style.top = ( this.node.offsetTop + this.node.offsetHeight ) + "px";
		dNode.style.left = this.node.offsetLeft + "px";

		addEvent( this.node, "mouseover", function() { showMenuInTime(str, 150) } );
		addEvent( this.node, "mouseout", function() { setInMenu(false) } );
		dNode.setAttribute( "pItemID", this.node.id );
		addEvent( dNode, "mouseover", function() { setInMenu(true) } );
		addEvent( dNode, "mouseout", function() { setInMenu(false) } );
		var html = "<ul class=\"new_sub_menu_list\">";
		for( var i=0; i<this.menuItems.length; i++ ) {
			html += this.menuItems[i].getLinkHTML();
		}
		body.appendChild( dNode );
		dNode.innerHTML = html + "</ul>";
	}
}

function Menu( value, href ) 
{
	this.value = ( value == null ) ? "" : value;
	this.href = ( href == null ) ? "" : href;
	if( this.href != "" && typeof useAbsPath != "undefined" )
		if( useAbsPath && this.href.indexOf( "http://" ) == -1 && this.href.indexOf( "https://" ) == -1 )
			this.href = "http://www.opera.com" + this.href;
	Menu.prototype.getLinkHTML = function () {
		if( this.value != "" && this.href != "" )
			return "<li><a onclick=\"setInMenu(false); hideMenu(); return true;\" href=\"" + this.href + "\">" + this.value + "</a></li>";
		else if( this.value != "" && this.href == "" )
			return "<li class='heading'>" + this.value + "</li>";
		else
			return "<li class='separator'>&nbsp;</li>";
	}
}

function showMenuInTime( node, time ) 
{
	popID = setTimeout( "showMenu('" + node + "')", time );
}

function showMenu( node ) 
{	
	clearTimeout( popID );
	if( typeof node == "string" )
		node = getNode( node );
	if( last != null && last != node )
	{
		hideMenu( last );
	}
	else if( last == node ) 
	{		
		setInMenu( true );
		return;
	}
	
	var pItem = getNode( node.getAttribute( "pItemID" ) );
	var menuLeft = 0;
	var menuTop = pItem.offsetHeight;
	var tmp = pItem;
	while(tmp!=null && tmp.tagName!="BODY") 
	{
		if( tmp.tagName == "html:body" ) break;
		
		menuLeft += tmp.offsetLeft;
		//menuTop  += tmp.offsetTop;
		tmp = tmp.offsetParent;
	}
	
	node.style.left = menuLeft-1 + "px";
	node.style.top = 111 + "px";
	var w = pItem.offsetWidth;

	//	node.style.width = w > 145 ? w+"px" : "145px";
	if(browser == 'IE')
	{
		node.style.width = 154+"px";
	}
	else
	{	
		node.style.width = 150+"px";
	}
	
	node.style.display = "block";	
	
	setInMenu( true );
	last = node;
	if( flash != null )	flash.style.visibility = "hidden";
	tID = setTimeout( "hideMenu( last )", 500 );
}

function hideMenu( node ) 
{
	if( node == null ) {
		setInMenu( false );
		hideMenu( last );
		return;
	}
	if( typeof node == "string" )
		node = getNode( node );
	if( !inMenu ) 
	{
		node.style.display = "none";
		var pItem = getNode( node.getAttribute( "pItemID" ) );
		last = null;
		clearTimeout( tID );
		if( flash != null )	flash.style.visibility = "visible";
	} 
	else
		tID = setTimeout( "hideMenu( last )", 500 );	
}

function setInMenu( value ) 
{	
	inMenu = value;	
	if( !value ) clearTimeout( popID );
}

function addEvent( node, evtType, func ) 
{	
	if( node.addEventListener ) 
	{		
		node.addEventListener( evtType, func, false );
		return true;
	} 
	else if( node.attachEvent )
	{
		return node.attachEvent( "on" + evtType, func );
	}
	else
	{		
		return false;
	}
}

function getNode( nodeId ) 
{
	if( document.getElementById )
	{		
		return document.getElementById( nodeId );
	}
	else if( document.all && document.all( nodeId ) )
	{		
		return document.all( nodeId );
	}
	else if( document.layers && document.layers[ nodeId ] )
	{		
		return document.layers[ nodeId ];
	}
	else
		return false;
}
