            var bp_obj = null;
            var bp_date = null;
            var bp_combined = 0;
            function BPDateLayer(obj, input_name) {
                var d_obj = document.getElementById('date_select');
                var i_obj = document.getElementById(input_name);
                bp_combined = 0;
                bp_obj = i_obj;
                bp_date = i_obj.value;
                if (d_obj) {
                    ajax.get(bp_url + bp_date + '&bp_type=' + bp_type, BPAjaxProcess);
                    d_obj.style.display = '';
                    d_obj.style.left = BPGetObjLeft(obj);
                    d_obj.style.top = BPGetObjTop(obj);
                    BPBindHide();
                }
            }
            function BPDateLayer2(obj) {
                var d_obj = document.getElementById('date_select');
                var i_obj = document.getElementById('bp_date_start');
                bp_combined = 1;
                bp_obj = null;
                bp_date = i_obj.value;
                if (d_obj) {
                    ajax.get(bp_url + bp_date + '&bp_type=' + bp_type + '&bp_combined=1', BPAjaxProcess);
                    d_obj.style.display = '';
                    d_obj.style.left = BPGetObjLeft(obj);
                    d_obj.style.top = BPGetObjTop(obj);
                    BPBindHide();
                }
            }
            function BPDateShiftLeft() {
                ajax.get(bp_url + bp_date + '&bp_combined=' + bp_combined + '&bp_shift=left', BPAjaxProcess);
            }
            function BPDateShiftYearLeft() {
                ajax.get(bp_url + bp_date + '&bp_combined=' + bp_combined + '&bp_shift=year_left', BPAjaxProcess);
            }
            function BPDateShiftRight() {
                ajax.get(bp_url + bp_date + '&bp_combined=' + bp_combined + '&bp_shift=right', BPAjaxProcess);
            }
            function BPDateShiftYearRight() {
                ajax.get(bp_url + bp_date + '&bp_combined=' + bp_combined + '&bp_shift=year_right', BPAjaxProcess);
            }
            function BPDateSubmit(date) {
                if (bp_obj != null) {
                    bp_obj.value = date;
//                    if (bp_obj.type == "hidden")
//                        document.bp_form.submit();
                    BPHideLayer();
                    BPUnbindHide();
                }
            }
            function BPDateSubmit2(date1, date2) {
                var obj1 = document.getElementById('bp_date_start');
                var obj2 = document.getElementById('bp_date_end');
                obj1.value = date1;
                obj2.value = date2;
//                document.bp_form.submit();
                BPHideLayer();
                BPUnbindHide();
            }
            function BPAjaxProcess(data) {
                var str = '';
                bp_date = data['date'];
                var n_obj = document.getElementById('bp_date_month_name');
                if (n_obj) {
                    if (data['month']['link'] == 1)
                        n_obj.innerHTML = '<a href="#" class="bp-calendar-month" onclick="BPDateSubmit2(\'' + data['month']['start_date'] + '\', \'' + data['month']['end_date'] + '\'); return false;">' + decodeURIComponent(data['month']['name']) + '</a>';
                    else
                        n_obj.innerHTML = decodeURIComponent(data['month']['name']);
                }
                var n_obj = document.getElementById('bp_date_year_name');
                if (n_obj) {
                    if (data['month']['link'] == 1)
                        n_obj.innerHTML = '<a href="#" class="bp-calendar-month" onclick="BPDateSubmit2(\'' + data['year'] + '-01-01\', \'' + data['year'] + '-12-31\'); return false;">' + decodeURIComponent(data['year']) + '</a>';
                    else
                        n_obj.innerHTML = decodeURIComponent(data['year']);
                }
                var sl_obj = document.getElementById('bp_date_shift_left');
                if (data['left'] == 1)
                    sl_obj.style.display = '';
                else
                    sl_obj.style.display = 'none';
                var syl_obj = document.getElementById('bp_date_shift_year_left');
                if (data['year_left'] == 1)
                    syl_obj.style.display = '';
                else
                    syl_obj.style.display = 'none';
                var sr_obj = document.getElementById('bp_date_shift_right');
                if (data['right'] == 1)
                    sr_obj.style.display = '';
                else
                    sr_obj.style.display = 'none';
                var syr_obj = document.getElementById('bp_date_shift_year_right');
                if (data['year_right'] == 1)
                    syr_obj.style.display = '';
                else
                    syr_obj.style.display = 'none';
                for(w_id in data['weeks']) {
                    var w_obj = document.getElementById('bp_week_' + w_id + '_cell');
                    if (w_obj) {
                        if (data['weeks'][w_id]['link'] == 1)
                            w_obj.innerHTML = '<a href="#" onclick="BPDateSubmit2(\'' + data['weeks'][w_id]['start_date'] + '\', \'' + data['weeks'][w_id]['end_date'] + '\'); return false;">' + decodeURIComponent(data['weeks'][w_id]['number']) + '</a>';
                        else
                            w_obj.innerHTML = decodeURIComponent(data['weeks'][w_id]['number']);
                    }
                    for(d_id in data['weeks'][w_id]['days']) {
                        var obj = document.getElementById('bp_w' + w_id + '_d' + d_id);
                        if (obj) {
                            if (data['weeks'][w_id]['days'][d_id]['link'] == 1) {
                                if (bp_obj == null)
                                    obj.innerHTML = '<a href="#" onclick="BPDateSubmit2(\'' + data['year'] + '-' + data['month']['number'] + '-' + data['weeks'][w_id]['days'][d_id]['number'] + '\', \'' + data['year'] + '-' + data['month']['number'] + '-' + data['weeks'][w_id]['days'][d_id]['number'] + '\'); return false;">' + data['weeks'][w_id]['days'][d_id]['number'] + '</a>';
                                else
                                    obj.innerHTML = '<a href="#" onclick="BPDateSubmit(\'' + data['year'] + '-' + data['month']['number'] + '-' + data['weeks'][w_id]['days'][d_id]['number'] + '\'); return false;">' + data['weeks'][w_id]['days'][d_id]['number'] + '</a>';
                            } else
                                obj.innerHTML = data['weeks'][w_id]['days'][d_id]['number'];
                        }
                    }
                }
                var w5_obj = document.getElementById('bp_week_5_tr');
                var w6_obj = document.getElementById('bp_week_6_tr');
                if (data['weeks'][4] == undefined) {
                    w5_obj.style.display = 'none';
                } else {
                    w5_obj.style.display = '';
                }
                if (data['weeks'][5] == undefined) {
                    w6_obj.style.display = 'none';
                } else {
                    w6_obj.style.display = '';
                }
                var l8_obj = document.getElementById('bp_last_8');
                if (l8_obj) {
                    if (data['combined'] == 1) {
                        l8_obj.innerHTML = '<a href="#" onclick="BPDateSubmit2(\'' + data['last_8_start'] + '\', \'' + data['last_8_end'] + '\'); return false;">' + bp_last_8_text + '</a>';
                        l8_obj.style.display = '';
                    } else
                        l8_obj.style.display = 'none';
                }
            }
            function BPGetObjLeft(elem) {
                xPos = elem.offsetLeft;
                tempEl = elem.offsetParent;
                while (tempEl != null) {
                    xPos += tempEl.offsetLeft;
                    tempEl = tempEl.offsetParent;
                }
                return xPos;
            }
            function BPGetObjTop(elem) {
                yPos = elem.offsetTop;
                tempEl = elem.offsetParent;
                while (tempEl != null) {
                    yPos += tempEl.offsetTop;
                    tempEl = tempEl.offsetParent;
                }
                return yPos;
            }
            function BPClickLayer(event) {
                var obj = document.getElementById('date_select');
                var obj_left = BPGetObjLeft(obj);
                var obj_top = BPGetObjTop(obj);
                var obj_right = obj_left + $(obj).width();
                var obj_bottom = obj_top + $(obj).height();
                if ( event.pageY < obj_bottom &&
                   event.pageY > obj_top &&
                   event.pageX < obj_right &&
                   event.pageX > obj_left) {
                   // do nothing?
                } else {
                    BPHideLayer();
                    BPUnbindHide();
                }
            }
            function BPHideLayer() {
                var obj = document.getElementById('date_select');
                if (obj.style.display != 'none')
                    obj.style.display = 'none';
            }
            function BPBindHide() {
                $('body').bind('click', BPClickLayer);
//                document.body.addEventListener('click',BPClickLayer,true);
            }
            function BPUnbindHide() {
                $('body').unbind('click', BPClickLayer);
//                document.body.removeEventListener('click',BPClickLayer,true);
            }
            function BPToggleTable() {
                var obj = document.getElementById('bp-result-table');
                if (obj) {
                    if (obj.style.display == 'none')
                        obj.style.display = '';
                    else
                        obj.style.display = 'none';
                }
            }
            function BPCheckDate() {
                var date1_value = document.getElementById('bp_date_start').value;
                var expl1 = date1_value.split('-');
                var date2_value = document.getElementById('bp_date_end').value;
                var expl2 = date2_value.split('-');
                var date1 = new Date(expl1[0], expl1[1] - 1, expl1[2])
                var date2 = new Date(expl2[0], expl2[1] - 1, expl2[2])
                var temp1 = document.getElementById('bp_groupby');
                var groupby = temp1.options[temp1.selectedIndex].value;
                var date_diff = Math.ceil((date2.getTime() - date1.getTime()) / 86400000);
                if (isNaN(date_diff)) {
                    alert(bp_error[1]);
                    return false;
                }
                if (date_diff < 0) {
                    alert(bp_error[0]);
                    return false;
                }
                if (groupby == 0) { // valandomis
                    if (date_diff > 13) {
//                        alert(bp_error[2]);
//                        return false;
                    }
                } else if (groupby == 1) { // dienomis
                    if (date_diff == 0) {
                        alert(bp_error[3]);
                        return false;
                    } else if (date_diff > 365) {
//                        alert(bp_error[4]);
//                        return false;
                    }
                } else if (groupby == 2) { // savaitemis
                    if (date1.getDay() != 1 || date2.getDay() != 0) {
                        alert(bp_error[5]);
                        return false;
                    } else if (date_diff == 6) {
                        alert(bp_error[6]);
                        return false;
                    } else if (date_diff > 1460) {
//                        alert(bp_error[7]);
//                        return false;
                    }
                } else if (groupby == 3) { // menesiais 
                    var temp1 = new Date(date2.getFullYear(), date2.getMonth(), 32);
                    var temp2 = 32 - temp1.getDate();
                    if (date1.getDate() != 1 || date2.getDate() != temp2) {
                        alert(bp_error[8]);
                        return false;
                    } else if (date1.getFullYear() == date2.getFullYear()
                    && date1.getMonth() == date2.getMonth()) {
                        alert(bp_error[9]);
                        return false;
                    } else if (date_diff > 3652) {
//                        alert(bp_error[10]);
//                        return false;
                    }
                } else if (groupby == 4) { // metais
                    if (date1.getMonth() != 0
                    || date2.getMonth() != 11
                    || date1.getDate() != 1
                    || date2.getDate() != 31) {
                        alert(bp_error[11]);
                        return false;
                    } else if (date1.getFullYear() == date2.getFullYear()) {
                        alert(bp_error[12]);
                        return false;
                    } else if (date_diff > 36530) {
//                        alert(bp_error[13]);
//                        return false;
                    }
                }
                document.bp_form.submit();
            }

