// ACHTUNG
// Diese Datei wird nur noch von den alten Browserchecks verwendet.
// Bitte nicht mehr in neue Browserchecks einbauen.

var browserInfo = new Array(5);
browserInfo = getBrowser();

function isMSIEBrowser() {
	return "msie" == browserInfo[2];
}

// Uebernommen aus useragent_definitions.js
function funcInterpretUserAgent(useragent, definition) {
	var ret={};
	function MatchDefinitions(defs) {
	
		for(var i in defs) {
			var subdefinition=defs[i];

			if(!subdefinition.match || (regex=new RegExp(subdefinition.match.substring(1, subdefinition.match.length-1), "i"), regex.test(useragent)) ) {
				for(key in subdefinition) {
					if(key=="match") 
						continue;
					if(key=="submatches") {
						MatchDefinitions(subdefinition[key]);
						continue;
					}
					if(!(key in ret)) {
						var value=subdefinition[key];
						
						if(value.substring(0, 1)=="/")
						{
							var regex=new RegExp(value.substring(1, value.length-1), "i");
							var matches=useragent.match(regex);
							if(matches)
								ret[key]=matches[1];
							else
								console.log("No matches for regex "+ value.substring(1, value.length-1));
						}
						else
							ret[key]=value;
					}
				}
			}
		}
	}
	
	MatchDefinitions(definition);
	return ret;
}

// Uebernommen aus useragent_definitions.js
var funcUseragentDefinitions = 
	 [
	 	{
	 		"match":"/version.*safari\\/(\\d+)*/",
	 		"browser":"safari",
	 		"name":"Safari",
	 		"version":"/version\\/(\\d+(\\.?\\d+)*)/",
	 		"safari":"/safari\\/(\\d+(\\.?\\d*)*)/"
	 	},
	 	{
	 		"match":"/firefox[\\/\\s](\\d+([\\.-]\\d+)*)/",
	 		"browser":"firefox",
	 		"name":"Firefox",
	 		"version":"/firefox[\\/\\s](\\d+([\\.-]\\d+)*)/",
	 		"test":"1"
	 	},
	 	{
	 		"match":"/chrome\\/(\\d+)*/",
	 		"browser":"chrome",
	 		"name":"Chrome",
	 		"version":"/chrome\\/(\\d+(\\.?\\d*)*)/" 		
	 	},
	 	{
	 		"match":"/opera[\\/\\s](\\d+(\\.?\\d+)*).*version/",
	 		"browser":"opera",
	 		"name":"Opera",
	 		"version":"/version\\/(\\d+(\\.?\\d+)*)/"
	 	},
	 	{
	 		"match":"/opera[\\/\\s](\\d+(\\.?\\d+)*)/",
	 		"browser":"opera",
	 		"name":"Opera",
	 		"version":"/opera[\\/\\s](\\d+(\\.?\\d+)*)/"
	 	},
	 	{
	 		"match":"/msie\\s(\\d+(\\.?\\d+)*)/",
	 		"browser":"ie",
	 		"name":"MS Internet Explorer",
	 		"version":"/msie\\s(\\d+(\\.?\\d+)*)/"
	 	},
	 	{
	 		"match":"/AppleWebKit\\/(\\d+(\\.?\\d*)*)/",
	 		"applewebkit":"/AppleWebKit\\/(\\d+(\\.?\\d*)*)/"
	 	},
	 	{
	 		"match":"/Android\\s(\\d+(\\.?\\d*)*)/",
	 		"osversion":"/Android\\s(\\d+(\\.?\\d*)*)/"
	 	},
	 	{
	 		"match":"/HTC_DesireS_S510e/",
	 		"mobiledevice":"HTC_DesireS_S510e"
	 	},
	 	{
	 		"language":"/(?:(?:[^)]*); ([a-z]{2}(?:-[a-zA-Z]{2})?)(?:;|))/"
	 	},
	 	
	 	{
	 		"match":"/(?:\\([^)]*)(Mac OS X)(?:[^\\)]*\\))/",
	 		"submatches":[
	 		{
	 			"match":"/(?:\\([^)]*)(iPhone)(?:[^\\)]*\\))/",
	 			"operatingsystem":"iPhone OSX",
	 			"mobile":"yes"
	 		},
	 		{
	 			"operatingsystem":"MacOSX",
	 			"systems":",mac,all,"
	 		}
	 		]
	 	},
	 	{
	 		"match":"/(?:\\([^)]*)(Android|SymbOS)(?:[^)]*\\))/",
	 		"operatingsystem":"/(?:\\([^)]*)(Android|SymbOS)(?:[^)]*\\))/",
	 		"mobile":"yes"
	 	},
	 	{
	 		"match":"/(?:\\([^)]*)(Windows)(?:[^)]*\\))/",
	 		"submatches":[
	 		{
	 			"match":"/(?:\\([^)]*)(NT 5.0)(?:[^)]*\\))/",
	 			"operatingsystem":"Win2000",
	 			"systems":",w2k,win,all,"
	 		},
	 		{
	 			"match":"/(?:\\([^)]*)(NT 5.1)(?:[^)]*\\))/",
	 			"operatingsystem":"WinXP",
	 			"systems":",wxp,win,all,"
	 		},
	 		{
	 			"match":"/(?:\\([^)]*)(NT 6.0)(?:[^)]*\\))/",
	 			"operatingsystem":"WinVI",
	 			"systems":",wvis,win,all,"
	 		},					
	 		{
	 			"match":"/(?:\\([^)]*)(NT 6.1)(?:[^)]*\\))/",
	 			"operatingsystem":"Win7",
	 			"systems":",win7,win,all,"
	 		},		
	 		{
	 			"match":"/(?:\\([^)]*)(NT)(?:[^)]*\\))/",
	 			"operatingsystem":"Windows",
	 			"systems":",win,all,"
	 		}					
	 		]
	 	},
	 	{
	 		"match":"/(?:\\([^)]*)(Linux|FreeBSD)(?:[^)]*\\))/",
	 		"operatingsystem":"/(?:\\([^)]*)(Linux|Windows|FreeBSD)(?:[^)]*\\))/",
	 		"systems":",lin,all,"
	 	},
	 	{
	 		"match":"/visorvalues:.*/",
	 		"visorvalues":"/visorvalues:(.*)/"
	 	},
	 	{
	 		"operatingsystem":"unknown",
	 		"systems":",all,",
		 	"browser":"unknown",
		 	"name":"unknown",
		 	"version":"0"
	 	},
	 	{
	 		"systems_iPhone OSX":",mac,all,",
	 		"systems_MacOSX":",mac,all,",
	 		"systems_Win2000":",w2k,win,all,",
	 		"systems_WinXP":",wvis,win,all,",
	 		"systems_WinVI":",win7,win,all,",
	 		"systems_Win7":",win7,win,all,",
	 		"systems_Windows":",win,all,"
	 	}
	 	
	 ]
;

// Ubernommen aus cbc3.js
var funcUseragentResult = funcInterpretUserAgent(navigator.userAgent, funcUseragentDefinitions);

function funcTrim(input) {
	return input.replace(/^\s*/, "").replace(/\s*$/, "");
}

function cbcOverrideByVisorvalue(original, visorValuename) {
	var visorValue = funcGetVisorValue(visorValuename);
	if (visorValue == "") {
		return original;
	}
	else {
		return visorValue;
	}
}

function funcGetVisorValue(valuename) {
	if (valuename == null) {
		return "";
	}
	var visorvalues = funcUseragentResult.visorvalues;
	if (visorvalues == null) {
		return "";
	}
	var valuenameIndex = visorvalues.toLowerCase().indexOf(valuename.toLowerCase());
	if (valuenameIndex == -1) {
		return "";
	}
	// Wert extrahieren
	var valueStartIndex = visorvalues.indexOf("=",valuenameIndex) + 1;
	if (valueStartIndex == 0) {
		return "";
	}
	var valueEndIndex = visorvalues.indexOf(";",valueStartIndex);
	if (valueEndIndex == -1) {
		valueEndIndex = visorvalues.length;
	}
	var value = visorvalues.substring(valueStartIndex, valueEndIndex);
	value = funcTrim(value);
	
	return value;
}

