// jQuery setup for Date input boxes
$.extend(DateInput.DEFAULT_OPTS, {
	stringToDate: function(string) {
		var explode = string.split("/");
		if (matches = string.match(/^(\d{2,2})\/(\d{2,2})\/(\d{4,4})$/)) {
			return new Date(explode[2], explode[0] - 1, explode[1]);
		} else {
			return null;
		};
	},
	dateToString: function(date) {
		var month = (date.getMonth() + 1).toString();
		var dom = date.getDate().toString();
		if (month.length == 1) month = "0" + month;
		if (dom.length == 1) dom = "0" + dom;
		return month+"/"+dom+"/"+date.getFullYear();
	},
	start_of_week: 0
});
$($.date_input.initialize);

// jQuery setup for Time Picker
jQuery(function() {
	$("#txtRequestTime").timePicker();
});

// trim function
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

// used to hide or show the Explain Other text box on form
function OtherBox() {
	if (document.traffic_form.Reason_No_Schedule_Online.options[document.traffic_form.Reason_No_Schedule_Online.selectedIndex].value != "Other reason")
		document.getElementById('ReasonOther').className = 'hideBox';
	else
		document.getElementById('ReasonOther').className = 'showBox';
	validate("ddlCannotSchedule");
}

function SubmitForm(){
	var outcome = 0;
	var temp = 0;
	
	for(var i=0; i<document.traffic_form.elements.length; i++){
		if(document.traffic_form.elements[i].id != "Explain_Other"){
			if(document.traffic_form.elements[i].id != "txtCC"){
				temp = validate(document.traffic_form.elements[i].id);
				outcome = outcome + temp;
			}
		}
	}
	if(outcome > 0)
		return false;
	else
		return true;
}

function validate(id){
	// regular expressions for validating data input
	var regPhone = /^\(?[1-9]\d{2}\)?\s?\-?\d{3}\-\d{4}$/;
	var regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var regDate = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
	var regPO = /^\d+$/;
	var error = 0;
	
	switch(id){
		case "ddlRequestType":
			if(document.getElementById(id).value != "0"){
				document.getElementById("RequestType").className = "pass";
				document.getElementById("RequestType-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("RequestType").className = "fail";
				document.getElementById("RequestType-Comment").innerHTML = "You must select an option.";
				error = error + 1;
			}
			break;
		case "txtPONumber1":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber1").className = "fail";
					document.getElementById("PONumber-Comment1").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber1").className = "fail";
						document.getElementById("PONumber-Comment1").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber1").className = "pass";
						document.getElementById("PONumber-Comment1").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber1").className = "fail";
				document.getElementById("PONumber-Comment1").innerHTML = "Required field";
				error = error + 1;
			}
			break;
		case "txtPONumber2":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber2").className = "fail";
					document.getElementById("PONumber-Comment2").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber2").className = "fail";
						document.getElementById("PONumber-Comment2").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber2").className = "pass";
						document.getElementById("PONumber-Comment2").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber2").className = "";
				document.getElementById("PONumber-Comment2").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber3":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber3").className = "fail";
					document.getElementById("PONumber-Comment3").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber3").className = "fail";
						document.getElementById("PONumber-Comment3").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber3").className = "pass";
						document.getElementById("PONumber-Comment3").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber3").className = "";
				document.getElementById("PONumber-Comment3").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber4":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber4").className = "fail";
					document.getElementById("PONumber-Comment4").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber4").className = "fail";
						document.getElementById("PONumber-Comment4").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber4").className = "pass";
						document.getElementById("PONumber-Comment4").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber4").className = "";
				document.getElementById("PONumber-Comment4").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber5":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber5").className = "fail";
					document.getElementById("PONumber-Comment5").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber5").className = "fail";
						document.getElementById("PONumber-Comment5").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber5").className = "pass";
						document.getElementById("PONumber-Comment5").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber5").className = "";
				document.getElementById("PONumber-Comment5").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber6":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber6").className = "fail";
					document.getElementById("PONumber-Comment6").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber6").className = "fail";
						document.getElementById("PONumber-Comment6").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber6").className = "pass";
						document.getElementById("PONumber-Comment6").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber6").className = "";
				document.getElementById("PONumber-Comment6").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber7":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber7").className = "fail";
					document.getElementById("PONumber-Comment7").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber7").className = "fail";
						document.getElementById("PONumber-Comment7").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber7").className = "pass";
						document.getElementById("PONumber-Comment7").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber7").className = "";
				document.getElementById("PONumber-Comment7").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber8":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber8").className = "fail";
					document.getElementById("PONumber-Comment8").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber8").className = "fail";
						document.getElementById("PONumber-Comment8").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber8").className = "pass";
						document.getElementById("PONumber-Comment8").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber8").className = "";
				document.getElementById("PONumber-Comment8").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber9":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber9").className = "fail";
					document.getElementById("PONumber-Comment9").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber9").className = "fail";
						document.getElementById("PONumber-Comment9").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber9").className = "pass";
						document.getElementById("PONumber-Comment9").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber9").className = "";
				document.getElementById("PONumber-Comment9").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber10":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber10").className = "fail";
					document.getElementById("PONumber-Comment10").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber10").className = "fail";
						document.getElementById("PONumber-Comment10").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber10").className = "pass";
						document.getElementById("PONumber-Comment10").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber10").className = "";
				document.getElementById("PONumber-Comment10").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber11":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber11").className = "fail";
					document.getElementById("PONumber-Comment11").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber11").className = "fail";
						document.getElementById("PONumber-Comment11").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber11").className = "pass";
						document.getElementById("PONumber-Comment11").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber11").className = "";
				document.getElementById("PONumber-Comment11").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber12":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber12").className = "fail";
					document.getElementById("PONumber-Comment12").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber12").className = "fail";
						document.getElementById("PONumber-Comment12").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber12").className = "pass";
						document.getElementById("PONumber-Comment12").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber12").className = "";
				document.getElementById("PONumber-Comment12").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber13":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber13").className = "fail";
					document.getElementById("PONumber-Comment13").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber13").className = "fail";
						document.getElementById("PONumber-Comment13").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber13").className = "pass";
						document.getElementById("PONumber-Comment13").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber13").className = "";
				document.getElementById("PONumber-Comment13").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber14":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber14").className = "fail";
					document.getElementById("PONumber-Comment14").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber14").className = "fail";
						document.getElementById("PONumber-Comment14").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber14").className = "pass";
						document.getElementById("PONumber-Comment14").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber14").className = "";
				document.getElementById("PONumber-Comment14").innerHTML = "&nbsp;";
			}
			break;
		case "txtPONumber15":
			if(document.getElementById(id).value != ""){
				if(!regPO.test(document.getElementById(id).value)){
					document.getElementById("PONumber15").className = "fail";
					document.getElementById("PONumber-Comment15").innerHTML = "Numbers only";
					error = error + 1;
					break;
				}
				else{
					if(document.getElementById(id).value.length != 6){
						document.getElementById("PONumber15").className = "fail";
						document.getElementById("PONumber-Comment15").innerHTML = "6 digits";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("PONumber15").className = "pass";
						document.getElementById("PONumber-Comment15").innerHTML = "&nbsp;";
					}
				}
			}
			else{
				document.getElementById("PONumber15").className = "";
				document.getElementById("PONumber-Comment15").innerHTML = "&nbsp;";
			}
			break;
		case "ddlDivision":
			if(document.getElementById(id).value != "0"){
				document.getElementById("Division-image").className = "pass";
				document.getElementById("Division-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("Division-image").className = "fail";
				document.getElementById("Division-Comment").innerHTML = "You must select an option.";
				error = error + 1;
			}
			break;
		case "txtDueDate":
			if(document.getElementById(id).value != ""){
				if(!regDate.test(document.getElementById(id).value)){
					document.getElementById("DueDate").className = "fail";
					document.getElementById("DueDate-Comment").innerHTML = "Due Date is not in correct mm/dd/yyyy format.";
					error = error + 1;
				}
				else{
					document.getElementById("DueDate").className = "pass";
					document.getElementById("DueDate-Comment").innerHTML = "&nbsp;";
				}
			}
			else{
				document.getElementById("DueDate").className = "fail";
				document.getElementById("DueDate-Comment").innerHTML = "Due Date is a required field.";
				error = error + 1;
			}
			break;
		case "txtRequestDate":
			if(document.getElementById(id).value != ""){
				if(!regDate.test(document.getElementById(id).value)){
					document.getElementById("RequestDate-image").className = "fail";
					document.getElementById("RequestDate-Comment").innerHTML = "Request Date is not in correct mm/dd/yyyy format.";
					error = error + 1;
				}
				else{
					document.getElementById("RequestDate-image").className = "pass";
					document.getElementById("RequestDate-Comment").innerHTML = "&nbsp;";
				}
			}
			else{
				document.getElementById("RequestDate-image").className = "fail";
				document.getElementById("RequestDate-Comment").innerHTML = "Request Date is a required field.";
				error = error + 1;
			}
			break;
		
		case "ddlRequestTime":
			if(document.getElementById(id).value != "0"){
				document.getElementById("RequestTime-image").className = "pass";
				document.getElementById("RequestTime-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("RequestTime-image").className = "fail";
				document.getElementById("RequestTime-Comment").innerHTML = "You must select an option.";
				error = error + 1;
			}
			break;	
		case "txtContactName":
			if(document.getElementById(id).value != ""){
				document.getElementById("ContactName").className = "pass";
				document.getElementById("ContactName-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("ContactName").className = "fail";
				document.getElementById("ContactName-Comment").innerHTML = "Contact Name is a required field.";
				error = error + 1;
			}
			break;
		case "txtPhone":
			if(document.getElementById(id).value != ""){
				if(!regPhone.test(document.getElementById(id).value)){
					document.getElementById("ContactPhone").className = "fail";
					document.getElementById("ContactPhone-Comment").innerHTML = "Phone number is not in correct xxx-xxx-xxx format.";
					error = error + 1;
				}
				else{
					document.getElementById("ContactPhone").className = "pass";
					document.getElementById("ContactPhone-Comment").innerHTML = "&nbsp;";
				}
			}
			else{
				document.getElementById("ContactPhone").className = "fail";
				document.getElementById("ContactPhone-Comment").innerHTML = "Contact Phone is a required field.";
				error = error + 1;
			}
			break;
		case "txtEmail":
			if(document.getElementById(id).value != ""){
				if(!regEmail.test(document.getElementById(id).value)){
					document.getElementById("ContactEmail").className = "fail";
					document.getElementById("ContactEmail-Comment").innerHTML = "Email is not in the correct format.";
					error = error + 1;
				}
				else{
					document.getElementById("ContactEmail").className = "pass";
					document.getElementById("ContactEmail-Comment").innerHTML = "&nbsp;";
				}
			}
			else{
				document.getElementById("ContactEmail").className = "fail";
				document.getElementById("ContactEmail-Comment").innerHTML = "Contact Email is a required field.";
				error = error + 1;
			}
			break;
		case "txtCC":
			if(document.getElementById(id).value != ""){
				var explodeCC = document.getElementById(id).value.split(";");
				var x;
				for(x in explodeCC){
					if(!regEmail.test(trim(explodeCC[x]))){
						document.getElementById("EmailCC").className = "fail";
						document.getElementById("EmailCC-Comment").innerHTML = "Check CC email address structure.";
						error = error + 1;
						break;
					}
					else{
						document.getElementById("EmailCC").className = "pass";
						document.getElementById("EmailCC-Comment").innerHTML = "&nbsp;";
					}
				}
			}
			break;
		case "txtCarrier":
			if(document.getElementById(id).value != ""){
				document.getElementById("CarrierVendor").className = "pass";
				document.getElementById("CarrierVendor-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("CarrierVendor").className = "fail";
				document.getElementById("CarrierVendor-Comment").innerHTML = "Carrier/Vendor is a required field.";
				error = error + 1;
			}
			break;
		case "txtSpecialInstructions":
			if(document.getElementById(id).value != ""){
				document.getElementById("SpecialInstructions").className = "pass";
				document.getElementById("SpecialInstructions-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("SpecialInstructions").className = "fail";
				document.getElementById("SpecialInstructions-Comment").innerHTML = "Special Instructions is a required field.";
				error = error + 1;
			}
			break;
		case "ddlCannotSchedule":
			if(document.getElementById(id).value != "0"){
				document.getElementById("ddlCannotSchedule-image").className = "pass";
				document.getElementById("ddlCannotSchedule-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("ddlCannotSchedule-image").className = "fail";
				document.getElementById("ddlCannotSchedule-Comment").innerHTML = "You must select an option.";
				error = error + 1;
			}
			break;
		case "Explain_Other":
			if(document.getElementById(id).value != ""){
				document.getElementById("OtherLabel").className = "pass";
				document.getElementById("OtherLabel-Comment").innerHTML = "&nbsp;";
			}
			else{
				document.getElementById("OtherLabel").className = "fail";
				document.getElementById("OtherLabel-Comment").innerHTML = "Explain Other is a required field.";
				error = error + 1;
			}
			break;
	}
	return error;
}
