// JavaScript Document

function UA()
{
    var t = this, nv = navigator, n = nv.userAgent.toLowerCase();
    t.win = n.indexOf('win') >= 0;
    t.mac = n.indexOf('mac') >= 0;
    t.DOM = document.getElementById ? true : false;
    t.dynDOM = document.createElement && document.addEventListener;
    t.khtml = nv.vendor == 'KDE';
    var idx = n.indexOf('opera');
    t.opera = idx !=- 1;
    if (t.opera)
    {
        t.vers = parseFloat(n.substr(idx + 6));
        t.major = Math.floor(t.vers);
        t.opera5 = t.major == 5;
        t.opera6 = t.major == 6;
        t.opera7 = t.major == 7;
        t.opera7up = t.vers >= 7;
    }
    t.oldOpera = t.opera5 || t.opera6;
    idx = n.indexOf('msie');
    if (idx >= 0 && !t.opera && !t.khtml)
    {
        t.vers = parseFloat(n.substr(idx + 5));
        t.ie3down = t.vers < 4;
        t.ie = t.ie4up = document.all && document.all.item && !t.ie3down;
        t.ie5up = t.ie && t.DOM;
        t.ie55up = t.ie && t.vers >= 5.5;
        t.ie6up = t.ie && t.vers >= 6
    }
    t.cm = document.compatMode;
    t.css1cm = t.cm == 'CSS1Compat';
    t.nn4 = nv.appName == "Netscape" && !t.DOM && !t.opera;
    if (t.nn4) {
        t.vers = parseFloat(nv.appVersion);
    }
    t.moz = t.nn6up = t.gecko = n.indexOf('gecko') !=- 1;
    if (t.gecko) {
        t.vers = parseFloat(n.substr(n.indexOf('rv:') + 3));
    }
    t.nn7up = t.gecko && t.vers > 1;
    t.hj = n.indexOf('hotjava') !=- 1;
    t.aol = n.indexOf('aol') !=- 1;
    t.aol4up = t.aol && t.ie4up;
    t.major = Math.floor(t.vers);
    t.supp = t.supported = t.oldOpera || t.opera7up || t.ie || t.moz || t.nn4 || t.DOM;
};
function Undef(o)
{
    return typeof (o) == 'undefined' || o === '' || o == null;
};
function Def(o)
{
    return!Undef(o)
};
var ua = new UA();
function sccthatSetMY(m, y, f)
{
    switch (f)
    {
        case 0:
            {
                ++m;
                if (m == 12) {
                    m = 0;
                    y++;
                }
                break;
            }
        case 1:
            {
                --m;
                if (m ==- 1) {
                    m = 11;
                    y--;
                }
                break;
            }
        case 2:
            {
                ++y;
                break;
            }
        case 3:
            {
                --y;
                break;
            }
        case 4:
            {
                break;
            }
    }
    if (!window.opener) {
        window.opener = window.parent;
    }
    var c;
    if (ua.moz && ua.vers >= 1.4)
    {
        if (this.opener) {
            c = this.opener.sccthatcalendar;
        }
        else {
            c = this.parent.sccthatcalendar;
        }
        window.opener = this.parent;
    }
    else if (window.opener) {
        c = window.opener.sccthatcalendar;
    }
    if (c) {
        c.date.setFullYear(y);
        c.date.setMonth(m);
    }
    location.reload();
};
function sccthatFind(d, f)
{
    if (d.getElementById && Def(d.getElementById(f))) {
        return d.getElementById(f);
    }
    else if (ua.ie4up) {
        return d.all[f];
    }
    else
    {
        if (d.forms.item)
        {
            for (var i = 0; d.forms.item(i) != null; ++i) 
            {
                if (d.forms.item(i).namedItem && d.forms.item(i).namedItem(f)) {
                    return d.forms.item(i).namedItem(f);
                }
                if (d.forms.item(i).elements && d.forms.item(i).elements[f]) {
                    return d.forms.item(i).elements[f];
                }
            }
            for (var form in d.forms)
            {
                if (d.forms[form].elements && d.forms[form].elements[f]) {
                    return d.forms[form].elements[f];
                };
            }
        }
    }
    return null;
};
function sccthatAlign(n)
{
    return n < 10 ? ("0" + n) : ("" + n);;
};
function sccthatDateFormat(f, d, m, y)
{
    var s = f;
    d = d < 10 ? ("0" + d) : d;
    s = s.replace("dd", d);
    m++;
    m = m < 10 ? ("0" + m) : m;
    s = s.replace("MM", m);
    s = s.replace("yyyy", y);
    if (sccthatFind(document, 'time'))
    {
        var t = sccthatFind(document, 'time').value;
        var hours = parseInt(t.substring(0, 2) - 0);
        if (hours < 0 || hours > 23) {
            hours = hours % 24;
            hours += (hours < 0 ? 24 : 0);
        }
        s = s.replace("HH", sccthatAlign(hours));
        var minutes = parseInt(t.substring(3, 5) - 0);
        if (minutes < 0 || minutes > 59) {
            minutes = minutes % 60;
            minutes += (minutes < 0 ? 60 : 0);
        }
        s = s.replace("mm", sccthatAlign(minutes));
        var seconds = parseInt(t.substring(6, 8) - 0);
        if (seconds < 0 || seconds > 59) {
            seconds = seconds % 60;
            seconds += (seconds < 0 ? 60 : 0);
        }
        s = s.replace("ss", sccthatAlign(seconds));
    }
    return s;
};
function sccthatSetDay(c, f, d, m, y, i, ifr)
{
    var doc;
    var w = window.opener || this.parent;
    if (w && !i) {
        doc = w.document;
    }
    else {
        doc = document;
    }
    var e = sccthatFind(doc, c);
    if (Def(e)) {
        e.value = sccthatDateFormat(f, d, m, y);
        if (e.onchange) {
            e.onchange();
        }
    }
    if (w && !i)
    {
        if (Def(w) && Def(ifr))
        {
            var iframe = sccthatFind(doc, ifr);
            if (Def(iframe)) {
                iframe.style.visibility = 'hidden';
            }
            if (ua.opera6) {
                var d = sccthatFind(doc, "calendar_div");
                if (Def(d)) {
                    d.style.visibility = 'hidden';
                }
            }
        }
        else {
            window.close();
        }
    }
};
function sccthatCalendar(def)
{
    this.def = def;
    this.links = {};
    this.styles = {};
    this.hideifr = true;
};

{
    var CTc = sccthatCalendar.prototype;
    CTc.getCss = function (key, d)
    {
        return "";
    };
    CTc.hide = function ()
    {
        if (window.parent && this.hideifr && this.ifr)
        {
            var iframe = sccthatFind(window.parent.document, this.ifr);
            if (iframe) {
                iframe.style.visibility = 'hidden';
            }
        }
    };
    CTc.create = function (d, ctl)
    {
        var i = false;
        this.i = i;
        if (!this.date) {
            this.date = window.date || new Date();
        }
        var def = this.def;
        var acts = '';
        if (this.ifr && def.headerstyle.type != "comboboxes")
        {
            acts = 'onMouseOver="window.parent.sccthatcalendar.hideifr=false;"';
            acts += " onMouseOut=\"window.parent.sccthatcalendar.hideifr=true;setTimeout('window.parent.sccthatcalendar.hide();',1000);\""
        }
        d.write("<table " + (Def(this.ifr) ? "align=\"center\"" : "") + " cellspacing=0 cellpadding=0 " + acts + " width=" + def.width + " border=" + (def.border_width || 0) + " bordercolor='" + (def.border_color || '#000000') + "'>");
        d.write("<tr>");
        if (i) {
            this.createButtons(d, i);
        }
        else
        {
            if (def.headerstyle.type == "buttons") {
                this.createButtons(d, i);
            }
            else if (def.headerstyle.type == "comboboxes") {
                this.createCombos(d);
            }
        }
        d.write("</tr>");
        var day = 0;
        d.write("<tr>");
        this.createWeekdays(d);
        d.write("</tr>");
        var w = this.createMonth(d);
        if (def.showtime) {
            this.createTime(d);
        }
        if (ua.opera && w == 4) {
            d.write("<tr><td colspan=7>&nbsp;<td></tr>");
        }
        d.write("</table>");
    };
    CTc.createTime = function (d)
    {
        d.write("<tr><td colspan=7 align=center>" + (ua.nn4 ? "<form>" : "") + "<input " + (ua.nn4 ? "name" : "id") + "='time' type=textarea value='" + sccthatAlign(this.date.getHours()) + ":" + sccthatAlign(this.date.getMinutes()) + ":" + sccthatAlign(this.date.getSeconds()) + "'>" + (ua.nn4 ? "</form>" : "") + "</td></tr>");
    };
    CTc.createMonth = function (d)
    {
        var cd = this.date.getDate();
        var cm = this.date.getMonth();
        var cy = this.date.getYear();
        var cday = this.date.getDay();
        var def = this.def;
        var cur_day = 1;
        this.date.setDate(cur_day);
        var thisweek = false;
        var start = (this.date.getDay() - def.firstday);
        start += (start < 0 ? 7 : 0);
        cur_day -= start;
        var css, thismonth = false, weekend, thisday;
        var w;
        for (w = 0; w < 6; ++w)
        {
            d.write("<tr>");
            for (var day = 0; day < 7; ++day)
            {
                weekend = day + def.firstday;
                weekend -= (weekend < 7 ? 0 : 7);
                weekend = weekend == 0 || weekend == 6;
                this.date.setDate(cur_day);
                if (this.date.getDate() == 1) {
                    thismonth = !thismonth;
                }
                if (day == 0)
                {
                    if (w != 0)
                    {
                        thisweek = cd - this.date.getDate();
                        if (thisweek < 7 && thisweek >= 0) {
                            thisweek = true;
                        }
                        else {
                            thisweek = false;
                        }
                    }
                    else {
                        thisweek = (start + cd) < 8;
                    }
                }
                if (day == 7 && thisweek) {
                    thisweek = false;
                }
                thisday = this.date.getDate() == cd && thismonth;
                css = thisday ? "cd_css" : (thisweek ? "tw_css" : (thismonth ? (weekend ? "we_css" : "wd_css") : (weekend ? "weom_css" : "wdom_css")));
                d.write("<td align=center width=14% " + this.getCss(css) + "><A " + this.getCss(css) + this.getRef() + ">");
                d.write(this.date.getDate());
                d.write("</A></td>");
                cur_day = this.date.getDate() + 1;
            }
            d.write("</tr>");
            this.date.setDate(cur_day);
            if (this.date.getDate() < 8 && w > 3) {
                break;
            }
        }
        this.date.setDate(cd);
        this.date.setMonth(cm);
        this.date.setYear(cy);
        return w;
    };
    CTc.setLink = function (s, l)
    {
        this.links[s] = l;
    };
    CTc.setStyle = function (s, l)
    {
        this.styles[s] = l;
    };
    CTc.getStyle = function ()
    {
        var c;
        if (this.i)
        {
            var fd = sccthatDateFormat(this.def.dtype, this.date.getDate(), this.date.getMonth(), this.date.getFullYear());
            if (this.styles[fd]) {
                c = this.styles[fd];
            }
        }
        return c;
    };
    CTc.getRef = function ()
    {
        var ref;
        if (this.i)
        {
            var fd = sccthatDateFormat(this.def.dtype, this.date.getDate(), this.date.getMonth(), this.date.getFullYear());
            if (this.links[fd]) {
                ref = " href='" + this.links[fd] + "'";
            }
        }
        ref = ref || (" href='javascript:sccthatSetDay(\"" + this.ctl + "\",\"" + this.def.dtype + "\"," + this.date.getDate() + "," + this.date.getMonth() + "," + this.date.getFullYear() + "," + this.i + ",\"" + (Def(this.ifr) ? this.ifr : "") + "\")'");
        return ref;
    };
    CTc.createWeekdays = function (d)
    {
        var def = this.def;
        var weekend;
        for (var day = 0; day < 7; ++day)
        {
            weekend = day + def.firstday;
            weekend -= (weekend < 7 ? 0 : 7);
            d.write("<td align=center " + this.getCss("dn_css") + ">" + def.daynames[weekend] + "</td>");
        }
    };
    CTc.createButtons = function (d, i)
    {
        var col = 9, dh = this.def.headerstyle;
        for (var p in dh) {
            --col;
        }
        if (dh.imgprevy && !i)
        {
            d.write("<td width=14% align=left><a href='javascript:sccthatSetMY(" + this.date.getMonth() + "," + this.date.getFullYear() + ",3)'><IMG border=0 src='" + dh.imgprevy + "'</IMG></A>");
        }
        if (dh.imgprevm && !i)
        {
            d.write("<td width=14% align=left><a href='javascript:sccthatSetMY(" + this.date.getMonth() + "," + this.date.getFullYear() + ",1)'><IMG border=0 src='" + dh.imgprevm + "'</IMG></A>");
        }
        d.write("<td colspan=" + col + " align=center " + this.getCss("css", dh) + ">" + this.def.monthnames[this.date.getMonth()] + "&nbsp;" + this.date.getFullYear() + "</td>");
        if (dh.imgnextm && !i)
        {
            d.write("<td width=14% align=right><a href='javascript:sccthatSetMY(" + this.date.getMonth() + "," + this.date.getFullYear() + ",0)'><IMG border=0 src='" + dh.imgnextm + "'</IMG></A></td>");
        }
        if (dh.imgnexty && !i)
        {
            d.write("<td width=14% align=right><a href='javascript:sccthatSetMY(" + this.date.getMonth() + "," + this.date.getFullYear() + ",2)'><IMG border=0 src='" + dh.imgnexty + "'</IMG></A></td>");
        }
    };
    CTc.createCombos = function (d, l)
    {
        var dh = this.def.headerstyle;
        d.write("<td colspan=7 " + this.getCss("css", dh) + ">");
        if (ua.nn4) {
            d.write("<form>");
        }
        d.write("<select align=left " + this.getCss("css", dh) + " " + (ua.nn4 ? "name" : "id") + "='month' onchange='sccthatSetMY(sccthatFind(document,\"month\").selectedIndex," + dh.yearrange[0] + "+sccthatFind(document,\"year\").selectedIndex,4);'>");
        var i = 0;
        for (; i < 12; ++i)
        {
            d.write("<option " + (i == this.date.getMonth() ? "selected='selected'" : "") + " value='" + i + "'>" + this.def.monthnames[i] + "</option>");
        }
        d.write("</select>");
        d.write("<select align=right " + this.getCss("css", dh) + " " + (ua.nn4 ? "name" : "id") + "='year' onchange='sccthatSetMY(sccthatFind(document,\"month\").selectedIndex," + dh.yearrange[0] + "+sccthatFind(document,\"year\").selectedIndex,4);'>");
        for (i = dh.yearrange[0]; i <= dh.yearrange[1]; ++i)
        {
            d.write("<option " + (i == this.date.getFullYear() ? "selected='selected'" : "") + " value='" + i + "'>" + i + "</option>");
        }
        d.write("</select>");
        if (ua.nn4) {
            d.write("</form>");
        }
        d.write("</td>");
    };
    CTc.parseValue = function (s, d)
    {
        var f = this.def.dtype;
        d = d || this.date;
        var t;
        if (f.indexOf("yyyy") !=- 1)
        {
            t = parseInt(s.substr(f.indexOf("yyyy"), 4) - 0);
            if (!isNaN(t) && typeof (t) != 'undefined') {
                d.setFullYear(t);
            }
        }
        if (f.indexOf("MM") !=- 1)
        {
            t = parseInt(s.substr(f.indexOf("MM"), 2) - 1);
            if (!isNaN(t) && typeof (t) != 'undefined') {
                d.setMonth(t);
            }
        }
        if (f.indexOf("dd") !=- 1)
        {
            t = parseInt(s.substr(f.indexOf("dd"), 2) - 0);
            if (!isNaN(t) && typeof (t) != 'undefined') {
                d.setDate(t);
            }
        }
        if (f.indexOf("HH") !=- 1)
        {
            t = parseInt(s.substr(f.indexOf("HH"), 2) - 0);
            if (!isNaN(t) && typeof (t) != 'undefined') {
                d.setHours(t);
            }
        }
        if (f.indexOf("mm") !=- 1)
        {
            t = parseInt(s.substr(f.indexOf("mm"), 2) - 0);
            if (!isNaN(t) && typeof (t) != 'undefined') {
                d.setMinutes(t);
            }
        }
        if (f.indexOf("ss") !=- 1)
        {
            t = parseInt(s.substr(f.indexOf("ss"), 2) - 0);
            if (!isNaN(t) && typeof (t) != 'undefined') {
                d.setSeconds(t);
            }
        }
    };
    CTc.popup = function (ctl)
    {
        window.sccthatcalendar = this;
        this.ctl = ctl;
        var e = sccthatFind(document, ctl);
        this.date = new Date();
        if (e.value != "") {
            this.parseValue(e.value);
        }
        var w = window.open("sccthatcalendar.html", "", 'width=' + this.def.windoww + ',height=' + this.def.windowh + ',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes');
        w.opener = window;
        w.focus();
    };
    CTc.innerpopup = function (ctl, ifr)
    {
        window.sccthatcalendar = this;
        this.ctl = ctl;
        this.ifr = ifr;
        this.hideifr = false;
        var e = sccthatFind(document, ctl);
        this.date = new Date();
        if (e.value != "") {
            this.parseValue(e.value);
        }
        var w = sccthatFind(document, ifr);
        if (ua.oldOpera)
        {
            w = document.frames[ifr];
            w.location.reload();
            var d = sccthatFind(document, "calendar_div");
            d.style.visibility = 'visible';
        }
        else {
            w.src = "sccthatcalendar_ifr.html";
            w.style.visibility = 'visible';
        }
        w.opener = window;
        w.height = this.def.windowh;
        w.width = this.def.windoww;
        if (ua.moz) {}
        else {
            w.focus();
        }
    };
}

