﻿var BrowserDetect = {
	init: function () {
//		alert([
//			navigator.userAgent
//			,navigator.vendor
//			,navigator.platform			
//		].join('\n\n'));
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
//		this.browserVersion = this.searchBrowserVersion(navigator.userAgent) || this.searchBrowserVersion(navigator.appVersion) || "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
//		try { this.UserID = User.ID; } catch(e) { ; }
//		try { this.UserName = User.Name; } catch(e) { ; }
//		this.OSVersion = 
		try	{ this.updateWebLog(); } catch(e) { ; }
//		alert([
//			this.browser
//			,this.version
//			,this.OS
//		].join('\n\n'));
	},
	updateWebLog: function() {
		var xmlDoc=null;
		if (window.ActiveXObject) { // code for IE
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		}
		else if (document.implementation.createDocument) { // code for Mozilla, Browsers.Firefox, Opera, etc.
			xmlDoc=document.implementation.createDocument("","",null);
		}
		else {
			;
		}
		if (xmlDoc!=null) {
			var rootNode=xmlDoc.createElement("Log");
			xmlDoc.appendChild(rootNode);
			var nodes={
//				Browser:this.browser,
//				Version:this.version,
//				OS:this.OS,
//				BrowserVersion:this.browserVersion,
				PlatformDetails:this.getDataBrowser(this.dataBrowser).string,
//				UserID:this.User,
//				UserName:this.UserName,
				URL:unescape(window.location),
				ScreenSize:[screen.width,screen.height].join('x'),
				Referrer:unescape(document.referrer)
			};
			for (var n in nodes) {
				if (nodes[n]) {
					var node=xmlDoc.createElement(n);
					var textNode=xmlDoc.createTextNode(nodes[n]);
					node.appendChild(textNode);
					rootNode.appendChild(node);
				}
			}
			if (!xmlDoc.xml) {
				var serializer=new XMLSerializer();
				xmlDoc.xml=serializer.serializeToString(xmlDoc);
				serializer=null;
			}
//			alert(xmlDoc.xml);
			
			var xml=this.getHTTPObject();
			try {
				var url='/InsertWebLog.aspx';
				xml.open('POST', url, true);
				/*xml.onreadystatechange=function() {
					if (xml.readyState==4) {
						//alert([xml.status,xml.responseText].join('\n'));
						//var a=window.open('');
						//a.document.write(xml.responseText);
						if (xml.status==200) {
							
						}
					}
				}*/
				xml.setRequestHeader("Content-Type", "text/xml");
				xml.send(xmlDoc.xml);
			}
			catch(e) {
				alert(['BrowserDetect.updateWebLog',e].join('\n'));
			}
		}
	},
	getDataBrowser: 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];
			}
			else if (dataProp)
				return data[i];
		}
	},
	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));
	},
	searchBrowserVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		var stringLength=dataString.indexOf(' ', index);
		//return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
		if (stringLength>0)
			return dataString.substring(index+this.versionSearchString.length+1,stringLength);
		else
			return dataString.substring(index+this.versionSearchString.length+1,1000);
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "Chrome",
			versionSearch: "Chrome/",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			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"
		}
	],
	getHTTPObject: function () {
		//if (System.KeepLog) System.Log.push(new LogEntry(arguments));
		var xmlhttp;
		/*@cc_on
		@if (@_jscript_version >= 5)
			try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } 
			catch (e) {
				try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } 
				catch (E) { xmlhttp = false; }
			}
		@else
		xmlhttp = false;
		@end @*/
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
			try { xmlhttp = new XMLHttpRequest(); } 
			catch (e) { xmlhttp = false; }
		}
		return xmlhttp;
		xmlhttp=null;
	}
};
BrowserDetect.init();
var Browsers={
	Chrome		:(BrowserDetect.browser=='Chrome')
	,IE			:(BrowserDetect.browser=='Explorer')
	,Safari		:(BrowserDetect.browser=='Safari')
	,Firefox	:(BrowserDetect.browser=='Firefox')
};
