﻿var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";
var dayArrayShort = new Array('א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש');
var dayArrayMed = new Array('א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש');
var dayArrayLong = new Array('ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת');
var monthArrayShort = new Array('ינו', 'פבר', 'מרץ', 'אפר', 'מאי', 'יונ', 'יול', 'אוג', 'ספט', 'אוק', 'נוב', 'דצמ');
var monthArrayMed = new Array('ינו', 'פבר', 'מרץ', 'אפר', 'מאי', 'יונ', 'יול', 'אוג', 'ספט', 'אוק', 'נוב', 'דצמ');
var monthArrayLong = new Array('ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר');
var defaultDateSeparator = "/";
var defaultDateFormat = "dmy";
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;
var selectedDate = new Date();
function displayDatePicker(a, b, c, d) {
    var e = document.getElementById(a);
    if (!b) b = e;
    if (d) dateSeparator = d;
    else dateSeparator = defaultDateSeparator;
    if (c) dateFormat = c;
    else dateFormat = defaultDateFormat;
    var x = b.offsetLeft;
    var y = b.offsetTop + b.offsetHeight;
    var f = b;
    while (f.offsetParent) {
        f = f.offsetParent;
        x += f.offsetLeft;
        y += f.offsetTop
    }
    var g = getFieldDate(e.value);
    selectedDate = new Date(g.getFullYear(), g.getMonth(), g.getDate());
    drawDatePicker(e, x, y)
}
function drawDatePicker(a, x, y) {
    if (!document.getElementById(datePickerDivID)) {
        var b = document.createElement("div");
        b.setAttribute("id", datePickerDivID);
        b.setAttribute("class", "dpDiv");
        b.setAttribute("style", "visibility: hidden;");
        document.body.appendChild(b)
    }
    var c = document.getElementById(datePickerDivID);
    c.style.position = "absolute";
    c.style.left = x + "px";
    c.style.top = y + "px";
    c.style.visibility = "visible";
    c.style.display = "block";
    c.style.zIndex = 10000;
    refreshDatePicker(a.id, selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate())
}
function hideDatePicker() {
    var a = document.getElementById(datePickerDivID);
    if (a) {
        a.style.visibility = "hidden";
        a.style.display = "none";
        adjustiFrame()
    }
}
function delayedHide() {
    setTimeout("hideDatePicker()", 100)
}
function refreshDatePicker(a, b, c, d) {
    var e = new Date();
    var f = new Date();
    if ((c >= 0) && (b > 1900)) {
        e = new Date(b, c, 1)
    } else {
        d = selectedDate.getDate();
        e.setDate(1)
    }
    var g = "\r\n";
    var h = "<table cols=7 class='dpTable'>" + g;
    var j = "</table>" + g;
    var k = "<tr class='dpTR'>";
    var l = "<tr class='dpTitleTR'>";
    var m = "<tr class='dpDayTR'>";
    var n = "<tr class='dpTodayButtonTR'>";
    var o = "</tr>" + g;
    var p = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' ";
    var q = "<td class='dpTDpast'>";
    var r = "<td colspan=5 class='dpTitleTD'>";
    var s = "<td class='dpButtonTD'>";
    var t = "<td colspan=7 class='dpTodayButtonTD'>";
    var u = "<td class='dpDayTD'>";
    var v = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' ";
    var w = "</td>" + g;
    var x = "<div class='dpTitleText'>";
    var y = "<div class='dpDayHighlight'>";
    var z = "<div class='dpDayToday'>";
    var A = "<div class='dpDayTodayHighlight'>";
    var B = "</div>";
    var C = h;
    C += l;
    C += s;
    if (e.getFullYear() > f.getFullYear() || (e.getMonth() >= f.getMonth() + 1 && e.getFullYear() == f.getFullYear())) C += getButtonCode(a, e, -1, "&lt;");
    C += w;
    C += r + x + monthArrayLong[e.getMonth()] + " " + e.getFullYear() + B + w;
    C += s + getButtonCode(a, e, 1, "&gt;") + w;
    C += o;
    C += m;
    for (i = 0; i < dayArrayShort.length; i++) C += u + dayArrayShort[i] + w;
    C += o;
    C += k;
    for (i = 0; i < e.getDay(); i++) C += q + "&nbsp;" + w;
    var D = (e.getMonth() == selectedDate.getMonth() && e.getFullYear() == selectedDate.getFullYear());
    var E = ((e.getMonth() < f.getMonth() && e.getFullYear() == f.getFullYear()) || e.getFullYear() < f.getFullYear());
    do {
        dayNum = e.getDate();
        TD_onclick = " onclick=\"updateDateField('" + a + "', '" + getDateString(e) + "');\">";
        if (E || (e.getMonth() == f.getMonth() && e.getFullYear() == f.getFullYear() && e.getDate() < f.getDate())) {
            C += q + dayNum + w
        } else if (D && dayNum == selectedDate.getDate() && f.getDate() == dayNum && f.getMonth() == e.getMonth() && f.getYear() == e.getYear()) {
            C += v + TD_onclick + A + dayNum + B + w
        } else if (D && dayNum == selectedDate.getDate()) {
            C += v + TD_onclick + y + dayNum + B + w
        } else if (dayNum == f.getDate() && f.getMonth() == e.getMonth() && f.getYear() == e.getYear()) {
            C += p + TD_onclick + z + dayNum + B + w
        } else {
            C += p + TD_onclick + dayNum + w
        }
        if (e.getDay() == 6) C += o + k;
        e.setDate(e.getDate() + 1)
    }
    while (e.getDate() > 1) if (e.getDay() > 0) {
        for (i = 6; i > e.getDay(); i--) C += q + "&nbsp;" + w
    }
    C += o;
    var f = new Date();
    var F = "Today is " + dayArrayMed[f.getDay()] + ", " + monthArrayMed[f.getMonth()] + " " + f.getDate();
    C += n + t;
    C += "<button class='dpTodayButton' onClick='refreshDatePicker(\"" + a + "\");'>היום</button> ";
    C += "<button class='dpTodayButton' onClick='updateDateField(\"" + a + "\");'>סגור</button>";
    C += w + o;
    C += j;
    document.getElementById(datePickerDivID).innerHTML = C;
    adjustiFrame()
}
function getButtonCode(a, b, c, d) {
    var e = (b.getMonth() + c) % 12;
    var f = b.getFullYear() + parseInt((b.getMonth() + c) / 12);
    if (e < 0) {
        e += 12;
        f += -1
    }
    return "<button class='dpButton' onClick='refreshDatePicker(\"" + a + "\", " + f + ", " + e + ");'>" + d + "</button>"
}
function getDateString(a) {
    var b = "00" + a.getDate();
    var c = "00" + (a.getMonth() + 1);
    b = b.substring(b.length - 2);
    c = c.substring(c.length - 2);
    switch (dateFormat) {
    case "dmy":
        return b + dateSeparator + c + dateSeparator + a.getFullYear();
    case "ymd":
        return a.getFullYear() + dateSeparator + c + dateSeparator + b;
    case "mdy":
    default:
        return c + dateSeparator + b + dateSeparator + a.getFullYear()
    }
}
function getFieldDate(a) {
    var b;
    var c;
    var d,
        m,
        y;
    try {
        c = splitDateString(a);
        if (c) {
            switch (dateFormat) {
            case "dmy":
                d = parseInt(c[0], 10);
                m = parseInt(c[1], 10) - 1;
                y = parseInt(c[2], 10);
                break;
            case "ymd":
                d = parseInt(c[2], 10);
                m = parseInt(c[1], 10) - 1;
                y = parseInt(c[0], 10);
                break;
            case "mdy":
            default:
                d = parseInt(c[1], 10);
                m = parseInt(c[0], 10) - 1;
                y = parseInt(c[2], 10);
                break
            }
            b = new Date(y, m, d)
        } else if (a) {
            b = new Date(a)
        } else {
            b = new Date()
        }
    } catch (e) {
        b = new Date()
    }
    return b
}
function splitDateString(a) {
    var b;
    if (a.indexOf("/") >= 0) b = a.split("/");
    else if (a.indexOf(".") >= 0) b = a.split(".");
    else if (a.indexOf("-") >= 0) b = a.split("-");
    else if (a.indexOf("\\") >= 0) b = a.split("\\");
    else b = false;
    return b
}
function updateDateField(a, b) {
    var c = document.getElementById(a);
    if (b) c.value = b;
    var d = document.getElementById(datePickerDivID);
    d.style.visibility = "hidden";
    d.style.display = "none";
    adjustiFrame();
    c.focus();
    if ((b) && (typeof (datePickerClosed) == "function")) datePickerClosed(c)
}
function adjustiFrame(a, b) {
    var c = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
    if (c) return;
    try {
        if (!document.getElementById(iFrameDivID)) {
            var d = document.createElement("iFrame");
            d.setAttribute("id", iFrameDivID);
            d.setAttribute("src", "javascript:false;");
            d.setAttribute("scrolling", "no");
            d.setAttribute("frameborder", "0");
            document.body.appendChild(d)
        }
        if (!a) a = document.getElementById(datePickerDivID);
        if (!b) b = document.getElementById(iFrameDivID);
        try {
            b.style.position = "absolute";
            b.style.width = a.offsetWidth;
            b.style.height = a.offsetHeight;
            b.style.top = a.style.top;
            b.style.left = a.style.left;
            b.style.zIndex = a.style.zIndex - 1;
            b.style.visibility = a.style.visibility;
            b.style.display = a.style.display
        } catch (e) {}
    } catch (ee) {}
}

function hcalcValidateDates(a, b, c, d, e) {
    var f = getFieldDate(a.value);
    var g = new Date();
    g = new Date(g.getFullYear(), g.getMonth(), g.getDate());
    if (f < g) {
        alert("אנא הכנס תאריך בעתיד");
        a.value = "";
        document.getElementById(datePickerDivID).style.visibility = "visible";
        adjustiFrame()
    } else if (a.id == b) {
        f.setTime(f.getTime());
        var h = document.getElementById(c);
        f.setDate(f.getDate()+2);
        h.value = getDateString(f);
    } else if (a.id == c) {
        var i = document.getElementById(b);
        if (f < getFieldDate(i.value)) {
            f.setTime(f.getTime());
            if (f < g) i.value = getDateString(g);
            else i.value = getDateString(f)
        }
    }
    if (d) {
        document.getElementById(d).value = document.getElementById(b).value;
    }
    if (e) {
        document.getElementById(e).value = document.getElementById(c).value;
    }
}
