<!--

/*
 *	Aurora Nova Bridge
 *	
 * 	LICENSE: This file is part of the Aurora Nova Bridge.
 *
 *  Aurora Nova is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Aurora Nova is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Aurora Nova Plattform.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * @file		cpanel.js
 * @browsers	Crossbrowser
 * @architect   Vincent Virgile Janssens <vja@webmen.de> <vincent_virgille@hotmail.com>
 * @copyright  	Webmen Internet GmbH <http://www.webmen.de>
 * @license    	GNU Public License version 3	
 * @version	 	1.0
 *
 * Last Edited	29/03/2010
 * Created By	Vincent Virgile Janssens <vja@webmen.de> or <vincent_virgille@hotmail.com>
 *
*/

//************************************************
//General Variables
var jumpStack = [] ;
var browserName = returnBrowser() ;
var OS = returnOS();
var Mactivated = false ;
var linguaActiva = '' ;
var lsent = [] ;
var blnWinMode = false ;

//************************************************
//Language/Translation

lsent['EN'] = new Array(
			"Off",
			"Activated",
			"or",
			"shift+space",
			"then press",
			"ctrl+alt",
			"Press any key between 0-9 or A-Z to continue...."
		);

lsent['DE'] = new Array(
			"Inaktiv",
			"Aktiviert",
			"oder",
			"Umschalt+Leertaste",
			"gefolgt durch",
			"strg+alt",
			"Dr&uuml;cken Sie eine beliebeige Taste von 0-9 oder A-Z um weiter zu gehen...."
		);

lsent['ES'] = new Array(
			"Inactivo",
			"Activado",
			"o",
			"Shift+Barra espaciadora",
			"seguido de",
			"Ctrl+alt",
			"Pulsa una tecla entre 0-9 o de A-Z para continuar...."
		);

lsent['NL'] = new Array(
			"Niet Aktief",
			"geactiveerd",
			"of",
			"Shift+space",
			"gevolgd door",
			"Ctrl+alt",
			"Kies een letter of cijfer tussen 0-9 of A-Z om verder te gaan..."
		);


//************************************************


//Return current user browser
function returnBrowser() {
	var agt=navigator.userAgent.toLowerCase();

	if (agt.indexOf("opera") != -1) return 'Opera';
	if (agt.indexOf("beonex") != -1) return 'Beonex';
	if (agt.indexOf("chimera") != -1) return 'Chimera';
	if (agt.indexOf("firefox") != -1) return 'Firefox';
	if (agt.indexOf("safari") != -1) return 'Safari';
	if (agt.indexOf("msie") != -1) return 'Microsoft';
	if (agt.indexOf("netscape") != -1) return 'Netscape';
	if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
	
	var reg = /chrome/;
	if(reg = reg.exec(agt) == "chrome") return 'Chrome';	
	
	if (agt.indexOf('\/') != -1) {
		if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
			return navigator.userAgent.substr(0,agt.indexOf('\/'));
		} else return 'Netscape';
	} 
	
	else if (agt.indexOf(' ') != -1) return navigator.userAgent.substr(0,agt.indexOf(' '));
	
	else return navigator.userAgent;
}

//Return Operating System
function returnOS(){
	if (navigator.appVersion.indexOf("Win")!=-1)  return "WINDOWS";
	if (navigator.appVersion.indexOf("Mac")!=-1) return "MAC";
	if (navigator.appVersion.indexOf("X11")!=-1) return "UNIX";
	if (navigator.appVersion.indexOf("Linux")!=-1) return "LINUX";
	else return "UNKNOWN" ;
}

//initialize eb
function eb_init(INIT_PRINT_TO_SCREEN, INIT_TYPE, WIDTH, INIT_BUILD_TYPE, XML_LIST, LANG, APP_MODE){
	
	if(LANG===undefined) linguaActiva="EN";
	linguaActiva = LANG ;
	
	
	if(APP_MODE===undefined) blnWinMode= false;
	blnWinMode = APP_MODE ;
	
	//Build control Panel stack structure fromXML or byId
	if(INIT_BUILD_TYPE===undefined) INIT_BUILD_TYPE="XML_MOD";
	
	stackUrl = eb_stack_cp(document, INIT_BUILD_TYPE, XML_LIST);
	jumpStack = stackUrl ;
	
	//alert("DEBUGGING\nLine:142\nVariable:none\nOutput:Test");

	if(INIT_PRINT_TO_SCREEN===undefined) INIT_PRINT_TO_SCREEN=false;
	
	if(INIT_PRINT_TO_SCREEN)
	{
		if(INIT_TYPE===undefined) INIT_TYPE="BOTH";
		if(WIDTH===undefined) WIDTH=3;
	
		if(INIT_TYPE=="NUM") eb_build_cp(document, stackUrl, 'ebPanel', 0, 10, WIDTH);
		else if(INIT_TYPE=="ASSOC") eb_build_cp(document, stackUrl, 'ebPanel', 10, 36, WIDTH);
		else if(INIT_TYPE=="BOTH") eb_build_cp(document, stackUrl, 'ebPanel', 0, 36, WIDTH);

	}
	
}

//build control panel stack structure
function eb_stack_cp(object, INIT_BUILD_TYPE, XML_LIST){
	var cpStack = [] ;
	if(INIT_BUILD_TYPE=="HTML_MOD"){
		var i;
		for(i=0; i<=35; i++){
			//Read Control Panel
			panelContents = object.getElementById('cpn_'+i).innerHTML ;
			//Breakdown control panel
			panelSplit = panelContents.split("::");
			//Asign blocks
			cpStack[panelSplit[0]] = [];
			cpStack[panelSplit[0]]['key'] = panelSplit[0] ; //Key
			cpStack[panelSplit[0]]['url'] = panelSplit[1] ; //Url
			cpStack[panelSplit[0]]['caption'] = panelSplit[2] ; //Caption
			cpStack[panelSplit[0]]['target'] = panelSplit[3] ; //Target
		}
	} else{
		cpStack = ajaXmlParseStack(XML_LIST);
	}
	
	return cpStack ;
}


//Parse Stack Structure from XML
function ajaXmlParseStack(XML_LIST){
		
	//Connect trough Ajax on XML Crossbrowser
	var xmlHttp;
	try {  xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');   }
	catch (e) 
	{
		try {   xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');    }
		catch (e2) 
		{
		  try {  xmlHttp = new XMLHttpRequest();     }
		  catch (e3) {  xmlHttp = false;   }
		}
	 }
	
	//Check Status
	xmlHttp.onreadystatechange  = function()
	{ 
		 if(xmlHttp.readyState  == 4)
		 {
			  if(document.ajax){ //Check If document.ajax is object for some browsers
				  if(xmlHttp.status  == 200) {
					 document.ajax.dyn="Received:"  + xmlHttp.responseText;
				  } else{ 
					 document.ajax.dyn="Error code " + xmlHttp.status;
				  }
			  }
		 }
	}; 
	
	//Open XML
	xmlHttp.open("GET", XML_LIST,  false); 
	xmlHttp.send(null);
	
	var xmlDoc = xmlHttp.responseXML;
	
	var ELEMENT_NODE = 1 ;
	var elements = xmlDoc.getElementsByTagName("trigger");
	var strFormat="", alt;
	var cpStack = [] ;
	
	for (i=0; i < elements.length; i++)
	{
		var key, id, url, caption, target ;
		
		key =  elements[i].getAttribute('key') ;
		id =  elements[i].getAttribute('id') ;
			
		for (j=0; j < elements[i].childNodes.length; j++)
		{
			if (elements[i].childNodes[j].nodeType != ELEMENT_NODE) continue;
			if(elements[i].childNodes[j].nodeName=="url") url = elements[i].childNodes[j].firstChild.nodeValue ;
			if(elements[i].childNodes[j].nodeName=="caption") caption = elements[i].childNodes[j].firstChild.nodeValue ;
			if(elements[i].childNodes[j].nodeName=="target") target = elements[i].childNodes[j].firstChild.nodeValue ;	

			//alert("DEBUGGING\nLine:240\nVariable:url\nOutput:"+stackUrl['0']['url']);

			cpStack[key] = [];
			cpStack[key]['key'] = key; //Key
			cpStack[key]['url'] = url ; //Url
			cpStack[key]['caption'] = caption ; //Caption
			cpStack[key]['target'] = target ; //Target
		}
	
	} 

	return cpStack ;
}

//function build visual control panel
function eb_build_cp(object, stackUrl, toElement, tOffset, tMax, tWidth)
{
	//alert("DEBUGGING\nLine:257\nVariable:none\nOutput: Inside eb_build_cp(...)");

	var blnBuild = true, strOut = "" , i, y, sx, modSwitch, strClass, strTemp, strCaption ;
	var lstBuild = new Array(
			'0','1','2','3','4','5','6','7','8',
			'9','A','B','C', 'D', 'E','F','G','H',
			'I','J','K','L','M','N','O','P','Q',
			'R','S','T','U','V','W','X','Y','Z'
		) ;

	tOffset = tOffset + 1 ;

	if(blnBuild){
		//Build Panel
		strOut = '<table border=0><tr  class="control_panel">';
		y=1;
		
		for (i=tOffset; i<=tMax; i++)
		{
			sx = String(i-1);
			
			if(y%tWidth==0) modSwitch = '</tr><tr class="control_panel">' ;
			else modSwitch = '' ;
			if(y==tMax) modSwitch = '</tr>' ;
			
			//alert("DEBUGGING\nLine:282\nVariable:stackUrl[lstBuild[sx]]\nOutput:"+stackUrl[lstBuild[sx]]['url']);
			
			//Check if reference has been set as empty on keyword NOURL and NOCAPTION
			if(stackUrl[lstBuild[sx]]['url']!=="NOURL"&&stackUrl[lstBuild[sx]]['caption']!=="NOCAPTION"){
				strClass = 'btnav' ;
				
				strCaption = 'Aurora ['+lsent[linguaActiva][3]+', '+lsent[linguaActiva][4]+' ' + stackUrl[lstBuild[sx]]['key'] + ']' ;
				
				//Specific for Safari and Windows
				if(blnWinMode===true){
					if(browserName=="Safari"||OS=="WINDOWS"){ 
						strCaption = strCaption + ' ' + lsent[linguaActiva][2] + ' Application ['+lsent[linguaActiva][5]+'+' + 
							stackUrl[lstBuild[sx]]['key'] + ']';
					}
				}
				
				strCaption = strCaption + ' = ' + stackUrl[lstBuild[sx]]['caption'] ; 
								
				strTemp = ' onMouseover="this.className=\'btnavover\';" onMouseRelease="this.className=\'btnav\';" onMouseout="this.className=\'btnav\';" ' +
						' onClick="document.location.href=\''+stackUrl[lstBuild[sx]]['url']+'\'"';
				strOut = strOut + '<td width="40" align="center" valign="middle" height="40" class="'+strClass+'" ' + strTemp + '>'+
					'<div class="panelNav"><a href="'+stackUrl[lstBuild[sx]]['url']+'" title="'+strCaption+'" class="aNav" accesskey="'+stackUrl[lstBuild[sx]]['key']+'">'+stackUrl[lstBuild[sx]]['key']+'</a></div></td>' + 
				  modSwitch ;
						
			} else{
				strClass = 'unset' ;
				strTemp = '' ;
				strOut = strOut + '<td width="40" align="center" valign="middle" height="40" class="'+strClass+'" ' + strTemp + '>'+
					stackUrl[lstBuild[sx]]['key']+'</div></td>' + 
				  modSwitch ;
			}
			
			y++;
		}

		strOut = strOut + '</table><br> &nbsp; <a href="http://www.webmen.de" target="_BLANK"><img src="aurora/aurora_nova.jpg" alt="Aurora Nova Bridge Logo" border="0" title="Aurora Nova Bridge Logo" id="an_logo"></a>' ;
		object.getElementById(toElement).innerHTML = strOut ;
	}
}

//jump to required location
function eb_jump(tKey){
	if(jumpStack[tKey]['url']!=="NOURL"){
		if(jumpStack[tKey]['target']=="_BLANK") window.open(jumpStack[tKey]['url']);
		else document.location.href=jumpStack[tKey]['url'];
	}
}


//trap keycombination
function eb_bridge_keys (e) 
{
	
	if (!e) e = window.event;
 		
	var kc = e.keyCode ? e.keyCode:e.which;
	var sChar = kc ;

	if(blnWinMode===true){
		if (e.preventDefault) { e.preventDefault(); } 
		else { e.returnValue = false; }
	
		if (e.stopPropagation) { e.stopPropagation(); } 
		else { e.cancelBubble = true; }
	}
	//Create Spacebar Instance
	e.spaceBar = new Object ; e.spaceBar = false ;
	if(sChar==32) e.spaceBar = true ;
	var flag = Mactivated ;
	
	if(e.spaceBar&&e.shiftKey&&Mactivated==true){
		flag = false ;
		document.getElementById('ebMactivated').innerHTML = '' ;
	}else if(e.spaceBar&&e.shiftKey&&Mactivated==false){
		flag = true ;
		if (!document.getElementById("ebMactivated")) {
			var newNode = document.createElement('div');
			newNode.setAttribute('id','ebMactivated');
			document.body.insertBefore(newNode, document.body.firstChild);
		}
		document.getElementById('ebMactivated').innerHTML ='<a name="getFocus" id="getFocus"></a><div id="ebHeader">Aurora Modus '+lsent[linguaActiva][1]+'<br />'+lsent[linguaActiva][6]+'</div>'  ;
		window.location.href="#getFocus";
	}
	
	Mactivated = flag ;

	//Captchure Key, translate and jump to request
	if(blnWinMode===true){
		if ((e.ctrlKey&&e.altKey)||(Mactivated)) {
			//Check Key Combo
			if((sChar!=16 && sChar>=65 && sChar<=90) || (sChar!=16 && sChar>=97 && sChar<=122) || (sChar >= 48  && sChar <= 57)){
				 //Transform all ASCII to string upper
				 var sAlpha=String.fromCharCode(sChar).toUpperCase();
				 //Jump to requested trigger
				 eb_jump(sAlpha);
			} return false ;
		}	
	}else{
		if (Mactivated) {
			//Check Key Combo
			if((sChar!=16 && sChar>=65 && sChar<=90) || (sChar!=16 && sChar>=97 && sChar<=122) || (sChar >= 48  && sChar <= 57)){
				 //Transform all ASCII to string upper
				 var sAlpha=String.fromCharCode(sChar).toUpperCase();
				 //Jump to requested trigger
				 eb_jump(sAlpha);
			} return false ;
		}
	}
	
	
}

if(browserName=="Microsoft"||browserName=="Safari")  document.onkeydown = eb_bridge_keys;
else  document.onkeypress = eb_bridge_keys;
-->
