function FilterMenuIniter(){
	
		//form check a uncheck
		var checkIt=function(elem){
				elem.checked=true;
				Dom.addClass(elem,'checked');
				Dom.setAttribute(elem,"checked","checked");
		}
		
		var unCheckIt=function(elem){
				elem.checked=false;
				Dom.removeClass(elem,'checked');
				elem.removeAttribute('checked');
		}
	
		/**
		 * Nacte parametry do aktualniho menu
		 * @param 
		 *
		 */
		 this.filterMenuSet = function() {
			 
			var searchData = this.getFilterConfig();
			 
			if ( typeof(searchData)=="object" ){
								
				// prochazim vsechny polozky dat z vyhledavace
				for (var x in searchData){
					
					// slozeni ceny 
					if (x=="cenaOd"||x=="cenaDo"){
						var relatedFormContainer = Dom.get("filtrCenaContent");
						var inputs = Dom.getElementsBy(function(elem){return elem.type == "checkbox"},'input',relatedFormContainer);
						
						if (inputs.length>0){
							
							// odskrtnu nerozhoduje
							var nerozhoduje = Dom.getElementBy(function(elem){return elem.value.indexOf("nerozhoduje")==0},'input',relatedFormContainer);
							if (nerozhoduje){unCheckIt(nerozhoduje)};
							
							// oznacit vsechny inputy za vybranym
							var searchInputsAndCheckByValue = function(inputs,value){
								var doc = searchData['cenaDo'];
								var od = searchData['cenaOd'];
								
								for (z=0;z<inputs.length;z++){
									if ( (inputs[z].value.split("-")[0]>= od ) && (inputs[z].value.split("-")[1])<=doc ){
										checkIt(inputs[z]);
									}
								}
							}
							
							// oznacit vsechny inputy pred
							var checkAllNextInputSiblinks = function(input){
								var nextInput = Dom.getNextSiblingBy(input,function(elem){return elem.tagName=="INPUT"});
								if (nextInput){
									checkIt(nextInput);
									//setPriceLabel(nextInput);
									arguments.callee(nextInput);
								}
							}
							
							var checkAllPreviousInputSiblinks = function(input){
								var PreviousInput = Dom.getPreviousSiblingBy(input,function(elem){return (elem.tagName=="INPUT" && elem.value!="nerozhoduje")});
								if (PreviousInput){
									checkIt(PreviousInput);
									//setPriceLabel(PreviousInput);
									arguments.callee(PreviousInput);
								}
							}
							
							// pokud mame jen cenu do ... musime vyplnit vsechny polozky pred ni
							if (x=="cenaOd" && !searchData['cenaDo']){
								// alert('just Od');
								
								var input = Dom.getElementBy(function(elem){return elem.value.indexOf(searchData[x])>(-1)},'input',relatedFormContainer);
								checkIt(input);
								//setPriceLabel(input);
								checkAllNextInputSiblinks(input);
								
								
							// pokud mame jen cenu od ... musime vyplnit vsechny polozky za ni
							} else if (x=="cenaDo" && !searchData['cenaOd']) {
								
								var input = Dom.getElementBy(function(elem){return elem.value.indexOf(searchData[x])>(-1)},'input',relatedFormContainer);
								checkIt(input);
								//setPriceLabel(input);
								checkAllPreviousInputSiblinks(input);
								
							} else {
								searchInputsAndCheckByValue(inputs,searchData[x]);
								
							}
						}
						
					// mame oznaceny checky ve formulari tak setnem label
					if (searchData['cenaOd'] || searchData['cenaDo']){
						
						var relatedFormContainer = Dom.get("filtrCenaContent");
						var relatedLabelHolder = Dom.getFirstChild(Dom.get("c"));
						var inputs = Dom.getElementsBy(function(elem){return elem.type == "checkbox"},'input',relatedFormContainer);
						
						for (var k=0;k<inputs.length;k++){
							if (inputs[k].checked){
								var relatedLabel = Dom.getNextSibling(inputs[k]).innerHTML;
								
								if (Dom.hasClass(relatedLabelHolder,'virgin') || relatedLabelHolder.innerHTML==Dom.getNextSibling(inputs[k]).innerHTML){
									Dom.removeClass(relatedLabelHolder,'virgin');
									relatedLabelHolder.innerHTML = relatedLabel;
								} else {
									relatedLabelHolder.innerHTML = "Více položek ...";
								}
								
							}
						}
					}

					// vlozeni lastminute 
					} else if (x=="lm" && searchData[x]==true) {
						checkIt(Dom.get("checkFilterLastminute"));
						
					// vlozeni casu
					} else if (x=="od"||x=="do") {
						
						switch (x){
							case "od":
								var relatedLabelHolder = Dom.getFirstChild(Dom.get("od"));
								Dom.get("datum_odlet").value = searchData[x];
							break;
							case "do":
								var relatedLabelHolder = Dom.getFirstChild(Dom.get("do"));
								Dom.get("datum_prilet").value = searchData[x];
							break;
						}
						
						Dom.removeClass(relatedLabelHolder,'virgin');
						relatedLabelHolder.innerHTML = searchData[x];
					
					// ostatni polozky
					} else {
						
						// hacky kuli polozkam ktere jsou ve spolecnem containeru s jinymi ktere maji odlisny url parametr ... takze se jim podstrkuje manualne jiny container
						
						switch(x){

							case "z":
								var idContainer = Dom.get('d').className.split(" ")[Dom.get('d').className.split(" ").length-1];	
							break;
							case "sa":
								var idContainer = Dom.get('h').className.split(" ")[Dom.get('h').className.split(" ").length-1];	
							break;
							default:
								if (Dom.get(x)){
									var idContainer = Dom.get(x).className.split(" ")[Dom.get(x).className.split(" ").length-1];							
								}
							}
						
						var relatedFormContainer = Dom.get(idContainer);
						var inputs = Dom.getElementsBy(function(elem){return elem.type == "checkbox"},'input',relatedFormContainer);
						
						// mame inputy muzem porovnavat
						if (inputs.length>0){
							// prochazim vsechny inputy v dane skupine ve formulari
							for (z=0;z<inputs.length;z++){
								// vice vybranych moznosti
								if (searchData[x][0]){
									for (var g in searchData[x]){
										if (inputs[z].value==searchData[x][g]){
											// odskrtnu nerozhoduje
											var nerozhoduje = Dom.getElementBy(function(elem){return elem.value.indexOf("nerozhoduje")==0},'input',relatedFormContainer);
											if (nerozhoduje){unCheckIt(nerozhoduje)};
											//zaskrtnu input
											checkIt(inputs[z]);
											// vyplnim label
											
											// hacky kuli polozkam ktere jsou ve spolecnem containeru s jinymi ktere maji odlisny url parametr ... takze se jim podstrkuje manualne jiny container
											switch(x){
												case "z":
													var relatedLabelHolder = Dom.getFirstChild(Dom.get('d'));
												break;
												case "sa":
													var relatedLabelHolder = Dom.getFirstChild(Dom.get('h'));
												break;
												default:
													var relatedLabelHolder = Dom.getFirstChild(Dom.get(x));
												}
													
											
											var relatedLabel = Dom.getNextSibling(inputs[z]).innerHTML;
											if (Dom.hasClass(relatedLabelHolder,'virgin')){
												Dom.removeClass(relatedLabelHolder,'virgin');
												relatedLabelHolder.innerHTML = relatedLabel;
											} else {
												relatedLabelHolder.innerHTML = "Více položek ...";
											}
										}
									}
									
								// jedna vybrana moznost
								} else {

									if (inputs[z].value==searchData[x]){
										// odskrtnu nerozhoduje
										var nerozhoduje = Dom.getElementBy(function(elem){return elem.value.indexOf("nerozhoduje")==0},'input',relatedFormContainer);
										if (nerozhoduje){unCheckIt(nerozhoduje)};
										
										// zaskrtnu input
										checkIt(inputs[z]);
										
											// hacky kuli polozkam ktere jsou ve spolecnem containeru s jinymi ktere maji odlisny url parametr ... takze se jim podstrkuje manualne jiny container
											switch(x){
												case "z":
													var relatedLabelHolder = Dom.getFirstChild(Dom.get('d'));
												break;
												case "sa":
													var relatedLabelHolder = Dom.getFirstChild(Dom.get('h'));
												break;
												default:
													var relatedLabelHolder = Dom.getFirstChild(Dom.get(x));
												}
										
										var relatedLabel = Dom.getNextSibling(inputs[z]).innerHTML;
										if (Dom.hasClass(relatedLabelHolder,'virgin')){
											Dom.removeClass(relatedLabelHolder,'virgin');
											relatedLabelHolder.innerHTML = relatedLabel;
										} else {
											relatedLabelHolder.innerHTML = "Více položek ...";
										}
									}
								}
							} 
						}
					}
				}
			}
		}
		
		/**
		 * @return void
		 */
		this.deleteMenuData = function(){
			YAHOO.util.Cookie.remove("bssearchconfig",{path:"/", secure: false});	
		}
		
		/**
		 *
		 * @return object literal z cookie 
		 */ 
		this.getFilterConfig = function(){
			var retVal = YAHOO.util.Cookie.get("bssearchconfig",{path:"/", secure: false});
			
			if (retVal){
				try {
					retVal = YAHOO.lang.JSON.parse(retVal);
					return retVal;
				} catch (ex) {
					return false
				}
			} else {
				return false
			}
		}
		
		/**
		 * sestavi formData objekt pro storeFilterConfig
		 * @param string url vyhledavani
		 * @return Object literal formData pro this.storeFilterConfig
		 */
		this.storeMenuDataFromURL = function(externalSearchData,Initer){

			var FormDataObj = YAHOO.lang.JSON.parse(externalSearchData);

			if (FormDataObj["cenaOd"]) {FormDataObj["cenaOd"] = parseInt(FormDataObj["cenaOd"][0].split("-")[0])};
			if (FormDataObj["cenaDo"]) {FormDataObj["cenaDo"] = parseInt(FormDataObj["cenaDo"][0].split("-")[1])};
			
			if (FormDataObj["od"]) {FormDataObj["od"] = FormDataObj["od"][0]};
			if (FormDataObj["do"]) {FormDataObj["do"] = FormDataObj["do"][0]};

			var FormDataObj = YAHOO.lang.JSON.stringify(FormDataObj);
			YAHOO.util.Cookie.set("bssearchconfig", FormDataObj,{path:"/", secure: false}); 
			
			if (YAHOO.util.Cookie.get("bssearchconfig")){
				
				Initer.filterMenuSet();
			}
			
		}
		
		/*
		 * @return ulozeni do cookie json stringify:
		 *  	 {
		 *			"sa" : "[:jenomStudioApartman:]",
		 *			"od": "[:datumOd:]",
		 *			"do": "[:datumDo:]",
		 *			"cenaOd": "[:cenaOd:]",
		 *			"cenaDo": "[:cenaDo:]",
		 *			"z": [[:aplKodyZemi:]],
		 *			"d": [[:aplKodyDestinaci:]],
		 *			"dz": [[:delkyZajezdu:]],
		 *			"o": [[:aplKodyMistOdletu:]],
		 *			"s": [[:aplKodyStravovani:]],
		 *			"p": [[:aplKodyProfiluDovolene:]],
		 *			"h": [[:poctyHvezd:]],
		 *			"lm" : [:jenomLastMinute:]
		 *		 }';
		 */
		this.storeFilterConfig = function(formData){
			
			var retValObj = {}
			
			if (formData['sa'])		retValObj.sa 		= formData.sa;
			if (formData['od']) 	retValObj.od 		= formData.od;
			if (formData['do']) 	retValObj['do'] 	= formData['do'];
			if (formData['cenaOd']) retValObj.cenaOd 	= formData.cenaOd;
			if (formData['cenaDo']) retValObj.cenaDo 	= formData.cenaDo;
			if (formData['z']) 		retValObj.z 		= formData.z.split(",");
			if (formData['d']) 		retValObj.d 		= formData.d.split(",");
			if (formData['dz']) 	retValObj.dz 		= formData.dz.split(",");
			if (formData['o']) 		retValObj.o 		= formData.o.split(",");
			if (formData['s']) 		retValObj.s 		= formData.s.split(",");
			if (formData['p']) 		retValObj.p 		= formData.p.split(",");
			if (formData['h']) 		retValObj.h 		= formData.h.split(",");
			if (formData['lm']) 	retValObj.lm 		= formData.lm;

			var retVal = YAHOO.lang.JSON.stringify(retValObj);
			YAHOO.util.Cookie.set("bssearchconfig", retVal,{path:"/", secure: false}); 
			if (YAHOO.util.Cookie.get("bssearchconfig")){
				return true;
			} else {
				return false;				
			}
			
		}
		
		// funkce vrati search url z aktualniho nastaveni widgetu ================================
		this.getUrlString = function(){
			
			var filterForm = Dom.get("searchData");
			
			// Nejdriv si do literalu pripravim pouze klice jednotlivych parametru vyhledavani podle namu inputu
			// {d:"",z:"",s:""}
			var formData = {};
			var formElems = Dom.getElementsByClassName('checked', 'input' , filterForm);
			for (var x=0;x<formElems.length; x++){
				// Eu hack ... neni zeme eurovikendy, takze musim vzit vsechny eu destinace a vlozit je jako d
				if (formElems[x].value=="eurovikendy"){
					formData["d"] = "";
				}
				if (formElems[x].value && formElems[x].value!="nerozhoduje" && formElems[x].value!="eurovikendy"){
					formData[formElems[x].name] = "";
				}
			}
			
			// naplnim klice literalu lepenim hodnot se stejnym namem
			for (var x=0;x<formElems.length;x++ ){
				if (formElems[x].value && formElems[x].value!="nerozhoduje"){
					// Eu hack ... neni zeme eurovikendy, takze musim vzit vsechny eu destinace a vlozit je jako d
					if (formElems[x].value=="eurovikendy"){
						var eus = Dom.getElementsByClassName("eu","input",formElems[x].parentNode);
						for (var i=0;i<eus.length;i++ ){
							formData[eus[i].name] += formData[eus[i].name]=="" ? eus[i].value : ","+eus[i].value;
						}
					} else {
						formData[formElems[x].name] += formData[formElems[x].name]=="" ? formElems[x].value : ","+formElems[x].value;
					}
				}
			}

			if (formData['lm']){
				formData['lm']="1";
			}
			// vypocet max a min ceny
			if (formData['cena']){
				// vytvorim si pole vsech cen ktere se dostaly do vyhledavani
				var cenyAll = formData['cena'].replace(/,/g,"-").split("-");
				delete(formData['cena']);

				// zde je cilem projit vsechny ceny a izolovat nejvetsi a nejmensi
				var cenaOd = 999999;
				var cenaDo = 0;

				for (var x=0; x < cenyAll.length; x++){
					cenaOd = Math.min(cenaOd,cenyAll[x]);
					cenaDo = Math.max(cenaDo,cenyAll[x]);
				}
				
				if (cenaOd > 0) {
					formData['cenaOd'] = cenaOd;
				}
				if (cenaDo <= 23000) {
					formData['cenaDo'] = cenaDo;
				}
			}
			
			//prefix
			var getStrig = "/zajezdy/vyhledavani/";
			function isEmpty(ob){
				for(var i in ob){ return false; }
				return true;
			}
			// validace 
			if (isEmpty(formData)){
				alert("Zvolte prosím parametry vyhledávání.");
				return;
			} else {
				
				this.storeFilterConfig(formData);
				
				//slozeni stringu
				var counter = 0;
				for (var x in formData){
					getStrig+=x+"="+formData[x]+"|";
				}
				
				// pridani parametru textoveho zobrazeni
					if (window.location.href.indexOf("tz=text")>0){
						getStrig = getStrig+"tz=text";
					} else {
						getStrig = getStrig.substring(0,getStrig.length-1);					
					}

				return getStrig;
			}
		}
			
		//Get url =================================================================
		this.gotoUrl = function(url){
			window.location = url;
			
		} 
	}
