/*** @author wsf javascript工具类*/
;
(function (win){/*** js工具类*/function jsUtils (){//TODO 可以初始化一些必要的信息}/*** utils 原型对象*/jsUtils.prototype = {constructor:jsUtils,//判断对象类型_is:function (type,val){return Object.prototype.toString.call(val) == '[object '+type+']';},//是否是数组isArray:function (val){return this._is("Array", val);},//是否是arguments对象isArgs:function (val){return this._is("Arguments", val);},//是否是函数isFunction:function (val){return this._is("Function", val);},//是否是正则表达式isRegExp:function (val){return this._is("RegExp", val);},//是否是本地JSON对象isJSON:function (val){return window.JSON&&this._is("JSON", val);},//是否是undefinedisUndefined:function (val){return typeof val == "undefined";},//是否是空isNull:function (val){return val == null;},//判断是否为空或nulisBlank:function (val){if(this.isNull(val)||this.isUndefined(val)) return true;var _v = val.trim ? val.trim():val.replace(/^(\s*)|(\s*$)/g,"");return _v.length==0;},//null或空字符窜或undefinedisEmpty:function (val){return this.isBlank(val);},//函数柯里化curry:function (fn){var args = Array.prototype.slice.call(arguements,1);return function (){var inArgs = Array.prototype.slice.call(arguements);var finalArgs = args.concat(inArgs);return fn.apply(null,finalArgs);}},//绑定事件bind:function (fn,context){var args = Array.prototype.slice.call(arguements,2);return function (){var inArgs = Array.prototype.slice.call(arguements);var finalArgs = args.concat(inArgs);return fn.apply(context,finalArgs);}},//函数节流throttle:function (method,interval,context){if(typeof method.tid != "undefined")clearTimeout(method.tid);//清除计时器idmethod.tid = setTimeout(function (){method.call(context);},interval);},//定时器timer:function (fn,interval,onOrmore){if(this.isFunction(fn)){var _f = this.isEmpty(onOrmore);//是否执行多次if(_f||(!_f&&onOrmore == "one")){fn.timerid = setTimeout(fn,interval);}else{//执行多次fn.timerid = setTimeout(function (){fn();setTimeout(arguments.callee,interval);},interval);}}else{throw new Error("定时器参数有误!");}},//获得url参数信息getUrlQueryParam:function (_url,key){if (_url.lastIndexOf("?") != -1) {var queryStr = _url.substring(_url.lastIndexOf("?") + 1, _url.length);if(!key)return queryStr;// 返回所有参数else{var params = queryStr.split("&");for(var j = 0 ;j < params.length;j++){var tmp = params[j].split("=");if(tmp[0]==key){return tmp[1];break;}}}}},//javascript事件工具类eventUtil:{//添加事件addHandler:function (element,type,handler){if(element.addEventListener){element.addEventListener(type,handler,false);//ie9+,ff,chrome}else if(element.attachEvent){element.attachEvent("on"+type,handler);//ie8以下}else{element["on"+type] = handler;//其他}},//移除事件removeHandler:function (element,type,handler){if(element.removeEventListener){element.removeEventListener(type,handler,false);}else if(element.detachEvent){element.detachEvent("on"+type,handler);}else{element["on"+type] = null;}},//获取event对象getEvent:function (event){return event?event:w.event;},//获取target对象getTarget:function (event){return event.target || event.srcElement;},//阻止冒泡preventDefault:function (event){if(event.preventDefault){event.preventDefault();}else{event.returnValue = false;}}},//js自定义事件customEvent:{//创建自定义对象create:function (){//event对象function Event(){this.handlers={};//事件集合 };//自定义事件原型对象Event.prototype={//构造函数constructor:Event,//注册事件addHandler:function (type,handler){if(typeof this.handlers[type] == "undefined"){this.handlers[type] = [];}this.handlers[type].push(handler);//注册事件},//触发事件trigger:function (event){if(!event.target){event.target = this;}if(this.handlers[event.type] instanceof Array){var handlers = this.handlers[event.type];for(var i = 0 ,len = handlers.length;i<len;i++){handlers[i](event);//调用}}},//移除事件removeHandler:function (type,handler){if(this.handlers[type] instanceof Array){var handlers = this.handlers[type];for(var i = 0,len = handlers.length;i<len;i++){if(handlesr[i] == handler){break;}}handlers.splice(i,1);//移除}}}return new Event();//返回自定义事件对象}},//去掉千分号removeThousandSign:function (num){if(null != num)return num.replace(/,/g,"");},//添加千分号addThousandSign:function (num){num = num + "";num = removePerThousandSign(num);num = parseFloat(num).toFixed(2);//四舍五入保留两位小数if(isNaN(num))return "0.0";var flag = num.indexOf(".") > 0;//是否有小数点var regexStr = /(\d{1,3})(?=(\d{3})+(?:$|\.))/g;var resultStr = num.replace(regexStr, "$1,");return flag ? resultStr : resultStr+".00";}}win.jsUtils = jsUtils;//赋给全局对象
})(window);