
function setColor(el, bg) {
  if (el.style) el.style.backgroundColor = bg;
}

function checkForm(thisform) {
	var bgBad = "#FFCCCC";
	var bgGood = "white";
	if(thisform.required.value!="") {
		var is_err = false;
		var err_mess = "";
		var r_fields = thisform.required.value.split(",");
		for (t_field in r_fields) {
			r_field = r_fields[t_field];
			var fieldinq = eval("thisform." + r_field);
			if(r_field == "email") {
				var vEMailID=fieldinq.value;
				var atPos= vEMailID.indexOf("@") + 1
				var lastDotPos= vEMailID.lastIndexOf(".") + 1
				var firstDotPos = vEMailID.indexOf(".") + 1
				var atInstances=0
				var dotInstances=0
				var inValid = new Array()
				var errorMessages = new Array()
				var errNo = 0

				for(var i=0;i<vEMailID.length;i++)
				{
				if(vEMailID.charAt(i)=="@" )
				atInstances+=1
				else if(vEMailID.charAt(i)==".")
				dotInstances=1
				}

				inValid[errNo] = (atInstances==0)
				errorMessages[errNo] = "@ symbol is missing"
				errNo++

				inValid[errNo] = (dotInstances==0)
				errorMessages[errNo] = ". symbol is missing"
				errNo++

				inValid[errNo] = (atInstances>1)
				errorMessages[errNo] = "@ symbol should not repeat"
				errNo++

				inValid[errNo] = (Math.abs(firstDotPos-atPos)==1)
				errorMessages[errNo] = "@ and . symbols can't come together"
				errNo++

				inValid[errNo] = ((lastDotPos-atPos)<=1)
				errorMessages[errNo] = ". symbol can't come before @ symbol"
				errNo++

				inValid[errNo] = (atPos==vEMailID.length)
				errorMessages[errNo] = "@ symbol can't appear at end"
				errNo++

				inValid[errNo] = (lastDotPos==vEMailID.length)
				errorMessages[errNo] = ". symbol can't appear at end"
				errNo++

				inValid[errNo] = (atPos==1)
				errorMessages[errNo] = "@ symbol should not appear at first position"
				errNo++

				inValid[errNo] = (firstDotPos==1)
				errorMessages[errNo] = ". symbol should not appear at first position"
				errNo++

				inValid[errNo] = (vEMailID.indexOf(" ")>=0)
				errorMessages[errNo] = "E-mail can't contain blank spaces."
				errNo++

				inValid[errNo] = (vEMailID.indexOf("/")>=0) || (vEMailID.indexOf("\\")>=0)
				errorMessages[errNo] = "E-mail can't contain \\ or /"
				errNo++

				var fullErrorMessage = "Invalid email address:\n"
				for(var ind=0; ind<errNo; ind++)
				{
				if(inValid[ind])
				{
				fullErrorMessage += "-     " + errorMessages[ind] + "\n"
				}
				}
				if (fullErrorMessage.length>30) {
					setColor(fieldinq, bgBad);
					err_mess += fullErrorMessage + "\n";
					is_err = true;
				} else {
					setColor(fieldinq, bgGood);
				}
			} else {
				if(fieldinq.value=="") {
					setColor(fieldinq, bgBad);
					err_mess += "Please enter a value for the "+r_field+" field.\n";
					is_err = true;
				} else {
					setColor(fieldinq, bgGood);
				}
			}
		}
		if(is_err) {
			alert(err_mess);
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}

