/* Begining of Calendar works */
var img = new Image();
img.src = "/defa/i/demi_clock.gif";

function showHideLiveCalendar() {
    var div = document.getElementById('live_calendar');

    if (div && (typeof(div) != 'undefined')) {
        if ((div.style.display == 'none') || !div.style.display || (typeof(div.style.display) == 'undefined')) {
            div.style.display = 'block';
        } else {
            div.style.display = 'none';
        }
    }
}

function calendarChangeYear(year) {
    var inp = document.getElementById('year');
    var li = document.getElementById('c_year_btn_'+year);
    var ul = document.getElementById('c_mnth_list');
    var i;

    if (li && (typeof(li) != 'undefined') && ul && (typeof(ul) != 'undefined')) {
        inp.value = year;
        ul.parentNode.removeChild(ul);
        recountYearInList(ul);

        for (var i = 0; i < li.parentNode.childNodes.length; i++) {
            if (li.parentNode.childNodes[i] && (typeof(li.parentNode.childNodes[i]) != 'undefined') && (li.parentNode.childNodes[i].tagName == 'LI')) {
                if (/<b>(\d{4})<\/b>/i.test(li.parentNode.childNodes[i].innerHTML)) {
                    var arr = /<b>(\d{4})<\/b>/i.exec(li.parentNode.childNodes[i].innerHTML);
                    if (/<\/a>/i.test(li.parentNode.childNodes[i].innerHTML)) {
                        if (arr[1] == year) {
                            li.parentNode.childNodes[i].innerHTML = li.parentNode.childNodes[i].innerHTML.replace(/<a[^>]+><b>(\d{4})<\/b><\/a>/i, '<b>'+year+'</b>');
                        }
                    } else {
                        li.parentNode.childNodes[i].innerHTML = li.parentNode.childNodes[i].innerHTML.replace(/<b>(\d{4})<\/b>/i, '<a href="#" onclick="calendarChangeYear('+arr[1]+'); return false;"><b>'+arr[1]+'</b></a>');
                    }
                }
            }
        }

        li.appendChild(ul);
    }
}

function calendarChangeMnth(li, mnth) {
    var inp = document.getElementById('mnth');

    if (inp && (typeof(inp) != 'undefined')) {
        if (li.parentNode && (typeof(li.parentNode) != 'undefined')) {
            recountYearInList(li.parentNode);
        }
        li.className = 'sel';
        li.innerHTML = li.innerHTML.replace(/<a[^>]+>([^<]+)<\/a>/i, '<b>$1</b>');
        inp.value = mnth;
        return true;
    }

    return false;
}

function recountYearInList(ul) {
    var path = document.getElementById('ajax_path');

    if (ul.childNodes && (typeof(ul.childNodes) != 'undefined') && path && (typeof(path) != 'undefined')) {
        for (var i = 0; i < ul.childNodes.length; i++) {
            if (ul.childNodes[i] && (typeof(ul.childNodes[i]) != 'undefined') && (ul.childNodes[i].tagName == 'LI') && (/c_mnth_n\d{2}/i.test(ul.childNodes[i].id))) {
                if (ul.childNodes[i].className == 'sel') {
                    ul.childNodes[i].className = '';
                    var arr = /c_mnth_n(\d{2})/i.exec(ul.childNodes[i].id);

                    ul.childNodes[i].innerHTML = ul.childNodes[i].innerHTML.replace(/<b>/i, '<a href="#" onclick="if (calendarChangeMnth(this.parentNode, \''+arr[1]+'\')) calendarChageDate(\''+path.value+'\'); return false;">');
                    ul.childNodes[i].innerHTML = ul.childNodes[i].innerHTML.replace(/<\/b>/i, '</a>');
                }
            }
        }
    }
}

function calendarChageDate(module) {
    var mnth = document.getElementById('mnth');
    var year = document.getElementById('year');

    if (mnth && year && (typeof(mnth) != 'undefined') && (typeof(year) != 'undefined')) {
        getCalendarMnth(module, year.value, mnth.value);
    }
}

function getCalendarMnth(module, year, mnth) {
    showPreloader();

    var ajaxRequest = new Ajax(module+'?by_xml=1&date='+year+''+mnth, {method: 'get', encoding: 'UTF-8', postBody: '', onComplete:
        function(txt, xml) {
            //alert(txt);
            makeCalendar(xml, year, mnth);
        }
    });
    ajaxRequest.request();
}

function makeCalendar(xml, year, mnth) {
    calendarPrintHeader(year, mnth);
    var i, j, tr, td, day_n, cur_day;
    var divs = new Array();
    var links = parseLinksFromXml(xml);
    var div = document.getElementById('days_holder');
    var collectionTag = xml.getElementsByTagName('days_list');
    collectionTag = collectionTag[0];

    if (collectionTag && (typeof(collectionTag) != 'undefined')) {
        var total = collectionTag.getAttribute('total');
        total--; total++;
        var firstDay = collectionTag.getAttribute('first_day');
        if (firstDay == 0) {
            firstDay = 7;
        }
        var blanksNeeded = firstDay - 1;
        var strings = Math.ceil((blanksNeeded + total) / 7) + 1;
        //alert('first '+firstDay+' => needed '+blanksNeeded+'\n'+'total '+total+' => '+strings+' tr`s needed (including days of week)');

        if (div && (typeof(div) != 'undefined')) {
            clearCalendar(div);

            var table = document.createElement('table');
            table.id = 'the_calendar';
            /*table.className = 'kal-tab';*/
            day_n = 1;

            for (i = 1; i <= strings; i++) {
                tr = table.insertRow(i - 1);
                if (i == 1) {
                    printDaysOfWeek(tr);
                } else if (i == 2) {
                    for (j = 1; j <= 7; j++) {
                        td = tr.insertCell(j - 1);
                        if (j <= blanksNeeded) {
                            td.innerHTML = '<div class="empty">&nbsp;</div>';
                        } else {
                            if (links[day_n]) {
                                cur_day = '0'+day_n;
                                if (location.href.indexOf(cur_day+'.'+mnth+'.'+year) != -1) {
                                    td.innerHTML = '<div class="current">'+day_n+'</div>';
                                } else {
                                    td.innerHTML = '<div><a href="'+links[day_n]+'">'+day_n+'</a></div>';
                                }
                            } else {
                                td.innerHTML = '<div>'+day_n+'</div>';
                            }
                            day_n++;
                        }
                    }
                } else {
                    for (j = 1; j <= 7; j++) {
                        td = tr.insertCell(j - 1);
                        if (day_n <= total) {
                            if (links[day_n]) {
                                cur_day = (day_n > 9) ? day_n : '0'+day_n;
                                if (location.href.indexOf(cur_day+'.'+mnth+'.'+year) != -1) {
                                    td.innerHTML = '<div class="current">'+day_n+'</div>';
                                } else {
                                    td.innerHTML = '<div><a href="'+links[day_n]+'">'+day_n+'</a></div>';
                                }
                            } else {
                                td.innerHTML = '<div>'+day_n+'</div>';
                            }
                            day_n++;
                        } else {
                            td.innerHTML = '<div class="empty">&nbsp;</div>';
                        }
                    }
                }
            }
            div.appendChild(table);
        }
    }
    hidePreloader();
}

function printDaysOfWeek(tr) {
    var th, str;

    for (var i = 0; i < 7; i++) {
        th = document.createElement('th');

        switch (i) {
            case 0:
                str = 'Ï';
                break;
            case 1:
                str = 'Â';
                break;
            case 2:
                str = 'Ñ';
                break;
            case 3:
                str = '×';
                break;
            case 4:
                str = 'Ï';
                break;
            case 5:
                str = 'Ñ';
                break;
            case 6:
                str = 'Â';
                break;
            default:
                str = '';
        }

        th.innerHTML = '<div class="wday">'+str+'</div>';
        tr.appendChild(th);
    }
}

function calendarPrintHeader(year, mnth) {
    var b = document.getElementById('c_dt_info');
    var mnth_li = document.getElementById('c_mnth_n'+mnth);

    if (b && (typeof(b) != 'undefined') && mnth_li && (typeof(mnth_li) != 'undefined')) {
        if (/<b>([^<]+)<\/b>/i.test(mnth_li.innerHTML)) {
            var arr = /<b>([^<]+)<\/b>/i.exec(mnth_li.innerHTML);
            b.innerHTML = year+'/'+arr[1];
        } else {
            b.innerHTML = year+'/'+mnth;
        }
    }
}

function parseLinksFromXml(xml) {
    var i, tmp;
    var links = new Array();
    var days = xml.getElementsByTagName('day');

    if ((browserInfo.browser == 'FF') || ((browserInfo.browser == 'O') && (browserInfo.majorVersion >= 9))) {
        for (i in days) {
            if (typeof(days[i].getAttribute) != 'undefined') {
                links[days[i].getAttribute('number')] = days[i].textContent;
            }
        }
    } else if ((browserInfo.browser == 'O') && (browserInfo.majorVersion >= 8)) {
        for (i = 0; i <= 31; i++) {
            if (days[i] && (typeof(days[i]) != 'undefined')) {
                tmp = days[i].innerText.replace(/<!\[CDATA\[/i, '');
                tmp = tmp.replace(/\]\]>/i, '');

                links[days[i].getAttribute('number')] = tmp;
            }
        }
    } else {
        for (i = 0; i <= 31; i++) {
            if (days[i] && (typeof(days[i]) != 'undefined')) {
                links[days[i].getAttribute('number')] = days[i].text;
            }
        }
    }

    return links;
}

function clearCalendar(div) {
    var table = document.getElementById('the_calendar');

    if (table && (typeof(table) != 'undefined')) {
        div.removeChild(table);
    }
}

function showPreloader() {
    var preloader = document.getElementById('calendar_preloader');
    if (preloader && (typeof(preloader) != 'undefined')) {
        preloader.className = 'visible';
    }
}

function hidePreloader() {
    var preloader = document.getElementById('calendar_preloader');
    if (preloader && (typeof(preloader) != 'undefined')) {
        preloader.className = '';
    }
}

/* End of Calendar works */