xajax.loadingFunction = meoverlayon;
xajax.doneLoadingFunction = meoverlayoff;

var cal1;
var cal2;
var cal3;
var cal4;

var Calendar1;

//zove xajax_modifyArrivalDate, koji može zvati svašta
//
function alertme1(s1, s2, s3, s4) {//console.log('function call: alertme1');
    var adate = cal1.getSelectedDates();
    var month = adate[0].getMonth()+1;
    cal1.hide();
   //console.log(adate[0].getDate() + ':::' + month + ':::' + adate[0].getFullYear() + ':::' + ses);
    xajax_modifyArrivalDate(adate[0].getDate(), month, adate[0].getFullYear(), ses);
}

function call_xajax_modifyArrivalDate_1() {//console.log('function call: call_xajax_modifyArrivalDate_1');
	var date = Calendar1.DatePickerGetFormattedDate('d')[0][0];
	var month = Calendar1.DatePickerGetFormattedDate('m')[0][0];
	var year = Calendar1.DatePickerGetFormattedDate('Y')[0][0];
	//console.log(date + ', ' + month + ', ' + year + ', ' + ses);
	xajax_modifyArrivalDate(date, month, year, ses);
}

//

//zove xajax_modifyDepartureDate, koji ne zove ništa
function alertme2() {//console.log('function call: alertme2');
    var adate = cal2.getSelectedDates();
    var month = adate[0].getMonth()+1;
    cal2.hide();
    
    xajax_modifyDepartureDate(adate[0].getDate(), month, adate[0].getFullYear(), ses);
}

function call_xajax_modifyDepartureDate_1() {//console.log('function call: call_xajax_modifyDepartureDate_1');
	var date = Calendar1.DatePickerGetFormattedDate('d')[0][1];
	var month = Calendar1.DatePickerGetFormattedDate('m')[0][1];
	var year = Calendar1.DatePickerGetFormattedDate('Y')[0][1];
	xajax_modifyDepartureDate(date, month, year, ses);
}

//

//kalendar za vlak - nepotrebno
function alertme3() {//console.log('function call: alertme3');
    var adate = cal3.getSelectedDates();
    var month = adate[0].getMonth()+1;
    cal3.hide();
    
    xajax_modifyOutwardDate(adate[0].getDate(), month, adate[0].getFullYear(), ses);
}

function alertme4() {//console.log('function call: alertme4');
    var adate = cal4.getSelectedDates();
    var month = adate[0].getMonth()+1;
    cal4.hide();
    
    xajax_modifyReturnDate(adate[0].getDate(), month, adate[0].getFullYear(), ses);
}

//

//ova fja ograničava najmanji postavljivi datum na kalendaru br 2, s obzirom na postavljeni početni datum
//nepotrebno za novi kalendar, maknuti ovdje i cijeli blok iz xajax_functions.php
function setCal2MinDate(d, m, y) {//console.log('function call: setCal2MinDate(' + d + ',' + m + ',' + y + ')');
    cal2.cfg.setProperty("mindate", new Date(y,(m-1),d));
    cal2.render();
}

//uvjet if ($bModifiedDeparture), poziva se zajedno sa selectthechosendate2, postavlja najmanji i najveći postavljivi datum u kalendaru br 2 (zero index)
//najveći postavljivi (drugi argument - današnji datum) može biti manji najmanjeg ???
//poziva se ako se datum dolaska postavi na datum veći od postavljenog datuma dolaska
//nepotrebno za novi kalendar, maknuti ovdje i cijeli blok iz xajax_functions.php
function setCal2MinMaxDates(dmin, mmin, ymin, dmax, mmax, ymax) {//console.log('function call: setCal2MinMaxDates(' + dmin + ',' + mmin + ',' + ymin + ',' + dmax + ',' + mmax + ',' + ymax + ')');
    cal2.cfg.setProperty("mindate", new Date(ymin,(mmin-1),dmin));
    cal2.cfg.setProperty("maxdate", new Date(ymax,(mmax-1),dmax));
    cal2.render();
}

function setCal3MinMaxDates(dmin, mmin, ymin, dmax, mmax, ymax) {//console.log('function call: setCal3MinMaxDates');
    cal3.cfg.setProperty("mindate", new Date(ymin,(mmin-1),dmin));
    cal3.cfg.setProperty("maxdate", new Date(ymax,(mmax-1),dmax));
    cal3.render();
}

function setCal4MinMaxDates(dmin, mmin, ymin, dmax, mmax, ymax) {//console.log('function call: setCal4MinMaxDates');
    cal4.cfg.setProperty("mindate", new Date(ymin,(mmin-1),dmin));
    cal4.cfg.setProperty("maxdate", new Date(ymax,(mmax-1),dmax));
    cal4.render();
}

//


//postavlja izabrani datum za kalendar 1 nakon što je na tom kalendaru izabran datum
//koristi se kad se izabere datum veći od dopuštenog, zamjenjeno fjom ispod
function selectthechosendate(d,m,y) {//console.log('function call: selectthechosendate');
   cal1.selectEvent.unsubscribe(alertme1); 
   cal1.cfg.setProperty("pagedate", m+'/'+y);
   cal1.select(new Date(y,(m-1),d));
   cal1.render();
   
   cal1.selectEvent.subscribe(alertme1); 
}

function shiftAndReselectCal1(day, month, year) {//console.log('function call: deselectAndShiftCal1');
	Calendar1.DatePickerShift(month + '/' + year);
	Calendar1.DatePickerClear();
	Calendar1.DatePickerSetDate(day + '/' + month + '/' + year);
}


//

//postavlja kalendar br 2 na mjesec/godinu i odabire datum
//nepotrebno za novi kalendar
function selectthechosendate2(d,m,y) {//console.log('function call: selectthechosendate2');
   cal2.selectEvent.unsubscribe(alertme2); 
   cal2.cfg.setProperty("pagedate", m+'/'+y);
   cal2.select(new Date(y,(m-1),d));
   cal2.render();
   
   cal2.selectEvent.subscribe(alertme2); 
}

//postavlja kalendar br 3 na mjesec/godinu i odabire datum
//poziva se za vlak, nepotrebno, isključen poziv iz xajax_functions.php fja modifyArrivalDate
function selectthechosendate3(d,m,y) {//console.log('function call: selectthechosendate3');
   cal3.selectEvent.unsubscribe(alertme3); 
   cal3.cfg.setProperty("pagedate", m+'/'+y);
   cal3.select(new Date(y,(m-1),d));
   cal3.render();
   
   cal3.selectEvent.subscribe(alertme3); 
}

function selectthechosendate4(d,m,y) {//console.log('function call: selectthechosendate4');
   cal4.selectEvent.unsubscribe(alertme4); 
   cal4.cfg.setProperty("pagedate", m+'/'+y);
   cal4.select(new Date(y,(m-1),d));
   cal4.render();
   
   cal4.selectEvent.subscribe(alertme4); 
}

function initCalendar_1 (dateArrival, dateDeparture, dateFocus, dateMin, dateMax, allowedStartWeekdays) {
	
	//console.log('function call: initCalendar_1(' + dateArrival + ', ' +  dateDeparture + ', ' +  dateFocus + ', ' + dateMin + ', ' +  dateMax + ', ' + allowedStartWeekdays + ')');
	
	//dafaults
	var allowedStartWeekdays = (allowedStartWeekdays == null) ? false : allowedStartWeekdays;
	
	Calendar1 = jQuery('#calendar1').DatePicker({
		flat: true,
		date: (dateArrival && dateDeparture ? [dateArrival, dateDeparture] : []),
		current: dateFocus,
		calendars: 2,
		format: 'd/m/Y',
		mode: 'range',
		allowedStartWeekdays: allowedStartWeekdays,
		dateMin: (dateMin ? dateMin : false),
		dateMax: (dateMax ? dateMax : false),
		onChange: function(formated, dates) {
			//jQuery('span#date_in').html(formated[0]);
			//jQuery('span#date_out').html('');
			if (formated[0] == formated[1]) {
				step1State(0);
				call_xajax_modifyArrivalDate_1();
			}
			else {
				call_xajax_modifyDepartureDate_1();
				//jQuery('span#date_out').html(formated[1]);
			}
		},
		starts: 1
	});
	
	jQuery('#clearSelection, #clearSelection1, #clearSelection2, #clearSelection3').bind('click', function(){
		jQuery('#calendar1').DatePickerClear();
		step1State(0);
		return false;
	});
	
}

function step1State (step) {
	jQuery('#calendar1-state-container').removeClass();
	switch (step) {
		case '1':
			jQuery('#calendar1-state-container').addClass('calendar1-state1');
			break;
		case '2':
			jQuery('#calendar1-state-container').addClass('calendar1-state2');
			break;
		case '3':
			jQuery('#calendar1-state-container').addClass('calendar1-state3');
			//jQuery('#calendar1-state-container').find('input').show();
			break;
		default:
			jQuery('#calendar1-state-container').addClass('calendar1-state1');
			jQuery('#calendar1-state-container').find('.date').html('-- -- --');
			jQuery('#ifo_des_link').find('.date').html('-- -- --');
			//jQuery('#calendar1-state-container').find('input').hide();
			jQuery('#calendar1-date-summary').find('.date').html('-- -- --');
			break;
	}
}

function initCal1(s, p, l, h, a) {//console.log('function call: initCal1');
	
	var tabA = new Array();
	
	if(a != null && a!="") {
		
		tabA = a.split(",");
		
	}

	cal1 = new YAHOO.widget.Calendar(
			"cal1",
			"cal1Container", 
			{
					close:true,
					selected:s,
					pagedate:p,
					mindate :l,
					maxdate :h,
					authorized :tabA
			}
	);

	cal1.selectEvent.subscribe(alertme1);//poziva: xajax_modifyArrivalDate(adate[0].getDate(), month, adate[0].getFullYear(), ses);

	//ndaniloff - jour suivant si s est dans la liste des jours restreints (next day if s is in the restricted list of days)
	if(tabA.length > 0) {
		var adate = new Array();
		var dateTab = s.split("/");
		adate[0] = new Date(dateTab[2], dateTab[0]-1, dateTab[1]);
		var day = adate[0].getDay();
		
		reload = false;
		
		while(tabA.indexOf(""+day) == -1) {
			
			adate[0].setDate(adate[0].getDate()+1);
			day = adate[0].getDay();
			reload = true;
			
		}
		
		if(reload) {//console.log('reload!');
			
			xajax_modifyArrivalDate(adate[0].getDate(), adate[0].getMonth()+1, adate[0].getFullYear(), ses);
			cal1.cfg.setProperty("selected", adate);
			
		}
		
	}
	//end ndaniloff

	cal1.render();
	YAHOO.util.Event.addListener("show1up", "click", cal1.show, cal1, true); 
	cal1.hide();
		
}

function initCal2(s, p, l, h) { //console.log('function call: initCal2');
    cal2 = new YAHOO.widget.Calendar(
        "cal2",
        "cal2Container", 
        {
            close:true,
            selected:s,
            pagedate:p,
            mindate :l,
            maxdate :h
        }
   );
   cal2.selectEvent.subscribe(alertme2); 
   cal2.render();
   YAHOO.util.Event.addListener("show2up", "click", cal2.show, cal2, true); 
   cal2.hide();
} 

function initCal3(s, p, l, h) { //console.log('function call: initCal3');
    cal3 = new YAHOO.widget.Calendar(
        "cal3",
        "cal3Container", 
        {
            close:true,
            selected:s,
            pagedate:p,
            mindate :l,
            maxdate :h
        }
   );
   cal3.selectEvent.subscribe(alertme3); 
   cal3.render();
   YAHOO.util.Event.addListener("show3up", "click", cal3.show, cal3, true); 
   //cal3.hide();
} 

function initCal4(s, p, l, h) { //console.log('function call: initCal4');
    cal4 = new YAHOO.widget.Calendar(
        "cal4",
        "cal4Container", 
        {
            close:true,
            selected:s,
            pagedate:p,
            mindate :l,
            maxdate :h
        }
   );
   cal4.selectEvent.subscribe(alertme4); 
   cal4.render();
   YAHOO.util.Event.addListener("show4up", "click", cal4.show, cal4, true); 
   //cal4.hide();
} 
