var cal = null;
var inp = null;
var monthNames = new Array("J&auml;n", "Feb", "M&auml;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez");
var weekdayNames = new Array('Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So');

if (typeof locale != "undefined" && locale == 'en') {
    monthNames = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
    weekdayNames = new Array('Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su');
}


document.onclick = function(e) {

  if (!e) {
    e = window.event;
  }

  var obj = e.target ? e.target : e.srcElement ? e.srcElement : null;
  if( cal != obj && obj.id != 'jscalendar' && document.getElementById(inp) != obj ) {
      
     closeCurrentCalendar();
  }

}


function showCalendar(calId, xinp) {

    obj = document.getElementById(calId);
    if (obj != null) {

        if (obj.style.display == 'none') {

            closeCurrentCalendar();
            obj.style.display = 'block';
            cal = obj;
            inp = xinp;
            var date = new Date();
            generateCalendar(xinp, date.getMonth(), date.getFullYear());

        } else {
            closeCurrentCalendar();
        }

    }

}

function closeCurrentCalendar() {

    if (cal != null) {
        cal.style.display = 'none';
        cal = null;
        inp = null;
    }

}

function generateCalendar(inp, nmonth, nyear) {

    if (cal != null) {

        var date = new Date(nyear, nmonth, 1);
        var next = new Date(nyear, nmonth, 1);
        next.setMonth(next.getMonth()+1, 1);
        var prev = new Date(nyear, nmonth, 1);
        prev.setMonth(prev.getMonth()-1, 1);

        s = "<table class='jscalendar' cellpadding='0' cellspacing='0'><tr>";

        s += "<td id='jscalendar' align='center' style='cursor: pointer;' onclick='generateCalendar(\"" + inp + "\", " + prev.getMonth() + ", " + prev.getFullYear() + ");'>&lt;&lt;</td>";
        s += "<td colspan='5' class='header'>" + monthNames[date.getMonth()] + " " + date.getFullYear() + "</td>";
        s += "<td id='jscalendar' align='center' style='cursor: pointer;' onclick='generateCalendar(\"" + inp + "\", " + next.getMonth() + ", " + next.getFullYear() + ");'>&gt;&gt;</td>";

        s += "<tr class='calendar'><td >" + weekdayNames[6] + "</td>";
        s += "<td>" + weekdayNames[0] + "</td><td>" + weekdayNames[1] + "</td>";
        s += "<td>" + weekdayNames[2] + "</td><td>" + weekdayNames[3] + "</td>";
        s += "<td>" + weekdayNames[4] + "</td><td>" + weekdayNames[5] + "</td></tr>";
        s += "<tr>";

        month = date.getMonth();
        weekday = date.getDay();
        if (weekday > 0) {
            s += "<td colspan='" + weekday + "'> </td>";
        }

        while (month == date.getMonth()) {

            if(weekday == 7) {
                s = s + "</tr><tr>";
                weekday = 0;
            }

            var adate = "";
            var d = "" + date.getDate();
            if (d.length == 1) {
                d = "0" + d;
            }
            adate += d + "-";


            var m = "" + (date.getMonth()+1);
            if (m.length == 1) {
                m = "0" + m;
            }
            adate += m + "-";

            adate += date.getFullYear();

            s += "<td align='center' class='days' valign='middle'>" +
                 "<a href='javascript:;' onclick='document.getElementById(\"" + inp + "\").value=\"" + adate + "\";closeCurrentCalendar();'>" + d + "</a></td>";
            weekday++;
            date.setDate(date.getDate() + 1);

        }

        date.setDate(date.getDate() - 1);
        if ( weekday != 7 ) {
            s += "<td colspan='" + (7 - weekday) + "'> </td>";
        }
        date.setDate(1);

        s += "</table>";
        cal.innerHTML = s;

    }

}