$(document).ready(function() {
	// validate client-side rfq form
	var errMsg = "";
	
	$("#rfqForm").submit(function() {
		// clear the error message
		$("#ErrMsg").html("");
		errMsg = "";
		
		// validate form elements
		validateTextbox('textbox_FirstName');
		validateTextbox('textbox_LastName');
		validateTextbox('textbox_JobTitle');
		validateTextbox('textbox_Phone');
		validateTextbox('textbox_Email');
		validateEmail('textbox_Email');
		validateDropdown('dropdown_FindUs', "-- select --");
		validateTextbox('textbox_Company');
		validateTextbox('textbox_Address');
		validateTextbox('textbox_City');
		validateDropdown('dropdown_State', "- United States -|- Canadian Provinces -");
		validateTextbox('textbox_Zip');
		validateDropdown('dropdown_Country', "-- select country --");
		validateTextbox('textbox_Quantity');
		validateDate('dropdown_DateNeededMonth', 'dropdown_DateNeededDay', 'dropdown_DateNeededYear');
		validateFile('file_Upload');
		
		// if there's an error message display it
		if(errMsg.length > 0){
			$("#ErrMsg").html(errMsg);
			return false;
		}
	});
	
	$("#contactForm").submit(function() {
		// clear the error message
		$("#ErrMsg").html("");
		errMsg = "";
		
		// validate form elements
		validateTextbox('textbox_FirstName');
		validateTextbox('textbox_LastName');
		validateTextbox('textbox_Email');
		validateEmail('textbox_Email');
		validateTextbox('textbox_Company');
		validateTextbox('textbox_City');
		validateDropdown('dropdown_State', "- United States -|- Canadian Provinces -");
		validateTextbox('textbox_Zip');
		validateDropdown('dropdown_Country', "-- select country --");
		validateDropdown('dropdown_FindUs', "-- select --");
		
		// if there's an error message display it
		if(errMsg.length > 0){
			$("#ErrMsg").html(errMsg);
			return false;
		}
	});
	
	

	/*<== LOCALIZED FUNCTIONS SHOULD GO BELOW THIS LINE ==>*/
	function validateTextbox(obj){		
		if ($("#" + obj).val() == "") {
			generateErrorMessage(obj);
			return false;	
		}
		return true;
	}
	
	function validateDropdown(obj, exc){		
		// check for exclusions
		// exclusions should be sent as a string delimiting the distinct values with a pipe '|'
		var excArray = exc.split('|');
		
		jQuery.each(excArray, function() {
			if ($("#" + obj).val() == this) {
				generateErrorMessage(obj);
			}
		});
	}
	
	function validateDate(month, day, year){
		var day = $("#" + day).val();
		var month = $("#" + month).val();
		var year = $("#" + year).val();
		var now = new Date();
		var dateNeeded = new Date(year, month, day);
		var dateDiff = (dateNeeded - now)/(1000*60*60*24);
		var leadTime = 90;
		
		if(dateDiff <= 0){
			errMsg = errMsg + "You can't use a date from the past.<br/>";
		}
		else if(dateDiff <= leadTime){
			errMsg = errMsg + "The minimum lead time for a quote is " + leadTime + " days.<br/>";
		}
	}
	
	function validateFile(obj){
		var file = $("#" + obj).val();
		var arrFileTypes = new Array("pdf", "jpg", "dwg");
		var valid = false;
				
		if(file.length > 0){
			var ext = file.substring(file.lastIndexOf(".") + 1, file.length).toLowerCase();
			jQuery.each(arrFileTypes, function() {
				if (ext == this) {
					valid = true;
				}
			});
			
			if(!(valid)){ errMsg = errMsg + "The file you selected is not a valid file type, please select a file with PDF, JPG, or DWG extension.<br/>"; }
		}
		
		return valid;
	}
	
	function validateEmail(email){
		var valid = true;
		var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		if(emailPattern.test(email)){
			errMsg = errMsg + "The email address you entered is not valid, please enter a valid email address.<br/>";
			valid = false;
		}
		return valid;
	}
	
	function generateErrorMessage(obj){
		var name = obj.substring(obj.indexOf("_") + 1, obj.length);
		var label = $("#label_" + name);
		label = label.text().substring(0, label.text().indexOf(":"));
		errMsg = errMsg + label + " is required.<br/>";
	}
});
