function isEmail(str) {
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

function submitForm(formObj,requiredFieldList) {
	var formElements = formObj.elements;
	
	var funcReturn = true;
	
	var currFieldName = "";
	var currIndex = -1;
	var currentRequiredField = "";
	var prevFieldName = "";
	
	
	var indexArray = requiredFieldList.split(",");
	
	for(var i=0;i<formElements.length;i++) {		
		if (currFieldName != formElements[i].attributes.name.value) {
			currIndex++;
			currFieldName = formElements[i].attributes.name.value;
			for(var f = 0;f<indexArray.length;f++) {
				if (indexArray[f] == currFieldName) {
					currentRequiredField = currFieldName;
				}
			}
		}
		
		if(formElements[i].attributes.name.value == currentRequiredField) {
			if(formElements[i].nodeName == "INPUT") {				
				switch(formElements[i].attributes.type.value) {
					case "checkbox":
						if(formElements[i].attributes.name.value != prevFieldName) {
							var currBoolValue = false;
							var allCheck = formObj[formElements[i].attributes.name.value];
							for(var c = 0; c<allCheck.length; c++) {
								if(allCheck[c].checked) {
									currBoolValue = true;
								}								 
							}		
							if(!currBoolValue) {
								funcReturn = false;	
							}		
						}
						break;
					
					case "text":
						if (formElements[i].attributes.name.value.toLowerCase().indexOf("email") > -1) {
							if(formElements[i].value == "") {
								funcReturn = false;				
							} else if (!isEmail(formElements[i].value)) {
								funcReturn = false;	
							}
						} else {
							if(formElements[i].value == "") {
								funcReturn = false;	
							}
						}
						break;
					
					case "radio":
						if(formElements[i].attributes.name.value != prevFieldName) {
							var currBoolValue = false;
							var allCheck = formObj[formElements[i].attributes.name.value];
							for(var c = 0; c<allCheck.length; c++) {
								if(allCheck[c].checked) {
									currBoolValue = true;
								}								 
							}		
							if(!currBoolValue) {
								funcReturn = false;	
							}		
						}				
						break;
					
					default:
				}
				
			} else if(formElements[i].nodeName == "TEXTAREA") {
				if (formElements[i].value == "") {
					funcReturn = false;
				}
			} else if(formElements[i].nodeName == "SELECT") {
				if(formElements[i].attributes.name.value != prevFieldName) {
					var currBoolValue = false;
					var allCheck = formObj[formElements[i].attributes.name.value];
					for(var c = 0; c<allCheck.length; c++) {
						if(allCheck[c].selected) {
							currBoolValue = true;
						}								 
					}		
					if(!currBoolValue) {
						funcReturn = false;	
					}		
				}
			}
			prevFieldName = currFieldName;
		}
		
	}
	//alert(funcReturn);
	
	if(funcReturn) {
		formObj.submit();
	} else {
		showLayer('formError');	
	}
	return funcReturn;
}

function highlightLayer(id) {  
	  var lyr = getElemRefs(id);
	  if (lyr && lyr.css) lyr.css.background = "#cccccc";
}

function showLayer(id) {
  var lyr = getElemRefs(id);
  if (lyr && lyr.css) lyr.css.visibility = "visible";
}

function hideLayer(id) {  
  var lyr = getElemRefs(id);
  if (lyr && lyr.css) lyr.css.visibility = "hidden";
}

function getElemRefs(id) {
	var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? getLyrRef(id,document): null;
	if (el) el.css = (el.style)? el.style: el;
	return el;
}

// ns4 nested layer
function getLyrRef(lyr,doc) {
	if (document.layers) {
		var theLyr;
		for (var i=0; i<doc.layers.length; i++) {
	  	theLyr = doc.layers[i];
			if (theLyr.name == lyr) return theLyr;
			else if (theLyr.document.layers.length > 0) 
	    	if ((theLyr = getLyrRef(lyr,theLyr.document)) != null)
					return theLyr;
	  }
		return null;
  }
}