var qs = {
	
	defaultTimeRange:86400*35,
	pricesList : [1300,2000,3000,4000],		
	useOptgroups : false,
	
	
    // translates marke TT array into formHelper standard
    translateMarke:function(){
        var res={};
		var arr = this.getMarkeArray();
        for(var n in arr){
            var tmp = arr[n].split(';');
            res[ tmp[1] ] = tmp[0];
        }
        return res;
    },

    getOrteList:function(){
        try {
            ort={}
            if (typeof Orte !=='undefined') for (var n=0; n<Orte.length; n++) ort[Orte[n]] = Orte[n];    
            return ort;
        } catch( e ) {}
    },
    
    generateAlterSelect:function(){
        return { "1":'< 2 lata', "2":'2 lata', "3":'3 lata', "4":'4 lata', "5":'5 lat', "6":'6 lat', "7":'7 lat', "8":'8 lat', "9":'9 lat', "10":'10 lat', "11":'11 lat', "12":'12 lat', "13":'13 lat', "14":'14 lat', "15":'15 lat', "16":'16 lat'} 
    },

	
	generatePriceList:function(){
		var tmp={}
		for (var n in this.pricesList){
			var euro = parseInt( ConvertPriceValues(this.pricesList[n],4,'PLN') );
			tmp['8_'+euro] = 'do ' + ( this.pricesList[n] ) + ' PLN';
		}
		return tmp
	},

    // obsługa datepickera dla dwóch terminów
    onDatePickerSelect : function(a,b){
        var name = b.input.context.name; 
        var date = new Date(b.currentYear, b.currentMonth, b.currentDay);
        var ts = date.valueOf()/1000;

        var termin = f.getElementByName('termin');
        var rueckt = f.getElementByName('ruecktermin');
     
        if (name=='startdate'){
            termin.value = ts;
            
            if ( rueckt.value < (ts + qs.defaultTimeRange) ) 
                rueckt.value = ts + qs.defaultTimeRange;
           
            if ( rueckt.value > qs.termin_max )
                rueckt.value = qs.termin_max;
                
            $("form#quicksearch input[name='enddate']").datepicker('setDate', new Date( rueckt.value*1000 ))
            
        } else {
            rueckt.value = ts;

            if ( termin.value > (ts - qs.defaultTimeRange) ) termin.value = ts - qs.defaultTimeRange;
           
            if ( termin.value < qs.termin_min ) termin.value = qs.termin_min;

            $("form#quicksearch input[name='startdate']").datepicker('setDate', new Date( termin.value*1000 ))
        }
        
        if (f.getElementByName('detail').value!='' && !qs.forbidAutoSubmit) qs.submitQuickSearch();
        
    },
    
    lessOptions:function(){
        $('.more_options','#quicksearch').slideUp();
        $('.togleqs:eq(0)','#quicksearch').css('visibility','visible');
		f.setElementValue('qsstate',1);		
    },

    moreOptions:function(){
        $('.more_options','#quicksearch').slideDown();
        $('.togleqs:eq(0)','#quicksearch').css('visibility','hidden');
		f.setElementValue('qsstate',1);
    },
	
	submitQuickSearch:function( det ){
		f.form.onsubmit();
		if (typeof det != 'undefined') {
			f.setElementValue('detail',det);
		} else if (det==false){
			
		} else {
			if (f.getElementByName('detail').value=='') {
				var t = this.recognizeNextDetail(f.getElementByName('sortedRegions').value);
				f.setElementValue('detail',t);
			}
		}
		//f.setElementValue({error_offer_number:'', startposition:0, startposition_hotel:0} );
		f.form.submit();
		
	},
	/*
	    // podłączenie datepickerów
    setDatePickerConfig: function() {
		return {
			dateFormat : 'yy-mm-dd',
			dayNamesMin : ['Nd','Pn','Wt','Sr','Cz','Pt','So'],
			monthNames : ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
			firstDay: 1 ,
			maxDate: new Date( this.termin_max * 1000 ),
			minDate: new Date( this.termin_min * 1000 ),
			onSelect: qs.onDatePickerSelect
		}
    },
	  */

	generateSortedRegions:function( regtable, sortingFunction ){
		var sortedRegions=[];
		for (var n in regtable) {
			parts=regtable[n].split('|');
			if (parts[1]>9999) {
				sortedRegions[parts[2]]=Array()

				sortedRegions[parts[2]][0]=parts[0];
				sortedRegions[parts[2]]['i']=parts[1];
			}
		}
		
		for (var n in regtable) {
			parts=regtable[n].split('|');
			if (parts[1]<10000) {
				sortedRegions[parts[2]][parts[1]]='&nbsp;-&nbsp;'+parts[0];
			}
		}		
	
		sortedRegions.sort();
		
		var out={};
		
		
		// @ to znacznik optgroup
 		for (var n in sortedRegions){
			var tmp = sortedRegions[n];
			for (var m in tmp){
				if (m!='i') out[ tmp.i + '|' + ((m==0)?tmp.i:m) ] = ((m==0 && this.useOptgroups)?'@':'')+tmp[m];
			}
		}
		
		return out;
	},
	

	
	init:function(){
		switch (parseInt(port)) {
			case 654 :  this.termin_min = termin_min_654;
						this.termin_max = termin_max_654;
						this.marke_array = arrMarke_654;
						if (window.TTREGS_654) this.reg_array = splitRegions(TTREGS_654);
						break;
			case 653 :  this.termin_min = termin_min_653;
						this.termin_max = termin_max_653;
						this.marke_array = arrMarke_653;
						break;
		}
		
		function splitRegions(r){
			out=[];
			for (var n=0; n<r.length; n++){
				out.push( r[n].split('|') );
			}
			return out;
		}
		
		$(document).ready(function(){
			if (qs.fields.detail!='' && !qs.forbidAutoSubmit) {
				$('#quicksearch select').not('#quicksearch select[name="sortedRegions"]').change(function(){qs.submitQuickSearch()})
	
				$('#quicksearch select[name="sortedRegions"]').change(
					function(){
						qs.onChangeRegionSelector(this.value, qs.fields.detail=='')
					}
				)
			};
		})
	},
	
	recognizeNextDetail:function( regdata){
		var temp = regdata.split('|');

		if(temp[0]==-1){
	
			return 'zielgebiet';	
			
		} else {
			if ( temp[1]!=temp[0]) {
				
				return 'hotel';

			} else {

				return (f.getElementByName('detail').value =='')?'zielgebiet':'hotel';
			}
		}		
	},
	
	
	onChangeRegionSelector:function( regdata, dontautosubmit ){

		//var el = f.getElementByName('sortedRegions');
		//var temp = el.value.split('|');

		var det = this.recognizeNextDetail(regdata);

		if (!dontautosubmit) {
			qs.submitQuickSearch( det);
		} else {
			f.setElementValue( {'detail':det} );
		}

	},
		
	getMarkeArray:function (){
		switch (parseInt(port)) {
			case 655 :  return arrMarke_655;
			case 654 :  return arrMarke_654;
			case 653 :  return arrMarke_653;
			default :	return null;
		}		
	},
	
	datePickerConfig:function(){
		return {
			dateFormat : 'yy-mm-dd',
			dayNamesMin : ['Nd','Pn','Wt','Sr','Cz','Pt','So'],
			monthNames : ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
			firstDay: 1 ,
			maxDate: new Date( this.termin_max * 1000 ),
			minDate: new Date( this.termin_min * 1000 ),
			onSelect: this.onDatePickerSelect
    }},
	
	orderKids: function( initialValues ) { // porządkuje dowolną ilość lsit z wybranym wiekiem dzieci. Warunek: w obiekcie "initialValues" i na stronie pola z wiekiem dzieci muszą mieć nazwę "alter1", "alter2", "alter3", "alter4" itd.
		var kidsQuantity = 0; // ilość pól dla dzieci:
		while(eval('initialValues.alter' + (kidsQuantity + 1))) {
			kidsQuantity++;
		}
		for(var i = 1; i < kidsQuantity; i++) {
			if($('#alter' + i).val() != '-1') { continue; }
			for(var j = i + 1; j <= kidsQuantity; j++) {
				if($('#alter' + j).val() != '-1') {
					$('#alter' + i).val($('#alter' + j).val());
					$('#alter' + j).val('-1');
					break;
				}
			}
		}
	}
}
