﻿//Created By  :   Rahul
//Date        :   10th July 2009
//Purpose     :   Javascript file created to make the functionality work in firefox browser.
function ValidatePage() {
    var SearchSpaceToSubmit = document.SearchSpace;
    var minDays, maxMonths, maxDaysBooked
    var currentDate = "";
    var maxdate = "";
    var startdate = "";
    var finishdate = "";
    var datediff = "";
    var arrdate = "";
    var strdate = "";
    var strdate1 = "";
    minDays = 2;
    maxMonthsAhead = 12;
    maxDaysBooked = 60;    
    //Storing the current date.
    currentDate = new Date();
    //Storing the maximum date. The user can't set the start date beyond the maximum date.
    maxdate = new Date();
    maxdate.setFullYear(maxdate.getFullYear() + 1, maxdate.getMonth(), maxdate.getDate());
    //Changing the dateformat from dd/mm/yyyy to mm/dd/yyyy to get the date object.
    var strdatestart = SearchSpaceToSubmit["FromMonth"].value  + '/' +  SearchSpaceToSubmit["FromDay"].value + '/' + SearchSpaceToSubmit["FromYear"].value;
    var strdatefinish = SearchSpaceToSubmit["ToMonth"].value  + '/' +   SearchSpaceToSubmit["ToDay"].value + '/' + SearchSpaceToSubmit["ToYear"].value;
     
    //Storing the start date and finish date into string variables.
    startdate =  new Date(strdatestart);
    finishdate = new Date(strdatefinish);
    //Storing the difference between startdate and enddate into datediff variable.
    datediff = GetDateDiff(startdate, finishdate)
    //check if the start date is a valid date.
    if (Date.parse(SearchSpaceToSubmit.DateStart.value) == null) {
        alert("Start date is not a valid date");
    }
    //check if the finish date is a valid date.
    else if (Date.parse(SearchSpaceToSubmit.DateFinish.value) == null) {
        alert("End date is not a valid date (is it blank?)");
    }
    //check that start date IS NOT later than maxMonths ahead in time
    else if (startdate1 < currentDate) {
        alert("Start date can not be less than the current date");
    }
    //check the start date IS NOT greater then end date
    else if (datediff < 0) {
        alert("Start date can not be greater than End date");
    }
    //check that start date IS NOT equal to end date			
    else if (datediff == 0) {
        alert("Start date can not be equal to End Date");
    }
    //check that start date IS NOT later than maxMonths ahead in time
    else if (startdate1 > maxdate) {
        alert("Start date can not be later than 12 months ahead");
    }
    //check that difference IS NOT greater than maxMonths ahead in time
    else if (datediff > maxDaysBooked) {
        alert("Maximum no. of days booked should not exceed 60. Contact us for details.");
    }
    //check for minimum days			
    else if (datediff < 2) {
        var result = confirm("Minimum stay is 2 days, you'll be charged for 2 days if you carry on.\nDo you want to continue?")
        if (result == true) {
            SearchSpaceToSubmit.submit();
        }
    }
    else {
        SearchSpaceToSubmit.DeptTime.value = SearchSpaceToSubmit.DeptTimeHour.value.toString() + ":" + SearchSpaceToSubmit.DeptTimeMinute.value.toString()
        SearchSpaceToSubmit.ArrTime.value = SearchSpaceToSubmit.ArrTimeHour.value.toString() + ":" + SearchSpaceToSubmit.ArrTimeMinute.value.toString()
        SearchSpaceToSubmit.submit();
    }
}
//Function which returns the difference in days between two dates. The dates should be in dd/mm/yyyy format.
function GetDateDiff(startdate, finishdate) {
    var one_day = 1000 * 60 * 60 * 24;
    var x = startdate.split("/");
    var y = finishdate.split("/");
    var date1 = new Date(x[2], (x[1] - 1), x[0]);
    var date2 = new Date(y[2], (y[1] - 1), y[0]);
    var month1 = x[1] - 1;
    var month2 = y[1] - 1;
    _Diff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));
    return _Diff
}
//Function to validate the user details form.
function ValidateUserDetails(linkid) {
    //var postcodePat = /([a-zA-Z]{2}[0-9]{1,2}\s{0,1}[0-9]{1,2}[a-zA-Z]{2})/;
    //var matchpostcode = postcode.match(postcodePat);    
    var emailPat = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    var emailid = document.getElementById("txtEmail").value;
    var postcodevalue = document.getElementById("txtPostCode").value;
    var matchArray = emailid.match(emailPat);
    if (Trim(document.getElementById("txtFName").value) == "") {
        alert("Please Fill In Your First Name");
        document.getElementById("txtFName").focus();
        return false;
    }
    else if (Trim(document.getElementById("txtSurName").value) == "") {
        alert("Please Fill In Your Surname");
        document.getElementById("txtSurName").focus();
        return false;
    }
    else if (Trim(document.getElementById("txtAddress1").value) == "") {
        alert("Please Fill In Your Address");
        document.getElementById("txtAddress1").focus();
        return false;
    }
    else if (Trim(document.getElementById("txtCity").value) == "") {
        alert("Please Fill In Your City");
        document.getElementById("txtCity").focus();
        return false;
    }
    else if (Trim(document.getElementById("txtPostCode").value) == "") {
        alert("Please Fill In Your Post Code");
        document.getElementById("txtPostCode").focus();
        return false;
    }
    else if (Trim(document.getElementById("txtTelephone").value) == "") {
        alert("Please Fill In Your Telephone No.");
        document.getElementById("txtTelephone").focus();
        return false;
    }
    else if (Trim(document.getElementById("txtEmail").value) == "") {
        alert("Please Fill In Your Email Address");
        document.getElementById("txtEmail").focus();
        return false;
    }
    else if (matchArray == null) {
        alert("Email Address is not valid");
        document.getElementById("txtEmail").focus();
        return false;
    }
    else if (checkPostCode(postcodevalue) == false) {
        alert("Post code is not valid");
        document.getElementById("txtPostCode").focus();
        return false;
    }
    else if (linkid == "lnkProceedRegistration") {
        if (document.getElementById("txtPassword").value == "") {
            alert("Please Fill In Your Password.");
            document.getElementById("txtPassword").focus();
            return false;
        }
        else if (document.getElementById("txtPassword").value != document.getElementById("txtConfPassword").value)    {
            alert("Password and Confirm password must match");
            document.getElementById("txtConfPassword").focus();
            return false;
        }
        else {
            SetGoodValues("lnkProceedRegistration");
            document.frmRegistration.submit();
        }     
    }
    else if (linkid == "lnkProceedUserDetails") {
            SetGoodValues("lnkProceedUserDetails");            
            document.frmUserDetails.submit(); 
    }               
}
//Function used to remove all leading and trailing whitespaces.
function Trim(str) {
    str = this != window ? this : str;
    return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}
function SetGoodValues(linkid) {
    document.getElementById("txtFName").value = Trim(document.getElementById("txtFName").value);
    document.getElementById("txtSurName").value = Trim(document.getElementById("txtSurName").value);
    document.getElementById("txtAddress1").value = Trim(document.getElementById("txtAddress1").value);
    document.getElementById("txtAddress2").value = Trim(document.getElementById("txtAddress2").value);
    document.getElementById("txtCity").value = Trim(document.getElementById("txtCity").value);
    document.getElementById("txtTelephone").value = Trim(document.getElementById("txtTelephone").value);
    document.getElementById("txtFax").value = Trim(document.getElementById("txtFax").value);
    document.getElementById("txtMobile").value = Trim(document.getElementById("txtMobile").value);
    document.getElementById("txtEmail").value = Trim(document.getElementById("txtEmail").value);
    if (linkid == "lnkProceedUserDetails") {
        document.getElementById("txtReg").value = Trim(document.getElementById("txtReg").value);
        document.getElementById("txtMake").value = Trim(document.getElementById("txtMake").value);
        document.getElementById("txtColour").value = Trim(document.getElementById("txtColour").value);
        document.getElementById("txtAirline").value = Trim(document.getElementById("txtAirline").value);
        document.getElementById("txtDestFlightNo").value = Trim(document.getElementById("txtDestFlightNo").value);
        document.getElementById("txtRetFlightNo").value = Trim(document.getElementById("txtRetFlightNo").value);
    }
    else if (linkid == "lnkProceedRegistration") {
        document.getElementById("txtPassword").value = Trim(document.getElementById("txtPassword").value);
        document.getElementById("txtConfPassword").value = Trim(document.getElementById("txtConfPassword").value);
    }
}

function ResetSearch() {    
    var ret_date, ret_month, ret_year, ret_hour, ret_min, strCurdatetime, strCurdate, strCurrDate, arrdate, retdate;

    //Storing the server current date and time.
    strCurdatetime = document.getElementById("hdnCurrentDate").value;

    //Removing the time from the server date.
    strCurdate = strCurdatetime.substring(0, strCurdatetime.lastIndexOf(' '));
    //strCurdate = strCurdatetime;
    
    /*Convert the server date format to DD/MM/YYYY to set as a default value for ArrivalDateTime field*/
    var seldtarray = new Array();
    seldtarray = strCurdate.toString().split("/");
    arrdate = seldtarray[1] + "/" + seldtarray[0] + "/" + seldtarray[2];

    /*Get the return date to set as a default value for ReturnDateTime field*/
    var d = new Date(strCurdate);
    var in_a_week = new Date(d);
    in_a_week.setDate(in_a_week.getDate() + 7);
    ret_date = (in_a_week.getDate().toString().length == 1) ? "0" + in_a_week.getDate().toString() : in_a_week.getDate().toString();
    ret_month = ((in_a_week.getMonth() + 1).toString().length == 1) ? "0" + (in_a_week.getMonth() + 1).toString() : (in_a_week.getMonth() + 1).toString();
    ret_year = in_a_week.getFullYear();
    ret_hour = "01";
    ret_min = "10";
    //strCurrDate = ret_date + "/" + ret_month + "/" + ret_year + " " + ret_hour + ":" + ret_min;
    strCurrDate = ret_date + "/" + ret_month + "/" + ret_year;
    retdate = strCurrDate;
    /*Set the default values for the fields*/
    document.getElementById("ArrivaldateTimeCustom").value = arrdate;
    document.getElementById("ReturndateTimeCustom").value = retdate;
    document.getElementById("AirportID").selectedIndex = 0;
    document.getElementById("NoOfPassenger").selectedIndex = 0;
    document.getElementById("ArrivalHour").selectedIndex = 0;
    document.getElementById("ReturnHour").selectedIndex = 0;
    document.getElementById("ArrivalMinute").selectedIndex = 0;
    document.getElementById("ReturnMinute").selectedIndex = 0;
}

function ResetBackOfficeSearch() {
    document.getElementById("IsNewCustomer").checked = true;
    document.getElementById("hdnRegCustomer").value = "-1";
    document.getElementById("seluser").value = "New Customer";
    //ResetSearch();
}

function ResetDetails(lnkid) {
    document.getElementById("Title").selectedIndex = 0;
    document.getElementById("FirstName").value = "";
    document.getElementById("SurName").value = "";
    document.getElementById("Address").value = "";
    //document.getElementById("Address2").value = "";
    document.getElementById("City").value = "";    
    document.getElementById("Telephone").value = "";
    document.getElementById("PostCode").value = "";
    document.getElementById("Fax").value = "";
    document.getElementById("Mobile").value = "";
    document.getElementById("Email").value = "";
    document.getElementById("ConfirmEmail").value = "";
    for (ctr = 0; ctr < document.getElementById("Country").length; ctr++) {
        if (document.getElementById("Country").options[ctr].value == "GB") {
            document.getElementById("Country").selectedIndex = ctr;
        }
    }
    if (lnkid == "lnkResetUserDetails") {
        document.getElementById("Reg").value = "";
        document.getElementById("Make").value = "";
        document.getElementById("Colour").value = "";
        document.getElementById("Airline").value = "";
        document.getElementById("DestFlightNo").value = "";
        document.getElementById("RetFlightNo").value = "";
    }
    else {
        document.getElementById("Password").value = "";
        document.getElementById("ConfirmPassword").value = "";
    }
}
//Function to validate the value of post code.
function checkPostCode(toCheck,strCountry) {     
    // Permitted letters depend upon their position in the postcode.
    var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
    var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
    var alpha3 = "[abcdefghjkstuw]";                                // Character 3
    var alpha4 = "[abehmnprvwxy]";                                  // Character 4
    var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5

    // Array holds the regular expressions for the valid postcodes
    var pcexp = new Array();

    // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
    pcexp.push(new RegExp("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$", "i"));

    // Expression for postcodes: ANA NAA
    pcexp.push(new RegExp("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$", "i"));

    // Expression for postcodes: AANA  NAA
    pcexp.push(new RegExp("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$", "i"));

    // Exception for the special postcode GIR 0AA
    pcexp.push(/^(GIR)(\s*)(0AA)$/i);

    // Standard BFPO numbers
    pcexp.push(/^(bfpo)(\s*)([0-9]{1,4})$/i);

    // c/o BFPO numbers
    pcexp.push(/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);

    // Overseas Territories
    pcexp.push(/^([A-Z]{4})(\s*)(1ZZ)$/i);

    // Load up the string to check
    var postCode = toCheck;

    // Assume we're not going to find a valid postcode
    var valid = false;

    // Check the string against the types of post codes
    for (var i = 0; i < pcexp.length; i++) {
        if (pcexp[i].test(postCode)) {

            // The post code is valid - split the post code into component parts
            pcexp[i].exec(postCode);

            // Copy it back into the original string, converting it to uppercase and
            // inserting a space between the inward and outward codes
            postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();

            // If it is a BFPO c/o type postcode, tidy up the "c/o" part
            postCode = postCode.replace(/C\/O\s*/, "c/o ");

            // Load new postcode back into the form element
            valid = true;

            // Remember that we have found that the code is valid and break from loop
            break;
        }
    }

    // Return with either the reformatted valid postcode or the original invalid
    // postcode
    
    if (strCountry == "United Kingdom") {
        if (valid) {
             if (document.getElementById("txtPostCode")) 
                document.getElementById("txtPostCode").value = postCode;
            if (document.getElementById("PostCode")) 
                document.getElementById("PostCode").value = postCode;
            return true;
        }
        else
            return false;
    }
    else
        return true;
}
function ValidateEmail() {
    var emailPat = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    var emailid = document.getElementById("txtEmail").value;
    var matchArray = emailid.match(emailPat);
    if (Trim(document.getElementById("txtEmail").value) == "") {
        alert("Please Fill In Your Email Address");
        document.getElementById("txtEmail").focus();
        return false;
    }
    else if (matchArray == null) {
        alert("Email Address is not valid");
        document.getElementById("txtEmail").focus();
        return false;
    }
    else {        
        return true;
    }
}
function ValidateEmailAddress(value) {   
    var emailPat = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    var emailid = value;
    var matchArray = emailid.match(emailPat);
    if (matchArray == null) {        
        return false;
    }
    else {
        return true;
    }
}

function NumberWithTwoDecimals(num) {
    var numpat = /^\d{1,3}(\.\d{1,2})?$/;
    var number = num;
    var matchArray = number.match(numpat);
    if (matchArray == null) {
        return false;
    }
    else {
        return true;
    }
}

function ContainsNoSpecialCharacters(val) {
    var valpat = /^(a-z|A-Z|0-9)*[^#!@;$%^&*()]*$/;
    var value = val;
    var matchArray = value.match(valpat);
    if (matchArray == null) {
        return false;
    }
    else {
        return true;
    }
}

function OnlyNumbers(val) {
    var valpat = /^[+]?\d*$/;
    var value = val;
    var matchArray = value.match(valpat);
    if (matchArray == null) {
        return false;
    }
    else {
        return true;
    }
}

function OnlyCharacters(val) {
    var valpat = /^[a-zA-Z\s]+$/;
    var value = val;
    var matchArray = value.match(valpat);
    if (matchArray == null) {
        return false;
    }
    else {
        return true;
    }
}

function checkPassword(val) {    
    var valpat = /^(?=.{6,15}$)(?=\D+\d)[a-z][a-z0-9]+$/;    
    if (valpat.test(val)){
        return true;
    }
    return false;
    //^(?=\w*\d)[\w]{6,10}$
    //^(?=.*\d).{6,10}$
    //var value = val;
    //var matchArray = value.match(valpat);
    //if (matchArray == null) {
    //  return false;
    //}
    //if (value.search(valpat) == -1) {
    //return false;
    //}
}

function LoginUser() {    
    var txtEmail = document.getElementById("logEmail");
    var txtPass = document.getElementById("logPassword");
    return GlobalValidation(txtEmail, txtPass);
}

function UserDetailsLogin() {    
    var txtEmail = document.getElementById("userEmail");
    var txtPass = document.getElementById("userPassword");
    return GlobalValidation(txtEmail, txtPass);
}   

function GlobalValidation(txtEmail, txtPass) {

var emailPat = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;    
var emailid = txtEmail.value;
var matchArray = emailid.match(emailPat);
if (txtEmail.value == "" || txtEmail.value == "Email address") {
    alert("Email is required.");
    txtEmail.focus();
    return false;           
}
else if (txtPass.value == "" || txtPass.value == "Password") {
    alert("Password is required.");
    txtPass.focus();    
     return false;       
}
else if (matchArray == null) {
    alert("Email Address is not valid");
    txtEmail.focus();     
     return false;   
}
else if(checkPassword(txtPass.value) == false)
{
    alert("Password should be min 6 and max 15 characters/numbers with at least one number and should start with a character.");
    txtPass.focus();
    return false;        
}
    /*else {  
        
        jQuery.post(loginUrl, { 'Email': txtEmail.value.toString(), 'Password': txtPass.value.toString(), 'result': '' }, function(data) {

            if (data == "Success") {
                window.location = CurrentUrl;
                //window.location.reload();
            }
            else {                
                alert(data);
            }
        });
    }*/
    return true;
}

function DisplayRegions() {    
    alert("Hello");    
    $.getJSON("/Home/GetRegions", null, 
        function(data) {
            $.each(data, 
                function(index, region){
                alert(region.Name)
                }
            );
        }
    );
    }

    function confirmSearch() {        
        //Storing the server current date and time.
        strCurrentdate = document.getElementById("hdnCurrentDate").value;
        var Currentdatetime = new Date(strCurrentdate);  
        
        var strArrivaldatetime = document.getElementById("ArrivaldateTimeCustom").value;
        var strReturndatetime = document.getElementById("ReturndateTimeCustom").value;

        //Removing time from the Arrival and Return date
        var strArrivaldate = strArrivaldatetime.substring(0, strArrivaldatetime.lastIndexOf(' '));
        var strReturndate = strReturndatetime.substring(0, strReturndatetime.lastIndexOf(' '));
        
        //Storing the Arrival and Return date into variables.
        var ArConvertdate = strArrivaldatetime.split("/");
        var Arrivaldatetime = new Date(ArConvertdate[1] + "/" + ArConvertdate[0] + "/" + ArConvertdate[2]);

        var datediff = GetDateDiff(strArrivaldate, strReturndate);

        var difference = Arrivaldatetime - Currentdatetime;        
        
        var minutes = Math.round(difference / (1000 * 60)); // compute minutes

        if (minutes < 0) {
            alert("Arrival date and time can not be less than Current date and time.");
            return false;
        }        
        else if(datediff < 2) {
            var result = confirm("Minimum stay is 2 days, you'll be charged for 2 days if you carry on.\nDo you want to continue?")
            if (result == true) {
                return true;
            }
            else
                return false;
        }
        return true;     
    }

function fnValidateSearch(criteria, ctrid) {    
    var SearchSpaceToSubmit = document.SearchSpace;
    var minDays, maxDaysBooked
    var strCurrentdate, Currentdate, maxdate, strArrivaldatetime, strReturndatetime, strArrivaldate, strReturndate, strArrivalHour, strArrivalMin, strReturnHour, strReturnMin, Arrivaldate, Returndate, datediff, selArrHour, selRetHour, selArrMin, selRetMin;     
    minDays = 2;    
    maxDaysBooked = 60;

    //Storing the server current date and time.
    strCurrentdate = document.getElementById("hdnCurrentDate").value;

    var Currentdatetime = new Date(strCurrentdate);
    
    selArrHour = document.getElementById("ArrivalHour").selectedIndex;
    selRetHour = document.getElementById("ReturnHour").selectedIndex;
    selArrMin = document.getElementById("ArrivalMinute").selectedIndex;
    selRetMin = document.getElementById("ReturnMinute").selectedIndex;
    
    
    //Removing the time from the server date.
    Currentdate = new Date(strCurrentdate.substring(0, strCurrentdate.lastIndexOf(' ')));

    //Storing the maximum date. The user can't set the start date beyond the maximum date.
    maxdate = new Date(Currentdate);
    maxdate.setFullYear(maxdate.getFullYear() + 1, maxdate.getMonth(), maxdate.getDate());

    /*Get the user selected Arrival and Return date and time*/
    strArrivaldatetime = document.getElementById("ArrivaldateTimeCustom").value;
    strReturndatetime = document.getElementById("ReturndateTimeCustom").value;
    
    strArrivalHour = document.getElementById("ArrivalHour").options[selArrHour].text;
    strReturnHour = document.getElementById("ReturnHour").options[selRetHour].text;
    strArrivalMin = document.getElementById("ArrivalMinute").options[selArrMin].text;
    strReturnMin = document.getElementById("ReturnMinute").options[selRetMin].text;
    
    document.getElementById("hdnArrHour").value = strArrivalHour;
    document.getElementById("hdnRetHour").value = strReturnHour;
    document.getElementById("hdnArrMinute").value = strArrivalMin;
    document.getElementById("hdnRetMinute").value = strReturnMin;

    ///Removing time from the Arrival and Return date
    //strArrivaldate = strArrivaldatetime.substring(0, strArrivaldatetime.lastIndexOf(' '));
    //strReturndate = strReturndatetime.substring(0, strReturndatetime.lastIndexOf(' '));

    strArrivaldate = strArrivaldatetime;
    strReturndate = strReturndatetime; 

    //Storing the Arrival and Return date into variables.
    var ArConvertdate = strArrivaldate.split("/");
    Arrivaldate = new Date(ArConvertdate[1] + "/" + ArConvertdate[0] + "/" + ArConvertdate[2]);

    var Arrivaldatetime = new Date(ArConvertdate[1] + "/" + ArConvertdate[0] + "/" + ArConvertdate[2] + " " + strArrivalHour + ":" + strArrivalMin);    
    
    ArConvertdate = strReturndate.split("/");
    Returndate = new Date(ArConvertdate[1] + "/" + ArConvertdate[0] + "/" + ArConvertdate[2]);
    
    //Storing the difference between Arrival and Return date into datediff variable.
    datediff = GetDateDiff(strArrivaldate, strReturndate)

    var difference = Arrivaldatetime - Currentdatetime;
    var minutes = Math.round(difference / (1000 * 60)); // compute minutes


    if (criteria == "button") {
        //check that difference IS NOT greater than maxMonths ahead in time
        if (datediff > maxDaysBooked) {
            alert("Maximum number of days booked should not exceed 60. Contact us for details.");
            return false;
        }

        //check for maximum date a user can select
        else if (Arrivaldate > maxdate) {
            alert("Arrival date can not be more than 12 months ahead.");
            return false;
        }
        
        //check for arrivaldatetime less the currentdatetime
        else if (minutes < 0) {
            alert("Arrival date and time can not be less than Current date and time.");
            return false;
        }
        
        //check for minimum days			
        else if (datediff < 2) {
            var result = confirm("Minimum stay is 2 days, you'll be charged for 2 days if you carry on.\nDo you want to continue?")
            if (result == true) {
                return true;
            }
            else
                return false;
        }
        return true;
    }
    else {
        //check that start date IS NOT later than maxMonths ahead in time
        if (Arrivaldate < Currentdate) {
            //alert("Arrival date can not be less than the current date");
            return false;
        }       

        //check that start date IS NOT equal to end date			
//        else if (datediff == 0) {
//            //alert("Arrival date can not be equal to Return Date");
//            return false;
//        }
        else if (ctrid == "ReturndateTimeCustom") {
            //check the start date IS NOT greater then end date
            if (datediff < 0) {
                //alert("Arrival date can not be greater than Return date");
                return false;
            }
        }
        return true; 
    }
}

function fnDateValidate(startdt,finishdt) {        
   // var SearchSpaceToSubmit = document.forms[formname];
   
    var minDays, maxMonths, maxDaysBooked
    var currentDate = "";
    var maxdate = "";
    var startdate = "";
    var finishdate = "";
    var datediff = "";
    var arrdate = "";
    var strdate = "";
    var strdate1 = "";
    minDays = 2;
    maxMonthsAhead = 12;
    maxDaysBooked = 60;
    //Storing the current date.
    currentDate = new Date(document.getElementById("hdnCurrentDate").value);
    //Storing the maximum date. The user can't set the start date beyond the maximum date.
    maxdate = new Date(document.getElementById("hdnCurrentDate").value);
    maxdate.setFullYear(maxdate.getFullYear() + 1, maxdate.getMonth(), maxdate.getDate());
    //Changing the dateformat from dd/mm/yyyy to mm/dd/yyyy to get the date object.
    var strdatetimestart = document.getElementById(startdt).value;
    var strdatetimefinish = document.getElementById(finishdt).value;
    //Removing time from the Arrival and Return Date.
    
    var strdatestart = strdatetimestart.substring(0, strdatetimestart.lastIndexOf(' '));
    var strdatefinish = strdatetimefinish.substring(0, strdatetimefinish.lastIndexOf(' '));
//    var strdatestart = SearchSpaceToSubmit["FromMonth"].value  + '/' +  SearchSpaceToSubmit["FromDay"].value + '/' + SearchSpaceToSubmit["FromYear"].value;
//    var strdatefinish = SearchSpaceToSubmit["ToMonth"].value  + '/' +   SearchSpaceToSubmit["ToDay"].value + '/' + SearchSpaceToSubmit["ToYear"].value;
    if (strdatestart == "") {
        alert("Arrival date and time is required.")        
        return false;
    }
    else if (strdatefinish == "") {
        alert("Return date and time is required.")
        return false;
    }
    //Storing the start date and finish date into string variables.
    var ArConvertdate = strdatestart.split("/");
    startdate =  new Date(ArConvertdate[1] + "/" + ArConvertdate[0] + "/" + ArConvertdate[2]);
    
    ArConvertdate = strdatefinish.split("/");
    finishdate = new Date(ArConvertdate[1] + "/" + ArConvertdate[0] + "/" + ArConvertdate[2]);
    //Storing the difference between startdate and enddate into datediff variable.
    datediff = GetDateDiff(strdatestart, strdatefinish)
    //check if the start date is a valid date.
  
    //check that start date IS NOT later than maxMonths ahead in time
//    if (startdate < currentDate) {
//        alert("Start date can not be less than the current date");
//         return false;
//    }
    //check the start date IS NOT greater then end date
   // else 
    
    if (datediff < 0) {
        alert("Start date can not be greater than End date");
        return false;
    }
    //check that start date IS NOT equal to end date			
    else if (datediff == 0) {
        alert("Start date can not be equal to End Date");
        return false;
    }
    //check that start date IS NOT later than maxMonths ahead in time
    else if (startdate > maxdate) {
        alert("Start date can not be later than 12 months ahead");
        return false;
    }
    //check that difference IS NOT greater than maxMonths ahead in time
    else if (datediff > maxDaysBooked) {
        alert("Maximum no. of days booked should not exceed 60. Contact us for details.");
        return false;
    }
    //check for minimum days			
    else if (datediff < 2) {
        var result = confirm("Minimum stay is 2 days, you'll be charged for 2 days if you carry on.\nDo you want to continue?")
        if (result == true) {
            return true;
        }
        else
        return false;
    }
    
  return true;
}



/************************************************
DESCRIPTION: Validates that a string contains only
    valid integer number.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
**************************************************/
  function validateInteger( strValue ) {

  var objRegExp  = /(^-?\d\d*$)/;

  //check for integer characters
  return objRegExp.test(strValue);
}


/************************************************
DESCRIPTION: Validates that a string contains only
    valid integer number.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
**************************************************/
  function validateDecimal( strValue ) {

  var objRegExp  = /^-?\d+(\.\d+)?$/;

  //check for integer characters
  return objRegExp.test(strValue);
}



/************************************************
DESCRIPTION: Validates that a string contains only
    valid integer number.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
**************************************************/
  function validateEmail(strValue ) 
  {

  var strExp  = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

  var rx = new RegExp(strExp);
  //check for integer characters  
  return rx.test(strValue);
}

//Start - Restricting the copy, cut and paste options.
function noCopyMouse(e) {
    var isRight = (e.button) ? (e.button == 2) : (e.which == 3);

    if (isRight) {
        alert('You are prompted to type this twice for a reason!');
        return false;
    }
    return true;
}

function noCopyKey(e) {
    var forbiddenKeys = new Array('c', 'x', 'v');
    var keyCode = (e.keyCode) ? e.keyCode : e.which;
    var isCtrl;

    if (window.event) 
        isCtrl = e.ctrlKey
    else
        isCtrl = (window.Event) ? ((e.modifiers & Event.CTRL_MASK) == Event.CTRL_MASK) : false;

    if (isCtrl) {
        for (i = 0; i < forbiddenKeys.length; i++) {
            if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) {
                alert('You are prompted to type this twice for a reason!');
                return false;
            }
        }
    }
    return true;
}

function HideCalendar(ctrlid) {    
    var calendar = document.getElementById("AnyTime--" + ctrlid);    
    calendar.style.display = "none";
    calendar.lostFocus = true;    
}
//End - Restricting the copy, cut and paste options.
