var calendars = new Array();
var dateReminder = new Array();

function createCalendar(idx, divName, monthElementName, url, year, month, day, unavailable) {
    var click_url, link, field, css, nextDay;
    
	nextDay = day + 1;
	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 (calendars[idx+1] != undefined && calendars[idx+1].length) {
		
		var date_1 = new Date(year,month-1,nextDay);
		var date_2 = new Date(calendars[idx+1][2],calendars[idx+1][3]-1,calendars[idx+1][4]);
		
		if (date_1.getTime() > date_2.getTime()) {
			var divName2 = divName.substr(0,divName.length-1) + (idx + 1);

			createCalendar(idx+1, divName2, calendars[idx+1][6], calendars[idx+1][1], date_1.getFullYear(), date_1.getMonth()+1, date_1.getDate(), unavailable);
			click_url = calendars[idx+1][1];
        	field = click_url.replace(/.*'([^']+)'.*/, '$1');
			changeDate(idx+1, field, date_1.getDate(), true);
			changeMonth(idx+1, calendars[idx+1][6], date_1.getMonth()+1);
		}
	}

	dateReminder[idx] = day+'/'+month+'/'+year;
	generateNumberOfNights();

    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;
    //alert (calendars);
}

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, nodraw) {
	eval("document.forms['"+formName+"']." + field + ".value = val;");
    var c = calendars[idx];
	
	if (!nodraw) return createCalendar(idx, c[0], c[6], c[1], c[2], c[3], val, c[5]);
    else return;
}
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;
		}
	}
	//calendars[idx][3] = val + 1;
	return;
} 

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;
}


function generateNumberOfNights(){
	if( jQ("#numberOfNightsBox").size() && typeof dateReminder == 'object') {
		if(dateReminder.length != 2 || dateReminder[0] == '' || dateReminder[1] == '') return;
		
		var one_day=1000*60*60*24; 
		
		var time0=dateReminder[0].split("/");     
        var time1=dateReminder[1].split("/");
	
		var date0=new Date(time0[2],(time0[1]-1),time0[0]);
        var date1=new Date(time1[2],(time1[1]-1),time1[0])
       
		var diff = Math.round((date1.getTime()-date0.getTime())/(one_day));
				
		if(diff < 0) diff = 0;
		jQ("#numberOfNightsBox").text( diff );
	}
}
