var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var MONTH_NAMES = ["Leden", "\u00danor", "B\u0159ezen", "Duben", "Kv\u011bten", "\u010cerven", "\u010cervenec", "Srpen", "Z\u00e1\u0159\u00ed", "\u0158\u00edjen", "Listopad", "Prosinec"];
var DAYS = ["Po", "\u00DAt", "St", "\u010Ct", "P\u00E1", "So", "N"];
var ALLOWED_DAYS = "";
var styl;
var styll;
var ad;
var inpId;
var calShowed = null;
function showCalendar(elemId, allowedDays, id, month, year) {
	 if (calShowed != null) {
		closeCalendar(calShowed, inpId);
	 }
	 calShowed = elemId;
   ad = allowedDays;
	 inpId = id;
/*	
	 if (inpId != null) {
		 document.getElementById('ico' + inpId).style.display = 'none';
  	 document.getElementById('d' + inpId).style.display = 'block';
   }
*/
   var d = new Date();
   var currentDay = d.getDate();
   var currentMonth;
   var tempYear;
   if (month != null) {
      currentMonth = month;
   } else {
      currentMonth = d.getMonth();
   }
   if (year != null) {
      tempYear = year;
   } else {
      tempYear = d.getYear();
   }
   var currentYear = (tempYear < 1000) ? tempYear + 1900 : tempYear;
   var calTable = "";

   // drawing calendar
   //calTable += "<iframe src=\"blank.htm\" width=\"181\" height=\"174\" frameborder=\"0\" scrolling=\"no\" style=\"position: absolute; z-index:665; margin-left: -92px; margin-top: 23px\"></iframe>";
   calTable += " \n<table width=\"181\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"position: absolute; z-index:666; margin-left: -92px; margin-top: -1px; \"> ";
   calTable += "\n<tr><td>";
   calTable += " \n<table width=\"181\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> ";
	 calTable += "\n<tr>";
	 		calTable += "\n<td width=\"95\" style=\"border-bottom: solid 1px #cdcdcd;\"><img src=\"img/spacer.gif\" height=\"1\" width=\"95\" \/><\/td>";
	 		calTable += "\n<td align=\"center\" bgcolor=\"#ffffff\" style=\"border-left: solid 1px #cdcdcd; border-right: solid 1px #cdcdcd; border-top: solid 1px #cdcdcd;\"><img src=\"img/datum.gif\" border=\"0\" hspace=\"15\" vspace=\"3\"><\/td>";
	 calTable += "\n<\/tr>";
	 calTable += "\n<\/table>";
	
   // drawing title/month name/navigation
   calTable += " \n<table bgcolor=\"#ffffff\" width=\"181\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" style=\"border-collapse:collapse; border-left: solid 1px #cdcdcd;border-right: solid 1px #cdcdcd;border-bottom: solid 1px #cdcdcd;\"> ";
   calTable += " \n<tr> ";
      calTable += " \n<td class=\"calHeader\">" + "<div class=\"arrow_off\" onmouseover=\"this.className='arrow_on';\" onmouseout=\"this.className='arrow_off';\" onclick=\"goToPrevious('"+elemId+"','"+ ad + "','" + inpId + "'," + (currentMonth-1) +","+ currentYear +")\">" + "<<" + "<\/div><\/td>";
      calTable += " \n<td class=\"calHeader\" colspan=\"5\">" + MONTH_NAMES[currentMonth] + " "+ currentYear +"</td>";
      calTable += " \n<td class=\"calHeader\">" + "<div class=\"arrow_off\" onmouseover=\"this.className='arrow_on';\" onmouseout=\"this.className='arrow_off';\" onclick=\"goToNext('"+elemId+"','"+ ad + "','" + inpId + "'," + (currentMonth+1) +","+ currentYear +")\">" + ">>" + "<\/div><\/td>";
   calTable += " \n<\/tr> ";

   // drawing names of days
   calTable += " \n<tr> ";
      for (var i = 0; i < 7; i++) {
         calTable += " \n<td class=\"dayTitles\">" +DAYS[i]+ "<\/td> ";
       }
       calTable += " \n<\/tr>";
    calTable += " \n<tr>";
    calTable += " \n<td valign=\"top\" colspan=\"7\">";
    calTable += " \n<table bgcolor=\"#ffffff\" width=\"172\" border=\"0\" cellspacing=\"3\" cellpadding=\"0\"> ";
    
   // drawing calendar body
   var count = 0;
   var fdo = new Date(currentYear, currentMonth, 1);
   var firstDay = fdo.getDay();
   if (firstDay == 0) firstDay=7;
   var daysPerMonths = (MONTH_DAYS[currentMonth]+1);

   // leap year
   if ( ((currentYear % 4) == 0) && currentMonth == 1) {
      daysPerMonths = 30;
   }

   // draw
   var x;
   var stlpec = 1;
   for (x=1; x < daysPerMonths; x++) {
      count++;
      if ((count % 7) == 1) {
         calTable += " \n<tr> ";
      }

      if (count < firstDay) {
         calTable += " \n <td><\/td>";
         stlpec++;
         x--;
      } else {
/*
              // is workday ?
             if ((count % 7)==0 || (count % 7)==6) {
                  if (ad.length == 0) {
                      styl = isToday(currentDay,currentMonth,currentYear) && (x == currentDay) ? "todayOff" : "freeDay";
                        calTable += " \n <td class=\"" + styl + "\">"+ x + "<\/td>";
                  } else {
                     if (!getAllowedDays(currentYear,currentMonth, x)) {
                        styl = isToday(currentDay,currentMonth,currentYear) && (x == currentDay) ? "todayOff" : "freeDay";
                        calTable += " \n <td class=\"" + styl + "\">"+ x + "<\/td>";
                  	 } else {
                        styl = isToday(currentDay,currentMonth,currentYear) && (x == currentDay) ? "today" : "workDay";
                        calTable += " \n <td class=\"" + styl + "\">"+ x + "</td>";
                     }
                  }
            } else {
*/
               if (ad.length == 0) {
                  styl = isToday(currentDay,currentMonth,currentYear) && (x == currentDay) ? "today" : "workDay";
                  calTable += " \n <td class=\"" + styl + "\" onMouseOver=\"this.className='today'\" onMouseOut=\"this.className='"+styl+"'\" onClick=\"selectDate("+ x + "," + (currentMonth+1) + "," + currentYear + ",'"+ inpId +"');closeCalendar('"+ elemId +"', '" + inpId + "')\">"+ x + "<\/td>";
               } else {

                  if (!getAllowedDays(currentYear,currentMonth, x)) {
                     styl = isToday(currentDay,currentMonth,currentYear) && (x == currentDay) ? "todayOff" : "freeDay";
                     calTable += " \n <td class=\"" + styl + "\">"+ x + "<\/td>";
                  } else {
                     styl = isToday(currentDay,currentMonth,currentYear) && (x == currentDay) ? "today" : "workDay";
                     calTable += " \n <td class=\"" + styl + "\" onMouseOver=\"this.className='today'\" onMouseOut=\"this.className='"+styl+"'\" onClick=\"selectDate("+ x + "," + (currentMonth+1) + "," + currentYear + ",'"+ inpId +"');closeCalendar('"+ elemId +"', '" + inpId + "')\">"+ x + "<\/td>";
                  }

                }
//            }
            stlpec++;
      }

      if ((count % 7)==0) {
         calTable += "</tr>";
      }
      
      if (stlpec > 7) {
      	stlpec = 1;
      }

   }
   if (stlpec != 7) {
   	for (;stlpec <= 7; stlpec++) {
   		calTable += " \n <td><\/td>";
   	}
   	calTable += " \n<\/tr> ";
   }
   calTable += "\n<\/table><\/td><\/tr>";
   calTable += "\n<tr><td colspan=\"7\" align=\"center\"><img onclick=\"closeCalendar('"+ elemId +"', '" + inpId + "')\" src=\"img/zavrit_wb.gif\" border=\"0\" style=\"cursor:pointer\"><\/td><\/tr>";
   calTable += " \n<\/table> ";
   calTable += "\n<\/td><\/tr><\/table>";
   document.getElementById(elemId).innerHTML = calTable;
}

function isToday(currentDay, currentMonth, currentYear) {
   var d = new Date();
   var cd = d.getDate();
   var cm = d.getMonth();
   var cy = d.getYear();

   if (cd == currentDay && cm == currentMonth && cy == currentYear) {
      return true;
   } else {
      return false;
   }
}

function getAllowedDays(currentYear, currentMonth, x) {
  var days = x;
   var myDate = new Date(currentYear,currentMonth, days);
   var d = new Date();
   d.setHours(0,0,0,0);
   var awd;

   var diff = myDate - d;
      diff = Math.round(diff/1000/60/60/24);
   if (myDate >= d) {
          awd = ad.charAt(diff);
      if (awd != null || awd != '') {
         if (awd == '1') {
            return true;
         } else {
          return false;
        }
      }
    }
    return false;
}

function goToNext(elemId, ad, inpId, month, year) {
   if (month > 11) {
      month = 0;
      year = (year + 1);
   }
   return showCalendar(elemId, ad, inpId, month, year);
}

function goToPrevious(elemId, ad, inpId, month, year) {
   if (month == -1) {
      month = 11;
      year = (year - 1);
   }
   return showCalendar(elemId, ad, inpId, month, year);
}

function selectDate(day, month, year, inpId) {
    document.getElementById(inpId).value = ""+ day + "." + month + "." + year;
}

function closeCalendar(elemId, inpId) {
   document.getElementById(elemId).innerHTML = "";
   //document.getElementById('ico' + inpId).style.display = "block";
   document.getElementById('d' + inpId).style.display = "none";
}

/*
The following error occurred:
document.getElementById('icovalueDate').style.display='none';
*/

