var
    cal_chk_id_prefix = 'categ-',
    cal_select1 = '',
    cal_select2 = '',
    cal_selected_class = 'selected',
    cal_url_categ_arr = [],
    cal_url_daterange = '',
    cal_url = '';

function cal_clickday(elem) {
    // Если был выделен один день
    if (cal_select1 && !cal_select2) {
        cal_select2 = elem.id;
        cal_update_days(true);
        cal_update_daterange();
        cal_select1 = '';
        cal_select2 = '';
    // Если не было выделено ни одного дня или был выделен диапазон
    } else {
        cal_select1 = elem.id;
        cal_select2 = '';
        cal_update_days(false);
        cal_update_daterange();
    }
}

function cal_update_days(diapazon) {
    var i, id_first, id_last, inside = false, parent, td, td_arr;
    
    parent = document.getElementById('cal');
    td_arr = parent.getElementsByTagName('td');
    
    for (i = 0; i < td_arr.length; ++i) {
        td = td_arr.item(i);
        if (td.id) {
            if (diapazon) {
                if (inside) {
                    td.className += ' ' + cal_selected_class;
                    if (cal_select1 == td.id || cal_select2 == td.id) {
                        inside = false;
                    }
                } else if (cal_select1 == td.id || cal_select2 == td.id) {
                    td.className += ' ' + cal_selected_class;
                    if (cal_select1 != cal_select2) {
                        inside = true;
                    }
                }
            } else {
                if (cal_select1 == td.id) {
                    td.className += ' ' + cal_selected_class;
                } else {
                    td.className = td.className.split(cal_selected_class)[0];
                }
            }
        }
    }
}

function cal_update_daterange() {
    var date1, date2;
    
    if (cal_select1 && cal_select2) {
        date1 = cal_select1.substr(3);
        date2 = cal_select2.substr(3);
        
        if (date1 < date2) {
            cal_url_daterange = date1 + '-' + date2 + '/';
        } else {
            cal_url_daterange = date2 + '-' + date1 + '/';
        }
    } else if (cal_select1 && !cal_select2) {
        cal_url_daterange = cal_select1.substr(3) + '-' + cal_select1.substr(3) + '/';
    } else {
        cal_url_daterange = '';
    }
    
    cal_makelink();
}

function cal_update_categ() {
    var chk, chk_arr, i;
    
    cal_url_categ_arr = [];
    
    chk_arr = document.getElementById('event').getElementsByTagName('input');

    for (i = 0; i < chk_arr.length; ++i) {
        chk = chk_arr.item(i);
        
        if (chk.checked && chk.id) {
            cal_url_categ_arr.push(chk.id.split(cal_chk_id_prefix)[1]);
        }
    }
    
    // Если выбраны все категории, очищаем массив категорий
    if (cal_url_categ_arr.length == chk_arr.length) {
        cal_url_categ_arr = [];
    }
    
    cal_makelink();
}

function cal_makelink() {
    var a;
    
    a = document.getElementById('event').getElementsByTagName('a').item(0);
    
    if (!cal_url) {
        cal_url = a.href;
    }
    
    a.href = cal_url + cal_url_daterange + (cal_url_categ_arr.length ? 'categ-' + cal_url_categ_arr.join('-') + '/' : '');
}
