Event.observe(window, 'load', function() {
    $A($$('.selectCategory1')).each(function(chk) {
        Event.observe(chk, 'click', function() {
            bukkenCheckboxs = $$('.selectCategory1');
            numChecked = $A(bukkenCheckboxs).inject(0, function(num, chk) { return chk.checked ? num+1 : num; });
            $A(document.getElementsByClassName('allcheck')).each(function(allChkbox) {
                allChkbox.checked = numChecked == bukkenCheckboxs.length;
            });
            tglBukkenCheckBox(chk);
        });
    });
    $A($$('.allcheck')).each(function(allChkbox) {
        Event.observe(allChkbox, 'click', function () {
            changeAllChkbox(allChkbox.checked);
            changeBukkenChkbox(allChkbox.checked);
        }.bind(this));
    });
    allEntry();
    allFavorite();
});

function changeAllChkbox(checked)
{
    $A($$('.allcheck')).each(function(alChk) {
        alChk.checked = checked;
    });
}

function changeBukkenChkbox(checked)
{
    $A($$('.selectCategory1')).each(function(chk) {
        chk.checked = checked;
        tglBukkenCheckBox(chk);
    });
}

function tglBukkenCheckBox(chk)
{
    if (chk.checked) {
        Element.addClassName($('door' + chk.value), 'selectOn');
    } else {
        Element.removeClassName($('door' + chk.value), 'selectOn');
    }
}

function allEntry()
{
    $A($$('.allEntry')).each(function(alEty) {
        Event.observe(alEty, 'click', function() {
            if (!isCheckboxChecked()) {
                alert('物件を選択してください。');
                return;
            }
            targetForm = $('top_multi_form');
            $A(targetForm.childElements()).each(function(child) {
                child.remove();
            });
            $A($$('.selectCategory1')).each(function(chk) {
                if (chk.checked) {
                    var hidden = document.createElement('input');
                    hidden.type = 'hidden';
                    hidden.name = 'id[]';
                    hidden.value = chk.value;
                    targetForm.appendChild(hidden);
                }
            });
            targetForm.submit();
        });
    });
}

function allFavorite()
{
    $A($$('.allFavorite')).each(function(alFvt) {
        Event.observe(alFvt, 'click', function() {
            if (!isCheckboxChecked()) {
                alert('物件を選択してください。');
                return;
            }
            if (isFavoritePage()) {
                bukkenFavoriteBtns = jQuery('.btnDelete a');
            } else {
                bukkenFavoriteBtns = jQuery('.btnKeep a');
            }
            acc = 0;
            var bukkenIds = new Array();
            $A($$('.selectCategory1')).each(function(chk) {
                if (chk.checked) {
                    bukkenIds.push(chk.value);
                    $A(bukkenFavoriteBtns).each(function(addBtn) {
                        if (Number(chk.value) == Number(addBtn.parentNode.value)) {
                            acc++;
                            Event.stopObserving(addBtn, 'click');
                            addBtn.parentNode.className = isFavoritePage() ? 'btnKeep' : 'btnDelete';
                            addBtn.className = isFavoritePage() ? 'checkListBtn' : 'deleteListBtn';
                            doorObserve(addBtn, isFavoritePage() ? 'add' : 'remove');
                        }
                    });
                }
            });
            operateFavorite(isFavoritePage() ? 'remove' : 'add', bukkenIds);
            updateDoorRentBukkenFavorite(isFavoritePage() ? 'remove' : 'add', acc);
            showFavoriteMsg(isFavoritePage() ? 'remove' : 'add');
        });
    });
}

function selectBukkensByGroup(chk, buildingId)
{
    $A($$('#building' + buildingId + ' .selectCategory_sRoom')).each(function(e) {
        e.checked = chk.checked;
    });
}

function isFavoritePage()
{
    return location.href.match(/favorite(_[0-9])?\.htm/i);
}

function isCheckboxChecked()
{
    return getCheckboxCheckedCount() != 0;
}

function getCheckboxCheckedCount()
{
    return $A($$('.selectCategory1')).inject(0, function(num, chk) { return chk.checked ? num+1 : num; });
}


