//by:xcl @2012.8  qq:80213876
;(function ($) { 
    $.extend({
        XCLTableList:function(options){
            options = $.extend({},funs.Defaults, options);
            funs.Init(options);
            $(options.tableClass).each(function(){
                $trs=null;
                if($(this).children("tbody").length>0){//??????????????tbody????
                    $trs=options.trNoHoverClass==""?$(this).children().children():$(this).children().children().not(options.trNoHoverClass);
                }else{
                    $trs=options.trNoHoverClass==""?$(this).children():$(this).children().not(options.trNoHoverClass);
                }
                //??????????
                if(options.trHoverColor!=""){
                    $trs.hover(function(){
                        $(this).addClass("XCLTableList_trHover");
                    },function(){
                        $(this).removeClass("XCLTableList_trHover");
                    });
                }
                //??????????
                if(options.trClickColor!=""){
                    $trs.click(function(){
                        $trs.removeClass("XCLTableList_trClick");
                        $(this).addClass("XCLTableList_trClick");
                    });
                }
                //??????????
				
				/*****
                if(options.trEvenColor!=""){
                    $trs.each(function(i){
                        if(i%2==0){
                            $(this).addClass("XCLTableList_trEven");
                        }
                    });
                }
                if(options.trOddColor!=""){
                   $trs.each(function(i){
                        if(i%2==1){
                            $(this).addClass("XCLTableList_trOdd");
                        }
                    });
                }
				***/
				
                /******????????????????****/

                
				
				
				/******????????????*****/
				
                //??????????
                $(options.checkAllClass).click(function(){
                    $ckAll=$(this).closest(options.tableClass).find(options.checkAllClass);
                    $ckItem=$(this).closest(options.tableClass).find(options.checkItemClass);
                    if(this.checked){
                        $ckItem.attr({"checked":true});
                    }else{
                        $ckItem.attr({"checked":false});
                    }
                    funs.GetCheckBoxIDs($ckAll,$ckItem);
                });
                
				//????????????checkbox??
                $(options.checkItemClass).click(function(){
                    $ckAll=$(this).closest(options.tableClass).find(options.checkAllClass);
                    $ckItem=$(this).closest(options.tableClass).find(options.checkItemClass);
                    var flag=1;
                    $ckItem.each(function(){
                        if(!this.checked){
                            flag=0;
                            return false;
                        }
                    });
                    if(flag==1){
                        $ckAll.attr({"checked":true});
                    }else{
                        $ckAll.attr({"checked":false});
                    }
                    funs.GetCheckBoxIDs($ckAll,$ckItem);
                });
                /******????????????*****/

            });
        }
    });
    var funs={
        Defaults:{
            tableClass:".sortable",		//table??class
            trHoverColor:"#eee",		//??????????????
            trClickColor:"#D9E6FF",		//??????????????
            trNoHoverClass:".noHover",	//????????????????class
            trEvenColor:"#F3FFF0",		//????????????0????
            trOddColor:"#fff",			//????????????
            checkAllClass:".checkAll",	//????????class
            checkItemClass:".checkItem",//????????class
            checkedTrColor:"#A6FFFF"	//????????????
        },
        Init:function(options){
            //????
            $("head").append("<style type='text/css'>.XCLTableList_trHover{background:"+options.trHoverColor+"!important;} "+
                                    ".XCLTableList_trClick{background:"+options.trClickColor+"!important;} "+
                                    ".XCLTableList_trEven{background:"+options.trEvenColor+";} "+
                                    ".XCLTableList_trOdd{background:"+options.trOddColor+";}"+
                                    ".XCLTableList_trChecked{background:"+options.checkedTrColor+"!important;}"+
                                    "</style>");
            //????????????????????????????????
            $(options.tableClass).each(function(){
                    $ckAll=$(this).closest(options.tableClass).find(options.checkAllClass);
                    $ckItem=$(this).closest(options.tableClass).find(options.checkItemClass);
                    var isAllChecked=1;
                    $ckItem.each(function(){
                        if(!this.checked){
                            isAllChecked=0;return false;
                        }
                    });
                    if(isAllChecked==1){
                        $ckAll.attr({"checked":true});
                    }
            });
        },
        //??????????checkbox??value????????????????????checkbox??value??
        GetCheckBoxIDs:function(ckAll,ckItem){
            var v=[];
            ckItem.each(function(){
                if(this.checked){
                    $(this).closest("tr").addClass("XCLTableList_trChecked");
                    v.push(this.value);
                }else{
                    $(this).closest("tr").removeClass("XCLTableList_trChecked");
                }
            });
            ckAll.val(v.toString());
        }
    }
})(jQuery);

//-------------------------------------------------------------
function checkAllaction(obj){	//??????????
	for(var i=0;i<document.all.length;i++){
		if (document.all[i].type=="checkbox"){
			
			switch(obj){
				case 1:		//????
					document.all[i].checked=true;
					$ckItem.attr({"checked":true});
					break; 
				case 2:		//????
					document.all[i].checked=false;
					$ckItem.attr({"checked":false});
					break; 
				case 3:{	//????
					if(document.all[i].checked==true){document.all[i].checked=false;}
					else{document.all[i].checked=true;}
				}
				break; 
			}
		}
	}
	$ckAll=$(this).closest(options.tableClass).find(options.checkAllClass);
	$ckItem=$(this).closest(options.tableClass).find(options.checkItemClass);
	funs.GetCheckBoxIDs($ckAll,$ckItem);
}