// Author: Galen Cederqvist
var errcolour = '#cd0000';
var okcolour = '#008800';
var nulcolour = '#000000';
var errimg = '/images/form/error.gif'
var okimg = '/images/form/correct.gif'
var nulimg = '/images/spacer.gif'

var re_numeric = 0, re_text = 1, re_postal = 2, re_phone = 3, re_email = 4, re_money = 5, re_char = 6, re_noquote = 7;
var res = new Array( // fieldtype patterns
	new RegExp(/^[\d]+$/), 
//	new RegExp(/^([+\x60\x22\x2d,#.,-]?[\w]+[+\s\w\x60\x22\x2d,#.,-]?)+$/), 
	new RegExp(/^([+\x60\x22\x2d,#.,-]?[\w]+[+\s\w\x60\x22\x2d,#.,-]?)+/), 
	new RegExp(/^[A-Za-z][0-9][A-Za-z](\s|-)?[0-9][A-Za-z]\d$/), 
	new RegExp(/^[(]?[\d]{3}(\x29|-)?[\s]?[\d]{3}(\s|-)?[\d]{4}$/), 
	new RegExp(/^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,4}$/),
	new RegExp(/^[$]?[\d]*[.]?[\d]*$/),
	new RegExp(/^[a-zA-Z0-9]{1}$/), // single char
	new RegExp(/^[^']+$/) ); 


function validateField(ofield, fn, oerr, showzerolenerror)
{
	var isValid = true;
	var value;
	if (showzerolenerror == "undefined") showzerolenerror = false;

	if (ofield && fn)
	{
		if (ofield.type == 'select-one') // drop-down
			value = ofield[ofield.selectedIndex].value;
		else if (ofield.type == "text")
			value = ofield.value;
		else if (ofield.type == "checkbox") {
			if (ofield.checked)
				value = ofield.value;
			else
				value ='';
		}
		else if (ofield.length != 'undefined' && ofield.length >= 1 && ofield[0].type == 'radio') 
		{
			for (var x = 0; x < ofield.length; x++)
			{
				if (ofield[x].checked) {
					value = ofield[x].value
					break;
				}
			}
			if (typeof(value) == 'undefined')
				value = '';
		}
		if (typeof(value) != 'undefined')
		{
			if (fn.test)
				isValid = fn.test(value);
			else
				isValid = fn(value);

			if (oerr) // display result
			{
//alert(ofield.name + ', isValid = ' + isValid + ', oerr.type = ' + oerr.type + ', value.length = ' + value.length + ', showzerolenerror = ' + showzerolenerror);
				if (oerr.type && oerr.type == 'text') { 
//alert('[text] name = ' + ofield.name + ', isValid = ' + isValid + ', value.length = ' + value.length + ', showzerolenerror = ' + showzerolenerror);
					if (value.length == 0 && !showzerolenerror)  oerr.style.background = nulcolour; //oerr.style.color = nulcolour;
					else {
						if (isValid)  oerr.style.background = okcolour; // oerr.style.color = '#0000cd';//okcolour;
						else  oerr.style.background = errcolour; //oerr.style.color = errcolour;
					}
				}
				else if (oerr.src) { // image
//alert('[img] name = ' + ofield.name + ', isValid = ' + isValid + ', value.length = ' + value.length + ', showzerolenerror = ' + showzerolenerror);
					if (value.length == 0 && !showzerolenerror)  oerr.src = nulimg;
					else {
						if (isValid)  oerr.src = okimg;
						else  oerr.src = errimg;
					}
				}
				else if (typeof(oerr.style) != 'undefined') { // set style.color
//alert('[style] name = ' + ofield.name + ', isValid = ' + isValid + ', value.length = ' + value.length + ', showzerolenerror = ' + showzerolenerror);
					if (value.length == 0 && !showzerolenerror)  oerr.style.color = nulcolour;
					else {
						if (isValid)  oerr.style.color = okcolour;
						else  oerr.style.color = errcolour;
					}
				}
			}
		}
	}
	return isValid;
}

function format (expr, decplaces) {
  var str = "" + Math.round (eval(expr) * Math.pow(10,decplaces))
  while (str.length <= decplaces) {
    str = "0" + str
  }
  var decpoint = str.length - decplaces
  return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
}
function dollarize (expr) {
  return "$" + format(expr,2)
}

function checkNumeric(evt) {
  evt = (evt) ? evt : window.event
  var charCode = (evt.which) ? evt.which : evt.keyCode
  if (charCode > 31 && (charCode < 48 || charCode > 57)) {
    status = "This field accepts numbers only."
    return false
  }
  status = ""
  return true
}

