var validate;
var errmsg;
var namere = /^[A-Za-z ]+$/;
var namexpre = /^[A-Za-z0-9\.\- \'&,]+$/;
var testre = /'/;
var numre = /^\d{1,2}$/;
var phonere = /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/;
var datere = /^(\d{1,2})[\s\.\/-](\d{1,2})[\s\.\/-](\d{4})$/;
/*
datere =  /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
*/
var phone2re = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;

var statere = /^AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY$/;

var zipre = /^[0-9]{5}$/;

function validate_form(thisform)
		
{
		validate = true;
		errmsg = "";		
		
		var theMethod = document.getElementById('method');
		var cmethod = theMethod.value;
		var theMonth = document.getElementById('month');
		var theDay = document.getElementById('day');
		var theYear = document.getElementById('year');
		
		var theDate = new Date();
		theDate.setFullYear(theYear.value);
		theDate.setMonth(theMonth.value);
		theDate.setDate(theDay.value);
		
		validate_required(false, 'name', namere, 'Your name is required information.'); 
		

		switch (cmethod) {
			case 'Email': 
				validate_Email('email');	
				break;
					
			case 'Postal':
				validate_required(false, 'address', namexpre, 'Please enter your street address.');
				validate_required(false, 'city', namere, 'Please enter your city.');
				validate_required(false, 'state', namexpre, 'Please enter your state.');
				validate_required(false, 'country', namexpre, 'Please enter your country.');
				validate_required(false, 'zip', namexpre, 'Please enter your postal/zip code.');
				validate_Email('email');	
				break;
			case 'Telephone':
				validate_required(false, 'phone', namexpre, 'Please enter a valid primary phone number.');
				break;
			case 'Fax':
				validate_required(false, 'fax', namexpre, 'Please enter a valid fax phone number.');
				break;
			default: break;
		
		}
/*
		validate_required(false, 'phone1', phonere, 'Please enter a valid primary phone number.');
		validate_required(true, 'phone2', phonere, 'Please enter a valid secondary phone number.');
		validate_required(true, 'company', namexpre, 'The company seem to contain some invalid characters.');
		validate_required(true, 'space', numre, 'Enter only square feet needed.');
		validate_required(true, 'date', datere, 'Enter a valid date.');
*/		
		validate_required(true, 'guests', numre, 'The number of guests seems to contain some invalid characters.');
		validate_required(true, 'children', numre, 'The number of children seems to contain some invalid characters.');
		validate_required(true, 'bedrooms', numre, 'The number of bedrooms seems to contain some invalid characters.');
		
		validate_required(true, 'comments', namexpre, 'There seem to be some invalid characters in the \"Additonal Questions or Comments\" box');

	if (errmsg != "") {
		alert(errmsg);
	} 

		return validate;

}	

function contactValid(){
	var emailRegEx = /(ftp:\/\/|http:\/\/|https:\/\/|www)(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
	var str=document.getElementById('comments').value;
	if(!document.getElementById('name').value){
		alert("Please Enter Name. ");
		document.getElementById('name').focus();
		return false;
	}
	else if(document.getElementById('phone').value && !validateUsPhone(document.getElementById('phone').value)){
		alert("Please Enter A Valid Phone Nember. ");
		document.getElementById('phone').focus();
		return false;
	}
	else if(!document.getElementById('email').value){
		alert("Please Enter E-Mail Address. ");
		document.getElementById('email').focus();
		return false;
	}
	else if(!validateEmail(document.getElementById('email').value)){
		alert("Invalid E-Mail Address. ");
		document.getElementById('email').focus();
		return false;
	}
	else if(document.getElementById('itv').value==0 && document.getElementById('villas').value==0){
		alert("Please Select Any Of The Accommodation");
		document.getElementById('itv').focus();
		return false;
	}
	else if(!document.getElementById('comments').value){
		alert("Please Enter Your Comment. ");
		document.getElementById('comments').focus();
		return false;
	}
	else if(str.search(emailRegEx)>=0){
		alert("Please Take Out All Links From Comment !!");
		document.getElementById('comments').focus();
		return false;
	}
	else if(!document.getElementById('code').value){
		alert("Please Enter Security Code  !!");
		document.getElementById('code').focus();
		return false;
	}
	else{
		return true;	
	}
}

function validateEmail(str){
	var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(str.match(emailRegEx)){
		return true;
	}
	else{
		return false;
	}
}

function validateUsPhone(str){
	var phonRegEx = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
	if(str.match(phonRegEx)){
		return true;
	}
	else{
		return false;
	}
}

function validate_Email(email)
{
	var re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.(?:[A-Za-z]{2}|com|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)$/;
		var email_addr = document.getElementsByName(email);

		var rgxp = new RegExp(re);
		var val = re.test(email_addr[0].value);

		if (!val) {
			validate = validate && val;
			errmsg = errmsg + "Please enter a valid email address\n";
		}	else {
			var emaddr = document.getElementById('emailaddress');
			emaddr.value = email_addr[0].value;
		}
}

function validate_Phone(nullok, field)
{
	var theField;
	theField = document.getElementsByName(field);


		if (nullok) {
			if (theField[0].value == "" || theField[0].value == null ) {
				return true;
			}
		
		}
		

	
	var val = phonere.test(theField[0].value);
	
		if (!val) {
			validate = validate && val;
			errmsg = errmsg + "please enter a valid phone number\n";
		}		

}

function validate_required(nullok, field, re_in, alerttxt)
{
		var theField;
		var ret_val = false;

		theField = document.getElementsByName(field);
		if (nullok) {
			if (theField[0].value == "" || theField[0].value == null ) {
				return true;
			}
		
		}
		
		

/*		var re = new RegExp(re_in); 
		ret_val = 	theField[0].value.match(re);
*/

		ret_val = re_in.test(theField[0].value);

		if (!ret_val) 
		  {
		  	errmsg = errmsg + alerttxt + "\n"; 
			validate = validate && false;
			return false;

		  }
		
		return true;
}



function validate_spcEmail(email)
{
	var re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.(?:[A-Za-z]{2}|com|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)$/;
		var email_addr = document.getElementsByName("email");
		var email_addr2 = document.getElementsByName("email2");
		var rgxp = new RegExp(re);
		var val = re.test(email_addr[0].value);
		
		if (!val) {
			validate = validate && val;
			errmsg = errmsg + "Please enter a valid email address\n";
			return;
		}
		
		if (email_addr[0].value !== email_addr2[0].value) {
			validate = validate && false;
			errmsg = errmsg + "Emails do not match\n";
		}


}



function validate_special(thisform) {

	validate = true;
	errmsg = "";

	validate_required(false, 'name', namere, 'Your name is required information.');
	validate_spcEmail('email');
	

	

	validate_required(true, 'phone', namexpre, 'Please enter a valid primary phone number.');

	validate_required(true, 'comments', namexpre, 'The comments field seems to contain some invalid characters.');
	validate_required(true, 'begin_date', datere, 'The arrival date field seems to contain some invalid characters.');
	validate_required(true, 'end_date', datere, 'The dedaprture date field seems to contain some invalid characters.');

	if (errmsg != "") {
		alert(errmsg);
	} 

	return validate;

}

