function isDate(dtStr, mes1, mes2, mes3)
{
	var myRegex = new RegExp("^([0-2][0-9]|[3][0-1])\/([0][0-9]|[1][0-2])\/[0-9]{4}$");
	//var myRegex2 = new RegExp("^([0-2][0-9]|[3][0-1])\.([0][0-9]|[1][0-2])\.[0-9]{4}$");
	// || (dtStr.match(myRegex2))
	if (dtStr.match(myRegex))
		{//valid date format, check for valid date dd/mm/yyyy
		var theDay = Math.round(dtStr.substr(0,2));
		var theMonth = Math.round(dtStr.substr(3,2));
		var theYear = Math.round(dtStr.substr(6,4));
		
		if (theYear< 2005) {
			alert (mes1);
			return false;
			}
		else if ((theYear%4 == 0) && (theDay > 29) && (theMonth == 2)) {
			alert (mes2);
			return false;
			}
		else if ((theYear%4 != 0) && (theDay > 28) && (theMonth == 2)) {
			alert (mes2);
			return false;
			}
		else if ((theDay > 30) && ((theMonth == 0) || (theMonth == 4) || (theMonth == 6) || (theMonth == 9) || (theMonth == 11) )) {
			alert (mes2);
			return false;
			}
		else {
			return true;
			}
		}
	else
		{
		alert (mes3);
		return false;
		}
	

}	

function dateisNotPossible(day,month,year, mes) {


	var datePoss = new Date().valueOf();
	var dateReal = new Date();
	dateReal.setMonth(Number(month) - 1);
	dateReal.setYear(parseInt(year));
	dateReal.setDate(Number(day));

	if (dateReal.valueOf() < datePoss) {
		alert(mes+day+"-"+month+"-"+year);
		return false;
	}
	return true;
}

function compare_dates(day1,month1,year1,day2,month2,year2) 
{
	var dateReal_1 = new Date();
	var dateReal_2 = new Date();

	dateReal_1.setMonth(month1 - 1);
	dateReal_1.setYear(parseInt(year1));
	dateReal_1.setDate(parseInt(day1));

	
	dateReal_2.setMonth(month2 - 1);
	dateReal_2.setYear(parseInt(year2));
	dateReal_2.setDate(parseInt(day2));

	if (dateReal_2.valueOf() < dateReal_1.valueOf())
	{
		return -1;
	}
	else if (dateReal_2.valueOf() == dateReal_1.valueOf())
	{
		return 0;
	}
	else
	{
		return 1;
	}
	return true;
}


function checkmyDates(day1,day2,month1,month2,year1,year2, mes1, mes2) {
			
		if (parseFloat(year1) > parseFloat(year2)) {
			alert(mes1);
			return false;
		}
		if (parseFloat(year1) == parseFloat(year2)) {
			if (parseFloat(month1) > parseFloat(month2)) {
				alert(mes1);
 				return false;
			}
			if (parseFloat(month1) == parseFloat(month2)) {
				if (parseFloat(day1) > parseFloat(day2)) {
					alert(mes1);
					return false;
				}
				if (parseFloat(day1) == parseFloat(day2)) {
					alert(mes2);
					return false;
				}
			}
		}
	return true;
	}


function emailck(field, alert_str)
{
	var str = field.value;
	//alert(str);
	if (window.RegExp) {
		var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
		var reg1 = new RegExp(reg1str);
		var reg2 = new RegExp(reg2str);
		if (!reg1.test(str) && reg2.test(str)) {
			return true;
		}
		if(alert_str.length>0)
			alert(alert_str);
		field.select();
		return false;
	} else {
		if(str.indexOf("@") >= 0)
		{
			return true;
		}
		if(alert_str.length>0)
			alert(alert_str);
		field.select();
		return false;
	}
}


function check_booking_dates(mes1, mes2, mes_date, mes_isdate_1, mes_isdate_2, mes_isdate_3)
{
	f = document.send_request;
	var date1String = f.pickup.value;
	var day1    = date1String.substr(0,2);
	var month1  = date1String.substr(3,2);
	var year1   = date1String.substr(6,4);

	var date2String = f.dropoff.value;
	var day2    = date2String.substr(0,2);
	var month2  = date2String.substr(3,2);
	var year2   = date2String.substr(6,4);


	if ((date1String=='dd/mm/yyyy') || (date1String=='')) 
	{
		alert("Select a date please");
		f.pickup.value='';
		f.pickup.focus();
		return false;
	}

	if (isDate(date1String, mes_isdate_1, mes_isdate_2, mes_isdate_3)==false) { f.pickup.focus(); return false; }
	if (dateisNotPossible(day1,month1,year1,mes_date)==false) { f.pickup.focus(); return false; }	

	if ((date2String=='dd/mm/yyyy') || (date2String=='')) 
	{
		alert("Select a date please");
		f.dropoff.value='';
		f.dropoff.focus();
		return false;
	}

	if (isDate(date2String, mes_isdate_1, mes_isdate_2, mes_isdate_3)==false) { f.dropoff.focus(); return false; }
	if (dateisNotPossible(day2,month2,year2,mes_date)==false) { f.dropoff.focus(); return false; }

	if(date1String == date2String)
	{
		alert("The end date must be at least one day greater than the start date");
		f.dropoff.focus();
		return false;
	}


	if (!checkmyDates(day1,day2,month1,month2,year1,year2, mes1, mes2)) {return false;}

	return true;
}

function check_send_request()
{
	f = document.send_request;
	if(f.firstName.value.length < 3 )
	{
		alert("First Name must be at least 3 characters length.");
		f.firstName.focus();
		return false;
	}

	if(f.lastName.value.length < 3 )
	{
		alert("Last Name must be at least 3 characters length.");
		f.lastName.focus();
		return false;
	}

	if(f.phone.value.length < 3 )
	{
		alert("Phone must be at least 3 characters length.");
		f.phone.focus();
		return false;
	}

	if(!emailck(f.email, "The email address must be a valid one."))
	{
		return false;
	}

	if(!check_booking_dates( "Start date is later than the end date. Please correct that.", 
		"Start date can`t be equal with the end date. Please correct that.", 
		"Earliest possible date of service is today. You have specified the date: ", 
		"The year has to be greater than 2004.", 
		"Not a valid date (dd/mm/yyyy).", 
		"Date not in correct dd/mm/yyyy format."))
	{
		return false;
	}
	

	if(f.message.value.length < 3)
	{
		alert("Message must be at least 3 characters length.");
		f.message.focus();
		return false;
	}

	if(f.message.value.length > 2000)
	{
		alert("Message must be maximum 2000 characters length.");
		f.message.focus();
		return false;
	}

	if(f.img_check.value == "")
	{
		alert("You must type the validation code.");
		f.img_check.focus();
		return false;
	}

	
	f.submit();
	return true;
}