thirdparty JS for the CLIENT FW
authorseshukm <seshu.kumar.m@huawei.com>
Tue, 24 Jan 2017 05:24:41 +0000 (10:54 +0530)
committerseshukm <seshu.kumar.m@huawei.com>
Tue, 24 Jan 2017 05:24:41 +0000 (10:54 +0530)
Unified Framework for the OPEN-O GUI.

Issue-ID : CLIENT-11 and its sub stories

Change-Id: Icf00375a2bf9529640eee08ab2fc8ffe08ef3348
Signed-off-by: seshukm <seshu.kumar.m@huawei.com>
portal-common/src/main/webapp/framework/browser/thirdparty/images/collapse_arrow.png [new file with mode: 0644]
portal-common/src/main/webapp/framework/browser/thirdparty/images/expand_arrow.png [new file with mode: 0644]
portal-common/src/main/webapp/framework/browser/thirdparty/images/openo.png [new file with mode: 0644]
portal-common/src/main/webapp/framework/browser/thirdparty/images/searchicon.png [new file with mode: 0644]
portal-common/src/main/webapp/framework/browser/thirdparty/jquery.ztree.core-3.5.js [new file with mode: 0644]
portal-common/src/main/webapp/framework/browser/thirdparty/jquery_1.12.4.min.js [new file with mode: 0644]
portal-common/src/main/webapp/framework/browser/thirdparty/mustache.js [new file with mode: 0644]
portal-common/src/main/webapp/framework/browser/thirdparty/tree.jquery.js [new file with mode: 0644]

diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/images/collapse_arrow.png b/portal-common/src/main/webapp/framework/browser/thirdparty/images/collapse_arrow.png
new file mode 100644 (file)
index 0000000..8830741
Binary files /dev/null and b/portal-common/src/main/webapp/framework/browser/thirdparty/images/collapse_arrow.png differ
diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/images/expand_arrow.png b/portal-common/src/main/webapp/framework/browser/thirdparty/images/expand_arrow.png
new file mode 100644 (file)
index 0000000..f8935e1
Binary files /dev/null and b/portal-common/src/main/webapp/framework/browser/thirdparty/images/expand_arrow.png differ
diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/images/openo.png b/portal-common/src/main/webapp/framework/browser/thirdparty/images/openo.png
new file mode 100644 (file)
index 0000000..328b735
Binary files /dev/null and b/portal-common/src/main/webapp/framework/browser/thirdparty/images/openo.png differ
diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/images/searchicon.png b/portal-common/src/main/webapp/framework/browser/thirdparty/images/searchicon.png
new file mode 100644 (file)
index 0000000..960dea1
Binary files /dev/null and b/portal-common/src/main/webapp/framework/browser/thirdparty/images/searchicon.png differ
diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/jquery.ztree.core-3.5.js b/portal-common/src/main/webapp/framework/browser/thirdparty/jquery.ztree.core-3.5.js
new file mode 100644 (file)
index 0000000..0e7b338
--- /dev/null
@@ -0,0 +1,70 @@
+/*\r
+ * JQuery zTree core v3.5.18\r
+ * http://zTree.me/\r
+ *\r
+ * Copyright (c) 2010 Hunter.z\r
+ *\r
+ * Licensed same as jquery - MIT License\r
+ * http://www.opensource.org/licenses/mit-license.php\r
+ *\r
+ * email: hunter.z@263.net\r
+ * Date: 2015-06-18\r
+ */\r
+(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],\r
+otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,\r
+[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])});a.bind(c.SELECTED,\r
+function(a,c,g,l){j.apply(b.callback.onSelected,[c,g,l])});a.bind(c.UNSELECTED,function(a,c,g,l){j.apply(b.callback.onUnSelected,[c,g,l])})}],x=[function(b){var a=e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE).unbind(a.SELECTED).unbind(a.UNSELECTED)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;\r
+c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent=="string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,\r
+c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,o=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,\r
+g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=\r
+H}switch(l){case "mousedown":o=I;break;case "mouseup":o=J;break;case "dblclick":o=K;break;case "contextmenu":o=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,treeEventCallback:o}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=\r
+a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;\r
+a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=\r
+a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;\r
+for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+\r
+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]==\r
+"string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?null:[];for(var g=b.data.key.children,e=d?null:[],i=0,o=a.length;i<o;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),\r
+f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=\r
+0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,\r
+c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},\r
+transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<\r
+c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",\r
+m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&\r
+c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||\r
+b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,\r
+[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;\r
+return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:\r
+null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||\r
+!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=\r
+[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var n=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,n,d,t,k==c.length-1,g);h.addNodeCache(b,n)}t=[];n[j]&&n[j].length>0&&(t=i.appendNodes(b,a+1,n[j],n,f,g&&n.open));g&&(i.makeDOMNodeMainBefore(e,b,n),i.makeDOMNodeLine(e,b,n),h.getBeforeA(b,n,e),i.makeDOMNodeNameBefore(e,b,n),h.getInnerBeforeA(b,n,e),i.makeDOMNodeIcon(e,b,n),h.getInnerAfterA(b,n,e),i.makeDOMNodeNameAfter(e,b,n),h.getAfterA(b,n,e),n.isParent&&n.open&&i.makeUlHtml(b,\r
+n,e,t.join("")),i.makeDOMNodeMainAfter(e,b,n),h.addCreatedNode(b,n))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,\r
+[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&f<g;f++){var q=b.async.autoParam[f].split("="),o=q;q.length>1&&(o=q[1],q=q[0]);l[o]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var n=h.getRoot(b)._ver;\r
+p.ajax({contentType:b.async.contentType,cache:!1,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(n==h.getRoot(b)._ver){var g=[];try{g=!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,\r
+a,f]);j.apply(d)}},error:function(c,d,f){if(n==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,a,c){var d=h.getRoot(b).curSelectedList,f,g;for(f=d.length-1;f>=0;f--)if(g=d[f],a===g||!a&&(!c||c!==g))if(k(g,e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);b.treeObj.trigger(e.event.UNSELECTED,[m,b.treeId,g]);break}else d.splice(f,1),b.treeObj.trigger(e.event.UNSELECTED,\r
+[m,b.treeId,g])},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):\r
+b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>\r
+0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),o=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&o.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,g,e.folder.OPEN),i.replaceIcoClass(a,o,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,\r
+g,e.folder.CLOSE),i.replaceIcoClass(a,o,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:\r
+d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},isSelectedNode:function(b,a){if(!a)return!1;var c=h.getRoot(b).curSelectedList,d;for(d=c.length-1;d>=0;d--)if(a===c[d])return!0;return!1},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",\r
+c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},\r
+makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,\r
+"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&\r
+a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):\r
+c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level," ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},\r
+makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;\r
+if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,\r
+1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var o=f[d][g-1],g=k(o,e.id.UL,b),l=k(o,e.id.SWITCH,b);j=k(o,e.id.ICON,b);f==c?f[d].length==1?i.replaceSwitchClass(o,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),\r
+i.replaceSwitchClass(o,l,e.line.BOTTOM)):i.replaceSwitchClass(o,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=\r
+i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b,null,a);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a);b.treeObj.trigger(e.event.SELECTED,[m,b.treeId,a])},setNodeFontCss:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=\r
+k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,\r
+[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",\r
+LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove",SELECTED:"ztree_selected",UNSELECTED:"ztree_unselected"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",\r
+DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed="";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?\r
+c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=\r
+!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,m){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((m=!!m)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(m&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=m;if(!j.canAsync(d,a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==\r
+!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(p){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?\r
+null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,c=0,e=b.length;c<e;c++)a.push(b[c]);\r
+return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),b=a[d.data.key.children];h.initRoot(d);\r
+a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,a.getParentNode(),\r
+!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,0,b[a]):d.async.enable&&\r
+d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);\r
diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/jquery_1.12.4.min.js b/portal-common/src/main/webapp/framework/browser/thirdparty/jquery_1.12.4.min.js
new file mode 100644 (file)
index 0000000..db07c59
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */\r
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;\r
+}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{\r
+    marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({\r
+    padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
\ No newline at end of file
diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/mustache.js b/portal-common/src/main/webapp/framework/browser/thirdparty/mustache.js
new file mode 100644 (file)
index 0000000..a8560c0
--- /dev/null
@@ -0,0 +1,630 @@
+/*!\r
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript\r
+ * http://github.com/janl/mustache.js\r
+ */\r
+\r
+/*global define: false Mustache: true*/\r
+\r
+(function defineMustache (global, factory) {\r
+    if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\r
+        factory(exports); // CommonJS\r
+    } else if (typeof define === 'function' && define.amd) {\r
+        define(['exports'], factory); // AMD\r
+    } else {\r
+        global.Mustache = {};\r
+        factory(global.Mustache); // script, wsh, asp\r
+    }\r
+}(this, function mustacheFactory (mustache) {\r
+\r
+    var objectToString = Object.prototype.toString;\r
+    var isArray = Array.isArray || function isArrayPolyfill (object) {\r
+            return objectToString.call(object) === '[object Array]';\r
+        };\r
+\r
+    function isFunction (object) {\r
+        return typeof object === 'function';\r
+    }\r
+\r
+    /**\r
+     * More correct typeof string handling array\r
+     * which normally returns typeof 'object'\r
+     */\r
+    function typeStr (obj) {\r
+        return isArray(obj) ? 'array' : typeof obj;\r
+    }\r
+\r
+    function escapeRegExp (string) {\r
+        return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&');\r
+    }\r
+\r
+    /**\r
+     * Null safe way of checking whether or not an object,\r
+     * including its prototype, has a given property\r
+     */\r
+    function hasProperty (obj, propName) {\r
+        return obj != null && typeof obj === 'object' && (propName in obj);\r
+    }\r
+\r
+    // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\r
+    // See https://github.com/janl/mustache.js/issues/189\r
+    var regExpTest = RegExp.prototype.test;\r
+    function testRegExp (re, string) {\r
+        return regExpTest.call(re, string);\r
+    }\r
+\r
+    var nonSpaceRe = /\S/;\r
+    function isWhitespace (string) {\r
+        return !testRegExp(nonSpaceRe, string);\r
+    }\r
+\r
+    var entityMap = {\r
+        '&': '&amp;',\r
+        '<': '&lt;',\r
+        '>': '&gt;',\r
+        '"': '&quot;',\r
+        "'": '&#39;',\r
+        '/': '&#x2F;',\r
+        '`': '&#x60;',\r
+        '=': '&#x3D;'\r
+    };\r
+\r
+    function escapeHtml (string) {\r
+        return String(string).replace(/[&<>"'`=\/]/g, function fromEntityMap (s) {\r
+            return entityMap[s];\r
+        });\r
+    }\r
+\r
+    var whiteRe = /\s*/;\r
+    var spaceRe = /\s+/;\r
+    var equalsRe = /\s*=/;\r
+    var curlyRe = /\s*\}/;\r
+    var tagRe = /#|\^|\/|>|\{|&|=|!/;\r
+\r
+    /**\r
+     * Breaks up the given `template` string into a tree of tokens. If the `tags`\r
+     * argument is given here it must be an array with two string values: the\r
+     * opening and closing tags used in the template (e.g. [ "<%", "%>" ]). Of\r
+     * course, the default is to use mustaches (i.e. mustache.tags).\r
+     *\r
+     * A token is an array with at least 4 elements. The first element is the\r
+     * mustache symbol that was used inside the tag, e.g. "#" or "&". If the tag\r
+     * did not contain a symbol (i.e. {{myValue}}) this element is "name". For\r
+     * all text that appears outside a symbol this element is "text".\r
+     *\r
+     * The second element of a token is its "value". For mustache tags this is\r
+     * whatever else was inside the tag besides the opening symbol. For text tokens\r
+     * this is the text itself.\r
+     *\r
+     * The third and fourth elements of the token are the start and end indices,\r
+     * respectively, of the token in the original template.\r
+     *\r
+     * Tokens that are the root node of a subtree contain two more elements: 1) an\r
+     * array of tokens in the subtree and 2) the index in the original template at\r
+     * which the closing tag for that section begins.\r
+     */\r
+    function parseTemplate (template, tags) {\r
+        if (!template)\r
+            return [];\r
+\r
+        var sections = [];     // Stack to hold section tokens\r
+        var tokens = [];       // Buffer to hold the tokens\r
+        var spaces = [];       // Indices of whitespace tokens on the current line\r
+        var hasTag = false;    // Is there a {{tag}} on the current line?\r
+        var nonSpace = false;  // Is there a non-space char on the current line?\r
+\r
+        // Strips all whitespace tokens array for the current line\r
+        // if there was a {{#tag}} on it and otherwise only space.\r
+        function stripSpace () {\r
+            if (hasTag && !nonSpace) {\r
+                while (spaces.length)\r
+                    delete tokens[spaces.pop()];\r
+            } else {\r
+                spaces = [];\r
+            }\r
+\r
+            hasTag = false;\r
+            nonSpace = false;\r
+        }\r
+\r
+        var openingTagRe, closingTagRe, closingCurlyRe;\r
+        function compileTags (tagsToCompile) {\r
+            if (typeof tagsToCompile === 'string')\r
+                tagsToCompile = tagsToCompile.split(spaceRe, 2);\r
+\r
+            if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\r
+                throw new Error('Invalid tags: ' + tagsToCompile);\r
+\r
+            openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\s*');\r
+            closingTagRe = new RegExp('\\s*' + escapeRegExp(tagsToCompile[1]));\r
+            closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tagsToCompile[1]));\r
+        }\r
+\r
+        compileTags(tags || mustache.tags);\r
+\r
+        var scanner = new Scanner(template);\r
+\r
+        var start, type, value, chr, token, openSection;\r
+        while (!scanner.eos()) {\r
+            start = scanner.pos;\r
+\r
+            // Match any text between tags.\r
+            value = scanner.scanUntil(openingTagRe);\r
+\r
+            if (value) {\r
+                for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\r
+                    chr = value.charAt(i);\r
+\r
+                    if (isWhitespace(chr)) {\r
+                        spaces.push(tokens.length);\r
+                    } else {\r
+                        nonSpace = true;\r
+                    }\r
+\r
+                    tokens.push([ 'text', chr, start, start + 1 ]);\r
+                    start += 1;\r
+\r
+                    // Check for whitespace on the current line.\r
+                    if (chr === '\n')\r
+                        stripSpace();\r
+                }\r
+            }\r
+\r
+            // Match the opening tag.\r
+            if (!scanner.scan(openingTagRe))\r
+                break;\r
+\r
+            hasTag = true;\r
+\r
+            // Get the tag type.\r
+            type = scanner.scan(tagRe) || 'name';\r
+            scanner.scan(whiteRe);\r
+\r
+            // Get the tag value.\r
+            if (type === '=') {\r
+                value = scanner.scanUntil(equalsRe);\r
+                scanner.scan(equalsRe);\r
+                scanner.scanUntil(closingTagRe);\r
+            } else if (type === '{') {\r
+                value = scanner.scanUntil(closingCurlyRe);\r
+                scanner.scan(curlyRe);\r
+                scanner.scanUntil(closingTagRe);\r
+                type = '&';\r
+            } else {\r
+                value = scanner.scanUntil(closingTagRe);\r
+            }\r
+\r
+            // Match the closing tag.\r
+            if (!scanner.scan(closingTagRe))\r
+                throw new Error('Unclosed tag at ' + scanner.pos);\r
+\r
+            token = [ type, value, start, scanner.pos ];\r
+            tokens.push(token);\r
+\r
+            if (type === '#' || type === '^') {\r
+                sections.push(token);\r
+            } else if (type === '/') {\r
+                // Check section nesting.\r
+                openSection = sections.pop();\r
+\r
+                if (!openSection)\r
+                    throw new Error('Unopened section "' + value + '" at ' + start);\r
+\r
+                if (openSection[1] !== value)\r
+                    throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);\r
+            } else if (type === 'name' || type === '{' || type === '&') {\r
+                nonSpace = true;\r
+            } else if (type === '=') {\r
+                // Set the tags for the next time around.\r
+                compileTags(value);\r
+            }\r
+        }\r
+\r
+        // Make sure there are no open sections when we're done.\r
+        openSection = sections.pop();\r
+\r
+        if (openSection)\r
+            throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);\r
+\r
+        return nestTokens(squashTokens(tokens));\r
+    }\r
+\r
+    /**\r
+     * Combines the values of consecutive text tokens in the given `tokens` array\r
+     * to a single token.\r
+     */\r
+    function squashTokens (tokens) {\r
+        var squashedTokens = [];\r
+\r
+        var token, lastToken;\r
+        for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\r
+            token = tokens[i];\r
+\r
+            if (token) {\r
+                if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\r
+                    lastToken[1] += token[1];\r
+                    lastToken[3] = token[3];\r
+                } else {\r
+                    squashedTokens.push(token);\r
+                    lastToken = token;\r
+                }\r
+            }\r
+        }\r
+\r
+        return squashedTokens;\r
+    }\r
+\r
+    /**\r
+     * Forms the given array of `tokens` into a nested tree structure where\r
+     * tokens that represent a section have two additional items: 1) an array of\r
+     * all tokens that appear in that section and 2) the index in the original\r
+     * template that represents the end of that section.\r
+     */\r
+    function nestTokens (tokens) {\r
+        var nestedTokens = [];\r
+        var collector = nestedTokens;\r
+        var sections = [];\r
+\r
+        var token, section;\r
+        for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\r
+            token = tokens[i];\r
+\r
+            switch (token[0]) {\r
+                case '#':\r
+                case '^':\r
+                    collector.push(token);\r
+                    sections.push(token);\r
+                    collector = token[4] = [];\r
+                    break;\r
+                case '/':\r
+                    section = sections.pop();\r
+                    section[5] = token[2];\r
+                    collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\r
+                    break;\r
+                default:\r
+                    collector.push(token);\r
+            }\r
+        }\r
+\r
+        return nestedTokens;\r
+    }\r
+\r
+    /**\r
+     * A simple string scanner that is used by the template parser to find\r
+     * tokens in template strings.\r
+     */\r
+    function Scanner (string) {\r
+        this.string = string;\r
+        this.tail = string;\r
+        this.pos = 0;\r
+    }\r
+\r
+    /**\r
+     * Returns `true` if the tail is empty (end of string).\r
+     */\r
+    Scanner.prototype.eos = function eos () {\r
+        return this.tail === '';\r
+    };\r
+\r
+    /**\r
+     * Tries to match the given regular expression at the current position.\r
+     * Returns the matched text if it can match, the empty string otherwise.\r
+     */\r
+    Scanner.prototype.scan = function scan (re) {\r
+        var match = this.tail.match(re);\r
+\r
+        if (!match || match.index !== 0)\r
+            return '';\r
+\r
+        var string = match[0];\r
+\r
+        this.tail = this.tail.substring(string.length);\r
+        this.pos += string.length;\r
+\r
+        return string;\r
+    };\r
+\r
+    /**\r
+     * Skips all text until the given regular expression can be matched. Returns\r
+     * the skipped string, which is the entire tail if no match can be made.\r
+     */\r
+    Scanner.prototype.scanUntil = function scanUntil (re) {\r
+        var index = this.tail.search(re), match;\r
+\r
+        switch (index) {\r
+            case -1:\r
+                match = this.tail;\r
+                this.tail = '';\r
+                break;\r
+            case 0:\r
+                match = '';\r
+                break;\r
+            default:\r
+                match = this.tail.substring(0, index);\r
+                this.tail = this.tail.substring(index);\r
+        }\r
+\r
+        this.pos += match.length;\r
+\r
+        return match;\r
+    };\r
+\r
+    /**\r
+     * Represents a rendering context by wrapping a view object and\r
+     * maintaining a reference to the parent context.\r
+     */\r
+    function Context (view, parentContext) {\r
+        this.view = view;\r
+        this.cache = { '.': this.view };\r
+        this.parent = parentContext;\r
+    }\r
+\r
+    /**\r
+     * Creates a new context using the given view with this context\r
+     * as the parent.\r
+     */\r
+    Context.prototype.push = function push (view) {\r
+        return new Context(view, this);\r
+    };\r
+\r
+    /**\r
+     * Returns the value of the given name in this context, traversing\r
+     * up the context hierarchy if the value is absent in this context's view.\r
+     */\r
+    Context.prototype.lookup = function lookup (name) {\r
+        var cache = this.cache;\r
+\r
+        var value;\r
+        if (cache.hasOwnProperty(name)) {\r
+            value = cache[name];\r
+        } else {\r
+            var context = this, names, index, lookupHit = false;\r
+\r
+            while (context) {\r
+                if (name.indexOf('.') > 0) {\r
+                    value = context.view;\r
+                    names = name.split('.');\r
+                    index = 0;\r
+\r
+                    /**\r
+                     * Using the dot notion path in `name`, we descend through the\r
+                     * nested objects.\r
+                     *\r
+                     * To be certain that the lookup has been successful, we have to\r
+                     * check if the last object in the path actually has the property\r
+                     * we are looking for. We store the result in `lookupHit`.\r
+                     *\r
+                     * This is specially necessary for when the value has been set to\r
+                     * `undefined` and we want to avoid looking up parent contexts.\r
+                     **/\r
+                    while (value != null && index < names.length) {\r
+                        if (index === names.length - 1)\r
+                            lookupHit = hasProperty(value, names[index]);\r
+\r
+                        value = value[names[index++]];\r
+                    }\r
+                } else {\r
+                    value = context.view[name];\r
+                    lookupHit = hasProperty(context.view, name);\r
+                }\r
+\r
+                if (lookupHit)\r
+                    break;\r
+\r
+                context = context.parent;\r
+            }\r
+\r
+            cache[name] = value;\r
+        }\r
+\r
+        if (isFunction(value))\r
+            value = value.call(this.view);\r
+\r
+        return value;\r
+    };\r
+\r
+    /**\r
+     * A Writer knows how to take a stream of tokens and render them to a\r
+     * string, given a context. It also maintains a cache of templates to\r
+     * avoid the need to parse the same template twice.\r
+     */\r
+    function Writer () {\r
+        this.cache = {};\r
+    }\r
+\r
+    /**\r
+     * Clears all cached templates in this writer.\r
+     */\r
+    Writer.prototype.clearCache = function clearCache () {\r
+        this.cache = {};\r
+    };\r
+\r
+    /**\r
+     * Parses and caches the given `template` and returns the array of tokens\r
+     * that is generated from the parse.\r
+     */\r
+    Writer.prototype.parse = function parse (template, tags) {\r
+        var cache = this.cache;\r
+        var tokens = cache[template];\r
+\r
+        if (tokens == null)\r
+            tokens = cache[template] = parseTemplate(template, tags);\r
+\r
+        return tokens;\r
+    };\r
+\r
+    /**\r
+     * High-level method that is used to render the given `template` with\r
+     * the given `view`.\r
+     *\r
+     * The optional `partials` argument may be an object that contains the\r
+     * names and templates of partials that are used in the template. It may\r
+     * also be a function that is used to load partial templates on the fly\r
+     * that takes a single argument: the name of the partial.\r
+     */\r
+    Writer.prototype.render = function render (template, view, partials) {\r
+        var tokens = this.parse(template);\r
+        var context = (view instanceof Context) ? view : new Context(view);\r
+        return this.renderTokens(tokens, context, partials, template);\r
+    };\r
+\r
+    /**\r
+     * Low-level method that renders the given array of `tokens` using\r
+     * the given `context` and `partials`.\r
+     *\r
+     * Note: The `originalTemplate` is only ever used to extract the portion\r
+     * of the original template that was contained in a higher-order section.\r
+     * If the template doesn't use higher-order sections, this argument may\r
+     * be omitted.\r
+     */\r
+    Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\r
+        var buffer = '';\r
+\r
+        var token, symbol, value;\r
+        for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\r
+            value = undefined;\r
+            token = tokens[i];\r
+            symbol = token[0];\r
+\r
+            if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\r
+            else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\r
+            else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\r
+            else if (symbol === '&') value = this.unescapedValue(token, context);\r
+            else if (symbol === 'name') value = this.escapedValue(token, context);\r
+            else if (symbol === 'text') value = this.rawValue(token);\r
+\r
+            if (value !== undefined)\r
+                buffer += value;\r
+        }\r
+\r
+        return buffer;\r
+    };\r
+\r
+    Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\r
+        var self = this;\r
+        var buffer = '';\r
+        var value = context.lookup(token[1]);\r
+\r
+        // This function is used to render an arbitrary template\r
+        // in the current context by higher-order sections.\r
+        function subRender (template) {\r
+            return self.render(template, context, partials);\r
+        }\r
+\r
+        if (!value) return;\r
+\r
+        if (isArray(value)) {\r
+            for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\r
+                buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\r
+            }\r
+        } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\r
+            buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\r
+        } else if (isFunction(value)) {\r
+            if (typeof originalTemplate !== 'string')\r
+                throw new Error('Cannot use higher-order sections without the original template');\r
+\r
+            // Extract the portion of the original template that the section contains.\r
+            value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\r
+\r
+            if (value != null)\r
+                buffer += value;\r
+        } else {\r
+            buffer += this.renderTokens(token[4], context, partials, originalTemplate);\r
+        }\r
+        return buffer;\r
+    };\r
+\r
+    Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\r
+        var value = context.lookup(token[1]);\r
+\r
+        // Use JavaScript's definition of falsy. Include empty arrays.\r
+        // See https://github.com/janl/mustache.js/issues/186\r
+        if (!value || (isArray(value) && value.length === 0))\r
+            return this.renderTokens(token[4], context, partials, originalTemplate);\r
+    };\r
+\r
+    Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\r
+        if (!partials) return;\r
+\r
+        var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\r
+        if (value != null)\r
+            return this.renderTokens(this.parse(value), context, partials, value);\r
+    };\r
+\r
+    Writer.prototype.unescapedValue = function unescapedValue (token, context) {\r
+        var value = context.lookup(token[1]);\r
+        if (value != null)\r
+            return value;\r
+    };\r
+\r
+    Writer.prototype.escapedValue = function escapedValue (token, context) {\r
+        var value = context.lookup(token[1]);\r
+        if (value != null)\r
+            return mustache.escape(value);\r
+    };\r
+\r
+    Writer.prototype.rawValue = function rawValue (token) {\r
+        return token[1];\r
+    };\r
+\r
+    mustache.name = 'mustache.js';\r
+    mustache.version = '2.3.0';\r
+    mustache.tags = [ '{{', '}}' ];\r
+\r
+    // All high-level mustache.* functions use this writer.\r
+    var defaultWriter = new Writer();\r
+\r
+    /**\r
+     * Clears all cached templates in the default writer.\r
+     */\r
+    mustache.clearCache = function clearCache () {\r
+        return defaultWriter.clearCache();\r
+    };\r
+\r
+    /**\r
+     * Parses and caches the given template in the default writer and returns the\r
+     * array of tokens it contains. Doing this ahead of time avoids the need to\r
+     * parse templates on the fly as they are rendered.\r
+     */\r
+    mustache.parse = function parse (template, tags) {\r
+        return defaultWriter.parse(template, tags);\r
+    };\r
+\r
+    /**\r
+     * Renders the `template` with the given `view` and `partials` using the\r
+     * default writer.\r
+     */\r
+    mustache.render = function render (template, view, partials) {\r
+        if (typeof template !== 'string') {\r
+            throw new TypeError('Invalid template! Template should be a "string" ' +\r
+                'but "' + typeStr(template) + '" was given as the first ' +\r
+                'argument for mustache#render(template, view, partials)');\r
+        }\r
+\r
+        return defaultWriter.render(template, view, partials);\r
+    };\r
+\r
+    // This is here for backwards compatibility with 0.4.x.,\r
+    /*eslint-disable */ // eslint wants camel cased function name\r
+    mustache.to_html = function to_html (template, view, partials, send) {\r
+        /*eslint-enable*/\r
+\r
+        var result = mustache.render(template, view, partials);\r
+\r
+        if (isFunction(send)) {\r
+            send(result);\r
+        } else {\r
+            return result;\r
+        }\r
+    };\r
+\r
+    // Export the escaping function so that the user may override it.\r
+    // See https://github.com/janl/mustache.js/issues/244\r
+    mustache.escape = escapeHtml;\r
+\r
+    // Export these mainly for testing, but also for advanced usage.\r
+    mustache.Scanner = Scanner;\r
+    mustache.Context = Context;\r
+    mustache.Writer = Writer;\r
+\r
+    return mustache;\r
+}));
\ No newline at end of file
diff --git a/portal-common/src/main/webapp/framework/browser/thirdparty/tree.jquery.js b/portal-common/src/main/webapp/framework/browser/thirdparty/tree.jquery.js
new file mode 100644 (file)
index 0000000..c3a4912
--- /dev/null
@@ -0,0 +1,3616 @@
+/*\r
+ JqTree 1.3.6\r
+\r
+ Copyright 2015 Marco Braak\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+ */\r
+(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\r
+    var $, DragAndDropHandler, DragElement, HitAreasGenerator, Position, VisibleNodeIterator, node_module, util,\r
+        extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\r
+        hasProp = {}.hasOwnProperty;\r
+\r
+    node_module = require('./node');\r
+\r
+    util = require('./util');\r
+\r
+    Position = node_module.Position;\r
+\r
+    $ = jQuery;\r
+\r
+    DragAndDropHandler = (function() {\r
+        function DragAndDropHandler(tree_widget) {\r
+            this.tree_widget = tree_widget;\r
+            this.hovered_area = null;\r
+            this.$ghost = null;\r
+            this.hit_areas = [];\r
+            this.is_dragging = false;\r
+            this.current_item = null;\r
+        }\r
+\r
+        DragAndDropHandler.prototype.mouseCapture = function(position_info) {\r
+            var $element, node_element;\r
+            $element = $(position_info.target);\r
+            if (!this.mustCaptureElement($element)) {\r
+                return null;\r
+            }\r
+            if (this.tree_widget.options.onIsMoveHandle && !this.tree_widget.options.onIsMoveHandle($element)) {\r
+                return null;\r
+            }\r
+            node_element = this.tree_widget._getNodeElement($element);\r
+            if (node_element && this.tree_widget.options.onCanMove) {\r
+                if (!this.tree_widget.options.onCanMove(node_element.node)) {\r
+                    node_element = null;\r
+                }\r
+            }\r
+            this.current_item = node_element;\r
+            return this.current_item !== null;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.mouseStart = function(position_info) {\r
+            var node, node_name, offset;\r
+            this.refresh();\r
+            offset = $(position_info.target).offset();\r
+            node = this.current_item.node;\r
+            if (this.tree_widget.options.autoEscape) {\r
+                node_name = util.html_escape(node.name);\r
+            } else {\r
+                node_name = node.name;\r
+            }\r
+            this.drag_element = new DragElement(node_name, position_info.page_x - offset.left, position_info.page_y - offset.top, this.tree_widget.element);\r
+            this.is_dragging = true;\r
+            this.current_item.$element.addClass('jqtree-moving');\r
+            return true;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.mouseDrag = function(position_info) {\r
+            var area, can_move_to;\r
+            this.drag_element.move(position_info.page_x, position_info.page_y);\r
+            area = this.findHoveredArea(position_info.page_x, position_info.page_y);\r
+            can_move_to = this.canMoveToArea(area);\r
+            if (can_move_to && area) {\r
+                if (!area.node.isFolder()) {\r
+                    this.stopOpenFolderTimer();\r
+                }\r
+                if (this.hovered_area !== area) {\r
+                    this.hovered_area = area;\r
+                    if (this.mustOpenFolderTimer(area)) {\r
+                        this.startOpenFolderTimer(area.node);\r
+                    } else {\r
+                        this.stopOpenFolderTimer();\r
+                    }\r
+                    this.updateDropHint();\r
+                }\r
+            } else {\r
+                this.removeHover();\r
+                this.removeDropHint();\r
+                this.stopOpenFolderTimer();\r
+            }\r
+            if (!area) {\r
+                if (this.tree_widget.options.onDragMove != null) {\r
+                    this.tree_widget.options.onDragMove(this.current_item.node, position_info.original_event);\r
+                }\r
+            }\r
+            return true;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.mustCaptureElement = function($element) {\r
+            return !$element.is('input,select,textarea');\r
+        };\r
+\r
+        DragAndDropHandler.prototype.canMoveToArea = function(area) {\r
+            var position_name;\r
+            if (!area) {\r
+                return false;\r
+            } else if (this.tree_widget.options.onCanMoveTo) {\r
+                position_name = Position.getName(area.position);\r
+                return this.tree_widget.options.onCanMoveTo(this.current_item.node, area.node, position_name);\r
+            } else {\r
+                return true;\r
+            }\r
+        };\r
+\r
+        DragAndDropHandler.prototype.mouseStop = function(position_info) {\r
+            var current_item;\r
+            this.moveItem(position_info);\r
+            this.clear();\r
+            this.removeHover();\r
+            this.removeDropHint();\r
+            this.removeHitAreas();\r
+            current_item = this.current_item;\r
+            if (this.current_item) {\r
+                this.current_item.$element.removeClass('jqtree-moving');\r
+                this.current_item = null;\r
+            }\r
+            this.is_dragging = false;\r
+            if (!this.hovered_area && current_item) {\r
+                if (this.tree_widget.options.onDragStop != null) {\r
+                    this.tree_widget.options.onDragStop(current_item.node, position_info.original_event);\r
+                }\r
+            }\r
+            return false;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.refresh = function() {\r
+            this.removeHitAreas();\r
+            if (this.current_item) {\r
+                this.generateHitAreas();\r
+                this.current_item = this.tree_widget._getNodeElementForNode(this.current_item.node);\r
+                if (this.is_dragging) {\r
+                    return this.current_item.$element.addClass('jqtree-moving');\r
+                }\r
+            }\r
+        };\r
+\r
+        DragAndDropHandler.prototype.removeHitAreas = function() {\r
+            return this.hit_areas = [];\r
+        };\r
+\r
+        DragAndDropHandler.prototype.clear = function() {\r
+            this.drag_element.remove();\r
+            return this.drag_element = null;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.removeDropHint = function() {\r
+            if (this.previous_ghost) {\r
+                return this.previous_ghost.remove();\r
+            }\r
+        };\r
+\r
+        DragAndDropHandler.prototype.removeHover = function() {\r
+            return this.hovered_area = null;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.generateHitAreas = function() {\r
+            var hit_areas_generator;\r
+            hit_areas_generator = new HitAreasGenerator(this.tree_widget.tree, this.current_item.node, this.getTreeDimensions().bottom);\r
+            return this.hit_areas = hit_areas_generator.generate();\r
+        };\r
+\r
+        DragAndDropHandler.prototype.findHoveredArea = function(x, y) {\r
+            var area, dimensions, high, low, mid;\r
+            dimensions = this.getTreeDimensions();\r
+            if (x < dimensions.left || y < dimensions.top || x > dimensions.right || y > dimensions.bottom) {\r
+                return null;\r
+            }\r
+            low = 0;\r
+            high = this.hit_areas.length;\r
+            while (low < high) {\r
+                mid = (low + high) >> 1;\r
+                area = this.hit_areas[mid];\r
+                if (y < area.top) {\r
+                    high = mid;\r
+                } else if (y > area.bottom) {\r
+                    low = mid + 1;\r
+                } else {\r
+                    return area;\r
+                }\r
+            }\r
+            return null;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.mustOpenFolderTimer = function(area) {\r
+            var node;\r
+            node = area.node;\r
+            return node.isFolder() && !node.is_open && area.position === Position.INSIDE;\r
+        };\r
+\r
+        DragAndDropHandler.prototype.updateDropHint = function() {\r
+            var node_element;\r
+            if (!this.hovered_area) {\r
+                return;\r
+            }\r
+            this.removeDropHint();\r
+            node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node);\r
+            return this.previous_ghost = node_element.addDropHint(this.hovered_area.position);\r
+        };\r
+\r
+        DragAndDropHandler.prototype.startOpenFolderTimer = function(folder) {\r
+            var openFolder;\r
+            openFolder = (function(_this) {\r
+                return function() {\r
+                    return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() {\r
+                        _this.refresh();\r
+                        return _this.updateDropHint();\r
+                    });\r
+                };\r
+            })(this);\r
+            this.stopOpenFolderTimer();\r
+            return this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay);\r
+        };\r
+\r
+        DragAndDropHandler.prototype.stopOpenFolderTimer = function() {\r
+            if (this.open_folder_timer) {\r
+                clearTimeout(this.open_folder_timer);\r
+                return this.open_folder_timer = null;\r
+            }\r
+        };\r
+\r
+        DragAndDropHandler.prototype.moveItem = function(position_info) {\r
+            var doMove, event, moved_node, position, previous_parent, target_node;\r
+            if (this.hovered_area && this.hovered_area.position !== Position.NONE && this.canMoveToArea(this.hovered_area)) {\r
+                moved_node = this.current_item.node;\r
+                target_node = this.hovered_area.node;\r
+                position = this.hovered_area.position;\r
+                previous_parent = moved_node.parent;\r
+                if (position === Position.INSIDE) {\r
+                    this.hovered_area.node.is_open = true;\r
+                }\r
+                doMove = (function(_this) {\r
+                    return function() {\r
+                        _this.tree_widget.tree.moveNode(moved_node, target_node, position);\r
+                        _this.tree_widget.element.empty();\r
+                        return _this.tree_widget._refreshElements();\r
+                    };\r
+                })(this);\r
+                event = this.tree_widget._triggerEvent('tree.move', {\r
+                    move_info: {\r
+                        moved_node: moved_node,\r
+                        target_node: target_node,\r
+                        position: Position.getName(position),\r
+                        previous_parent: previous_parent,\r
+                        do_move: doMove,\r
+                        original_event: position_info.original_event\r
+                    }\r
+                });\r
+                if (!event.isDefaultPrevented()) {\r
+                    return doMove();\r
+                }\r
+            }\r
+        };\r
+\r
+        DragAndDropHandler.prototype.getTreeDimensions = function() {\r
+            var offset;\r
+            offset = this.tree_widget.element.offset();\r
+            return {\r
+                left: offset.left,\r
+                top: offset.top,\r
+                right: offset.left + this.tree_widget.element.width(),\r
+                bottom: offset.top + this.tree_widget.element.height() + 16\r
+            };\r
+        };\r
+\r
+        return DragAndDropHandler;\r
+\r
+    })();\r
+\r
+    VisibleNodeIterator = (function() {\r
+        function VisibleNodeIterator(tree) {\r
+            this.tree = tree;\r
+        }\r
+\r
+        VisibleNodeIterator.prototype.iterate = function() {\r
+            var _iterateNode, is_first_node;\r
+            is_first_node = true;\r
+            _iterateNode = (function(_this) {\r
+                return function(node, next_node) {\r
+                    var $element, child, children_length, i, j, len, must_iterate_inside, ref;\r
+                    must_iterate_inside = (node.is_open || !node.element) && node.hasChildren();\r
+                    if (node.element) {\r
+                        $element = $(node.element);\r
+                        if (!$element.is(':visible')) {\r
+                            return;\r
+                        }\r
+                        if (is_first_node) {\r
+                            _this.handleFirstNode(node, $element);\r
+                            is_first_node = false;\r
+                        }\r
+                        if (!node.hasChildren()) {\r
+                            _this.handleNode(node, next_node, $element);\r
+                        } else if (node.is_open) {\r
+                            if (!_this.handleOpenFolder(node, $element)) {\r
+                                must_iterate_inside = false;\r
+                            }\r
+                        } else {\r
+                            _this.handleClosedFolder(node, next_node, $element);\r
+                        }\r
+                    }\r
+                    if (must_iterate_inside) {\r
+                        children_length = node.children.length;\r
+                        ref = node.children;\r
+                        for (i = j = 0, len = ref.length; j < len; i = ++j) {\r
+                            child = ref[i];\r
+                            if (i === (children_length - 1)) {\r
+                                _iterateNode(node.children[i], null);\r
+                            } else {\r
+                                _iterateNode(node.children[i], node.children[i + 1]);\r
+                            }\r
+                        }\r
+                        if (node.is_open) {\r
+                            return _this.handleAfterOpenFolder(node, next_node, $element);\r
+                        }\r
+                    }\r
+                };\r
+            })(this);\r
+            return _iterateNode(this.tree, null);\r
+        };\r
+\r
+        VisibleNodeIterator.prototype.handleNode = function(node, next_node, $element) {};\r
+\r
+        VisibleNodeIterator.prototype.handleOpenFolder = function(node, $element) {};\r
+\r
+        VisibleNodeIterator.prototype.handleClosedFolder = function(node, next_node, $element) {};\r
+\r
+        VisibleNodeIterator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {};\r
+\r
+        VisibleNodeIterator.prototype.handleFirstNode = function(node, $element) {};\r
+\r
+        return VisibleNodeIterator;\r
+\r
+    })();\r
+\r
+    HitAreasGenerator = (function(superClass) {\r
+        extend(HitAreasGenerator, superClass);\r
+\r
+        function HitAreasGenerator(tree, current_node, tree_bottom) {\r
+            HitAreasGenerator.__super__.constructor.call(this, tree);\r
+            this.current_node = current_node;\r
+            this.tree_bottom = tree_bottom;\r
+        }\r
+\r
+        HitAreasGenerator.prototype.generate = function() {\r
+            this.positions = [];\r
+            this.last_top = 0;\r
+            this.iterate();\r
+            return this.generateHitAreas(this.positions);\r
+        };\r
+\r
+        HitAreasGenerator.prototype.getTop = function($element) {\r
+            return $element.offset().top;\r
+        };\r
+\r
+        HitAreasGenerator.prototype.addPosition = function(node, position, top) {\r
+            var area;\r
+            area = {\r
+                top: top,\r
+                node: node,\r
+                position: position\r
+            };\r
+            this.positions.push(area);\r
+            return this.last_top = top;\r
+        };\r
+\r
+        HitAreasGenerator.prototype.handleNode = function(node, next_node, $element) {\r
+            var top;\r
+            top = this.getTop($element);\r
+            if (node === this.current_node) {\r
+                this.addPosition(node, Position.NONE, top);\r
+            } else {\r
+                this.addPosition(node, Position.INSIDE, top);\r
+            }\r
+            if (next_node === this.current_node || node === this.current_node) {\r
+                return this.addPosition(node, Position.NONE, top);\r
+            } else {\r
+                return this.addPosition(node, Position.AFTER, top);\r
+            }\r
+        };\r
+\r
+        HitAreasGenerator.prototype.handleOpenFolder = function(node, $element) {\r
+            if (node === this.current_node) {\r
+                return false;\r
+            }\r
+            if (node.children[0] !== this.current_node) {\r
+                this.addPosition(node, Position.INSIDE, this.getTop($element));\r
+            }\r
+            return true;\r
+        };\r
+\r
+        HitAreasGenerator.prototype.handleClosedFolder = function(node, next_node, $element) {\r
+            var top;\r
+            top = this.getTop($element);\r
+            if (node === this.current_node) {\r
+                return this.addPosition(node, Position.NONE, top);\r
+            } else {\r
+                this.addPosition(node, Position.INSIDE, top);\r
+                if (next_node !== this.current_node) {\r
+                    return this.addPosition(node, Position.AFTER, top);\r
+                }\r
+            }\r
+        };\r
+\r
+        HitAreasGenerator.prototype.handleFirstNode = function(node, $element) {\r
+            if (node !== this.current_node) {\r
+                return this.addPosition(node, Position.BEFORE, this.getTop($(node.element)));\r
+            }\r
+        };\r
+\r
+        HitAreasGenerator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {\r
+            if (node === this.current_node.node || next_node === this.current_node.node) {\r
+                return this.addPosition(node, Position.NONE, this.last_top);\r
+            } else {\r
+                return this.addPosition(node, Position.AFTER, this.last_top);\r
+            }\r
+        };\r
+\r
+        HitAreasGenerator.prototype.generateHitAreas = function(positions) {\r
+            var group, hit_areas, j, len, position, previous_top;\r
+            previous_top = -1;\r
+            group = [];\r
+            hit_areas = [];\r
+            for (j = 0, len = positions.length; j < len; j++) {\r
+                position = positions[j];\r
+                if (position.top !== previous_top && group.length) {\r
+                    if (group.length) {\r
+                        this.generateHitAreasForGroup(hit_areas, group, previous_top, position.top);\r
+                    }\r
+                    previous_top = position.top;\r
+                    group = [];\r
+                }\r
+                group.push(position);\r
+            }\r
+            this.generateHitAreasForGroup(hit_areas, group, previous_top, this.tree_bottom);\r
+            return hit_areas;\r
+        };\r
+\r
+        HitAreasGenerator.prototype.generateHitAreasForGroup = function(hit_areas, positions_in_group, top, bottom) {\r
+            var area_height, area_top, i, position, position_count;\r
+            position_count = Math.min(positions_in_group.length, 4);\r
+            area_height = Math.round((bottom - top) / position_count);\r
+            area_top = top;\r
+            i = 0;\r
+            while (i < position_count) {\r
+                position = positions_in_group[i];\r
+                hit_areas.push({\r
+                    top: area_top,\r
+                    bottom: area_top + area_height,\r
+                    node: position.node,\r
+                    position: position.position\r
+                });\r
+                area_top += area_height;\r
+                i += 1;\r
+            }\r
+            return null;\r
+        };\r
+\r
+        return HitAreasGenerator;\r
+\r
+    })(VisibleNodeIterator);\r
+\r
+    DragElement = (function() {\r
+        function DragElement(node_name, offset_x, offset_y, $tree) {\r
+            this.offset_x = offset_x;\r
+            this.offset_y = offset_y;\r
+            this.$element = $("<span class=\"jqtree-title jqtree-dragging\">" + node_name + "</span>");\r
+            this.$element.css("position", "absolute");\r
+            $tree.append(this.$element);\r
+        }\r
+\r
+        DragElement.prototype.move = function(page_x, page_y) {\r
+            return this.$element.offset({\r
+                left: page_x - this.offset_x,\r
+                top: page_y - this.offset_y\r
+            });\r
+        };\r
+\r
+        DragElement.prototype.remove = function() {\r
+            return this.$element.remove();\r
+        };\r
+\r
+        return DragElement;\r
+\r
+    })();\r
+\r
+    module.exports = {\r
+        DragAndDropHandler: DragAndDropHandler,\r
+        DragElement: DragElement,\r
+        HitAreasGenerator: HitAreasGenerator\r
+    };\r
+\r
+},{"./node":5,"./util":12}],2:[function(require,module,exports){\r
+    var $, ElementsRenderer, NodeElement, html_escape, node_element, util;\r
+\r
+    node_element = require('./node_element');\r
+\r
+    NodeElement = node_element.NodeElement;\r
+\r
+    util = require('./util');\r
+\r
+    html_escape = util.html_escape;\r
+\r
+    $ = jQuery;\r
+\r
+    ElementsRenderer = (function() {\r
+        function ElementsRenderer(tree_widget) {\r
+            this.tree_widget = tree_widget;\r
+            this.opened_icon_element = this.createButtonElement(tree_widget.options.openedIcon);\r
+            this.closed_icon_element = this.createButtonElement(tree_widget.options.closedIcon);\r
+        }\r
+\r
+        ElementsRenderer.prototype.render = function(from_node) {\r
+            if (from_node && from_node.parent) {\r
+                return this.renderFromNode(from_node);\r
+            } else {\r
+                return this.renderFromRoot();\r
+            }\r
+        };\r
+\r
+        ElementsRenderer.prototype.renderFromRoot = function() {\r
+            var $element;\r
+            $element = this.tree_widget.element;\r
+            $element.empty();\r
+            return this.createDomElements($element[0], this.tree_widget.tree.children, true, true, 1);\r
+        };\r
+\r
+        ElementsRenderer.prototype.renderFromNode = function(node) {\r
+            var $previous_li, li;\r
+            $previous_li = $(node.element);\r
+            li = this.createLi(node, node.getLevel());\r
+            this.attachNodeData(node, li);\r
+            $previous_li.after(li);\r
+            $previous_li.remove();\r
+            if (node.children) {\r
+                return this.createDomElements(li, node.children, false, false, node.getLevel() + 1);\r
+            }\r
+        };\r
+\r
+        ElementsRenderer.prototype.createDomElements = function(element, children, is_root_node, is_open, level) {\r
+            var child, i, len, li, ul;\r
+            ul = this.createUl(is_root_node);\r
+            element.appendChild(ul);\r
+            for (i = 0, len = children.length; i < len; i++) {\r
+                child = children[i];\r
+                li = this.createLi(child, level);\r
+                ul.appendChild(li);\r
+                this.attachNodeData(child, li);\r
+                if (child.hasChildren()) {\r
+                    this.createDomElements(li, child.children, false, child.is_open, level + 1);\r
+                }\r
+            }\r
+            return null;\r
+        };\r
+\r
+        ElementsRenderer.prototype.attachNodeData = function(node, li) {\r
+            node.element = li;\r
+            return $(li).data('node', node);\r
+        };\r
+\r
+        ElementsRenderer.prototype.createUl = function(is_root_node) {\r
+            var class_string, role, ul;\r
+            if (!is_root_node) {\r
+                class_string = '';\r
+                role = 'group';\r
+            } else {\r
+                class_string = 'jqtree-tree';\r
+                role = 'tree';\r
+                if (this.tree_widget.options.rtl) {\r
+                    class_string += ' jqtree-rtl';\r
+                }\r
+            }\r
+            ul = document.createElement('ul');\r
+            ul.className = "jqtree_common " + class_string;\r
+            ul.setAttribute('role', role);\r
+            return ul;\r
+        };\r
+\r
+        ElementsRenderer.prototype.createLi = function(node, level) {\r
+            var is_selected, li;\r
+            is_selected = this.tree_widget.select_node_handler && this.tree_widget.select_node_handler.isNodeSelected(node);\r
+            if (node.isFolder()) {\r
+                li = this.createFolderLi(node, level, is_selected);\r
+            } else {\r
+                li = this.createNodeLi(node, level, is_selected);\r
+            }\r
+            if (this.tree_widget.options.onCreateLi) {\r
+                this.tree_widget.options.onCreateLi(node, $(li));\r
+            }\r
+            return li;\r
+        };\r
+\r
+        ElementsRenderer.prototype.createFolderLi = function(node, level, is_selected) {\r
+            var button_classes, button_link, div, folder_classes, icon_element, is_folder, li;\r
+            button_classes = this.getButtonClasses(node);\r
+            folder_classes = this.getFolderClasses(node, is_selected);\r
+            if (node.is_open) {\r
+                icon_element = this.opened_icon_element;\r
+            } else {\r
+                icon_element = this.closed_icon_element;\r
+            }\r
+            li = document.createElement('li');\r
+            li.className = "jqtree_common " + folder_classes;\r
+            li.setAttribute('role', 'presentation');\r
+            div = document.createElement('div');\r
+            div.className = "jqtree-element jqtree_common";\r
+            div.setAttribute('role', 'presentation');\r
+            li.appendChild(div);\r
+            button_link = document.createElement('a');\r
+            button_link.className = button_classes;\r
+            button_link.appendChild(icon_element.cloneNode(false));\r
+            button_link.setAttribute('role', 'presentation');\r
+            button_link.setAttribute('aria-hidden', 'true');\r
+            if (this.tree_widget.options.buttonLeft) {\r
+                div.appendChild(button_link);\r
+            }\r
+            div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = true));\r
+            if (!this.tree_widget.options.buttonLeft) {\r
+                div.appendChild(button_link);\r
+            }\r
+            return li;\r
+        };\r
+\r
+        ElementsRenderer.prototype.createNodeLi = function(node, level, is_selected) {\r
+            var class_string, div, is_folder, li, li_classes;\r
+            li_classes = ['jqtree_common'];\r
+            if (is_selected) {\r
+                li_classes.push('jqtree-selected');\r
+            }\r
+            class_string = li_classes.join(' ');\r
+            li = document.createElement('li');\r
+            li.className = class_string;\r
+            li.setAttribute('role', 'presentation');\r
+            div = document.createElement('div');\r
+            div.className = "jqtree-element jqtree_common";\r
+            div.setAttribute('role', 'presentation');\r
+            li.appendChild(div);\r
+            div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = false));\r
+            return li;\r
+        };\r
+\r
+        ElementsRenderer.prototype.createTitleSpan = function(node_name, level, is_selected, is_open, is_folder) {\r
+            var classes, title_span;\r
+            title_span = document.createElement('span');\r
+            classes = "jqtree-title jqtree_common";\r
+            if (is_folder) {\r
+                classes += " jqtree-title-folder";\r
+            }\r
+            title_span.className = classes;\r
+            title_span.setAttribute('role', 'treeitem');\r
+            title_span.setAttribute('aria-level', level);\r
+            title_span.setAttribute('aria-selected', util.getBoolString(is_selected));\r
+            title_span.setAttribute('aria-expanded', util.getBoolString(is_open));\r
+            if (is_selected) {\r
+                title_span.setAttribute('tabindex', 0);\r
+            }\r
+            title_span.innerHTML = this.escapeIfNecessary(node_name);\r
+            return title_span;\r
+        };\r
+\r
+        ElementsRenderer.prototype.getButtonClasses = function(node) {\r
+            var classes;\r
+            classes = ['jqtree-toggler', 'jqtree_common'];\r
+            if (!node.is_open) {\r
+                classes.push('jqtree-closed');\r
+            }\r
+            if (this.tree_widget.options.buttonLeft) {\r
+                classes.push('jqtree-toggler-left');\r
+            } else {\r
+                classes.push('jqtree-toggler-right');\r
+            }\r
+            return classes.join(' ');\r
+        };\r
+\r
+        ElementsRenderer.prototype.getFolderClasses = function(node, is_selected) {\r
+            var classes;\r
+            classes = ['jqtree-folder'];\r
+            if (!node.is_open) {\r
+                classes.push('jqtree-closed');\r
+            }\r
+            if (is_selected) {\r
+                classes.push('jqtree-selected');\r
+            }\r
+            if (node.is_loading) {\r
+                classes.push('jqtree-loading');\r
+            }\r
+            return classes.join(' ');\r
+        };\r
+\r
+        ElementsRenderer.prototype.escapeIfNecessary = function(value) {\r
+            if (this.tree_widget.options.autoEscape) {\r
+                return html_escape(value);\r
+            } else {\r
+                return value;\r
+            }\r
+        };\r
+\r
+        ElementsRenderer.prototype.createButtonElement = function(value) {\r
+            var div;\r
+            if (typeof value === 'string') {\r
+                div = document.createElement('div');\r
+                div.innerHTML = value;\r
+                return document.createTextNode(div.innerHTML);\r
+            } else {\r
+                return $(value)[0];\r
+            }\r
+        };\r
+\r
+        return ElementsRenderer;\r
+\r
+    })();\r
+\r
+    module.exports = ElementsRenderer;\r
+\r
+},{"./node_element":6,"./util":12}],3:[function(require,module,exports){\r
+    var $, KeyHandler,\r
+        bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\r
+\r
+    $ = jQuery;\r
+\r
+    KeyHandler = (function() {\r
+        var DOWN, LEFT, RIGHT, UP;\r
+\r
+        LEFT = 37;\r
+\r
+        UP = 38;\r
+\r
+        RIGHT = 39;\r
+\r
+        DOWN = 40;\r
+\r
+        function KeyHandler(tree_widget) {\r
+            this.selectNode = bind(this.selectNode, this);\r
+            this.tree_widget = tree_widget;\r
+            if (tree_widget.options.keyboardSupport) {\r
+                $(document).bind('keydown.jqtree', $.proxy(this.handleKeyDown, this));\r
+            }\r
+        }\r
+\r
+        KeyHandler.prototype.deinit = function() {\r
+            return $(document).unbind('keydown.jqtree');\r
+        };\r
+\r
+        KeyHandler.prototype.moveDown = function() {\r
+            var node;\r
+            node = this.tree_widget.getSelectedNode();\r
+            if (node) {\r
+                return this.selectNode(node.getNextNode());\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        KeyHandler.prototype.moveUp = function() {\r
+            var node;\r
+            node = this.tree_widget.getSelectedNode();\r
+            if (node) {\r
+                return this.selectNode(node.getPreviousNode());\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        KeyHandler.prototype.moveRight = function() {\r
+            var node;\r
+            node = this.tree_widget.getSelectedNode();\r
+            if (!node) {\r
+                return true;\r
+            } else if (!node.isFolder()) {\r
+                return true;\r
+            } else {\r
+                if (node.is_open) {\r
+                    return this.selectNode(node.getNextNode());\r
+                } else {\r
+                    this.tree_widget.openNode(node);\r
+                    return false;\r
+                }\r
+            }\r
+        };\r
+\r
+        KeyHandler.prototype.moveLeft = function() {\r
+            var node;\r
+            node = this.tree_widget.getSelectedNode();\r
+            if (!node) {\r
+                return true;\r
+            } else if (node.isFolder() && node.is_open) {\r
+                this.tree_widget.closeNode(node);\r
+                return false;\r
+            } else {\r
+                return this.selectNode(node.getParent());\r
+            }\r
+        };\r
+\r
+        KeyHandler.prototype.handleKeyDown = function(e) {\r
+            var key;\r
+            if (!this.tree_widget.options.keyboardSupport) {\r
+                return true;\r
+            }\r
+            if ($(document.activeElement).is('textarea,input,select')) {\r
+                return true;\r
+            }\r
+            if (!this.tree_widget.getSelectedNode()) {\r
+                return true;\r
+            }\r
+            key = e.which;\r
+            switch (key) {\r
+                case DOWN:\r
+                    return this.moveDown();\r
+                case UP:\r
+                    return this.moveUp();\r
+                case RIGHT:\r
+                    return this.moveRight();\r
+                case LEFT:\r
+                    return this.moveLeft();\r
+            }\r
+            return true;\r
+        };\r
+\r
+        KeyHandler.prototype.selectNode = function(node) {\r
+            if (!node) {\r
+                return true;\r
+            } else {\r
+                this.tree_widget.selectNode(node);\r
+                if (this.tree_widget.scroll_handler && (!this.tree_widget.scroll_handler.isScrolledIntoView($(node.element).find('.jqtree-element')))) {\r
+                    this.tree_widget.scrollToNode(node);\r
+                }\r
+                return false;\r
+            }\r
+        };\r
+\r
+        return KeyHandler;\r
+\r
+    })();\r
+\r
+    module.exports = KeyHandler;\r
+\r
+},{}],4:[function(require,module,exports){\r
+\r
+    /*\r
+     This widget does the same a the mouse widget in jqueryui.\r
+     */\r
+    var $, MouseWidget, SimpleWidget,\r
+        extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\r
+        hasProp = {}.hasOwnProperty;\r
+\r
+    SimpleWidget = require('./simple.widget');\r
+\r
+    $ = jQuery;\r
+\r
+    MouseWidget = (function(superClass) {\r
+        extend(MouseWidget, superClass);\r
+\r
+        function MouseWidget() {\r
+            return MouseWidget.__super__.constructor.apply(this, arguments);\r
+        }\r
+\r
+        MouseWidget.is_mouse_handled = false;\r
+\r
+        MouseWidget.prototype._init = function() {\r
+            this.$el.bind('mousedown.mousewidget', $.proxy(this._mouseDown, this));\r
+            this.$el.bind('touchstart.mousewidget', $.proxy(this._touchStart, this));\r
+            this.is_mouse_started = false;\r
+            this.mouse_delay = 0;\r
+            this._mouse_delay_timer = null;\r
+            this._is_mouse_delay_met = true;\r
+            return this.mouse_down_info = null;\r
+        };\r
+\r
+        MouseWidget.prototype._deinit = function() {\r
+            var $document;\r
+            this.$el.unbind('mousedown.mousewidget');\r
+            this.$el.unbind('touchstart.mousewidget');\r
+            $document = $(document);\r
+            $document.unbind('mousemove.mousewidget');\r
+            return $document.unbind('mouseup.mousewidget');\r
+        };\r
+\r
+        MouseWidget.prototype._mouseDown = function(e) {\r
+            var result;\r
+            if (e.which !== 1) {\r
+                return;\r
+            }\r
+            result = this._handleMouseDown(e, this._getPositionInfo(e));\r
+            if (result) {\r
+                e.preventDefault();\r
+            }\r
+            return result;\r
+        };\r
+\r
+        MouseWidget.prototype._handleMouseDown = function(e, position_info) {\r
+            if (MouseWidget.is_mouse_handled) {\r
+                return;\r
+            }\r
+            if (this.is_mouse_started) {\r
+                this._handleMouseUp(position_info);\r
+            }\r
+            this.mouse_down_info = position_info;\r
+            if (!this._mouseCapture(position_info)) {\r
+                return;\r
+            }\r
+            this._handleStartMouse();\r
+            this.is_mouse_handled = true;\r
+            return true;\r
+        };\r
+\r
+        MouseWidget.prototype._handleStartMouse = function() {\r
+            var $document;\r
+            $document = $(document);\r
+            $document.bind('mousemove.mousewidget', $.proxy(this._mouseMove, this));\r
+            $document.bind('touchmove.mousewidget', $.proxy(this._touchMove, this));\r
+            $document.bind('mouseup.mousewidget', $.proxy(this._mouseUp, this));\r
+            $document.bind('touchend.mousewidget', $.proxy(this._touchEnd, this));\r
+            if (this.mouse_delay) {\r
+                return this._startMouseDelayTimer();\r
+            }\r
+        };\r
+\r
+        MouseWidget.prototype._startMouseDelayTimer = function() {\r
+            if (this._mouse_delay_timer) {\r
+                clearTimeout(this._mouse_delay_timer);\r
+            }\r
+            this._mouse_delay_timer = setTimeout((function(_this) {\r
+                return function() {\r
+                    return _this._is_mouse_delay_met = true;\r
+                };\r
+            })(this), this.mouse_delay);\r
+            return this._is_mouse_delay_met = false;\r
+        };\r
+\r
+        MouseWidget.prototype._mouseMove = function(e) {\r
+            return this._handleMouseMove(e, this._getPositionInfo(e));\r
+        };\r
+\r
+        MouseWidget.prototype._handleMouseMove = function(e, position_info) {\r
+            if (this.is_mouse_started) {\r
+                this._mouseDrag(position_info);\r
+                return e.preventDefault();\r
+            }\r
+            if (this.mouse_delay && !this._is_mouse_delay_met) {\r
+                return true;\r
+            }\r
+            this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false;\r
+            if (this.is_mouse_started) {\r
+                this._mouseDrag(position_info);\r
+            } else {\r
+                this._handleMouseUp(position_info);\r
+            }\r
+            return !this.is_mouse_started;\r
+        };\r
+\r
+        MouseWidget.prototype._getPositionInfo = function(e) {\r
+            return {\r
+                page_x: e.pageX,\r
+                page_y: e.pageY,\r
+                target: e.target,\r
+                original_event: e\r
+            };\r
+        };\r
+\r
+        MouseWidget.prototype._mouseUp = function(e) {\r
+            return this._handleMouseUp(this._getPositionInfo(e));\r
+        };\r
+\r
+        MouseWidget.prototype._handleMouseUp = function(position_info) {\r
+            var $document;\r
+            $document = $(document);\r
+            $document.unbind('mousemove.mousewidget');\r
+            $document.unbind('touchmove.mousewidget');\r
+            $document.unbind('mouseup.mousewidget');\r
+            $document.unbind('touchend.mousewidget');\r
+            if (this.is_mouse_started) {\r
+                this.is_mouse_started = false;\r
+                this._mouseStop(position_info);\r
+            }\r
+        };\r
+\r
+        MouseWidget.prototype._mouseCapture = function(position_info) {\r
+            return true;\r
+        };\r
+\r
+        MouseWidget.prototype._mouseStart = function(position_info) {\r
+            return null;\r
+        };\r
+\r
+        MouseWidget.prototype._mouseDrag = function(position_info) {\r
+            return null;\r
+        };\r
+\r
+        MouseWidget.prototype._mouseStop = function(position_info) {\r
+            return null;\r
+        };\r
+\r
+        MouseWidget.prototype.setMouseDelay = function(mouse_delay) {\r
+            return this.mouse_delay = mouse_delay;\r
+        };\r
+\r
+        MouseWidget.prototype._touchStart = function(e) {\r
+            var touch;\r
+            if (e.originalEvent.touches.length > 1) {\r
+                return;\r
+            }\r
+            touch = e.originalEvent.changedTouches[0];\r
+            return this._handleMouseDown(e, this._getPositionInfo(touch));\r
+        };\r
+\r
+        MouseWidget.prototype._touchMove = function(e) {\r
+            var touch;\r
+            if (e.originalEvent.touches.length > 1) {\r
+                return;\r
+            }\r
+            touch = e.originalEvent.changedTouches[0];\r
+            return this._handleMouseMove(e, this._getPositionInfo(touch));\r
+        };\r
+\r
+        MouseWidget.prototype._touchEnd = function(e) {\r
+            var touch;\r
+            if (e.originalEvent.touches.length > 1) {\r
+                return;\r
+            }\r
+            touch = e.originalEvent.changedTouches[0];\r
+            return this._handleMouseUp(this._getPositionInfo(touch));\r
+        };\r
+\r
+        return MouseWidget;\r
+\r
+    })(SimpleWidget);\r
+\r
+    module.exports = MouseWidget;\r
+\r
+},{"./simple.widget":10}],5:[function(require,module,exports){\r
+    var $, Node, Position;\r
+\r
+    $ = jQuery;\r
+\r
+    Position = {\r
+        getName: function(position) {\r
+            return Position.strings[position - 1];\r
+        },\r
+        nameToIndex: function(name) {\r
+            var i, j, ref;\r
+            for (i = j = 1, ref = Position.strings.length; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\r
+                if (Position.strings[i - 1] === name) {\r
+                    return i;\r
+                }\r
+            }\r
+            return 0;\r
+        }\r
+    };\r
+\r
+    Position.BEFORE = 1;\r
+\r
+    Position.AFTER = 2;\r
+\r
+    Position.INSIDE = 3;\r
+\r
+    Position.NONE = 4;\r
+\r
+    Position.strings = ['before', 'after', 'inside', 'none'];\r
+\r
+    Node = (function() {\r
+        function Node(o, is_root, node_class) {\r
+            if (is_root == null) {\r
+                is_root = false;\r
+            }\r
+            if (node_class == null) {\r
+                node_class = Node;\r
+            }\r
+            this.name = '';\r
+            this.setData(o);\r
+            this.children = [];\r
+            this.parent = null;\r
+            if (is_root) {\r
+                this.id_mapping = {};\r
+                this.tree = this;\r
+                this.node_class = node_class;\r
+            }\r
+        }\r
+\r
+        Node.prototype.setData = function(o) {\r
+\r
+            /*\r
+             Set the data of this node.\r
+\r
+             setData(string): set the name of the node\r
+             setdata(object): set attributes of the node\r
+\r
+             Examples:\r
+             setdata('node1')\r
+\r
+             setData({ name: 'node1', id: 1});\r
+\r
+             setData({ name: 'node2', id: 2, color: 'green'});\r
+\r
+             * This is an internal function; it is not in the docs\r
+             * Does not remove existing node values\r
+             */\r
+            var key, setName, value;\r
+            setName = (function(_this) {\r
+                return function(name) {\r
+                    if (name !== null) {\r
+                        return _this.name = name;\r
+                    }\r
+                };\r
+            })(this);\r
+            if (typeof o !== 'object') {\r
+                setName(o);\r
+            } else {\r
+                for (key in o) {\r
+                    value = o[key];\r
+                    if (key === 'label') {\r
+                        setName(value);\r
+                    } else if (key !== 'children') {\r
+                        this[key] = value;\r
+                    }\r
+                }\r
+            }\r
+            return null;\r
+        };\r
+\r
+        Node.prototype.initFromData = function(data) {\r
+            var addChildren, addNode;\r
+            addNode = (function(_this) {\r
+                return function(node_data) {\r
+                    _this.setData(node_data);\r
+                    if (node_data.children) {\r
+                        return addChildren(node_data.children);\r
+                    }\r
+                };\r
+            })(this);\r
+            addChildren = (function(_this) {\r
+                return function(children_data) {\r
+                    var child, j, len, node;\r
+                    for (j = 0, len = children_data.length; j < len; j++) {\r
+                        child = children_data[j];\r
+                        node = new _this.tree.node_class('');\r
+                        node.initFromData(child);\r
+                        _this.addChild(node);\r
+                    }\r
+                    return null;\r
+                };\r
+            })(this);\r
+            addNode(data);\r
+            return null;\r
+        };\r
+\r
+\r
+        /*\r
+         Create tree from data.\r
+\r
+         Structure of data is:\r
+         [\r
+         {\r
+         label: 'node1',\r
+         children: [\r
+         { label: 'child1' },\r
+         { label: 'child2' }\r
+         ]\r
+         },\r
+         {\r
+         label: 'node2'\r
+         }\r
+         ]\r
+         */\r
+\r
+        Node.prototype.loadFromData = function(data) {\r
+            var j, len, node, o;\r
+            this.removeChildren();\r
+            for (j = 0, len = data.length; j < len; j++) {\r
+                o = data[j];\r
+                node = new this.tree.node_class(o);\r
+                this.addChild(node);\r
+                if (typeof o === 'object' && o.children) {\r
+                    node.loadFromData(o.children);\r
+                }\r
+            }\r
+            return null;\r
+        };\r
+\r
+\r
+        /*\r
+         Add child.\r
+\r
+         tree.addChild(\r
+         new Node('child1')\r
+         );\r
+         */\r
+\r
+        Node.prototype.addChild = function(node) {\r
+            this.children.push(node);\r
+            return node._setParent(this);\r
+        };\r
+\r
+\r
+        /*\r
+         Add child at position. Index starts at 0.\r
+\r
+         tree.addChildAtPosition(\r
+         new Node('abc'),\r
+         1\r
+         );\r
+         */\r
+\r
+        Node.prototype.addChildAtPosition = function(node, index) {\r
+            this.children.splice(index, 0, node);\r
+            return node._setParent(this);\r
+        };\r
+\r
+        Node.prototype._setParent = function(parent) {\r
+            this.parent = parent;\r
+            this.tree = parent.tree;\r
+            return this.tree.addNodeToIndex(this);\r
+        };\r
+\r
+\r
+        /*\r
+         Remove child. This also removes the children of the node.\r
+\r
+         tree.removeChild(tree.children[0]);\r
+         */\r
+\r
+        Node.prototype.removeChild = function(node) {\r
+            node.removeChildren();\r
+            return this._removeChild(node);\r
+        };\r
+\r
+        Node.prototype._removeChild = function(node) {\r
+            this.children.splice(this.getChildIndex(node), 1);\r
+            return this.tree.removeNodeFromIndex(node);\r
+        };\r
+\r
+\r
+        /*\r
+         Get child index.\r
+\r
+         var index = getChildIndex(node);\r
+         */\r
+\r
+        Node.prototype.getChildIndex = function(node) {\r
+            return $.inArray(node, this.children);\r
+        };\r
+\r
+\r
+        /*\r
+         Does the tree have children?\r
+\r
+         if (tree.hasChildren()) {\r
+         //\r
+         }\r
+         */\r
+\r
+        Node.prototype.hasChildren = function() {\r
+            return this.children.length !== 0;\r
+        };\r
+\r
+        Node.prototype.isFolder = function() {\r
+            return this.hasChildren() || this.load_on_demand;\r
+        };\r
+\r
+\r
+        /*\r
+         Iterate over all the nodes in the tree.\r
+\r
+         Calls callback with (node, level).\r
+\r
+         The callback must return true to continue the iteration on current node.\r
+\r
+         tree.iterate(\r
+         function(node, level) {\r
+         console.log(node.name);\r
+\r
+         // stop iteration after level 2\r
+         return (level <= 2);\r
+         }\r
+         );\r
+         */\r
+\r
+        Node.prototype.iterate = function(callback) {\r
+            var _iterate;\r
+            _iterate = function(node, level) {\r
+                var child, j, len, ref, result;\r
+                if (node.children) {\r
+                    ref = node.children;\r
+                    for (j = 0, len = ref.length; j < len; j++) {\r
+                        child = ref[j];\r
+                        result = callback(child, level);\r
+                        if (result && child.hasChildren()) {\r
+                            _iterate(child, level + 1);\r
+                        }\r
+                    }\r
+                    return null;\r
+                }\r
+            };\r
+            _iterate(this, 0);\r
+            return null;\r
+        };\r
+\r
+\r
+        /*\r
+         Move node relative to another node.\r
+\r
+         Argument position: Position.BEFORE, Position.AFTER or Position.Inside\r
+\r
+         // move node1 after node2\r
+         tree.moveNode(node1, node2, Position.AFTER);\r
+         */\r
+\r
+        Node.prototype.moveNode = function(moved_node, target_node, position) {\r
+            if (moved_node.isParentOf(target_node)) {\r
+                return;\r
+            }\r
+            moved_node.parent._removeChild(moved_node);\r
+            if (position === Position.AFTER) {\r
+                return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1);\r
+            } else if (position === Position.BEFORE) {\r
+                return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node));\r
+            } else if (position === Position.INSIDE) {\r
+                return target_node.addChildAtPosition(moved_node, 0);\r
+            }\r
+        };\r
+\r
+\r
+        /*\r
+         Get the tree as data.\r
+         */\r
+\r
+        Node.prototype.getData = function(include_parent) {\r
+            var getDataFromNodes;\r
+            if (include_parent == null) {\r
+                include_parent = false;\r
+            }\r
+            getDataFromNodes = function(nodes) {\r
+                var data, j, k, len, node, tmp_node, v;\r
+                data = [];\r
+                for (j = 0, len = nodes.length; j < len; j++) {\r
+                    node = nodes[j];\r
+                    tmp_node = {};\r
+                    for (k in node) {\r
+                        v = node[k];\r
+                        if ((k !== 'parent' && k !== 'children' && k !== 'element' && k !== 'tree') && Object.prototype.hasOwnProperty.call(node, k)) {\r
+                            tmp_node[k] = v;\r
+                        }\r
+                    }\r
+                    if (node.hasChildren()) {\r
+                        tmp_node.children = getDataFromNodes(node.children);\r
+                    }\r
+                    data.push(tmp_node);\r
+                }\r
+                return data;\r
+            };\r
+            if (include_parent) {\r
+                return getDataFromNodes([this]);\r
+            } else {\r
+                return getDataFromNodes(this.children);\r
+            }\r
+        };\r
+\r
+        Node.prototype.getNodeByName = function(name) {\r
+            return this.getNodeByCallback(function(node) {\r
+                return node.name === name;\r
+            });\r
+        };\r
+\r
+        Node.prototype.getNodeByCallback = function(callback) {\r
+            var result;\r
+            result = null;\r
+            this.iterate(function(node) {\r
+                if (callback(node)) {\r
+                    result = node;\r
+                    return false;\r
+                } else {\r
+                    return true;\r
+                }\r
+            });\r
+            return result;\r
+        };\r
+\r
+        Node.prototype.addAfter = function(node_info) {\r
+            var child_index, node;\r
+            if (!this.parent) {\r
+                return null;\r
+            } else {\r
+                node = new this.tree.node_class(node_info);\r
+                child_index = this.parent.getChildIndex(this);\r
+                this.parent.addChildAtPosition(node, child_index + 1);\r
+                if (typeof node_info === 'object' && node_info.children && node_info.children.length) {\r
+                    node.loadFromData(node_info.children);\r
+                }\r
+                return node;\r
+            }\r
+        };\r
+\r
+        Node.prototype.addBefore = function(node_info) {\r
+            var child_index, node;\r
+            if (!this.parent) {\r
+                return null;\r
+            } else {\r
+                node = new this.tree.node_class(node_info);\r
+                child_index = this.parent.getChildIndex(this);\r
+                this.parent.addChildAtPosition(node, child_index);\r
+                if (typeof node_info === 'object' && node_info.children && node_info.children.length) {\r
+                    node.loadFromData(node_info.children);\r
+                }\r
+                return node;\r
+            }\r
+        };\r
+\r
+        Node.prototype.addParent = function(node_info) {\r
+            var child, j, len, new_parent, original_parent, ref;\r
+            if (!this.parent) {\r
+                return null;\r
+            } else {\r
+                new_parent = new this.tree.node_class(node_info);\r
+                new_parent._setParent(this.tree);\r
+                original_parent = this.parent;\r
+                ref = original_parent.children;\r
+                for (j = 0, len = ref.length; j < len; j++) {\r
+                    child = ref[j];\r
+                    new_parent.addChild(child);\r
+                }\r
+                original_parent.children = [];\r
+                original_parent.addChild(new_parent);\r
+                return new_parent;\r
+            }\r
+        };\r
+\r
+        Node.prototype.remove = function() {\r
+            if (this.parent) {\r
+                this.parent.removeChild(this);\r
+                return this.parent = null;\r
+            }\r
+        };\r
+\r
+        Node.prototype.append = function(node_info) {\r
+            var node;\r
+            node = new this.tree.node_class(node_info);\r
+            this.addChild(node);\r
+            if (typeof node_info === 'object' && node_info.children && node_info.children.length) {\r
+                node.loadFromData(node_info.children);\r
+            }\r
+            return node;\r
+        };\r
+\r
+        Node.prototype.prepend = function(node_info) {\r
+            var node;\r
+            node = new this.tree.node_class(node_info);\r
+            this.addChildAtPosition(node, 0);\r
+            if (typeof node_info === 'object' && node_info.children && node_info.children.length) {\r
+                node.loadFromData(node_info.children);\r
+            }\r
+            return node;\r
+        };\r
+\r
+        Node.prototype.isParentOf = function(node) {\r
+            var parent;\r
+            parent = node.parent;\r
+            while (parent) {\r
+                if (parent === this) {\r
+                    return true;\r
+                }\r
+                parent = parent.parent;\r
+            }\r
+            return false;\r
+        };\r
+\r
+        Node.prototype.getLevel = function() {\r
+            var level, node;\r
+            level = 0;\r
+            node = this;\r
+            while (node.parent) {\r
+                level += 1;\r
+                node = node.parent;\r
+            }\r
+            return level;\r
+        };\r
+\r
+        Node.prototype.getNodeById = function(node_id) {\r
+            return this.id_mapping[node_id];\r
+        };\r
+\r
+        Node.prototype.addNodeToIndex = function(node) {\r
+            if (node.id != null) {\r
+                return this.id_mapping[node.id] = node;\r
+            }\r
+        };\r
+\r
+        Node.prototype.removeNodeFromIndex = function(node) {\r
+            if (node.id != null) {\r
+                return delete this.id_mapping[node.id];\r
+            }\r
+        };\r
+\r
+        Node.prototype.removeChildren = function() {\r
+            this.iterate((function(_this) {\r
+                return function(child) {\r
+                    _this.tree.removeNodeFromIndex(child);\r
+                    return true;\r
+                };\r
+            })(this));\r
+            return this.children = [];\r
+        };\r
+\r
+        Node.prototype.getPreviousSibling = function() {\r
+            var previous_index;\r
+            if (!this.parent) {\r
+                return null;\r
+            } else {\r
+                previous_index = this.parent.getChildIndex(this) - 1;\r
+                if (previous_index >= 0) {\r
+                    return this.parent.children[previous_index];\r
+                } else {\r
+                    return null;\r
+                }\r
+            }\r
+        };\r
+\r
+        Node.prototype.getNextSibling = function() {\r
+            var next_index;\r
+            if (!this.parent) {\r
+                return null;\r
+            } else {\r
+                next_index = this.parent.getChildIndex(this) + 1;\r
+                if (next_index < this.parent.children.length) {\r
+                    return this.parent.children[next_index];\r
+                } else {\r
+                    return null;\r
+                }\r
+            }\r
+        };\r
+\r
+        Node.prototype.getNodesByProperty = function(key, value) {\r
+            return this.filter(function(node) {\r
+                return node[key] === value;\r
+            });\r
+        };\r
+\r
+        Node.prototype.filter = function(f) {\r
+            var result;\r
+            result = [];\r
+            this.iterate(function(node) {\r
+                if (f(node)) {\r
+                    result.push(node);\r
+                }\r
+                return true;\r
+            });\r
+            return result;\r
+        };\r
+\r
+        Node.prototype.getNextNode = function(include_children) {\r
+            var next_sibling;\r
+            if (include_children == null) {\r
+                include_children = true;\r
+            }\r
+            if (include_children && this.hasChildren() && this.is_open) {\r
+                return this.children[0];\r
+            } else {\r
+                if (!this.parent) {\r
+                    return null;\r
+                } else {\r
+                    next_sibling = this.getNextSibling();\r
+                    if (next_sibling) {\r
+                        return next_sibling;\r
+                    } else {\r
+                        return this.parent.getNextNode(false);\r
+                    }\r
+                }\r
+            }\r
+        };\r
+\r
+        Node.prototype.getPreviousNode = function() {\r
+            var previous_sibling;\r
+            if (!this.parent) {\r
+                return null;\r
+            } else {\r
+                previous_sibling = this.getPreviousSibling();\r
+                if (previous_sibling) {\r
+                    if (!previous_sibling.hasChildren() || !previous_sibling.is_open) {\r
+                        return previous_sibling;\r
+                    } else {\r
+                        return previous_sibling.getLastChild();\r
+                    }\r
+                } else {\r
+                    return this.getParent();\r
+                }\r
+            }\r
+        };\r
+\r
+        Node.prototype.getParent = function() {\r
+            if (!this.parent) {\r
+                return null;\r
+            } else if (!this.parent.parent) {\r
+                return null;\r
+            } else {\r
+                return this.parent;\r
+            }\r
+        };\r
+\r
+        Node.prototype.getLastChild = function() {\r
+            var last_child;\r
+            if (!this.hasChildren()) {\r
+                return null;\r
+            } else {\r
+                last_child = this.children[this.children.length - 1];\r
+                if (!last_child.hasChildren() || !last_child.is_open) {\r
+                    return last_child;\r
+                } else {\r
+                    return last_child.getLastChild();\r
+                }\r
+            }\r
+        };\r
+\r
+        return Node;\r
+\r
+    })();\r
+\r
+    module.exports = {\r
+        Node: Node,\r
+        Position: Position\r
+    };\r
+\r
+},{}],6:[function(require,module,exports){\r
+    var $, BorderDropHint, FolderElement, GhostDropHint, NodeElement, Position, node,\r
+        extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\r
+        hasProp = {}.hasOwnProperty;\r
+\r
+    node = require('./node');\r
+\r
+    Position = node.Position;\r
+\r
+    $ = jQuery;\r
+\r
+    NodeElement = (function() {\r
+        function NodeElement(node, tree_widget) {\r
+            this.init(node, tree_widget);\r
+        }\r
+\r
+        NodeElement.prototype.init = function(node, tree_widget) {\r
+            this.node = node;\r
+            this.tree_widget = tree_widget;\r
+            if (!node.element) {\r
+                node.element = this.tree_widget.element;\r
+            }\r
+            return this.$element = $(node.element);\r
+        };\r
+\r
+        NodeElement.prototype.getUl = function() {\r
+            return this.$element.children('ul:first');\r
+        };\r
+\r
+        NodeElement.prototype.getSpan = function() {\r
+            return this.$element.children('.jqtree-element').find('span.jqtree-title');\r
+        };\r
+\r
+        NodeElement.prototype.getLi = function() {\r
+            return this.$element;\r
+        };\r
+\r
+        NodeElement.prototype.addDropHint = function(position) {\r
+            if (position === Position.INSIDE) {\r
+                return new BorderDropHint(this.$element);\r
+            } else {\r
+                return new GhostDropHint(this.node, this.$element, position);\r
+            }\r
+        };\r
+\r
+        NodeElement.prototype.select = function() {\r
+            var $li, $span;\r
+            $li = this.getLi();\r
+            $li.addClass('jqtree-selected');\r
+            $li.attr('aria-selected', 'true');\r
+            $span = this.getSpan();\r
+            return $span.attr('tabindex', 0);\r
+        };\r
+\r
+        NodeElement.prototype.deselect = function() {\r
+            var $li, $span;\r
+            $li = this.getLi();\r
+            $li.removeClass('jqtree-selected');\r
+            $li.attr('aria-selected', 'false');\r
+            $span = this.getSpan();\r
+            return $span.attr('tabindex', -1);\r
+        };\r
+\r
+        return NodeElement;\r
+\r
+    })();\r
+\r
+    FolderElement = (function(superClass) {\r
+        extend(FolderElement, superClass);\r
+\r
+        function FolderElement() {\r
+            return FolderElement.__super__.constructor.apply(this, arguments);\r
+        }\r
+\r
+        FolderElement.prototype.open = function(on_finished, slide) {\r
+            var $button, doOpen;\r
+            if (slide == null) {\r
+                slide = true;\r
+            }\r
+            if (!this.node.is_open) {\r
+                this.node.is_open = true;\r
+                $button = this.getButton();\r
+                $button.removeClass('jqtree-closed');\r
+                $button.html('');\r
+                $button.append(this.tree_widget.renderer.opened_icon_element.cloneNode(false));\r
+                doOpen = (function(_this) {\r
+                    return function() {\r
+                        var $li, $span;\r
+                        $li = _this.getLi();\r
+                        $li.removeClass('jqtree-closed');\r
+                        $span = _this.getSpan();\r
+                        $span.attr('aria-expanded', 'true');\r
+                        if (on_finished) {\r
+                            on_finished();\r
+                        }\r
+                        return _this.tree_widget._triggerEvent('tree.open', {\r
+                            node: _this.node\r
+                        });\r
+                    };\r
+                })(this);\r
+                if (slide) {\r
+                    return this.getUl().slideDown('fast', doOpen);\r
+                } else {\r
+                    this.getUl().show();\r
+                    return doOpen();\r
+                }\r
+            }\r
+        };\r
+\r
+        FolderElement.prototype.close = function(slide) {\r
+            var $button, doClose;\r
+            if (slide == null) {\r
+                slide = true;\r
+            }\r
+            if (this.node.is_open) {\r
+                this.node.is_open = false;\r
+                $button = this.getButton();\r
+                $button.addClass('jqtree-closed');\r
+                $button.html('');\r
+                $button.append(this.tree_widget.renderer.closed_icon_element.cloneNode(false));\r
+                doClose = (function(_this) {\r
+                    return function() {\r
+                        var $li, $span;\r
+                        $li = _this.getLi();\r
+                        $li.addClass('jqtree-closed');\r
+                        $span = _this.getSpan();\r
+                        $span.attr('aria-expanded', 'false');\r
+                        return _this.tree_widget._triggerEvent('tree.close', {\r
+                            node: _this.node\r
+                        });\r
+                    };\r
+                })(this);\r
+                if (slide) {\r
+                    return this.getUl().slideUp('fast', doClose);\r
+                } else {\r
+                    this.getUl().hide();\r
+                    return doClose();\r
+                }\r
+            }\r
+        };\r
+\r
+        FolderElement.prototype.getButton = function() {\r
+            return this.$element.children('.jqtree-element').find('a.jqtree-toggler');\r
+        };\r
+\r
+        FolderElement.prototype.addDropHint = function(position) {\r
+            if (!this.node.is_open && position === Position.INSIDE) {\r
+                return new BorderDropHint(this.$element);\r
+            } else {\r
+                return new GhostDropHint(this.node, this.$element, position);\r
+            }\r
+        };\r
+\r
+        return FolderElement;\r
+\r
+    })(NodeElement);\r
+\r
+    BorderDropHint = (function() {\r
+        function BorderDropHint($element) {\r
+            var $div, width;\r
+            $div = $element.children('.jqtree-element');\r
+            width = $element.width() - 4;\r
+            this.$hint = $('<span class="jqtree-border"></span>');\r
+            $div.append(this.$hint);\r
+            this.$hint.css({\r
+                width: width,\r
+                height: $div.outerHeight() - 4\r
+            });\r
+        }\r
+\r
+        BorderDropHint.prototype.remove = function() {\r
+            return this.$hint.remove();\r
+        };\r
+\r
+        return BorderDropHint;\r
+\r
+    })();\r
+\r
+    GhostDropHint = (function() {\r
+        function GhostDropHint(node, $element, position) {\r
+            this.$element = $element;\r
+            this.node = node;\r
+            this.$ghost = $('<li class="jqtree_common jqtree-ghost"><span class="jqtree_common jqtree-circle"></span><span class="jqtree_common jqtree-line"></span></li>');\r
+            if (position === Position.AFTER) {\r
+                this.moveAfter();\r
+            } else if (position === Position.BEFORE) {\r
+                this.moveBefore();\r
+            } else if (position === Position.INSIDE) {\r
+                if (node.isFolder() && node.is_open) {\r
+                    this.moveInsideOpenFolder();\r
+                } else {\r
+                    this.moveInside();\r
+                }\r
+            }\r
+        }\r
+\r
+        GhostDropHint.prototype.remove = function() {\r
+            return this.$ghost.remove();\r
+        };\r
+\r
+        GhostDropHint.prototype.moveAfter = function() {\r
+            return this.$element.after(this.$ghost);\r
+        };\r
+\r
+        GhostDropHint.prototype.moveBefore = function() {\r
+            return this.$element.before(this.$ghost);\r
+        };\r
+\r
+        GhostDropHint.prototype.moveInsideOpenFolder = function() {\r
+            return $(this.node.children[0].element).before(this.$ghost);\r
+        };\r
+\r
+        GhostDropHint.prototype.moveInside = function() {\r
+            this.$element.after(this.$ghost);\r
+            return this.$ghost.addClass('jqtree-inside');\r
+        };\r
+\r
+        return GhostDropHint;\r
+\r
+    })();\r
+\r
+    module.exports = {\r
+        BorderDropHint: BorderDropHint,\r
+        FolderElement: FolderElement,\r
+        GhostDropHint: GhostDropHint,\r
+        NodeElement: NodeElement\r
+    };\r
+\r
+},{"./node":5}],7:[function(require,module,exports){\r
+    var $, SaveStateHandler, indexOf, isInt, util;\r
+\r
+    util = require('./util');\r
+\r
+    indexOf = util.indexOf;\r
+\r
+    isInt = util.isInt;\r
+\r
+    $ = jQuery;\r
+\r
+    SaveStateHandler = (function() {\r
+        function SaveStateHandler(tree_widget) {\r
+            this.tree_widget = tree_widget;\r
+        }\r
+\r
+        SaveStateHandler.prototype.saveState = function() {\r
+            var state;\r
+            state = JSON.stringify(this.getState());\r
+            if (this.tree_widget.options.onSetStateFromStorage) {\r
+                return this.tree_widget.options.onSetStateFromStorage(state);\r
+            } else if (this.supportsLocalStorage()) {\r
+                return localStorage.setItem(this.getCookieName(), state);\r
+            } else if ($.cookie) {\r
+                $.cookie.raw = true;\r
+                return $.cookie(this.getCookieName(), state, {\r
+                    path: '/'\r
+                });\r
+            }\r
+        };\r
+\r
+        SaveStateHandler.prototype.getStateFromStorage = function() {\r
+            var json_data;\r
+            json_data = this._loadFromStorage();\r
+            if (json_data) {\r
+                return this._parseState(json_data);\r
+            } else {\r
+                return null;\r
+            }\r
+        };\r
+\r
+        SaveStateHandler.prototype._parseState = function(json_data) {\r
+            var state;\r
+            state = $.parseJSON(json_data);\r
+            if (state && state.selected_node && isInt(state.selected_node)) {\r
+                state.selected_node = [state.selected_node];\r
+            }\r
+            return state;\r
+        };\r
+\r
+        SaveStateHandler.prototype._loadFromStorage = function() {\r
+            if (this.tree_widget.options.onGetStateFromStorage) {\r
+                return this.tree_widget.options.onGetStateFromStorage();\r
+            } else if (this.supportsLocalStorage()) {\r
+                return localStorage.getItem(this.getCookieName());\r
+            } else if ($.cookie) {\r
+                $.cookie.raw = true;\r
+                return $.cookie(this.getCookieName());\r
+            } else {\r
+                return null;\r
+            }\r
+        };\r
+\r
+        SaveStateHandler.prototype.getState = function() {\r
+            var getOpenNodeIds, getSelectedNodeIds;\r
+            getOpenNodeIds = (function(_this) {\r
+                return function() {\r
+                    var open_nodes;\r
+                    open_nodes = [];\r
+                    _this.tree_widget.tree.iterate(function(node) {\r
+                        if (node.is_open && node.id && node.hasChildren()) {\r
+                            open_nodes.push(node.id);\r
+                        }\r
+                        return true;\r
+                    });\r
+                    return open_nodes;\r
+                };\r
+            })(this);\r
+            getSelectedNodeIds = (function(_this) {\r
+                return function() {\r
+                    var n;\r
+                    return (function() {\r
+                        var i, len, ref, results;\r
+                        ref = this.tree_widget.getSelectedNodes();\r
+                        results = [];\r
+                        for (i = 0, len = ref.length; i < len; i++) {\r
+                            n = ref[i];\r
+                            results.push(n.id);\r
+                        }\r
+                        return results;\r
+                    }).call(_this);\r
+                };\r
+            })(this);\r
+            return {\r
+                open_nodes: getOpenNodeIds(),\r
+                selected_node: getSelectedNodeIds()\r
+            };\r
+        };\r
+\r
+        SaveStateHandler.prototype.setInitialState = function(state) {\r
+            var must_load_on_demand;\r
+            if (!state) {\r
+                return false;\r
+            } else {\r
+                must_load_on_demand = this._openInitialNodes(state.open_nodes);\r
+                this._selectInitialNodes(state.selected_node);\r
+                return must_load_on_demand;\r
+            }\r
+        };\r
+\r
+        SaveStateHandler.prototype._openInitialNodes = function(node_ids) {\r
+            var i, len, must_load_on_demand, node, node_id;\r
+            must_load_on_demand = false;\r
+            for (i = 0, len = node_ids.length; i < len; i++) {\r
+                node_id = node_ids[i];\r
+                node = this.tree_widget.getNodeById(node_id);\r
+                if (node) {\r
+                    if (!node.load_on_demand) {\r
+                        node.is_open = true;\r
+                    } else {\r
+                        must_load_on_demand = true;\r
+                    }\r
+                }\r
+            }\r
+            return must_load_on_demand;\r
+        };\r
+\r
+        SaveStateHandler.prototype._selectInitialNodes = function(node_ids) {\r
+            var i, len, node, node_id, select_count;\r
+            select_count = 0;\r
+            for (i = 0, len = node_ids.length; i < len; i++) {\r
+                node_id = node_ids[i];\r
+                node = this.tree_widget.getNodeById(node_id);\r
+                if (node) {\r
+                    select_count += 1;\r
+                    this.tree_widget.select_node_handler.addToSelection(node);\r
+                }\r
+            }\r
+            return select_count !== 0;\r
+        };\r
+\r
+        SaveStateHandler.prototype.setInitialStateOnDemand = function(state, cb_finished) {\r
+            if (state) {\r
+                return this._setInitialStateOnDemand(state.open_nodes, state.selected_node, cb_finished);\r
+            } else {\r
+                return cb_finished();\r
+            }\r
+        };\r
+\r
+        SaveStateHandler.prototype._setInitialStateOnDemand = function(node_ids, selected_nodes, cb_finished) {\r
+            var loadAndOpenNode, loading_count, openNodes;\r
+            loading_count = 0;\r
+            openNodes = (function(_this) {\r
+                return function() {\r
+                    var i, len, new_nodes_ids, node, node_id;\r
+                    new_nodes_ids = [];\r
+                    for (i = 0, len = node_ids.length; i < len; i++) {\r
+                        node_id = node_ids[i];\r
+                        node = _this.tree_widget.getNodeById(node_id);\r
+                        if (!node) {\r
+                            new_nodes_ids.push(node_id);\r
+                        } else {\r
+                            if (!node.is_loading) {\r
+                                if (node.load_on_demand) {\r
+                                    loadAndOpenNode(node);\r
+                                } else {\r
+                                    _this.tree_widget._openNode(node, false);\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                    node_ids = new_nodes_ids;\r
+                    if (_this._selectInitialNodes(selected_nodes)) {\r
+                        _this.tree_widget._refreshElements();\r
+                    }\r
+                    if (loading_count === 0) {\r
+                        return cb_finished();\r
+                    }\r
+                };\r
+            })(this);\r
+            loadAndOpenNode = (function(_this) {\r
+                return function(node) {\r
+                    loading_count += 1;\r
+                    return _this.tree_widget._openNode(node, false, function() {\r
+                        loading_count -= 1;\r
+                        return openNodes();\r
+                    });\r
+                };\r
+            })(this);\r
+            return openNodes();\r
+        };\r
+\r
+        SaveStateHandler.prototype.getCookieName = function() {\r
+            if (typeof this.tree_widget.options.saveState === 'string') {\r
+                return this.tree_widget.options.saveState;\r
+            } else {\r
+                return 'tree';\r
+            }\r
+        };\r
+\r
+        SaveStateHandler.prototype.supportsLocalStorage = function() {\r
+            var testSupport;\r
+            testSupport = function() {\r
+                var error, key;\r
+                if (typeof localStorage === "undefined" || localStorage === null) {\r
+                    return false;\r
+                } else {\r
+                    try {\r
+                        key = '_storage_test';\r
+                        sessionStorage.setItem(key, true);\r
+                        sessionStorage.removeItem(key);\r
+                    } catch (error1) {\r
+                        error = error1;\r
+                        return false;\r
+                    }\r
+                    return true;\r
+                }\r
+            };\r
+            if (this._supportsLocalStorage == null) {\r
+                this._supportsLocalStorage = testSupport();\r
+            }\r
+            return this._supportsLocalStorage;\r
+        };\r
+\r
+        SaveStateHandler.prototype.getNodeIdToBeSelected = function() {\r
+            var state;\r
+            state = this.getStateFromStorage();\r
+            if (state && state.selected_node) {\r
+                return state.selected_node[0];\r
+            } else {\r
+                return null;\r
+            }\r
+        };\r
+\r
+        return SaveStateHandler;\r
+\r
+    })();\r
+\r
+    module.exports = SaveStateHandler;\r
+\r
+},{"./util":12}],8:[function(require,module,exports){\r
+    var $, ScrollHandler;\r
+\r
+    $ = jQuery;\r
+\r
+    ScrollHandler = (function() {\r
+        function ScrollHandler(tree_widget) {\r
+            this.tree_widget = tree_widget;\r
+            this.previous_top = -1;\r
+            this.is_initialized = false;\r
+            this._initScrollParent();\r
+        }\r
+\r
+        ScrollHandler.prototype._initScrollParent = function() {\r
+            var $scroll_parent, getParentWithOverflow, setDocumentAsScrollParent;\r
+            getParentWithOverflow = (function(_this) {\r
+                return function() {\r
+                    var css_values, el, hasOverFlow, i, len, ref;\r
+                    css_values = ['overflow', 'overflow-y'];\r
+                    hasOverFlow = function(el) {\r
+                        var css_value, i, len, ref;\r
+                        for (i = 0, len = css_values.length; i < len; i++) {\r
+                            css_value = css_values[i];\r
+                            if ((ref = $.css(el, css_value)) === 'auto' || ref === 'scroll') {\r
+                                return true;\r
+                            }\r
+                        }\r
+                        return false;\r
+                    };\r
+                    if (hasOverFlow(_this.tree_widget.$el[0])) {\r
+                        return _this.tree_widget.$el;\r
+                    }\r
+                    ref = _this.tree_widget.$el.parents();\r
+                    for (i = 0, len = ref.length; i < len; i++) {\r
+                        el = ref[i];\r
+                        if (hasOverFlow(el)) {\r
+                            return $(el);\r
+                        }\r
+                    }\r
+                    return null;\r
+                };\r
+            })(this);\r
+            setDocumentAsScrollParent = (function(_this) {\r
+                return function() {\r
+                    _this.scroll_parent_top = 0;\r
+                    return _this.$scroll_parent = null;\r
+                };\r
+            })(this);\r
+            if (this.tree_widget.$el.css('position') === 'fixed') {\r
+                setDocumentAsScrollParent();\r
+            }\r
+            $scroll_parent = getParentWithOverflow();\r
+            if ($scroll_parent && $scroll_parent.length && $scroll_parent[0].tagName !== 'HTML') {\r
+                this.$scroll_parent = $scroll_parent;\r
+                this.scroll_parent_top = this.$scroll_parent.offset().top;\r
+            } else {\r
+                setDocumentAsScrollParent();\r
+            }\r
+            return this.is_initialized = true;\r
+        };\r
+\r
+        ScrollHandler.prototype._ensureInit = function() {\r
+            if (!this.is_initialized) {\r
+                return this._initScrollParent();\r
+            }\r
+        };\r
+\r
+        ScrollHandler.prototype.checkScrolling = function() {\r
+            var hovered_area;\r
+            this._ensureInit();\r
+            hovered_area = this.tree_widget.dnd_handler.hovered_area;\r
+            if (hovered_area && hovered_area.top !== this.previous_top) {\r
+                this.previous_top = hovered_area.top;\r
+                if (this.$scroll_parent) {\r
+                    return this._handleScrollingWithScrollParent(hovered_area);\r
+                } else {\r
+                    return this._handleScrollingWithDocument(hovered_area);\r
+                }\r
+            }\r
+        };\r
+\r
+        ScrollHandler.prototype._handleScrollingWithScrollParent = function(area) {\r
+            var distance_bottom;\r
+            distance_bottom = this.scroll_parent_top + this.$scroll_parent[0].offsetHeight - area.bottom;\r
+            if (distance_bottom < 20) {\r
+                this.$scroll_parent[0].scrollTop += 20;\r
+                this.tree_widget.refreshHitAreas();\r
+                return this.previous_top = -1;\r
+            } else if ((area.top - this.scroll_parent_top) < 20) {\r
+                this.$scroll_parent[0].scrollTop -= 20;\r
+                this.tree_widget.refreshHitAreas();\r
+                return this.previous_top = -1;\r
+            }\r
+        };\r
+\r
+        ScrollHandler.prototype._handleScrollingWithDocument = function(area) {\r
+            var distance_top;\r
+            distance_top = area.top - $(document).scrollTop();\r
+            if (distance_top < 20) {\r
+                return $(document).scrollTop($(document).scrollTop() - 20);\r
+            } else if ($(window).height() - (area.bottom - $(document).scrollTop()) < 20) {\r
+                return $(document).scrollTop($(document).scrollTop() + 20);\r
+            }\r
+        };\r
+\r
+        ScrollHandler.prototype.scrollTo = function(top) {\r
+            var tree_top;\r
+            this._ensureInit();\r
+            if (this.$scroll_parent) {\r
+                return this.$scroll_parent[0].scrollTop = top;\r
+            } else {\r
+                tree_top = this.tree_widget.$el.offset().top;\r
+                return $(document).scrollTop(top + tree_top);\r
+            }\r
+        };\r
+\r
+        ScrollHandler.prototype.isScrolledIntoView = function(element) {\r
+            var $element, element_bottom, element_top, view_bottom, view_top;\r
+            this._ensureInit();\r
+            $element = $(element);\r
+            if (this.$scroll_parent) {\r
+                view_top = 0;\r
+                view_bottom = this.$scroll_parent.height();\r
+                element_top = $element.offset().top - this.scroll_parent_top;\r
+                element_bottom = element_top + $element.height();\r
+            } else {\r
+                view_top = $(window).scrollTop();\r
+                view_bottom = view_top + $(window).height();\r
+                element_top = $element.offset().top;\r
+                element_bottom = element_top + $element.height();\r
+            }\r
+            return (element_bottom <= view_bottom) && (element_top >= view_top);\r
+        };\r
+\r
+        return ScrollHandler;\r
+\r
+    })();\r
+\r
+    module.exports = ScrollHandler;\r
+\r
+},{}],9:[function(require,module,exports){\r
+    var $, SelectNodeHandler;\r
+\r
+    $ = jQuery;\r
+\r
+    SelectNodeHandler = (function() {\r
+        function SelectNodeHandler(tree_widget) {\r
+            this.tree_widget = tree_widget;\r
+            this.clear();\r
+        }\r
+\r
+        SelectNodeHandler.prototype.getSelectedNode = function() {\r
+            var selected_nodes;\r
+            selected_nodes = this.getSelectedNodes();\r
+            if (selected_nodes.length) {\r
+                return selected_nodes[0];\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        SelectNodeHandler.prototype.getSelectedNodes = function() {\r
+            var id, node, selected_nodes;\r
+            if (this.selected_single_node) {\r
+                return [this.selected_single_node];\r
+            } else {\r
+                selected_nodes = [];\r
+                for (id in this.selected_nodes) {\r
+                    node = this.tree_widget.getNodeById(id);\r
+                    if (node) {\r
+                        selected_nodes.push(node);\r
+                    }\r
+                }\r
+                return selected_nodes;\r
+            }\r
+        };\r
+\r
+        SelectNodeHandler.prototype.getSelectedNodesUnder = function(parent) {\r
+            var id, node, selected_nodes;\r
+            if (this.selected_single_node) {\r
+                if (parent.isParentOf(this.selected_single_node)) {\r
+                    return [this.selected_single_node];\r
+                } else {\r
+                    return [];\r
+                }\r
+            } else {\r
+                selected_nodes = [];\r
+                for (id in this.selected_nodes) {\r
+                    node = this.tree_widget.getNodeById(id);\r
+                    if (node && parent.isParentOf(node)) {\r
+                        selected_nodes.push(node);\r
+                    }\r
+                }\r
+                return selected_nodes;\r
+            }\r
+        };\r
+\r
+        SelectNodeHandler.prototype.isNodeSelected = function(node) {\r
+            if (!node) {\r
+                return false;\r
+            } else if (node.id) {\r
+                if (this.selected_nodes[node.id]) {\r
+                    return true;\r
+                } else {\r
+                    return false;\r
+                }\r
+            } else if (this.selected_single_node) {\r
+                return this.selected_single_node.element === node.element;\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        SelectNodeHandler.prototype.clear = function() {\r
+            this.selected_nodes = {};\r
+            return this.selected_single_node = null;\r
+        };\r
+\r
+        SelectNodeHandler.prototype.removeFromSelection = function(node, include_children) {\r
+            if (include_children == null) {\r
+                include_children = false;\r
+            }\r
+            if (!node.id) {\r
+                if (this.selected_single_node && node.element === this.selected_single_node.element) {\r
+                    return this.selected_single_node = null;\r
+                }\r
+            } else {\r
+                delete this.selected_nodes[node.id];\r
+                if (include_children) {\r
+                    return node.iterate((function(_this) {\r
+                        return function(n) {\r
+                            delete _this.selected_nodes[node.id];\r
+                            return true;\r
+                        };\r
+                    })(this));\r
+                }\r
+            }\r
+        };\r
+\r
+        SelectNodeHandler.prototype.addToSelection = function(node) {\r
+            if (node.id) {\r
+                return this.selected_nodes[node.id] = true;\r
+            } else {\r
+                return this.selected_single_node = node;\r
+            }\r
+        };\r
+\r
+        return SelectNodeHandler;\r
+\r
+    })();\r
+\r
+    module.exports = SelectNodeHandler;\r
+\r
+},{}],10:[function(require,module,exports){\r
+\r
+    /*\r
+     Copyright 2013 Marco Braak\r
+\r
+     Licensed under the Apache License, Version 2.0 (the "License");\r
+     you may not use this file except in compliance with the License.\r
+     You may obtain a copy of the License at\r
+\r
+     http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+     Unless required by applicable law or agreed to in writing, software\r
+     distributed under the License is distributed on an "AS IS" BASIS,\r
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+     See the License for the specific language governing permissions and\r
+     limitations under the License.\r
+     */\r
+    var $, SimpleWidget,\r
+        slice = [].slice;\r
+\r
+    $ = jQuery;\r
+\r
+    SimpleWidget = (function() {\r
+        SimpleWidget.prototype.defaults = {};\r
+\r
+        function SimpleWidget(el, options) {\r
+            this.$el = $(el);\r
+            this.options = $.extend({}, this.defaults, options);\r
+        }\r
+\r
+        SimpleWidget.prototype.destroy = function() {\r
+            return this._deinit();\r
+        };\r
+\r
+        SimpleWidget.prototype._init = function() {\r
+            return null;\r
+        };\r
+\r
+        SimpleWidget.prototype._deinit = function() {\r
+            return null;\r
+        };\r
+\r
+        SimpleWidget.register = function(widget_class, widget_name) {\r
+            var callFunction, createWidget, destroyWidget, getDataKey, getWidgetData;\r
+            getDataKey = function() {\r
+                return "simple_widget_" + widget_name;\r
+            };\r
+            getWidgetData = function(el, data_key) {\r
+                var widget;\r
+                widget = $.data(el, data_key);\r
+                if (widget && (widget instanceof SimpleWidget)) {\r
+                    return widget;\r
+                } else {\r
+                    return null;\r
+                }\r
+            };\r
+            createWidget = function($el, options) {\r
+                var data_key, el, existing_widget, i, len, widget;\r
+                data_key = getDataKey();\r
+                for (i = 0, len = $el.length; i < len; i++) {\r
+                    el = $el[i];\r
+                    existing_widget = getWidgetData(el, data_key);\r
+                    if (!existing_widget) {\r
+                        widget = new widget_class(el, options);\r
+                        if (!$.data(el, data_key)) {\r
+                            $.data(el, data_key, widget);\r
+                        }\r
+                        widget._init();\r
+                    }\r
+                }\r
+                return $el;\r
+            };\r
+            destroyWidget = function($el) {\r
+                var data_key, el, i, len, results, widget;\r
+                data_key = getDataKey();\r
+                results = [];\r
+                for (i = 0, len = $el.length; i < len; i++) {\r
+                    el = $el[i];\r
+                    widget = getWidgetData(el, data_key);\r
+                    if (widget) {\r
+                        widget.destroy();\r
+                    }\r
+                    results.push($.removeData(el, data_key));\r
+                }\r
+                return results;\r
+            };\r
+            callFunction = function($el, function_name, args) {\r
+                var el, i, len, result, widget, widget_function;\r
+                result = null;\r
+                for (i = 0, len = $el.length; i < len; i++) {\r
+                    el = $el[i];\r
+                    widget = $.data(el, getDataKey());\r
+                    if (widget && (widget instanceof SimpleWidget)) {\r
+                        widget_function = widget[function_name];\r
+                        if (widget_function && (typeof widget_function === 'function')) {\r
+                            result = widget_function.apply(widget, args);\r
+                        }\r
+                    }\r
+                }\r
+                return result;\r
+            };\r
+            return $.fn[widget_name] = function() {\r
+                var $el, args, argument1, function_name, options;\r
+                argument1 = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\r
+                $el = this;\r
+                if (argument1 === void 0 || typeof argument1 === 'object') {\r
+                    options = argument1;\r
+                    return createWidget($el, options);\r
+                } else if (typeof argument1 === 'string' && argument1[0] !== '_') {\r
+                    function_name = argument1;\r
+                    if (function_name === 'destroy') {\r
+                        return destroyWidget($el);\r
+                    } else if (function_name === 'get_widget_class') {\r
+                        return widget_class;\r
+                    } else {\r
+                        return callFunction($el, function_name, args);\r
+                    }\r
+                }\r
+            };\r
+        };\r
+\r
+        return SimpleWidget;\r
+\r
+    })();\r
+\r
+    module.exports = SimpleWidget;\r
+\r
+},{}],11:[function(require,module,exports){\r
+    var $, BorderDropHint, DragAndDropHandler, DragElement, ElementsRenderer, FolderElement, GhostDropHint, HitAreasGenerator, JqTreeWidget, KeyHandler, MouseWidget, Node, NodeElement, Position, SaveStateHandler, ScrollHandler, SelectNodeHandler, SimpleWidget, __version__, drag_and_drop_handler, node_module, ref, util_module,\r
+        extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\r
+        hasProp = {}.hasOwnProperty;\r
+\r
+    __version__ = require('./version');\r
+\r
+    drag_and_drop_handler = require('./drag_and_drop_handler');\r
+\r
+    ElementsRenderer = require('./elements_renderer');\r
+\r
+    KeyHandler = require('./key_handler');\r
+\r
+    MouseWidget = require('./mouse.widget');\r
+\r
+    SaveStateHandler = require('./save_state_handler');\r
+\r
+    ScrollHandler = require('./scroll_handler');\r
+\r
+    SelectNodeHandler = require('./select_node_handler');\r
+\r
+    SimpleWidget = require('./simple.widget');\r
+\r
+    node_module = require('./node');\r
+\r
+    Node = node_module.Node;\r
+\r
+    Position = node_module.Position;\r
+\r
+    util_module = require('./util');\r
+\r
+    ref = require('./node_element'), BorderDropHint = ref.BorderDropHint, FolderElement = ref.FolderElement, GhostDropHint = ref.GhostDropHint, NodeElement = ref.NodeElement;\r
+\r
+    DragAndDropHandler = drag_and_drop_handler.DragAndDropHandler, DragElement = drag_and_drop_handler.DragElement, HitAreasGenerator = drag_and_drop_handler.HitAreasGenerator;\r
+\r
+    $ = jQuery;\r
+\r
+    JqTreeWidget = (function(superClass) {\r
+        extend(JqTreeWidget, superClass);\r
+\r
+        function JqTreeWidget() {\r
+            return JqTreeWidget.__super__.constructor.apply(this, arguments);\r
+        }\r
+\r
+        JqTreeWidget.prototype.BorderDropHint = BorderDropHint;\r
+\r
+        JqTreeWidget.prototype.DragElement = DragElement;\r
+\r
+        JqTreeWidget.prototype.DragAndDropHandler = DragAndDropHandler;\r
+\r
+        JqTreeWidget.prototype.ElementsRenderer = ElementsRenderer;\r
+\r
+        JqTreeWidget.prototype.GhostDropHint = GhostDropHint;\r
+\r
+        JqTreeWidget.prototype.HitAreasGenerator = HitAreasGenerator;\r
+\r
+        JqTreeWidget.prototype.Node = Node;\r
+\r
+        JqTreeWidget.prototype.SaveStateHandler = SaveStateHandler;\r
+\r
+        JqTreeWidget.prototype.ScrollHandler = ScrollHandler;\r
+\r
+        JqTreeWidget.prototype.SelectNodeHandler = SelectNodeHandler;\r
+\r
+        JqTreeWidget.prototype.defaults = {\r
+            autoOpen: false,\r
+            saveState: false,\r
+            dragAndDrop: false,\r
+            selectable: true,\r
+            useContextMenu: true,\r
+            onCanSelectNode: null,\r
+            onSetStateFromStorage: null,\r
+            onGetStateFromStorage: null,\r
+            onCreateLi: null,\r
+            onIsMoveHandle: null,\r
+            onCanMove: null,\r
+            onCanMoveTo: null,\r
+            onLoadFailed: null,\r
+            autoEscape: true,\r
+            dataUrl: null,\r
+            closedIcon: null,\r
+            openedIcon: '&#x25bc;',\r
+            slide: true,\r
+            nodeClass: Node,\r
+            dataFilter: null,\r
+            keyboardSupport: true,\r
+            openFolderDelay: 500,\r
+            rtl: null,\r
+            onDragMove: null,\r
+            onDragStop: null,\r
+            buttonLeft: true,\r
+            onLoading: null\r
+        };\r
+\r
+        JqTreeWidget.prototype.toggle = function(node, slide) {\r
+            if (slide == null) {\r
+                slide = null;\r
+            }\r
+            if (slide === null) {\r
+                slide = this.options.slide;\r
+            }\r
+            if (node.is_open) {\r
+                this.closeNode(node, slide);\r
+            } else {\r
+                this.openNode(node, slide);\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.getTree = function() {\r
+            return this.tree;\r
+        };\r
+\r
+        JqTreeWidget.prototype.selectNode = function(node) {\r
+            this._selectNode(node, false);\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype._selectNode = function(node, must_toggle) {\r
+            var canSelect, deselected_node, openParents, saveState;\r
+            if (must_toggle == null) {\r
+                must_toggle = false;\r
+            }\r
+            if (!this.select_node_handler) {\r
+                return;\r
+            }\r
+            canSelect = (function(_this) {\r
+                return function() {\r
+                    if (_this.options.onCanSelectNode) {\r
+                        return _this.options.selectable && _this.options.onCanSelectNode(node);\r
+                    } else {\r
+                        return _this.options.selectable;\r
+                    }\r
+                };\r
+            })(this);\r
+            openParents = (function(_this) {\r
+                return function() {\r
+                    var parent;\r
+                    parent = node.parent;\r
+                    if (parent && parent.parent && !parent.is_open) {\r
+                        return _this.openNode(parent, false);\r
+                    }\r
+                };\r
+            })(this);\r
+            saveState = (function(_this) {\r
+                return function() {\r
+                    if (_this.options.saveState) {\r
+                        return _this.save_state_handler.saveState();\r
+                    }\r
+                };\r
+            })(this);\r
+            if (!node) {\r
+                this._deselectCurrentNode();\r
+                saveState();\r
+                return;\r
+            }\r
+            if (!canSelect()) {\r
+                return;\r
+            }\r
+            if (this.select_node_handler.isNodeSelected(node)) {\r
+                if (must_toggle) {\r
+                    this._deselectCurrentNode();\r
+                    this._triggerEvent('tree.select', {\r
+                        node: null,\r
+                        previous_node: node\r
+                    });\r
+                }\r
+            } else {\r
+                deselected_node = this.getSelectedNode();\r
+                this._deselectCurrentNode();\r
+                this.addToSelection(node);\r
+                this._triggerEvent('tree.select', {\r
+                    node: node,\r
+                    deselected_node: deselected_node\r
+                });\r
+                openParents();\r
+            }\r
+            return saveState();\r
+        };\r
+\r
+        JqTreeWidget.prototype.getSelectedNode = function() {\r
+            if (this.select_node_handler) {\r
+                return this.select_node_handler.getSelectedNode();\r
+            } else {\r
+                return null;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype.toJson = function() {\r
+            return JSON.stringify(this.tree.getData());\r
+        };\r
+\r
+        JqTreeWidget.prototype.loadData = function(data, parent_node) {\r
+            this._loadData(data, parent_node);\r
+            return this.element;\r
+        };\r
+\r
+\r
+        /*\r
+         signatures:\r
+         - loadDataFromUrl(url, parent_node=null, on_finished=null)\r
+         loadDataFromUrl('/my_data');\r
+         loadDataFromUrl('/my_data', node1);\r
+         loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\r
+         loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\r
+\r
+         - loadDataFromUrl(parent_node=null, on_finished=null)\r
+         loadDataFromUrl();\r
+         loadDataFromUrl(node1);\r
+         loadDataFromUrl(null, function() { console.log('finished'); });\r
+         loadDataFromUrl(node1, function() { console.log('finished'); });\r
+         */\r
+\r
+        JqTreeWidget.prototype.loadDataFromUrl = function(param1, param2, param3) {\r
+            if ($.type(param1) === 'string') {\r
+                this._loadDataFromUrl(param1, param2, param3);\r
+            } else {\r
+                this._loadDataFromUrl(null, param1, param2);\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.reload = function(on_finished) {\r
+            this._loadDataFromUrl(null, null, on_finished);\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype._loadDataFromUrl = function(url_info, parent_node, on_finished) {\r
+            var $el, addLoadingClass, handeLoadData, handleError, handleSuccess, loadDataFromUrlInfo, parseUrlInfo, removeLoadingClass;\r
+            $el = null;\r
+            addLoadingClass = (function(_this) {\r
+                return function() {\r
+                    if (parent_node) {\r
+                        $el = $(parent_node.element);\r
+                    } else {\r
+                        $el = _this.element;\r
+                    }\r
+                    $el.addClass('jqtree-loading');\r
+                    return _this._notifyLoading(true, parent_node, $el);\r
+                };\r
+            })(this);\r
+            removeLoadingClass = (function(_this) {\r
+                return function() {\r
+                    if ($el) {\r
+                        $el.removeClass('jqtree-loading');\r
+                        return _this._notifyLoading(false, parent_node, $el);\r
+                    }\r
+                };\r
+            })(this);\r
+            parseUrlInfo = function() {\r
+                if ($.type(url_info) === 'string') {\r
+                    return {\r
+                        url: url_info\r
+                    };\r
+                }\r
+                if (!url_info.method) {\r
+                    url_info.method = 'get';\r
+                }\r
+                return url_info;\r
+            };\r
+            handeLoadData = (function(_this) {\r
+                return function(data) {\r
+                    removeLoadingClass();\r
+                    _this._loadData(data, parent_node);\r
+                    if (on_finished && $.isFunction(on_finished)) {\r
+                        return on_finished();\r
+                    }\r
+                };\r
+            })(this);\r
+            handleSuccess = (function(_this) {\r
+                return function(response) {\r
+                    var data;\r
+                    if ($.isArray(response) || typeof response === 'object') {\r
+                        data = response;\r
+                    } else if (data != null) {\r
+                        data = $.parseJSON(response);\r
+                    } else {\r
+                        data = [];\r
+                    }\r
+                    if (_this.options.dataFilter) {\r
+                        data = _this.options.dataFilter(data);\r
+                    }\r
+                    return handeLoadData(data);\r
+                };\r
+            })(this);\r
+            handleError = (function(_this) {\r
+                return function(response) {\r
+                    removeLoadingClass();\r
+                    if (_this.options.onLoadFailed) {\r
+                        return _this.options.onLoadFailed(response);\r
+                    }\r
+                };\r
+            })(this);\r
+            loadDataFromUrlInfo = function() {\r
+                url_info = parseUrlInfo();\r
+                return $.ajax($.extend({}, url_info, {\r
+                    method: url_info.method != null ? url_info.method.toUpperCase() : 'GET',\r
+                    cache: false,\r
+                    dataType: 'json',\r
+                    success: handleSuccess,\r
+                    error: handleError\r
+                }));\r
+            };\r
+            if (!url_info) {\r
+                url_info = this._getDataUrlInfo(parent_node);\r
+            }\r
+            addLoadingClass();\r
+            if (!url_info) {\r
+                removeLoadingClass();\r
+            } else if ($.isArray(url_info)) {\r
+                handeLoadData(url_info);\r
+            } else {\r
+                loadDataFromUrlInfo();\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._loadData = function(data, parent_node) {\r
+            var deselectNodes, loadSubtree;\r
+            if (parent_node == null) {\r
+                parent_node = null;\r
+            }\r
+            deselectNodes = (function(_this) {\r
+                return function() {\r
+                    var i, len, n, selected_nodes_under_parent;\r
+                    if (_this.select_node_handler) {\r
+                        selected_nodes_under_parent = _this.select_node_handler.getSelectedNodesUnder(parent_node);\r
+                        for (i = 0, len = selected_nodes_under_parent.length; i < len; i++) {\r
+                            n = selected_nodes_under_parent[i];\r
+                            _this.select_node_handler.removeFromSelection(n);\r
+                        }\r
+                    }\r
+                    return null;\r
+                };\r
+            })(this);\r
+            loadSubtree = (function(_this) {\r
+                return function() {\r
+                    parent_node.loadFromData(data);\r
+                    parent_node.load_on_demand = false;\r
+                    parent_node.is_loading = false;\r
+                    return _this._refreshElements(parent_node);\r
+                };\r
+            })(this);\r
+            if (!data) {\r
+                return;\r
+            }\r
+            this._triggerEvent('tree.load_data', {\r
+                tree_data: data\r
+            });\r
+            if (!parent_node) {\r
+                this._initTree(data);\r
+            } else {\r
+                deselectNodes();\r
+                loadSubtree();\r
+            }\r
+            if (this.isDragging()) {\r
+                return this.dnd_handler.refresh();\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype.getNodeById = function(node_id) {\r
+            return this.tree.getNodeById(node_id);\r
+        };\r
+\r
+        JqTreeWidget.prototype.getNodeByName = function(name) {\r
+            return this.tree.getNodeByName(name);\r
+        };\r
+\r
+        JqTreeWidget.prototype.getNodesByProperty = function(key, value) {\r
+            return this.tree.getNodesByProperty(key, value);\r
+        };\r
+\r
+        JqTreeWidget.prototype.getNodeByHtmlElement = function(element) {\r
+            return this._getNode($(element));\r
+        };\r
+\r
+        JqTreeWidget.prototype.getNodeByCallback = function(callback) {\r
+            return this.tree.getNodeByCallback(callback);\r
+        };\r
+\r
+        JqTreeWidget.prototype.openNode = function(node, slide) {\r
+            if (slide == null) {\r
+                slide = null;\r
+            }\r
+            if (node) {\r
+                if (slide === null) {\r
+                    slide = this.options.slide;\r
+                }\r
+                this._openNode(node, slide);\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype._openNode = function(node, slide, on_finished) {\r
+            var doOpenNode, parent;\r
+            if (slide == null) {\r
+                slide = true;\r
+            }\r
+            doOpenNode = (function(_this) {\r
+                return function(_node, _slide, _on_finished) {\r
+                    var folder_element;\r
+                    folder_element = new FolderElement(_node, _this);\r
+                    return folder_element.open(_on_finished, _slide);\r
+                };\r
+            })(this);\r
+            if (node.isFolder()) {\r
+                if (node.load_on_demand) {\r
+                    return this._loadFolderOnDemand(node, slide, on_finished);\r
+                } else {\r
+                    parent = node.parent;\r
+                    while (parent) {\r
+                        if (parent.parent) {\r
+                            doOpenNode(parent, false, null);\r
+                        }\r
+                        parent = parent.parent;\r
+                    }\r
+                    doOpenNode(node, slide, on_finished);\r
+                    return this._saveState();\r
+                }\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._loadFolderOnDemand = function(node, slide, on_finished) {\r
+            if (slide == null) {\r
+                slide = true;\r
+            }\r
+            node.is_loading = true;\r
+            return this._loadDataFromUrl(null, node, (function(_this) {\r
+                return function() {\r
+                    return _this._openNode(node, slide, on_finished);\r
+                };\r
+            })(this));\r
+        };\r
+\r
+        JqTreeWidget.prototype.closeNode = function(node, slide) {\r
+            if (slide == null) {\r
+                slide = null;\r
+            }\r
+            if (slide === null) {\r
+                slide = this.options.slide;\r
+            }\r
+            if (node.isFolder()) {\r
+                new FolderElement(node, this).close(slide);\r
+                this._saveState();\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.isDragging = function() {\r
+            if (this.dnd_handler) {\r
+                return this.dnd_handler.is_dragging;\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype.refreshHitAreas = function() {\r
+            this.dnd_handler.refresh();\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.addNodeAfter = function(new_node_info, existing_node) {\r
+            var new_node;\r
+            new_node = existing_node.addAfter(new_node_info);\r
+            this._refreshElements(existing_node.parent);\r
+            return new_node;\r
+        };\r
+\r
+        JqTreeWidget.prototype.addNodeBefore = function(new_node_info, existing_node) {\r
+            var new_node;\r
+            new_node = existing_node.addBefore(new_node_info);\r
+            this._refreshElements(existing_node.parent);\r
+            return new_node;\r
+        };\r
+\r
+        JqTreeWidget.prototype.addParentNode = function(new_node_info, existing_node) {\r
+            var new_node;\r
+            new_node = existing_node.addParent(new_node_info);\r
+            this._refreshElements(new_node.parent);\r
+            return new_node;\r
+        };\r
+\r
+        JqTreeWidget.prototype.removeNode = function(node) {\r
+            var parent;\r
+            parent = node.parent;\r
+            if (parent) {\r
+                this.select_node_handler.removeFromSelection(node, true);\r
+                node.remove();\r
+                this._refreshElements(parent);\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.appendNode = function(new_node_info, parent_node) {\r
+            var node;\r
+            parent_node = parent_node || this.tree;\r
+            node = parent_node.append(new_node_info);\r
+            this._refreshElements(parent_node);\r
+            return node;\r
+        };\r
+\r
+        JqTreeWidget.prototype.prependNode = function(new_node_info, parent_node) {\r
+            var node;\r
+            if (!parent_node) {\r
+                parent_node = this.tree;\r
+            }\r
+            node = parent_node.prepend(new_node_info);\r
+            this._refreshElements(parent_node);\r
+            return node;\r
+        };\r
+\r
+        JqTreeWidget.prototype.updateNode = function(node, data) {\r
+            var id_is_changed;\r
+            id_is_changed = data.id && data.id !== node.id;\r
+            if (id_is_changed) {\r
+                this.tree.removeNodeFromIndex(node);\r
+            }\r
+            node.setData(data);\r
+            if (id_is_changed) {\r
+                this.tree.addNodeToIndex(node);\r
+            }\r
+            if (typeof data === 'object' && data.children) {\r
+                node.removeChildren();\r
+                if (data.children.length) {\r
+                    node.loadFromData(data.children);\r
+                }\r
+            }\r
+            this.renderer.renderFromNode(node);\r
+            this._selectCurrentNode();\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.moveNode = function(node, target_node, position) {\r
+            var position_index;\r
+            position_index = Position.nameToIndex(position);\r
+            this.tree.moveNode(node, target_node, position_index);\r
+            this._refreshElements();\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.getStateFromStorage = function() {\r
+            return this.save_state_handler.getStateFromStorage();\r
+        };\r
+\r
+        JqTreeWidget.prototype.addToSelection = function(node) {\r
+            if (node) {\r
+                this.select_node_handler.addToSelection(node);\r
+                this._getNodeElementForNode(node).select();\r
+                this._saveState();\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.getSelectedNodes = function() {\r
+            return this.select_node_handler.getSelectedNodes();\r
+        };\r
+\r
+        JqTreeWidget.prototype.isNodeSelected = function(node) {\r
+            return this.select_node_handler.isNodeSelected(node);\r
+        };\r
+\r
+        JqTreeWidget.prototype.removeFromSelection = function(node) {\r
+            this.select_node_handler.removeFromSelection(node);\r
+            this._getNodeElementForNode(node).deselect();\r
+            this._saveState();\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.scrollToNode = function(node) {\r
+            var $element, top;\r
+            $element = $(node.element);\r
+            top = $element.offset().top - this.$el.offset().top;\r
+            this.scroll_handler.scrollTo(top);\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.getState = function() {\r
+            return this.save_state_handler.getState();\r
+        };\r
+\r
+        JqTreeWidget.prototype.setState = function(state) {\r
+            this.save_state_handler.setInitialState(state);\r
+            this._refreshElements();\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.setOption = function(option, value) {\r
+            this.options[option] = value;\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.moveDown = function() {\r
+            if (this.key_handler) {\r
+                this.key_handler.moveDown();\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.moveUp = function() {\r
+            if (this.key_handler) {\r
+                this.key_handler.moveUp();\r
+            }\r
+            return this.element;\r
+        };\r
+\r
+        JqTreeWidget.prototype.getVersion = function() {\r
+            return __version__;\r
+        };\r
+\r
+        JqTreeWidget.prototype._init = function() {\r
+            JqTreeWidget.__super__._init.call(this);\r
+            this.element = this.$el;\r
+            this.mouse_delay = 300;\r
+            this.is_initialized = false;\r
+            this.options.rtl = this._getRtlOption();\r
+            if (!this.options.closedIcon) {\r
+                this.options.closedIcon = this._getDefaultClosedIcon();\r
+            }\r
+            this.renderer = new ElementsRenderer(this);\r
+            if (SaveStateHandler != null) {\r
+                this.save_state_handler = new SaveStateHandler(this);\r
+            } else {\r
+                this.options.saveState = false;\r
+            }\r
+            if (SelectNodeHandler != null) {\r
+                this.select_node_handler = new SelectNodeHandler(this);\r
+            }\r
+            if (DragAndDropHandler != null) {\r
+                this.dnd_handler = new DragAndDropHandler(this);\r
+            } else {\r
+                this.options.dragAndDrop = false;\r
+            }\r
+            if (ScrollHandler != null) {\r
+                this.scroll_handler = new ScrollHandler(this);\r
+            }\r
+            if ((KeyHandler != null) && (SelectNodeHandler != null)) {\r
+                this.key_handler = new KeyHandler(this);\r
+            }\r
+            this._initData();\r
+            this.element.click($.proxy(this._click, this));\r
+            this.element.dblclick($.proxy(this._dblclick, this));\r
+            if (this.options.useContextMenu) {\r
+                return this.element.bind('contextmenu', $.proxy(this._contextmenu, this));\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._deinit = function() {\r
+            this.element.empty();\r
+            this.element.unbind();\r
+            if (this.key_handler) {\r
+                this.key_handler.deinit();\r
+            }\r
+            this.tree = null;\r
+            return JqTreeWidget.__super__._deinit.call(this);\r
+        };\r
+\r
+        JqTreeWidget.prototype._initData = function() {\r
+            var data_url;\r
+            if (this.options.data) {\r
+                return this._loadData(this.options.data);\r
+            } else {\r
+                data_url = this._getDataUrlInfo();\r
+                if (data_url) {\r
+                    return this._loadDataFromUrl();\r
+                } else {\r
+                    return this._loadData([]);\r
+                }\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getDataUrlInfo = function(node) {\r
+            var data_url, getUrlFromString;\r
+            data_url = this.options.dataUrl || this.element.data('url');\r
+            getUrlFromString = (function(_this) {\r
+                return function() {\r
+                    var data, selected_node_id, url_info;\r
+                    url_info = {\r
+                        url: data_url\r
+                    };\r
+                    if (node && node.id) {\r
+                        data = {\r
+                            node: node.id\r
+                        };\r
+                        url_info['data'] = data;\r
+                    } else {\r
+                        selected_node_id = _this._getNodeIdToBeSelected();\r
+                        if (selected_node_id) {\r
+                            data = {\r
+                                selected_node: selected_node_id\r
+                            };\r
+                            url_info['data'] = data;\r
+                        }\r
+                    }\r
+                    return url_info;\r
+                };\r
+            })(this);\r
+            if ($.isFunction(data_url)) {\r
+                return data_url(node);\r
+            } else if ($.type(data_url) === 'string') {\r
+                return getUrlFromString();\r
+            } else {\r
+                return data_url;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getNodeIdToBeSelected = function() {\r
+            if (this.options.saveState) {\r
+                return this.save_state_handler.getNodeIdToBeSelected();\r
+            } else {\r
+                return null;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._initTree = function(data) {\r
+            var doInit, must_load_on_demand;\r
+            doInit = (function(_this) {\r
+                return function() {\r
+                    if (!_this.is_initialized) {\r
+                        _this.is_initialized = true;\r
+                        return _this._triggerEvent('tree.init');\r
+                    }\r
+                };\r
+            })(this);\r
+            this.tree = new this.options.nodeClass(null, true, this.options.nodeClass);\r
+            if (this.select_node_handler) {\r
+                this.select_node_handler.clear();\r
+            }\r
+            this.tree.loadFromData(data);\r
+            must_load_on_demand = this._setInitialState();\r
+            this._refreshElements();\r
+            if (!must_load_on_demand) {\r
+                return doInit();\r
+            } else {\r
+                return this._setInitialStateOnDemand(doInit);\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._setInitialState = function() {\r
+            var autoOpenNodes, is_restored, must_load_on_demand, ref1, restoreState;\r
+            restoreState = (function(_this) {\r
+                return function() {\r
+                    var must_load_on_demand, state;\r
+                    if (!(_this.options.saveState && _this.save_state_handler)) {\r
+                        return [false, false];\r
+                    } else {\r
+                        state = _this.save_state_handler.getStateFromStorage();\r
+                        if (!state) {\r
+                            return [false, false];\r
+                        } else {\r
+                            must_load_on_demand = _this.save_state_handler.setInitialState(state);\r
+                            return [true, must_load_on_demand];\r
+                        }\r
+                    }\r
+                };\r
+            })(this);\r
+            autoOpenNodes = (function(_this) {\r
+                return function() {\r
+                    var max_level, must_load_on_demand;\r
+                    if (_this.options.autoOpen === false) {\r
+                        return false;\r
+                    }\r
+                    max_level = _this._getAutoOpenMaxLevel();\r
+                    must_load_on_demand = false;\r
+                    _this.tree.iterate(function(node, level) {\r
+                        if (node.load_on_demand) {\r
+                            must_load_on_demand = true;\r
+                            return false;\r
+                        } else if (!node.hasChildren()) {\r
+                            return false;\r
+                        } else {\r
+                            node.is_open = true;\r
+                            return level !== max_level;\r
+                        }\r
+                    });\r
+                    return must_load_on_demand;\r
+                };\r
+            })(this);\r
+            ref1 = restoreState(), is_restored = ref1[0], must_load_on_demand = ref1[1];\r
+            if (!is_restored) {\r
+                must_load_on_demand = autoOpenNodes();\r
+            }\r
+            return must_load_on_demand;\r
+        };\r
+\r
+        JqTreeWidget.prototype._setInitialStateOnDemand = function(cb_finished) {\r
+            var autoOpenNodes, restoreState;\r
+            restoreState = (function(_this) {\r
+                return function() {\r
+                    var state;\r
+                    if (!(_this.options.saveState && _this.save_state_handler)) {\r
+                        return false;\r
+                    } else {\r
+                        state = _this.save_state_handler.getStateFromStorage();\r
+                        if (!state) {\r
+                            return false;\r
+                        } else {\r
+                            _this.save_state_handler.setInitialStateOnDemand(state, cb_finished);\r
+                            return true;\r
+                        }\r
+                    }\r
+                };\r
+            })(this);\r
+            autoOpenNodes = (function(_this) {\r
+                return function() {\r
+                    var loadAndOpenNode, loading_count, max_level, openNodes;\r
+                    max_level = _this._getAutoOpenMaxLevel();\r
+                    loading_count = 0;\r
+                    loadAndOpenNode = function(node) {\r
+                        loading_count += 1;\r
+                        return _this._openNode(node, false, function() {\r
+                            loading_count -= 1;\r
+                            return openNodes();\r
+                        });\r
+                    };\r
+                    openNodes = function() {\r
+                        _this.tree.iterate(function(node, level) {\r
+                            if (node.load_on_demand) {\r
+                                if (!node.is_loading) {\r
+                                    loadAndOpenNode(node);\r
+                                }\r
+                                return false;\r
+                            } else {\r
+                                _this._openNode(node, false);\r
+                                return level !== max_level;\r
+                            }\r
+                        });\r
+                        if (loading_count === 0) {\r
+                            return cb_finished();\r
+                        }\r
+                    };\r
+                    return openNodes();\r
+                };\r
+            })(this);\r
+            if (!restoreState()) {\r
+                return autoOpenNodes();\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getAutoOpenMaxLevel = function() {\r
+            if (this.options.autoOpen === true) {\r
+                return -1;\r
+            } else {\r
+                return parseInt(this.options.autoOpen);\r
+            }\r
+        };\r
+\r
+\r
+        /*\r
+         Redraw the tree or part of the tree.\r
+         * from_node: redraw this subtree\r
+         */\r
+\r
+        JqTreeWidget.prototype._refreshElements = function(from_node) {\r
+            if (from_node == null) {\r
+                from_node = null;\r
+            }\r
+            this.renderer.render(from_node);\r
+            return this._triggerEvent('tree.refresh');\r
+        };\r
+\r
+        JqTreeWidget.prototype._click = function(e) {\r
+            var click_target, event, node;\r
+            click_target = this._getClickTarget(e.target);\r
+            if (click_target) {\r
+                if (click_target.type === 'button') {\r
+                    this.toggle(click_target.node, this.options.slide);\r
+                    e.preventDefault();\r
+                    return e.stopPropagation();\r
+                } else if (click_target.type === 'label') {\r
+                    node = click_target.node;\r
+                    event = this._triggerEvent('tree.click', {\r
+                        node: node,\r
+                        click_event: e\r
+                    });\r
+                    if (!event.isDefaultPrevented()) {\r
+                        return this._selectNode(node, true);\r
+                    }\r
+                }\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._dblclick = function(e) {\r
+            var click_target;\r
+            click_target = this._getClickTarget(e.target);\r
+            if (click_target && click_target.type === 'label') {\r
+                return this._triggerEvent('tree.dblclick', {\r
+                    node: click_target.node,\r
+                    click_event: e\r
+                });\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getClickTarget = function(element) {\r
+            var $button, $el, $target, node;\r
+            $target = $(element);\r
+            $button = $target.closest('.jqtree-toggler');\r
+            if ($button.length) {\r
+                node = this._getNode($button);\r
+                if (node) {\r
+                    return {\r
+                        type: 'button',\r
+                        node: node\r
+                    };\r
+                }\r
+            } else {\r
+                $el = $target.closest('.jqtree-element');\r
+                if ($el.length) {\r
+                    node = this._getNode($el);\r
+                    if (node) {\r
+                        return {\r
+                            type: 'label',\r
+                            node: node\r
+                        };\r
+                    }\r
+                }\r
+            }\r
+            return null;\r
+        };\r
+\r
+        JqTreeWidget.prototype._getNode = function($element) {\r
+            var $li;\r
+            $li = $element.closest('li.jqtree_common');\r
+            if ($li.length === 0) {\r
+                return null;\r
+            } else {\r
+                return $li.data('node');\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getNodeElementForNode = function(node) {\r
+            if (node.isFolder()) {\r
+                return new FolderElement(node, this);\r
+            } else {\r
+                return new NodeElement(node, this);\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getNodeElement = function($element) {\r
+            var node;\r
+            node = this._getNode($element);\r
+            if (node) {\r
+                return this._getNodeElementForNode(node);\r
+            } else {\r
+                return null;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._contextmenu = function(e) {\r
+            var $div, node;\r
+            $div = $(e.target).closest('ul.jqtree-tree .jqtree-element');\r
+            if ($div.length) {\r
+                node = this._getNode($div);\r
+                if (node) {\r
+                    e.preventDefault();\r
+                    e.stopPropagation();\r
+                    this._triggerEvent('tree.contextmenu', {\r
+                        node: node,\r
+                        click_event: e\r
+                    });\r
+                    return false;\r
+                }\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._saveState = function() {\r
+            if (this.options.saveState) {\r
+                return this.save_state_handler.saveState();\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._mouseCapture = function(position_info) {\r
+            if (this.options.dragAndDrop) {\r
+                return this.dnd_handler.mouseCapture(position_info);\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._mouseStart = function(position_info) {\r
+            if (this.options.dragAndDrop) {\r
+                return this.dnd_handler.mouseStart(position_info);\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._mouseDrag = function(position_info) {\r
+            var result;\r
+            if (this.options.dragAndDrop) {\r
+                result = this.dnd_handler.mouseDrag(position_info);\r
+                if (this.scroll_handler) {\r
+                    this.scroll_handler.checkScrolling();\r
+                }\r
+                return result;\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._mouseStop = function(position_info) {\r
+            if (this.options.dragAndDrop) {\r
+                return this.dnd_handler.mouseStop(position_info);\r
+            } else {\r
+                return false;\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._triggerEvent = function(event_name, values) {\r
+            var event;\r
+            event = $.Event(event_name);\r
+            $.extend(event, values);\r
+            this.element.trigger(event);\r
+            return event;\r
+        };\r
+\r
+        JqTreeWidget.prototype.testGenerateHitAreas = function(moving_node) {\r
+            this.dnd_handler.current_item = this._getNodeElementForNode(moving_node);\r
+            this.dnd_handler.generateHitAreas();\r
+            return this.dnd_handler.hit_areas;\r
+        };\r
+\r
+        JqTreeWidget.prototype._selectCurrentNode = function() {\r
+            var node, node_element;\r
+            node = this.getSelectedNode();\r
+            if (node) {\r
+                node_element = this._getNodeElementForNode(node);\r
+                if (node_element) {\r
+                    return node_element.select();\r
+                }\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._deselectCurrentNode = function() {\r
+            var node;\r
+            node = this.getSelectedNode();\r
+            if (node) {\r
+                return this.removeFromSelection(node);\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getDefaultClosedIcon = function() {\r
+            if (this.options.rtl) {\r
+                return '&#x25c0;';\r
+            } else {\r
+                return '&#x25ba;';\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._getRtlOption = function() {\r
+            var data_rtl;\r
+            if (this.options.rtl !== null) {\r
+                return this.options.rtl;\r
+            } else {\r
+                data_rtl = this.element.data('rtl');\r
+                if ((data_rtl != null) && data_rtl !== false) {\r
+                    return true;\r
+                } else {\r
+                    return false;\r
+                }\r
+            }\r
+        };\r
+\r
+        JqTreeWidget.prototype._notifyLoading = function(is_loading, node, $el) {\r
+            if (this.options.onLoading) {\r
+                return this.options.onLoading(is_loading, node, $el);\r
+            }\r
+        };\r
+\r
+        return JqTreeWidget;\r
+\r
+    })(MouseWidget);\r
+\r
+    JqTreeWidget.getModule = function(name) {\r
+        var modules;\r
+        modules = {\r
+            'node': node_module,\r
+            'util': util_module,\r
+            'drag_and_drop_handler': drag_and_drop_handler\r
+        };\r
+        return modules[name];\r
+    };\r
+\r
+    SimpleWidget.register(JqTreeWidget, 'tree');\r
+\r
+},{"./drag_and_drop_handler":1,"./elements_renderer":2,"./key_handler":3,"./mouse.widget":4,"./node":5,"./node_element":6,"./save_state_handler":7,"./scroll_handler":8,"./select_node_handler":9,"./simple.widget":10,"./util":12,"./version":13}],12:[function(require,module,exports){\r
+    var _indexOf, getBoolString, html_escape, indexOf, isInt;\r
+\r
+    _indexOf = function(array, item) {\r
+        var i, j, len, value;\r
+        for (i = j = 0, len = array.length; j < len; i = ++j) {\r
+            value = array[i];\r
+            if (value === item) {\r
+                return i;\r
+            }\r
+        }\r
+        return -1;\r
+    };\r
+\r
+    indexOf = function(array, item) {\r
+        if (array.indexOf) {\r
+            return array.indexOf(item);\r
+        } else {\r
+            return _indexOf(array, item);\r
+        }\r
+    };\r
+\r
+    isInt = function(n) {\r
+        return typeof n === 'number' && n % 1 === 0;\r
+    };\r
+\r
+    html_escape = function(string) {\r
+        return ('' + string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g, '&#x2F;');\r
+    };\r
+\r
+    getBoolString = function(value) {\r
+        if (value) {\r
+            return 'true';\r
+        } else {\r
+            return 'false';\r
+        }\r
+    };\r
+\r
+    module.exports = {\r
+        _indexOf: _indexOf,\r
+        getBoolString: getBoolString,\r
+        html_escape: html_escape,\r
+        indexOf: indexOf,\r
+        isInt: isInt\r
+    };\r
+\r
+},{}],13:[function(require,module,exports){\r
+    module.exports = '1.3.6';\r
+\r
+},{}]},{},[11]);
\ No newline at end of file