function cleanNumber(strNum)
{
	if (!strNum) return strNum;
	strNum = replace(strNum, '$', '', 0);
	strNum = replace(strNum, ',', '', 0);
	strNum = replace(strNum, '%', '', 0);	
	return strNum;
}

function replace(buf, szFind, szReplace, lStart)
{
	var lFind = 0;
	var szBuf = new String(buf);
	if (!lStart) lStart = 0;
	while (lFind != -1) {
		lFind = szBuf.indexOf(szFind, lStart);
		if (lFind != 0 &&(lFind == '' || lFind == null)) lFind = -1;
		if (lFind != -1) {
			szBuf = szBuf.substring(0,lFind) + szReplace + szBuf.substring(lFind + szFind.length);
			lStart = lFind + szReplace.length;
		}
	}
	return szBuf;
}

function formatField(field, format, decPlaces)
{
	switch (format.toUpperCase()) {
	case 'CURRENCY':
		field.value = formatCurrency(field.value, decPlaces);
		break;
	case 'NUMBER':
		field.value = formatNumber(field.value, decPlaces);
		break;
	case 'PERCENT':
		field.value = formatPercent(field.value, decPlaces);
		break;
	}
}

function formatPercent(value, decPlaces)
{
	return formatNumericValue('',value,decPlaces,'%');
}

function formatCurrency(value, decPlaces) 
{
	if (isNaN(value) && value.charAt(value.length-1)=='-') value = '-' + value.substring(0,value.length-1);
	return formatNumericValue('$',value,decPlaces,'');
}

function formatNumber(value, decPlaces)
{
	return formatNumericValue('',value,decPlaces,'');
}

function formatNumericValue(leadChar,value,decPlaces,trailChar)
{
	var numValue = cleanNumber(value);
	if (isNaN(numValue) || numValue.length==0) return numValue;
	var negValue = (Math.round(eval(numValue)*Math.pow(10,decPlaces)) < 0);
	numValue = Math.abs(numValue);
	var strValue = new String(Math.round(eval(numValue)*Math.pow(10,decPlaces)));
	while (strValue.length<=decPlaces) strValue = '0' + strValue
	var decPoint = strValue.length - decPlaces;
	var n;
	if (decPlaces>0) strValue = strValue.substring(0,decPoint) + '.' + strValue.substring(decPoint,strValue.length)
	for (n=decPoint-3; n>0; n=n-3) strValue = strValue.substring(0,n) + ',' + strValue.substring(n,strValue.length)
	if (negValue) return "-" + leadChar + strValue + trailChar;
	return leadChar + strValue + trailChar;
}

function numField(e)
{
	var key;
	var keychar;

	if (window.event) 
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	// control keys
	if (("0123456789").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

function currencyField(e)
{
	var key;
	var keychar;

	if (window.event) 
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	if (("0123456789.$-").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

function alphaNumField(e)
{
	var key;
	var keychar;

	if (window.event) 
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
		return true;
	// alphas and numbers
	else if (("ABCDEFGHIJKLMNOPQRSTUVabcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

function restrictLength(c, l) {
	if (c.value.length >=l) 
		return false
	else
		return true;
}

function confirmDelete() {
	if (!window.confirm('Are you sure you want to delete this record?')) {
		event.returnValue = false;
		event.cancelBubble = true
	}
}

function autoTab(ctl, e) {
	if (ctl.value.length == ctl.maxLength && ((e.keyCode > 47 && e.keyCode < 58) || (e.keyCode > 95 && e.keyCode < 106))) {
		var i = autoTab_GetIndex(ctl);
		if (i>=0 && ctl.form[i+1] != null) ctl.form[i+1].select();
	}
	e.cancelBubble = true;
}
function autoTab_GetIndex(obj) {
	var theform = obj.form;
	for (var i=0; i<theform.elements.length; i++) {
		if (obj.name == theform.elements[i].name) {
			return i;
			}
		}
	return -1;
}

