
var getCal;

(function(){

	/* Toto je custom kalendar pouze pro filterwidget  */

	// nacitani zadanych dat do tohoto kalendare je haknute pro safari, ktery to nepodporuje
	var notSafari = (navigator.userAgent.indexOf('Safari')<0);

						

						
	
	/**
	 * Otevre kalendar pro filterwidget
	 *
	 */
	var getCalendar = function(e, data){
		if (e!=null){
			Ev.stopEvent(e);
		}
		
		var openedContentBoxes = Dom.getElementsByClassName("ctxBox");
		for (var x=0;x<openedContentBoxes.length; x++){
			openedContentBoxes[x].parentNode.removeChild(openedContentBoxes[x])
		}
	
		/* instant data */
		var targetLabel = data.targetLabel;
		var callingElement = data.callingElement;
		
		var calendarSmallParams = { 
									title:"<a href='javascript:resetFunction()' rel='"+callingElement.id+"' class='calreset' ></a>",
									close:true
							}
		
		// Počeštění kalendare
		var calendarSmall = new Cal("cal1","calendarSmall", calendarSmallParams); 
		calendarSmall.cfg.setProperty("MONTHS_SHORT",   ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čec", "Srp", "Zář", "Říj", "Lis", "Pro"]); 
		calendarSmall.cfg.setProperty("MONTHS_LONG",    ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"]); 
		calendarSmall.cfg.setProperty("WEEKDAYS_SHORT", ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"]); 
		calendarSmall.cfg.setProperty("WEEKDAYS_MEDIUM",["Ne", "Po", "Út", "St", "Čt", "Pá", "So"]); 
		calendarSmall.cfg.setProperty("WEEKDAYS_LONG",  ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"]);
		
				
		// Pokud mame vyplneny termin odletu || termin priletu, vytvorim si pole a vychozi YUI date format 
		var odletDataArr = Dom.getFirstChild(Dom.get("od")).innerHTML.split(".");
		if (odletDataArr.length==3){
			var odletData = odletDataArr[1]+"/"+odletDataArr[0]+"/"+odletDataArr[2];
		}
		
		var priletDataArr = Dom.getFirstChild(Dom.get("do")).innerHTML.split(".");
		if (priletDataArr.length==3){
			var priletData = priletDataArr[1]+"/"+priletDataArr[0]+"/"+priletDataArr[2];
		}

		var dneska = new Date();
		//dneska = dneska.getMonth()+1+"/"+dneska.getDate()+"/"+dneska.getFullYear();
		
		
		// Jedna li se o vyber data odletu
		if (callingElement.id == "od" && notSafari){
			
			// nastavim minimalni mozne datum na dnesni den
			calendarSmall.cfg.setProperty("mindate",dneska,false);
			
			// pokuz jsou pro tuto polozku zadana data
			if (odletData){
				// oznacim vybrany den
				calendarSmall.cfg.setProperty("selected",odletData,false);
				// presunu k nemu kalendar
				calendarSmall.cfg.setProperty("pagedate",odletDataArr[1]+"/"+odletDataArr[2]);
			}
			
			// pokud mame uz vybrane datum priletu, nastavime maximalni mozne datum prave na nej
			if (priletData){
				calendarSmall.cfg.setProperty("maxdate",priletData,false);	
			}


		// Jedna li se o vyber data priletu
		} else if (callingElement.id == "do" && notSafari){
			
			// nastavim minimalni vybratelne datum na dnesek (i kdyz by to melo byt tak plus 4 dny protoze se na kratsi mecheche nejezdi)
			calendarSmall.cfg.setProperty("mindate",dneska,false);
			
			// pokud jsou pro pro prilet zadana data
			if (priletData){
				//oznacim vybrany den
				calendarSmall.cfg.setProperty("selected",priletData,false);
				// presunu k nemu kalendar
				calendarSmall.cfg.setProperty("pagedate",priletDataArr[1]+"/"+priletDataArr[2]);
			} 
			
			// pokud jsou zadana data pro odlet
			if (odletData){
				// oznacim minimalni vybratelne datum na datum odletu
				calendarSmall.cfg.setProperty("mindate",odletData,false);
			}
			
			// pokud neni vybrano datum priletu tak ho nasmeruju k odletu 
			if (odletData && !priletData) {
				// presunu k nemu kalendar
				calendarSmall.cfg.setProperty("pagedate",odletDataArr[1]+"/"+odletDataArr[2]);
			}
			
		}
		

		
		function handleSelect(type,args,obj) { 
			var dates = args[0]; 
			var date = dates[0]; 
			var year = date[0], month = date[1], day = date[2]; 
			// hook kuli search widgetu
			if (Dom.hasClass(targetLabel,'virgin')){
				Dom.removeClass(targetLabel,'virgin');
			}
			
			// Pokud se jedna o filtraci zajezdu  vyplnim pole formulare
			if (Dom.getAncestorBy(function(elem){return elem.id=="filterMenu"}), callingElement){
				if (callingElement.id=="od"){
					Dom.get("datum_odlet").value = day + "." + month + "." + year;
				} else {
					Dom.get("datum_prilet").value = day + "." + month + "." + year;
				}
		
			}
			
			if(targetLabel.value){
				targetLabel.value = day + "." + month + "." + year; 
			} else {
				targetLabel.innerHTML = day + "." + month + "." + year; 
			}
			calendarSmall.hide();


		} 

		calendarSmall.selectEvent.subscribe(handleSelect,calendarSmall.cal1, true);
		
		if (data.doAfterClose){
			calendarSmall.beforeHideEvent.subscribe(data.doAfterClose);			
		}

		calendarSmall.render();

		/* Set position */
		var callingElementData = Dom.getRegion(callingElement);
		Dom.setStyle(Dom.get("calendarSmall"), 'top', (callingElementData.top-35)+"px");
		Dom.setStyle(Dom.get("calendarSmall"), 'left', (callingElementData.left+callingElementData.width-5)+"px");
			
		calendarSmall.show();
	
		
	}
	
	getCal = getCalendar;
	

	/**
	 * INIT
	 *
	 */
	var filterWidgetInit = function() {
		
		if (Dom.get("od")){
      Ev.addListener(Dom.get("od"), "click", getCalendar, {'size':'small','targetLabel':Dom.getFirstChild(Dom.get("od")) , 'callingElement':Dom.get("od"), 'doAfterClose':function(){true} });
		}
		if (Dom.get("do")){
        Ev.addListener(Dom.get("do"), "click", getCalendar, {'size':'small','targetLabel':Dom.getFirstChild(Dom.get("do")) , 'callingElement':Dom.get("do"), 'doAfterClose':function(){true} });
		}
		
		
	}
	Ev.onDOMReady(filterWidgetInit);
	
})();

	var resetFunction = function(){
		Dom.get("datum_odlet").value = "";
		Dom.get("datum_prilet").value = "";
		Dom.getFirstChild(Dom.get("do")).innerHTML = "";
		Dom.addClass(Dom.getFirstChild(Dom.get("do")),'virgin');
		Dom.getFirstChild(Dom.get("od")).innerHTML = "";
		Dom.addClass(Dom.getFirstChild(Dom.get("od")),'virgin');
		Dom.setStyle(Dom.get("calendarSmall"),'display','none');
		getCal(null,{'size':'small','targetLabel':Dom.getFirstChild(Dom.get(Dom.getElementsByClassName('calreset','a')[0].rel)) , 'callingElement':Dom.get(Dom.getElementsByClassName('calreset','a')[0].rel), 'doAfterClose':function(){true} })
	}



