﻿// Add trim function to strings

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };

function FloatToCurrency(fNumber)
{
	var strCurrency = "" + fNumber.toFixed(2);
	
	var i = 6;
	if ( fNumber < 0 )
		i = 7;
	while ( i < strCurrency.length )
	{
		strCurrency = strCurrency.substring(0, strCurrency.length - i) + "," + strCurrency.substring(strCurrency.length-i,strCurrency.length);
		i += 4;
	}
	
	return "$" + strCurrency;
}

function CurrencyToFloat(cNumber)
{
	var strNumber = "" + cNumber;
	
	strNumber = strNumber.replace('$','');
	var iNumberOfCommas = (strNumber.length - 3) / 4;
	var i = 0;	
	while ( i <= iNumberOfCommas ) 
	{
		strNumber = strNumber.replace(',','');
		i++;
	}
	
	return strNumber;
}

function TrimWhiteSpace(strString)
{
	return strString.replace(/^\s*|\s*$/g,"");
}

function DOTNETROUND(dNumber)
{
	return dNumber;
}

function hideElementByID(elemName)
{
	if ( document.getElementById(elemName) )
		hideElement(document.getElementById(elemName));
}

function hideElement(elem)
{
	elem.style.display = 'none';
}

function showElementByID(elemName)
{
	if ( document.getElementById(elemName) )
		showElement(document.getElementById(elemName));
}

function showElement(elem)
{
	elem.style.display = '';
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function getAbsolutePosition(elem)
{
    var left = 0;
    var top = 0;
    
    while ( elem != null )
    {
        left += elem.offsetLeft;
        top += elem.offsetTop;
        
        elem = elem.offsetParent;
    }
    
    return [left,top];
}

//This function returns an array of objects that have the fields parsed out
function ParseResponseSet( rawData )
{
	var RetRSArray = new Array(); //This will be a recordset of objects
	
	if(rawData == "")
		return RetRSArray;

	var RSArray = new Array();
	RSArray = String(rawData).split('#!#');
	
	for(var i=0; i < RSArray.length; i++)
	{
		var Record = new Object();
	
		var ColsArray = new Array();		
		ColsArray = String(RSArray[i]).split('&');
		
		for(var j=0; j < ColsArray.length; j++)
		{
			var NVArray = new Array();
			NVArray = String(ColsArray[j]).split('=');			
			//I'm sending back all the values escaped out
			Record[NVArray[0]] = unescape(String(NVArray[1]));
		}
		RetRSArray.push(Record);
	}	
	return RetRSArray;
}


function CenterElementToElement(centeredElement, elementCenteredTo, xOffset, yOffset)
{
    if ( xOffset == null )
        xOffset = 0;
        
    if ( yOffset == null )
        yOffset = 0;
   
    if ( centeredElement.style.position != 'absolute' )
        centeredElement.style.position = 'absolute';
    
    var centeredPos = getAbsolutePosition(elementCenteredTo);
    setElementPosition(centeredElement, [centeredPos[0] + elementCenteredTo.offsetWidth / 2 - centeredElement.offsetWidth / 2 + xOffset, centeredPos[1] + elementCenteredTo.offsetHeight / 2 - centeredElement.offsetHeight / 2 + yOffset] );
}

function setElementPosition(elem,pos)
{
    if ( elem.style.position != 'absolute' )
        elem.style.position = 'absolute';
        
    elem.style.left = pos[0] + 'px';
    elem.style.top = pos[1] + 'px';
}

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: "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"
		}
	]

};
BrowserDetect.init();


function getScrollWidth()
{
   var w = window.pageXOffset ||
           document.body.scrollLeft ||
           document.documentElement.scrollLeft;
           
   return w ? w : 0;
} 

function getScrollHeight()
{
   var h = window.pageYOffset ||
           document.body.scrollTop ||
           document.documentElement.scrollTop;
           
   return h ? h : 0;
}

GetWidth = function(elem) {
    function _Convert(val) {
        if (!val) {return;}
        val = val.replace("px","");
        if (isNaN(val)) {return 0;}
        return parseInt(val);
    }
    var currentStyle;
    if (elem.currentStyle) { currentStyle = elem.currentStyle; }
    else if (window.getComputedStyle) {	currentStyle = document.defaultView.getComputedStyle(elem, null); }
    else { currentStyle = elem.style; }
    return (elem.offsetWidth -
        _Convert(currentStyle.marginLeft) -
        _Convert(currentStyle.marginRight) -
        _Convert(currentStyle.borderLeftWidth) -
        _Convert(currentStyle.borderRightWidth));
}

GetHeight = function(elem) {
    function _Convert(val) {
        if (!val) {return;}
        val = val.replace("px","");
        if (isNaN(val)) {return 0;}
        return parseInt(val);
    }
    var currentStyle;
    if (elem.currentStyle) { currentStyle = elem.currentStyle; }
    else if (window.getComputedStyle) {	currentStyle = document.defaultView.getComputedStyle(elem, null); }
    else { currentStyle = elem.style; }
    return (elem.offsetHeight -
        _Convert(currentStyle.marginTop) -
        _Convert(currentStyle.marginBottom) -
        _Convert(currentStyle.borderTopWidth) -
        _Convert(currentStyle.borderBottomWidth));	
}

function WindowSize() 
{
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
    }
    return {width : myWidth, height : myHeight};
    }
    function FindPos(obj)
    {
    var posX = obj.offsetLeft;var posY = obj.offsetTop;
    while (obj.offsetParent)
    {
        posX = posX + obj.offsetParent.offsetLeft;
        posY = posY + obj.offsetParent.offsetTop;
        if (obj == document.body)
            break;
        else
            obj=obj.offsetParent;
    }
    return [posX, posY];
}
//Start -  Formated phone number mehtods...
var dFilterStep
function dFilterStrip (dFilterTemp, dFilterMask)
{
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
    {
        dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
    }
    return dFilterTemp;
}
function dFilterMax (dFilterMask)
{
    dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
    {
        if (dFilterMask.charAt(dFilterStep)!='#')
        {
            dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
        }
    }
    return dFilterTemp.length;
}

function dFilter (key, textbox, dFilterMask)
{

    var pNum = textbox.value;
    var blankNum = pNum.replace(/\D*/g, '');
    if(blankNum.length != 10)
        return false;
    dFilterNum = dFilterStrip(blankNum, dFilterMask);
    if (key==9)
    {
        return true;
    }
    else if (key==8&&dFilterNum.length!=0)
    {
        dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
    }
    else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
    {
        dFilterNum=dFilterNum+String.fromCharCode(key);
    }

var dFilterFinal='';
for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
{
    if (dFilterMask.charAt(dFilterStep)=='#')
    {
        if (dFilterNum.length!=0)
        {
            dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
            dFilterNum = dFilterNum.substring(1,dFilterNum.length);
        }
        else
        {
            dFilterFinal = dFilterFinal + "";
        }
    }
    else if (dFilterMask.charAt(dFilterStep)!='#')
    {
        dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep);                   
    }

//              dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');

    }
textbox.value = dFilterFinal;
return false;
}

function replace(fullString,text,by) {

// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;
    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;
    var newstr = fullString.substring(0,i) + by;
    if (i+txtLength < strLength)
        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);
    return newstr;
}
 function ClearPhoneTextbox(txt)
    {
        if( txt.value == '###-###-####' )
        {
            txt.value = '';
            txt.select();
        }
    }
//End -    Formated phone number methods...