//////////////////////////////////////////////////////////////////////////////////////////////////
////// BROWSER DETECTION
//////////////////////////////////////////////////////////////////////////////////////////////////
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.userAgent,
		           subString: "iPhone",
		           identity: "iPhone/iPod"
            },
	        {
		        string: navigator.platform,
		        subString: "Linux",
		        identity: "Linux"
	        }
        ]

    };
    BrowserDetect.init();

    function DateToString(objDate)
    {
        var strResult = "";
        strResult = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getFullYear();
        return strResult;
    }

    function CheckGotoNext(el, intChars, strNextID)
    {
        try
        {
            if (el.value.length >= intChars)
                document.getElementById(strNextID).focus();    
        }
        catch (ex)
        {
            LogJavascriptException("Utilities.js", "CheckGotoNext()", "", ex);
        }
    }
    function formatCurrency(num)
    {
        num = num.toString().replace(/\$|\,/g, '');
        if (isNaN(num))
            num = "0";
        sign = (num == (num = Math.abs(num)));
        num = Math.floor(num * 100 + 0.50000000001);
        cents = num % 100;
        num = Math.floor(num / 100).toString();
        if (cents < 10)
            cents = "0" + cents;
        for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
            num = num.substring(0, num.length - (4 * i + 3)) + ',' +
num.substring(num.length - (4 * i + 3));
        return (((sign) ? '' : '-') + '$' + num + '.' + cents);
    }

    function figureTotal(fltBalance, fltInterest, fltPayment)
    {
        fltInterest = fltInterest / 100 / 12; // get the monthly interest rate from the apr
        var fltBalanceRemaining = fltBalance;
        var fltPrincipalPortion = 0;
        var fltInterestPortion = 0;
        var fltAccruedInterest = 0;
        var count = 0;

        while (fltBalanceRemaining > 0)
        {
            // we will assume a minimum payment of $10
            if ((fltBalanceRemaining - fltPayment) <= 0)
                fltPayment = fltBalanceRemaining;

            fltInterestPortion = fltInterest * fltBalanceRemaining;
            fltPrincipalPortion = fltPayment - fltInterestPortion;
            fltBalanceRemaining = fltBalanceRemaining - fltPrincipalPortion;
            fltAccruedInterest = fltAccruedInterest + fltInterestPortion;
            count = count + 1;
            if (count > 600)
                break;
        }

        return fltBalance + fltAccruedInterest;
    }

    // This simple method rounds a number to two decimal places.
    function round(x)
    {
        return Math.round(x * 100) / 100;
    }

