/**
 * <br> $Header: /home/sclark/cvs2svn/cvsroot/website/scripts/siras.js,v 1.2 2010-05-04 19:56:01 doconnor Exp $
 *
 * Author: J. Myron Smith
 *
 * <br> Copyright 1999-2010 by SiRAS.com.
 * <br> All rights reserved. "SIRAS' technology is protected by one or more of U.S. Patents."
 *
 */
/*
// These are commented out for now because they effect every single javascript object created on a page
// and for now we have no need of these particular timer / timing / synchronizing functions
Object.prototype.timedCall = function(millisecs, method) {
 	var that = this;
 	var args = Array.prototype.slice.apply(arguments, [2]);

 	if (typeof method === 'string') {
 		method = that[method];
 	}

 	setTimeout( function() {
 					method.apply(that, args);
 				}, millisecs);
 	return that;
}

Object.prototype.recurringCall = function(millisecs, method) {
 	var that = this;
 	var args = Array.prototype.slice.apply(arguments, [2]);

 	if (typeof method === 'string') {
 		method = that[method];
 	}

 	setInterval( function() {
 					method.apply(that, args);
 				}, millisecs);
 	return that;
}
*/

var siras = {};
siras.widgets = {};

siras.env = function() {
	var mVersion = '1.0';
 	var mOS;
 	var mBrowser;
 	var mBrowserVersion;

 	var detect = {
		init: function () {
			mBrowser = this.searchString(this.dataBrowser) || "An unknown browser";
			mBrowserVersion = this.searchVersion(navigator.userAgent)
				|| this.searchVersion(navigator.appVersion)
				|| "an unknown version";
			mOS = 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: "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: "IE",
				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"
			}
		]
	}
	detect.init();

 	return {
 		getBrowser : function() {
 			return mBrowser;
 		},
 		getOS : function() {
 			return mOS;
 		},
 		getBrowserVersion : function() {
 			return mBrowserVersion;
 		},
 		getVersion : function() {
 			return mVersion;
 		}
 	}
}();
