var Global = {
	Init: function() {
		/***********************************************/
		/* Browser Detection
		/***********************************************/
		this.Browser = {
			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",
					versionSearch: "Version"
				},
				{
					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.userAgent,
					subString: "iPhone",
					identity: "iPhone/iPod"
				},
				{
					string: navigator.platform,
					subString: "Linux",
					identity: "Linux"
				}
			]
		};
		this.Browser.Init();
		
		this.Ellipsis = {
			Start: function(id, message) {
				this.Elem = document.getElementById(id);
				this.Elem.innerHTML = message + ' .';
				this.Timeout = null;
				this.Run();
			},
			Run: function() {
				//this.Elem.style.display = 'inline';
				if(this.Elem.innerHTML.match(/[^\.] \. \. \.$/)) {
					this.Elem.innerHTML = this.Elem.innerHTML.replace(/ \. \. \.$/, ' .'); 
				} else {
					this.Elem.innerHTML += ' .';
				}
				this.Timeout = setTimeout('Global.Ellipsis.Run()', 500);
			},
			Stop: function() {
				this.Stop('');
			},
			Stop: function(response) {
				clearTimeout(this.Timeout);
				//this.Elem.style.display = 'none';
				if(response != '') {
					this.Elem.innerHTML = response;
				}
			}
		}
	},
	
	SelectInnerHTML: function(objSelect, html) {
		// set the innerHTML on a select object
		var arr;
		
//		if(this.Browser.Browser != 'Explorer') {
//			objSelect.innerHTML = html;
//		} else {
			// remove existing options
			while(objSelect.options.length > 0) {
				objSelect.options.remove(0);
			}

//			arr = html.split(/((\s*<option value=")|(">)|(<\/option>\s*))/gi);  // lk20110928
            arr = html.split("<option value=\"");                               // lk20110928
			if(arr != null) {
			    var arr2 = null;												// lk20110928
				for(i=0; i<arr.length; i++) {
				    arr[i] = arr[i].replace("\">", ",");                        // lk20110928
				    arr[i] = arr[i].replace("</option>", "");                   // lk20110928
				    arr2 = arr[i].split(",");                                   // lk20110928
				    if (arr2.length == 2) {                                     // lk20110928
					    var oOption = document.createElement('OPTION');
					    objSelect.options.add(oOption);
					    oOption.value = arr2[0];								// lk20110928
					    oOption.innerHTML = arr2[1];                            // lk20110928
					}
				}
			}
//		}
	},

	StringReplace: function(strSrc, strSearch, strReplace) {
		// replace strSearch with strReplace
		var strBegin, strEnd;
		var temp = "" + strSrc;
		var pos = -1

		while (temp.indexOf(strSearch, (pos + 1)) > -1) {
			pos = temp.indexOf(strSearch, (pos + 1));
			strBegin = temp.substring(0, pos)
			strEnd = temp.substring((pos + strSearch.length), temp.length)
			temp = "" + (strBegin + strReplace + strEnd);
		}

		return temp;
	},

	TimeString: function() {
		var now = new Date();
		
		return now.getMinutes() + '.' + now.getSeconds() + '.' + now.getMilliseconds();
	},

	CancelBubble: function(e) {
		if (!e) {
			var e = window.event;
		}
		e.cancelBubble = true;
		if (e.stopPropagation) {
			e.stopPropagation();
		}
	},

	ShowDialog: function() {
		var args = this.ShowDialog.arguments;
		var url = args[0]; 
		var width = (args[1]) ? args[1] : 630;
		var height = (args[2]) ? args[2] : 450;
		var resizable = (args[3]) ? args[3] : '1';
		var windowName = (args[4]) ? args[4] : 'GWin'+width+'x'+height;
		var options = (args[5]) ? args[5] : '';
		
		eval(windowName+' = window.open(url, windowName, \'status=1,resizable=\' + resizable + \',scrollbars=1,' + options + 'height=\' + height + \',width=\' + width, false);');
		eval(windowName+'.focus();');
	}
}
Global.Init();

