/**
 * 表格复选框组件（用于选中一行的复选框）
 *
 * @version 1.0 2005-8-23 
 * @author 魏永增 
 */
function TableCheckBox(_checkBoxName, _checkAllName, _oForm) {
    /** 包含复选框的Form对象 */
    this.oForm = (_oForm) ? _oForm : document.forms[0];
    
    /** 复选框名称 */
    this.checkBoxName = (_checkBoxName) ? _checkBoxName : "tcb";
    
    /** 全选复选框名称 */
    this.checkAllName = (_checkAllName) ? _checkAllName 
            : (this.checkBoxName + "All") ;
            
    /** 全选复选框对象，为一个checkbox对象 */
    this.oCheckAll = null;

    /** 选中项的存放对象，为一个hidden对象 */
    this.oSelectedList = null;

    /** 保存选中对象的数组 */
    this.selectedArray = new Array();
    
    /**
     * 点击单个复选框
     * 
     * @param isChecked 当前复选框是否选中
     */
    this.clickSingle = function (isChecked) {
        var isCheckAll = this.isCheckAll();
        if ( (isChecked && !isCheckAll) || (!isChecked && isCheckAll) ) {
            if (isChecked) {
                this.oCheckAll.checked = this.isCheckedAll();
            } else {
                this.oCheckAll.checked = false;
            }
        }
        this.saveSelected();
    }
    
    /**
     * 点击全选复选框
     */
    this.clickAll = function () {
        var isCheckAll = this.isCheckAll();
        var formLength = this.oForm.length;
        for (var i=0; i<formLength; i++) {
            var formElement = this.oForm.elements[i];
            if (formElement.type == "checkbox"
                    && formElement.name == this.checkBoxName) {
                formElement.checked = isCheckAll;
            }
        }
        this.saveSelected();
    }

    /**
     * 获取全选复选框对象是否选中
     *
     * @return 选中返回true，否则返回false
     */
    this.isCheckAll = function () {
        if (!this.oCheckAll) {
            this.oCheckAll = this.oForm.elements[this.checkAllName];
        }
        return this.oCheckAll.checked;
    }
    
    /**
     * 判断所有复选框都是都被选中
     *
     * @return 全部选中返回true，否则返回false
     */
    this.isCheckedAll = function () {
        var formLength = this.oForm.length;
        for (var i=0; i<formLength; i++) {
            var formElement = this.oForm.elements[i];
            if (formElement.type == "checkbox" && !formElement.checked
                    && formElement.name == this.checkBoxName) {
                return false;
            }
        }
        return true;
    }

    /**
     * 保存已选中对象
     */
    this.saveSelected = function () {
        var formLength = this.oForm.length;
        var valueArray = new Array();
        this.selectedArray = new Array();
        for (var i=0, j=0; i<formLength; i++) {
            var formElement = this.oForm.elements[i];
            if (formElement.type == "checkbox" && formElement.checked
                    && formElement.name == this.checkBoxName) {
                this.selectedArray[j] = formElement;
                valueArray[j] = formElement.value;
                j++;
            }
        }
        if (this.oSelectedList) {
            this.oSelectedList.value = valueArray.join(",");
        }
    }
}