
// struktura elementów formularza
// ich nazwy
// oraz wartości i etykiety

qs.defaultTimeRange = 86400 * 1;
qs.pricesList = [1000, 2000, 3000, 4000];
qs.forbidAutoSubmit = true;

qsStructure = function(){
	return {
		dauer: {
			'6_1':'1 dzień',
			'6_2':'2 dni',
			'6_3':'3 dni',
			'6_4':'4 dni',
			'10':'5 - 8 dni',
			'6_7':'1 tydzień',
			'7':'9 - 12 dni',
			'3':'13 - 15 dni',
			'6_14':'2 tygodnie',
			'12':'16 - 22 dni',
			'6_21':'3 tygodnie',
			'13':'22 dni'},
		preis:qs.generatePriceList(),
		kategorie:{
			'0':'2',
			'1':'3',
			'2':'4',
			'3':'5'},
			/*
			'0':'2',
			'1':'3',
			'2':'4',
			'3':'5'},
			*/
		erwachsene:{
			'25':'jedna osoba dorosłe',
			'25;25':'dwie osoby dorosłe',
			'25;25;25':'trzy osoby dorosłe',
			'25;25;25;25':'cztery osoby dorosłe'},
		verpflegung:{
			"0":'Tylko nocleg',
			"1":'Śniadania',
			//"2":'Śniadania i obiadokolacje',
			"2":'Dwa posiłki',
			//"3":'Śniadania, obiady i kolacje',
			"3":'Trzy posiłki',
			"4":'All Inclusive'},
		room:{
			"5|":'Pokój jednoosobowy',
			"6|":'Pokój dwuosobowy',
			"2|":'Pokój rodzinny',
			"0|":'Bungalow',
			"7|":'Apartament',
			"-2|2":'Studio',
			"-2|16":'Suita',
			"-2|256":'Willa',
			"-2|512":'Superior',
			"-2|1024":'Pokój trzyosobowy',
			"-2|4096":'Pokój wieloosobowy',
			"-2|8192":'Mieszkanie wakacyjne',
			"-2|16384":'Domek letniskowy',
			"-2|32768":'Pokój deluxe',
			"-2|32768":'Pokój duplex'
			},
		marke:qs.translateMarke(),
		sportangebot:{
			//"10":'Szeroka oferta sportowa',
			"10":'Szeroka oferta',
			"0":'Kort tenisowy',
			"1":'Golf',
			"2":'Squash',
			"3":'Kolarstwo',
			"4":'Sporty wodne',
			"5":'Nurkowanie',
			"6":'Jazda konno',
			"7":'Wędrówki piesze',
			"8":'Surfowanie'},

		flugdauer:{
			'0':'około 2,5 godziny',
			'1':'około 4 godzin',
			'2':'ponad 6 godzin'
		/*,
			'3':'Morze Śródziemne',
			'4':'Hiszpania-Portugalia',
			'5':'Grecja-Turcja-Cypr',
			'6':'Wyspy Kanaryjskie',
			'7':'Majorka-Minorka-Ibiza',
			'8':'Karaiby-Meksyk-Rep.Dominikany',
			'9':'Egipt-Izrael-ZEA',
			'10':'Azja -Tajlandia-Malediwy',
			'11':'Afryka-Mauritius-Seszele',
			'12':'Tunezja-Maroko',
			'13':'Chorwacja-Bułgaria',
			'14':'regiony do nurkowania'*/
		},
		s_ort : qs.getOrteList(),
		/*
		mltp1:{
			'ski|0|':'narty',
			'golf|0|':'golf',
			'wellness|0|':'wellness-fitness',
			'fparks|0|':'parki rozrywki',
			'wandern|0|':'wędrówki',
			'familie_kinder|0|':'specjalnie dla dzieci'
		},
		*/
		alter1:qs.generateAlterSelect(),
		
		alter2:qs.generateAlterSelect(),
		
		alter3:qs.generateAlterSelect(),
		
		//sortedRegions:qs.generateSortedRegions( TTREGS, qs.sortRegions ),
		
		udfregionen:qs.generateUdfregionen( TTREGS, regs_obj, qs.sortRegions ),
		
		region:qs.generateRegionen( TTREGS, regs_obj, qs.sortRegions, null ),
		
		hbfges:{
			'30':'min. 3.0 max 6.0',
			'40':'min. 4.0 max 6.0',
			'50':'min. 5.0 max 6.0'
		},
		hbfempf:{
			'800': 'min. 80%',
			'900': 'min. 90%',
			'1000': 'min. 100%'
		},
		hbfanz:{
			'2':'min. 2',
			'3':'min. 3',
			'5':'min. 5',
			'10':'min. 10',
			'20':'min. 20',
			'30':'min. 30'
		}
	}
};

var f;
// na formularzu działamy po załadowaniu strony bo IE się sypie
$(document).ready(function() {
    // wartości które zostaną nadane polom na początku
    // inicjalizacja nowego obiektu

	f = new formular( 'quicksearch' );
	
    // podłączenie tablicy ze strukturą
    f.setStructure( qsStructure() );
    // podłączenie tablicy z wartościami początkowymi
    
	if(qs.fields.shotel=='') qs.fields.shotel='wpisz nazwę hotelu';
	
    f.setInitialValues( qs.fields );
    
    f.setOnSubmit( function(){
		/*
        if(f.form.mltp1) {
            for (var n=0; n<f.form.mltp1.options.length; n++){
                var option = f.form.mltp1.options[n];
                var tmp=option.value.split('|');
                f.setElementValue(tmp[0] , (option.selected)?tmp[1]:tmp[2]);
            }
        }
		*/
		
		//qs.orderKids( qsStructure() );
		
		if(typeof(f.form.shotel) != 'undefined' && typeof(f.form.shotel.value) != 'undefined' && f.form.shotel.value=='wpisz nazwę hotelu') f.form.shotel.value='';
		
		var temp_region;
		if(f.getElementByName('region').value != '-1') {
			temp_region = f.getElementByName('region').value.split('|');
			f.setElementValue( { sortedRegions: temp_region[1] + '|' +temp_region[0] });
		} else {
			if((temp_region = unescape($('#udfregionen').val()).split('|')[0]) != '-1') {
				temp_region = qs.getNumberByZiel(TTREGS, unescape($('#udfregionen').val()).split('|')[0]);
				f.setElementValue( { sortedRegions: temp_region + '|' +temp_region });
			} else {
				f.setElementValue( { sortedRegions: '-1' });
			}
			//f.setElementValue( { sortedRegions: temp_region[1] + '|' +temp_region[0] });
		}
		
        f.disableElements( ['startdate','enddate'] );
    });
    
    // wymuszenie usuwania opcji z selectów
    //f.setForceClearSelects( true );
	//$('#kategorie').get(0).options.length = 0;
	//$('#erwachsene').get(0).options.length = 0;
    
    // wypełanienie formularza
	f.fillFormular();
	
	//2009.10.23 - odświeżenie zawartości "ilośc podróżnych" oraz "Kategoria hotelu" po przeładowaniu - dla NiceForms : START
	if(!!document.getElementById('erwText')) {document.getElementById('erwText').innerHTML = document.getElementById('erwachsene').options[document.getElementById('erwachsene').options.selectedIndex].text;}
	if(!!document.getElementById('katImg')) {
		selIndex = document.getElementById('kategorie').options.selectedIndex;
		selIndexValue = document.getElementById('kategorie').options[selIndex].value;
		selIndexText = document.getElementById('kategorie').options[selIndex].text;
		document.getElementById('katImg').src = pfad_images + '/sterne/' + selIndexText + '.gif';
		if(selIndexValue == -1) {
			$('#katTxt').html('dowolna');
		} else if(selIndexValue == 3) {
			$('#katTxt').html('minimum 5 gwiazdek');
		} else {
			$('#katTxt').html('minimum ' + selIndexText + ' gwiazdki');
		}
	}
	//2009.10.23 - odświeżenie zawartości "ilośc podróżnych" oraz "Kategoria hotelu" po przeładowaniu - dla NiceForms : STOP
	
	qs.init();
	
	// konfiguracja I kalendarza
	$("input[name='startdate']", f.form).datepicker( qs.datePickerConfig() );
	$("input[name='startdate']", f.form).datepicker('option', 'numberOfMonths', 2);
	$("input[name='startdate']", f.form).datepicker('option', 'showButtonPanel', true);
	$("input[name='startdate']", f.form).datepicker('option', 'closeText', 'Zamknij');
	$("input[name='startdate']", f.form).datepicker('option', 'currentText', 'Dzisiaj');
	//$(input[name='startdate']", f.form).datepicker('option', 'showButtonPanel', false);
	
	// konfiguracja II kalendarza
    $("input[name='enddate']", f.form).datepicker( qs.datePickerConfig() );
	$("input[name='enddate']", f.form).datepicker('option', 'numberOfMonths', 2);
	$("input[name='enddate']", f.form).datepicker('option', 'showButtonPanel', true);
	$("input[name='enddate']", f.form).datepicker('option', 'closeText', 'Zamknij');
	$("input[name='enddate']", f.form).datepicker('option', 'currentText', 'Dzisiaj');
	//$(input[name='enddate']", f.form).datepicker('option', 'showButtonPanel', false);
    
    if (f.getElementByName('qsstate').value==1) qs.moreOptions();
	
	if (f.initialValues.detail != 'hotel') f.getElementByName('s_ort').disabled=true;
	
	if(!!$('#udfregionen').val()) {
		qs.changeRegionList(TTREGS, regs_obj, $('#udfregionen').val());
	}
	if(!!$('#region').val()) {
		qs.changeUdfRegionenList(TTREGS, regs_obj, $('#region').val());
	}
	/*
	else if(!!$('#udfregionen').val()) {
		qs.changeRegionList(TTREGS, regs_obj, $('#udfregionen').val());
	}
	*/
});

// tworzenie prostego posortowanego obiektu dla "Cel podróży"
qs.generateUdfregionen = function( regtable, regobj, sortingFunction ){
	var udfregionen = [];
	var out = {};
	var i = 0;
	
	for (var n in regobj) {
		//udfregionen[escape(n + '|' + regobj[n].join())] = n;
		udfregionen[i] = n + '|' + regobj[n].join();
		i++;
	}
	
	//czyszczenie z duplikatów niepotrzebne, zakładam, że cele się nie powtarzają
	
	udfregionen.sort();
	
	for (var n in udfregionen){
		// out[escape(udfregionen[n])] = udfregionen[n].substr(0, udfregionen[n].indexOf('|'));
		// out[escape(udfregionen[n].substr(0, udfregionen[n].indexOf('|'))) + udfregionen[n].substr(udfregionen[n].indexOf('|'))] = udfregionen[n].substr(0, udfregionen[n].indexOf('|'));
		out[udfregionen[n]] = udfregionen[n].substr(0, udfregionen[n].indexOf('|'));
	}
	
	return out;
};

// tworzenie prostego posortowanego obiektu dla "Region"
qs.generateRegionen = function( regtable, regobj, sortingFunction, udfregionNumber ){

	var regionNumbers = [];
	var regionen = [];
	var out = {};
	var temp_region = [];
	
	if(!udfregionNumber || udfregionNumber == '-1') { // łączenie wszystkich tablic z TTREGS
		for (var n in regobj) {
			regionNumbers = regionNumbers.concat(regobj[n]);
		}
	} else { // tylko wybrana tablica z TTREGS
		udfregionNumber_temp = unescape(udfregionNumber);
		udfregionNumber_temp = unescape(udfregionNumber_temp).substr(0, udfregionNumber_temp.indexOf('|'));
		regionNumbers = regobj[udfregionNumber_temp];
	}
	
	//czyszczenie z duplikatów potrzebne
	regionNumbers = qs.removeDuplicates(regionNumbers);
	
	// umieszczenie w tablicy nazw regionów
	var i = 0;
	for (var n in regionNumbers) {
		temp_region = qs.getRegionByNumber(regtable, regionNumbers[n])
		if(!!temp_region) {
			regionen[i] = temp_region;
			i++;
		}
	}
	
	//alert(regionen['0'] + ', ' + regionen['106']);
	regionen.sort();
	//alert(regionen['0'] + ', ' + regionen['106']);
	
	for (var n in regionen) {
		temp_regionen = regionen[n].split('|');
		temp_regionen.shift(); temp_regionen.shift();
		temp_regionen.pop(); temp_regionen.pop();
		temp_regionen.reverse();
		//out['' + regionen[n].substr(regionen[n].indexOf('|') + 1)] = regionen[n].substr(0, regionen[n].indexOf('|'));
		//out['' + temp_regionen.join('|')] = regionen[n].substr(0, regionen[n].indexOf('|'));\
		out['' + temp_regionen[0]] = regionen[n].substr(0, regionen[n].indexOf('|'));
	}
	
	return out;
};

qs.changeRegionListOnClick = function( regtable, regobj, udfregionNumber ) {
	qs.fields['udfregionen'] = udfregionNumber; // 2010.06.01 - jeżeli ktoś wybiera jakiś udfregion, to poprzednia wartość traci ważność
	qs.changeRegionList( regtable, regobj, udfregionNumber );
	// NFFix(); // dla oświeżenia zawartości NiceForms, 2009.10.23
};
qs.changeRegionList = function( regtable, regobj, udfregionNumber ) {
	var temp_selected = $('#region').val();
	if(!!$('#region').get(0) && $('#region').get(0).tagName == 'SELECT') {
		$('#region').get(0).options.length = 0;
	}
	var obj_temp = {};
	var obj_temp2 = qs.generateRegionen( regtable, regobj, qs.sortRegions, udfregionNumber );
	obj_temp['-1'] = 'dowolny';
	for(n in obj_temp2) {
		obj_temp[n] = obj_temp2[n];
	}
	f.fillSelect( $('#region').get(0), obj_temp );
	$('#region').val(temp_selected);
};

qs.changeUdfRegionenListOnClick = function( regtable, regobj, regionNumber ) {
	qs.changeUdfRegionenList( regtable, regobj, regionNumber );
	// NFFix(); // dla oświeżenia zawartości NiceForms, 2009.11.05
};
qs.changeUdfRegionenList = function( regtable, regobj, regionNumber ) {
	if(!!qs.fields['udfregionen'] && qs.fields['udfregionen'] != -1) { // 2010.06.01 - żeby udfregionen po przeładowaniu miał wartośc wybraną, a nie pierwszą z pliku LAST.txt
		$('#udfregionen').val(qs.fields['udfregionen']);
	} else {
		var temp_selected;
		var targetNumber = regionNumber.split('|')[0];
		if(!(temp_name = qs.getZielByNumberObj(regobj, targetNumber))) return;
		if(!regobj[temp_name]) return;
		// temp_selected = escape(temp_selected);
		// temp_selected = escape(temp_name) + '|' + regobj[temp_name].join();
		temp_selected = temp_name + '|' + regobj[temp_name].join();
		$('#udfregionen').val(temp_selected);
	}
	/*
	var targetNumber = regionNumber.split('|')[1];
	if(!(temp_name = qs.getRegionByNumber(regtable, targetNumber))) return;
	temp_name = temp_name.substr(0, temp_name.indexOf('|'));
	if(!regobj[temp_name]) return;
	temp_selected = temp_name + '|' + regobj[temp_name].join();
	temp_selected = escape(temp_selected);
	$('#udfregionen').val(temp_selected);
	*/
};

qs.getRegionByNumber = function(regtable, regionNumber) {
	var parts = '';
	for (var n in regtable) {
		parts = regtable[n].split('|');
		if(parts[3] == regionNumber) {
			return regtable[n];
		}
	}
	return null;
};

qs.getNumberByZiel = function(regtable, zielName) {
	var parts = '';
	for (var n in regtable) {
		parts = regtable[n].split('|');
		if(parts[0] == zielName) {
			return parts[2];
		}
	}
	return null;
};

qs.getZielByNumberObj = function(regobj, zielNumber) {
	for (var n in regobj) {
		for(var m in regobj[n]) {
			if(regobj[n][m] == zielNumber) {
				return n;
			}
		}
	}
	return null;
};

qs.removeDuplicates = function(table) {
	var out = [];
	var in_array = false;
	var i = 0;
	for (var n in table) {
		in_array = false;
		for (var k in out) {
			if(table[n] == out[k]) {
				in_array = true;
				break;
			}
		}
		if(!in_array) {
			out[i] = table[n];
			i++;
		}
	}
	return out;
};
