function sm_ValidateForm(f) {
	return true;
}
var sm_reEmpty = /^\s*$/;
var sm_reLeading = /^(\s+)/i;
var sm_reEnding = /(\s+)$/i;
var sm_reCRLF = /\s+/g;
var sm_reInteger = /^\d+$/;
var sm_reIsRequired = /^(\S+)_required$/i;
var sm_reIsRequiredIf = /^(\S+)_requiredif$/i;
var sm_reIsInteger = /^(\S+)_integer$/i;
var sm_reIsFloat = /^(\S+)_float$/i;
var sm_reIsDate = /^(\S+)_date$/i;
var sm_reIsEuroDate = /^(\S+)_eurodate$/i;
var sm_reIsTime = /^(\S+)_time$/i;
var sm_reIsRange = /^(\S+)_range$/i;
var sm_reIsEmail = /^(\S+)_email$/i;
var sm_reIsURL = /^(\S+)_url$/i;
var sm_reIsRegExp = /^(\S+)_regexp$/i;
var sm_reIsExcludeList = /^(\S+)_excludelist$/i;
var sm_reIsIncludeList = /^(\S+)_includelist$/i;
var sm_reIsMultiEmails = /^(\S+)_multiemails$/i;
var sm_reMinRange = /MIN\s*=\s*(\d+\.?\d*|\.?\d+)/i;
var sm_reMaxRange = /MAX\s*=\s*(\d+\.?\d*|\.?\d+)/i;
var sm_reEmail = /^\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*$/i;
var sm_reMultiEmails = /^\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*([,;]\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*)*$/i;
var sm_reURL = new RegExp("^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)*(/[^/][a-zA-Z0-9\.\,\?\'\\/\+&%\$##\=~_\-]*)*/?$");
var sm_reDate = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
var sm_reEuroDate = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
var sm_reZipCode = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
var sm_reIsZipCode = /^(\S+)_zipcode$/i;
var sm_reIsUploadList = /^(\S+)_(uploadListimage|uploadListvideo|uploadListdoc)$/i;
function sm_Trim(s) {
	var mystr = s;
	var myArr = sm_reEmpty.exec(mystr);
	if (myArr != null) {
		return "";
	}
	var myArr = sm_reLeading.exec(mystr);
	if (myArr != null) {
		if (RegExp.rightContext) {
			mystr = RegExp.rightContext;
		} else {
			mystr = mystr.substring(RegExp.$1.length, mystr.length);
		}
	}
	myArr = sm_reEnding.exec(mystr);
	if (myArr != null) {
		if (RegExp.leftContext) {
			mystr = RegExp.leftContext;
		} else {
			mystr = mystr.substring(0, (mystr.length - RegExp.$1.length));
		}
	}
	return mystr;
}
function sm_StripCRLF(s) {
	return s.replace(sm_reCRLF, " ");
}
function sm_IsArray(o) {
	return (typeof(o) == "object" && typeof(o.length) == "number");
}
function sm_IsRadio(o) {
	return (o.type == "radio");
}
function sm_IsCheckBox(o) {
	return (o.type == "checkbox");
}
function sm_IsFileUpload(o) {
	return (o.type == 'file');
}
function sm_IsSelectMulti(o) {
	return (o.type == "select-multiple");
}
function sm_IsSelectOne(o) {
	return (o.type == "select-one");
}
function sm_IsSelect(o) {
	return (sm_IsSelectMulti(o) || sm_IsSelectOne(o));
}
function sm_IsHidden(o) {
	return (o.type == "hidden");
}
function sm_IsInputText(o) {
	return (o.type == "text" || o.type=="number");
}
function sm_IsTextarea(o) {
	return (o.type == "textarea");
}
function sm_IsPassword(o) {
	return (o.type == "password");
}
function sm_IsSubmit(o) {
	return (o.type == "submit");
}
function sm_IsDate(s) {
	if (sm_reDate.test(s))
	{
		var oDate = Date.parse(s);
		if (isNaN(oDate)) {
			return false;
		}
		oDate = new Date(s);
		if (oDate.getFullYear() < 1900) {
			return false;
		}
		return true;
	}
	return false;
}
function sm_IsEuroDate(s) {
	if (sm_reEuroDate.test(s))
	{
		return true;
	}
	return false;
}
function sm_IsTime(s) {
	var dtToday = new Date();
	var strToday = (dtToday.getMonth()+1) + "/" + dtToday.getDate() + "/" + dtToday.getFullYear();

	var lgnTest = Date.parse(strToday+" "+s);
	if (isNaN(lgnTest)) return false;
	var datTest = new Date();
	datTest.setTime(lgnTest);
	if (datTest.getFullYear() < 1900) return false;
	return true;
}
function sm_IsFloat(s) {
	return (!isNaN(parseFloat(s)));
}
function sm_IsInt(s) {
	return (sm_reInteger.test(s));
}
function sm_IsWithinRange(n, lower, upper) {
	var f = parseFloat(n);
	if (isNaN(f)) return true;
	var isOK = true;
	var l = parseFloat(lower);
	if (!isNaN(l) && (l > f)) {
		isOK = false;
	}
	var u = parseFloat(upper);
	if (!isNaN(u) && (f > u)) {
		isOK = false;
	}
	return isOK;
}
function sm_IsEmail(s) {
	return (sm_reEmail.test(s));
}
function sm_IsMultiEmails(s) {
	return (sm_reMultiEmails.test(s));
}
function sm_IsZipCode(s) {
	return (sm_reZipCode.test(s));
}
function sm_IsURL(s) {
	return (sm_reURL.test(s));
}
function sm_IsRegExp(s,expr) {
	var rExp = new RegExp(expr);
	return (rExp.test(s));
}
function sm_IsExcludeList(s,list) {
	var i = 0;
	s = s.toLowerCase();
	list = list.toLowerCase();
	for (i = 0; i < s.length; i++)
	{
		if (list.indexOf(s.substring(i,i+1)) != -1) return false;
	}
	return true;
}
function sm_IsIncludeList(s,list) {
	var i = 0;
	s = s.toLowerCase();
	list = list.toLowerCase();
	for (i = 0; i < s.length; i++)
	{
		if (list.indexOf(s.substring(i,i+1)) == -1) return false;
	}
	return true;
}
function sm_IsACheckObj(o, re) {
	if (!o.name) return false;
	return re.test(o.name);
}
function sm_IsRequired(o,f) {
	if (sm_IsACheckObj(o, sm_reIsRequired)) return true;
	
	if (sm_IsACheckObj(o, sm_reIsRequiredIf))
	{
		try
		{
			o2 = f[o.dependson];
			if (sm_IsRadio(o2) || sm_IsCheckBox(o2)) return o2.checked;
			if (sm_IsInputText(o2) || sm_IsPassword(o2)) return o2.value.length > 0;
		} catch(er) {}
	}
	return false;
}
function sm_IsIntegerObj(o) {
	return sm_IsACheckObj(o, sm_reIsInteger);
}
function sm_IsFloatObj(o) {
	return sm_IsACheckObj(o, sm_reIsFloat);
}
function sm_IsDateObj(o) {
	return sm_IsACheckObj(o, sm_reIsDate);
}
function sm_IsEuroDateObj(o) {
	return sm_IsACheckObj(o, sm_reIsEuroDate);
}
function sm_IsTimeObj(o) {
	return sm_IsACheckObj(o, sm_reIsTime);
}
function sm_IsRangeObj(o) {
	return sm_IsACheckObj(o, sm_reIsRange);
}
function sm_IsEmailObj(o) {
	return sm_IsACheckObj(o, sm_reIsEmail);
}
function sm_IsMultiEmailsObj(o) {
	return sm_IsACheckObj(o, sm_reIsMultiEmails);
}
function sm_IsZipCodeObj(o) {
	return sm_IsACheckObj(o, sm_reIsZipCode);
}
function sm_IsUploadListObj(o) {
	return sm_IsACheckObj(o, sm_reIsUploadList);
}
function sm_IsURLObj(o) {
	return sm_IsACheckObj(o, sm_reIsURL);
}
function sm_IsRegExpObj(o) {
	return sm_IsACheckObj(o, sm_reIsRegExp);
}
function sm_IsExcludeListObj(o) {
	return sm_IsACheckObj(o, sm_reIsExcludeList);
}
function sm_IsIncludeListObj(o) {
	return sm_IsACheckObj(o, sm_reIsIncludeList);
}
function sm_GetAnObjToCheck(o, re) {
	if (!sm_IsACheckObj(o, re)) return null;
	var arrName = re.exec(o.name);
	if (arrName == null) return null;
	var fld = o.form[arrName[1]];
	var returnFld = fld;
	var fldType="";
	try{
		if(re==sm_reIsRequired && fld.length>1){
			fldType=fld[1].type;
			fldName=fld[1].name;
			if(fldName==arrName[1] & fldType!='checkbox' & fldType!='radio'){
				returnFld = false;
				for(var i=0; i < fld.length; i++){
					if(!fld[i].disabled){
						returnFld = fld[i];
						break;
					}
				}
			}
		}
	}
	catch(err){}
	return (returnFld);
}
function sm_GetRequiredObj(o) {
	var tobj = sm_GetAnObjToCheck(o, sm_reIsRequired);
	if (tobj == null) tobj = sm_GetAnObjToCheck(o, sm_reIsRequiredIf); // A requiredIf object
	return tobj;
}
function sm_GetIntegerObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsInteger);
}
function sm_GetFloatObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsFloat);
}
function sm_GetDateObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsDate);
}
function sm_GetEuroDateObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsEuroDate);
}
function sm_GetTimeObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsTime);
}
function sm_GetRangeObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsRange);
}
function sm_GetEmailObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsEmail);
}
function sm_GetMultiEmailsObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsMultiEmails);
}
function sm_GetZipCodeObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsZipCode);
}
function sm_GetUploadListObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsUploadList);
}
function sm_GetURLObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsURL);
}
function sm_GetRegExpObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsRegExp);
}
function sm_GetExcludeListObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsExcludeList);
}
function sm_GetIncludeListObj(o) {
	return sm_GetAnObjToCheck(o, sm_reIsIncludeList);
}
function sm_CheckRequiredElement(o) {
	// Handle Safari's NodeList instead of a normal object
	if (typeof(o) === 'function' && o.toString() === '[object NodeList]') {
		var x, isOK = false;
		
		for (x = 0; x < o.length && !isOK; x++)
			isOK = sm_CheckRequiredElement(o.item(x));
		
		return isOK;
	}
	
	if (typeof(o) != "object") return false;
	if (sm_IsSelectOne(o)) {
		if (o.selectedIndex < 0) return false;
		var objoption = o.options[o.selectedIndex];
		return (objoption.value.length > 0);
	} else if (sm_IsSelectMulti(o)) {
		if (o.selectedIndex < 0) return false;
		var x;
		var isOK = false;
		for (x = 0; x < o.length && !isOK; x++) {
			isOK = o.options[x].selected && o.options[x].value.length > 0;
		}
		return isOK;
	} else if (sm_IsRadio(o) || sm_IsCheckBox(o)) {
		return o.checked;
	} else if (sm_IsHidden(o) || sm_IsInputText(o) || sm_IsTextarea(o) || sm_IsPassword(o)) {
		var strValue = sm_Trim(o.value);
		return (strValue.length > 0);
	} else if (sm_IsSubmit(o)) {
		return true;
	} else if (sm_IsArray(o)) {
		var x;
		var isOK = false;
		for (x = 0; x < o.length && !isOK; x++) {
			isOK = sm_CheckRequiredElement(o[x]);
		}
		return isOK;
	} else if (sm_IsFileUpload(o)) {
		return (o.value.length > 0);
	} else {
		return false;
	}
}
function sm_IsThisRequired(ho, re) {
	var arrName = re.exec(ho.name);
	if (arrName == null) return null;
	var strName = arrName[1];
	if (ho.form[strName+"_required"]) {
		return true;
	} else {
		return false;
	}
}
function sm_CheckValueTypeElement(o, fn, breq) {
	if (typeof(o) != "object" || o == null) return true;
	if (sm_IsSelectOne(o)) {
		if (o.selectedIndex < 0) return true;
		var objoption = o.options[o.selectedIndex];
		if (fn(objoption.value)) {
			return true;
		} else if (breq) {
			return false;
		} else {
			// Not required but it is not of this type.
			return (objoption.value.length == 0);
		}
	} else if (sm_IsSelectMulti(o)) {
		if (o.selectedIndex < 0) return true;
		var x;
		var isOK = true;
		for (x = 0; x < o.length && isOK; x++) {
			if (o.options[x].selected) {
				isOK = fn(o.options[x].value);
				if (!(isOK || breq)) {
					isOK = (o.options[x].value.length == 0);
				}
			}
		}
		return isOK;
	} else if (sm_IsRadio(o) || sm_IsCheckBox(o)) {
		if (o.checked) {
			if (fn(o.value)) {
				return true;
			} else if (breq) {
				return false;
			} else {
				// Not required but it is not of this type.
				return (o.value.length == 0);
			}
		} else {
			return true;
		}
	} else if (sm_IsHidden(o) || sm_IsInputText(o) || sm_IsTextarea(o) || sm_IsPassword(o)) {
		if (fn(o.value)) {
			return true;
		} else if (breq) {
			return false;
		} else {
			// Not required but it is not of this type.
			return (o.value.length == 0);
		}
	} else if (sm_IsArray(o)) {
		var x;
		var isOK = true;
		for (x = 0; x < o.length && isOK; x++) {
			// Possible Recursion
			isOK = sm_CheckValueTypeElement(o[x], fn, breq);
		}
		return isOK;
	} else {
		return true;
	}
}
function sm_ArrayValidExtensions(n,ftype){
	var acceptedExt = new Array("");
	if(typeof(window["sm_FormValidation_"+ftype+"_acceptedExt_"+n]) == "object"){
		acceptedExt = window["sm_FormValidation_"+ftype+"_acceptedExt_"+n];
	} else if(typeof(window["sm_FormValidation_"+ftype+"_acceptedExt"]) == "object"){
		acceptedExt = window["sm_FormValidation_"+ftype+"_acceptedExt"];
	} 
	return acceptedExt;
}
function sm_CheckUploadListField(n,breq,ftype){
	var acceptedExt = sm_ArrayValidExtensions(n,ftype);
	var goodExt = true;
	var fUpload = null;
	var fURL = null;
	var thisExt = null;
	if(document.getElementById(n+"_type_uploadListRadioUpload") && document.getElementById(n+"_type_uploadListRadioURL") && document.getElementById(n+"_uploadListUpload") && document.getElementById(n+"_uploadListURL")){
		goodExt = false;
		fUpload = document.getElementById(n+"_uploadListUpload").value;
		fURL = document.getElementById(n+"_uploadListURL").value;
		if(document.getElementById(n+"_type_uploadListRadioUpload").checked && fUpload.length){
			for(var i=0;i<acceptedExt.length;i++){
				thisExt = '.' + acceptedExt[i];
				if(fUpload.substr(fUpload.length-thisExt.length).toLowerCase() == thisExt.toLowerCase()){
					goodExt = true;
					break;
				}
			}
/*		} else if(document.getElementById(n+"_type_uploadListRadioURL").checked && fURL.length){
			for(var i=0;i<acceptedExt.length;i++){
				thisExt = '.' + acceptedExt[i];
				if(fURL.substr(fURL.length-thisExt.length).toLowerCase() == thisExt.toLowerCase()){
					goodExt = true;
					break;
				}
			}	*/
		}else {
			goodExt = true;
		}
	}
	return goodExt;
}
function sm_CheckIntegerElement(ho, fn) {
	var o = fn(ho);
	o.value = sm_Trim(o.value);
	var breq = sm_IsThisRequired(ho, sm_reIsInteger);
	return sm_CheckValueTypeElement(o, sm_IsInt, breq);
}
function sm_CheckFloatElement(ho, fn) {
	var o = fn(ho);
	o.value = sm_Trim(o.value);
	var breq = sm_IsThisRequired(ho, sm_reIsFloat);
	return sm_CheckValueTypeElement(o, sm_IsFloat, breq);
}
function sm_CheckDateElement(ho, fn) {
	var o = fn(ho);
	o.value = sm_Trim(o.value);
	var breq = sm_IsThisRequired(ho, sm_reIsDate);
	return sm_CheckValueTypeElement(o, sm_IsDate, breq);
}
function sm_CheckEuroDateElement(ho, fn) {
	var o = fn(ho);
	o.value = sm_Trim(o.value);
	var breq = sm_IsThisRequired(ho, sm_reIsEuroDate);
	return sm_CheckValueTypeElement(o, sm_IsEuroDate, breq);
}
function sm_CheckTimeElement(ho, fn) {
	var o = fn(ho);
	o.value = sm_Trim(o.value);
	var breq = sm_IsThisRequired(ho, sm_reIsTime);
	return sm_CheckValueTypeElement(o, sm_IsTime, breq);
}
function sm_CheckRangeElement(ho, fn) {
	var r = ho.value;
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsRange);
	var lower = "null";
	var upper = "null";
	var arrRange;
	arrRange = sm_reMinRange.exec(r);
	if (arrRange != null) {
		lower = parseFloat(arrRange[1]);
	}
	arrRange = sm_reMaxRange.exec(r);
	if (arrRange != null) {
		upper = parseFloat(arrRange[1]);
	}

	var fnBody = "return sm_IsWithinRange(n,"+lower+","+upper+");";

	var rfn = new Function("n", fnBody);
	return sm_CheckValueTypeElement(o, rfn, breq);
}
function sm_CheckEmailElement(ho, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsEmail);
	return sm_CheckValueTypeElement(o, sm_IsEmail, breq);
}
function sm_CheckMultiEmailsElement(ho, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsMultiEmails);
	return sm_CheckValueTypeElement(o, sm_IsMultiEmails, breq);
}
function sm_CheckZipCodeElement(ho, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsZipCode);
	return sm_CheckValueTypeElement(o, sm_IsZipCode, breq);
}
function sm_CheckUploadListElement(ho, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsUploadList);
	var n = ho.name.replace(/^(.*)_[^_]*$/,"$1");
	var ftype = ho.name.replace(/^.*_([^_]*)$/,"$1");
	return sm_CheckUploadListField(n, breq, ftype);
}
function sm_CheckURLElement(ho, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsURL);
	return sm_CheckValueTypeElement(o, sm_IsURL, breq);
}
function sm_CheckRegExpElement(ho, ho2, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsRegExp);
	var fnBody = "return sm_IsRegExp(n,'" + ho2.value.replace(/\\/g,"\\\\").replace(/'/g,"\\\'") + "');";
	var rfn = new Function("n", fnBody);
	return sm_CheckValueTypeElement(o, rfn, breq);
}
function sm_CheckExcludeListElement(ho, ho2, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsExcludeList);

	var fnBody = "return sm_IsExcludeList(n,'" + ho2.value.replace(/\\/g,"\\\\").replace(/'/g,"\\\'") + "');";
	var rfn = new Function("n", fnBody);
	return sm_CheckValueTypeElement(o, rfn, breq);
}
function sm_CheckIncludeListElement(ho, ho2, fn) {
	var o = fn(ho);
	var breq = sm_IsThisRequired(ho, sm_reIsIncludeList);

	var fnBody = "return sm_IsIncludeList(n,'"+ ho2.value.replace(/\\/g,"\\\\").replace(/'/g,"\\\'") + "');";
	var rfn = new Function("n", fnBody);
	return sm_CheckValueTypeElement(o, rfn, breq);
}
// Takes care of checkboxes, radio buttons, and hidden forms
function sm_IsDeleteActionForm(f) {
	var i = 0;
	var o = null;
	try
		{
		for (i = 0; i < f.elements.length; i++) {
			o = f.elements[i];
			if (o.name.toLowerCase() == "action" && ((o.value.toLowerCase() == "postdelete") ||
				o.value.toLowerCase() == "deletepost" || 
				 (o.value.length > 10 && o.value.toLowerCase().substring(o.value.length-10,o.value.length) == "deletepost"))) {
				if (sm_IsRadio(o) || sm_IsCheckBox(o)) {
					return o.checked;
				} else if (sm_IsHidden(o)) {
					return true;
				}
			}
		}
	} catch(er) {};
	return false;
}
var sm_DisabledHiddenFieldNameSuffix = "_smdisabled";
function sm_removeALLrequiredhiddenfields(f) {
	var i = 0;
	var o = null;
	for (i = 0; i < f.elements.length; i++) {
		o = f.elements[i];
		if (	sm_IsHidden(o)
			&&	(	sm_IsRequired(o,f)
				||	sm_IsIntegerObj(o)
				||	sm_IsFloatObj(o)
				||	sm_IsDateObj(o)
				||	sm_IsEuroDateObj(o)
				||	sm_IsTimeObj(o)
				||	sm_IsRangeObj(o)
				||	sm_IsEmailObj(o)
				||	sm_IsMultiEmailsObj(o)
				||	sm_IsZipCodeObj(o)
				||	sm_IsUploadListObj(o)
				)
		)
		{
			o.name += sm_DisabledHiddenFieldNameSuffix;
		}
	}
	return true;
}
var sm_DeleteConfirmationPromptText = "Are you sure you want to delete this record?\nClick 'OK' to delete, or click 'Cancel' otherwise.";
function sm_ValidateForm(f, confirmDelete, preErrMsg, postErrMsg) {
	var obj = f.elements;
	var x, o, y, smlist;
	var errmsg = "";
	var confDel = (confirmDelete == undefined || confirmDelete == null) ? false : confirmDelete;
	var preErr = (preErrMsg == undefined || preErrMsg == null) ? "" : preErrMsg;
	var postErr = (postErrMsg == undefined || postErrMsg == null) ? "" : postErrMsg;
	var bDeleteConfirmed = false;
	var argv = sm_ValidateForm.arguments;
	var argc = sm_ValidateForm.arguments.length;
	var ftype = "";
	
	if (confDel && sm_IsDeleteActionForm(f)) {
		bDeleteConfirmed = window.confirm(sm_DeleteConfirmationPromptText);
		if (bDeleteConfirmed) {
			sm_removeALLrequiredhiddenfields(f);
		}
		return bDeleteConfirmed;
	}
	
	for (x = 0; x < obj.length; x++) {
		o = obj[x];
		if (sm_IsHidden(o)) {
			if (sm_IsRequired(o,f)) {
				var oreq = sm_GetRequiredObj(o);
				if (!sm_CheckRequiredElement(oreq)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsIntegerObj(o)) {
				if (!sm_CheckIntegerElement(o, sm_GetIntegerObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsFloatObj(o)) {
				if (!sm_CheckFloatElement(o, sm_GetFloatObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsDateObj(o)) {
				if (!sm_CheckDateElement(o, sm_GetDateObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsEuroDateObj(o)) {
				if (!sm_CheckEuroDateElement(o, sm_GetEuroDateObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsTimeObj(o)) {
				if (document.getElementById(o.name.replace(/_time$/,""))){
					document.getElementById(o.name.replace(/_time$/,"")).value = document.getElementById(o.name.replace(/_time$/,"")).value.replace(/\./g,"");
				}
				if (!sm_CheckTimeElement(o, sm_GetTimeObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsRangeObj(o)) {
				if (!sm_CheckRangeElement(o, sm_GetRangeObj)) {
					errmsg += "* " + o.name.substring(0,o.name.length-6) + " is restricted to " + sm_StripCRLF(o.value) + "\n";
				}
			} else if (sm_IsEmailObj(o)) {
				if (!sm_CheckEmailElement(o, sm_GetEmailObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsMultiEmailsObj(o)) {
				if (!sm_CheckMultiEmailsElement(o, sm_GetMultiEmailsObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsZipCodeObj(o)) {
				if (!sm_CheckZipCodeElement(o, sm_GetZipCodeObj)) {
					errmsg += "* " + o.value + "\n";
				}
			} else if (sm_IsUploadListObj(o)) {
				if (!sm_CheckUploadListElement(o, sm_GetUploadListObj)) {
					var n = o.name.replace(/^(.*)_[^_]*$/,"$1");
					ftype = o.name.replace(/^.*_([^_]*)$/,"$1");
					errmsg += "* "+ o.value + "\n";
					errmsg += "  Only " + sm_ArrayValidExtensions(n,ftype) + " files are allowed.\n";
				}
			} else if (sm_IsURLObj(o)) {
				if (!sm_CheckURLElement(o, sm_GetURLObj)) {
					errmsg += "* " + o.value + "\n"; 
				}
			} else if (sm_IsRegExpObj(o)) {
				for (y = 0; y < obj.length; y++) {
					smlist = obj[y];
					if (sm_IsHidden(smlist)) {
						if (smlist.name == o.name + "smlist"){
							if (!sm_CheckRegExpElement(o, smlist, sm_GetRegExpObj)) {
								errmsg += "* " + o.value + "\n"; 
							}
							break;
						}
					}
				}
			} else if (sm_IsExcludeListObj(o)) {
				for (y = 0; y < obj.length; y++) {
					smlist = obj[y];
					if (sm_IsHidden(smlist)) {
						if (smlist.name == o.name + "smlist"){
							if (!sm_CheckExcludeListElement(o, smlist, sm_GetExcludeListObj)) {
								errmsg += "* " + o.value + "\n"; 
							}
							break;
						}
					}
				}
			} else if (sm_IsIncludeListObj(o)) {
				for (y = 0; y < obj.length; y++) {
					smlist = obj[y];
					if (sm_IsHidden(smlist)) {
						if (smlist.name == o.name + "smlist"){
							if (!sm_CheckIncludeListElement(o, smlist, sm_GetIncludeListObj)) {
								errmsg += "* " + o.value + "\n"; 
							}
							break;
						}
					}
				}
			}
		}
	}
	errmsg = preErr + errmsg + postErr;
	if (errmsg.length > 0) {
		window.alert(errmsg);
		return false;
	}
	return true;
}

