// JavaScript Document
(function() {
    var Dom = YAHOO.util.Dom,
        Event = YAHOO.util.Event,
        cal1,
        over_cal = false,
        cur_field = '',
		alarm=false,
		cur_date=new Date();
		cur_date.setDate(cur_date.getDate()+2);
		cur_date=cur_date.getDate()+'/'+(cur_date.getMonth() + 1) + '/' + cur_date.getFullYear();
	var end_date=new Date();
		end_date.setDate(end_date.getDate()+360);
		end_date=end_date.getDate()+'/'+(end_date.getMonth() + 1) + '/' + end_date.getFullYear();

    var init = function() {
        cal1 = new YAHOO.widget.Calendar("cal1","cal1Container");
        cal1.selectEvent.subscribe(getDate, cal1, true);
        cal1.renderEvent.subscribe(setupListeners, cal1, true);
        Event.addListener(['dataz1', 'dataz2', 'dataz3'], 'focus', showCal);
		Event.addListener(['cal1Show1','cal1Show2','cal1Show3'], 'click', showCal);
        Event.addListener(['dataz1', 'dataz2', 'dataz3', 'cal1Show1','cal1Show2','cal1Show3'], 'blur', hideCal);
        cal1.render();
    }

    var setupListeners = function() {
        Event.addListener('cal1Container', 'mouseover', function() {
            over_cal = true;
        });
        Event.addListener('cal1Container', 'mouseout', function() {
            over_cal = false;
        });
    }

    var getDate = function() {
			var dval1=Dom.get('dataz1');
			var dval2=Dom.get('dataz2');
			var dval3=Dom.get('dataz3');
            var calDate = this.getSelectedDates()[0];
            var calDte1 = calDate.getDate() + '/' + (calDate.getMonth() + 1) + '/' + calDate.getFullYear();
			
			if(dval1==cur_field && dval2.value!='' && dval3.value==''){
					var vdate1=calDte1.split('/');
					var vdate2=dval2.value.split('/');
					var startdate1=new Date(vdate1[2], vdate1[1]-1, vdate1[0]);
					var startdate2=new Date(vdate2[2], vdate2[1]-1, vdate2[0]);
					if(startdate1>startdate2){
						dval2.value=calDte1;
						Dom.get('dataz2').style.backgroundColor='#FFD5D5';
					}else{
						Dom.get('dataz2').style.backgroundColor='#FFFFFF';
					}
			}
			if(dval2==cur_field && dval3.value!=''){
					var vdate2=calDte1.split('/');
					var vdate3=dval3.value.split('/');
					var startdate2=new Date(vdate2[2], vdate2[1]-1, vdate2[0]);
					var startdate3=new Date(vdate3[2], vdate3[1]-1, vdate3[0]);
					if(startdate2>startdate3){
						dval3.value=calDte1;
						Dom.get('dataz3').style.backgroundColor='#FFD5D5';
					}else{
						Dom.get('dataz3').style.backgroundColor='#FFFFFF';
					}
			}
			if(dval1==cur_field && dval2.value!='' && dval3.value!=''){
					var vdate1=calDte1.split('/');
					var vdate2=dval2.value.split('/');
					var vdate3=dval3.value.split('/');
					var startdate1=new Date(vdate1[2], vdate1[1]-1, vdate1[0]);
					var startdate2=new Date(vdate2[2], vdate2[1]-1, vdate2[0]);
					var startdate3=new Date(vdate3[2], vdate3[1]-1, vdate3[0]);
					if(startdate1>startdate2){
						dval2.value=calDte1;
						Dom.get('dataz2').style.backgroundColor='#FFD5D5';
					}else{
						Dom.get('dataz2').style.backgroundColor='#FFFFFF';
					}
					if(startdate1>startdate3){
						dval3.value=dval2.value;
						Dom.get('dataz3').style.backgroundColor='#FFD5D5';
					}else{
						Dom.get('dataz3').style.backgroundColor='#FFFFFF';
					}
			}
			
			
			
            cur_field.value = calDte1;            
            over_cal = false;
            hideCal();
    }

    var showCal = function(ev) {
        var tar = Event.getTarget(ev);
			if(tar.id=='cal1Show1'){
				tar=Dom.get('dataz1');
			}
			if(tar.id=='cal1Show2'){
				tar=Dom.get('dataz2');
			}
			if(tar.id=='cal1Show3'){
				tar=Dom.get('dataz3');
			}			
        cur_field = tar;
    
        var xy = Dom.getXY(tar),
            date = Dom.get(tar).value,
			begindate='';

			var dval1=Dom.get('dataz1');
			var dval2=Dom.get('dataz2');
			var dval3=Dom.get('dataz3');
			
			cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
			cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
			cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);

			cal1.cfg.setProperty("MD_DAY_POSITION", 1);
			cal1.cfg.setProperty("MD_MONTH_POSITION", 2);
			
			cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Nd", "Pn", "Wt", "Śr", "Cz", "Pt", "So"]);
			cal1.cfg.setProperty("MONTHS_LONG",    ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"]);
			var navConfig = {
					strings : {
								month: "Miesiąc",
								year: "Rok",
								submit: "Wybierz",
								cancel: "Anuluj",
								invalidYear: "Pole Rok ma niepoprawną wartość"
					},
					initialFocus: "year"
					}; 

        if (date) {
			if(dval2==tar && dval1.value==''){
				dval1.value=dval2.value;
			}else
			if((dval3==tar) && (dval1.value=='' || dval2.value=='')){
				if(dval1.value==''){
				dval1.value=dval3.value;
				}
				if(dval2.value==''){
				dval2.value=dval3.value;
				}
			}			
			
				var ndate=date.split('/');
				var seldate=ndate[1]+'/'+ndate[2];
				var chosdate=ndate[0]+'/'+ndate[1]+'/'+ndate[2];			
				begindate=cur_date;
			
				if(dval2==tar && dval1.value!=''){
					var vdate1=dval1.value.split('/');
					var vdate2=dval2.value.split('/');
					var startdate1=new Date(vdate1[2], vdate1[1]-1, vdate1[0]);
					var startdate2=new Date(vdate2[2], vdate2[1]-1, vdate2[0]);
					if(startdate1<startdate2){
						begindate=vdate1[0]+'/'+vdate1[1]+'/'+vdate1[2];
						seldate=vdate2[1]+'/'+vdate2[2];						
					}else{
						begindate=vdate1[0]+'/'+vdate1[1]+'/'+vdate1[2];
						seldate=vdate1[1]+'/'+vdate1[2];
					}
					Dom.get('dataz2').value='';
					Dom.get('dataz2').style.backgroundColor='#FFFFFF';
				}
				if(dval1==tar && dval2.value!=''){
					var vdate1=dval1.value.split('/');
					begindate=cur_date;
					seldate=vdate1[1]+'/'+vdate1[2];
					//Dom.get('dataz1').value='';
					Dom.get('dataz1').style.backgroundColor='#FFFFFF';
				}
				if(dval3==tar && dval2.value!=''){
					var vdate2=dval2.value.split('/');
					var vdate3=dval3.value.split('/');
					var startdate2=new Date(vdate2[2], vdate2[1]-1, vdate2[0]);
					var startdate3=new Date(vdate3[2], vdate3[1]-1, vdate3[0]);
					if(startdate2<startdate3){
						begindate=vdate2[0]+'/'+vdate2[1]+'/'+vdate2[2];
						seldate=vdate3[1]+'/'+vdate3[2];						
					}else{
						begindate=vdate2[0]+'/'+vdate2[1]+'/'+vdate2[2];
						seldate=vdate2[1]+'/'+vdate2[2];
					}
					Dom.get('dataz3').value='';
					Dom.get('dataz3').style.backgroundColor='#FFFFFF';	
				}			
			
			

            	cal1.cfg.setProperty('selected', chosdate);
            	cal1.cfg.setProperty('pagedate', seldate);
				cal1.cfg.setProperty('mindate', begindate);
				cal1.cfg.setProperty('maxdate', end_date);
				cal1.cfg.setProperty('navigator', navConfig);
				cal1.cfg.setProperty('hide_blank_weeks', true);
				cal1.cfg.setProperty('start_weekday', 1);
				cal1.cfg.setProperty('iframe', false);
			
        } else {
			if(dval2==tar && dval1.value==''){
				alert('Nie wybrano daty wylotu dla pierwszego segmentu!');
				alarm=true;
			}else
			if((dval3==tar) && (dval1.value=='' || dval2.value=='')){
				alert('Nie wybrano daty wylotu dla pierwszego lub drugiego segmentu!');
				alarm=true;
			}else{
			var ndate=cur_date.split('/');
			var seldate=ndate[1]+'/'+ndate[2];			
			begindate=cur_date;
			
			if(dval2==tar && dval1.value!=''){
				var vdate1=dval1.value.split('/');
				begindate=vdate1[0]+'/'+vdate1[1]+'/'+vdate1[2];
				seldate=vdate1[1]+'/'+vdate1[2];
			}
			if(dval3==tar && dval2.value!=''){
				var vdate2=dval2.value.split('/');
				begindate=vdate2[0]+'/'+vdate2[1]+'/'+vdate2[2];
				seldate=vdate2[1]+'/'+vdate2[2];
			}	
			
			
            cal1.cfg.setProperty('selected', '');
            cal1.cfg.setProperty('pagedate', seldate);
			cal1.cfg.setProperty('mindate', begindate);
			cal1.cfg.setProperty('maxdate', end_date);
			cal1.cfg.setProperty('navigator', navConfig);
			cal1.cfg.setProperty('hide_blank_weeks', true);
			cal1.cfg.setProperty('start_weekday', 1);
			cal1.cfg.setProperty('iframe', false);
			}
        }

		
		
		
		if(alarm===false){
        	cal1.render();
       	 	Dom.setStyle('cal1Container', 'display', 'block');
        	xy[1] = xy[1] + 17;
			xy[0] = xy[0] - 50;
        	Dom.setXY('cal1Container', xy);
		}else{
			alarm=false;
		}
    }
	



    var hideCal = function() {
        if (!over_cal) {
            Dom.setStyle('cal1Container', 'display', 'none');

        }
			var showBtn = Dom.get("cal1Show1");
			var showBtn2 = Dom.get("cal1Show2");
			var showBtn3 = Dom.get("cal1Show3");
			var tfield1 = Dom.get("dataz1");
			var tfield2 = Dom.get("dataz2");
			var tfield3 = Dom.get("dataz3");
		Event.on(document, "click", function(e) {
                    var el = Event.getTarget(e);
                    var dialogEl = document.getElementById('cal1Container');
     if (el != dialogEl && !Dom.isAncestor(dialogEl, el) && el != showBtn && el != showBtn2 && el != showBtn3 && !Dom.isAncestor(showBtn, el) && el != tfield1 && el != tfield2 && el != tfield3) {
                        Dom.setStyle('cal1Container', 'display', 'none');
                    }
                });	

    }

    Event.addListener(window, 'load', init);

})();
