﻿//<![CDATA[ 
(function() {
/*
* JSoul 1.8.10.28 - Base Library
*
* Copyright (c) 2008 Clear Hu(1stcore.com)
* Yeeoh Teem
*
* The lastest fixed date:2008-10-28 12:00
*/
/*******************JSoul原型扩展方法 [方法类型]******************/
//JSoul.fn.extend({
//	instanceFunction:function(arg){
//	/// <summary>方法介绍</summary>
//	/// <param name="arg">参数</param>
//	/// <returns type="JSoul" />
//		this.each(function(i){
//			//Do something...
//		});
//		return this;
//	}
//});
/*******************JSoul静态扩展方法 [方法类型]******************/
//JSoul.extend({
//	staticFunction:function(item, arg){
//	/// <summary>绑定事件</summary>
//	/// <param name="elem">对象</param>
//	/// <param name="arg">参数</param>
//		//Do something...
//	}
//});
//检测Iframe
//if(window!=parent) {
//	alert("Warning! The Iframe of behavior is invalid!");
//	document.location="http://www.1stcore.com";
//}
String.prototype.trim = function() {
	/// <summary>刪除字符串前后空格</summary>
	/// <returns type="String" />
	return this.replace(/(^\s*)|(\s*$)/g, "");
};
String.prototype.toHtml = function() {
	/// <summary>取消转义字符</summary>
	/// <returns type="String" />
	var RexStr = /&lt;|&gt;|&quot;|&#39;|&amp;/ig;
	return this.replace(RexStr, function(MatchStr) {
		switch (MatchStr) {
			case "&lt;":
				return "<";
			case "&gt;":
				return ">";
			case "&quot;":
				return "\"";
			case "&#39;":
				return "'";
			case "&amp;":
				return "&";
			default:
				break;
		}
	});
};
Array.prototype.Foreach = function(delegate) {
	/// <summary>遍历數組</summary>
	/// <param name="delegate" type="Function">委托表达式</param>
	for (var i = 0, j = this.length; i < j; i++) {
		delegate.call(this[i], i);
	}
};
Array.prototype.AddRange = function(itemList) {
	/// <summary>添加數組</summary>
	/// <param name="itemList" type="Array">添加的对象列表</param>
	/// <returns type="Array" />
	for (var i = 0, j = itemList.length; i < j; i++) {
		this.push(itemList[i]);
	}
	return this;
};
Array.prototype.Swap = function(indexA, indexB) {
	/// <summary>交换元素位置</summary>
	/// <param name="indexA" type="Number">元素A索引</param>
	/// <param name="indexB" type="Number">元素B索引</param>
	/// <returns type="Array" />
	if (this.length > indexA && this.length > indexB) {
		var cache = this[indexA];
		this[indexA] = this[indexB];
		this[indexB] = cache;
	}
	return this;
};
Array.prototype.SwapBefore = function(indexA, indexB) {
	/// <summary>将元素B放到元素A前</summary>
	/// <param name="indexA" type="Number">元素A索引</param>
	/// <param name="indexB" type="Number">元素B索引</param>
	/// <returns type="Array" />
	if (indexA != indexB && this.length > indexA && this.length > indexB) {
		var cache = [],_objA = this[indexA], _objB = this[indexB];
		for (var i = 0, j = this.length; i < j; i++) {
			if(this[i]==_objA){
				cache.push(_objB);
			}
			if(this[i]!=_objB){
				cache.push(this[i]);
			}
		}
		return cache;
	}
	return this;
};
Array.prototype.SwapAfter = function(indexA, indexB) {
	/// <summary>将元素B放到元素A后</summary>
	/// <param name="indexA" type="Number">元素A索引</param>
	/// <param name="indexB" type="Number">元素B索引</param>
	/// <returns type="Array" />
	if (indexA != indexB && this.length > indexA && this.length > indexB) {
		var cache = [],_objA = this[indexA], _objB = this[indexB];
		for (var i = 0, j = this.length; i < j; i++) {
			if(this[i]!=_objB){
				cache.push(this[i]);
			}
			if(_objA == this[i]){
				cache.push(_objB);
			}
		}
		return cache;
	}
	return this;
};
Array.prototype.insertAfter = function(item, index) {
	/// <summary>将元素插入指定索引之后</summary>
	/// <param name="item" type="Object">元素</param>
	/// <param name="index" type="Number">元素索引</param>
	/// <returns type="Array" />
	if (this.length > 0 && this.length > index) {
		var _obj;
		for (var i = 0, j = this.length; i < j; i++) {
			if(i == index){
				_obj = this[i + 1];
				this[i + 1] = item;
			}else if(i > index){
				this[i + 1] = _obj;
				_obj = this[i + 2];
			}
		}
	}
	return this;
};
Array.prototype.Remove = function(item) {
	/// <summary>刪除數組子元素</summary>
	/// <param name="item" type="Object">删除的对象</param>
	/// <returns type="Object" />
	for (var i = 0, j = this.length; i < j; i++) {
		if (this[i] == item) {
			return this.splice(i, 1);
		}
	}
};
Array.prototype.RemoveObject = function(attrName, value) {
	/// <summary>刪除數組子对象</summary>
	/// <param name="attrName" type="String">属性名称</param>
	/// <param name="value" type="String">属性值</param>
	/// <returns type="Object" />
	for (var i = 0, j = this.length; i < j; i++) {
		if (this[i][attrName] == value) {
			return this.splice(i, 1);
		}
	}
};
Date.prototype.addYear = function(num) {
	/// <summary>设置年数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setFullYear(this.getFullYear() + num);
	return this;
};
Date.prototype.addMonth = function(num) {
	/// <summary>设置月数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setMonth(this.getMonth() + num);
	return this;
};
Date.prototype.addDay = function(num) {
	/// <summary>设置天数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setDate(this.getDate() + num);
	return this;
};
Date.prototype.addHour = function(num) {
	/// <summary>设置小时数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setHours(this.getHours() + num);
	return this;
};
Date.prototype.addMinute = function(num) {
	/// <summary>设置分钟数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setMinutes(this.getMinutes() + num);
	return this;
};
Date.prototype.addSecond = function(num) {
	/// <summary>设置秒数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setSeconds(this.getSeconds() + num);
	return this;
};
Date.prototype.addMS = function(num) {
	/// <summary>设置毫秒数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setMilliseconds(this.getMilliseconds() + num);
	return this;
};
Date.prototype.addWeek = function(num) {
	/// <summary>设置周数</summary>
	/// <param name="num" type="Number">要添加的时间数</param>
	/// <returns type="Date" />
	this.setDate(this.getDate() + num * 7);
	return this;
};
/*******************对象选择器******************/
var JSoul;
JSoul = window.JSoul = function(selector, context) {
	/// <summary>JSoul对象</summary>
	/// <param name="selector" type="String | DocumentNode">选择器表达式</param>
	/// <param name="context" type="DocumentNode">上下文对象</param>
	/// <returns type="JSoul" />
	return new JSoul.prototype.Init(selector, context);
};
/*******************JSoul核心******************/
JSoul.fn = JSoul.prototype = {
	Init: function(selector, context) {
		/// <summary>初始化选择器</summary>
		/// <param name="selector" type="String | DocumentNode">选择器表达式</param>
		/// <param name="context" type="DocumentNode">上下文对象</param>
		/// <returns type="JSoul" />
		//保证有效的选择器
		selector = selector || document;
		//如果为DOM Node
		if (selector.nodeType) {
			return this.setSingle(selector);
			//如果为HTML字符串
		} else if (typeof (selector) == "string") {
			return JSoul(context).find(selector);
		}
		return this.setArray(
		// 匹配数组: $(array)
	selector.constructor == Array && selector ||
		// 匹配伪数组DOM nodes: $(arraylike)
	(selector.jsoul || selector.length && selector != window && !selector.nodeType && selector[0] !== undefined && selector[0].nodeType) && JSoul.makeArray(selector) ||
		// 匹配: $(*)
	[selector]);
	},
	setSingle: function(item) {
		/// <summary>设置单个对象</summary>
		/// <param name="item" type="DocumentNode">对象</param>
		/// <returns type="JSoul" />
		this[0] = item;
		this.length = 1;
		return this;
	},
	length: 0,
	jsoul: "1.0.0.0",
	get: function(num) {
		///<summary>得到一个指定索引对象</summary>
		///<param name="num" type="Number" optional="true">(optional) 查询的位置</param>
		///<returns type="JSoul" />
		return num === undefined ?
		///<summary>匹配DOM</summary>
		///<param name="num" type="Number" optional="true">(optional) 查询的位置</param>
		///<returns type="Array" />
		// 返回一个干净的 array
		JSoul.makeArray(this) :
		// 返回匹配对象
		this[num];
	},
	pushStack: function(elems) {
		///<summary>使对象继承JSoul</summary>
		///<param name="elems" type="Array" optional="true">(optional) 对象</param>
		///<returns type="JSoul" />
		var ret = JSoul(elems);
		// 添加对象引用
		ret.prevObject = this;
		this.nextObject = ret;
		// 返回一个新的对象
		return ret;
	},
	setArray: function(elems) {
		/// <summary>设置为JSoul对象</summary>
		/// <param name="elems" type="Array">对象数组</param>
		/// <returns type="JSoul" />
		this.length = 0;
		Array.prototype.push.apply(this, elems);
		return this;
	},
	find: function(selector) {
		/// <summary>查找对象</summary>
		/// <param name="selector" type="String">选择器表达式</param>
		/// <returns type="JSoul" />
		var elems = JSoul.map(this, function(elem) {
			return JSoul.find(selector, elem);
		});
		return this.pushStack(elems);
	},
	marge: function(context) {
		/// <summary>加入对象</summary>
		/// <param name="context" type="JSoul">合并的对象</param>
		/// <returns type="JSoul" />
		Array.prototype.push.apply(this, JSoul.makeArray(context));
		return this;
	},
	each: function(func) {
		/// <summary>遍历对象</summary>
		/// <param name="func" type="Function">遍历方法</param>
		for (var i = 0, j = this.length; i < j; i++) {
			func.call(this[i], i);
		}
	},
	forEach: function(func) {
		/// <summary>委托方法 function(elem,index)</summary>
		/// <returns type="JSoul" />
		this.each(function(i) {
			func(this, i);
		});
		return this;
	},
	initAttr: function(name, value) {
		/// <summary>初始化对象属性</summary>
		///<param name="name" type="String">属性名</param>
		///<param name="value" type="String">属性值</param>
		/// <returns type="JSoul" />
		this[name] = value
		return this;
	}
};
window.$ = JSoul;
// Give the init function the jQuery prototype for later instantiation
//为JSoul接续的实例得到Init函数
JSoul.prototype.Init.prototype = JSoul.prototype;
JSoul.extend = JSoul.fn.extend = function(properties) {
	/// <summary>静态方法扩展JSoul.extend与原型扩展JSoul.fn.extend</summary>
	/// <param name="properties" type="Collection">方法属性集合</param>
	for (var i in properties) {
		this[i] = properties[i];
	}
};
/*******************JSoul核心静态支持方法******************/
//静态方法扩展
JSoul.extend({
	makeArray: function(array) {
		///<summary>设置为一个数组</summary>
		///<param name="array" type="Array">数组对象</param>
		///<returns type="Array" />
		var ret = [];
		// 将Node list转为array
		if (typeof (array) != "array") {
			for (var i = 0, length = array.length; i < length; i++) {
				ret.push(array[i]);
			}
		} else {
			ret = array.slice(0);
		}
		return ret;
	},
	map: function(elems, callback) {
		/// <summary>影射对象</summary>
		/// <param name="elems" type="Array">对象</param>
		/// <param name="callback" type="Function">回调方法</param>
		/// <returns type="Array" />
		var ret = [];
		for (var i = 0, j = elems.length; i < j; i++) {
			var value = callback(elems[i], i);
			if (value !== null && value !== undefined) {
				if (value.constructor != Array) {
					value = [value];
				}
				ret = ret.concat(value);
			}
		}
		return ret;
	},
	find: function(selector, context) {
		/// <summary>查找对象</summary>
		/// <param name="selector" type="String">选择器表达式</param>
		/// <param name="context" type="DocumentNode">上下文对象</param>
		/// <returns type="JSoul" />
		context = context || document;
		//匹配ID[#],ATTR[$],TAG[]
		var match = /^(.)/.exec(selector);
		//如果匹配到格式
		if (match && match[1]) {
			switch (match[1]) {
				case "#": return JSoul.getByID(JSoul.replaceToSplit(selector, "#"), context);
				case "$": return JSoul.getByAttr(JSoul.replaceToSplit(selector, "$"), context);
				case ">": return JSoul.getByFormSub(JSoul.replaceToSplit(selector, ">"), context);
				case "@": return JSoul.getByFrames(JSoul.replaceToSplit(selector, "@"), context);
				default: return JSoul.getByTag(JSoul.replaceToSplit(selector, ""), context);
			}
		}
	},
	getByID: function(names, context) {
		/// <summary>设置通过ID得到的对象 $("#aa,bb,cc,dd")</summary>
		/// <param name="names" type="Array">名称数组</param>
		/// <param name="context" type="DocumentNode">上下文对象</param>
		/// <returns type="Array" />
		var ret = [];
		for (var i = 0, j = names.length; i < j; i++) {
			var item = document.getElementById(JSoul.trim(names[i]));
			if (item) {
				ret.push(item);
			}
		}
		return ret;
	},
	getByTag: function(names, context) {
		/// <summary>设置通过Tag得到的对象 $("div,a,ul,dl")</summary>
		/// <param name="names" type="Array">名称数组</param>
		/// <param name="context" type="DocumentNode">上下文对象</param>
		/// <returns type="Array" />
		var ret = [];
		for (var i = 0, j = names.length; i < j; i++) {
			var items = context.getElementsByTagName(JSoul.trim(names[i]));
			for (var m = 0, n = items.length; m < n; m++) {
				ret.push(items[m]);
			}
		}
		return ret;
	},
	getByAttr: function(names, context) {
		/// <summary>设置通过属性得到的对象 $("$form|div,className|id|name,aa|form1|*choosed")</summary>
		/// <param name="names" type="Array">名称数组</param>
		/// <param name="context" type="DocumentNode">上下文对象</param>
		/// <returns type="Array" />
		var ret = [];
		if (names.length == 3) {
			var _tags = names[0].split("|"), _attrNames = names[1].split("|"), _attrValues = names[2] == "*" ? "*" : names[2].split("|");
			ret = JSoul.getByTag(_tags, context);
			for (var i = 0, j = ret.length; i < j; i++) {
				if (!JSoul.checkAttr(ret[i], _attrNames, _attrValues)) {
					ret.splice(i, 1);
					i--; j--;
				}
			}
		}
		return ret;
	},
	checkAttr: function(item, attrNames, attrValues) {
		/// <summary>检查属性值是否成立</summary>
		/// <param name="item" type="Object">对象</param>
		/// <param name="attrNames" type="String">属性名称</param>
		/// <param name="attrValues" type="Object">属性值</param>
		/// <returns type="Boolean" />
		for (var m = 0, n = attrNames.length; m < n; m++) {
			if (item[attrNames[m]]) {
				for (var x = 0, y = attrValues.length; x < y; x++) {
					if (attrValues == "*" || item[attrNames[m]] == attrValues[x] 
						|| (/^\*/.test(attrValues[x]) && item[attrNames[m]].indexOf(attrValues[x].replace("*","")) > -1)) {
						return true;
					}
				}
			}
		}
		return false;
	},
	getByFormSub: function(names, context) {
		/// <summary>设置通过form name得到的对象 form.(">aa,bb,cc,dd")</summary>
		/// <param name="names" type="Array">名称数组</param>
		/// <param name="context" type="DocumentNode">上下文对象</param>
		/// <returns type="Array" />
		var ret = [];
		if (context && context.tagName == "FORM") {
			for (var i = 0, j = names.length; i < j; i++) {
				var item = context[JSoul.trim(names[i])];
				if (item) {
					ret.push(item);
				}
			}
		}
		return ret;
	},
	getByFrames: function(names, context) {
		/// <summary>设置通过Frames name得到的对象 Frame.("@aa,bb,cc,dd")</summary>
		/// <param name="names" type="Array">名称数组</param>
		/// <param name="context" type="DocumentNode">上下文对象</param>
		/// <returns type="Array" />
		var ret = [];
		for (var i = 0, j = names.length; i < j; i++) {
			var item = window.frames[JSoul.trim(names[i])];
			if (item) {
				ret.push(item);
			}
		}
		return ret;
	}
});
/*******************JSoul静态方法扩展 [浏览器设置]******************/
var userAgent = navigator.userAgent.toLowerCase();
JSoul.extend({
	browser: {
		///<summary>客户端浏览器设置</summary>
		version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
		safari: /webkit/.test(userAgent),
		opera: /opera/.test(userAgent),
		msie: /msie/.test(userAgent) && !(/opera/.test(userAgent)),
		mozilla: /mozilla/.test(userAgent) && !(/(compatible|webkit)/.test(userAgent))
	},
	getCookie: function(name) {
		var cookie_start = document.cookie.indexOf(name);
		var cookie_end = document.cookie.indexOf(";", cookie_start);
		return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
	},
	setCookie: function(cookieName, cookieValue, seconds, path, domain, secure) {
		/// <summary>设置客户端Cookie</summary>
		/// <param name="id" type="String">客户端Cookie的ID名称</param>
		/// <param name="name" type="String">Cookie键</param>
		/// <param name="value" type="String">Cookie值</param>
		/// <param name="days" type="Number">记录天数</param>
		var expires = new Date();
		expires.setTime(expires.getTime() + seconds * 1000);
		document.cookie = escape(cookieName) + '=' + escape(cookieValue)
			+ (expires ? '; expires=' + expires.toGMTString() : '')
			+ (path ? '; path=' + path : '/')
			+ (domain ? '; domain=' + domain : '')
			+ (secure ? '; secure' : '');
	},
	root: document.documentElement,
	UrlRewrite: function(url) {
		///<summary>执行链接转向</summary>
		window.location = url;
	}
});
/*******************JSoul 静态方法扩展 [DOM加载检测]******************/
JSoul.extend({
	DomFuns: [],
	DomArgs: [],
	DomRun: function() {
		/// <summary>执行方法队列</summary>
		if (arguments.callee.done) { return; }
		else {
			arguments.callee.done = true;
			for (i = 0; i < JSoul.DomFuns.length; i++) { JSoul.DomFuns[i](JSoul.DomArgs[i]); }
		}
	},
	$: function(callback, args) {
		/// <summary>加载Onload事件</summary>
		/// <param name="callback" type="Function">需要加载的函数</param>
		/// <param name="args"  type="Object">函数的参数</param>
		this.DomFuns.push(arguments[0]);
		if (arguments.length > 1) { this.DomArgs.push(arguments[1]); }
		else { this.DomArgs.push(""); }
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded", JSoul.DomRun, null);
		}
		if (/KHTML|WebKit/i.test(navigator.userAgent)) {
			var _timer = setInterval(function() {
				if (/loaded|complete/.test(document.readyState)) {
					clearInterval(_timer);
					delete _timer;
					JSoul.DomRun();
				}
			}, 10);
		}
		if (this.browser.msie) {
			var proto = "src='javascript:void(0)'";
			if (location.protocol == "https:") { proto = "src=//0"; }
			document.write("<scr" + "ipt id=__ie_onload defer " + proto + "><\/scr" + "ipt>");
			var script = document.getElementById("__ie_onload");
			script.onreadystatechange = function() {
				if (this.readyState == "complete") {
					JSoul.DomRun();
				}
			};
		}
		window.onload = JSoul.DomRun;
	}
});
/*******************ajax组件 [原型扩展]******************/
JSoul.extend({
	$x: function(url, method, onload, onerror, postStr, relate, stateArray) {
		/// <summary>ajax控件</summary>
		/// <param name="url" type="String">服务器接收URL</param>
		/// <param name="method" type="String">发送数据方法 [ POST | GET ]</param>
		/// <param name="onload" type="Function">数据读取完成事件</param>
		/// <param name="onerror" type="Function">错误事件</param>
		/// <param name="postStr" type="String">POST数据</param>
		/// <param name="relate" type="Object">上下文关联对象</param>
		/// <param name="stateArray" type="Array">状态方法</param>
		this.url = url;
		this.req = null;
		this.method = method;
		this.onload = onload;
		this.postStr = postStr;
		this.onerror = (onerror) ? onerror : this.defaultError;
		this.rel = relate;
		this.stateNum = (stateArray) ? stateArray : false;
		this.Init();
	},
	/**
	 * Get ajax Json
	 * @param {Object} url
	 * @param {Object} callback callball(Json)
	 */
	$xJson: function(url, callback){
		new $.$x(url, "post", function(){
			callback(eval("("+this.req.responseText+")"));
		});
	},
	/**
	 * Get ajax text
	 * @param {Object} url
	 * @param {Object} callback callball(Text)
	 */
	$xText: function(url, callback){
		new $.$x(url, "post", function(){
			callback(this.req.responseText);
		});
	},
	/**
	 * Get ajax xml
	 * @param {Object} url
	 * @param {Object} callback callball(XML)
	 */
	$xXML: function(url, callback){
		new $.$x(url, "post", function(){
			callback(this.req.responseXML);
		});
	}
});
JSoul.$x.prototype = {
	Init: function() {
		/// <summary>读取数据</summary>
		if (window.XMLHttpRequest) {
			this.req = new XMLHttpRequest();
			if (this.req.overrideMimeType) {
				this.req.overrideMimeType('text/xml');
			}
		} else if (window.ActiveXObject) {
			var MSXML = ["Msxml3.XMLHTTP", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
			for (var i = 0, j = MSXML.length; i < j; i++) {
				try {
					this.req = new ActiveXObject(MSXML[i]); break;
				} catch (e) { }
			}
		}
		if (this.req) {
			try {
				var loader = this;
				this.req.onreadystatechange = function() {
					loader.onReadyState.call(loader);
				};
				this.req.open(this.method, this.url, true);
				this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				this.req.send("");
			} catch (err) {
				this.onerror.call(this);
			}
		}
	},
	onReadyState: function() {
		/// <summary>读取状态</summary>
		var req = this.req;
		var ready = req.readyState;
		if (this.stateNum && ready >= 1 && ready <= 3) {
			this.stateNum[ready - 1].call(this);
		} else if (ready == 4) {
			var httpStatus = req.status;
			if (httpStatus == 200 || httpStatus === 0) {
				this.onload.call(this);
			} else {
				this.onerror.call(this);
			}
		}
	},
	defaultError: function() {
		/// <summary>读取错误</summary>
		alert("Data connection fail!" + "\n\nreadyState: " + this.req.readyState + "\nstatus: " + this.req.status + "\nheafers: " + this.req.getAllResponseHeaders());
	}
};
/*******************JSoul静态扩展方法 [字符串方法]******************/
JSoul.extend({
	replaceToSplit: function(text, flag, sign) {
		/// <summary>分割为名称数组</summary>
		/// <param name="text" type="String">字符串</param>
		/// <param name="flag" type="String">需要删除的标识</param>
		/// <param name="sign" type="String">分割符号</param>
		/// <returns type="Array" />
		return text.replace(flag || "", "").split(sign || ",");
	},
	trim: function(text) {
		///<summary>去除前后空格</summary>
		///<param name="text" type="String">字符串</param>
		///<returns type="String" />
		return (text || "").replace(/^\s+|\s+$/g, "");
	},
	parseXml: function(txt, tagName) {
		///<summary>解析XML</summary>
		///<param name="text" type="String">字符串</param>
		///<param name="tagName" type="String">标签名称</param>
		///<returns type="Array" />
		var regexp = new RegExp("<" + tagName + ".*>([\\s\\S]*)<\/" + tagName + ">", "ig");
		text = regexp.exec(text);
		var objArray = [];
		for (var i = 1, j = text.length; i < j; i++) {
			objArray.push(strObj[i]);
		}
		return objArray;
	},
	parseJson: function(text, tagName) {
		///<summary>解析Json</summary>
		///<param name="text" type="String">字符串</param>
		///<param name="tagName" type="String">标签名称</param>
		///<returns type="String" />
		var regexp = new RegExp("<" + tagName + ".*>([\\s\\S]*)<\/" + tagName + ">", "ig");
		text = regexp.exec(text);
		return text ? text[1] : null;
	},
	json: function(txt) {
		///<summary>转换Json为对象</summary>
		///<param name="text" type="String">字符串</param>
		///<returns type="Object" />
		return eval("(" + this.parseJson(txt, "string") + ")");
	},
	rex: {
		///<summary>匹配字符串</summary>
		buttons: /button|submit|reset/ig, //匹配所有按钮
		inputs: /textarea|text/ig, //匹配所有文本输入框
		text: /text/ig, //匹配单行文本输入框
		boxies: /checkbox|radio/ig, //匹配所有选择框
		select: /select/ig//匹配下拉菜单
	}
});
/*******************JSoul原型扩展方法 [事件设置]******************/
JSoul.fn.extend({
	bindEvent: function(pairs) {
		/// <summary>绑定事件</summary>
		/// <param name="pairs" type="Array">事件列表[["onclick",click],["onmoseover",moseover]]</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			this.Num = i;
			JSoul.bindEvent(this, pairs);
		});
		return this;
	},
	addEvent: function(method, func) {
		/// <summary>DOM方法添加事件</summary>
		/// <param name="method" type="String">事件名称 click</param>
		/// <param name="func" type="Function">引用的方法</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.addEvent(this, method, func);
		});
		return this;
	},
	run: function(method) {
		/// <summary>执行Document Node事件</summary>
		/// <param name="method" type="String">事件名称 click</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			this[method]();
		});
		return this;
	}
});
/*******************JSoul静态扩展方法 [事件设置]******************/
JSoul.extend({
	bindEvent: function(item, pairs) {
		/// <summary>绑定事件</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="pairs" type="Array">事件列表[["onclick",click],["onmoseover",moseover]]</param>
		for (var i = 0, j = pairs.length; i < j; i++) {
			JSoul.attr(item, pairs[i][0], pairs[i][1]);
		}
	},
	addEvent: function(item, method, Func) {
		/// <summary>DOM方法添加事件</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="method" type="String">事件名称 click</param>
		if (item.addEventListener) {
			item.addEventListener(method, Func, false);
		} else if (item.attachEvent) {
			item.attachEvent("on" + method, Func);
		} else {
			item["on" + method] = Func;
		}
	},
	stopBubble: function(e) {
		/// <summary>阻止事件冒泡</summary>
		if (e && e.stopPropagation) {
			e.stopPropagation();
		} else {
			window.event.cancelBubble = true;
		}
	},
	$e: function(e) {
		/// <summary>得到事件容器</summary>
		/// <param name="e" type="Event">DOM事件容器</param>
		/// <returns type="Event" />
		return e || window.event;
	},
	$eNode: function(e) {
		/// <summary>得到事件对象</summary>
		/// <param name="e" type="Event">DOM事件容器</param>
		/// <returns type="Event" />
		e = JSoul.$e(e);
		return e.target || e.srcElement;
	},
	$eKey: function(e) {
		/// <summary>得到键盘按键ID</summary>
		/// <param name="e" type="Event">DOM事件容器</param>
		/// <returns type="Event" />
		e = JSoul.$e(e);
		return e.keyCode || e.which;
	},
	$eKeyNumber: function(e) {
		/// <summary>限制输入数字</summary>
		/// <param name="e" type="Event">DOM事件容器</param>
		/// <returns type="Boolean" />
		var Keys = JSoul.$eKey(e);
		if ((Keys < 48 || Keys > 57) && (Keys < 96 || Keys > 105) && Keys != 8 && Keys != 9 && Keys != 46) {
			return false;
		}
	},
	setRelate: function(Main, listA, listB, callback) {
		/// <summary>关联对象</summary>
		/// <param name="Main" type="JSoul">JSoul父对象</param>
		/// <param name="listA" type="Array">列表A</param>
		/// <param name="listB" type="Array">列表B</param>
		/// <param name="callback" type="Function">回调方法</param>
		/// <returns type="Boolean" />
		if (listA.length == listB.length) {
			for (var i = 0, j = listA.length; i < j; i++) {
				listA[i].Relate = listB[i];
				listB[i].Relate = listA[i];
				listA[i].Main = listB[i].Main = Main;
				if (callback) { callback(listA[i], listB[i]); }
			}
			return true;
		} else {
			return false;
		}
	}
});
/*******************JSoul原型扩展方法 [样式设置]******************/
JSoul.fn.extend({
	setStyle: function(name, value) {
		/// <summary>设置对象单独样式</summary>
		/// <param name="name" type="String">名称</param>
		/// <param name="value" type="Object">值</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.attr(this.style, name, value);
		});
		return this;
	},
	setAttr: function(name, value) {
		/// <summary>设置对象单独属性</summary>
		/// <param name="name" type="String">名称</param>
		/// <param name="value" type="Object">值</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.attr(this, name, value);
		});
		return this;
	},
	setAlpha: function(alpha) {
		/// <summary>设置对象透明度</summary>
		/// <param name="alpha" type="Number">透明度[1-100]</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.setAlpha(this, alpha);
		});
		return this;
	},
	css: function(cssExp) {
		/// <summary>设置对象样式 "color:#FFF;font-size: 12px;"</summary>
		/// <param name="cssExp" type="String">样式表达式</param>
		/// <returns type="JSoul" />
		var _pairs = JSoul.spliteCSSExp(cssExp);
		this.each(function(i) {
			JSoul.batchSetCss(this, _pairs);
		});
		return this;
	},
	cssForPairs: function(pairs) {
		/// <summary>设置对象样式 [{name:"",value:""}]</summary>
		/// <param name="cssExp" type="String">样式表达式</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.batchSetCss(this, pairs);
		});
		return this;
	},
	className: function(name) {
		/// <summary>设置样式表名称</summary>
		/// <param name="name" type="String">样式表名称<</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.attr(this, "className", name);
		});
		return this;
	},
	externalLinks: function() {
		/// <summary>设置弹出窗口链接</summary>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.externalLinks(this);
		});
		return this;
	}
});
/*******************JSoul静态扩展方法 [样式设置]******************/
JSoul.extend({
	attr: function(elem, name, value) {
		/// <summary>设置对象属性</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="name" type="String">名称</param>
		/// <param name="value" type="Object">值</param>
		elem[name] = value;
	},
	isAttr: function(elem, name, value) {
		/// <summary>属性是否成立</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="name" type="String">名称</param>
		/// <param name="value" type="Object">值</param>
		/// <returns type="JSoul" />
		return elem[name] && elem[name] == value;
	},
	attrSet: function(elem, name, value) {
		/// <summary>设置对象属性</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="name" type="String">名称</param>
		/// <param name="value" type="Object">值</param>
		elem.setAttribute(name, value);
	},
	batchAttrSet: function(elem, pairs) {
		/// <summary>批量设置属性 [[][]]</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="pairs" type="Array">名值对 [[][]]</param>
		for (var i = 0, j = pairs.length; i < j; i++) {
			JSoul.attrSet(elem, pairs[i][0], pairs[i][1]);
		}
	},
	setAlpha: function(elem, alpha) {
		/// <summary>设置对象透明度</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="alpha" type="Number">透明度[1-100]</param>
		/// <returns type="JSoul" />
		if (JSoul.browser.msie) {
			JSoul.attr(elem.style, "filter", "alpha(opacity=" + alpha + ")");
		} else { JSoul.attr(elem.style, "opacity", alpha / 100); }
	},
	spliteCSSExp: function(cssExp) {
		/// <summary>设置对象样式 "color:#FFF;font-size: 12px;" [{name:"",value:""}]</summary>
		/// <param name="cssExp" type="String">样式表达式</param>
		/// <returns type="Array" />
		cssExp = JSoul.styleToScript(cssExp);
		var nameValues = cssExp.split(";"), ret = [];
		for (var i = 0, j = nameValues.length; i < j; i++) {
			if (nameValues[i] !== "") {
				var pair = nameValues[i].split(":");
				ret.push({ name: JSoul.trim(pair[0]), value: JSoul.trim(pair[1]) });
			}
		}
		return ret;
	},
	batchSetCss: function(elem, pairs) {
		/// <summary>批量设置CSS [{name:"",value:""}]</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="pairs" type="Array">名值对</param>
		for (var i = 0, j = pairs.length; i < j; i++) {
			JSoul.attr(elem.style, pairs[i].name, pairs[i].value);
		}
	},
	css: function(elem, cssExp) {
		/// <summary>设置对象样式 "color:#FFF;font-size: 12px;"</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="cssExp" type="String">样式表达式</param>
		var _pairs = JSoul.spliteCSSExp(cssExp);
		JSoul.batchSetCss(elem, _pairs);
	},
	styleToScript: function(cssExp) {
		/// <summary>CSS转换为脚本格式 font-size -》fontSize</summary>
		/// <param name="cssExp" type="String">样式表达式</param>
		/// <returns type="String" />
		return cssExp.replace(/-\w/ig, function(MatchStr) {
			return MatchStr.slice(1).toUpperCase();
		});
	},
	externalLinks: function(anchor) {
		/// <summary>设置弹出窗口链接</summary>
		/// <param name="anchor" type="DocumentNode">链接对象</param>
		if (anchor.getAttribute("href")) {
			switch (anchor.getAttribute("rel")) {
				case "external": JSoul.batchAttrSet(anchor, [["className", "external"], ["target", "_blank"]]); break;
				default: break;
			}
		}
	}
});
/*******************JSoul原型扩展方法 [表单方法]******************/
JSoul.fn.extend({
	clearInputValue: function() {
		/// <summary>清除输入框的值</summary>
		/// <returns type="JSoul" />
		this.each(function(i) {
			if (JSoul.rex.inputs.test(this.type || this.tagName)) {
				JSoul.attr(this, "value", "");
			}
		});
		return this;
	},
	setDisabled: function(bool) {
		/// <summary>设置所有的按钮</summary>
		/// <param name="bool" type="Boolean">按钮状态</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.attr(this, "disabled", bool);
		});
		return this;
	},
	disabledAutoComplete: function() {
		/// <summary>禁止浏览器输入框的自动完成提示</summary>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.attrSet(this, "autocomplete", "off");
		});
		return this;
	},
	isCheckOn: function() {
		/// <summary>检查单选或多选是否被选中</summary>
		/// <returns type="Boolean" />
		if (JSoul.isFormSub(this, JSoul.rex.boxies)) {
			return JSoul.isCheckOn(this[0]);
		}
	},
	checkCount: function() {
		/// <summary>检查多選項目選中數目</summary>
		/// <returns type="Number" />
		if (JSoul.isFormSub(this, JSoul.rex.boxies)) {
			return JSoul.checkCount(this[0]);
		}
	},
	selectCount: function() {
		/// <summary>检查下拉多选总数</summary>
		/// <returns type="Number" />
		if (JSoul.isFormSub(this, JSoul.rex.select)) {
			return JSoul.selectCount(this[0]);
		}
	}
});
/*******************JSoul静态扩展方法 [表单方法]******************/
JSoul.extend({
	isFormSub: function(item, regx) {
		/// <summary>检查是否为表单中的元素</summary>
		/// <param name="item" type="JSoul">对象</param>
		/// <param name="regx" type="RegExp">匹配type的正则表达式</param>
		/// <returns type="Boolean" />
		return item.length > 0 && item[0].form && (regx.test(item[0].type || item[0].tagName));
	},
	isCheckOn: function(item) {
		/// <summary>检查当选或多选是否被选中</summary>
		/// <param name="item" type="Object">对象</param>
		/// <returns type="Boolean" />
		if (typeof (item.length) == "undefined") {
			return item.checked;
		} else {
			for (var i = 0, j = item.length; i < j; i++) {
				if (item[i].checked) {
					return true;
				}
			}
			return false;
		}
	},
	checkCount: function(item) {
		/// <summary>檢查多選項目選中數目</summary>
		/// <param name="item" type="Object">对象</param>
		/// <returns type="Number" />
		var _count = 0;
		if (typeof (item.length) != "undefined") {
			for (var i = 0, j = item.length; i < j; i++) {
				if (item[i].checked) {
					_count++;
				}
			}
		}
		return _count;
	},
	selectCount: function(item) {
		/// <summary>检查下拉多选总数</summary>
		/// <param name="item" type="Object">对象</param>
		/// <returns type="Number" />
		var _count = 0;
		for (var i = 0, j = item.options.length; i < j; i++) {
			if (item.options[i].selected) {
				_count++;
			}
		}
		return _count;
	}
});
/*******************JSoul原型扩展方法 [DOM方法]******************/
JSoul.fn.extend({
	cleanEmptyNode: function() {
		/// <summary>删除空白节点</summary>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.cleanEmptyNode(this);
		});
		return this;
	},
	insertBefore: function(node) {
		/// <summary>插入一个节点到当前节点前面</summary>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.insertBefore(this, node);
		});
		return this;
	},
	insertAfter: function(node) {
		/// <summary>插入一个节点到当前节点后面</summary>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.insertAfter(this, node);
		});
		return this;
	},
	insertLast: function(node) {
		/// <summary>插入一个节点到最后</summary>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.insertLast(this, node);
		});
		return this;
	},
	removeNode: function() {
		/// <summary>删除一个节点</summary>
		/// <returns type="JSoul" />
		this.each(function(i) {
			JSoul.removeNode(this);
		});
		return this;
	},
	partnerShip: function(Args) {
		/// <summary>分配对象组</summary>
		/// <param name="Args" type="Array">子对象关系表达式[[],[]]</param>
		/// <returns type="JSoul" />
		var Main = this;
		this.each(function(i) {
			JSoul.partnerShip(this, Main, Args[i]);
		});
		return this;
	}
});
/*******************JSoul静态扩展方法 [DOM方法]******************/
JSoul.extend({
	cleanEmptyNode: function(elem) {
		/// <summary>删除空白节点</summary>
		/// <param name="elem" type="DocumentNode">对象</param>
		//遍历element的子结点
		for (var i = 0; i < elem.childNodes.length; i++) {
			var node = elem.childNodes[i];
			//判断是否是空白文本结点，如果是，则删除该结点
			if (node.nodeType == 3 && !(/\S/.test(node.nodeValue))) {
				node.parentNode.removeChild(node);
			}
		}
	},
	$b: function(nodeName) {
		/// <summary>建立一个节点</summary>
		/// <param name="nodeName" type="String">节点名称</param>
		/// <returns type="node">Returns a reference to the element that is inserted into the document.</node>
		return document.createElement(nodeName);
	},
	$text: function(text) {
		/// <summary>建立一个文本节点</summary>
		/// <param name="text" type="String">文本</param>
		/// <returns type="node">Returns a reference to the element that is inserted into the document.</node>
		return document.createTextNode(text);
	},
	insertBefore: function(elem, node) {
		/// <summary>插入一个节点到当前节点前面</summary>
		/// <param name="elem" type="DocumentNode">对象</param>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <returns type="node">Returns a reference to the element that is inserted into the document.</node>
		return elem.parentNode.insertBefore(node, elem);
	},
	insertAfter: function(elem, node) {
		/// <summary>插入一个节点到当前节点后面</summary>
		/// <param name="elem" type="DocumentNode">对象</param>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <returns type="node">Returns a reference to the element that is inserted into the document.</node>
		if (elem.nextSibling){
			return elem.parentNode.insertBefore(node, elem.nextSibling); //插到对象后面
		}else{
			return elem.parentNode.appendChild(node); //插到对象父系最后
		}
	},
	insertLast: function(elem, node) {
		/// <summary>插入一个节点到最后</summary>
		/// <param name="elem" type="DocumentNode">对象</param>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <returns type="node">Returns a reference to the element that is inserted into the document.</node>
		return elem.appendChild(node);
	},
	removeNode: function(node) {
		/// <summary>删除一个节点</summary>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <returns type="node">Returns a reference to the object that is removed.</node>
		return node.parentNode.removeChild(node);
	},
	partnerShip: function(elem, oJSoul, Arg) {
		/// <summary>特效：滑行显示</summary>
		/// <param name="elem" type="Object">对象</param>
		/// <param name="oJSoul" type="JSoul">JSoul对象</param>
		/// <param name="Arg" type="Array">子对象关系表达式[]</param>
		oJSoul[Arg[0]] = JSoul.find(Arg[1], elem);
	},
	includeCss: function(cssFile, callback) {
		/// <summary>动态加载一个CSS</summary>
		/// <param name="cssFile" type="String">CSS URL</param>
		/// <param name="callback" type="Function">回调方法</param>
		/// <returns type="node" />
		var exCss = JSoul.$b("link");
		JSoul.batchAttrSet(exCss, [["rel", "stylesheet"], ["type", "text/css"], ["href", cssFile]]);
		JSoul("head").insertLast(exCss);
		if (JSoul.browser.msie || JSoul.browser.opera) {
			exCss.onload = function() {
				if (callback) { callback(); }
			}; /*
		exCss.onreadystatechange = function () {
			if (this.readyState == "complete") {
				alert('CSS onreadystatechange fired');
			}
		}*/
		} else {
			if (callback) { callback(); }
		}
		return exCss;
	},
	includeJS: function(jsFile, callback) {
		/// <summary>动态加载一个JS</summary>
		/// <param name="jsFile" type="String">JS URL</param>
		/// <param name="callback" type="Function">回调方法</param>
		/// <returns type="node" />
		var exJS = JSoul.$b("script");
		JSoul.batchAttrSet(exJS, [["type", "text/javascript"], ["src", jsFile]]);
		JSoul("head").insertLast(exJS);
		//for IE
		if (JSoul.browser.msie) {
			exJS.onreadystatechange = function() {
				if (this.readyState == "loaded") {
					if (callback) { callback(); }
				}
			};
			//for mozilla
		} else if (JSoul.browser.mozilla) {
			exJS.onload = function() {
				if (callback) { callback(); }
			};
			//for opera
		} else {
			if (callback) { callback(); }
		}
		return exJS;
	}
});
/*******************JSoul原型扩展方法 [拖拽方法]******************/
JSoul.fn.extend({
	Drag: function(startCallback, runCallback, endCallback) {
		/// <summary>拖拽事件</summary>
		/// <param name="startCallback" type="Object">鼠标按下时回调函数</param>
		/// <param name="runCallback" type="Object">鼠标移动时回调函数</param>
		/// <param name="endCallback" type="Object">鼠标释放时回调函数</param>
		/// <returns type="JSoul" />
		var Main = this;
		this.each(function(i) {
			JSoul.Drag(this, startCallback, runCallback, endCallback, Main);
		});
		return this;
	}
});
/*******************JSoul静态扩展方法 [拖拽方法]******************/
JSoul.extend({
	Drag: function(node, startCallback, runCallback, endCallback, Main) {
		/// <summary>拖拽事件</summary>
		/// <param name="node" type="DocumentNode">节点</param>
		/// <param name="startCallback" type="Object">鼠标按下时回调函数</param>
		/// <param name="runCallback" type="Object">鼠标移动时回调函数</param>
		/// <param name="endCallback" type="Object">鼠标释放时回调函数</param>
		/// <param name="Main" type="JSoul">关联父对象</param>
		node.start = startCallback;
		node.run = runCallback;
		node.end = endCallback;
		node.JSoul = Main;
		node.onmousedown = function(e) {
			if (this.start && this.start($.$e(e))) {
				if (this.setCapture) {
					this.setCapture();
				} else if (window.captureEvents) {
					e.preventDefault();
					window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP | Event.MOUSEOVER);
				}
				document.onmousemove = function(o) {
					if (node.run) { node.run($.$e(o)); }
				};
				document.onmouseup = function(o) {
					if (node.releaseCapture) {
						node.releaseCapture();
					} else if (window.captureEvents) {
						window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP | Event.MOUSEOVER);
					}
					if (node.end) { node.end($.$e(o)); }
					document.onmousemove = null;
					document.onmouseup = null;
				};
			}
		}
	}
});
/*******************JSoul静态扩展方法 [事件注册器]******************/
JSoul.extend({
	IProvider: function(func) {
		/// <summary>事件注册器</summary>
		/// <param name="func">负载对象</param>
		this.groups = [];
		this.state = false;
		this.func = func;
		this.register = function(groupName, obj, callBack) {
			/// <summary>注册对象</summary>
			/// <param name="groupName">分组名称</param>
			/// <param name="obj">对象</param>
			/// <param name="callBack">回调方法</param>
			this.groups.RemoveObject("Name",groupName);
			this.groups.push({ Name: groupName, Provider: obj, Func: callBack });
		};
		this.notifyRun = function(state, attchs) {
			/// <summary>执行状态改变</summary>
			/// <param name="attchs">附加对象</param>
			this.state = state;
			for (var i = 0, j = this.groups.length; i < j; i++) {
				this.groups[i].Provider[this.groups[i].Func](this.state, attchs);
			}
		};
		this.notify = function() {
			/// <summary>通知状态改变</summary>
			if(!this.func || (this.func && this.func.effect == 0)){
				this.notifyRun(!this.state);
			}
		};
	}
});
/*******************JSoul原型扩展方法 [延时方法类型]******************/
JSoul.fn.extend({
	initTimeOutEvent:function(delay,callback){
		/// <summary>初始化定时器事件</summary>
		/// <param name="delay" type="Number">延时毫秒</param>
		/// <param name="callback">回调方法名</param>
		/// <returns type="JSoul" />
		this.delay = delay;
		this.timeOutCallback = this[callback];
		return this;
	},
	initTimeIntervarEvent:function(interval,speed, callback){
		/// <summary>初始化计时器事件</summary>
		/// <param name="interval" type="Number">间隔毫秒</param>
		/// <param name="speed" type="Number">执行速度</param>
		/// <param name="callback">回调方法名</param>
		/// <returns type="JSoul" />
		this.interval = interval;
		this.speed = speed;
		this.timeIntervarCallback = this[callback];
		return this;
	},
	timeOutEvent:function(){
	/// <summary>定时器事件</summary>
	/// <returns type="JSoul" />
		var _obj = this;
		this.timeEventTimeout = setTimeout(function(){
			if(_obj.timeOutCallback){
				_obj.timeOutCallback();
			}else{
				clearTimeout(_obj.timeEventTimeout);
			}
		}, this.delay);
		return this;
	},
	timeIntervarEvent:function(){
		/// <summary>计时器事件</summary>
		/// <returns type="JSoul" />
		var _obj = this;
		this.timeEventInterval = setInterval(function(){
			if(_obj.timeIntervarCallback){
				_obj.timeIntervarCallback();
			}else{
				clearInterval(_obj.timeEventInterval);
			}
		}, this.interval);
		return this;
	},
	clearTimeEvent: function(){
		/// <summary>清除延时事件</summary>
		/// <returns type="JSoul" />
		if(this.timeEventTimeout){clearTimeout(this.timeEventTimeout)};
		if(this.timeEventInterval){clearInterval(this.timeEventInterval)};
		return this;
	}
});
})();
//]]>