/* evolution.js */
/* author: mw@arsnavigandi.de */
/* for arscms devolopment 1.0 */

/* for logger*/
function arscms_logDEBUG(txt){try{if(arscms['loggerEnabled']){Logger.debug(txt);}}catch(ex){}}
function arscms_logINFO(txt){try{if(arscms['loggerEnabled']){Logger.info(txt);}}catch(ex){}}
function arscms_logWARN(txt){try{if(arscms['loggerEnabled']){Logger.warn(txt);}} catch(ex){}}
function arscms_logERROR(txt){try{if(arscms['loggerEnabled']){Logger.error(txt);}}catch(ex){}}
function arscms_logFATAL(txt){try{if(arscms['loggerEnabled']){Logger.fatal(txt);}}catch(ex){}}
function arscms_logOFF(txt){try{if(arscms['loggerEnabled']){Logger.off(txt);}}catch(ex){}}
/*------------------------------------------------------------------------------*/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
/*------------------------------------------------------------------------------*/
var arscms = new Array();
/*------------------------------------------------------------------------------*/
arscms['timeStamp_start'] = new Date();
arscms['ajaxURL'] = window.location.protocol+'//'+window.location.host+window.location.pathname+'?isAjax=1&ajaxResponseMimeType=xml';
arscms['ajaxURL_pl'] = window.location.protocol+'//'+window.location.host+'/index.pl'+window.location.pathname+'?isAjax=1&ajaxResponseMimeType=xml';
arscms['loggerEnabled'] = false;
/*------------------------------------------------------------------------------*/
function arscms_loadEventHandler(e) {
/* try to enable logger */
	try {
		arscms_initializeLogger();
		draginit();
		document.getElementById('logger').onmousedown="alert(2)";
		Event.observe(document.getElementById('logger'), 'mousedown', dragstart);
	} catch (ex) {
	}

	//<div onmousedown="dragstart(this)" style="position:absolute;bottom:2px;right:2px;height:100px;width:100px;background:#ff0000"> </div>
	arscms['timeStamp_load'] = new Date();
	arscms['durationLoad'] = (arscms['timeStamp_load'].getTime()-arscms['timeStamp_start'].getTime())*1000;
	for (var i = 0; i < document.getElementsByTagName('meta').length; i++) {
		if (document.getElementsByTagName('meta')[i].getAttribute('name') == 'cycleId') {
			arscms['cycleId'] = document.getElementsByTagName('meta')[i].getAttribute('content');
		}
	}

	for (var i=0; i < arscms['registeredEvents'].length; i++) {
		if (arscms['registeredEvents'][i]['eventType'] == 'load' && arscms['registeredEvents'][i]['eventObject'] == window) {
			eval(arscms['registeredEvents'][i]['eventFunctionName']+"(e,arscms['registeredEvents'][i]['eventFunctionParams'])");
		} else {
			var realfunc = eval(arscms['registeredEvents'][i]['eventFunctionName']);
			Event.observe(arscms['registeredEvents'][i]['eventObject'], arscms['registeredEvents'][i]['eventType'], realfunc.bindAsEventListener({},arscms['registeredEvents'][i]['eventFunctionParams']));
		}
	}
	arscms_logINFO('timeStamp_start'+': '+arscms['timeStamp_start'].getTime()+' s');
	arscms_logINFO('timeStamp_load'+':  '+arscms['timeStamp_load'].getTime()+' s');
	arscms_logINFO('=> durationLoad'+': '+arscms['durationLoad']+' Microsec.');
	
//	new Ajax.Request(arscms['ajaxURL'], {
//	  method: 'get',
//	  parameters: '&op=clientTracking&cycleId='+arscms['cycleId']+'&durationLoad='+arscms['durationLoad'],
//		onComplete: function(transport) {
//			/*alert('tracking complete');*/
//		}
//	});
}
/*------------------------------------------------------------------------------*/
Event.observe(window, 'load', arscms_loadEventHandler);
/*------------------------------------------------------------------------------*/
function arscms_errorEventHandler(message,url,line) {
	try {
		new Ajax.Request(arscms['ajaxURL'], {
		  method: 'get',
		  parameters: '&op=logClientError&cycleId='+arscms['cycleId']+'&url='+encode(window.location.href)
		});
	} catch (ex) {
		alert('Es ist ein unbekannter Fehler aufgetreten,\\nbitte wenden Sie sich an den Systemverwalter.');
	} finally {
		return true;
	}
}
/*------------------------------------------------------------------------------*/
function arscms_unloadEventHandler(e) {
	arscms['timeStamp_unload'] = new Date();
	arscms['durationStay'] = (arscms['timeStamp_unload'].getTime()-arscms['timeStamp_load'].getTime())*1000;
	
	arscms_logINFO('timeStamp_unload'+':'+arscms['timeStamp_unload'].getTime()+' s');
	arscms_logINFO('=> durationStay'+': '+arscms['durationStay']+' Microsec.');

		new Ajax.Request(arscms['ajaxURL'], {
		  method: 'get',
		  parameters: '&op=clientTracking&cycleId='+arscms['cycleId']+'&durationStay='+arscms['durationStay'],
			onComplete: function(transport) {
				/*alert('tracking complete');*/
		  }
		});

}
/*------------------------------------------------------------------------------*/
/*
function schreieMalAnton() {
	alert("anton");
}
*/
arscms['registeredEvents']=[
/*mw28out:*/
	/*{'eventType':'error','eventObject':window,'eventFunctionName':'arscms_errorEventHandler'},*/
	/*{'eventType':'resize','eventObject':window,'eventFunctionName':'schreie'},*/
	/*{'eventType':'load','eventObject':window,'eventFunctionName':'schreieMalAnton'},*/
	/*{'eventType':'beforeunload','eventObject':window,'eventFunctionName':'arscms_unloadEventHandler'}*/
];
/*------------------------------------------------------------------------------*/
function arscms_registerEvent(data) {
	arscms['registeredEvents'].push({'eventType':data['eventType'],'eventObject':data['eventObject'],'eventFunctionName':data['eventFunctionName'],'eventFunctionParams':data['eventFunctionParams']});
}
/*------------------------------------------------------------------------------*/
arscms['loadingOk'] = true;
arscms['browserVersion'] = BrowserDetect.version;
arscms['browserName'] = BrowserDetect.browser;
function startLoading() {}
function stopLoading() {}

