// Trim - Returns trimmed string
function trim(str){
   return str.replace(/^\s*|\s*$/g,"");
}
function checkEmail(str){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(str)) return true;
	else return false;
}
// Validate form entries
function validateXForm(frm){
	var proceedFlag = true;
	var fldName, idx, email;
	var elem = frm.elements;
	for(var i = 0; i < elem.length; i++){
		if(elem[i].type.toLowerCase() == 'hidden'){
			idx = elem[i].name.lastIndexOf('hdn$xFRM_');
			if(idx >= 0){
				fldName = elem[i].name.substring((idx+9),(elem[i].name.length))
				email=(elem['hdn$xFRMEMAIL_'+fldName])?true:false;
				if(! checkXField(frm,fldName,email)){
					proceedFlag = false;
					alert(elem[i].value);
					if(frm[fldName].focus){
						frm[fldName].focus();
					}
					break;
				}
			}
		}
	}

	return proceedFlag;
}
// validate field based on type
function checkXField(frm,fldName,email){
	var errFlag = false;
	var frmFld = frm[fldName];
	var fldType = 'list';

	try{
		if(frmFld.type != 'undefined')
			fldType = frmFld.type.toLowerCase();
	} catch(e){;}
	if((fldType == 'select-one') || (fldType == 'select-multiple')){
		if(frmFld.options.selectedIndex >= 0){
			if((frmFld.options[frmFld.options.selectedIndex].value == 0) || (trim(frmFld.options[frmFld.options.selectedIndex].value) == '')){
				errFlag = true;
			}
		} else {
			errFlag = true;
		}
	} else if((fldType == 'text') || (fldType == 'textarea')){
		if(trim(frmFld.value) == '')
			errFlag = true;
		if((!errFlag) && email) errFlag = !checkEmail(frmFld.value);
	} else if((fldType == 'radio') || (fldType == 'checkbox')){
		if(! frmFld.checked)
			errFlag = true;
	} else if(fldType == 'list'){
		errFlag = true;
		for(var i=0; i<frmFld.length; i++){
			if(frmFld[i].checked){
				errFlag = false;
				break;
			}
		}
	}

	if(errFlag)
		return false;
	else
		return true;
}