﻿/**
*initialize some startup value
*
*This funciton will be called by onload()
*/
var CITIES;
var ROUTE_TABLE;

function initBooking()
{	
    CITIES      = eval($F('hdcities')); 
    ROUTE_TABLE = eval("("+$F('hdroute_table')+")");

    //starting origin city list
	fillCities(CITIES, $('cboOrigin'));
	fillCities(ROUTE_TABLE[$('cboOrigin').value], $('cboDestination'));
	
	/*
	* create calendar
	*/
	this.today = new Date();
	var thisMonth = this.today.getMonth();
	var thisDay = this.today.getDate();
	var thisYear = this.today.getFullYear();
	
	initDate($('tmpboardDate'),thisDay,thisMonth+1,thisYear,thisDay); 
	initDate($('tmpretDate'),thisDay,thisMonth+1,thisYear,thisDay); 
	
	initMonth($('tmpboardMonth'),thisDay,thisMonth+1,thisYear,(formatdate(thisMonth+1)+thisYear)); 
	initMonth($('tmpretMonth'),thisDay,thisMonth+1,thisYear,(formatdate(thisMonth+1)+thisYear)); 
}

/**
*
*@citiies		"array"		array of cities [code/name] object
*@ddl			"object"	drop down list
*/
function fillCities(cities, ddl)
{
	
	while (ddl.length>0)
	{
		ddl.remove(0);
	}

	for(var i=0;i<cities.length; i++)
	{
		var airportCode = cities[i].code;
		var airportName = cities[i].name;


		var newOption=document.createElement('option');
		newOption.value = airportCode;
		newOption.text  = airportName;
			
		try
		{
			ddl.add(newOption, null);
		}
		catch(ex)
		{
			ddl.add(newOption);
		}
	}

	ddl.selectedIndex = 0;
}

/**
* Origin change event
* 
*@cboOrigin		"object"  dropdown list
*@cboDestination "string"	id of destination dropdown
*/
function ChangeOrigin(cboOrigin, cboDestination)
{
	//find destination from JSON's route table
	var destinations = ROUTE_TABLE[cboOrigin.value];

	//remove current city from destination
	while ($('cboDestination').length>0)
	{
		$('cboDestination').remove(0);
	}

	for(var i=0;i<destinations.length; i++)
	{
		var airportCode = destinations[i].code;
		var airportName = destinations[i].name;


		var newOption=document.createElement('option');
		newOption.value = airportCode;
		newOption.text  = airportName;
			
		try
		{
			$('cboDestination').add(newOption, null);
		}
		catch(ex)
		{
			$('cboDestination').add(newOption);
		}
		
	}
	
	//mark selected
	$('cboDestination').selectedIndex = 0;
	//update infant, child control
	//EnableChildInfant(cboOrigin.value, $('cboDestination').value);
	
}

/**
*
*@dest		"object"	dropdown
*@origin	"string"	id of origin
*/
function OnDestinationChange(dest, origin)
{
	//EnableChildInfant($(origin).value, dest.value);
}

function Compare2Date()
{
	var mmyyyy1 = $F('tmpboardMonth');
	var mmyyyy2 = $F('tmpretMonth');
	// if return > 0 is wrong date
    var strDay1 = $F('tmpboardDate')*1;
    var strMonth1 = parseInt(mmyyyy1.substr(0, 2),10)*1;
    var strYear1 = parseInt(mmyyyy1.substr(3, 4),10)*1;
    
    var strDay2 = $F('tmpretDate')*1;
    var strMonth2 = parseInt(mmyyyy2.substr(0, 2),10)*1;
    var strYear2 = parseInt(mmyyyy2.substr(3, 4),10)*1;
          
	if(strYear1>strYear2)
		return 1;
	else if(strYear1<strYear2)
		return -1;
	else if(strYear1==strYear2){
		if(strMonth1>strMonth2)
			return 1;
		else if(strMonth1<strMonth2)
			return -1;
		else {
			if(strDay1>strDay2)
				return 1;
			else if(strDay1<strDay2)
				return -1;
			else
				return 0;
		}
	}else
		return 1;
}

/*
*for change date formate 2 digits
*/
function formatdate(obj){
	if (obj<10) return '0'+ obj;
	return obj;
}

function initDate(objday,d,m,y,selectdate){
	
	var sindex=0;
	var sdate=1;
	var edate=1;

	this.today = new Date();
	var thisMonth = this.today.getMonth()+1;
	var thisDay = this.today.getDate();
	var thisYear = this.today.getFullYear();
	
	if (m==thisMonth && y==thisYear){
		sdate=thisDay;
	}
	
	
	var maxDay = InvDate.getDate();
	var maxMonth=InvDate.getMonth()+1;
	var maxYear=InvDate.getFullYear();

	edate = getDaysInMonth(m,y);
	
	if (m==maxMonth && y==maxYear){
		edate=maxDay;
	}
	
	while (objday.length>0)
	{
		objday.remove(0);
	}
	
	for(var i=sdate;i<edate+1;i++)
	{
		var newOption=document.createElement('option');
		newOption.value=i;

		newOption.text=i;
			
		try
		{
			objday.add(newOption, null);
		}
		catch(ex)
		{
			objday.add(newOption);
		}
		if (i==selectdate) sindex=i-sdate;
	}
	
	objday.selectedIndex = sindex;
}

function initMonth(objmonth,d,m,y,selectmonth){
	var mindex=0;
	var thPlus=0;
		
	this.today = new Date();
	var thisMonth = this.today.getMonth()+1;
	var thisYear = this.today.getFullYear();

	var mm=thisMonth;
	var yyyy=thisYear;
	
			
	var maxDay = InvDate.getDate();
	var maxMonth=InvDate.getMonth()+1;
	var maxYear=InvDate.getFullYear();

	
	while (objmonth.length>0)
	{
		objmonth.remove(0);
	}
	
	for(var i=0;i<8;i++)
	{
		if (mm>12){
			 mm = 1;
			 yyyy=yyyy+1;
		}
		
		var newOption=document.createElement('option');
		newOption.value=formatdate(mm)+"/"+yyyy;
		newOption.text=strMonth[mm-1]+'-'+(yyyy+thPlus);
		
		if (yyyy<maxYear){
			try
			{
				objmonth.add(newOption, null);
			}
			catch(ex)
			{
				objmonth.add(newOption);
			}
		}else if (yyyy==maxYear){
			if (mm<=maxMonth){
				try
				{
					objmonth.add(newOption, null);
				}
				catch(ex)
				{
					objmonth.add(newOption);
				}
			}
		}
		
		//alert('xxx : '+selectmonth);
		//alert('yyy : '+(formatdate(mm)+yyyy));
		if ((formatdate(mm)+yyyy)==selectmonth) mindex=i;
		
		++mm;
	}
	
	objmonth.selectedIndex = mindex;
}

function OnDayChange(d,type){
	if (type=='D')
	{
		$('boardDate').value = $F('tmpboardMonth').substr(0, 2)+ '/' + formatdate(d) + '/' + $F('tmpboardMonth').substr(3, 4);
		var retDate = $('tmpretDate').value;
		if($F('tmpboardMonth').substr(0, 2)*1 >= $F('tmpretMonth').substr(0, 2)*1)
		{
			if(retDate*1 < d*1)
			{
				$('tmpretDate').value = d;
				
				$('returnDate').value = $F('tmpretMonth').substr(0, 2)+ '/' + formatdate(d) + '/' + $F('tmpretMonth').substr(3, 4);
			}
		}
	}
	else
	{
		$('returnDate').value = $F('tmpretMonth').substr(0, 2) + '/' + formatdate(d) + '/' + $F('tmpretMonth').substr(3, 4);
	}
}

//03-2007=mmyyyy
function OnMonthChange(mmyyyy,type){
	if (type=='D'){
		initDate($('tmpboardDate'),$F('tmpboardDate'),parseInt(mmyyyy.substr(0, 2),10),parseInt(mmyyyy.substr(3, 4),10),0);
		$('boardDate').value = mmyyyy.substr(0, 2)+ '/' + formatdate($F('tmpboardDate')) + '/' + mmyyyy.substr(3, 4);
		
		if(parseInt(mmyyyy.substr(0, 2),10)>parseInt($F('tmpretMonth').substr(0, 2)) || parseInt(mmyyyy.substr(3, 4),10)>parseInt($F('tmpretMonth').substr(3, 4))  )
		{
			$('tmpretMonth').value = mmyyyy;
			initDate($('tmpretDate'),$F('tmpretDate'),parseInt(mmyyyy.substr(0, 2),10),parseInt(mmyyyy.substr(3, 4),10),0);
			$('returnDate').value = mmyyyy.substr(0, 2) + '/' + formatdate($F('tmpretDate')) + '/' + mmyyyy.substr(3, 4);
		}
	}
	else{
		initDate($('tmpretDate'),$F('tmpretDate'),parseInt(mmyyyy.substr(0, 2),10),parseInt(mmyyyy.substr(3, 4),10),0);
		$('returnDate').value = mmyyyy.substr(0, 2) + '/' + formatdate($F('tmpretDate')) + '/' + mmyyyy.substr(3, 4);
		
		if(parseInt(mmyyyy.substr(0, 2),10)<parseInt($F('tmpboardMonth').substr(0, 2)) || parseInt(mmyyyy.substr(3, 4),10)<parseInt($F('tmpboardMonth').substr(3, 4))  )
		{
		    $('tmpboardMonth').value = mmyyyy;
		    initDate($('tmpboardDate'),$F('tmpboardDate'),parseInt(mmyyyy.substr(0, 2),10),parseInt(mmyyyy.substr(3, 4),10),0);
			$('boardDate').value = mmyyyy.substr(0, 2) + '/' + formatdate($F('tmpboardDate')) + '/' + mmyyyy.substr(3, 4);
		}
	}	
}

/**
* one-way or roundtrip flight click
*
*/
function OnTypeClick(rdo)
{
	if (rdo.value=="0"){
		//$('returnDate').disabled = true;
		//$('dateLink2').disabled = true;
		$('tmpretDate').disabled = true;		
		$('tmpretMonth').disabled = true;		
		$('imgCalendarReturn').disabled = true;
		$('txtRetDate').disabled = true;
		
	}else{
		//$('returnDate').disabled = false;
		//$('dateLink2').disabled = false;
		$('tmpretDate').disabled = false;		
		$('tmpretMonth').disabled = false;		
		$('imgCalendarReturn').disabled = false;
		$('txtRetDate').disabled = false;
	}
}

/**
* get round trip flag from radio button
*
*/
function getRoundTripFlag()
{
  return radioVal(document.form1.roundtripFlag);
}

/**
*find radio value
*
*/
function radioVal(rdo)
{
	var flag = null;
	//alert('len =: '+rdo.length);
	for(var i=0; i<rdo.length; i++)
	{	
		if(rdo[i].checked == true)
		{
			flag = rdo[i].value;
			break;
		}
	}
	return flag;
}

/**
*
*
*/
var availabilitySvr = {
	
	/**
	*
	*@option	"object"	criteria object
	*/
	search: function(option)
	{
		var pars    =  JSON.stringify(option);
        pars    =   encodeURIComponent(pars)
        //alert(pars);
		window.open("aspx/FlightList.aspx?param="+pars+"","Popup","toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes, width=800,height=600");

	}

}; //eoc

/**
* search button click
*
*  Handle the search event after user fill-in segments's criteria, 
* then click search booking
*/
function OnSearchClick()
{
	//pax number validate
	var noadult = parseInt($F('noofSeats'), 10) 
	var nochild = ($('noofChild').visible())? parseInt($F('noofChild'), 10):0;	
	var noinf   = 0;//($('noofInfant').visible())? parseInt($F('noofInfant'), 10):0;	
	
	if(noadult <= 0)
	{
		alert('At lease one adult is required');
		return;
	}
		
	if( noinf+nochild > noadult)
	{
		//alert('Number of child and infant must be equal or less than number of adult. ');
		alert('An adult can be accompanied only one child or one infant per flight.');
		return;
	}

	//get round  0 = oneway ,1 = round trip
	var rnd  = getRoundTripFlag();
	
	//check depart date and return date
	if (rnd == "1"){
		if (Compare2Date()>0) {
			alert(msgDateErr);
			return;
		}
	}
	
	var seatcount = noadult + nochild;
	
	//call search services
	availabilitySvr.search({
								origin: $F('cboOrigin'), 
								destination: $F('cboDestination'),
								boarddate: $F('boardDate'),
								roundtrip: rnd,
								returndate: ( rnd == "1")?$F('returnDate'):'',
								adult:	noadult,
								child:nochild
							}
							);
	
}

