/* * JQuery zTree excheck 3.0 * http://code.google.com/p/jquerytree/ * * Copyright (c) 2010 Hunter.z (baby666.cn) * * Licensed same as jquery - MIT License * http://www.opensource.org/licenses/mit-license.php * * email: hunter.z@263.net * Date: 2012-01-10 */ (function(h){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},t={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c,a){if(a.chkDisabled=== !0)return!1;var b=g.getSetting(c.data.treeId),d=b.data.key.checked;if(n.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=h("#"+a.tId+j.id.CHECK);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=g.getSetting(c.data.treeId),d=h("#"+a.tId+j.id.CHECK);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled===!0)return!1; var b=g.getSetting(c.data.treeId),d=h("#"+a.tId+j.id.CHECK);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};h.extend(!0,h.fn.zTree.consts,o);h.extend(!0,h.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,f,k=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var i=g.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=i.length-1;d>=0;d--)b=i[d],b[l]=!1,i.splice(d,1),e.setChkClass(c,h("#"+b.tId+j.id.CHECK),b),b.parentTId!=a.parentTId&& e.repairParentChkClassWithSelf(c,b);i.push(a)}else{i=a.parentTId?a.getParentNode():g.getRoot(c);for(d=0,f=i[k].length;d-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[k]||a[k].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!1), a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,f=j.radio,k="",k=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==f.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+"_"+ k,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,f=g.getRoot(c),k=0,l=f[d].length;k0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b){if(a){var d=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b,a.nocheck!==!0&&e.repairChkClass(c,a);if(a[d])for(var f=0,k=a[d].length;f0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var f=c.data.key.children,k=c.data.key.checked,l=h("#"+a.tId+j.id.CHECK);d||(d=a);var i=!1;if(a[f])for(var m=0,n=a[f].length;m0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&c.treeObj.trigger(j.event.CHECK,[c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=g.getRoot(c).radioCheckedList,b=0,d=a.length;b-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var f=c.data.key.children,k=c.data.key.checked,d=!d?[]:d,e=0,i=a.length;e0?2:0,h==2){f=2;break}else h== 0&&(f=0);else if(c.check.chkStyle==j.checkbox.STYLE){h=m.nocheck===!0?m.check_Child_State:m.halfCheck===!0?1:m.nocheck!==!0&&m[d]?m.check_Child_State===-1||m.check_Child_State===2?2:1:m.check_Child_State>0?1:0;if(h===1){f=1;break}else if(h===2&&e&&h!==f){f=1;break}else if(f===2&&h>-1&&h<2){f=1;break}else h>-1&&(f=h);e||(e=m.nocheck!==!0)}}a.check_Child_State=f}}}});var o=h.fn.zTree,n=o._z.tools,j=o.consts,e=o._z.view,g=o._z.data;g.exSetting(t);g.addInitBind(function(c){var a=c.treeObj,b=j.event;a.unbind(b.CHECK); a.bind(b.CHECK,function(a,b,e){n.apply(c.callback.onCheck,[a,b,e])})});g.addInitCache(function(){});g.addInitNode(function(c,a,b,d,f,e){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]=n.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;b.chkDisabled=!!b.chkDisabled||d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=n.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus= function(){return g.getCheckStatus(c,b)};e&&g.makeChkFlag(c,d)}});g.addInitProxy(function(c){var a=c.target,b=g.getSetting(c.data.treeId),d="",f=null,e="",h=null;if(n.eqs(c.type,"mouseover")){if(b.check.enable&&n.eqs(a.tagName,"button")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=a.parentNode.id,e="mouseoverCheck"}else if(n.eqs(c.type,"mouseout")){if(b.check.enable&&n.eqs(a.tagName,"button")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=a.parentNode.id,e="mouseoutCheck"}else if(n.eqs(c.type, "click")&&b.check.enable&&n.eqs(a.tagName,"button")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=a.parentNode.id,e="checkNode";if(d.length>0)switch(f=g.getNodeCache(b,d),e){case "checkNode":h=p;break;case "mouseoverCheck":h=q;break;case "mouseoutCheck":h=r}return{stop:!1,node:f,nodeEventType:e,nodeEventCallback:h,treeEventType:"",treeEventCallback:null}});g.addInitRoot(function(c){g.getRoot(c).radioCheckedList=[]});g.addBeforeA(function(c,a,b){var d=c.data.key.checked;c.check.enable&&(g.makeChkFlag(c, a),c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&a[d]&&g.getRoot(c).radioCheckedList.push(a),b.push(""))});g.addZTreeTools(function(c,a){a.checkNode=function(a,b,g,l){var i=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[i]),l=!!l,(a[i]!==b||g)&&!(l&&n.apply(this.setting.callback.beforeCheck, [this.setting.treeId,a],!0)==!1)&&n.uCanDo(this.setting)&&this.setting.check.enable&&a.nocheck!==!0))a[i]=b,b=h("#"+a.tId+j.id.CHECK),(g||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),l&&c.treeObj.trigger(j.event.CHECK,[c.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return g.getTreeCheckedNodes(this.setting, g.getRoot(c)[b],a!==!1)};a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return g.getTreeChangeCheckedNodes(this.setting,g.getRoot(c)[a])};a.setChkDisabled=function(a,b){b=!!b;e.repairSonChkDisabled(this.setting,a,b);b||e.repairParentChkDisabled(this.setting,a,b)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&h("#"+c.tId).get(0)&&n.uCanDo(this.setting)){var g=h("#"+c.tId+j.id.CHECK);(f==!0||this.setting.check.chkStyle=== j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,g,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)}})(jQuery);