var calendars = new Array();

function chDay (idx) {
    //alert(document.forms['inputdata'].arrMonth.options[document.forms['inputdata'].arrMonth.selectedIndex].value.substr(5,2));
    switch ( idx ) {
    case 0:
        createCalendar('0',
            'depCalendar',
            'javascript:changeDate(0, \'depDay\', \'calendarDay\');',
            document.forms['inputdata'].depMonth.options[document.forms['inputdata'].depMonth.selectedIndex].value.substr(0,4),
            document.forms['inputdata'].depMonth.options[document.forms['inputdata'].depMonth.selectedIndex].value.substr(5,2),
            parseInt(document.forms['inputdata'].depDay.value, 10),
            new Array()
		);
        break;
    case 1: 
        createCalendar('1',
            'arrCalendar', 'javascript:changeDate(1, \'arrDay\', calendarDay);', 
             document.forms['inputdata'].arrMonth.options[document.forms['inputdata'].arrMonth.selectedIndex].value.substr(0,4),
            document.forms['inputdata'].arrMonth.options[document.forms['inputdata'].arrMonth.selectedIndex].value.substr(5,2),
            parseInt(document.forms['inputdata'].arrDay.value, 10),
            new Array()
		);
        //createCalendar( year, month, day, unavailable)
        break;
    }
}

function guessYear(day, month) {
  var today = getServerNow(); //new Date();
  day = parseInt(day,10);
  month = parseInt(month,10);
  if(month > today.getMonth()+1) return today.getFullYear();
  else {
    if(month == today.getMonth()+1) {
      if(day >= today.getDate()) return today.getFullYear();
      else return(today.getFullYear()+1);
    }
    else
      return(today.getFullYear()+1);
  }
}

function changeDate(idx, field, val) {
    eval("document.forms['inputdata']." + field + ".value = val;");
    var c = calendars[idx];
    createCalendar(idx, c[0], c[1], c[2], c[3], val, c[5]);
}

function getServerNow() {
    return new Date(serverNow.getFullYear(), serverNow.getMonth(), serverNow.getDate(), 
                    serverNow.getHours(), serverNow.getMinutes(), serverNow.getSeconds());
}

function IsLeapYear(y) {
   return (0 == y%4 && ((y%100 != 0) || (y%400 == 0)));
}

function DayEnd(mes, rok) {
   mes -= 1;
   pocet_dni = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   return ((IsLeapYear(rok)) && (mes == 1)) ? 29 : pocet_dni[mes];
}

function createCalendar(idx, divName, url, year, month, day, unavailable) 
{
    if(!year) {
        year = guessYear(day, month);
    }
    calendars[idx] = new Array(divName, url, year, month, day, unavailable);
    var out = "<div class='calendar'><table border='0' cellspacing='1'>";
    var monthStart = new Date(year, month - 1, 1);
    var index = (monthStart.getDay() + 6) % 7;

    out += "<tr>";
    for(var k = 0; k < 7; k++)
        out += "<td class='calendardays'>" + clndr_wnames[k] + "</td>";
    out += "</tr>";
    out += "<tr>";
    for(k = 0; k < index; k++)
        out += "<td>&nbsp;</td>";
    for(var d = 1; d <= 31; d++) {
        if(d > DayEnd(month, year)) break;
        if(k++ % 7 == 0) {
            k = 1;
            out += "</tr><tr>";
        }
        
        var css = '';
        if(d == day) {
            css = ' class="calendaractive"';
        }
        else if(k > 5) {
            css = ' class="calendarweekend"';
        }
        else {
            css =  '';
        }
        
        var link = '';
        if(unavailable[d] == null) {
            link = url.replace(/calendarDay/, d);
            if(css.length == 0)
                css = ' class="calendaravailable"';
        }
        
        if(link.length > 0)
            out += "<td" + css + "><a href=\"" + link +"\">" + d + "</a></td>";
        else
            out += "<td" + css + ">" + d + "</td>";
    }
    for(; k < 7; k++)
        out += "<td>&nbsp;</td>";
    out += "</tr>";
    out += "</table></div>";
    var el = document.getElementById(divName);
    if(el) {
        el.innerHTML = out;
    }
}

function switchHidden2(what)
{
	switch(what) {
		case 'oneway':
			typeOfFlight = 'oneway';
			switchVisibility('depIataRow2', 0);
            switchVisibility('arrCalendar', 0);
//			reLabel('from1suffix', '');
//			reLabel('to1suffix', '');
//			iterateSwitch('depDate2', 0, 1, 2);
//			iterateSwitch('depTimes2', 0, 1, 2);
			break;
		case 'roundtrip':
			typeOfFlight = 'roundTrip';
			switchVisibility('depIataRow2', 0);
            switchVisibility('arrCalendar', 1);			
//			reLabel('from1suffix', '');
//			reLabel('to1suffix', '');
//			iterateSwitch('depDate2', 1, 1, 2);
//			iterateSwitch('depTimes2', 1, 1, 2);
			break;
	}
}

