function cmbPopup(event, prefix){
    var popupCtl = $(this.id.replace("cmb_checklist", "win_checklist"));
    var cmbContainer = this.getParent();
   
    var cmbContainerSize = cmbContainer.getSize();
    var cmbContainerPosition = cmbContainer.getPosition();

    popupCtl.setStyles({
        'display': 'block',
        'left': cmbContainerPosition.x + 'px',
        'width': cmbContainerSize.x + 'px',
        'top': cmbContainerPosition.y + 'px'
    });
}

function cmbUpdate(event, prefix){
    var popupCtl = this.getParent(".win_checklist");
    var cmbCtlId = popupCtl.id.replace("win_checklist", "cmb_checklist")
    var cmbCtl = $(cmbCtlId);
    popupCtl.setStyle("display", "none");

    var displayText = "不限";
    var selectedItemsText = [];
    var selectedItems = popupCtl.getElements("input[type=checkbox][checked]");
    selectedItems.each(function(el){
        if(!el.get("disabled"))
            selectedItemsText[selectedItemsText.length] = popupCtl.getElement("label[for=" + el.id + "]").get('text');
    });

    if(selectedItemsText.length > 0)
        displayText = selectedItemsText.join(", ");

    cmbCtl.getElement("span").set("text", displayText);
}

function chkMultipleChange(){
    var parentCheckbox = this;
    var subCheckboxes = parentCheckbox.getParent().getElements("input[type=checkbox]");
    var currentStatus = parentCheckbox.get("checked");

    subCheckboxes.each(function(el){
        if(el != parentCheckbox){
            el.set("checked", currentStatus);
            el.set("disabled", (currentStatus) ? "disabled" : "");
        }
    })
}

function cmbInit(form_container_selector, prefix){
    $$(form_container_selector + " a.cmb_checklist").each(function(item){
        item.addEvent('click', cmbPopup.bind(item).pass(prefix));
    });

    $$(form_container_selector + " a.cmb_winclose").each(function(item){
        item.addEvent('click', cmbUpdate.bind(item).pass(prefix));
        cmbUpdate.bind(item).pass(prefix)();
    });

    $$(form_container_selector + " li.multiple > input[type=checkbox]").each(function(item){
        item.addEvent('change', chkMultipleChange);
    });
}