// Validates the form.
function valForm() {
	var dtclForm = document.forms['DTCLForm'];
	var MissingFields= "";
	var valid = true;

	if (dtclForm.DecisionBox[0].checked == false && dtclForm.DecisionBox[1].checked == false) {
		if(MissingFields == "") {
			parent.location.hash="name_decisionbox";
		}
		MissingFields+="Purpose of submission\n";
		valid = false;
	}
	if (dtclForm.PONumber.value == "" && dtclForm.DecisionBox[0].checked == true) {
		if(MissingFields == "") {
			dtclForm.PONumber.focus();
		}
		MissingFields+="PO #\n";
		valid = false;
	}
	if (dtclForm.CompanyName.value == "") {
		if(MissingFields == "") {
			dtclForm.CompanyName.focus();
		}
		MissingFields+="Company Name \n";
		valid = false;
	}
	if (dtclForm.FirstName.value == "") {
		if(MissingFields == "") {
			dtclForm.FirstName.focus();
		}
		MissingFields+="First Name \n";
		valid = false;
	}
	if (dtclForm.LastName.value == "") {
		if(MissingFields == "") {
			dtclForm.LastName.focus();
		}
		MissingFields+="Last Name\n";
		valid = false;
	}
	if (dtclForm.Dept.value == "") {
		if(MissingFields == "") {
			dtclForm.Dept.focus();
		}
		MissingFields+="Department\n";
		valid = false;
	}
	// REMINDER: ADD EMAIL VALIDATION
	if (dtclForm.EmailAddress.value == "") {
		if(MissingFields == "") {
			dtclForm.EmailAddress.focus();
		}
		MissingFields+="Email Address\n";
		valid = false;
	}
	if(!valEmail(dtclForm.EmailAddress.value)) {
		if(MissingFields == "") {
			dtclForm.EmailAddress.focus();
		}
		MissingFields+="Email Address is not valid\n";
		valid = false;
	}
	// REMINDER: ADD PHONE NUMBERIC VALIDATION
	if (dtclForm.PhoneNumber.value == "") {
		if(MissingFields == "") {
			dtclForm.PhoneNumber.focus();
		}
		MissingFields+="Phone Number\n";
		valid = false;
	}
	if(!valPhone(dtclForm.PhoneNumber.value)) {
		if(MissingFields == "") {
			dtclForm.PhoneNumber.focus();
		}
		MissingFields+="Phone Number is not valid\n";
		valid = false;
	}	
	if (dtclForm.Address1.value == "") {
		if(MissingFields == "") {
			dtclForm.Address1.focus();
		}
		MissingFields+="Address\n";
		valid = false;
	}
	if (dtclForm.City.value == "") {
		if(MissingFields == "") {
			dtclForm.City.focus();
		}
		MissingFields+="City\/Town\n";
		valid = false;
	}
	if (dtclForm.State.value == "") {
		if(MissingFields == "") {
			dtclForm.State.focus();
		}
		MissingFields+="State\/Province\n";
		valid = false;
	}
	if (dtclForm.ZipCode.value == "") {
		if(MissingFields == "") {
			dtclForm.ZipCode.focus();
		}
		MissingFields+="Postal Code\n";
		valid = false;
	}
	if (dtclForm.Country.value == "") {
		if(MissingFields == "") {
			dtclForm.Country.focus();
		}
		MissingFields+="Country\n";
		valid = false;
	}
	if (dtclForm.PurposeWork.value == "") {
		if(MissingFields == "") {
			dtclForm.PurposeWork.focus();
		}
		MissingFields+="Purpose of Work\n";
		valid = false;
	}
	if (dtclForm.SimilarWork[0].checked == false && dtclForm.SimilarWork[1].checked == false) {
		if(MissingFields == "") {
			parent.location.hash="name_simwork";
		}
		MissingFields+="Indicate whether similar work is done \n";
		// parent.location.hash="name_simwork";
		// fade("simwork");
		valid = false;
	}
	if (dtclForm.SimilarWork[0].checked == true && dtclForm.DTCLNumber.value == "") {
		if(MissingFields == "") {
			dtclForm.DTCLNumber.focus();
		}
		MissingFields+="Please enter a DTCL Number \n";
		valid = false;
	}
	//Differences between Order and Quote
	//if order is checked ...
	if (dtclForm.DecisionBox[0].checked) {
		if (dtclForm.Technique1.value=="") {
			if(MissingFields == "") {
				dtclForm.Technique1.focus();
			}
			MissingFields+="Please enter at least one Technique \n";
			valid = false;
		}
		else if (dtclForm.Quantity1.value=="") {
			if(MissingFields == "") {
				dtclForm.Quantity1.focus();
			}
			MissingFields+="Please enter at least one Quantity \n";
			valid = false;
		}
		else if (dtclForm.UnitPrice1.value=="") {
			if(MissingFields == "") {
				dtclForm.UnitPrice1.focus();
			}
			MissingFields+="Please enter at least one Unit Price \n";
			valid = false;
		}
	}
	//if quote is checked ...
	if (dtclForm.DecisionBox[1].checked) {
		if (dtclForm.Technique1.value=="") {
			if(MissingFields == "") {
				dtclForm.Technique1.focus();
			}
			MissingFields+="Please enter at least one Technique \n";
			valid = false;
		}
		else if (dtclForm.Quantity1.value=="") {
			if(MissingFields == "") {
				dtclForm.Quantity1.focus();
			}
			MissingFields+="Please enter at least one numeric value for Quantity \n";
			valid = false;
		}
	}
	//User valRow() function to check each row
	for (k=1;k<=10;k++) {
		// alert(valRow(k));
		if (valRow(k)==false) {
			if(MissingFields == "") {
				dtclForm["Technique"+k].focus();
			}
			MissingFields+="Please complete row "+k+" of the Technique table (Quantity and Unit Price must be numeric values)\n";
			valid = false;
		}
		else if ((checkNum(document.DTCLForm["Quantity"+k].value)==false) || (checkNum(document.DTCLForm["UnitPrice"+k].value)==false))  {
			MissingFields+="Please check Technique row #"+k+", Quantity and Unit Price must be numeric values.\n";
			valid = false;
		}
	}
	
/* The following check only takes place when placing an ORDER */
	if (dtclForm.DecisionBox[0].checked) {
		if (dtclForm.ReturnSamples[0].checked == false && dtclForm.ReturnSamples[1].checked == false) {
			MissingFields+="Please indicate whether you'd like your samples returned to you \n";
			valid = false;
		}
		else if (dtclForm.ReturnSamples[0].checked == true && (dtclForm.ReturnWhen[0].checked == false && dtclForm.ReturnWhen[1].checked == false)) {
			MissingFields+="Please indicate when you'd like your samples returned. \n";
			valid = false;
		}
	}

/* Spit out ERROR MESSAGES */
	if (!valid) {
		alert("The following fields are required to be input correctly: \n\n"+MissingFields);
		return false;
	}
}
// Functions used in valForm ...
function valRow(rownum) {
	// var dtclForm2 = document.forms['DTCLForm'];
	var type;
	for(j=0;j<document.forms['DTCLForm'].DecisionBox.length;j++) {
		if(document.forms['DTCLForm'].DecisionBox[j].checked) {
			type = document.forms['DTCLForm'].DecisionBox[j].value;
		}
	}
	//return type;
	switch (type) {
		case "DecisionBoxOrder": {
			// return rownum;
			if ((document.DTCLForm["Technique"+rownum].value == "") && (document.DTCLForm["Quantity"+rownum].value == "") && (document.DTCLForm["UnitPrice"+rownum].value == "")) {
				return true;	
				// return (document.DTCLForm["Technique"+rownum].value);
				// return rownum;
			}
			if ((document.DTCLForm["Technique"+rownum].value != "") && (document.DTCLForm["Quantity"+rownum].value != "") && (document.DTCLForm["UnitPrice"+rownum].value != "")) {
				return true;	
			}
			else {
				return false;
				// return (document.DTCLForm["Technique"+rownum].value);
			}
		}
		case "DecisionBoxQuote": {
			if ((document.DTCLForm["Technique"+rownum].value == "") && (document.DTCLForm["Quantity"+rownum].value == "")) {
				return true;	
			}
			if ((document.DTCLForm["Technique"+rownum].value != "") && (document.DTCLForm["Quantity"+rownum].value != "")) {
				return true;	
			}
			else {
				return false;
			}
		}
		default: {
			if ((document.DTCLForm["Technique"+rownum].value == "") && (document.DTCLForm["Quantity"+rownum].value == "") && (document.DTCLForm["UnitPrice"+rownum].value == "")) {
				return true;	
				// return (document.DTCLForm["Technique"+rownum].value);
				// return rownum;
			}
			else {
				return false;
			}
		}
	}
}
function valEmail(email) {
    if(email.length <= 0) {
	  return true;
	}
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null ) {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null) {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}
function valPhone(fieldVal) {
	var charpos = fieldVal.search("[^0-9\-]"); 
    if(fieldVal.length > 0 &&  charpos >= 0) {
		return false;
	}
	return true;
}

