//

var DateArray;
var dateToday = new Date();
var thisYear   = dateToday.getFullYear();
var nextYear	 = dateToday.getFullYear() + 1;
var thisMonth = dateToday.getMonth() + 1;
var thisDate   = dateToday.getDate();

// NOW FIND OUT HOW MANY DAYS ARE IN EACH MONTH DEPENDING ON WHETHER THE CURRENT YEAR IS A LEAP YEAR OR NOT
if (thisYear % 4 == 0){
	var DateArray = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
}
else {
	var DateArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
}

// Updated by Kamran
// Made generic by passing dependencies in parameters
function changeDate(DepDay,DepMonthYear,RetDay,RetMonthYear) 
{
	dateToday = new Date();
	thisMonth = dateToday.getMonth() + 1;
	thisDate   = dateToday.getDate();
	thisYear   = dateToday.getFullYear();

	departDay = DepDay.selectedIndex
	departMonthYear = DepMonthYear.value
	returnDay = RetDay.selectedIndex
	returnMonthYear = RetMonthYear.value
	
	// BUILD AN ARRAY OF THE MONTH&YEAR VALUES
	var MonthArray = new Array();
	
	for (i=thisMonth;i<=12;i++) {
			MonthArray[i] = i.toString()+'-'+thisYear.toString();
	}
	
	for (i=1;i<thisMonth;i++) {
			MonthArray[i] = i.toString()+'-'+(parseInt(thisYear,10)+1).toString();
	}
	
	// GET CHOSEN DEPARTURE MONTH NUMBER & MAX DAYS IN THAT MONTH
	if (departMonthYear.length==7)
		monthNumber = departMonthYear.substr(0,2);
	else
		monthNumber = departMonthYear.substr(0,1);

	maxDays = DateArray[monthNumber-1];
	if (departDay + 14 >= maxDays){
		RetDay.selectedIndex = ((departDay-maxDays) + 14);
		if (departMonthYear.substr(0,2) == '12'){
			//thisYear = parseInt(thisYear,10)+1
			//departMonthYear = (parseInt(thisYear,10)+1).toString() + '01';
			RetMonthYear.value = MonthArray[1];
		} else {
			RetMonthYear.value = MonthArray[parseInt(departMonthYear.substr(0,2),10)+1];
		}
	}
	else if (departDay + 14 < maxDays){
		RetDay.selectedIndex = departDay + 14;
		RetMonthYear.value = MonthArray[parseInt(departMonthYear.substr(0,2),10)];
	}
}


//==============================================================================
// THIS SECTION GETS CURRENT DATE VALUES AND BUILDS ARRAY OF DATES FOR 12 MONTHS
//==============================================================================

//tomorrowDate = dateToday.getDate()+14;

var MonthArray = new Array();

function writemonths() {

	for (i=thisMonth;i<=12;i++) {
				document.write ('<option value="' +i.toString() + '-' + thisYear.toString() + '">'  + MonthName[i.toString()] + ' ' + (thisYear.toString()).slice(2) +  '</option>');
	}
	
	for (i=1;i<thisMonth;i++) {
				document.write ('<option value="' +i.toString() + '-' + (nextYear).toString() + '">'  + MonthName[i.toString()] + ' ' + (nextYear.toString()).slice(2) +  '</option>');
	}
}

var MonthName = new Array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

/**
 * @author Kamran
 * Following function initializes the departure(14 days ahead of today) and return dates with 14 day diff
 */
function setDates(depD,depMY,retD,retMY){

	if(dateToday.getDate()+14>DateArray[dateToday.getMonth()]){
		depD.selectedIndex=dateToday.getDate()+14-DateArray[dateToday.getMonth()]-1;

		if(dateToday.getMonth()>10){
			var m=dateToday.getMonth()-11;
			var y=dateToday.getYear()+1;
			
			depMY.value=(m+1)+"-"+y;
		}
		else{
			depMY.value=(dateToday.getMonth()+2)+"-"+dateToday.getYear();
		}
	}
	else{
		depD.selectedIndex=dateToday.getDate()+14-1;
		depMY.value=(dateToday.getMonth()+1)+"-"+dateToday.getYear();
	}



	changeDate(depD,depMY,retD,retMY);
}

// Updated by Kamran
// Made generic by passing dependencies in parameters
function checkDate(depD,depMY,retD,retMY) {
	
	SelDay = depD.options[depD.selectedIndex].value;
	l = (depMY.options[depMY.selectedIndex].value).length;
	if (l==7)
	{
		SelMonth = (depMY.options[depMY.selectedIndex].value).slice(0,2);
		SelYear = (depMY.options[depMY.selectedIndex].value).slice(3,7);
	}
	else // if l==6
	{
		SelMonth = (depMY.options[depMY.selectedIndex].value).slice(0,1);
		SelYear = (depMY.options[depMY.selectedIndex].value).slice(2,6);
	}
	
	LeapYear = SelYear % 4;

	if (LeapYear == 0) {
		DateArray = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
	} else {
		DateArray = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	}

	if (SelDay > DateArray[SelMonth]) {
		alert("You have selected an invalid departure date. Please check and try again");
		return false;
	} else {
		// DEP DATE IS OK - CHECK RETURN DATE
		SelDay = retD.options[retD.selectedIndex].value;
		SelMonth = Math.abs((retMY.options[retMY.selectedIndex].value).slice(0,2));
		SelYear = (retMY.options[retMY.selectedIndex].value).slice(2,6);

		LeapYear = SelYear % 4;

		if (LeapYear == 0) {
			DateArray = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
		} else {
			DateArray = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
		}

		if (SelDay > DateArray[SelMonth]) {
			alert("You have selected an invalid return date. Please check and try again");
			return false;
		} else {
			// DATES CHECK OUT OK
			return true;
		}
	}
}

/**
 * @author Kamran
 * Flight finder form validator
 */
function validateFFF(code,ttype,depD,depMY,retD,retMY,othercity){
	if ((code.value != 'U/L' && code.value != '0') || othercity.value != "") {
		if (!checkDate(depD,depMY,retD,retMY)) {
			return false;
		}
	} else {
		alert('Please choose a destination before proceeding');
		return false;
	}
	
	if (ttype[0].checked) {
		
		var dd=new Date(depMY[depMY.selectedIndex].value.split("-")[1],
						depMY[depMY.selectedIndex].value.split("-")[0],
						depD[depD.selectedIndex].value,
						0,0,0,0);
		var rd=new Date(retMY[retMY.selectedIndex].value.split("-")[1],
						retMY[retMY.selectedIndex].value.split("-")[0],
						retD[retD.selectedIndex].value,
						0,0,0,0);

		if (rd<dd) {
			alert('Return date is before departure date.\nPlease correct and try again.')
			return false;
		}
	}
	
	return true;
}

/**
 * @author German
 * Flight finder form validator (created for job 13625)
 */
function validateFFFCalendar(code, ttype, depDate, retDate, othercity)
{
	if ((code.value != 'U/L' && code.value != '0') || othercity.value != "")
	{
		if (!checkDates(depDate, "Depart date", retDate, "Return date", !ttype[0].checked))
		{
			return false;
		}
	}
	else
	{
		alert('Please choose a destination before proceeding');
		
		return false;
	}

	return true;
}
