﻿// JavaScript Document
// Author Christophe Iaïchouchen AKA saturnino pour IMAG'IN productions
// Copyright : aircalin Internationnal
	
var myDepartCal;
var myReturnCal;
var currentDate 	= new Date();
var departDate 		= new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+4);
var returnDate 		= new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+11);
var messages_eng	= Array();
var messages_fre	= Array();
var months			= Array();
var days			= Array();
var newElements		= Array();

messages_fre[0]	=	"La date de retour ne peut être inférieure à la date de départ";
messages_fre[1]	=	"Le nombre de passagers ne peut excéder 9.";
messages_fre[2]	=	"Les villes de départ et d'arrivée ne peuvent être identiques.";
messages_fre[3]	=	"Le nombre de bébés ne peut excéder le nombre d'adultes.";
// 5/5/2009 
messages_fre[4]	=	"- - - Sélectionnez";
messages_fre[5]	=	"Veuillez sélectionner une destination";

messages_eng[0]	=	"Time return can't be lower than time depart";
messages_eng[1]	=	"Number of passengers can't exceed 9.";
messages_eng[2]	=	"From and To can't be the same.";
messages_eng[3]	=	"Number of infants can't exceed number of adults.";
// 5/5/2009
messages_eng[4]	=	"- - - - Select";
messages_eng[5]	=	"Please select a destination";


function getSectedIndexByValue(obj, value)
{
	for(var i = 0 ; i<obj.options.length; i++)
	{
		if(obj.options[i].value == value)
		{
			return i;
		}		
	}
	return 0;
}

function initPromos()
{
	if($('promos'))
	$('promos').getElements('li').each(function(item){
			
		if(item.getProperty('id') != null)
		{
			item.addEvent('click', function(event) {
				//alert(item.getProperty('id'));	
				var id 	= item.getProperty('id');
				var tab = id.split('_');
				var i 	= 0;				
				var d	= '';
				var date_promo = new Date();
				
			
				if( item.getElements('span.dest').length >0 && item.getElement('span.dest').getProperty('id') != null )
				{
					d	=	item.getElement('span.dest').getProperty('id').split('date_');
					d	=	d[1].split('-');
				}
				
				for(i; i<city_pairs.length; i++)
				{
					if(city_pairs[i].o_id == tab[2])
					{
						$('B_LOCATION_1').selectedIndex = getSectedIndexByValue($('B_LOCATION_1'), city_pairs[i].o_code);
						if(d!='')
						{									
							date_promo = new Date(d[0], Number(d[1]-1), Number(d[2]) );
							
							if(date_promo <= departDate)
								$('contentpane__departDate').value 	= strpad(departDate.getDate(),2,'0')+'-'+strpad(Number(departDate.getMonth()+1),2,'0')+'-'+departDate.getFullYear();
							else
								$('contentpane__departDate').value 	= strpad(d[2],2,'0')+'-'+strpad(d[1],2,'0')+'-'+d[0];
							
							myDepartCal.changed(myDepartCal.calendars[0]);
							doDateUpdateFromCal(myDepartCal.calendars[0]);
						}
						break;
					}				
				}
				
				onCityDepartChange();
				
				for(i = 0; i<city_pairs.length; i++)
				{
					if(city_pairs[i].d_id == tab[3])
					{
						$('E_LOCATION_1').selectedIndex = getSectedIndexByValue($('E_LOCATION_1'), city_pairs[i].d_code);
						break;
					}				
				}	
				
				if($('bookingSearch')){
					var myElement = $(document.body);
					var myFx = new Fx.Scroll(myElement,{
									wait: false,
									duration: 500,
									offset: {'x': 0, 'y': 0},
									transition: Fx.Transitions.Quad.easeInOut
								}).toTop();

					$('bookingSearch').getElements('fieldset').getFirst('div').getNext('div').highlight('#0068AE', '#fff');
					if( $('COMMERCIAL_FARE_FAMILY_PROMO').getStyle('visibility') != 'hidden')
						$('COMMERCIAL_FARE_FAMILY_PROMO').setProperty('checked','checked');
				}
					
			
			});	
		}
												   
	}.bind(this));
	
	if($('promo') || $('appel'))
	$('content_page').getElements('.tarifs_listing tr').each(function(item){

		item.addEvent('click', function(event) {
			
			
			var id 	= item.getProperty('id');
			var tab = id.split('_');
			var i 	= 0;
			var d	='';
			var date_promo = new Date();
			

			if( item.getElements('span.date_voyage').length >0)
			{
				d	=	item.getElement('span.date_voyage').getProperty('id').split('date_');
				d	=	d[1].split('-');
			}
			
			for(i; i<city_pairs.length; i++)
			{
				if(city_pairs[i].o_id == tab[2])
				{
					$('B_LOCATION_1').selectedIndex = getSectedIndexByValue($('B_LOCATION_1'), city_pairs[i].o_code);
					if(d!='')
					{
						date_promo = new Date(d[0], Number(d[1]-1), Number(d[2]) );
							
							if(date_promo <= departDate)
								$('contentpane__departDate').value 	= strpad(departDate.getDate(),2,'0')+'-'+strpad(Number(departDate.getMonth()+1),2,'0')+'-'+departDate.getFullYear();
							else
								$('contentpane__departDate').value 	= strpad(d[2],2,'0')+'-'+strpad(d[1],2,'0')+'-'+d[0];
						
						myDepartCal.changed(myDepartCal.calendars[0]);
						doDateUpdateFromCal(myDepartCal.calendars[0]);
					}
					break;
				}				
			}
			
			onCityDepartChange();
			
			for(i = 0; i<city_pairs.length; i++)
			{
				if(city_pairs[i].d_id == tab[3])
				{
					$('E_LOCATION_1').selectedIndex = getSectedIndexByValue($('E_LOCATION_1'), city_pairs[i].d_code);
					break;
				}				
			}
			
			if($('bookingSearch'))
			{
				var myElement = $(document.body);
					var myFx = new Fx.Scroll(myElement,{
									wait: false,
									duration: 500,
									offset: {'x': 0, 'y': 0},
									transition: Fx.Transitions.Quad.easeInOut
								}).toTop();

				$('bookingSearch').getElements('fieldset').getFirst('div').getNext('div').highlight('#0068AE', '#fff');
				if( $('COMMERCIAL_FARE_FAMILY_PROMO').getStyle('visibility') != 'hidden')
						$('COMMERCIAL_FARE_FAMILY_PROMO').setProperty('checked','checked');
			}
			

			
		});	
												   
	}.bind(this));				
}
function onTripTypeChange(event)
{
	if(event.target.getProperty('id') == 'R_TRIP_TYPE')
	{
		$('contentpane__returnDate').setStyle('opacity',1);
		$('contentpane__returnDate').setProperty('disabled','');
		$('return_area').getElement('button').setProperty('disabled','');
		$('return_area').getElement('button').setStyle('opacity',1);
		$('B_DATE_2').setProperty('disabled','');
	}else{
		$('contentpane__returnDate').setStyle('opacity',.5);
		$('contentpane__returnDate').setProperty('disabled','disabled');
		$('return_area').getElement('button').setProperty('disabled','disabled');
		$('return_area').getElement('button').setStyle('opacity',.5);
		$('B_DATE_2').setProperty('disabled','disabled');
	}		
}

function doDateUpdateFromCal(cal)
{
	// on renseigne le select jour
	var sens			=	(cal.el.name == 'contentpane__departDate')? 'depart' : 'return';
	var alpha			=	(cal.el.name == 'contentpane__departDate')? '1' : '2';
	var dateinput		=	$('contentpane__'+sens+'Date');
	var date			= 	eval(sens+'Date');
	var ddcal			=	$('contentpane__'+sens+'Date');

	date 						= 	new Date(cal.val.getFullYear(),cal.val.getMonth(),cal.val.getDate());
	dateinput.value				=	date.getDate()+' '+months[date.getMonth()]+' '+date.getFullYear();
	$('B_DATE_'+alpha).value 	= 	date.getFullYear() +''+ strpad(Number(date.getMonth()+1),2,'0') +''+ strpad(date.getDate(),2,'0')+'0000';
	
	if(sens == 'depart')
	{
		var t				= ( currentDate.getTime()+365*24*60*60*1000 >= Number(date.getTime()+(3600*24*7*1000)) )? Number(date.getTime()+(3600*24*7*1000)) : currentDate.getTime()+365*24*60*60*1000 ;
		date_r				= new Date();
		date_r.setTime(t);
		var cal 			= myReturnCal.calendars[0];
		
		$('contentpane__returnDate').value	=	strpad(date_r.getDate(),2,'0')+'-'+strpad(Number(date_r.getMonth()+1),2,'0')+'-'+date_r.getFullYear();
		myReturnCal.changed(cal);
		
		$('contentpane__returnDate').value	=	date_r.getDate()+' '+months[date_r.getMonth()]+' '+date_r.getFullYear();
		$('B_DATE_2').value 				= 	date_r.getFullYear() +''+ strpad(Number(date_r.getMonth()+1),2,'0') +''+ strpad(date_r.getDate(),2,'0')+'0000';		
	}

}
function initBookingSearch()
{
	//============================================================================================================
	//			COORECTION BUG http://www.webmasterworld.com/firefox_browser/3094500.htm
	//============================================================================================================
	/*$(document.body).getElements('input.radio').each(function(item,i)
	{ 	
		if(item.getProperty('checked'))
			item.fireEvent('click'); 
		
	}.bind(this));
	*/
	$('DATE_RANGE_VALUE_FLEX').fireEvent('click'); 
	//============================================================================================================
	//			COORECTION BUG http://www.webmasterworld.com/firefox_browser/3094500.htm
	//============================================================================================================
	
	
	switch(locale)
	{
		case	'fre'	:	months 	= ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Déc'];
							days 	= ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'];
		break;
		case	'eng'	:	months 	= ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
							days 	= ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
		break;
	}
	
	//============================================================================================================
	//			ALLER
	//============================================================================================================
	$('contentpane__departDate').value	=	strpad(departDate.getDate(),2,'0')+'-'+strpad(Number(departDate.getMonth()+1),2,'0')+'-'+departDate.getFullYear();
	myDepartCal = new Calendar({ contentpane__departDate: 'd-m-Y' }, { 	direction: 3,
							   											//end: departDate.getDate()+365,
																		end: currentDate.getTime()+365*24*60*60*1000,
							   											tweak: { x: 10, y: -35 },
																		onClicked:doDateUpdateFromCal,
																		onHideComplete:onHideComplete,
																		onShowStart:onShowStart,
																		months : months,
																		days : days,
																		offset : 1
																} 
								);	
	$('contentpane__departDate').value	=	departDate.getDate()+' '+months[departDate.getMonth()]+' '+departDate.getFullYear();
	$('B_DATE_1').value 				= 	departDate.getFullYear() +''+ strpad(Number(departDate.getMonth()+1),2,'0') +''+ strpad(departDate.getDate(),2,'0')+'0000';
	
	
	
															
	//============================================================================================================
	//			RETOUR
	//============================================================================================================
	$('contentpane__returnDate').value	=	strpad(returnDate.getDate(),2,'0')+'-'+strpad(Number(returnDate.getMonth()+1),2,'0')+'-'+returnDate.getFullYear();
	myReturnCal = new Calendar({ contentpane__returnDate: 'd-m-Y' }, { 	direction: 3,
							   											//end: returnDate.getDate()+365,
																		end: currentDate.getTime()+365*24*60*60*1000,
							   											tweak: { x: 10, y: -35 },	
																		onClicked:doDateUpdateFromCal,																
																		months : months,
																		days : days,
																		offset : 1
																} 
								);	
	$('contentpane__returnDate').value	=	returnDate.getDate()+' '+months[returnDate.getMonth()]+' '+returnDate.getFullYear();
	$('B_DATE_2').value 				= 	returnDate.getFullYear() +''+ strpad(Number(returnDate.getMonth()+1),2,'0') +''+ strpad(returnDate.getDate(),2,'0')+'0000';
	
	
	//============================================================================================================
	//			EVENTS
	//============================================================================================================
	
	// citypairs	
	$('B_LOCATION_1').addEvent('change', onCityDepartChange); 
	initCityDepart();
	// aller retour 
	$('R_TRIP_TYPE').addEvent('click', onTripTypeChange); 
	$('O_TRIP_TYPE').addEvent('click', onTripTypeChange); 
	// submit
	$('bookingSearch').addEvent('submit', onSubmitBookingSearch); 
	/**/
	
	
	if($('bookingSearchSubmit'))
	{
		$('bookingSearchSubmit').addEvent('mouseenter', function(event){
			event.target.setStyle('background-image','url(../img/design/btn-rechercher-2.gif)');
		 }); 
		$('bookingSearchSubmit').addEvent('mouseleave', function(event){
			event.target.setStyle('background-image','url(../img/design/btn-rechercher-1.gif)');
		 }); 
	}
	
	
}
function onShowStart(cal){
	//alert(cal);
}
function onHideComplete(element)
{		
	// on renseigne le select jour
	var date										= 	new Date($('B_DATE_1').value.substr(0,4) , Number($('B_DATE_1').value.substr(4,2)-1), $('B_DATE_1').value.substr(6,2) );
	$('contentpane__departDate').value				=	strpad(date.getDate(),2,'0')+'-'+strpad(Number(date.getMonth()+1),2,'0')+'-'+date.getFullYear();
	myDepartCal.changed(myDepartCal.calendars[0]);
	$('contentpane__departDate').value				=	date.getDate()+' '+months[date.getMonth()]+' '+date.getFullYear();
	
	date											= 	new Date($('B_DATE_2').value.substr(0,4) , Number($('B_DATE_2').value.substr(4,2)-1), $('B_DATE_2').value.substr(6,2) );
	$('contentpane__returnDate').value				=	strpad(date.getDate(),2,'0')+'-'+strpad(Number(date.getMonth()+1),2,'0')+'-'+date.getFullYear();
	myReturnCal.changed(myReturnCal.calendars[0]);
	$('contentpane__returnDate').value				=	date.getDate()+' '+months[date.getMonth()]+' '+date.getFullYear();	
}

function sortSelect(s){
	var liste	= new Array();
	 
	for(i=0; i<s.options.length; i++)
	{
		liste[i]	=	new Array();
		liste[i][0]	=	s.options[i].text;
		liste[i][1]	=	s.options[i].value;
	}
	
	liste	=	liste.sort();
	 
	for(i=0; i<s.options.length; i++)
	{
		s.options[i].text	=	liste[i][0];
		s.options[i].value	=	liste[i][1];
	}
}



function initCityDepart()
{		
	sortSelect($('B_LOCATION_1'));
	onCityDepartChange('');
	
	var temp		=	Array();
	var BL			=	$('B_LOCATION_1');
	
	for (i = 0; i < BL.options.length; i++)
	{
		temp.push({text:BL.options[i].text,value:BL.options[i].value});
	}
	
	if(city_pairs_priority.length>0)
	{
		BL.empty();
		for (i = 0; i < city_pairs_priority.length; i++)
		{		
			BL.options[BL.options.length] = new Option( city_pairs_priority[i]['o_name'], city_pairs_priority[i]['o_code'] );		
		}
	}
	
	sortSelect(BL);
	if(city_pairs_priority.length>0)
	{
		if(BL.options.length > 0)
		{
			BL.options[BL.options.length] = new Option( '-----------------', '' );	
			for (i = 0; i < temp.length; i++)
			{
				BL.options[BL.options.length] = new Option( temp[i].text, temp[i].value );	
			}
		}
	}
	
	onCityDepartChange('');
}

function onCityDepartChange(event)
{
	/*event = new Event(event);
	event.stop();*/	
	
	var BL			=	$('B_LOCATION_1');
	var EL			=	$('E_LOCATION_1');
	var id			=	BL.options[BL.selectedIndex].value;
	var tmp			= 	Array();
	var keys		=	Array();
	
	EL.empty();	
	for (i = 0; i < city_pairs.length; i++)
	{
		if(city_pairs[i]['o_code'] == id)
		{
				EL.options[EL.options.length] = new Option( city_pairs[i]['d_name'], city_pairs[i]['d_code'] );
		}
	}
	
	// 5/5/2009 (select town)
	EL.options[EL.options.length] 		= 	new Option( eval('messages_'+locale)[4] , '' );	
	
	sortSelect(EL);	
}

function strpad(inputString, chars, padSting)
{
	result = padSting+inputString;
	remFromLeft=result.length-chars;
	return result.substr(remFromLeft);
}

function onSubmitBookingSearch(event)
{
	event = new Event(event);
	
	var isValid = true;
	var form		=	event.target.newFields;form = $('newFields');
	var adults		=	$('contentpane__adults');
	var childs		=	$('contentpane__childs');
	var infants		=	$('contentpane__infants');
	var fromCity	=	$('B_LOCATION_1');
	var toCity		=	$('E_LOCATION_1');
	var passengers	=	1;
	
	for( i = 0; i< newElements.length; i++)
	{
		newElements[i].dispose();
	}
	
	if( toCity.value == '' )
	{
		alert(eval('messages_'+locale)[5]);
		event.stop();
        return false;   
	}
	
	if($('B_DATE_1').value > $('B_DATE_2').value && $('R_TRIP_TYPE').checked==true)
	{
		alert(eval('messages_'+locale)[0]);
		event.stop();
        return false;   
	}
	
	if ( infants.options[infants.selectedIndex].value.toInt() + adults.options[adults.selectedIndex].value.toInt() + childs.options[childs.selectedIndex].value.toInt() > 9) 
	{
       alert(eval('messages_'+locale)[1]);
		event.stop();
        return false;  
	}

	if (fromCity.options[fromCity.selectedIndex].value == toCity.options[toCity.selectedIndex].value ) 
	{
        alert(eval('messages_'+locale)[2]);
		event.stop();
        return false;  
	}

	if(infants.options[infants.selectedIndex].value <= adults.options[adults.selectedIndex].value)
	{	
		for ( i = 0; i < adults.options[adults.selectedIndex].value ; i++)
		{
			var e = new Element('input');
			form.adopt(e);
			e.setProperties({'name':'TRAVELLER_TYPE_'+passengers,'type':'text','value':''});	
			e.value = 'ADT';
			passengers++;
			newElements.push(e);
		}
		
		for ( i = 0; i < childs.options[childs.selectedIndex].value ; i++)
		{
			var e = new Element('input');
			form.adopt(e);
			e.setProperties({'name':'TRAVELLER_TYPE_'+passengers,'type':'text'});	
			e.value = 'CHD';
			passengers++;
			newElements.push(e);
		}
		
		for ( i = 1; i <= infants.options[infants.selectedIndex].value ; i++)
		{
			var e = new Element('input');
			form.adopt(e);
			e.setProperties({'name':'HAS_INFANT_'+i,'type':'text'});	
			e.value = 'TRUE';
			newElements.push(e);
		}
		
		
		
	}else{
		isValid = false;
		alert(eval('messages_'+locale)[3]);
	}	
	
	if($('COMMERCIAL_FARE_FAMILY_PROMO').checked)
	{
		var e = new Element('input');
		form.adopt(e);
		e.setProperties({'name':'COMMERCIAL_FARE_FAMILY_1','type':'text'});	
		e.value = $('COMMERCIAL_FARE_FAMILY_PROMO').value;
		newElements.push(e);
		$('DATE_RANGE_VALUE_1').value = 5;
		$('DATE_RANGE_VALUE_2').value = 5;
	}else{
		var e = new Element('input');
		form.adopt(e);
		e.setProperties({'name':'COMMERCIAL_FARE_FAMILY_1','type':'text'});	
		e.value = $('contentpane__cff1').value;
		newElements.push(e);
		$('DATE_RANGE_VALUE_1').value = 3;
		$('DATE_RANGE_VALUE_2').value = 3;
	}
	
	if($('DATE_RANGE_VALUE_FIXES').checked)
	{
		$('DISPLAY_TYPE').value = $('DATE_RANGE_VALUE_FIXES').value;
	}else if($('DATE_RANGE_VALUE_FLEX').checked)
	{
		$('DISPLAY_TYPE').value = $('DATE_RANGE_VALUE_FLEX').value;
	}

	
	if($('R_TRIP_TYPE').checked == true)
	{
		var e = new Element('input');
		form.adopt(e);
		e.setProperties({'name':'E_LOCATION_2','type':'text'});	
		e.value = $('B_LOCATION_1').value;
		newElements.push(e);
		e = new Element('input');
		form.adopt(e);
		e.setProperties({'name':'B_LOCATION_2','type':'text'});	
		e.value = $('E_LOCATION_1').value;
		newElements.push(e);
	}
	
	
	if(!isValid)
	{
		//$('bookingSearch').removeEvent('submit', onSubmitBookingSearch); 
		event.stop();
		return isValid;	
	}
	
	if(pageTracker)
		pageTracker._linkByPost(event.target);

}
function initFrame()
{
	if( $('flyingblue') )
	{
		$('flyingblue').setProperty('height',"1");	
		$('flyingblue').addEvent('load', function(event) {
			$('flyingblue').setProperty('height',"600");	
			$('flyingblue').getParent().removeClass('preload_frame');
		}.bind(this));
	}else if( $('checkin') )
	{
		$('checkin').setProperty('height',"1");	
		$('checkin').addEvent('load', function(event) {
			$('checkin').setProperty('height',"700");	
			$('checkin').getParent().removeClass('preload_frame');
		}.bind(this));
	}else if($('amadeus'))
	{
		$('amadeus_frameset').setProperty('rows',"300,1");	
		$('amadeus').addEvent('load', function(event) {
			$('amadeus_frameset').setProperty('rows',"1,*");	
		}.bind(this));
	}
}

function init()
{
	initFrame();
	
	if( $('bookingSearch') )
		initBookingSearch();	
		
	if( $('promos') || $('promo') || $('appel'))
		initPromos();
		
	if( $('form_timetable') )
	{
		$('B_LOCATION').addEvent('change', onTimetableCityDepartChange); 
	}
	
	// gestion du logo
	if( $('header') )
		$('header').getElement('img').src = 'img/design/aircalin-logo-'+locale+'.jpg';
	
	/*
	if( Browser.Engine.trident && Browser.Engine.version<5 && $('web_services_bottom_box') )
	{
	}
	else 
	*/
	
	// HACK safari ancien dernier select
	if(Browser.Engine.webkit && $('bookingSearch') )
	{		
		//alert($('contentpane__infants').getParent().getParent());		
		
		/*
		$('contentpane__infants').setStyles({
			//'background-color': '#000000'	
			'padding': 0,
			'margin': 0,
			'vertical-align': 'top',
			'line-height': 0
			
		});
		*/
		$('contentpane__infants').getParent().getParent().getParent().getChildren().each(function(item){			
				
				item.getChildren().each(function(item2){
												 
						item2.setStyles({
							'vertical-align': 'top'
						
						 });						 
				});	
			
		});	
		
		
	}
	
	
	if( $('web_services_bottom_box')  )
	{
		
		$('web_services_bottom_box').getElements('li img').each(function(item){
			item.addEvent('mouseover', function(e) {	
				var chaine	=	item.src;
				var reg		=	new RegExp("(a.gif)", "g");
				item.src	=	chaine.replace(reg,	'b.gif');						
			});	
			item.addEvent('mouseout', function(e) {	
				var chaine	=	item.src;
				var reg		=	new RegExp("(b.gif)", "g");
				item.src	=	chaine.replace(reg,	'a.gif');						
			});	
																		 
		});	
		
																		 
		/*
		$('web_services_bottom_box').getElements('li img').each(function(item){
																	 
			// Again we are able to create a morph instance
			var morph = new Fx.Morph(item, {duration: 500, transition: Fx.Transitions.Bounce.easeOut});
			
			item.addEvent('mouseover', function(e) {
					e.stop();
					if(e.target.getStyle('margin-top').toInt() >=0 )
					{
						morph.start({
							'margin-top': '-20px'
						});
					}					
				});				
			
			item.addEvent('mouseout', function(e) {
					e.stop();
					morph.cancel();
					morph.start({
						'margin-top': '0px'
					});
				});				
		});	
		*/
		
		
	}
	
}
window.addEvent('domready', init);