var hoNapok = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);

var ProgramKereso = new Class({
	odate : null,
	rdate: null,

	initialize: function(){
		this.odate = new CProgramNaptar('odate_program',$('omonth_program'),$('oday_program'),$('o_date_cont_program'), datum.shiftDate(_currentdate_program,3), datum.shiftDate(_currentdate_program,365), (function(){ this.odateChange(); }).bind(this));
		this.rdate = new CProgramNaptar('rdate_program',$('rmonth_program'),$('rday_program'),$('r_date_cont_program'), datum.shiftDate(_currentdate_program,7), datum.shiftDate(_currentdate_program,34), (function(){ this.rdateChange(); }).bind(this));


		this.errorlayer = new CmooErrorLayer();
		this.layer_input = new CmooLayer_input();
		$('gyermek_select').addEvent('change',function(){
			var gyermek = $('gyermek_select').value;
			var felnott = $('felnott_select').value;
			gyermek=parseInt(gyermek);
			felnott=parseInt(felnott);
			szemelyek=gyermek+felnott;
			$('szemelyek').innerHTML=szemelyek;
		});

		$('felnott_select').addEvent('change',function(){
			var gyermek = $('gyermek_select').value;
			var felnott = $('felnott_select').value;
			gyermek=parseInt(gyermek);
			felnott=parseInt(felnott);
			szemelyek=gyermek+felnott;
			$('szemelyek').innerHTML=szemelyek;
		});

		// az autocomp mezők
		oManager = new CmooRequestManager();

		oProvider1 = new CSuggestProvider ('/extrak/ajax/autolocationNyito.php', 'get', oManager,'command=auto_location');
		oAutoComp1 = new CmooProgramAutoComplete ('from_program',oProvider1,'program_f_type', null, (this.from__change));



		$('programkereso_submit').addEvent('click',(this.onSubmitClick).bind(this));
		$('from_program_').addEvent('change', this.from__change);
		$('country_select').addEvent('change', this.country_select_change);
		$('destination_select').addEvent('change', this.destination_select_change);


	},

	odateChange: function(){
		this.rdate.setNewRange(datum.shiftDate($A(this.odate.getDate()),1));
	},
	rdateChange: function(){

	},

	from__change:function(){
		var option_id = $('from_program_').value;


		$('country_select').set('html',"");

		var req = new Request.JSON(
		{
			url:'extrak/ajax/get_countries.php',
			method: 'post',
			data: 'destination_code='+option_id,
			onComplete: PK.fromSelectOnComplete.bind(this),
			evalScripts:false
		}).send();

	},





	country_select_change:function(){
		var option_id = $('country_select').value;


		$('destination_select').set('html',"");

		var req = new Request.JSON(
		{
			url:'extrak/ajax/get_destinations.php',
			method: 'post',
			data: 'countrycode_code='+option_id,
			onComplete: PK.countrySelectOnComplete.bind(this),
			evalScripts:false
		}).send();

	},

	destination_select_change:function(){

		var option_id = $('destination_select').value;
			$('program_tipusok_select').set('html',"");

			
			if ((option_id!="") && (option_id!=-1))
			{

			var req = new Request.JSON(
			{
				url:'extrak/ajax/get_classification_list.php',
				method: 'post',
				data: 'destination_code='+option_id,
				onComplete: PK.destinationSelectOnComplete.bind(this),
				evalScripts:false
			}).send();


		}

	},




	destinationSelectOnComplete:function(result){

		if (result)
		{


			new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('program_tipusok_select'));
			result.each(function(item,index){

				new Element('option',{'html':item['name'], 'value':item['code']}).inject($('program_tipusok_select'));

			});

		}

	},



	fromSelectOnComplete:function(result){
		$('country_select').set('html',"");

		if (result)
		{

			new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('country_select'));

			result.each(function(item,index){


				if ((item['selected']) || ($('country_select_h').value==item['countrycode']))
				{
					selected=true;
				}
				else
				{
					selected=false;
				}


				new Element('option',{'html':item['name'], 'value':item['countrycode'], 'selected':selected}).inject($('country_select'));


			});

		}



		PK.country_select_change();

	},





	countrySelectOnComplete:function(result){



		if (result)
		{


			new Element('option',{'html':'-- válasszon --', 'value':-1}).inject($('destination_select'));
			result.each(function(item,index){


				if ((item['destinationcode']==$('from_program_').value) || (item['destinationcode']==$('destination_select_h').value))
				{
					selected=true;

				}
				else
				{
					selected=false;
				}

				new Element('option',{'html':item['destinationname'], 'value':item['destinationcode'], 'selected':selected}).inject($('destination_select'));



			});

		}


		PK.destination_select_change();


	},







	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($('programkereso_form'))
			this.currentchild++;
			if (this.currentchild <= this.totalchilds){
				this.popOne();
			}else{
				$('programkereso_form').submit();
			}
		}else{
			this.popOne();
		}
	},


	onSubmitClick:function()
	{
		var hiba="";





		if (($('country_select').value==-1) || ($('country_select').value==""))
		{
			hiba+="Nem választott országot<br />";
		}



		if (($('destination_select').value==-1) || ($('destination_select').value==""))
		{
			hiba+="Nem választott régiót<br />";
		}

		/*
		if (($('program_tipusok_select').value==-1) || ($('program_tipusok_select').value==""))
		{
		hiba+="Nem választott program típust<br />";
		}
		*/






		if (hiba!="")
		{
			hiba="Hiba a keresés során<br />"+hiba;

			this.errorlayer.pop(hiba);

			return false;

		}
		else
		{

			if ($('gyermek_select').value!=0)
			{
				this.currentchild = 1;
				this.totalchilds=$('gyermek_select').value;
				this.popOne();
				return false;
			}

			return true;
			// 	return false;
		}

	}




});





// a naptár objektumokat tartalmazó tömb
var calendars = new Array();
// az autocomplet szkript elérési útja

// az aktuális dátumot tartalmazó tömb -- ezt php-ból generálom  egy <script> elemben a html_bal_flights_repulojegykereso.php -ban
//var aCDate = [2009,2,12];
/**
* Ki-be kapcsolja a naptár komponens láthatóságát.
* @param cont A naptár komponenst tartalmazó konténer
*/
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) {
			calendars[i].toggle();
			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])) {
			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])) {

			calendars[1].setMinDate(calendars[0].year,calendars[0].month,calendars[0].day);
		}
	}
}

function showToolTip (tid) {
	var but = null;
	var tt = $(tid);
	if ($chk(tt)) {
		tt.setStyle('display','block');
		if (but = tt.getPrevious('a')) {
			//alert (tt.getCoordinates().height);
			tt.setStyle('top',(but.getCoordinates().top-tt.getCoordinates().height)+'px');
			if (tt.get('class').contains('right')) {
				tt.setStyle('left',(but.getCoordinates().left-tt.getCoordinates().width + 40)+'px');
			}
			else {
				tt.setStyle('left',but.getCoordinates().left-22+'px');
			}
		}

	}
}

function hideToolTip (tid) {
	var tt = $(tid);
	if ($chk(tt)) {
		tt.setStyle('display','none');
	}
}


document.addEvent('domready',function(){

	PK = new ProgramKereso();
	PK.from__change();

});
