function makeBlankArray(numberElements)
{
	this.length=numberElements;
	for (var i=0;i< numberElements; i++)
	{
		this[i] = null;
	}
}

function createRequiredField(fldname, message)
{
	this.fieldname	= fldname;
	this.message	= message;
	return this;
}

function validateRequired(which, oRequired)
{
	var pass=true;
	var radio_check_pass=true; // used for radiobuttons
	var focusField = null;
	var z = 0;
	var fields = new Array();
    // for each field
    for (i=0;i<which.length;i++)
    {
        var tempobj=which.elements[i];
        var objectname = tempobj.name;
        var success = true;
        // check if they are on the required list
        for ( var x = 0 ; x < oRequired.length ; x++ )
        {
            var requiredfld  = oRequired[x].fieldname ;
            if (objectname == requiredfld )
            {	// test field, textarea, file
                if ((tempobj.type=="text"||tempobj.type=="textarea"||tempobj.type=="file"||tempobj.type=="password" )&& isEmpty(tempobj.value))
                {
                    success=false;
                }
                if ( tempobj.type.toString().charAt(0)=="s"&& tempobj.selectedIndex < 0) // select box
                {
                    success=false;
                }
                if (tempobj.type=="radio")
                {
                    var obj_length = eval("document." + formname + "." + objectname + ".length");
                    radio_check_pass = false;
                    for (x=0;x< obj_length;x++)
                    {
                        var obj_checked = eval("document." + formname + "." + objectname + "[" + x + "].checked");
                        if (obj_checked)
                        {
                            radio_check_pass=true;
                            break;
                        }
                    }
                    if (!radio_check_pass)
                    {
                        success=false;
                    }
                }
                if (!success)
                {
                    if (z == 0) focusField = tempobj;
                    fields[z++] = oRequired[x].message;
                }
                success = true
            }
        }
    }
    if (fields.length > 0)
    {
        focusField.focus();
        alert(fields.join('\n'));
        pass=false;
    }
    return pass;
}

function validateEmail(fld)
{
	var bValid = true;
	var i = 0;
	if (!checkEmail(fld.value))
	{
		fld.focus();
		alert("Email format is NOT valid! Please enter a correct email format");
		bValid = false;
	}
	return bValid;
}


function checkEmail(emailStr) {
	if (emailStr.length == 0) {
	   return true;
	}
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray == null) {
	   return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat) == null) {
	   return false;
	}
	var IPArray = domain.match(ipDomainPat);
	if (IPArray != null) {
	   for (var i = 1; i <= 4; i++) {
		  if (IPArray[i] > 255) {
			 return false;
		  }
	   }
	   return true;
	}
	var domainArray=domain.match(domainPat);
	if (domainArray == null) {
	   return false;
	}
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if ((domArr[domArr.length-1].length < 2) ||
	   (domArr[domArr.length-1].length > 3)) {
	   return false;
	}
	if (len < 2) {
	   return false;
	}
	return true;
}
function validatePassword(fld)
{
	var bValid = true;

	if (fld.value)
	{
		pv = fld.value;

		if (pv.length < 6 ) {
			alert("Password is too short, must be at least 6 characters long with at least 2 numerics!");
			fld.focus();
			bValid = false;
			return false;
		}
		var cntNum = 0;
		var cntChar = 0;
		for (i=0;i<pv.length;i++)
			if (pv.charAt(i) >= 0 && pv.charAt(i) <= 9)
				cntNum++;
			else
				cntChar++;

		if (cntNum<2) {
			alert("Password must contain at least 2 numerics!");
			bValid = false;
		}
		if (cntChar<4) {
			alert("Password must contain at least 4 alphabets!");
			bValid = false;
		}
		if (!bValid) 		fld.focus();

	}
	return bValid;

}

function checkPasswordIsSame(fld, fld1)
{
	var bValid = true;
	var value =  fld.value
	if (value.length == 0) return bValid;

	if (fld.value != null && fld.value != fld1.value )
	{
		alert("Passwords DO NOT match! The Confirm Password field should be the same as the Password field.");
		fld.value="";
		fld.focus();
		bValid = false;
	}
	if (!bValid) fld.focus();
	return bValid;
 }

function checkCharCount(field, maxlimit)
{
  if (field.value.length > maxlimit) field.value = field.value.substring(0, maxlimit);
}

function checkEmailIsSame(fld, fld1)
{
	var bValid = true;
	var value =  fld.value
	if (value.length == 0) return bValid;

	if (fld.value != null && fld.value != fld1.value )
	{
		alert("Email addresses do not match! Please ensure the Confirm Email field is the same as the Email field.");
		fld.value="";
		fld.focus();
		bValid = false;
	}
	if (!bValid) fld.focus();
	return bValid;
 }
 
function validateEmail(fld)
{
	var bValid = true;
	var i = 0;
	if (!checkEmail(fld.value))
	{
		fld.focus();
		alert("The email address you have entered is invalid. Please enter a legitimate email address and resubmit your form");
		bValid = false;
	}
	return bValid;
}

function isEmpty ( inputValue )
    {
        if (inputValue == null || inputValue == "") {
            return true;
        }

        inputStr = inputValue.toString()
        for ( var i = 0 ; i < inputStr.length ; i++ )
        {
            var oneChar = inputStr.charAt(i)
            if ( oneChar != ' ') {
                return false
            }
        }
        return true
    }
/*
function checkAnyCompanySelected(which, fldName, commentName)
{
	var formname = which.name;
	var pass=false;
    var companySelected = 0;

	for (i=0;i< which.length;i++)	{
		var tempobj=which.elements[i];
		var objectname = tempobj.name;
		if ((objectname==fldName)&&(tempobj.type=="checkbox")) {
			var obj_length = eval("document." + formname + "." + objectname + ".length");
			for (x=0;x< obj_length;x++)	{
			    var obj_checked = eval("document." + formname + "." + objectname + "[" + x + "].checked");
			    alert (obj_checked);
				if (obj_checked == true){
				    var obj_value = eval("document." + formname + "." + objectname + "[" + x + "].value");
				    alert ("companyid is " + obj_value);
				    var comment_obj = eval("document." + formname + "." + commentName + "_" + obj_value);
				    alert (eval("document." + formname + "." + commentName + "_" + obj_value + ".value"));
				    if (eval(comment_obj.value) == " "){
				        alert ("Please enter the User Comments for the selected company");
                        eval("document." + formname + "." + comment_obj.name + ".focus()");
				        return false;
				    }else {
				        companySelected ++;
				    }
				}
			}
		}
	}
	if (companySelected == 0){
	   alert("Please select at least one company to proceed!")  ;
	   return false;
	 }
	return true;

}*/



