function GetBrowserVersion(){
	var ua = navigator.userAgent;
	var an = navigator.appName;
	var v = new Object;
	v.VersionID = 'UNKNOWN';
	v.Product = '';
	v.VersionName = '';
	v.VersionNum = 0;
	v.MinorVersion = 0;
	v.Edition = '';
	if (ua.indexOf('MSIE') >= 1){
		v.Product = 'IE';
		if (ua.indexOf('MSIE 3.0') >=1){
			v.VersionNum = 3;
			v.VersionID = 'IE30';
		}
		else if (ua.indexOf('MSIE 4.0') >=1) {
			v.VersionNum = 4;
			v.VersionID = 'IE40'
			var sMinorVer = ua.charAt(ua.indexOf('MSIE 4.0') + 8);
			if ((sMinorVer == 'b') || (sMinorVer == 'p')){
				v.VersionID = 'IE40B';
				v.Edition = 'Beta';
			}
			else if (sMinorVer == '1'){
					v.VersionID = 'IE401';
					v.MinorVersion = .01;
			}
			
		}
		else if (ua.indexOf('MSIE 5') >= 1) {
			v.VersionNum = 5;
			v.VersionID = 'IE50';
			if (ua.indexOf('MSIE 5.5') >= 1){
				v.VersionID = 'IE55';
				v.MinorVersion = .5;
			}
		}


	}
	else if (an == 'Netscape'){
		v.Product = 'NS';
		var appVer = parseInt(navigator.appVersion);
		if (appVer >= 4){
			v.ProductID = 'NS4';
			v.VersionNum = 4;
		}
		else if (appVer >=3){
			v.ProductID = 'NS3';
			v.VersionNum = 4;
		}
		else {
			v.ProductID = 'NS2';
			v.VersionNum = 2;
		}
	}
return v;
}

function DateToLocalString(d){
var s = (d.getMonth() + 1).toString() + '/' + d.getDate().toString() + '/' + d.getFullYear().toString();
return s;
}

function XMLDateToLocal(d){
var aDate = d.split('-');
var cDate = '';
if (aDate.length == 3)
	cDate =  aDate[1] + '/' + aDate[2] + '/' + aDate[0];
return cDate;
}

//Iterator functions-----------------
function IterateFunc(c, oFunc){
var nLastIndex = -1; nTimes = c.length;
for (var i = 0; i < nTimes; i++){
	nLastIndex = i;
	if (oFunc(c[i], i, nTimes)){
		nLastIndex = i - 1;
		break;
	}
}
return nLastIndex;
}

function IterateMethod(c, oFunc){
var nLastIndex = -1; nTimes = c.length;
for (var i = 0; i < nTimes; i++){
	if (oFunc.Process(c[i], i, nTimes)){
		nLastIndex = i - 1;
		break;
	}
}
return nLastIndex;
}


function PrepText(e, i, n){
if (e.type == 'text' && e.cFormatCodes != null)
	txtFormat(e, e.cFormatCodes);
}

function TrimText(e, i, n){
if (e.type == 'text')
	txtRTrim(e);
}

//----------------------------------


function CheckDateFMT(d){
var checkOK=false;
var fmt=/\d{2}\x2F\d{2}\x2F\d{4}\s*$/;
if (fmt.test(d)){
	var aNum = d.split('/');
	if (aNum.length == 3){
		var dt = new Date(d);
		if ((dt.getFullYear() == aNum[2].valueOf()) && (dt.getMonth() == aNum[0].valueOf() - 1) && (dt.getDate() == aNum[1]))
			checkOK = true;
	}
}
return checkOK
}

function CheckNumberFMT(n){
var fmt=/(^\x2D?\d+\s*$)|(^\x2D?\d+\.\d+\s*$)/;
return fmt.test(n);
}

function CheckIntFMT(n){
var fmt=/^\x2D?\d+\s*$/;
return fmt.test(n);
}

function CheckUIntFMT(n){
var fmt=/^\d+\s*$/;
return fmt.test(n);
}

function CheckZIPFMT(z){
var fmt=/^\d{5}\s*$|^\d{5}\x2D\d{4}\s*$/;
return fmt.test(z);
}

function CheckPhoneFMT(p){
var fmt=/\d{3}\x2D\d{3}\x2D\d{4}\s*$/;
return fmt.test(p);
}

function CheckEmailFMT(e){
var fmt=/^[a-z]+[a-z0-9]*((_+[a-z0-9]+)|(\.[a-z]+[a-z0-9]*))*@[a-z]+[a-z0-9]*(\x2D+[a-z0-9]+)*\.[a-z]{3}\s*$/i;
return fmt.test(e);
}

function IsAlpha(c){
var fmt=/^[a-z]+/i;
return fmt.test(c);
}

function IsAlphaNum(c){
var fmt=/^[a-z0-9]+/i;
return fmt.test(c);
}

function StrFormat(s, f){
f = f.toUpperCase();
if (f.indexOf('U') != -1)
	s = s.toUpperCase();
if (f.indexOf('T') != -1)
	s = StrTrim(s);
else
{
	if (f.indexOf('L') != -1)
		s = StrLTrim(s);
	if (f.indexOf('R') != -1)
		s = StrLTrim(s);
}
return s;
}

function txtFormat(t, f){
t.value = StrFormat(t.value, f)
}

function txtToUpperCase(t){t.value = t.value.toUpperCase();}

function txtRTrim(t){t.value = StrRTrim(t.value);}

function txtLTrim(t){t.value = StrLTrim(t.value);}

function txtTrim(t){t.value = StrTrim(t.value);}


function StrRTrim(s){
while (s.substring(s.length-1,s.length) == ' ')
        s = s.substring(0, s.length-1);
return s
}

function StrLTrim(s){
while (s.substring(0,1) == ' ')
	s = s.substring(1, s.length);
return s
}

function StrTrim(s){return StrRTrim(StrLTrim(s));}

function StrReplicate(c, n){
var s = '';
for (var i = 0; i < n; i++)
	s = s.concat(c);
return s;
}

function StrCharReplace(s, n, c){
var cRetVal = s;
if (n >= 0){
	var cLeft = s.substr(0,n), cRight = s.substr(n+1);
	cRetVal = cLeft + c + cRight;
}
return cRetVal;
}

function JustFName(s){
var c = '', n = -1;
for (var i = s.length-1; i >= 0; i--){
	c = s.substring(i,i+1);
	if (c == '/'){
		n = i;
		break;
	}
}
return s.substring(n+1,s.length);
}

function JustPath(s){
var c = '', n = -1;
for (var i = s.length-1; i >= 0; i--){
	c = s.substring(i,i+1);
	if (c == '/'){
		n = i;
		break;
	}
}
return s.substring(0,n+1);
}

function PathSplit(s){
var c = '', n = -1, a = new Array(2);
for (var i = s.length-1; i >= 0; i--){
	c = s.substring(i,i+1);
	if (c == '/'){
		n = i;
		break;
	}
}
a[0] = s.substring(0,n+1);
a[1] = s.substring(n+1,s.length);
return a;
}