var hoNapok = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);

var TransferKereso = new Class({

	totalchilds: null,
	currentchild: null,
	initialize: function(){


		
		
		
		this.errorlayer = new CmooErrorLayer();
		this.layer_input = new CmooLayer_input();


		$('transzferkereso_submit').addEvent('click',(this.onSubmitClick).bind(this));
		$('transzferkereso_submit2').addEvent('click',(this.onSubmitClick).bind(this));

		$('gyermek_select_transzfer').addEvent('change',function(){
			var gyermek = $('gyermek_select_transzfer').value;
			var felnott = $('felnott_select_transzfer').value;
			gyermek=parseInt(gyermek);
			felnott=parseInt(felnott);
			szemelyek_szama=gyermek+felnott;
			$('szemelyek_transzfer').innerHTML=szemelyek_szama;
		});

		$('felnott_select_transzfer').addEvent('change',function(){
			var gyermek = $('gyermek_select_transzfer').value;
			var felnott = $('felnott_select_transzfer').value;
			gyermek=parseInt(gyermek);
			felnott=parseInt(felnott);
			szemelyek_szama=gyermek+felnott;
			$('szemelyek_transzfer').innerHTML=szemelyek_szama;
		});

		$('country_select_transzfer').addEvent('change',function(){
			var option_id = $('country_select_transzfer').value;

			$('airport_select_transzfer').set('html',"");

			var req = new Request.JSON(
			{
				url:'extrak/ajax/get_airports.php',
				method: 'post',
				data: 'country='+option_id,
				onComplete: function(result){



					if (result)
					{
						new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('airport_select_transzfer'));
						result.each(function(item,index){
							new Element('option',{'html':item['zone_name'], 'value':item['airport_code']}).inject($('airport_select_transzfer'));

						});
					}

					// $('airport_select').set('html',content);


				},
				evalScripts:false
			}).send();

		});


		$('airport_select_transzfer').addEvent('change',function(){
			var option_id = $('airport_select_transzfer').value;

			$('zone_select').set('html',"");
			var req = new Request.JSON(
			{
				url:'extrak/ajax/get_zones.php',
				method: 'post',
				data: 'airport_code='+option_id,

				onComplete: function(result){


					if (result)
					{
						new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('zone_select'));
						i=1;
						result.each(function(item,index){

							new Element('option',{'html':item['zone_name'], 'value':item['zone_transfer']}).inject($('zone_select'));

						});

					}
					// $('zone_select').set('html',content);


				},
				evalScripts:false
			}).send();
		});

		$('zone_select').addEvent('change',function(){
			var option_id = $('zone_select').value;


			$('hotel_select').set('html',"");
			var req = new Request.JSON(
			{
				url:'extrak/ajax/get_hotels.php',
				method: 'post',
				data: 'destinationcode='+option_id,
				onComplete: function(result){


					content="";

					if (result)
					{
						new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('hotel_select'));
						result.each(function(item,index){

							new Element('option',{'html':item['name'], 'value':item['hotelcode']}).inject($('hotel_select'));
						});
					}
					// $('hotel_select').set('html',content);


				},

				evalScripts:false
			}).send();
		});


		
		if ($('zone_select').value!="")
		{
					var option_id = $('zone_select').value;


			$('hotel_select').set('html',"");
			var req = new Request.JSON(
			{
				url:'extrak/ajax/get_hotels.php',
				method: 'post',
				data: 'destinationcode='+option_id,
				onComplete: function(result){


					content="";

					if (result)
					{
						new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('hotel_select'));
						result.each(function(item,index){

							new Element('option',{'html':item['name'], 'value':item['hotelcode']}).inject($('hotel_select'));
						});
					}
					// $('hotel_select').set('html',content);


				},

				evalScripts:false
			}).send();
		}



		//*****************************************************************************************








		$('gyermek_select2_transzfer').addEvent('change',function(){
			var gyermek = $('gyermek_select2_transzfer').value;
			var felnott = $('felnott_select2_transzfer').value;
			gyermek=parseInt(gyermek);
			felnott=parseInt(felnott);
			szemelyek_szama=gyermek+felnott;
			$('szemelyek2_transzfer').innerHTML=szemelyek_szama;
		});

		$('felnott_select2_transzfer').addEvent('change',function(){
			var gyermek = $('gyermek_select2_transzfer').value;
			var felnott = $('felnott_select2_transzfer').value;
			gyermek=parseInt(gyermek);
			felnott=parseInt(felnott);
			szemelyek_szama=gyermek+felnott;
			$('szemelyek2_transzfer').innerHTML=szemelyek_szama;
		});



		$('country_select2_transzfer').addEvent('change',function(){
			var option_id = $('country_select2_transzfer').value;

			$('city_select2').set('html',"");
			var req = new Request.JSON(
			{
				url:'extrak/ajax/get_hb_zones.php',
				method: 'post',
				data: 'country='+option_id,
				onComplete: function(result){


					new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('city_select2'));
					result.each(function(item,index){

						new Element('option',{'html':item['destinationname'], 'value':item['destinationcode']}).inject($('city_select2'));
					});

					// $('city_select2').set('html',content);


				},
				evalScripts:false
			}).send();




			$('airport_select2_transzfer').set('html',"");

			var req2 = new Request.JSON(
			{

				url:'extrak/ajax/get_airports.php',
				method: 'post',
				data: 'country='+option_id,
				onComplete: function(result){


					if (result)
					{

						new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('airport_select2_transzfer'));
						result.each(function(item,index){

							new Element('option',{'html':item['zone_name'], 'value':item['airport_code']}).inject($('airport_select2_transzfer'));
						});
					}

					// $('airport_select2').set('html',content);


				},
				evalScripts:false
			}).send();
		});


		/*
		$('airport_select2').addEvent('change',function(){
		var option_id = $('airport_select2').value;


		var req = new Request.JSON(
		{
		url:'ajax/get_zones.php',
		method: 'post',
		data: 'city_code='+option_id,

		onComplete: function(result){


		content="";
		content+='<option value="-1">-- válasszon --</option>';
		i=1;
		result.each(function(item,index){

		content+='<option value="'+item['city_code']+'" ';

		content+='>'+item['zone_name']+'</option>';
		});
		$('zone_select2').set('html',content);


		},
		evalScripts:false
		}).send();
		});
		*/

		
		$('city_select2').addEvent('change',function(){
			var option_id = $('city_select2').value;


			$('hotel_select2').set('html',"");
			var req = new Request.JSON(
			{
				url:'extrak/ajax/get_hotels.php',
				method: 'post',
				data: 'destinationcode='+option_id,
				onComplete: function(result){



					new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('hotel_select2'));
					result.each(function(item,index){

						new Element('option',{'html':item['name'], 'value':item['hotelcode']}).inject($('hotel_select2'));

					});
					// $('hotel_select2').set('html',content);


				},

				evalScripts:false
			}).send();
		});




























		// az odaút szülő konténere
		var oContainer = $('o_date_cont_transzfer');
		// az odaút naptára

		var oOCalendar = new CmooTranszferCalendar('cal1',oContainer,aCDate[0],aCDate[1],aCDate[2],onDatePick,aCDate,[aCDate[0]+1,aCDate[1]-1,aCDate[2]]);
		// a naptárat megjelenítő gomb eseménykezelője
		oContainer.getElement('a.naptarka').addEvent('click',function(oEvent){toggleCalendar(this.getParent());oEvent.stop();});
		// a naptárakat tartalmazó globális tömb
		calendars[0] = oOCalendar;
		// a select elemekhez hozzárendeljük a megfeleleő eseménykezelőt
		oContainer.getElements('select').each(function(oSel){oSel.addEvent('change',function(){pickDate(this.getParent());})});
		// A vissza út dátumválasztója a fentiek szerint.
		oContainer = $('r_date_cont_transzfer');
		// 		var oRCalendar = new CmooCalendar('cal2',oContainer,aCDate[0],aCDate[1],aCDate[2],onDatePick,aCDate,[aCDate[0]+1,aCDate[1]-1,aCDate[2]]);


		var oRCalendar = new CmooTranszferCalendar('cal2',oContainer,-1,aCDate[1],aCDate[2],onDatePick,aCDate,[aCDate[0]+1,aCDate[1]-1,aCDate[2]]);

		

		// Angol verzió példa:
		oRCalendar.days = ['Su','M','Tu','W','Th','F','Sa'];
		// oRCalendar.months = ['january','february','march','april','maj','june','july','august','september','october','november','december'],
		oRCalendar.sunday = 0;
		oRCalendar.dIndex = 4;
		oRCalendar.refresh();
		oContainer.getElement('a.naptarka').addEvent('click',function(oEvent){toggleCalendar(this.getParent());oEvent.stop();});
		calendars[1] = oRCalendar;
		oContainer.getElements('select').each(function(oSel){oSel.addEvent('change',function(){pickDate(this.getParent());})});



		var ooContainer = $('oo_date_cont_transzfer');
		// az odaút naptára
		var ooOCalendar = new CmooTranszferCalendar('cal1',ooContainer,aCDate[0],aCDate[1],aCDate[2],onDatePick,aCDate,[aCDate[0]+1,aCDate[1]-1,aCDate[2]]);
		// a naptárat megjelenítő gomb eseménykezelője
		ooContainer.getElement('a.naptarka').addEvent('click',function(oEvent){toggleCalendar(this.getParent());oEvent.stop();});
		// a naptárakat tartalmazó globális tömb
		calendars[2] = ooOCalendar;
		// a select elemekhez hozzárendeljük a megfeleleő eseménykezelőt
		ooContainer.getElements('select').each(function(oSel){oSel.addEvent('change',function(){pickDate(this.getParent());})});








	},
	popOne:function()
	{
		// this.currentchild=$('gyermek_select').value;
		this.layer_input.pop('Adja meg a gyermekek életkorát (0 - 12)','<label class="label_130">'+this.currentchild+'.gyermek:</label> <input class="input_210 input_border" id="childage" />',(this.onPopClose).bind(this));
		$('childage').addEvent('keypress', function(event){
			if (event.key.match('backspace|delete|enter|left|right')) return true;
			if (!event.key.match('[0-9]')) return false;
			if (event.target.get('value').length == 2) return false;
		});
	},

	onPopClose: function(){

		if (($('childage').get('value').match("^[0-9]{1,2}$")) && ($('childage').get('value') <= 12)) {
			new Element('input',{'type':'hidden','name':'childages['+this.currentchild+']', 'value': $('childage').get('value')}).inject($('transzfer_kereso_form'))
			this.currentchild++;
			if (this.currentchild <= this.totalchilds){
				this.popOne();
			}else{
				$('transzfer_kereso_form').submit();
			}
		}else{
			this.popOne();
		}
	},
	onSubmitClick:function()
	{

		var hiba="";




		if ($('tr_honnan1').checked)
		{

			
			var mydate = new Date(); 
			var selectedDate = new Date();
			
			d= $('omonth_transzfer').value
			dd=d.split('_');


			selectedDate.setFullYear(dd[0], dd[1]-1, $('oday_transzfer').value);

			var newdate_ms=mydate.getTime()+(2 * 1000 * 60 * 60 * 24);
			
			mydate.setTime(newdate_ms); 
			
			
			if (selectedDate<=mydate)
				{
				hiba+="Az indulás napja nem lehet 48 órán belül";
				}

			
			if (($('country_select_transzfer').value==-1) || ($('country_select_transzfer').value==""))
			{
				hiba+="Nem választott országot<br />";
			}

			if (($('airport_select_transzfer').value==-1) || ($('airport_select_transzfer').value==""))
			{
				hiba+="Nem választott repülőteret<br />";
			}
			if (($('zone_select').value==-1) || ($('zone_select').value==""))
			{
				hiba+="Nem választott célállomást<br />";
			}
			
			if (($('hotel_select').value==-1) || ($('hotel_select').value==""))
			{
			hiba+="Nem választott hotelt<br />";
			}
			

			if ($('ohour_transzfer').value==-1)
			{
				hiba+="Nem adta meg a transzfer időpontját(óra)<br />";
			}
			if ($('omin_transzfer').value==-1)
			{
				hiba+="Nem adta meg a transzfer időpontját(perc)<br />";
			}


			if (($('rmonth_transzfer').value!=-1) && ($('rhour_transzfer').value==-1))
			{
				hiba+="Nem adta meg a visszaindulás időpontját(óra)<br />";
			}
			if (($('rmonth_transzfer').value!=-1) && ($('rmin_transzfer').value==-1))
			{
				hiba+="Nem adta meg a visszaindulás időpontját(perc)<br />";
			}

			if ($('felnott_select_transzfer').value==0)
			{
				hiba+="Nem adta meg az utasok számát<br />";
			}


		}
		else if ($('tr_honnan2').checked)
		{

			var mydate = new Date(); 
			var selectedDate = new Date();
			
			d= $('omonth2_transzfer').value
			dd=d.split('_');


			selectedDate.setFullYear(dd[0], dd[1]-1, $('oday2_transzfer').value);

			var newdate_ms=mydate.getTime()+(2 * 1000 * 60 * 60 * 24);
			
			mydate.setTime(newdate_ms); 
			
			
			if (selectedDate<=mydate)
				{
				hiba+="Az indulás napja nem lehet 48 órán belül";
				}

			
			if (($('country_select2_transzfer').value==-1) || ($('country_select2_transzfer').value==""))
			{
				hiba+="Nem választott országot<br />";
			}

			if (($('airport_select2_transzfer').value==-1) || ($('airport_select2_transzfer').value==""))
			{
				hiba+="Nem választott repülőteret<br />";
			}
			if (($('city_select2').value==-1) || ($('city_select2').value==""))
			{
				hiba+="Nem választott várost<br />";
			}
			if (($('hotel_select2').value==-1) || ($('hotel_select2').value==""))
			{
				hiba+="Nem választott hotelt<br />";
			}

			if ($('ohour2_transzfer').value==-1)
			{
				hiba+="Nem adta meg a transzfer időpontját(óra)<br />";
			}
			if ($('omin2_transzfer').value==-1)
			{
				hiba+="Nem adta meg a transzfer időpontját(perc)<br />";
			}




			if ($('felnott_select2_transzfer').value==0)
			{
				hiba+="Nem adta meg az utasok számát<br />";
			}

		}



		if (hiba!="")
		{
			hiba="Hiba a keresés során<br />"+hiba;

			this.errorlayer.pop(hiba);
			// alert(hiba);
			return false;

		}
		else
		{
			if ($('tr_honnan1').checked)
			{
				if ($('gyermek_select_transzfer').value!=0)
				{
					this.currentchild = 1;
					this.totalchilds=$('gyermek_select_transzfer').value;
					this.popOne();
					return false;
				}
			}
			else if ($('tr_honnan2').checked)
			{
				if ($('gyermek_select2_transzfer').value!=0)
				{
					this.currentchild = 1;
					this.totalchilds=$('gyermek_select2_transzfer').value;
					this.popOne();
					return false;
				}
			}
			

			return true;
		}



	}







});



var calendars = new Array();
var valendar_open=false;

function toggleCalendar (cont) {

	for (var i = 0; i < calendars.length; ++i) {
		var t = false;
		switch ($type(cont)) {
			case 'element' :
			t = calendars[i].oContainer == cont
			break;
			case 'string' :
			t = calendars[i].oContainer.get('id') == cont;
			break;
		}
		if (t) {
			if (calendars[i].year!=1900)
			{
				if (!valendar_open)
				{
					calendars[i].toggle();
					valendar_open=true;
				}
			}
			break;
		}
	}
}
/**
* Eseménykezelő visszahívó függvény. Az adott naptár komponenssel egy konténerben lévő
* év,hó,nap selecteket állítja be a megfelelő értékre.
* A CmooCalendar objektum hatókörében dolgozik, ezért bind() függvény nélkül kell paraméterként átadni
* @param int y A kiválasztott év
* @param int m A kiválasztott hónap (1-12)
* @param int d A kiválasztott nap (1-31)
*/
function onDatePick (y,m,d) {

	// a hónapok nap száma
	var mDays = [31,28,31,30,31,30,31,31,30,31,30,31];
	// ha szökőév, akkor a február 29 napos
	mDays[1] = this.isLeap(y) ? 29 : 28;
	// a szülő konténer select elemeinek listája
	if($type(l = this.oContainer.getElements('select')) == 'array') {
		// első select az év_hónap, a megfelelő option elem kiválasztása
		l[0].getElements('option').each(function(o){o.set('selected',(o.get('value') == y+'_'+m ? true : false));});

		// ha nem egyezik az aktuális hónap napjainak száma az új dátuméval, akkor lecseréljük az option elemeket
		var fDay = this.minYear == y && this.minMonth == m ? this.minDay : 1;
		var lDay = this.maxYear == y && this.maxMonth == m ? this.maxDay : mDays[m-1];
		if (l[1].getElements('option').length != lDay - fDay + 1) {
			
			l[1].empty();
			for(var i= fDay; i <= lDay; i++) {
				o = new Element('option',{'value':i,'html':i});
				if (i == d) {
					o.set('selected',true);
				}
				o.inject(l[1]);
			}
		}
		// A nap kiválasztó select megfelelő option elemének kiválasztása
		else {
			l[1].getElements('option').each(function(o){o.set('selected',(o.get('value') == d ? true : false));});
		}
		if (calendars.length > 1 && $chk(calendars[1])) {

			if (calendars[1].year!=1900)
			{
				
				if (calendars[1].cmp(calendars[0])<0)
				{
				
				calendars[1].setMinDate(calendars[0].year,calendars[0].month,calendars[0].day);
				
				}
			}
		}
	}
}
/**
* A select elemek eseménykezelő függvénye.
* Ha megváltozik az adott select elem értéke akkor a paraméterül kapott szülő konténerben
* lévő naptár komponens dátumát átállítja a select elemek értéke alapján.
* @param mixed id A szülő konténer elem id-ja vagy maga a konténer elem.
*/
function pickDate (id) {

	var cont;
	if($chk(cont = $(id))) {


		// a dátumot tartalmazó tömb
		var d = new Array ();
		// a konténerben lévő select elemek listája
		var l = $(id).getChildren('select');

		// a dátum értékek év,hó,nap
		if (l.length = 2) {

			d = l[0].get('value').split('_');
			d.push(l[1].get('value'));
		}
		// ha megfelelő számú paraméterrel rendelkezik a dátum (év,hó,nap)
		if (d.length == 3) {
			// globális változó amely az oldalon található naptár objektumokat tartalmazza
			calendars.each(function(cal) {
				var t = false;
				// a naptár kiválasztása
				switch ($type(id)) {
					case 'element' :
					t = cal.oContainer == id
					break;
					case 'string' :
					t = cal.oContainer.get('id') == id;
					break;
				}
				if (t) {
					// a naptár komponens dátumának beállítása
					
					cal.setDate(d[0],d[1],d[2]);
					cal.onPickDate(cal.year,cal.month,cal.day);
				}
			});

		}
		// ha van vissza indulási dátum, akkor a minimumát az odaút dátumára kell állítani.

		if (calendars.length > 1 && $chk(calendars[1])) {
			
			
			if (calendars[1].year!=1900)
			{
				if (calendars[1].cmp(calendars[0])<0)
				{
				
				calendars[1].setMinDate(calendars[0].year,calendars[0].month,calendars[0].day);
				}
			}

		}
	}
}


function repterrol() {
	document.getElementById('repterrol_id').style.display='block';
	document.getElementById('hotelrol_id').style.display='none';
}
function hotelrol() {
	document.getElementById('repterrol_id').style.display='none';
	document.getElementById('hotelrol_id').style.display='block';
}




document.addEvent('domready',function(){

	new TransferKereso();



	$('rmonth_transzfer').addEvent('change',function(){



		if ($('rmonth_transzfer').value==-1)
		{
			$('rday_transzfer').set('html',"");
			new Element('option',{'html':'-', 'value':0}).inject($('rday_transzfer'));
		}
	}
	);
	

});
