vesh-vj
Version:
VESH's JavaScript Framework
2 lines • 87.3 kB
JavaScript
window.console=console||{log:function(e){}},Array.prototype.forEach=Array.prototype.forEach||function(e){VJ.each(this,e,null,!0)},top.location==location?VJ=window.top.VJ?window.top.VJ:{load:!1,cross:!1}:VJ=window.VJ?window.VJ:{load:!1,cross:!0},VJ.load||function(V,$){function _V_(){}function _V_AppendScript(e,t){var n=navigator.userAgent.toLowerCase(),a=n.indexOf("opera")>-1,o=!a&&n.indexOf("msie")>-1,r=document.getElementsByTagName("head")[0]||document.documentElement,i=document.createElement("script");i.type="text/javascript",o?i.text=e:i.appendChild(document.createTextNode(e)),r.insertBefore(i,r.firstChild),r.removeChild(i),t&&t(i)}V.load=!0,V.isValid=function(e){return void 0!==e&&null!=e&&"null"!=e&&!1!==e&&(e.replace&&e.replace(/\s/g,"").length>0||void 0==e.replace)},V.getValue=function(e,t){return V.isValid(e)?e:t},V.isDebug=!0,V.showException=function(e,t){if(V.isDebug){var n=e;V.isValid(t)&&(n+="\r\nmessage:"+t.message+(t.stack?"\r\nstack:"+t.stack+(t.fileName?"\r\nfile:"+t.fileName:"")+(t.lineNumber?"\r\nlineNumber:"+t.lineNumber:""):t.description?"\r\ndescription:"+t.description:"")),console.log("未捕获异常:"+n+"\r\n")}};var showException2=function(e){V.showException("",e)};V.tryC=function(e,t){t=t||showException2;try{return e()}catch(e){try{t(e)}catch(t){showException2(e)}return!1}},V.tryC2=function(e,t,n){return e?(n||showException2)(e):V.tryC(t,n)};var start=null,funrep1=function(e,t){var n=/<%=[^(%>)]+%>/gi;return e.replace(n,function(e){var n=e.replace(/<%=/g,"").replace(/%>/g,"");return V.isValid(t[n])?t[n]:""})},funrep2=function(e,t){var n=/\{[^(})]+\}/gi;return e.replace(n,function(e){var n=e.replace(/\{/g,"").replace(/\}/g,"");return V.isValid(t[n])?t[n]:""})};V.format=function(e,t){return e&&t?(e.indexOf(!1)&&(e=funrep1(e,t)),e.indexOf(!1)&&(e=funrep2(e,t)),e):V.getValue(e,"")};var sb=function(){var e=this;e.data=[],e._length=0,e._append=function(t){e.data[e.data.length]=t,e._length+=t.length}};sb.prototype.append=function(e){var t=this,n=this;return e=V.isValid(e)?n._append(e):"",t},sb.prototype.appendFormat=function(e,t){var n=this;return n.append(V.format(e,t))},sb.prototype.insert=function(e,t){var n=this,a=this,o=n.toString();return t=t||"",a.data=[o.substr(0,e),t,o.substr(e)],a._length=o.length+t.length,n},sb.prototype.insertFormat=function(e,t,n){var a=this;return a.insert(e,V.format(t,n))},sb.prototype.remove=function(e,t){var n=this,a=this,o=n.toString();return a.data=[o.substr(0,e),o.substr(e+t)],a._length=Math.max(0,o.length-t),n},sb.prototype.toString=function(){var e=this;return e.data=[e.data.join("")],e.data[0]},sb.prototype.clear=function(){var e=this,t=this,n=e.toString();return t.data=[],t._length=0,n},sb.prototype.length=function(){return this._length},V.sb=function(){return new sb},V.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},V.once=function(e,t){t=t||1,e.timeoutID&&window.clearTimeout(e.timeoutID),e.timeoutID=window.setTimeout(function(){V.tryC(e)},t)};var emptyfunc=function(){return!1},syncfunc=function(e,t,n,a){for(;a;){try{t(a)}catch(e){showException2(e)}a=e()}try{n&&n()}catch(e){showException2(e)}},asyncfunc=function(e,t,n,a){V.once(function(){var o=a?{func:t,val:e(),next:asyncfunc}:{func:n||emptyfunc,next:emptyfunc};try{o.func(a)}catch(e){showException2(e)}o.next(e,t,n,o.val)})};V.whileC=function(e,t,n,a){a?syncfunc(e,t,n,e()):asyncfunc(e,t,n,e())};var syncfunc2=function(e,t,n,a){for(var o=!1;a;){try{o=t(a,function(){syncfunc2(e,t,n,e())})}catch(e){showException2(e)}a=!0===o||void 0===o?null:e()}try{n&&void 0!==o&&n()}catch(e){showException2(e)}},asyncfunc2=function(e,t,n,a){V.once(function(){var o=a?{func:t,val:e(),next:asyncfunc2}:{func:n||emptyfunc,next:emptyfunc};try{var r=function(){o.next(e,t,n,o.val)},i=o.func(a,r);!0===i?o.next(e,t,n,!1):void 0!==i&&r()}catch(a){V.showException("",a),o.next(e,t,n,o.val)}})};V.whileC2=function(e,t,n,a){a?syncfunc2(e,t,n,e()):asyncfunc2(e,t,n,e())},V.each=function(e,t,n,a){var o=0;e=Array.prototype.slice.call(e,0),V.whileC(function(){return e[o++]},t,n,a)},V.each2=function(e,t,n,a){var o=0;e=Array.prototype.slice.call(e,0),V.whileC2(function(){return e[o++]},t,n,a)};var forfunc=function(e,t){return t(e.key,e.value)};V.forC=function(e,t,n,a){var o=[],r=emptyfunc,i=0;if(t){for(var s in e)o[i++]={key:s,value:e[s]};i=0,r=function(){return o[i++]}}V.whileC(r,function(e){return forfunc(e,t)},n,a)};var forfunc2=function(e,t,n){return t(e.key,e.value,n)};V.forC2=function(e,t,n,a){var o=[],r=emptyfunc,i=0;if(t){for(var s in e)o[i++]={key:s,value:e[s]};i=0,r=function(){return o[i++]}}V.whileC2(r,function(e,n){return forfunc2(e,t,n)},n,a)},V.finalC=function(){for(var e=[],t=0;t<arguments.length;t++)"function"==typeof arguments[t]&&(e[e.length]={key:e.length,func:arguments[t]});if(e.length>1){var n={},a=e.length>0?e.pop().func:null,o=e.length,r={},i=function(e){r[e]=!0;var t=0;for(var i in r)t++;t==o&&a.apply(null,[n])};V.each(e,function(e){var t=e;t.func.apply(null,[n,function(){i(t.key)}])})}else a.apply(null,[{}])},V.next=function(){var e=0,t=arguments,n={};V.whileC2(function(){return t[e++]},function(e,t){return(e||t||emptyfunc)(n,t)})};var emptyfunc=function(){};V.callback=function(e,t,n){V.tryC(function(){var a=n||emptyfunc;t=t||[],t.push(a);var o=e.apply(null,t);switch(typeof o){case"function":o(null,a);break;case"undefined":break;default:a.apply(null,o.length?o:[null,o])}},n)},V.getType=function(e){if(null==e)return"null";var t=typeof e;if("object"!=t&&"Object"!=t)return t;if(V.isArray(e))return"Array";var n=Object.prototype.toString.apply(e);return n=n.substring(8,n.length-1),"Object"!=n?n:e.constructor==Object?n:e.prototype&&"classname"in e.prototype.constructor&&"string"==typeof e.prototype.constructor.classname?e.constructor.prototype.classname:"ukObject"},V.inherit=function(e,t){var n=function(){var t=function(){};return t.prototype=e.prototype,t.prototype.isF=!0,new t}();n.constructor=e,this.prototype?(console.log("如果失败,需要配合子类构造函数中使用parent.apply(this,[***])"),this.prototype=n):(e.apply(this,t),this.__proto__&&!this.__proto__.isF&&(this.__proto__.constructor.prototype=n.__proto__.constructor.prototype),this.__proto__=n,this.base=this.__proto__.constructor.prototype)},V.inherit2=function(e,t,n){var a=function(){};a.prototype=t.prototype,e.prototype=new a,e.inherits2=!0;for(var o in t.prototype)e[o]=t.prototype[o];for(var o in n)e.prototype[o]=n[o]},V.create2=function(e,t){if("function"==typeof e)return t=V.isArray(t)?t:[t],function(){var n=function(){e.apply(this,t)};return V.inherit2(n,e,{}),new n}();V.showException("请传入类定义")},V.create3=function(type,args){var ret="(new "+type+"(";if(V.isArray(args)){for(var i in args)ret+="args["+i+"],";args.length>0&&(ret=ret.substr(0,ret.length-1))}return eval(ret+"))")};var _clone=function(e){switch(V.getType(e)){case"Object":case"object":case"ukObject":return _merge({},e);case"array":case"Array":var t=[];for(var n in e)t.push(_clone(e[n]));return t;default:return e}},_merge=function(e,t){if(void 0==e)return _clone(t);switch(V.getType(t)){case"Array":for(var n=!1,a=0,o=t[a];a<t.length;a++,o=t[a])null!==o&&void 0!==o&&("number"==typeof o.mergeIndex?(n=!0,e.length<o.mergeIndex+1?e[e.length]=o:e[a]=_merge(e[a],o)):"number"==typeof o.moveIndex&&(n=!0,e.splice(o.moveIndex,0,o)));return n||(e=_clone(t)),e;case"object":case"Object":case"ukObject":if("string"==typeof e)return t;for(var r in t)e[r]=_merge(e[r],t[r]);return e;case"null":return void 0===t?e:t;default:return t}};V.merge=function(){var e=arguments;if(e.length<2)return e[0]?e[0]:{};if(e.length>0&&1==e[e.length-1]){for(var t=e[0],n=1;n<e.length-1;n++)t=_merge(t,e[n]);return t}for(var t={},n=0;n<e.length;n++)t=_merge(t,e[n]);return t},V.userAgent={ie:!1,firefox:!1,chrome:!1,safari:!1,opera:!1,mobile:!1,pc:!1,pad:!1,iphone:!1,android:!1,refresh:function(){V.userAgent.width=function(){return document.body&&document.body.clientWidth>0?document.body.clientWidth:document.documentElement.clientWidth}(),V.userAgent.height=function(){return document.body&&document.body.clientHeight>0?document.body.clientHeight:document.documentElement.clientHeight}()}},V.userAgent.refresh();var ua=navigator.userAgent.toLowerCase(),s;(s=ua.match(/msie ([\d]+)/))?V.userAgent.ie=s[1]:(s=ua.match(/firefox\/([\d.]+)/))?V.userAgent.firefox=s[1]:(s=ua.match(/chrome\/([\d.]+)/))?V.userAgent.chrome=s[1]:(s=ua.match(/opera.([\d.]+)/))?V.userAgent.opera=s[1]:(s=ua.match(/version\/([\d.]+).*safari/))&&(V.userAgent.safari=s[1]),!!(s=ua.match(/(mobile)/))&&(V.userAgent.mobile=!0),!!(s=ua.match(/(ipad)|(mediapad)/))&&(V.userAgent.pad=!0,V.userAgent.mobile=!1),!!(s=ua.match(/(android)|(linux)/))&&(V.userAgent.android=!0),!!(s=ua.match(/(iphone)|(mac)/))&&(V.userAgent.iphone=!0),V.userAgent.pc=!(V.userAgent.mobile||V.userAgent.pad);for(var key in V.userAgent)"pc"!=key&&"width"!=key&&"height"!=key&&"refresh"!=key&&V.getValue(V.userAgent[key],!1)&&(V.userAgent.name=key);if(console.log("VJ.userAgent:"+V.userAgent.name),V.getValue(V.userAgent.ie,!1)){var ver=V.userAgent.ie;eval("VJ.userAgent.ie"+ver+" = true;V.userAgent.name='ie"+ver+"';")}var __s=null;V.watch=function(e){return!__s||e?(__s=new Date,console.log("VJ.watch开始"+__s)):console.log("VJ.watch 持续了:"+__s.diff("ms",new Date)),__s.diff("ms",new Date)},V.newEl=function(e,t,n){var a=$(document.createElement(e));return""!=n&&a.html(n),""!=t&&a.addClass(t),a},V.encHtml=function(e){var t={"(":"%28",")":"%29","*":"%2a","'":"%27",".":"%2e","-":"%2d",_:"%5f"};return V.getValue(e,"").replace(/[\r\n]+/g,">v>j>").replace(/\s+/g," ").replace(/>v>j>/g,"\r\n").replace(/<|>|~|(\r\n)|!|@|#|\$|%|\^|;|&|\*|\(|\)|_|\+|{|}|\||:|\"|\?|`|\-|=|\[|\]|\\|;|\'|,|\.|\/|,|;/g,function(e){return t[e]||encodeURIComponent(e)})},V.decHtml=function(e){return decodeURIComponent(e||"")},V.setChecked=function(e,t){function n(e,t){if($(e).attr("checked",t),V.userAgent.ie6||V.userAgent.ie7){var n=$(e);V.isValid(n.get(0))&&(n.get(0).defaultChecked=t,n.get(0).checked=t)}}e.length?$(e).each(function(e,a){n(a,t)}):n(e,t)},V.getChecked=function(e){return V.userAgent.ie6||V.userAgent.ie7?V.isValid(e.get(0))?e.get(0).checked:null:e.prop?e.prop("checked"):e.attr("checked")},V.maxlength=function(){$("textarea[maxlength]").unbind("change").change(function(e){var t=$(this);t.val(t.val.substring(0,t.attr("maxlength")))})},V._settings={},V._exSettings={},V.getSettings=function(e,t){return V.isValid(V._settings[e])||(V.isValid(V._exSettings[e])?(V._settings[e]=V.merge(V.getValue(t,{}),V._exSettings[e]),delete V._exSettings[e]):V._settings[e]=V.getValue(t,{})),V._settings[e]},V.extendSettings=function(e,t){V.isValid(V._settings[e])?V._settings[e]=V.merge(V._settings[e],t):V.exSettings[e]?V._exSettings[e]=V.merge(V._exSettings[e],V.getValue(t,{})):V._exSettings[e]=V.getValue(t,{})},V.evalTJson=function(e){e=e[0];var t=[];for(var n in e){var a=e[n];t[n]=function(e){var t=[];return $(e).each(function(n,a){if(0!=n){var o={};$(a).each(function(t,n){o[e[0][t]]=n}),t[n-1]=o}}),t}(a)}return t};var checkValue=function(e){switch(typeof e){case"number":case"boolean":return e;case"undefined":case"object":return'""';default:return'"'+e+'"'}};V.toTJson=function(e){if(e){V.isArray(e)||(e=[e]);var t=[];if(V.isArray(e)&&e[0]&&V.isArray(e[0]))for(var n in e)t[n]=V.toTJson(e[n]);else{t[0]=[];for(var a in e[0])t[0][t[0].length]='"'+a+'"';for(var o in e){var r=[];for(var i in e[o])r[r.length]=checkValue(e[o][i]);t[t.length]=r}}return t}return[]},V.ajax=function(data){var funcsucc=V.merge(V.getSettings("ajax",{async:!0,type:"POST",dataType:"text",cache:!1,beforeSend:function(e){},success:function(data,status){var _this=this;try{var hasFalse=!1;switch(typeof data){case"string":data=data.replace(/[\r\n]+/g,""),data.startWith("{")?(_this.filtData=function(e){return e[0]},data="["+data+"]"):_this.filtData=function(e){return V.evalTJson(data)[0][0]},hasFalse=0===data.replace(/^(\[+\]+)/g,"").length||data.toLowerCase().indexOf("[false")>=0&&(!(data.toLowerCase().indexOf("[false:")>=0)||function(){var e=data.toLowerCase().match(/\[false:[^\]]+\]/g);return!(e&&e.length>0)||e[0].substr(7,e[0].length-8)}()),!hasFalse&&V.tryC(function(){_this.bindData.apply(_this,[_this.filtData(eval(data))])});break;case"object":data&&data.length?data.map(function(e){e+="",hasFalse=hasFalse||"False"==e||"false"==e}):hasFalse=!0,!hasFalse&&V.tryC(function(){_this.bindData.apply(_this,[data])});break;case"undefined":default:V.showException("V.Query success方法 name:typeof错误 type:"+typeof data),hasFalse=!0}hasFalse&&V.tryC(function(){_this.noData(!0)})}catch(e){V.showException("V._ajaxOption success方法",e)}},error:function(e,t,n){V.showException("V._ajaxOption error方法 status:"+t,n)},complete:function(e,t){null},filtData:function(e){return V.evalTJson(e)[0][0]},bindData:function(e){},noData:function(){}}),data);if(data.jsonp){V._ajaxcall||(V._ajaxcall={});var random=V.random();V._ajaxcall[random]=function(e){delete V._ajaxcall[random],funcsucc.success(e,null)},V.getRemoteJSON(data.url+(data.url.indexOf("?")>=0?"&":"?")+(1==data.jsonp?"_bk":data.jsonp)+"=VJ._ajaxcall["+random+"]&"+$.param(data.data))}else data.cross&&funcsucc&&(funcsucc.crossDomain=!0,funcsucc.xhrFields={withCredentials:!0}),$.ajax(funcsucc)},V.getRemoteJSON=function(e){var t={filtURI:function(e){return e}};V.userAgent.ie?window.setTimeout(function(){$.getScript(V.getSettings("getRemote",t).filtURI(e),function(){})},500):$.getScript(V.getSettings("getRemote",t).filtURI(e),function(){})},_V_.prototype.create=function(e,t,n,a,o){if(this.type=null,this.responseObj=null,this.xmlURL=e||null,this.xmlFun=t||"get",this.postStr=n||"",this.xmlURL){if(this.xhReq=this.getXMLReq(),null==this.xhReq)return void alert("Your browser does not support XMLHTTP.");if(!a||1!=a&&"true"!=a||3==this.type||(this.xhReq.onreadystatechange=function(){if(4==this.readyState&&(200==this.status||0==this.status)){if(!o)return this.responseXML.documentElement;o(this.responseXML.documentElement)}}),3!=this.type?(this.xhReq.open(this.xmlFun,this.xmlURL,!(!a||1!=a&&"true"!=a)),this.xhReq.send(this.xmlFun&&"post"==this.xmlFun.toLowerCase()?this.postStr:null),this.responseObj=this.xhReq.responseText):3==this.type&&(this.xhReq.open("get",this.xmlURL,"false"),this.responseObj=this.xhReq),null!=a&&(0==a||"false"==a)||3==this.type){if(!o)return this.responseObj;o(this.responseObj)}}},_V_.prototype.getXMLReq=function(){var e=null;return window.XMLHttpRequest?(e=new XMLHttpRequest,this.type=1):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP"),this.type=2),(document.location.href.indexOf("http://")<0||document.location.href.indexOf("https://")<0)&&window.ActiveXObject&&(e=new ActiveXObject("Microsoft._V_"),this.type=3),e},_V_.prototype.abort=function(){this.xhReq.abort()};var getHost=function(e){var t=(e+"").match(/http[s]?:\/\/[^\/]+/g)+"";return t&&t.length>0?t.substr(7):""};V.isCrossdomain=function(e){var t=getHost(e);return!(t.eq("")||t.eq(getHost(window.location.href)+""))},V.includeversion="",V.include=function(e,t,n){if((e||"").startWith("~")&&V.getSettings("include").last){var a=V.getSettings("include").last.split("/");a.pop(),e=a.join("/")+e.replace(/~/,"")}if(!V.getSettings("include")[e]){V.getSettings("include")[e]=!0,V.getSettings("include").last=e,V.includeversion&&e.indexOf("?")<0&&(e=e+(e.indexOf("?")>0?"&":"?")+V.includeversion),null==t&&(t="head");var o=document.getElementsByTagName(t).item(0),r=e.split("."),i=r[r.length-1].toLowerCase();if(i.indexOf("?")>=0&&(i=i.substr(0,i.indexOf("?"))),"js"==i)if(V.isCrossdomain(e)&&"undefined"!=typeof XDomainRequest){V.showException("跨域同步加载仅支持Chrome40以上,IE10以上版本,而且js跨域加载的IIS返回头部添加Access-Control-Allow-Origin: * 版本,如果仍然不可用请在config.js中将可能跨域请求path路径上的js的转入头部,或者在页面onStart时先获取原需要异步获取的对象!");var s=new XDomainRequest;s.open("GET",e),s.timeout=5e3,s.send(),console.log("xdomainrequest"),_V_AppendScript(s.responseText,n),n&&n()}else{var c=new _V_;c.create(e,"get",null,!1,function(e){_V_AppendScript(e,n)}),n&&n()}"css"==i&&(new_element=document.createElement("link"),new_element.setAttribute("type","text/css"),new_element.setAttribute("rel","stylesheet"),new_element.setAttribute("href",e),new_element.setAttribute("media","screen"),o.appendChild(new_element),n&&n())}},V.applyCommandAndEvent=function(e){e._settings={},e._exSettings={},e.getSettings=function(t,n){return V.isValid(e._settings[t])||(V.isValid(e._exSettings[t])?(e._settings[t]=V.merge(V.getValue(n,{}),e._exSettings[t]),delete e._exSettings[t]):e._settings[t]=V.getValue(n,{})),e._settings[t]},e.extendSettings=function(t,n){V.isValid(e._settings[t])?e._settings[t]=V.merge(e._settings[t],n):e.exSettings[t]?e._exSettings[t]=V.merge(e._exSettings[t],V.getValue(n,{})):e._exSettings[t]=V.getValue(n,{})},e.clearSettings=function(){e._settings={}},e.registCommand=function(t,n){var a=e.getSettings("comms",[]),o=a[t];V.isValid(o)&&"function"!=typeof o&&n.apply(null,o),a[t]=n},e.callCommand=function(t){for(var n=arguments.caller,a=e.getSettings("comms",[]),o=a[t],r=[],i=1;i<arguments.length;i++)r[i-1]=arguments[i];V.isArray(r[0])&&1==r.length&&(r=r[0]),V.isValid(o)&&"function"==typeof o?V.once(function(){o.apply(n,r)}):a[t]=r},e.hasCommand=function(t){var n=e.getSettings("comms",[]),a=n[t];return V.isValid(a)&&"function"==typeof a},e.cleanCommand=function(t){delete e.getSettings("comms",[])[t]},e.registEvent=function(t,n,a){var o=function(t,n,a){var o=e.getSettings("events",[]),r=o[t];if(V.isValid(r)||(r=[],o[t]=r),"function"==typeof n){a&&!r.top?(r.top=n,r.unshift(n)):(a&&r.top&&V.showException("S.registEvent:"+t+" 事件已经有订阅者被置顶!"),r.push(n));var i=e.getSettings("eventcall",{});i=i[t]?i[t]:{},i.time&&i.time>=(new Date).getTime()&&V.once(function(){n.apply(i.caller,i.data)})}};V.isArray(t)?t.forEach(function(e){o(e,n,a)}):o(t,n,a)},e.callEvent=function(t){for(var n=arguments.caller,a=e.getSettings("events",[]),o=a[t],r=[],i=1;i<arguments.length;i++)r[i-1]=arguments[i];V.isArray(r[0])&&1==r.length&&(r=r[0]),V.isValid(o)&&V.isArray(o)&&V.each(o,function(e){V.tryC(function(){e.apply(n,r)})});var s=e.getSettings("eventcall",{});s[t]||(s[t]={}),s=s[t],s.time=(new Date).add("n",1).getTime(),s.data=r,s.caller=n},e.hasEvent=function(t){var n=e.getSettings("events",[]),a=n[t];return!(!V.isValid(a)||!V.isArray(a))},e.cleanEvent=function(t){delete e.getSettings("events",[])[t]}},V.applyCommandAndEvent(V),V.getEvent=function(e){return e||window[e]},V.getTarget=function(e){return e.target||e.srcElement},V.cancel=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},V.stopProp=function(e){e.stopPropagation?e.stopPropagation():e.cancelBobble=!0},V.formatPrice=function(e,t,n,a){e=(e+"").replace(/[^0-9+-Ee.]/g,"");var o=isFinite(+e)?+e:0,r=isFinite(+t)?Math.abs(t):2,i=void 0===a?",":a,s=void 0===n?".":n,c="";return c=(r?function(e,t){var n=Math.pow(10,t);return""+Math.round(e*n)/n}(o,r):""+Math.round(o)).split("."),c[0].length>3&&(c[0]=c[0].replace(/B(?=(?:d{3})+(?!d))/g,i)),(c[1]||"").length<r&&(c[1]=c[1]||"",c[1]+=new Array(r-c[1].length+1).join("0")),c.join(s)},V.qs=new function(e){if(this.params={},null==e&&(e=location.search.substring(1,location.search.length)),this.get=function(e,t){var n=this.params[e];return null!=n?n:t},this.contains=function(e){return null!=this.params[e]},0!=e.length){e=e.replace(/\+/g," ");for(var t=e.split("&"),n=0;n<t.length;n++){var a=t[n].split("="),o=decodeURIComponent(a[0]),r=2==a.length?decodeURIComponent(a[1]):o;this.params[o]=r}}},V.hash=function(e,t){(t=V.getValue(t,!1))||(e=e.toLowerCase());var n,a,o=1315423911;for(n=e.length-1;n>=0;n--)a=e.charCodeAt(n),o^=(o<<5)+a+(o>>2);return 2147483647&o};var index=0;V.random=function(){return parseInt(""+(new Date).getTime()+index++)},["toJsonString","json"].forEach(function(e){var t=e;V[e]=function(e){return JSON||V.include("/Scripts/json.js"),V.toJsonString=function(){return JSON.stringify.apply(JSON,arguments)},V.json=function(){return JSON.parse.apply(JSON,arguments)},V[t](e)}})}(VJ,jQuery),function(V,$){V.config={};var C=V.config;C.Configs={ConfigConverts:{AppSettings:{type:"VJ.config.AppSettingsConfigConvert"}}},C.Config=function(){var e=this;e.data={},e.getValue=function(t){return e.data[t]},e.setValue=function(t,n){e.data[t]=n},e.merge=function(t){e.data=V.merge(e.data,t.data)}},C.ConfigConvert=function(){var e=this;e.toConfig=function(e){return null},e.toStrings=function(e){return""},e.needConfig=!1},C.AppSettingsConfigConvert=function(){var e=this;V.inherit.apply(e,[C.ConfigConvert,[]]),e.toConfig=function(e){var t=new C.Config;e=V.getValue(e,{});for(var n in e)t.data[n]=e[n];return t}},C.ConfigManager=function(e,t){var n=this,a={},o={},r=!1;n.getConfig=function(e){return V.isValid(o[e])||(o[e]=new C.ProxyConfig(n,e)),o},n.getConfigValue=function(t,o){var r=function(){return e?e.getConfigValue(t,o):null};if(a[t]){var i=a[t].getValue(o);return i||r.apply(n,[])}return r.apply(n,[])},n.setConfigValue=function(t,o,i){r=!0;var s=function(){e&&e.setConfigValue(t,o,i)};a[t]?a[t].setValue(o,i):s.apply(n,[])},n.update=function(){r&&n.adapter.update(n,a,t)};null==e&&(a.ConfigConverts=new function(){var e=this;V.inherit.apply(e,[C.Config,[]]),e.data.ConfigConverts=new function(){var e=this;e.toConfig=function(e){return new function(){var t=this;V.inherit.apply(t,[C.Config,[]]);for(var n in e)t.data[n]=function(){var t=e[n];return t.path&&V.include(t.path),V.create3(t.type,[])}()}},e.toStrings=function(e){V.showException("基础解析器不支持此功能")}}}),n.adapter=C.ConfigAdapter.prototype.getInstance(),n.adapter.fill(n,a,t)},C.ProxyConfig=function(e,t){var n=this;V.inhert(C.Config,[]),n.getValue=function(n){return e.getConfigValue(t,n)},n.setValue=function(n,a){return e.setConfigValue(t,n,a)},n.merge=function(e){V.showException("不支持的功能")}},C.ConfigAdapter=function(){var _=this;_.fill=function(cm,dic,resource){"string"==typeof(resource=resource.load())&&(resource=eval("("+resource+")"));for(var i in resource){var convert=cm.getConfigValue("ConfigConverts",i);if(convert){var val=convert.toConfig(resource[i],convert.needConfig?cm:null);val?dic[i]?dic[i].merge(val):dic[i]=val:(console.log("ConfigConverts 解析失败"+i+":"),console.log(resource[i]))}else V.showException("ConfigConverts 没有找到对应的解析器"+i)}},_.update=function(e,t,n){var a={};for(var o in t){var r=e.getConfigValue("ConfigConverts",o);if(r){var i=r.toString(t[o]);i?a[o]=i:(console.log("ConfigConverts 解析失败"+o+":"),console.log(t[o]))}else V.showException("ConfigConverts 没有找到对应的解析器"+o)}n.save(function(){var e="{";for(var t in a)e=e+t+":"+a[t]+",";return","==e.substr(e.length-1)&&(e=e.substr(0,e.length-1)),e+"}"}())}},C.ConfigAdapter.prototype.getInstance=function(){return C.ConfigAdapter.prototype.instance||(C.ConfigAdapter.prototype.instance=new C.ConfigAdapter),C.ConfigAdapter.prototype.instance},C.getConfigManagerFromObj=function(cm,obj){return obj?new C.ConfigManager(cm,function(){return new function(){var _=this;"string"==typeof obj&&(obj=eval("("+obj+")")),_.load=function(){return obj},_.save=function(){V.showException("getConfigManagerFromObj不支持此方式")}}}()):cm},C.getConfigManagerFromJS=function(cm,name,path){if(!name)return cm;if(path)if("string"==typeof path&&path.indexOf(";")>=0&&(path=path.split(";")),V.isArray(path))for(var i in path)V.include(path[i]);else V.include(path);return new C.ConfigManager(cm,function(){return new function(){var _=this;"string"==typeof name&&(name=eval("("+name+")")),_.load=function(){return name},_.save=function(){V.showException("getConfigManagerFromJS不支持此方式")}}}())},C.getBaseConfigManager=function(){return C.baseConfig||(C.baseConfig=C.getConfigManagerFromObj(null,C.Configs)),C.baseConfig},C.getApplicationConfigManagerFromJS=function(e,t){return C.getConfigManagerFromJS(C.getBaseConfigManager(),e,t)},C.getApplicationConfigManagerFromObj=function(e){return C.getConfigManagerFromObj(C.getBaseConfigManager(),e)}}(VJ,jQuery),Date.prototype.add=function(interval,number){var d=new Date(this.getTime()),k={y:"FullYear",q:"Month",m:"Month",w:"Date",d:"Date",h:"Hours",n:"Minutes",s:"Seconds",ms:"MilliSeconds"},n={q:3,w:7};return eval("d.set"+k[interval]+"(d.get"+k[interval]+"()+"+(n[interval]||1)*number+")"),d},Date.prototype.diff=function(e,t){var n=this,a={},o=n.getTime(),r=t.getTime();return a.y=t.getFullYear()-n.getFullYear(),a.q=4*a.y+Math.floor(t.getMonth()/4)-Math.floor(n.getMonth()/4),a.m=12*a.y+t.getMonth()-n.getMonth(),a.ms=t.getTime()-n.getTime(),a.w=Math.floor((r-o)/6048e5),a.d=Math.floor((r-o)/864e5),a.h=Math.floor((r-o)/36e5),a.n=Math.floor((r-o)/6e4),a.s=Math.floor((r-o)/1e3),a[e]},Date.prototype.sub=function(e,t){return Date.prototype.diff.apply(t,[e,this])},Date.prototype.toString=function(e){var t={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours()%12==0?12:this.getHours()%12,"H+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()},n={0:"/u65e5",1:"/u4e00",2:"/u4e8c",3:"/u4e09",4:"/u56db",5:"/u4e94",6:"/u516d"};e||(e="yyyy/MM/dd HH:mm:ss"),/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length))),/(E+)/.test(e)&&(e=e.replace(RegExp.$1,(RegExp.$1.length>1?RegExp.$1.length>2?"/u661f/u671f":"/u5468":"")+n[this.getDay()+""]));for(var a in t)new RegExp("("+a+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?t[a]:("00"+t[a]).substr((""+t[a]).length)));return e},String.prototype.endWith=function(e){return!(null==e||""==e||0==this.length||e.length>this.length)&&this.substring(this.length-e.length)==e},String.prototype.startWith=function(e){return!(null==e||""==e||0==this.length||e.length>this.length)&&this.substr(0,e.length)==e},String.prototype.eq=function(e,t){return e+="",t?this==e:this.toLowerCase()==e.toLowerCase()},String.prototype.trim=function(e){switch(e){case"/":case"\\":case"?":case"[":case"]":case".":case"*":case"(":case")":case"{":case"}":case"|":case"^":case"$":case"+":e="\\"+e}return this.replace(VJ.isValid(e)?new RegExp("(^("+e+")+)|(("+e+")+$)","g"):/(^\s+)|(\s+$)/g,"")},String.prototype.loadVJ=!0,Math.X=function(e,t){var n=e+"",a=n.lastIndexOf(".")>=0?n.length-n.lastIndexOf(".")-1:0,o=t+"",r=o.lastIndexOf(".")>=0?o.length-o.lastIndexOf(".")-1:0;return e*=Math.pow(10,a),t*=Math.pow(10,r),e*t/Math.pow(10,a+r)},Math.D=function(e,t){var n=e+"",a=n.lastIndexOf(".")>=0?n.length-n.lastIndexOf(".")-1:0,o=t+"",r=o.lastIndexOf(".")>=0?o.length-o.lastIndexOf(".")-1:0;return e*=Math.pow(10,a),t*=Math.pow(10,r),e/t/Math.pow(10,a+r)},function(V,$){V.middler={},V.config.Configs=V.merge(V.config.Configs,{ConfigConverts:{Middler:{type:"VJ.middler.MiddlerConfigConvert"}}});var M=V.middler;M.Middler=function(e){var t=this,n="Middler";t.getObjectByAppName=function(t,a){try{return e.getConfigValue(n,new function(){this.getValue=function(e){return e.getValueByName(t,a)}})}catch(e){V.showException(t+":"+a,e)}},t.setObjectByAppName=function(t,a,o){try{return e.setConfigValue(n,new function(){this.setValue=function(e,n){return e.setValueByName(t,a,n)}},o)}catch(e){V.showException(t+":"+a,e)}},t.getTypeByAppName=function(t,a){try{return e.getConfigValue(n,new function(){this.getValue=function(e){return e.getTypeByName(t,a)}})}catch(e){V.showException(t+":"+a,e)}}},M.MiddlerConfig=function(){var e=this;V.inherit.apply(e,[V.config.Config,[]]),e.getValue=function(t){return t.getValue(e)},e.setValue=function(t,n){return t.setValue(e,n)},e.merge=function(t){if(t.data){e.data={};for(var n in t.data)e.data[n]=t.data[n]}},e.getValueByName=function(t,n){return e.data[t]?e.data[t][n]?e.data[t][n].getValue():e.data[t].getValue(n):null},e.setValueByName=function(t,n,a){return e.data[t]&&e.data[t][n]?e.data[t][n].setValue(a):null},e.getTypeByName=function(t,n){return e.data[t]?e.data[t][n]?e.data[t][n].getType():e.data[t].getType(n):null}},M.MiddlerConfigConvert=function(){var _=this,__={};V.inherit.apply(_,[V.config.ConfigConvert,[]]),__.scripts={},__.spascripts=[],__.loadScript=function(e){__.scripts[e]?console.log(e+"代码已经注入"):__.scripts._skey?console.log(__.scripts._skey+"已注册但是尚未有代码注入"):__.spascripts.length>0?__.scripts[e]=__.spascripts.pop():__.scripts._skey=e},__.clearload=function(){delete __.scripts._skey},__.hasScript=function(e){return __.scripts[e]},__.getScript=function(e,t){var n=__.scripts[e];return n&&n.path&&V.each(n.path.replace(/,/g,";").split(";"),function(e){V.include(e)},function(){delete n.path},!0),n&&n.func?{inherit:n.inherit,func:n.func}:null},V.registScript=__.registScript=function(){var e=arguments.length>2?{path:arguments[0],inherit:arguments[1].replace(/,/g,";").split(";"),func:arguments[2],regist:!0}:arguments.length>1?{path:arguments[0],func:arguments[1],regist:!0}:{func:arguments[0],regist:!0};if(__.scripts._skey){var t=__.scripts._skey;delete __.scripts._skey,__.scripts[t]=e}else __.spascripts.push(e)},_.needConfig=!0,__.convertParas=function(e,t,n,a,o){var r=[];t=V.getValue(t,[]);for(var i in t){var s=t[i];if("object"==typeof s)if(null===s||void 0===s)r[r.length]=null;else if(s.ref){var c=s.ref.indexOf("/")>=0?s.ref.indexOf("/"):s.ref.indexOf("\\")>=0?s.ref.indexOf("\\"):-1,l=c>=0?s.ref.substr(0,c):n.app,u=l?s.ref.substr(c+1):s.ref;r.push({ref:l,name:u})}else if(s.type||s.path){var u=V.random()+"";a[u]=__.convertContainer(e,s,n,a,o),r.push({ref:n.app,name:u})}else if(s.self)r.push(o);else if(s.middler)r.push(new M.Middler(o));else if(s.params&&s.param){var u=V.random()+"";a[u]=__.convertContainer(e,s,n,a,o),r.push({ref:n.app,name:u,param:s.param})}else if(V.isArray(s)){var u=V.random()+"";a[u]=__.convertContainer(e,{params:s},n,a,o),r.push({ref:n.app,name:u})}else r.push(s);else r.push(s)}return new function(){this.getParas=function(){var t=[];for(var n in r){var a=r[n];null!==a&&void 0!==a&&a.ref&&(a=e.getValueByName(a.ref,a.name)),t.push(a)}return t}}},__.createValue=function(e,t,n){var a=__.hasScript(e);return a.regist&&!t.length&&(t=[null,null]),a=__.getScript(e),a.inherit&&a.inherit.map(function(e){return t[t.length]=n.Middler.getTypeByAppName(V.view.APP||"VESH.view",e),null}),a=a.func,V.create2(a,t)},__.convertCreater=function(config,v,defParam,app,pcm){var method=V.getValue(v.method,defParam.method),path=V.getValue(v.path,defParam.path),spapath=V.getValue(v.spapath,!1),host=V.getValue(v.host,defParam.host),type=(V.isValid(v.type)&&0==v.type.indexOf(".")?defParam.pack:"")+v.type;"undefined"!=type||V.isValid(v.ref)||(V.isValid(v.path)||V.isValid(v.spapath)?type=v.type=""+V.random():method=V.isValid(v.params)?"objects":"self");var constructorparalength=V.getValue(v.constructorparalength,defParam.constructorparalength),para=__.convertParas(config,v.params,V.merge(defParam,{path:path,pack:defParam.pack,host:host}),app,pcm);return spapath&&(__.spaloadScript(type),__.clearload()),new function(){var _=this;_.getType=function(){path?(__.loadScript(type),V.each(path.split(";"),function(e){defParam.host&&e.toLowerCase().indexOf("../")<0&&e.toLowerCase().indexOf("http://")<0&&e.toLowerCase().indexOf("https://")<0&&(e=defParam.host+e),V.include(e)},function(){__.clearload()},!0)):spapath&&__.spaloadScript(type);var paras=para.getParas();return __.hasScript(type)?__.getScript(type).func:eval("("+type+")")},_.getValue=function(){path?(__.loadScript(type),V.each(path.split(";"),function(e){defParam.host&&e.toLowerCase().indexOf("../")<0&&e.toLowerCase().indexOf("http://")<0&&e.toLowerCase().indexOf("https://")<0&&(e=defParam.host+e),V.include(e)},function(){__.clearload()},!0)):spapath&&__.spaloadScript(type);var paras=para.getParas();switch(method){case"self":return v;case"objects":return paras;default:case"constructor":return __.hasScript(type)?__.createValue(type,paras,pcm):V.create3(type,paras);case"bean":var val=__.hasScript(type)?__.createValue(type,[],pcm):eval("(new "+type+"())");if(val&¶s)for(var i in paras)"object"==typeof paras[i]&&(v.params[i].name&&val["set"+v.params[i].name]?val["set"+v.params[i].name].apply(val,[paras[i]]):v.params[i].param&&val["set"+v.params[i].param]?val["set"+v.params[i].param].apply(val,paras[i]):val=V.merge(val,paras[i]));return val;case"factory":var script=__.hasScript(type)
;return script&&(script.regist&&!paras.length&&(paras=[null,null]),script=__.getScript(type),script.inherit&&script.inherit.map(function(e){return paras[paras.length]=pcm.Middler.getTypeByAppName(V.view||"VESH.view",e),null}),script=script.func),script?script.apply(script,paras):eval("("+type+".apply("+type+",paras))");case"factorybean":var script=__.hasScript(type);script&&(script.regist&&!paras.length&&(paras=[null,null]),script=__.getScript(type),script.inherit&&script.inherit.map(function(e){return paras[paras.length]=pcm.Middler.getTypeByAppName(V.view||"VESH.view",e),null}),script=script.func);var val=script?script.apply(script,paras):eval("("+type+".apply("+type+",paras))");if(paras&&val)for(var i in paras)(!constructorparalength||i>=constructorparalength)&&"object"==typeof paras[i]&&(v.params[i].name&&val["set"+v.params[i].name]?val["set"+v.params[i].name].apply(val,[paras[i]]):v.params[i].param&&val["set"+v.params[i].param]?val["set"+v.params[i].param].apply(val,paras[i]):val=V.merge(val,paras[i]));return val;case"constructorbean":var val=__.hasScript(type)?__.createValue(type,paras,pcm):V.create3(type,paras);if(paras&&val)for(var i in paras)(!constructorparalength||i>=constructorparalength)&&"object"==typeof paras[i]&&(v.params[i].name&&val["set"+v.params[i].name]?val["set"+v.params[i].name].apply(val,[paras[i]]):v.params[i].param&&val["set"+v.params[i].param]?val["set"+v.params[i].param].apply(val,paras[i]):val=V.merge(val,paras[i]));return val}}}},__.convertContainer=function(e,t,n,a,o){var r=V.getValue(t.mode,n.mode),i=V.getValue(t.size,n.size),s=__.convertCreater(e,t,n,a,o),c=function(){return s.getType()};switch(r){default:case"static":return new function(){var e=null,t=this;t.getType=c,t.getValue=function(){return null==e&&(e=s.getValue()),e},t.setValue=function(t){e===t||(t=null)}};case"instance":return new function(){var e=this;e.getType=c,e.getValue=function(){return s.getValue()},e.setValue=function(e){e.dispose&&V.tryC(e.dispose)}};case"pool":return new function(){var e=this;e.getType=c,V.collection&&V.include("/scripts/VJ.collection.min.js");var t=new V.collection.Pool(i,function(){return s.getValue()});e.getValue=function(){return t.getValue()},e.setValue=function(e){t.setValue(e)}}}},__.convertApp=function(e,t,n,a){var o={method:"constructor",mode:"static",path:!1,pack:!1,constructorparalength:!1,size:50,app:n,host:""};return new function(){var r=this,i={};for(var s in o)i[s]=V.getValue(t[s],o[s]);i.app=n;for(var s in t)o[s]||0==o[s]||(r[s]=__.convertContainer(e,t[s],i,r,a));r.getValue=function(t){return r[t]=__.convertContainer(e,{path:t.replace(/[\._]/g,"/")+".js"},i,r,a),r[t].getValue()},r.getType=function(t){return r[t]=__.convertContainer(e,{path:t.replace(/[\._]/g,"/")+".js"},i,r,a),r[t].getType()}}},_.toConfig=function(e,t){var n=new M.MiddlerConfig;t.Middler||(t.Middler=new M.Middler(t));for(var a in e){var o=__.convertApp(n,e[a],a,t);n.data[a]=o}return n},_.toStrings=function(e){V.showException("Middler 不支持此操作")}},M.getMiddlerFromJS=function(e,t){return new M.Middler(V.config.getApplicationConfigManagerFromJS(e,t))},M.getMiddlerFromObj=function(e){return new M.Middler(V.config.getApplicationConfigManagerFromObj(e))},M.getObjectByAppName=function(e,t,n){return V.middlers||(V.middlers={}),e.randomid||(e.randomid=V.random(),V.middlers[e.randomid]=new M.Middler(e)),V.middlers[e.randomid].getObjectByAppName(t,n)},M.getTypeByAppName=function(e,t,n){return V.middlers||(V.middlers={}),e.randomid||(e.randomid=V.random(),V.middlers[e.randomid]=new M.Middler(e)),V.middlers[e.randomid].getTypeByAppName(t,n)}}(VJ,jQuery),function(V,$){V.ni={};var N=V.ni;V.config.Configs=V.merge(V.config.Configs,{ConfigConverts:{Ni:{type:"VJ.ni.NiDataConfigConvert"}}}),N.NiDataConfig=function(){var e=this,t={};V.inherit.apply(e,[V.config.Config,[]]),t.getValue=e.getValue,e.getValue=function(){var e=t.getValue.apply(this,arguments);return e&&(e.merge=V.getValue(e.merge,V.merge)),e}},N.NiDataConfigConvert=function(){var e=this;V.inherit.apply(e,[V.config.ConfigConvert,[]]),e.toConfig=function(e){var t=new N.NiDataConfig;if(e&&"object"==typeof e)for(var n in e)e[n]&&(t.data[n]=VJ.merge({params:{}},e[n]));return t},e.toStrings=function(e){V.showException("VJ.ni.NiDataConfigConvert不支持此功能")}},N.NiTemplate=function(e,t,n,a){var o=this;o.lstCmd=[],o.KEY="Ni",o.result=new N.NiDataResult,o.transaction=!1,o.res=e,o.cm=t,o.defExt=n||".tjson?_n=MT",o.dbtype=o.defExt.split("?")[0].trim("."),o.jsonp=o.dbtype.indexOf("p")>=0&&"_bk",o.dbtype=o.dbtype.indexOf("tjson")>=0?"tjson":"json",o.merge=a||function(){var e=VJ.merge.apply(this,arguments);return!e.hasMarge&&e.PageIndex&&(e.hasMarge=!0,e.PageIndex=e.PageIndex*e.PageSize),e}},N.NiTemplate.inherit2=!0,V.merge(N.NiTemplate.prototype,{_addCommand:function(e,t,n){var a=this,o=a.cm.getConfigValue(a.KEY,e);o?a.lstCmd.push(V.merge(o,{name:o.command,params:(o.merge||a.merge)(o.params,V.getValue(t,{})),func:n,key:e,jsonp:o.jsonp||a.jsonp,dbtype:o.dbtype||a.dbtype})):a.lstCmd.push({name:e.indexOf("http")<0||e.startWith("/")?e.replace(/[\.\/\\]/g,"/")+a.defExt:e||"",params:a.merge(V.getValue(t,{})),func:n,key:e,jsonp:a.jsonp,dbtype:a.dbtype})},_excute:function(){var e=this,t=e.lstCmd;return e.lstCmd=[],t.length>0?V.tryC(function(){var n=e.res.getDBConnection();t.length>1&&(n.transaction=!0);var a=e.res.getDBCommand();a.connection=n;var o=0;V.whileC2(function(){return t[o++]},function(t,n){a.command=t.name,a.params=t.params,a.dbtype=t.dbtype,a.jsonp=t.jsonp;var o=t.func;a.excute(e.result,function(a){e.result.add(!(!a||V.isArray(a)&&0==a.length)&&a,t.key),V.tryC(function(){o(e.result)}),n()})},function(){n.transaction&&n.commit&&n.commit(),e.res.backDBConnection(n)})}):V.showException("不能调用空的命令对象!"),e.result},excute:function(e,t,n){var a=this;return a._addCommand(e,t,n),a.transaction||a.commit(),a.result},commit:function(){return this._excute()}},!0),N.NiTemplateManager=function(e,t){var n=this,a=this;n.KEY=V.getValue(t,"Ni"),a.middler=new V.middler.Middler(e)},N.NiTemplateManager.prototype.excute=function(e,t,n,a){var o=this,r=this,i=r.middler.getObjectByAppName(o.KEY,e);if(!i)throw new Error("没有找到Template:"+e);i.excute(t,n,function(t){V.tryC(function(){a(t)}),r.middler.setObjectByAppName(o.KEY,e,i)})},N.NiDataResult=function(){var e=this;e.data={},e.kv={},e.datas=[]},V.merge(N.NiDataResult.prototype,{get:function(e){var t=this;return t.data[e]?t.data[e]:t.kv[e]?t.kv[e][1]:null},add:function(e,t){var n=this;if(e&&!n.kv[t])n.data[n.datas.length]=e,n.kv[t]=[n.datas.length,e],n.datas.push(e);else if(n.kv[t]){var a=n.kv[t][0];n.data[a]=e,n.kv[t]=[n.datas.length,e],n.datas[a]=e}},single:function(){var e=this,t=this;return e.hasData()?function(){var n=e.get(t.datas.length-1);return n[0]&&n[0][0]?n[0][0]:{}}():null},last:function(){var e=this,t=this;return e.get(t.datas.length-1)},each:function(e,t){var n=this,a=n.get(e);a&&V.isArray(a)&&V.each(a,t)},clear:function(){var e=this;e.datas=[],e.data={},e.kv={}},hasData:function(e){var t=this,n=this;return e?function(){var n=t.get(e);if(n)for(var a in n)return!0;return!1}():n.datas.length>0&&function(){var e=!1;return n.datas.forEach(function(t){if(!e&&t)for(var n in t)e=!0}),e}()}},!0),N.NiDataResource=function(e,t){var n=this;n.fac=e,n.params=V.getValue(t,{}),n.getDBConnection=function(){var e=n.fac.createDBConnection();return e.params=V.merge(e.params,n.params),e.params.resource=V.getValue(n.params.resource,e.params.resource),e.isOpen||e.open(),e},n.backDBConnection=function(e){n.fac.backDBConnection(e)},n.getDBCommand=function(){return n.fac.createDBCommand()}},N.NiInstanceDataResource=function(e,t){var n=this;V.inherit.apply(n,[N.NiDataResource,[e,t]])},N.NiStaticDataResource=function(e,t){var n=this,a={};a.conn=null,V.inherit.apply(n,[N.NiDataResource,[e,t]]),a.getDBConnection=n.getDBConnection,n.getDBConnection=function(){return a.conn||(a.conn=a.getDBConnection()),a.conn},n.backDBConnection=function(e){e!=a.conn&&e.isOpen&&e.close&&e.close()}},N.NiPoolDataResource=function(e,t,n){var a=this,o={};V.inherit.apply(a,[N.NiDataResource,[e,t]]),o.getDBConnection=a.getDBConnection,n=V.getValue(n,50),o.pool=new VJ.collection.Pool(n,function(){var e=o.getDBConnection();return e.dispose=e.close,e}),a.getDBConnection=function(){return o.pool.getValue()},a.backDBConnection=function(e){o.pool.setValue(e)}},N.NiDataFactory=function(){var e=this;e.createDBConnection=function(){return new NiDataConnection},e.createDBCommand=function(){return new N.NiDataCommand},e.backDBConnection=function(e){e.isOpen&&e.close()}},N.NiDataConnection=function(){var e=this;e.isOpen=!1,e.params={},e.open=function(){e.isOpen=!0},e.close=function(){e.isOpen=!1},e.invoke=function(e,t){t(!1)}},N.NiDataCommand=function(){var _=this,__={};_.connection=null,_.command="",_.params={dbtype:"json"},_.excute=function(result,func){if(!_.connection||!_.connection.isOpen)return V.showException("数据库未连接"),void(func&&func(!1));_.connection.invoke(_,function(data){try{var hasFalse=!1;switch(typeof data){case"string":if(data=data.replace(/[\r\n]+/g,""),data.startWith("{")&&(_.dbtype="json",data="[["+data+"]]"),!(hasFalse=0===data.replace(/^(\[+\]+)/g,"").length||data.toLowerCase().indexOf("[false")>=0&&(!(data.toLowerCase().indexOf("[false:")>=0)||function(){var e=data.toLowerCase().match(/\[false:[^\]]+\]/g);return!(e&&e.length>0)||e[0].substr(7,e[0].length-8)}())))try{data=eval("("+data.replace(/[\r\n]+/g,"")+")")}catch(e){console.log(data)}break;case"object":data?$(data).each(function(e,t){t+="",hasFalse=hasFalse||"False"==t||"false"==t}):hasFalse=!0;break;case"undefined":default:V.showException("V.NiDataCommand success方法 name:typeof错误 type:"+data),hasFalse=!0}if(hasFalse)data=1!=hasFalse&&hasFalse;else switch(_.dbtype){default:case"json":break;case"tjson":data=V.evalTJson(data)}func&&func(data)}catch(e){V.showException("V._ajaxOption success方法",e),func&&func(!1)}})}},N.NiTemplateDecorator=function(e,t,n,a,o,r){var i=this,s=this;N.NiTemplate.apply(i,[e,n,o,r]),i.KEY="Ni",i.lstCmd2={},s.params=V.getValue(a,{}),i.cacheres=t},V.inherit2(N.NiTemplateDecorator,N.NiTemplate,{setCommand:function(t,n){var a=this;n=V.merge(a.params,n);try{t.setItem?t.setItem(n.cacheKey,V.toJsonString({data:n.cacheValue,date:!!n.timeout&&(new Date).add(n.timeout.interval,n.timeout.number).getTime()})):t[n.cacheKey]=V.toJsonString({data:n.cacheValue,date:!!n.timeout&&(new Date).add(n.timeout.interval,n.timeout.number).getTime()})}catch(t){console.log("localStorage/sessionStorage可能不被支持或者跨域:"+e.message)}return null},clearCommand:function(t,n){try{return t.removeItem?t.removeItem(n.cacheKey,null):t[n.cacheKey]&&delete t[n.cacheKey],null}catch(t){console.log("localStorage/sessionStorage可能不被支持或者跨域:"+e.message)}},cacheCommand:function(t,n){try{var a=null;return t.getItem?a=V.json(t.getItem(n.cacheKey)):t[n.cacheKey]&&(a=V.json(t[n.cacheKey])),a?a.date&&parseFloat(a.date)<(new Date).getTime()?(delete t[n.cacheKey],null):a.data:null}catch(t){console.log("localStorage/sessionStorage可能不被支持或者跨域:"+e.message)}},_addCommand:function(e,t,n){var a=this,o=a.lstCmd.length;if(N.NiTemplateDecorator._addCommand.apply(a,[e,t,n]),a.lstCmd.length!=o){var r=null,i=a.cm.getConfigValue(a.KEY,e+".Cache");i?r=i.command||a.cacheCommand:(i=a.cm.getConfigValue(a.KEY,e+".Clear"))&&(r=i.command||a.clearCommand),i&&(a.lstCmd2[o]={name:r,key:e,params:i.merge(a.lstCmd[a.lstCmd.length-1].params,{cacheKey:V.hash(e+".Set."+V.toJsonString(a.lstCmd[a.lstCmd.length-1].params))})})}},_excute:function(){var e=this,t=e.lstCmd;return e.lstCmd=[],t.length>0?V.tryC(function(){var n=_res.getDBConnection(),a=e.res.getDBCommand();a.connection=n;var o=function(t,n){a.command=t.name,a.params=t.params,a.dbtype=t.dbtype,a.jsonp=t.jsonp;var o=t.func;a.excute(e.result,function(i){if(V.tryC(function(){e.result.add(i||!1,t.key),o&&V.tryC(function(){o(e.result)})}),i&&i.length>0&&(1!=i.length||0!=i[0].length)){var s=cm.getConfigValue(e.KEY,t.key+".Set");if(s){var c=e.cacheres.getDBConnection(),l=e.cacheres.getDBCommand();l.connection=c,l.command=V.getValue(s.command,e.setCommand),l.params=s.merge(s.params,a.params,{cacheKey:V.hash(t.key+".Set."+V.toJsonString(a.params)),cacheValue:i}),l.excute(e.result,function(t){V.tryC(function(){e.cacheres.backDBConnection(c)})})}}r++,n()})},r=0;V.whileC2(function(){return t.shift()},function(t,n){var a=e.lstCmd2[r];if(a){r++;var i=e.cacheres.getDBConnection(),s=e.cacheres.getDBCommand();s.connection=i,s.command=a.name,s.params=V.merge(a.params,t.params),s.excute(e.result,function(a){V.tryC(function(){try{e.cacheres.backDBConnection(i)}catch(e){}a?(e.result.add(a,t.key),t.func&&V.tryC(function(){t.func(e.result)}),n()):o(t,n)})})}else r++,o(t,n)},function(){e.res.backDBConnection(n)})}):V.showException("不能调用空的命令对象!"),e.result}}),N.NiTemplateCacheDecorator=function(e,t,n,a,o,r,i,s){N.NiTemplateDecorator.apply(_,[e,t,n,o,r]),_.cachecommand=i,_.setcommand=s},V.inherit2(N.NiTemplateCacheDecorator,N.NiTemplateDecorator,{_addCommand:function(e,t,n){var a=this,o=a.lstCmd.length;if(N.NiTemplate._addCommand.apply(a,[e,t,n]),a.lstCmd.length!=o){var r=null,i=a.cm.getConfigValue(a.KEY,a.cachecommand);i&&(r=i.command||a.cacheCommand,a.lstCmd2[o]={name:r,key:e,params:i.merge(a.lstCmd[a.lstCmd.length-1].params,{cacheKey:V.hash(e+".Set."+V.toJsonString(a.lstCmd[a.lstCmd.length-1].params))})})}},_excute:function(){var e=this,t=e.lstCmd;return e.lstCmd=[],t.length>0?V.tryC(function(){var n=_res.getDBConnection(),a=e.res.getDBCommand();a.connection=n;var o=function(t,n){a.command=t.name,a.params=t.params,a.dbtype=t.dbtype,a.jsonp=t.jsonp;var o=t.func;a.excute(e.result,function(i){if(V.tryC(function(){e.result.add(i||!1,t.key),o&&V.tryC(function(){o(e.result)})}),i&&i.length>0&&(1!=i.length||0!=i[0].length)){var s=cm.getConfigValue(e.KEY,e.setcommand);if(s){var c=e.cacheres.getDBConnection(),l=e.cacheres.getDBCommand();l.connection=c,l.command=V.getValue(s.command,e.setCommand),l.params=s.merge(s.params,a.params,{cacheKey:V.hash(t.key+".Set."+V.toJsonString(a.params)),cacheValue:i}),l.excute(e.result,function(t){V.tryC(function(){e.cacheres.backDBConnection(c)})})}}r++,n()})},r=0;V.whileC2(function(){return t.shift()},function(t,n){var a=e.lstCmd2[r];if(a){r++;var i=e.cacheres.getDBConnection(),s=e.cacheres.getDBCommand();s.connection=i,s.command=a.name,s.params=V.merge(a.params,t.params),s.excute(e.result,function(a){V.tryC(function(){try{e.cacheres.backDBConnection(i)}catch(e){}a?(e.result.add(a,t.key),t.func&&V.tryC(function(){t.func(e.result)}),n()):o(t,n)})})}else r++,o(t,n)},function(){e.res.backDBConnection(n)})}):V.showException("不能调用空的命令对象!"),e.result}}),N.NiLazyTemplateDecorator=function(e,t,n,a,o,r){var i=this;this.lazyExp=V.getValue(a.lazyExp,function(e){return!0}),a=V.merge({},a),a&&a.lazyExp&&delete a.lazyExp,N.NiTemplateDecorator.apply(i,[e,t,n,a,o,r])},V.inherit2(N.NiLazyTemplateDecorator,N.NiTemplateDecorator,{_excute:function(){var e=this,t=this,n=e.lstCmd;return e.lstCmd=[],n.length>0?V.tryC(function(){var a=e.res.getDBConnection(),o=e.res.getDBCommand();o.connection=a;var r=0,i=function(n){o.command=n.name,o.params=n.params,o.dbtype=n.dbtype,o.jsonp=n.jsonp;var a=n.func;o.excute(e.result,function(r){if(V.tryC(function(){r||(r=!1),e.result.add(r,n.key),a&&V.tryC(function(){a(e.result)})}),r&&r.length>0&&(1!=r.length||0!=r[0].length)&&t.lazyExp(n.params)){var i=e.cm.getConfigValue(e.KEY,n.key+".Set");if(i){var s=e.cacheres.getDBConnection(),c=e.cacheres.getDBCommand();c.connection=s,c.command=V.getValue(i.command,e.setCommand),c.params=i.merge(i.params,o.params,{cacheKey:V.hash(n.key+".Set."+V.toJsonString(o.params)),cacheValue:r}),c.excute(e.result,function(e){V.tryC(function(){cacheres.backDBConnection(s)})})}}})};V.whileC2(function(){return n.shift()},function(n,a){var o=e.lstCmd2[r];if(o&&t.lazyExp(n.params)){r++;var s=e.cacheres.getDBConnection(),c=e.cacheres.getDBCommand();c.connection=s,c.command=o.name,c.params=V.merge(o.params,n.params),c.excute(e.result,function(t){V.tryC(function(){try{e.cacheres.backDBConnection(s)}catch(e){}t||(t=!1),t&&(e.result.add(t,n.key),n.func&&V.tryC(function(){n.func(e.result)})),i(n)})})}else r++,i(n)},function(){e.res.backDBConnection(a)})}):V.showException("不能调用空的命令对象!"),e.result}}),N.NiMultiTemplateDecorator=function(e,t,n,a,o,r,i){var s=this,c=this;N.NiTemplate.apply(s,[e,t,o,r]),s.KEY=V.getValue(a,"Ni"),c.ni=new N.NiTemplateManager(n,s.KEY),c.lstCmd2={},s.template=i||!1},V.inherit2(N.NiMultiTemplateDecorator,N.NiTemplate,{_addCommand:function(e,t,n){var a=this,o=this,r=a.lstCmd.length;if(N.NiMultiTemplateDecorator._addCommand.apply(a,[e,t,n]),a.lstCmd.length!=r){var i=a.lstCmd[a.lstCmd.length-1];i.template=i.template||a.template,i.template&&(o.lstCmd2[r]=!0)}},_excute:function(){var e=this,t=this,n=e.lstCmd;return e.lstCmd=[],n.length>0?V.tryC(function(){var a=e.res.getDBConnection(),o=e.res.getDBCommand();o.connection=a;var r=function(t,n){o.command=t.name,o.params=t.params,o.dbtype=t.dbtype,o.jsonp=t.jsonp;var a=t.func;o.excute(e.result,function(o){V.tryC(function(){e.result.add(o||!1,t.key),a&&a(e.result)}),n()})},i=0,s=t.lstCmd2;t.lstCmd2={},V.whileC2(function(){return n.shift()},function(n,a){var o=n;s[i]?(i++,t.ni.excute(o.template,o.key,o.params,function(t){V.tryC(function(){e.result.add(t&&t.get(o.key)?t.get(o.key):[],o.key),o.func(e.result)}),a()})):(i++,r(o,a))},function(){e.res.backDBConnection(a),s=null})}):V.showException("不能调用空的命令对象!"),e.result}}),N.NiAjaxDataFactory=function(){var e=this,t={};V.inherit.apply(e,[N.NiDataFactory,[]]),t.AjaxConnection=function(){var e=this;V.inherit.apply(e,[N.NiDataConnection,[]]),e.params=V.merge({host:"",dbtype:"json"},e.params),e.invoke=function(t,n){V.ajax(V.merge(e.params,{url:(t.command.indexOf("http:")>=0||t.command.indexOf("https:")>=0?"":e.params.host)+t.command,data:t.params,jsonp:t.jsonp,success:function(e,t){try{n&&n(e)}catch(e){V.showException("V._ajaxOption success方法",e)}},error:function(e,t,a){V.showException("V._ajaxOption error方法 status:"+t,a),n&&n(!1)}}))}},e.createDBConnection=function(){return new t.AjaxConnection},e.backDBConnection=