function spacialvalidate()
{
	if(document.getElementById("RequestSpecial").value=="")
	{
		document.getElementById("specialerror").innerHTML = "Please enter Email Address.";
		document.getElementById("RequestSpecial").focus();
		return false;
	}
	else
	{
		var str=document.getElementById("RequestSpecial").value;
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		
		if (filter.test(str)){ 
			return true;
		}
		else
		{
			document.getElementById("specialerror").innerHTML = "Invalid Email Address!";
			document.getElementById("RequestSpecial").focus();
			return false;
		}
	}
	return true;
}
function spacialvalidate2()
{
	if(document.getElementById("RequestSpecial").value=="")
	{
		document.getElementById("specialerror").innerHTML = "Please enter Email Address.";
		document.getElementById("RequestSpecial").focus();
	}
	else
	{
		var str=document.getElementById("RequestSpecial").value;
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (filter.test(str)){ 
			document.specialoffer.submit();
		}
		else
		{
			document.getElementById("specialerror").innerHTML = "Invalid Email Address!";
			document.getElementById("RequestSpecial").focus();
		}
	}
}
function gotocity(val)
{
	if(val!="")
		window.location.href = val;
}
function contactvalidate()
{
	if(document.getElementById("RequestFirstName2").value=="")
	{
		alert("Please enter Your Name.");
		document.getElementById("RequestFirstName2").focus();
		return false;
	}
	if(document.getElementById("RequestEmail2").value=="")
	{
		alert("Please enter Your Email.");
		document.getElementById("RequestEmail2").focus();
		return false;
	}
	if(document.getElementById("RequestComments").value=="")
	{
		alert("Please enter Comments.");
		document.getElementById("RequestComments").focus();
		return false;
	}
	if(document.getElementById("mcspvalue").value=="")
	{
		alert("Please enter Spam Protection.");
		document.getElementById("mcspvalue").focus();
		return false;
	}
	return true;
}
function request2()
{
	if(document.getElementById("RequestFirstName").value=="")
	{
		alert("Please enter First Name.");
		document.getElementById("RequestFirstName").focus();
		return false;
	}
	if(document.getElementById("RequestLastName").value=="")
	{
		alert("Please enter Last Name.");
		document.getElementById("RequestLastName").focus();
		return false;
	}
	if(document.getElementById("RequestEmail").value=="")
	{
		alert("Please enter Email.");
		document.getElementById("RequestEmail").focus();
		return false;
	}
	else
	{
		var str=document.getElementById("RequestEmail").value;
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		
		if (filter.test(str)){ 
			//return true;
		}
		else
		{
			alert("Invalid Email Address!");
			document.getElementById("RequestEmail").focus();
			return false;
		}
	}
	if(document.getElementById("RequestPreferred1").value=="")
	{
		alert("Please select Preferred Airline.");
		document.getElementById("RequestPreferred1").focus();
		return false;
	}
	if(document.getElementById("RequestPreferred2").value=="")
	{
		alert("Please select 2nd Preferred Airline.");
		document.getElementById("RequestPreferred2").focus();
		return false;
	}
	if(document.getElementById("RequestDepart").value=="")
	{
		alert("Please enter Depart.");
		document.getElementById("RequestDepart").focus();
		return false;
	}
	if(document.getElementById("RequestReturn").value=="")
	{
		alert("Please enter Return.");
		document.getElementById("RequestReturn").focus();
		return false;
	}
	if(!	isValidFlight(document.getElementById("RequestDepart").value,document.getElementById("RequestReturn").value))
	{
		return false;
	}
	if(document.getElementById("RequestFrom").value=="")
	{
		alert("Please enter From.");
		document.getElementById("RequestFrom").focus();
		return false;
	}
	if(document.getElementById("RequestTo").value=="")
	{
		alert("Please enter To.");
		document.getElementById("RequestTo").focus();
		return false;
	}
	if(document.getElementById("RequestService").value=="")
	{
		alert("Please select Class of Service.");
		document.getElementById("RequestService").focus();
		return false;
	}
	if(document.getElementById("RequestPassengers").value=="")
	{
		alert("Please select Number of Passengers.");
		document.getElementById("RequestPassengers").focus();
		return false;
	}
	if(document.getElementById("RequestContactYou").value=="")
	{
		alert("Please select Contact You.");
		document.getElementById("RequestContactYou").focus();
		return false;
	}
	if((document.getElementById("RequestContactYou").value=="Work Phone")&&(document.getElementById("RequestWorkPhone").value==""))
	{
		alert("Please enter Work Phone Number.");
		document.getElementById("RequestWorkPhone").focus();
		return false;
	}
	if((document.getElementById("RequestContactYou").value=="Cell Phone")&&(document.getElementById("RequestCellPhone").value==""))
	{
		alert("Please enter Cell Phone Number.");
		document.getElementById("RequestCellPhone").focus();
		return false;
	}
	if((document.getElementById("RequestContactYou").value=="Home Phone")&&(document.getElementById("RequestHomePhone").value==""))
	{
		alert("Please enter Home Phone Number.");
		document.getElementById("RequestHomePhone").focus();
		return false;
	}
	if(document.getElementById("mcspvalue").value=="")
	{
		alert("Please enter Spam Protection.");
		document.getElementById("mcspvalue").focus();
		return false;
	}
	return true;
}
function quickquote()
{
	if(document.getElementById("RequestFirstName1").value=="")
	{
		alert("Please enter Name.");
		document.getElementById("RequestFirstName1").focus();
		return false;
	}
	if(document.getElementById("RequestEmail1").value=="")
	{
		alert("Please enter Email.");
		document.getElementById("RequestEmail1").focus();
		return false;
	}
	else
	{
		var str=document.getElementById("RequestEmail1").value;
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		
		if (filter.test(str)){ 
			//return true;
		}
		else
		{
			alert("Invalid Email Address!");
			document.getElementById("RequestEmail1").focus();
			return false;
		}
	}
	if((document.getElementById("RequestFrom1").value=="")||(document.getElementById("RequestFrom1").value=="Departure City"))
	{
		alert("Please enter From.");
		document.getElementById("RequestFrom1").focus();
		return false;
	}
	if((document.getElementById("RequestTo1").value=="")||(document.getElementById("RequestTo1").value=="Destination City"))
	{
		alert("Please enter To.");
		document.getElementById("RequestTo1").focus();
		return false;
	}
	if(document.getElementById("RequestDepart1").value=="")
	{
		alert("Please enter Depart.");
		document.getElementById("RequestDepart1").focus();
		return false;
	}
	if(document.getElementById("RequestReturn1").value=="")
	{
		alert("Please enter Return.");
		document.getElementById("RequestReturn1").focus();
		return false;
	}
	if(!	isValidFlight(document.getElementById("RequestDepart1").value,document.getElementById("RequestReturn1").value))
	{
		return false;
	}
	return true;
}

function isValidFlight(obDate,ibDate)
{
	var isvalidD=isDate(obDate)
	var isvalidR=isDate(ibDate)
	if(!isvalidD || !isvalidR)
	{
		return false;
	}
	var obDate=obDate.split('/');
	var ibDate=ibDate.split('/');
	var obDay=obDate[0];
	var obYear=obDate[2];
	var obMonth=(obDate[1]-1)
	var ibDay=ibDate[0];
	var ibYear=ibDate[2];
	var ibMonth=(ibDate[1]-1)
	var today=new Date();
	var D=today.getDate();if(D<10){D="0"+D;}
	var M=today.getMonth();if(M<10){M="0"+M;}
	var Y=today.getFullYear();
	var objDiff=daysElapsed(new Date(ibYear,ibMonth,ibDay),new Date(obYear,obMonth,obDay));
	var objDt=daysElapsed(new Date(obYear,obMonth,obDay),new Date(Y,M,D));
	if(objDt < 0)
		return -1;
	else if(objDiff<0)
		return 1;
	else
	    return 0;
}
function daysElapsed(date1,date2) 
{
	var difference =
        Date.UTC(date1.getYear(),date1.getMonth(),date1.getDate(),0,0,0)
      - Date.UTC(date2.getYear(),date2.getMonth(),date2.getDate(),0,0,0);
   return  difference=(difference)/(1000*60*60*24);
}
//to check if date is valid or not;
var dtCh= "/";
var minYear=1900;
var maxYear=2100;
function isInteger(s){
    var i;
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
function daysInFebruary (year){
	 return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isValidDate(dtStr) {
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false
	}
	return true
}

function backtotop()
{
	new Effect.ScrollTo('top');
}

function checkwilling(e)
{
	if(window.event) // IE
	{
		keynum = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		keynum = e.which;
	}
	//alert(keynum);
	if(keynum=="8"||keynum=="190"||keynum=="46"||keynum=="48"||keynum=="49"||keynum=="50"||keynum=="51"||keynum=="52"||keynum=="53"||keynum=="54"||keynum=="55"||keynum=="56"||keynum=="57"||keynum=="39"||keynum=="37"||keynum=="96"||keynum=="97"||keynum=="98"||keynum=="99"||keynum=="100"||keynum=="101"||keynum=="102"||keynum=="103"||keynum=="104"||keynum=="105"||keynum=="110"||keynum=="116"||keynum=="13")
	{
		dot = document.getElementById("RequestWillingtopay").value;
		dot = dot.split(".");
		if((dot.length>1)&&(keynum=="110"||keynum=="190"))
			return false;
		else
			return true;
	}
	else{
		return false;
	}
}
var departCal
var returnCal
function initQuoteFrm() {
    var departDate = new Date()
    var returnDate = new Date()
    var today = new Date()
    var day = 0;
    if (today.getDay() < 5)
        day = 5 - today.getDay();
    else
        day = 5 + today.getDay();

    departDate.setDate(departDate.getDate() + day);
    returnDate.setDate(departDate.getDate() + 2);
    document.getElementById('selDepartMonth').selectedIndex = departDate.getMonth();
    document.getElementById('selDepartDay').selectedIndex = departDate.getDate() - 1;
    document.getElementById('selReturnMonth').selectedIndex = returnDate.getMonth();
    document.getElementById('selReturnDay').selectedIndex = returnDate.getDate() - 1;
    
    departCal = new CalendarPopup("departDateCnt");
    departCal.setReturnFunction("setDepartValues");

    returnCal = new CalendarPopup("returnDateCnt");
    returnCal.setReturnFunction("setReturnValues");
}
function setDepartValues(y, m, d) {
    document.getElementById('selDepartMonth').selectedIndex = m - 1 ;
    document.getElementById('selDepartDay').selectedIndex = d;
}
function setReturnValues(y, m, d) {
    document.getElementById('selReturnMonth').selectedIndex = m - 1;
    document.getElementById('selReturnDay').selectedIndex = d;
}
function showEstimate() {
    Effect.Grow('flightEstimates', { duration: 0.8 });
}
function closeEstimate() {
    Effect.Fade('flightEstimates', { duration: 0.5 });
}
function submitQuote() {
    document.getElementById('errorMessage').innerHTML = '';
    var sDepartDate = buildDateFromForm(true, true);
    var sReturnDate = buildDateFromForm(false, true);
    var dDepartDate = null;
    var dReturnDate = null;

    if (!isValidDate(sDepartDate, 'M/d/yy')) {
        document.getElementById('errorMessage').innerHTML = 'departure date is not valid';
        return;
    }
    else if (!isValidDate(sReturnDate, 'M/d/yy')) {
        document.getElementById('errorMessage').innerHTML = 'return date is not valid';
        return;
    }
    else if (fieldsMissing()) {
        document.getElementById('errorMessage').innerHTML = 'some fields are missing';
        return;
    }
    else if (!validateEmail(document.getElementById('quoteEmail').value)) {
        document.getElementById('errorMessage').innerHTML = 'email is not valid';
        return;
    }
    else {
        dDepartDate = buildDateFromForm(true, false);
        dReturnDate = buildDateFromForm(false, false);
        if (dDepartDate > dReturnDate) {
            document.getElementById('errorMessage').innerHTML = 'the departure date must be before the return date';
            return;
        }
    }

    document.getElementById('requestForm').style.display = 'none'
    document.getElementById('sendingRequest').style.display = 'block'

    new Ajax.Request('/sendQuoteRequest.php', {
        method: 'get',
        parameters: 'name=' + $('quoteName').value + '&email=' + $('quoteEmail').value + '&departCity=' + $('quoteDepartCity').value + '&arrivalCity=' + $('quoteReturnCity').value + '&departDate=' + sDepartDate + '&returnDate=' + sReturnDate,
        onSuccess: function(transport) { document.getElementById('sendingRequest').style.display = 'none'; document.getElementById('requestSent').style.display = 'block'; },
        onFailure: function() { document.getElementById('requestFailed').style.display = 'block'; }
    }
    );
}
function fieldsMissing() {
    var quoteName = document.getElementById('quoteName')
    var quoteEmail = document.getElementById('quoteEmail')
    var quoteDepartCity = document.getElementById('quoteDepartCity')
    var quoteReturnCity = document.getElementById('quoteReturnCity')
    var sName = new String(quoteName.value);
    var sEmail = new String(quoteEmail.value);
    var sDepartCity = new String(quoteDepartCity.value);
    var sReturnCity = new String(quoteReturnCity.value);
    var bIsValid = true;

    quoteName.className = '';
    quoteEmail.className = '';
    quoteDepartCity.className = '';
    quoteReturnCity.className = '';

    sName = sName.replace(' ', '');
    sEmail = sEmail.replace(' ', '');
    sDepartCity = sDepartCity.replace(' ', '');
    sReturnCity = sReturnCity.replace(' ', '');

    if (sName == '') {
        quoteName.className = 'quoteMissing';
        bIsValid = false;
    }
    if (sEmail == '') {
        quoteEmail.className = 'quoteMissing';
        bIsValid = false;
    }
    if (sDepartCity == '') {
        quoteDepartCity.className = 'quoteMissing';
        bIsValid = false;
    }
    if (sReturnCity == '') {
        quoteReturnCity.className = 'quoteMissing';
        bIsValid = false;
    }

    return !bIsValid;
}

function buildDateFromForm(bDepartDate, bString) {
    var today = new Date();
    var departYear = 0;
    var returnYear = 0;
    var selDepartMonth = document.getElementById('selDepartMonth');
    var selDepartDay = document.getElementById('selDepartDay');
    var selReturnMonth = document.getElementById('selReturnMonth');
    var selReturnDay = document.getElementById('selReturnDay');
    
    if (bDepartDate) {
        if (selDepartMonth.options[selDepartMonth.selectedIndex].value < today.getMonth())
            departYear = today.getFullYear() + 1;
        else
            departYear = today.getFullYear();
        var departMonth = new Number(selDepartMonth.options[selDepartMonth.selectedIndex].value) + 1;
        var departDay = selDepartDay.options[selDepartDay.selectedIndex].value
        if (bString)
            return departMonth + '/' + departDay + '/' + departYear
        else
            return new Date(departYear, departMonth, departDay);
    }
    else {
        if (selReturnMonth.options[selReturnMonth.selectedIndex].value < today.getMonth())
            returnYear = today.getFullYear() + 1;
        else
            returnYear = today.getFullYear();
        var returnMonth = new Number(selReturnMonth.options[selReturnMonth.selectedIndex].value) + 1;
        var returnDay = selReturnDay.options[selReturnDay.selectedIndex].value
        if (bString)
            return returnMonth + '/' + returnDay + '/' + returnYear        
        else
            return new Date(returnYear, returnMonth, returnDay);
    }
}

function validateEmail(str) {

    var at = "@"
    var dot = "."
    var lat = str.indexOf(at)
    var lstr = str.length
    var ldot = str.indexOf(dot)
    if (str.indexOf(at) == -1) 
        return false
    if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr)
        return false
    if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr)
        return false
    if (str.indexOf(at, (lat + 1)) != -1)
        return false
    if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) 
        return false
    if (str.indexOf(dot, (lat + 2)) == -1) 
        return false
    if (str.indexOf(" ") != -1) 
        return false

    return true
}