/**
 * ValidateUtils.js
 * Utility scripts for YardHookup
 */
var siteRoot = "";

var validEmailPattern  = /([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])/;
var validBudgetPattern = /^[0-9]+(\.?[0-9][0-9])?$/;
var validZipCodePattern = /^\d{5}(-\d{4})?$/;
var validDatePattern = /^([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])[- /.](20)?\d\d$/;
var disallowedPattern = /\</g;

function validateContactUs( form )
{
	var errstring = "";
	
	if ( form.contact.value == "" )
		errstring += "Please enter your name.\n";

	if ( form.comments.value == "" )
		errstring += "Please enter your message.\n";

	if ( validEmailPattern.test( form.email.value ) != true && form.email.value != "" )
	{
		errstring += "Please enter a valid email address.\n";
	}

	if ( form.email.value == "" && form.phone.value == "" )
		errstring += "Please enter either an email address or phone number.\n";

	if ( disallowedPattern.test ( form.contact.value ) ) 
		errstring += "Name contains invalid characters.\n";
	if ( disallowedPattern.test ( form.company.value ) ) 
		errstring += "Company contains invalid characters.\n";
	if ( disallowedPattern.test ( form.phone.value ) ) 
		errstring += "Phone contains invalid characters.\n";
	if ( disallowedPattern.test ( form.address1.value ) ) 
		errstring += "Address (Line 1) contains invalid characters.\n";
	if ( disallowedPattern.test ( form.address2.value ) ) 
		errstring += "Address (Line 2) contains invalid characters.\n";
	if ( disallowedPattern.test ( form.city.value ) ) 
		errstring += "City contains invalid characters.\n";
	if ( disallowedPattern.test ( form.zip.value ) ) 
		errstring += "Zip contains invalid characters.\n";
	if ( disallowedPattern.test ( form.comments.value ) ) 
		errstring += "Message contains invalid characters.\n";

	if ( errstring != "" )
	{
		alert( errstring );
		return false;
	}
	
	return true;
}

function validateCheckout( form )
{
	var errstring = "";
	
	if ( form.firstname.value == "" || form.lastname.value == "" )
		errstring += "Please enter your first and last name.\n";
	else
	{
		if ( disallowedPattern.test ( form.firstname.value ) ) 
			errstring += "First Name contains invalid characters.\n";
		if ( disallowedPattern.test ( form.lastname.value ) ) 
			errstring += "First Name contains invalid characters.\n";
	}
	
	if ( form.homephone.value == "" && form.dayphone.value == "" )
		errstring += "Please enter either a home or daytime phone number.\n";

	if ( form.email.value == "" )
		errstring += "Please enter your email address.\n";
	else if ( validEmailPattern.test( form.email.value ) != true )
	{
		errstring += "Please enter a valid email address.\n";
	}
	
	if ( form.address1.value == "" )
		errstring += "Please enter your street address.\n";
	else if ( disallowedPattern.test ( form.address1.value ) ) 
			errstring += "Street address contains invalid characters.\n";

	if ( disallowedPattern.test ( form.address2.value ) ) 
		errstring += "Street address (Line 2) contains invalid characters.\n";

	if ( form.city.value == "" )
		errstring += "Please enter your city.\n";
	else if ( disallowedPattern.test ( form.city.value ) ) 
			errstring += "City contains invalid characters.\n";

	if ( form.state.value == "" )
		errstring += "Please enter your state.\n";
	else if ( disallowedPattern.test ( form.state.value ) ) 
			errstring += "State contains invalid characters.\n";

	if ( form.zip.value == "" )
		errstring += "Please enter your zip code.\n";
	else if ( validZipCodePattern.test ( form.zip.value ) != true ) 
			errstring += "Please your zip code in nnnnn or nnnnn-nnnn format.\n";

	if ( form.budget.value == "" )
		errstring += "Please enter your budget.\n";
	else if ( validBudgetPattern.test ( form.budget.value ) != true ) 
			errstring += "Budget must be a monetary value (dollar sign and commas omitted).\n";

	if ( form.startdate.value == "" )
		errstring += "Please enter your anticipated start date.\n";
	else if ( validDatePattern.test( form.startdate.value ) != true )
		errstring += "Please enter your anticipated start date in MM/DD/YY format\n";

	if ( form.deadline.value == "" )
		errstring += "Please enter your project deadline.\n";
	else if ( validDatePattern.test( form.deadline.value ) != true )
		errstring += "Please enter your project deadline in MM/DD/YY format\n";

	if ( disallowedPattern.test ( form.referredby.value ) ) 
		form.referredby.value = form.referredby.value.replace( disallowedPattern, "" );
	if ( disallowedPattern.test ( form.feedback.value ) ) 
		form.feedback.value = form.feedback.value.replace( disallowedPattern, "" );

	if ( !form.agree.checked )
		errstring += "Agreement to Yardhookup.com's terms and conditions is required in order to send your request.\n";

	if ( errstring != "" )
	{
		alert( errstring );
		return false;
	}
	
	return true;
}

function validateListing( form, maxServices )
{
	var errstring = "";
	
	if ( form.name.value == "" )
		errstring += "Please enter your name.\n";
	else if ( disallowedPattern.test ( form.name.value ) ) 
		errstring += "Name contains invalid characters.\n";

	if ( form.company.value == "" )
		errstring += "Please enter your company name.\n";
	else if ( disallowedPattern.test ( form.company.value ) ) 
		errstring += "Company contains invalid characters.\n";

	if ( validEmailPattern.test( form.email.value ) != true && form.email.value != "" )
	{
		errstring += "Please enter a valid email address.\n";
	}

	if ( form.email.value == "" && form.phone.value == "" )
		errstring += "Please enter either an email address or phone number.\n";

	if ( form.address.value == "" )
		errstring += "Please enter your street address.\n";
	else if ( disallowedPattern.test ( form.address.value ) ) 
			errstring += "Street address contains invalid characters.\n";

	if ( form.city.value == "" )
		errstring += "Please enter your city.\n";
	else if ( disallowedPattern.test ( form.city.value ) ) 
			errstring += "City contains invalid characters.\n";

	if ( form.state.value == "" )
		errstring += "Please enter your state.\n";
	else if ( disallowedPattern.test ( form.state.value ) ) 
			errstring += "State contains invalid characters.\n";

	if ( form.zip.value == "" )
		errstring += "Please enter your zip code.\n";
	else if ( validZipCodePattern.test ( form.zip.value ) != true ) 
			errstring += "Please your zip code in nnnnn or nnnnn-nnnn format.\n";

	if ( disallowedPattern.test ( form.phone.value ) ) 
		errstring += "Phone number contains invalid characters.\n";

	if ( form.years.value == "" )
		errstring += "Please tell us how long you have been in business.\n";
		
	var foundService = false;
	for ( i = 1; i <= maxServices; i++ )
	{
		if ( form.elements["cfsv" + i].checked )
		{ 
			foundService = true;
			break;
		}
	}

	if ( !foundService )
		errstring += "Please tell us which services you provide.\n";
		
	if ( errstring != "" )
	{
		alert( errstring );
		return false;
	}
	
	return true;
}
