﻿var utils = new function(){
	this.addEventLister = function(args){
		var _eType = args.eType;
		var _ele = args.ele;
		var _fun = args.fun;
		var _params = args.params;
		args.$callBackFun = (function(){
			return function(ev){
				return _fun.call(_ele, ev || window.event,_params);
			};
		})();
		if(_ele.attachEvent){
			_ele.attachEvent("on" + _eType, args.$callBackFun);
		}else{
			_ele.addEventListener(_eType, args.$callBackFun, false);
		}
	};
	this.removeEventLister = function(args){
		var _eType = args.eType;
		var _ele = args.ele;
		if(_ele.attachEvent){
			_ele.detachEvent("on" + _eType, args.$callBackFun);
		}else{
			_ele.removeEventListener(_eType, args.$callBackFun, false);
		}
		args.$callBackFun = null;
	};
	this.bLength = function(str){
		var _length = 0;
		for(var i = 0, len = str.length; i < len; i++){
			var _cStr = str.charCodeAt(i);
			if((_cStr < 0X4E00 || _cStr > 0X9FA5) && _cStr != 12288){
				_length++
			}else{
				_length+=2
			}
		}
		return _length;
	};
	this.getCheckTime = function(){return (new Date()).getTime();};
	this.set_Cookie = function(cookieName,cookieValue,domainPath){
		if(!domainPath){domainPath = "sina.com.cn";}
		var _cookieStr = [
			cookieName + "=" + cookieValue,
			"expires=" + (new Date((new Date()).getTime() + 90 * 24 * 3600 * 1000)).toGMTString(),
			"path=/;domain=" + domainPath
		];
		document.cookie = _cookieStr.join(";");
	}
	this.get_Cookie = function(cookieName){
		var _cookieString = document.cookie;
		var _start = _cookieString.indexOf(cookieName + '=');
		if (_start == -1){return null;};
		_start += cookieName.length + 1;
		var _end = _cookieString.indexOf(';', _start);
		if (_end == -1){
			return unescape(_cookieString.substring(_start));
		}
		return unescape(_cookieString.substring(_start, _end));
	}
	this.checkMail = function (/* string */eml) {
		if(!/^[\.\w]([(\/)(\-)(\+).\w])*@([(\-)\w]{1,64}\.){1,7}[(\-)\w]{1,64}$/.test(eml)){
			return false;
		} else {
			if(eml && eml != "" && (eml.indexOf("@") != -1)){
				var indexOfA = eml.indexOf("@");
				var name = eml.substring(0, indexOfA);
				if(name.length >64 || eml.length > 256){
					return false;
				} else {
					return true;
				}
			}
		}
		return false;
	};
	this.loadJs = function(src,successFun,charset_t){
		try{
			charset_t = charset_t || "utf-8";
			var _js = document.createElement("script");
			_js.setAttribute("type", "text/javascript");
			_js.setAttribute("src", src);
			_js.setAttribute("charset",charset_t);
			document.getElementsByTagName("head")[0].appendChild(_js);
			if (this.BrowserEnv.ie) {
				if(successFun){
					_js.onreadystatechange = function(){
						if(_js.readyState != "loaded" || _js.readyState != "complete"){successFun();}
					}
				}
			} else {
				if(successFun){_js.onload = successFun;}
			}
		}catch(e){}
	};
	this.BrowserEnv = new function(){
		var _dua = navigator.userAgent;
		var _dav = navigator.appVersion;
		this.ver = parseFloat(_dav);
		this.os = {};
		this.os.mac = _dav.indexOf("Macintosh") >= 0;
		this.os.win = _dav.indexOf("Windows") >= 0;
		this.os.linux = _dav.indexOf("X11") >= 0;
		this.opera = _dua.indexOf("Opera") >= 0;
		this.safari = _dav.indexOf("Safari") >= 0;
		this.khtml = (_dav.indexOf("Konqueror") >= 0) || (this.safari);
		this.mozilla = (_dua.indexOf("Gecko") >= 0) && (!this.khtml);
		this.ie = (!this.opera) && ( _dav.indexOf("MSIE")>=0);
		this.ie50 = this.ie && _dav.indexOf("MSIE 5.0")>=0;
		this.ie55 = this.ie && _dav.indexOf("MSIE 5.5")>=0;
		this.ie60 = this.ie && _dav.indexOf("MSIE 6.0")>=0;
		this.ie70 = this.ie && _dav.indexOf("MSIE 7.0")>=0;
	};
	this.groupData = function(data_t, order_t,formatFun_t){
		var _groupList = [];
		var _groupData = [];
		var _formatFun = formatFun_t || function(item_t){return item_t;};
		var _getObjByGroup = function(key_t){
			for(var i = 0,len = _groupData.length; i < len; i++){
				if(_groupData[i].group == key_t){
					return _groupData[i];
				}
			}
			var _newGroup = {group:key_t,itemList:[]};
			_groupList.push(key_t);
			_groupData.push(_newGroup);
			return _newGroup;
		}
		if(data_t){
			for(var i = 0, len = data_t.length; i < len; i++){
				var _item = _getObjByGroup(data_t[i][order_t]);
				_item.itemList.push(_formatFun(data_t[i]));
			}
		}
		return {groupList:_groupList,groupData:_groupData};
	};
	this.getQuery = function(str_t,name_t){
		var _reg = new RegExp("(^|&)"+ name_t +"=([^&]*)(&|$)");
		var _r = str_t.substr(str_t.indexOf("\?")+1).match(_reg);
		if (_r!=null){
			return decodeURIComponent(_r[2]);
		}
		return null;
	};
	this.getAbsolute = function (id_t){
		var _returnObj = {"left":0,"top":0};
		var _dom=document.getElementById(id_t);
		while(_dom.offsetTop||_dom.offsetLeft){
			_returnObj.left += _dom.offsetLeft;
			_returnObj.top += _dom.offsetTop;
			_dom = _dom.parentNode;
		}
		return _returnObj;
	};
};

