var calendars = new Array();

function createCalendar(idx, divName, monthElementName, url, year, month, day, unavailable) {
    var click_url, link, field, css;
    
    if (!year) year = guessYear(day, month);
	var date_x = new Date(year,month-1,day);
	var date_now = getServerNow();
	if (date_x.getTime() < date_now.getTime()) {
		day = date_now.getDate();
		month = date_now.getMonth() + 1;
		year = date_now.getFullYear();
		click_url = url;
      	field = click_url.replace(/.*'([^']+)'.*/, '$1');
		eval("document.forms['"+formName+"']." + field + ".value = day;");
	}
	if (idx == 0) {
		if (calendars[1]) {
			var date_1 = new Date(year,month-1,day);
			var date_2 = new Date(calendars[1][2],calendars[1][3]-1,calendars[1][4]);
			if (date_1.getTime() > date_2.getTime()) {
				createCalendar(1, 'calendarDiv1', monthElementName, calendars[1][1], year, month, day, unavailable);
				click_url = calendars[1][1];
            	field = click_url.replace(/.*'([^']+)'.*/, '$1');
				changeDate(1, field, day);
				changeMonth(1, monthElementName, month);
			}
		}
	}
    calendars[idx] = new Array(divName, url, year, month, day, unavailable, monthElementName);
    var out = "<table class='calendar'>";
    var monthStart = new Date(year, month - 1, 1);
    var index = (monthStart.getDay() + 6) % 7;
    //out += "<tr><td colspan='7' class='calendarseason'>" + month + " / " + year + "</td></tr>";
    out += "<tr>";
    for(var k = 0; k < 7; k++)
        out += "<th>" + clndr_wnames[k] + "</th>";
    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>";
        }
        
        css = '';
        if(d == day) {
            css = ' class="active"';
        }
        else if(k > 5) {
            css = ' class="vacation"';
        }
        else {
            css =  '';
        }
        
        link = '';
        if(unavailable[d] == null) {
            link = url.replace(/calendarDay/, d);
            //if(css.length == 0) css = ' class="unavailable"';
            //link += '&';
        } else css = ' class="unavailable"';
        
        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>";
    var el = document.getElementById(divName);
    if(el) {
        el.innerHTML = out;
    }
    //alert(out);
    //return out;
}

function guessYear_old(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 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 return(today.getFullYear()+1);
}

function changeDate(idx, field, val) {
    eval("document.forms['"+formName+"']." + field + ".value = val;");
    var c = calendars[idx];
    createCalendar(idx, c[0], c[6], c[1], c[2], c[3], val, c[5]);
}
function changeMonth(idx, field, val) {
	var el, x, i;
	el = getElement(getFormByName(formName),field);
	for (x in depMonthNameOptions[idx]) {
		if (depMonthNameOptions[idx][x] == val) break;
	}
	for (i=0;i<el.options.length;i++) {
		if (el.options[i].value == x) {
			el.selectedIndex = i;
			break;
		}
	}
} 

function checkDay(value) {
  value = new String(value);
  return (value.search(regnum) == -1) ? false : true;
}

function getWholeDate(monthStr, dayStr) {
    var month = parseInt(monthStr,10)-1;
    var day = parseInt(dayStr,10);
    var today = getServerNow(); //new Date();
    var today_midnight = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);
    var guess_midnight = Date.UTC(today.getFullYear(), month, day, 0, 0, 0);
    var year = (guess_midnight  >= today_midnight) ? today.getFullYear() : today.getFullYear()+1;
    var date = new Date(year, month, day, 0, 0, 0);
    return date;
}
