function showHotelCheckInCalendar(dateValueField, dateImage)
{

   showCal(dateValueField, dateImage,'ShowDepartDate',calDis(),EndDate(),'');
}
function calDis(){
     var today = new Date();
     var NoOfDisDays = parseInt(document.getElementById('CalDisableDays').value);
     today.setDate(today.getDate()+NoOfDisDays);
//     return( today.getDate() + "/" + (today.getMonth()+1) + "/" + today.getFullYear());
    return( (today.getDate()<=9?( "0"+ today.getDate()): today.getDate()) + "/" + ( (today.getMonth()+1) <= 9 ? "0"+(today.getMonth()+1): (today.getMonth()+1)) + "/" + today.getFullYear());
}

function showHotelCheckOutCalendar()
{
	var startDate = setHotelCheckoutDate();
	showCal('checkOutDate','checkOutDateImg','setNights',startDate,EndDate(),startDate);
}
function Today()
{
	var today = new Date();
	return( today.getDate() + "/" + (today.getMonth()+1) + "/" + today.getFullYear());
}
function EndDate(){
	var EndDate=new Date()
	EndDate.setFullYear(EndDate.getFullYear()+1);
	return( EndDate.getDate() + "/" + (EndDate.getMonth()+1) + "/" + EndDate.getFullYear());
}
function setHotelCheckoutDate()
{
   var noOfDatesValue = document.getElementById('noOfNights').options [document.getElementById('noOfNights').selectedIndex].value;
   var dd,mm,yy;
   var checkInDate = document.getElementById('checkInDate').value;

   setDates();

   dd = checkInDate.split("/")[0];
   mm = checkInDate.split("/")[1];
   yy = checkInDate.split("/")[2];

   //getting substring of last two elements of the depart year
   var yearVal = yy.substring( 2,4);

   //getting the zero index value of depart year drop down
   var selectedZeroYear = document.getElementById('selectYear').options [0].value.substring( 2,4);

   var difference = yearVal - selectedZeroYear;


   document.getElementById('selectMonth').selectedIndex = mm -1;
   document.getElementById('selectYear').selectedIndex = difference;
   setNoOfDays();
   document.getElementById('selectDay').selectedIndex = dd -1;


	//minus 1 from the month.....
	var objcheckInDate = new Date( yy, mm -1, dd);
	objcheckInDate = new Date( objcheckInDate.getTime() + noOfDatesValue * 24*3600 *1000);


	var ddRet = objcheckInDate.getDate();
	var mmRet = objcheckInDate.getMonth()+1; //plus 1...... to cancell above minus 1
	var yyRet = objcheckInDate.getFullYear();

	var yyRetToStr = yyRet.toString();

	//getting substring of last two elements of the return year
    var yearValRet = yyRetToStr.substring( 2,4);

	//getting the zero index value of return year drop down
    var selectedZeroYearRet = document.getElementById('selectRetYear').options [0].value.substring( 2,4);

	 var differenceRet = yearValRet - selectedZeroYearRet;


	document.getElementById('selectRetMonth').selectedIndex = mmRet -1;
    document.getElementById('selectRetYear').selectedIndex = differenceRet;
    setNoOfRetDays();
    document.getElementById('selectRetDay').selectedIndex = ddRet -1;

	var checkOutDateNew = document.getElementById('selectRetDay').options [document.getElementById('selectRetDay').selectedIndex].value +"/"+document.getElementById('selectRetMonth').options [document.getElementById('selectRetMonth').selectedIndex].value+"/"+document.getElementById('selectRetYear').options [document.getElementById('selectRetYear').selectedIndex].value;

	document.getElementById('checkOutDate').value = checkOutDateNew;

	return checkOutDateNew;
}


function setNights()
{

	var checkInDate = document.getElementById('checkInDate').value;
	var checkOutDate = document.getElementById('checkOutDate').value;

	var dd1,mm1,yy1,dd2,mm2,yy2;
   	dd1 = checkInDate.split("/")[0];
   	mm1 = checkInDate.split("/")[1] - 1;
   	yy1 = checkInDate.split("/")[2];

   	dd2 = checkOutDate.split("/")[0];
   	mm2 = checkOutDate.split("/")[1] - 1;
   	yy2 = checkOutDate.split("/")[2];

   	var objcheckInDate = new Date( yy1, mm1, dd1);
   	var objcheckOutDate = new Date( yy2, mm2, dd2);
   	var noOfNights = objcheckOutDate.getTime()  - objcheckInDate.getTime();

   		noOfNights  = (noOfNights / (24*3600 *1000));
		if(noOfNights > 21)
		{
			alert("You can't book more than 21 nights");
			noOfNights = 21;
			document.getElementById('noOfNights').selectedIndex = noOfNights-1;
			setHotelCheckoutDate();
			return;
		}
		else{
			if(noOfNights > 0){
				document.getElementById('noOfNights').selectedIndex = noOfNights-1;

   				//setting check out date drop down values

				//getting substring of last two elements of the check out year
				var yearVal = yy2.substring( 2,4);

				//getting the zero index value of depart year drop down
				var selectedZeroYear = document.getElementById('selectRetYear').options [0].value.substring( 2,4);

				var difference = yearVal - selectedZeroYear;

				document.getElementById('selectRetMonth').selectedIndex = mm2;
				document.getElementById('selectRetYear').selectedIndex = difference;
				setNoOfRetDays();
				document.getElementById('selectRetDay').selectedIndex = dd2 -1;
			}
			else{
				alert("Date of Return has to be after Date of Depart.");
				setHotelCheckoutDate();
			}

		}


}


function setDates()
{

dArr1 = document.getElementById('checkInDate').value.split('/');

var ciDay = dArr1[0];
var ciMonth = dArr1[1];
var ciYear = dArr1[2];

var departureDate = ciYear+ciMonth+ciDay;
document.getElementById('departureDate').value = departureDate;
}

function SetLeftPanel(chkInDate,nights,Rooms){

	document.getElementById('checkInDate').value = chkInDate;
	document.getElementById('noOfNights').selectedIndex = nights -1;
	document.getElementById('noOfRooms').selectedIndex = Rooms -1;
	setHotelCheckoutDate();
}

function changeCheckInDropDowns(){
	document.getElementById('checkInDate').value =document.getElementById('selectDay').options [document.getElementById('selectDay').selectedIndex].value +"/"+document.getElementById('selectMonth').options [document.getElementById('selectMonth').selectedIndex].value+"/"+document.getElementById('selectYear').options [document.getElementById('selectYear').selectedIndex].value;

	setHotelCheckoutDate();

}

function changeCheckOutDropDowns(){
	document.getElementById('checkOutDate').value = document.getElementById('selectRetDay').options [document.getElementById('selectRetDay').selectedIndex].value +"/"+document.getElementById('selectRetMonth').options [document.getElementById('selectRetMonth').selectedIndex].value+"/"+document.getElementById('selectRetYear').options [document.getElementById('selectRetYear').selectedIndex].value;

	setNights();


}

/**
 * This function is used to show the text boxes to insert child ages based on the number of childern.
 * If the corresponding head count is zero text boxes are not displayed.
 * @see: SearchHotel.html
 * @see: Results.html
 */
function showAgesChildren(mc)
{
    var noOfTextBox = "";
    if (!mc)
    {
        mc = '';
    }
    if( window.XMLHttpRequest )
    {
        noOfTextBox = parseInt(document.getElementById(mc + "ChildsRoom1").options[document.getElementById(mc + "ChildsRoom1").selectedIndex].value);
        if( document.all )
        {
            noOfTextBox = parseInt(document.getElementById(mc + "ChildsRoom1").options[document.getElementById(mc + "ChildsRoom1").selectedIndex].innerText);
        }
    }
    else if( window.ActiveXObject )
    {
        noOfTextBox = parseInt(document.getElementById(mc + "ChildsRoom1").options[document.getElementById(mc + "ChildsRoom1").selectedIndex].innerText);
    }
    var ageText = document.getElementById(mc + "ChildAge");

    if( noOfTextBox > 0 )
    {
        for( var i = 1; i < noOfTextBox + 1; i++ )
        {
            var inputBox = document.getElementById(mc + "ChildAge" + i);
            inputBox.style.display = '';
        }
        ageText.style.display = '';
    }
    else
    {
        ageText.style.display = 'none';
    }
    for( var i = noOfTextBox + 1; i < 6; i++ )
    {
        var inputBox = document.getElementById(mc + "ChildAge" + i);
        inputBox.style.display = 'none';
    }
}

/**
 * This function is used to show the text boxes to insert infant ages based on the number of number of infants.
 * If the corresponding head count is zero text boxes are not displayed.
 * @see: SearchHotel.html
 * @see: Results.html
 */
function showAgesInfant(mc)
{
    var noOfTextBox = "";
    if (!mc)
    {
        mc = '';
    }
    if( window.XMLHttpRequest )
    {
        noOfTextBox = parseInt(document.getElementById(mc + "InfantsRoom1").options[document.getElementById(mc + "InfantsRoom1").selectedIndex].value);
        if( document.all )
        {
            noOfTextBox = parseInt(document.getElementById(mc + "InfantsRoom1").options[document.getElementById(mc + "InfantsRoom1").selectedIndex].innerText);
        }
    }
    else if( window.ActiveXObject )
    {
        noOfTextBox = parseInt(document.getElementById(mc + "InfantsRoom1").options[document.getElementById(mc + "InfantsRoom1").selectedIndex].innerText);
    }
    var ageText = document.getElementById(mc + "InfantAge");
    if( noOfTextBox > 0 )
    {
        for( var i = 1; i < noOfTextBox + 1; i++ )
        {
            var inputBox = document.getElementById(mc + "InfantAge" + i);
            inputBox.style.display = '';
        }
        ageText.style.display = '';
    }
    else
    {
        ageText.style.display = 'none';
    }
    for( var i = noOfTextBox + 1; i < 3; i++ )
    {
        var inputBox = document.getElementById(mc + "InfantAge" + i);
        inputBox.style.display = 'none';
    }
}

/**
 * This function is used to validate traveller's ages in the search form. This checks the numer of childs and infants and validate with the number of ages entered.
 * @see: SearchHotel.html
 * @see: Results.html
 */
function validateTravellerAges(mc)
{
	var childCount =  parseInt(document.getElementById(mc + "ChildsRoom1").options[document.getElementById(mc + "ChildsRoom1").selectedIndex].value);
	var agesArr = [];
	for(var i=1;i<=childCount;i++)
	{
		var age = document.getElementById(mc+ "child" + i).value;//eval("document.FlightHotel.child" + i + ".value" );
		if (age == "" || isNaN(age))
		{
			alert("Please enter correct child ages");
			return false;
		}

		else
		{
			agesArr.push(age);
		}
	}
    var infantCount =  parseInt(document.getElementById(mc + "InfantsRoom1").options[document.getElementById(mc+ "InfantsRoom1").selectedIndex].value);
	var infantAgesArr = [];
	for(var i=1;i<=infantCount;i++)
	{
		var age = document.getElementById(mc + "infant" + i).value;//eval("document.FlightHotel.child" + i + ".value" );
		if (age == "" || isNaN(age))
		{
			alert("Please enter correct infant ages");
			return false;
		}
        if (parseInt(age) > 24)
        {
            alert("Infant age should be less than 24 months")
            return false;
        }
        else
		{
			infantAgesArr.push(age);
		}
	}
    if(agesArr.length != childCount || infantAgesArr.length != infantCount)
	{
		alert("Please enter ages for all the children");
		return false;
	}
	else
	{
		return true;
	}
}

/**
 * This method is used to validate the city name and hotel name. If the both of them are empty this returns false.
 */
function validateCityAndHotel()
{
    var city = document.getElementById("city").value;
    var hotelName = document.getElementById("hotelName1").value;
    if( city.length == 0 && hotelName.length == 0 )
    {
        alert("Both hotel name and city cannot be empty");
        return false;
    }
    else
    {
        return true;
    }
}


function ShowDepartDate(){
   var checkInDate = document.getElementById('checkInDate').value;
   dd = checkInDate.split("/")[0];
   mm = checkInDate.split("/")[1];
   yy = checkInDate.split("/")[2];
   document.getElementById('departureDate').value = yy + mm +dd;
}

function validateFields(mc, noOfCenters)
{
    if (mc.indexOf('mc') > -1)
    {
        for (var i = 1; i <= noOfCenters; i++)
        {
            if (document.getElementById(mc + 'city' + i).options[document.getElementById(mc + 'city' + i).selectedIndex].value == "" && document.getElementById(mc + 'hotelName' + i).value == "")
            {
                alert("Select a city or hotel name for the Centre " + i);
                return false;
            }
            if (document.getElementById(mc + 'checkInDate' + i).value == "")
            {
                alert("Enter a date for the Centre " + i);
                return false;
            }
        }
        return true;
    }
    else
    {
        if (document.getElementById(mc + 'city').options[document.getElementById(mc + 'city').selectedIndex].value == "" && document.getElementById(mc + 'hotelName1').value == "")
        {
            alert("Select a city or hotel name");
            return false;
        }
        if (document.getElementById(mc + 'checkInDate').value == "")
        {
            alert("Enter a date");
            return false;
        }
        return true;
    }
}

//Lasitha Gunawardena - 24112009
//Show/hide tabs

function showHtl()
{
	//Hotel tab
	var htab = document.getElementById("hotelTab");
	//Apartment tab
	var atab = document.getElementById("apartmentTab");

	htab.className = "enableTab";
	atab.className = "disableTab";

	//show hotel forms
	document.getElementById("hotelDiv").style.display = "";
	//Hide apartment forms
	document.getElementById("apartmentDiv").style.display = "none";
	//Update type
	document.getElementById("type").value = "HTL";
}

function showApt()
{
	//Hotel tab
	var htab = document.getElementById("hotelTab");
	//Apartment tab
	var atab = document.getElementById("apartmentTab");

	htab.className = "disableTab";
	atab.className = "enableTab";

	//show hotel forms
	document.getElementById("hotelDiv").style.display = "none";
	//Hide apartment forms
	document.getElementById("apartmentDiv").style.display = "";
	//Update type
	document.getElementById("type").value = "APT";
}


/**
 * Used to change the displaying room blocks.
 * @para object Room select element.
 */
function changeNumerOfRooms(object)
{
    var noRoomsToDisplay = parseFloat(object.value);
    for (var x = 1; x <= noRoomsToDisplay; x++)
    {
        document.getElementById('tblRoom' + x).style.display = "";
    }
    for (var x = noRoomsToDisplay + 1; x <= 6; x++)
    {
        document.getElementById('tblRoom' + x).style.display = "none";
    }
}

function showAgeBox( type, obj, total )
{
    var roomNumber = obj.id.substring(obj.id.length - 1, obj.id.length);
    var numberOfAgesToShow = parseFloat(obj.value);

    for( var x = 1; x <= numberOfAgesToShow; x++ )
    {
        document.getElementById(type + roomNumber + "_" + x).style.display = "";
    }
    for( var x = (numberOfAgesToShow + 1); x <= total; x++ )
    {
        document.getElementById(type + roomNumber + "_" + x).style.display = "none";
    }

    if( numberOfAgesToShow > 0 )
    {
        document.getElementById("AgeTr" + roomNumber).style.display = "";
    }

    if( numberOfAgesToShow == 0 )
    {
        document.getElementById(type + "Heading" + roomNumber).style.display = "none";
        if(type.indexOf('ChildAge') > -1)
        {
            if(document.getElementById('InfantsRoom' + roomNumber).value == 0)
            {
                document.getElementById("AgeTr" + roomNumber).style.display = "none";
            }
        }
        else if(type.indexOf('InfantAge') > -1)
        {
            if(document.getElementById('ChildsRoom' + roomNumber).value == 0)
            {
                document.getElementById("AgeTr" + roomNumber).style.display = "none";
            }
        }
    }
    else
    {
        document.getElementById(type + "Heading" + roomNumber).style.display = "";
    }

}

/**
 * This function is used to validate traveller's ages in the search form. This checks the numer of childs and infants and validate with the number of ages entered.
 * @see: SearchHotel.html
 * @see: Results.html
 */
function validateTravellerAgesRoomWise()
{
    var roomCount = document.getElementById('rooms').value;
    if(roomCount.length == 0 || isNaN(roomCount))
    {
        alert("Please enter correct number of rooms");
        document.getElementById('rooms').focus();
        return false;
    }

    var nights = document.getElementById("NoOfNights").value;
    if(nights.length == 0 || isNaN(nights) || parseFloat(nights) == 0)
    {
        alert("Please enter correct number of nights");
        document.getElementById('NoOfNights').focus();
        return false;
    }

    for( var x = 1; x <= roomCount; x++ )
    {
        var childCount = parseInt(document.getElementById("ChildsRoom" + x).value);
        var agesArr = [];
        for( var i = 1; i <= childCount; i++ )
        {
            var age = document.getElementById("child" + x + "_" + i).value;
            if( age == "" || isNaN(age) || parseInt(age) < 2 || parseInt(age) > 12 )
            {
                alert("Please enter correct child ages");
                document.getElementById("child" + x + "_" + i).focus();
                return false;
            }
            else
            {
                agesArr.push(age);
            }
        }

        var infantCount = parseInt(document.getElementById("InfantsRoom" + x).value);
        var infantAgesArr = [];
        for( var i = 1; i <= infantCount; i++ )
        {
            var age = document.getElementById("infant" + x + "_" + i).value;
            if( age == "" || isNaN(age) )
            {
                alert("Please enter correct infant ages");
                document.getElementById("infant" + x + "_" + i).focus();
                return false;
            }
            if( parseInt(age) > 24 )
            {
                alert("Infant age should be less than 24 months");
                document.getElementById("infant" + x + "_" + i).focus();
                return false;
            }
            else
            {
                infantAgesArr.push(age);
            }
        }
        if( agesArr.length != childCount || infantAgesArr.length != infantCount )
        {
            alert("Please enter ages for all the children");
            return false;
        }
    }
    return true;
}


function showHotelCheckInCalendarMultiCenter(dateValueField, dateImage)
{
   showCal(dateValueField, dateImage,'',calDis(),EndDate(),'');
}


/**
 * This function is used to validate traveller's ages in the search form. This checks the numer of childs and infants and validate with the number of ages entered.
 * @see: SearchHotel.html
 * @see: Results.html
 */
function validateTravellerAgesRoomWiseMultiCenter()
{
    var roomCount = parseInt(document.getElementById('rooms').options [document.getElementById('rooms').selectedIndex].value) ;
    if(roomCount.length == 0 || isNaN(roomCount))
    {
        alert("Please enter correct number of rooms");
        document.getElementById('rooms').focus();
        return false;
    }
    for( var x = 1; x <= roomCount; x++ )
    {
        var childCount = parseInt(document.getElementById("ChildsRoom" + x).value);
        var agesArr = [];
        for( var i = 1; i <= childCount; i++ )
        {
            var age = document.getElementById("child" + x + "_" + i).value;
            if( age == "" || isNaN(age) || parseInt(age) < 2 || parseInt(age) > 12 )
            {
                alert("Please enter correct child ages");
                document.getElementById("child" + x + "_" + i).focus();
                return false;
            }
            else
            {
                agesArr.push(age);
            }
        }

        var infantCount = parseInt(document.getElementById("InfantsRoom" + x).value);
        var infantAgesArr = [];
        for( var i = 1; i <= infantCount; i++ )
        {
            var age = document.getElementById("infant" + x + "_" + i).value;
            if( age == "" || isNaN(age) )
            {
                alert("Please enter correct infant ages");
                document.getElementById("infant" + x + "_" + i).focus();
                return false;
            }
            if( parseInt(age) > 24 )
            {
                alert("Infant age should be less than 24 months");
                document.getElementById("infant" + x + "_" + i).focus();
                return false;
            }
            else
            {
                infantAgesArr.push(age);
            }
        }
        if( agesArr.length != childCount || infantAgesArr.length != infantCount )
        {
            alert("Please enter ages for all the children");
            return false;
        }
    }
    return true;
}