function validateField(fieldName,isRequired,fieldType,message,minimum,maximum){
	var zipnum, temp, len, at, dot, val, valLen = null;
	var isValid = true;
	minimum = (minimum ? minimum: null);
	maximum = (maximum ? maximum: null);
	if (fieldType != "radio") {val = document.getElementById(fieldName).value;}
	else {
		var ndx = -1;
		var inputs = document.getElementsByTagName("input");
		for (var n=0; n< inputs.length; n++){
			if (inputs[n].getAttribute("type") == "radio") {
				if (inputs[n].getAttribute("name")==fieldName){
					if (inputs[n].checked == true) {ndx=n;}
				}
			}
		}
		if (ndx != -1) {val = inputs[ndx].value;}
		else {val = null;}
	}
	if (val == "" || val == null) {len = 0;}
	else {len = val.length;}
	if (!isRequired && (val=="" || val==null)) {return true;}
	if (fieldType != "radio") {
		document.getElementById(fieldName).style.border = defaultBorder;
		document.getElementById(fieldName).style.background = defaultBG;
		if (minimum && len < minimum && isRequired) {isValid = false;}
		if (maximum && len > maximum && isRequired) {isValid = false;}
	}
	if (isRequired && (val=="" || val==null)) {isValid = false;}
	if (isValid) {
		switch (fieldType){
		case "text":
			if (val <= 0) {isValid = false;}
			break;
		case "email":
			at = val.indexOf("@");
			dot = val.indexOf(".",at);
			if (val.indexOf("@")==-1 || val.indexOf("@")==0 || val.indexOf("@")==len) {isValid = false;}
			if (val.indexOf(".")==-1 || val.indexOf(".")==0 || val.indexOf(".")==len) {isValid = false;}
			if (val.indexOf("@",(at+1))!=-1) {isValid = false;}
			if (val.substring(at-1,at)=="." || val.substring(at+1,at+2)==".") {isValid = false;}
			if (val.indexOf(".",(at+2))==-1) {isValid = false;}
			if (val.indexOf(" ")!=-1) {isValid = false;}
			if (val.substring(0,at+1).length < 3) {isValid = false;}
			if (val.substring(at,dot+1).length < 4) {isValid = false;}
			if (val.substring(dot).length < 3) {isValid = false;}
			break;
		case "phone":
			temp = new String(val);
			temp = temp.replace(/ /g,"");
			temp = temp.replace(/\(/g,"");
			temp = temp.replace(/\)/g,"");
			temp = temp.replace(/\./g,"");
			temp = temp.replace(/-/g,"");
			if (temp.length != 7 && temp.length != 10 && temp.length != 11) {isValid = false;}
			if (isNaN(temp)) {isValid = false;}
			if (isValid) {
				if (temp.length == 10) {document.getElementById(fieldName).value = "(" + temp.substring(0,3) + ") " + temp.substring(3,6) + "-" + temp.substring(6);}
				else if (temp.length == 7) {document.getElementById(fieldName).value = temp.substring(0,3) + "-" + temp.substring(3);}
				else if (temp.length == 11) {document.getElementById(fieldName).value = "(" + temp.substring(1,4) + ") " + temp.substring(4,7) + "-" + temp.substring(7);}
			}
			break;
		case "zip":
			temp = new String(val);
			temp = temp.replace(/-/g,"");
			temp = temp.replace(/ /g,"");
			temp = temp.replace(/\./g,"");
			if (temp.length != 5 && temp.length != 9) {isValid = false;}
			if (isNaN(temp)) {isValid = false;}
			if (isValid && temp.length == 9) {document.getElementById(fieldName).value = temp.substring(0,5) + "-" + temp.substring(5);}
			break;
		case "url":
			dot = val.lastIndexOf(".");
			if (val.indexOf("@") !=-1) {isValid = false;}
			if (val.indexOf("\"") !=-1) {isValid = false;}
			if (val.indexOf("'") !=-1) {isValid = false;}
			if (val.indexOf(".")==-1 || val.indexOf(".")==0 || val.indexOf(".")==len) {isValid = false;}
			if (val.substring(dot).length < 3) {isValid = false;}
			if (val.substring(0,dot).length < 2) {isValid = false;}
			if (val.length < 5) {isValid = false;}
			if (isValid && val.indexOf("http://")==-1) {document.getElementById(fieldName).value = "http://" + val;}
			break;
		case "ssn":
			temp = new String(val);
			temp = temp.replace(/ /g,"");
			temp = temp.replace(/\./g,"");
			temp = temp.replace(/-/g,"");
			if (temp.length != 9) {isValid = false;}
			if (isNaN(temp)) {isValid = false;}
			if (isValid) {document.getElementById(fieldName).value = temp.substring(0,3) + "-" + temp.substring(3,5) + "-" + temp.substring(5);}
			break;
		case "currency":
			temp = new String(val);
			temp = temp.replace(/\$/g,"");
			temp = temp.replace(/,/g,"");
			if (isNaN(temp)) {isValid = false;}
			if (isValid) {
				temp = Math.floor(temp * 100);
				temp = temp / 100;
				document.getElementById(fieldName).value = "$" + temp;
				}
			break;
		case "number":
			if (isNaN(val)) {isValid = false;}
			break;
		case "date":
			temp = new String(val);
			temp = temp.replace(/ /g,"~");
			temp = temp.replace(/\./g,"~");
			temp = temp.replace(/-/g,"~");
			temp = temp.replace(/\\/g,"~");
			temp = temp.replace(/\//g,"~");
			temp = temp.replace(/-/g,"~");
			temp = temp.replace(/_/g,"~");
			var s1 = temp.indexOf("~");
			var s2 = temp.lastIndexOf("~");
			var date1 = temp.substring(0,s1);
			var date2 = temp.substring(s1+1,s2);
			var date3 = temp.substring(s2+1);
			if (isNaN(date1) || isNaN(date2) || isNaN(date3)) {isValid = false;}
			if (date1 > 31 || date1 < 1) {isValid = false;}
			if (date2 > 31 || date2 < 1) {isValid = false;}
			if (date1 > 12 && date2 > 12) {isValid = false;}
			if (date1.length > 2 || date1.length < 1) {isValid = false;}
			if (date2.length > 2 || date2.length < 1) {isValid = false;}
			if (date3.length != 2 && date3.length != 4) {isValid = false;}
			if (date3.length == 2) {if (date3 < 00 || date3 > 99) {isValid = false;}}
			if (isValid) {document.getElementById(fieldName).value = date1 + "/" + date2 + "/" + date3;}
			break;
		case "time":
			temp = temp = new String(val)
			temp = temp.replace(/ /g,"");
			var tz, hh, mm = null;
			if (temp.indexOf("AM")!=-1 || temp.indexOf("am")!=-1) {
				tz = " AM";
				temp = temp.replace(/AM/i,"");
			}
			if (temp.indexOf("PM")!=-1 || temp.indexOf("pm")!=-1) {
				tz = " PM";
				temp = temp.replace(/PM/i,"");
			}
			var col = temp.indexOf(":");
			if (col != -1){
				hh = temp.substring(0,col);
				mm = temp.substring(col+1);
				if (hh - 12 > 0) {
					tz = " PM";
					hh = hh - 12;
				} else {tz = " AM";}
			} else {
				mm = "00";
				hh = temp;
				if (temp - 12 > 0) {
					if (!tz) {tz = " PM";}
					hh = temp - 12;
				} else {if (!tz) {tz = " AM";}}
			}
			if (isNaN(hh)) {isValid = false;}
			if (isNaN(mm)) {isValid = false;}
			if (hh < 0 || hh > 12) {isValid = false;}
			if (mm < 0 || mm > 59) {isValid = false;}
			if (tz != " AM" && tz != " PM") {isValid = false;}
			if (isValid) {document.getElementById(fieldName).value = hh + ":" + mm + tz;}
			break;
		case "cc":
			temp = new String(val);
			temp = temp.replace(/-/g,"");
			temp = temp.replace(/ /g,"");
			temp = temp.replace(/\./g,"");
			if (temp.length != 15 && temp.length != 16) {isValid = false;}
			if (isNaN(temp)) {isValid = false;}
			if (isValid){
				if (temp.length == 16) {document.getElementById(fieldName).value =temp.substring(0,4)+"-"+temp.substring(4,8)+"-"+temp.substring(8,12)+"-"+temp.substring(12);}
				else {document.getElementById(fieldName).value =temp.substring(0,3)+"-"+temp.substring(3,7)+"-"+temp.substring(7,11)+"-"+temp.substring(11);}
			}
			break;
		case "ccv":
			if (len != 3 && len != 4) {isValid = false;}
			if (isNaN(val)) {isValid = false;}
			break;
		}
	}
	if (!isValid){
		if (fieldType != "radio") {
			document.getElementById(fieldName).style.border = errorBorder;
			document.getElementById(fieldName).style.background = errorBG;
			document.getElementById(fieldName).focus();
		}
		ShowServerMessage("error",message);
		return false;
	} else {return true;}
}

function ClearServerMessage(){
	var ServerMessage = document.getElementById("validationmessage");
	while (ServerMessage.childNodes.length > 0) {ServerMessage.removeChild(ServerMessage.childNodes[0]);}
	ServerMessage.style.display = "none";
}

function ShowServerMessage(ServerMessageClass,msg){
	var ServerMessage = document.getElementById("validationmessage");
	ClearServerMessage();
	ServerMessage.setAttribute("class",ServerMessageClass);
	ServerMessage.setAttribute("className",ServerMessageClass);
	ServerMessage.appendChild(document.createTextNode(msg));
	ServerMessage.style.display = "block";
}

function Radios(btn) {
    var ndx = -1;
    for (var i=btn.length-1; i>-1; i--)
    	{ if (btn[i].checked) {ndx = i; i = -1;} }
    if (ndx > -1) {return btn[ndx].value;}
    else {return null;}
}