//用于存储javascript类集合
var _class = new function(){};
var _method = new function(){};
//当前是ie浏览器
var isIE = !!window.ActiveXObject;
var isIE6 = isIE && !window.XMLHttpRequest;
var isIE8 = isIE && document.documentMode == 8 ? true : false;
var isIE7 = isIE && !isIE6 && !isIE8;
//当前的时区时间差
/*/在IE8下模拟IE7测试
isIE7 = true;
isIE8 = false;
//*/

// JavaScript Document
//(对象, 条件表达式, 赋值表达式, 赋值结果)
//(条件表达式, 赋值表达式,赋值结果)
//(对象, 取值表达式)
//(取值表达式)

//$("span?.class=good", ".class", "bad");

//$("span?input.type=hidden", ".value", "good")
//$("*span)")
function $(id, arg1, arg2, arg3, arg4){
	var obj;
	var objs = new Array();
	if(typeof(id) == 'object' && id != null){
		obj = id;
	}
	else if(typeof(id) == 'string'){
		var arr = id.split(':');
		if(arr.length > 1){
			return $(arr[0], arr[1], arg1, arg2);	
		}
		else{
			var s = id.charAt(0);
			if(id == ""){
				obj = document.body;
			}
			//新建一个节点
			else if(s == '@' && id.length > 1){
				obj = document.createElement(id.substr(1));
				if(typeof(arg1) == "string"){
					$(obj, "=", arg1);
					return $(obj, arg2, arg3, arg4);
				}
			}
			else if(s == "*" || s == ">" || s == "<" || s == "."){
				return $(document.body, id, arg1, arg2, arg3);
			}
			else if(s == "#"){
				return $($(document.body, "*"), id, arg1, arg2, arg3);
			}
			else{
				if(id.indexOf(",") != -1){
					var arr = id.split(',');
					for(var i = 0; i < arr.length; i++){
						arr[i] = $(id[i]);
					}
					return $(arr, arg1, arg2, arg3, arg4);
				}
				obj = document.getElementById(id);
				if(obj == null){
					var arr = document.getElementsByName(id);
					if(arr.length){
						var node = arr[0].nodeName.toLowerCase();
						if(node == "input" || node == "select" || node == "textarea"){
							obj = arr[0];
						}
					}
				}
			}
		}
	}
	else if(typeof(id) == 'number'){
		$[id.toString()] = function(value){
			return 	value + id;
		}
		return $[id.toString()];
	}
	else{
		return;
	}
	
	if(arg1 === null){
		if(!obj.nodeName){
			if(obj.length){
				for(var i = 0; i <obj.length; i++){
					$(obj[i], arg1);	
				}
			}
		}
		else{
			try{
				obj.parentNode.removeChild(obj);
			}
			catch(e){		
			}
		}
	}
	else if(arg1 == undefined){
		return obj;
	}
	else if(typeof(arg1) == 'string'){		
		var s = arg1.charAt(0);
		var arr = arg1.split("?");
		var v = arr[0].substr(arr[0].length - 1, 1);
		if(obj == null || obj == undefined){
			if(/[a-zA-Z\<\*]/.test(v)){
				return objs;	
			}
			else{
				return obj;	
			}
			arg1 = "";
		}
		//分割,字符串
		if(arg1.indexOf(',') != -1){
			var aa = arg1.split(',');
			for(var i = 0; i < aa.length; i++){
				objs = objs.concat($(obj, aa[i]));
			}
			arg1 = "";
		}
		//作为间隔
		else if(s == ' '){
			objs = obj;
			arg1 = arg1.substr(1, arg1.length - 1);
		}
		//作为判断
		else if(s == '?'){			
			var nodes;
			if(!obj.nodeName){
				nodes = obj;	
			}
			else{
				nodes[0] = obj;
			}
			arg1 = arg1.substr(1, arg1.length - 1);
			var ss = arg1.split(' ');
			var arr = ss[0].split('=');
			if(ss.length > 1){
				arg1 = arg1.substr(ss[0].length, arg1.length - ss[0].length);
			}
			else{
				arg1 = "";
			}
			if(arr.length > 1){
				if(arr[0] == ""){
					arr[0] = "=";	
				}
				for(var i = 0; i < nodes.length; i++){
					if($(nodes[i], arr[0]) == arr[1]){
						objs = objs.concat(nodes[i]);
					}
				}
			}
			//return $(objs, arg2, arg3);
		}
		//所有节点========================================================================
		else if(s == '*'){
			arg1 = arg1.substr(1, arg1.length - 1);
			var nodes = new Array();
			if(!obj.nodeName){
				nodes = obj[0].childNodes;
			}
			else{
				nodes = obj.childNodes;
			}
			for(var i = 0; i < nodes.length; i++){
				if(nodes[i].nodeName && nodes[i].nodeName.toLowerCase() == "#text"){
					if(nodes[i].nodeValue.replace(/\r|\s|\n/g, "") != ""){
						objs = objs.concat(nodes[i]);
					}
				}
				else{
					objs = objs.concat(nodes[i]);
				}
				if(nodes[i].hasChildNodes()){
					var temps = $(nodes[i], "*");
					if(temps){
						objs = objs.concat(temps);
					}
				}
			}
		}
		//节点名========================================================================
		else if(/[a-zA-Z]|#/.test(s)){
			var name = arg1.charAt(0);
			for(var i = 1; i < arg1.length; i++){
				if(name == "h" && i == 1 && /[0-9]/.test(arg1.charAt(i))){
					name += arg1.charAt(i);
					break;
				}
				if(/[a-zA-Z]/.test(arg1.charAt(i))){
					name += arg1.charAt(i);
				}
				else{
					break;
				}
			}
			//alert(arg1 + " : " + name);
			arg1 = arg1.substr(name.length, arg1.length - name.length);
			//*/
			var nodes;
			if(!obj.nodeName){
				for(var i = 0; i < obj.length; i++){
					if(obj[i].nodeName && obj[i].nodeName.toLowerCase() == name.toLowerCase()){
						objs = objs.concat(obj[i]);
					}
				}
			}
			else{
				if(obj != undefined){
					if(name == "#text"){
						objs = $(obj, "*", name);
					}
					else{
						var arr = obj.getElementsByTagName(name);
						objs = new Array();
						for(var i = 0; i < arr.length; i++){
							objs[i] = arr[i];	
						}
					}
				}
			}
			/*/
			for(var i = 0; i < nodes.length; i++){
				if(nodes[i].nodeName && nodes[i].nodeName.toLowerCase() == name.toLowerCase()){
					objs = objs.concat(nodes[i]);
				}
			}
			//*/
		}
		
		//标签序号========================================================================
		else if((/[0-9]/).test(s)){
			var num = arg1.charAt(0);
			for(var i = 1; i < arg1.length; i++){
				if((/[0-9]/).test(arg1.charAt(i))){
					num += arg1.charAt(i);
				}
				else{
					break;
				}
			}
			arg1 = arg1.substr(num.length, arg1.length - num.length);
			
			if(!obj.nodeName){
				objs = obj[parseInt(num)];
			}
			else{
				objs = obj.childNodes[parseInt(num)];
			}
		}
		//子节点========================================================================
		else if(s == '<'){
			arg1 = arg1.substr(1, arg1.length - 1);
			if(!obj.nodeName){
				for(var i = 0; i < obj.length; i++){
					objs[i] = $(obj[i], "<");
				}
			}
			else{
				var nodes = obj.childNodes;
				for(var i = 0; i < nodes.length; i++){
					if(nodes[i].nodeName && nodes[i].nodeName.toLowerCase() == "#text"){
						if(nodes[i].nodeValue.replace(/\s|\n/g, "") != ""){
							objs = objs.concat(nodes[i]);
						}
					}
					else{
						objs = objs.concat(nodes[i]);
					}
				}
			}
		}
		
		//当前节点或第一个节点========================================================================
		else if(s == '>'){
			arg1 = arg1.substr(1, arg1.length - 1);
			if(!obj.nodeName){
				objs = obj[0];
			}
			else{
				objs = obj;
			}
		}
		//表示父级========================================================================
		else if(s == '^'){
			arg1 = arg1.substr(1, arg1.length - 1);
			var name = "";
			if(arg1.length > 0){
				if(/[a-zA-Z]/.test(arg1.charAt(0))){
					var name = arg1.charAt(0);
					for(var i = 1; i < arg1.length; i++){
						if((/[a-zA-Z]/).test(arg1.charAt(i))){
							name += arg1.charAt(i);
						}
						else{
							break;
						}
					}
				}
			}
			if(!obj.nodeName){
				for(var i = 0; i < obj.length; i++){
					objs[i] = $(obj[i], "^" + name);
				}
			}
			else{
				objs = obj.parentNode;
				if(name != ""){
					while(objs.parentNode){
						if(objs.nodeName.toLowerCase() == name){
							break;
						}
						else{
							objs = objs.parentNode;
						}
					}
					if(objs.nodeName.toLowerCase() != name){
						arg1 = null;	
					}
					arg1 = arg1.substr(name.length, arg1.length - name.length);
				}
			}
		}
		//赋值========================================================================
		else if(s == '='){
			if(arg2 == undefined){
				if(!obj.nodeName){
					var arr = new Array();
					for(var i = 0; i < obj.length; i++){
						arr[i] = $(obj[i], "=");
					}
					return arr;
				}
				else{
					if(obj && obj.nodeName.toLowerCase() == "#text"){
						return obj.nodeValue.replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&nbsp;/g, " ");
					}
					else if(obj && (obj.nodeName.toLowerCase() == "input" || obj.nodeName.toLowerCase() == "select")){
						return $(obj, _value);
					}
					else{
						return obj.innerHTML;
					}
				}
			}
			else{
				if(!obj.nodeName){
					for(var i = 0; i < obj.length; i++){
						$(obj[i], "=", arg2);
					}
				}
				else{
					//如果是文本节点
					if(obj && obj.nodeName.toLowerCase() == "#text"){
						obj.nodeValue = arg2;
					}
					//如果是表单
					else if(obj && (obj.nodeName.toLowerCase() == "input" || obj.nodeName.toLowerCase() == "select")){
						return $(obj, _value, arg2);
					}
					else{
						//*/
						//加载或者执行javascript
						var cR = /\<link(.|\n|\r)*?\/\>/;//link开始
						var hrefR = /href\=['"]*[^\s\r\n\>'"]*/;
						var sR = /\<script(.|\n|\r)*?\<\/script\>/;//完整的script
						var startR = /\<script(.|\n|\r)*?\>/;//script开始
						var endR = /\<\/script\>/;//script结束
						var urlR = /src\=['"]*[^\s\r\n\>'"]*/;
						var styleR = /\<style(.|\n|\r)*?\<\/style\>/;//完整的style
						var es = new Array();//需要执行的script
						var ss = new Array();//需要加载的script
						var cc = new Array();//需要执行的style
						var cs = new Array();//需要加载的css
						//*/
						//加载外部css脚本
						while(cR.test(arg2)){//获取link中的css
							var str = arg2.match(cR)[0].toString();
							if(hrefR.test(str)){
								var hh = str.match(hrefR)[0].toString().replace(/href=['"]*/,"");
								//cs = cs.concat(hh);
								css(hh);
							}
							arg2 = arg2.replace(cR, "");
						}
						//*/
						//直接使用style语句
						while(styleR.test(arg2)){
							var str = arg2.match(styleR)[0].toString();
							str = str.replace(/\<style(.|\n|\r)*?\>/, "").replace(/\<\/style\>/, "");
							cc = cc.concat(str);
							arg2 = arg2.replace(styleR, "");
						}
						//*/
						//获取外部script脚本
						while(sR.test(arg2)){//获取javascript
							var str = arg2.match(sR)[0].toString();
							var startStr = str.match(startR)[0].toString();
							if(urlR.test(startStr)){
								var src = startStr.match(urlR)[0].toString().replace(/src\=['"]*/, "");
								ss = ss.concat(src);
							}
							else{
								es = es.concat(str.replace(startR, "").replace(endR, ""));
							}
							arg2 = arg2.replace(sR, "");
						}
						//当外部script加载完成后执行
						var end = function(){
							obj.innerHTML = arg2;
							for(var i = 0; i < cc.length; i++){
								var sc = document.createElement("style");
								sc.type = "text/css";
								if(sc.styleSheet){
									sc.styleSheet.cssText = cc[i];
								}
								else{
									var tt = document.createTextNode(cc[i]);
									sc.appendChild(tt);
								}
								obj.insertBefore(sc, obj.firstChild);
							}
							
							//执行javascript脚本
							var head = document.getElementsByTagName("head")[0];
							for(var i = 0; i < es.length; i++){
								var sc = document.createElement("script");
								sc.type = "text/javascript";
								sc.text = es[i];
								var old = li["."];
								li["."] = obj;
								head.insertBefore(sc, head.firstChild);
								head.removeChild(sc);
								li["."] = old;
							}
							//执行方法
							if(typeof(arg3) == "function"){
								arg3();	
							}
						}
						if(ss.length > 0 || cs.length >0){
							script(ss, end);
						}
						else{
							end();	
						}
					}
				}
			}
			return;
		}
		else if(s == '.'){
			if(arg1.length == 1){
				return;
			}
			else if(arg2 == undefined){
				if(!obj.nodeName){
					var arr = new Array();
					for(var i = 0; i < obj.length; i++){
						arr = arr.concat($(obj[i], arg1));
					}
					return arr;
				}
				else{
					if(arg1.length > 3 && arg1.substr(0, 3) == ".on"){
						if(window.ActiveXObject){
							obj.fireEvent(arg1.replace(/./, ""));
						}
						else{
							var evObj = document.createEvent("Event");
							evObj.initEvent(arg1.replace(/.on/, ""), true, false);
							obj.dispatchEvent(evObj);
						}
					}
					else{
						return eval("obj" + arg1);
					}
				}
			}
			else{
				if(!obj.nodeName){
					for(var i = 0; i < obj.length; i++){
						$(obj[i], arg1, arg2);
					}
				}
				else{
					if(arg1.length > 3 && arg1.substr(0, 3) == ".on"){
						eval("obj" + arg1 + "=" + arg2);
					}
					else{
						eval("obj" + arg1 + "=\"" + arg2 + "\"");
					}
				}
			}
			return;
		}
		if(arg1.length > 0){
			return $(objs, arg1, arg2, arg3, arg4);
		}
		
		if(arg2 == undefined){
			return objs;
		}
		else if(arg3 == undefined){
			return $(objs, arg2);
		}
		else if(arg4 == undefined){
			return $(objs, arg2, arg3);
		}
		else{
			return $(objs, arg2, arg3, arg4);
		}
	}
	else if(typeof(arg1) == "function"){
		if(!obj.nodeName){
			var arr = new Array();
			for(var i = 0; i < obj.length; i++){
				arr[i] = arg1(obj[i], arg2, arg3, arg4);
			}
			return arr;
		}
		else{
			return arg1(obj, arg2, arg3, arg4);
		}
	}
	
	//为当前节点, 加入一相同等级节点
	else if(typeof(arg1) == "object"){
		//读取一个节点对应的index(顺序)
		if(!obj.nodeName){
			for(var i = 0; i < obj.length; i++){
				if(obj[i] == arg1){
					return i;	
				}
			}
			return;
		}
		else{
			var nodes = $(arg1.parentNode, "<");
			var old_index;
			var new_index;
			if(nodes == undefined){
				nodes = new Array();	
			}
			if(arg2 == undefined){
				for(var i = 0; i < nodes.length; i++){
					if(nodes[i] == arg1){
						old_index = i;
					}
					if(nodes[i] == obj){
						new_index = i;	
					}
				}
				//如果插入对象不存在
				if(new_index != undefined){
					if(new_index < old_index){
						arg2 = 1;
					}
					else{
						arg2 = -1;
					}
				}
				else{
					arg2 = 1;
				}
			}
			for(var i = 0; i < nodes.length; i++){
				if(nodes[i] == arg1){
					var index = i;
					if(arg2 > 0){
						index += arg2;
					}
					else if(arg2 < 0){
						index += arg2 + 1;
					}
					else if(arg2 == 0){
						arg1.parentNode.replaceChild(obj, arg1);
						return;
					}
					if(index < 0){
						index = 0;
					}
					if(index < nodes.length){
						arg1.parentNode.insertBefore(obj, nodes[index]);
					}
					else{
						arg1.parentNode.appendChild(obj);
					}
					return obj;
				}
			}
		}
	}
	//更改一个节点当前的位置顺序
	else if(typeof(arg1) == 'number'){
		if(!obj.nodeName){
			if(obj.length){
				obj = obj[0];
				$(obj, arg1);
			}
			else{
				return;
			}
		}
		else{
			var parent = obj.parentNode;
			var nodes = obj.parentNode.childNodes;
			if(arg1 < 0){
				arg1 = 0;	
			}
			if(arg1 > nodes.length - 1){
				arg1 = nodes.length - 1;
			}
			for(var i = 0; i < nodes.length; i++){
				if(obj == nodes[i]){
					if(arg1 < i){
						parent.insertBefore(obj, nodes[arg1]);
					}
					else if(arg1 > i){
						if(arg1 < nodes.length - 1){
							parent.insertBefore(obj, nodes[arg1 + 1]);
						}
						else{
							parent.insertBefore(obj, nodes[arg1]);
							parent.insertBefore(nodes[nodes.length - 1], obj);
						}
					}
					return;
				}
			}
			return;
		}
	}
	else if(typeof(arg1) == 'boolean'){
		if(!obj.nodeName){
			if(obj.length){
				for(var i = 0; i <obj.length; i++){
					$(obj[i], arg1);	
				}
			}
		}
		else{
			if(arg1){
				obj.style.display = "block";
			}
			else{
				obj.style.display = "none";
			}
		}
		return;
	}
	else{
		return;	
	}
}

//将对象置于中心
function center(obj){
	var ww = $(obj, _w);
	var hh = $(obj, _h);
	var WW = $("", _w);
	var WW = $("", _h);
	$(obj, _X, (WW - ww)/2);
	$(obj, _Y, (HH - hh)/2);
}

//获取对象
function _obj(obj){
	if(typeof(obj) == "string"){
		return $(obj);
	}
	else{
		return obj;	
	}
}

//获取对象的模拟id标识
function _id(obj){
	if(typeof(obj) == "object"){
		if(obj.id == undefined || obj.id == ""){
			if(_id["."] == undefined){
					_id["."] = new Array();	
			}
			for(var i = 0; i < _id["."].length; i++){
				if(_id["."][i] == obj){
					return "." + i.toString();
				}
			}
			_id["."][_id["."].length] = obj;
			return "." + (_id["."].length - 1).toString();
		}
		else{
			return obj.id;
		}
	}
	else{
		return 0;
	}
}

function _c(obj, value){
	if(obj == undefined){
		return "_c";
	}
	obj = _obj(obj);
	//未实现
	if(typeof(value) == 'number'){
		
	}
}

function _a(obj, value){
	if(obj == undefined){
		return "_a";
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		if(value < 0){
			value = 0;
		}
		else if(value > 100){
			value = 100;
		}
		if(value == 100){
			obj.style.opacity = "";
			obj.style.filter = "";
			return;
		}
		else{
			obj.style.opacity = (value >= 10) ? Number("0." + value.toString()) : Number("0.0" + value.toString());
		}
		obj.style.filter = "Alpha(Opacity=" + value.toString() + ")";
		return;
	}
	else{
		if(!window.ActiveXObject){
			if(obj.style.opacity.toString() != ""){
				return Math.floor(obj.style.opacity*100);
			}
			else{
				return 100;
			}
		}
		else{
			if(obj.style.filter.match(/Alpha\(Opacity\=\w+(?=\))/) != undefined){
				
				return Math.floor(Number(obj.style.filter.match(/Alpha\(Opacity\=\w+(?=\))/)[0].replace(/Alpha\(Opacity\=/, "")));
			}
			else{
				return 100;
			}
		}
	}
}

function _x(obj, value){
	if(obj == undefined){
		return "_x";	
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		obj.style.marginLeft = value.toString() + "px";
		return;
	}
	else{
		return obj.style.marginLeft.replace(/px/g, "") == "" ? 0 : parseInt(obj.style.marginLeft.replace(/px/g, ""));
	}
}

function _y(obj, value){
	if(obj == undefined){
		return "_y";
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		obj.style.marginTop = value.toString() + "px";
		return;
	}
	else{
		return obj.style.marginTop.replace(/px/g, "") == "" ? 0 : parseInt(obj.style.marginTop.replace(/px/g, ""));
	}
}

function _X(obj, value){
	if(obj == undefined){
		return "_X";
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		var X = 0;
		var temp = obj;
		while(temp = temp.offsetParent){
			X += temp.scrollLeft;	
		}
		obj.style.left = (X + value).toString() + "px";
		return;
	}
	else{
		var X = obj.offsetLeft;
		while(obj = obj.offsetParent)
		{
			X += obj.offsetLeft - obj.scrollLeft;
		}
		X -= window.pageXOffset  
                || document.documentElement.scrollLeft
                || document.body.scrollLeft  
                || 0;
		return X;
	}
}

function _Y(obj, value){
	if(obj == undefined){
		return "_Y";	
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		var Y = 0;
		var temp = obj;
		while(temp.parentNode){
			Y += temp.scrollTop;
			temp = temp.parentNode;
		}
		obj.style.top = (Y + value).toString() + "px";
		return;
	}
	else{
		var Y = obj.offsetTop;
		var temp = obj;
		while(temp = temp.offsetParent)
		{
			Y += temp.offsetTop;
		}
		temp = obj;
		while(temp.parentNode){
			Y -= temp.scrollTop;
			temp = temp.parentNode;
		}
		return Y;
	}
}

function _w(obj, value){
	if(obj == undefined){
		return "_w";	
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		obj.style.width = value.toString() + "px";
		var ww = _w(obj);
		if(ww != value){
			obj.style.width = (2*value - ww).toString() + "px";
		}
		return;
	}
	else{
		return obj.clientWidth;
	}	
}

function _h(obj, value){
	if(obj == undefined){
		return "_h";	
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		obj.style.height = value.toString() + "px";
		var hh = _h(obj);
		if(hh != value){
			obj.style.height = (2*value - hh).toString() + "px";
		}
		return;
	}
	else{
		return obj.clientHeight;
	}
}

function _bc(obj, value){
	if(obj == undefined){
		return "_bc";	
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		obj.style.backgroundColor = value;
		return;
	}
	else{
		return obj.style.backgroundColor;
	}	
}

function _fc(obj, value){
	if(obj == undefined){
		return "_fc";	
	}
	obj = _obj(obj);
	if(typeof(value) == 'number'){
		obj.style.color = value;
	}
	else{
		return obj.style.color;
	}
}

function _copy(obj, value){
	if(obj == undefined){
		return "_copy"
	}
	obj = _obj(obj);
	if(typeof(value) == 'string'){
		var copyObj = document.createElement(obj.nodeName);
		copyObj.innerHTML = value;
	}
	else{
		var copyObj = document.createElement(obj.nodeName);
		copyObj.innerHTML = obj.innerHTML;
	}
	copyObj.className = obj.className;
	return copyObj;
}

//返回所选对象的表单值,如果是多个对象
function _value(obj, value){
	obj = _obj(obj);
	//赋值运算
	if(!obj.nodeName){
		if(obj.length){
			obj = obj[0];
		}
		else{
			return null;	
		}
	}
	if(typeof(value) == 'string' || typeof(value) == 'number'){
		if(obj.nodeName.toLowerCase() == "input"){
			var type = obj.type;
			if(type == "text" || type == "hidden" || type == "image" || type == "button" || type== "password"){
				obj.value = value;
			}
			if(type == "checkbox" || type == "radio"){
				var arr = value.split(',');
				var cs = document.getElementsByName(obj.name);
				for(var i = 0; i <cs.length; i++){
					if(has(arr, cs[i].value)){
						cs[i].checked = true;
					}
					else{
						cs[i].checked = false;
					}
				}
			}
		}
		else if(obj.nodeName.toLowerCase() == "select"){
			var arr = value.split(',');
			for(var i=0; i<obj.options.length ;i++){
				if(has(arr, obj.options[i].value)){
					obj.options[i].selected = true;
				}
				else{
					obj.options[i].selected = false;
				}
			}
		}
		else if(obj.nodeName.toLowerCase() == "textarea"){
			obj.value = value;
		}
	}
	//获取值
	else{
		if(obj.nodeName.toLowerCase() == "input"){
			var type = obj.type;
			if(type == "text" || type == "hidden" || type == "image" || type == "button" || type== "password"){
				return obj.value;
			}
			else if(type == "checkbox" || type == "radio"){
				if(obj.name){
					var cs = document.getElementsByName(obj.name);
					//var cs = $(">", "input?.type=checkbox", "?.name=" + obj.name);
					var value = "";
					for(var i = 0; i < cs.length; i++){
						if(cs[i].checked == true){
							if(value	 != ""){
								value += ",";	
							}
							value += cs[i].value;
						}
					}
					return value;
				}
				else{
					if(obj.checked){
						return obj.value;	
					}
					else{
						return "";
					}
				}
			}
		}
		else if(obj.nodeName.toLowerCase() == "select"){
			var arr = new Array();
			if(obj.selectedIndex == -1){
			  	return "";
			}
			for(var i=0; i<obj.options.length ;i++){
				if(obj.options[i].selected){
					arr = arr.concat(obj.options[i].value);
				}
			}
			return arr.toString();
		}
		else if(obj.nodeName.toLowerCase() == "textarea"){
			return obj.value;
		}
	}
}
//获取postData数据, name表示只获取满足该名称的数据
function _data(obj, name){
	obj = _obj(obj);
	//获取数组对象的data
	if(!obj.nodeName){
		var data = "";
		for(var i = 0; i < obj.length; i++){
			if(i != 0){
				data += "&";
			}
			data += _data(obj[i]);
		}	
		return data;
	}
	var tag =  obj.nodeName.toLowerCase();
	var names = new Array();
	var objs = new Array();
	if(tag != "input" && tag != "select" && tag != "textarea"){
		var inputs = $(obj, "input");
		var selects = $(obj, "select");
		var textareas = $(obj, "textarea");
		for(var i = 0; i < inputs.length; i++){
			objs.push(inputs[i]);	
		}
		for(var i = 0; i < textareas.length; i++){
			objs.push(textareas[i]);	
		}
		for(var i = 0; i < selects.length; i++){
			objs.push(selects[i]);
		}
	}
	else{
		objs[0] = obj;
	}
	var value = "";
	if(name != undefined){
		var arr = name.split(',');	
	}
	
	for(var i = 0; i < objs.length; i++){
		var able = true;
		for(var j = 0; j < names.length; j++){
			if(names[j] == objs[i].name){
				able = false;
				break;
			}
		}
		if(!able || objs[i].name == undefined){
			continue;
		}
		if(objs[i].type == "text" || objs[i].type == "password" || objs[i].type == "hidden" || objs[i].type == "textarea"){
			if(value != ""){
				value += "&";
			}
			names[names.length] = objs[i].name;
			value += escape(objs[i].name) + "=" + escape(objs[i].value);
		}
		else if(objs[i].type == "checkbox" || objs[i].type == "radio" || objs[i].nodeName.toLowerCase() == "select"){
			if(value != ""){
				value += "&";
			}
			names[names.length] = objs[i].name;
			value += escape(objs[i].name) + "=" + escape($(objs[i], _value));
		}
	}
	return value;	
}
//li(name ,true) // 刷新全部
//li(name, false) // 刷新最后一个节点
//存储.net执行注册的事件

function toeval(__obj, __funStr, __j){
	var __argName = "";
	var __argValue = "";
	if(__j != undefined){
		for(var p in __j){
			if(__argName != ""){
				__argName += ",";	
			}
			__argName += p;
			__argValue += ",__j[\"" + p + "\"]";
		}
	}
	eval("var __eval = function(" + __argName + "){" + __funStr + "}");
	return eval("__eval.call(__obj" + __argValue + ")");
}
function method(name, obj, postData){
	var o = method[name];
	if(o == undefined){
		return;	
	}
	var _all = o["all"];
	var _name = o["name"];
	var _path = o["path"];
	var _allow = o["allow"];
	var _confirm = o["confirm"];
	var _start = o["start"];
	var bind_1 = o["bind_1"];
	var bind_2 = o["bind_2"];
	var bind_3 = o["bind_3"];
	
	if(_allow != undefined){
		if(toeval(obj, _allow, "", "") == false){
			return;	
		}
	}
	if(_confirm != undefined){
		if(!confirm(_confirm)){
			return;
		}
	}
	if(_start != undefined) {
		toeval(obj, _start);
	}
	if(_all == true){
		var data = _data(li(_name));
		if(post != undefined){
			data +="&" + post;
		}
	}
	else{
		var data = _data(obj);
	}
	if(_path != undefined){
		data += "&" + _data($(obj, _path));
	}
	if(postData != undefined){
		data += "&" + postData;
	}
	li(_name, name.split(':')[1], data, obj);
	var nn = obj.nodeName.toLowerCase();
	if(nn == "input" || nn == "textarea" || nn == "select"){
		obj.disabled = "disabled";
	}
}

function li(name, mn, data, obj){
	//刷新最后一个子节点
	if(typeof(name) == "object"){
		return li["."];	
	}
	
	if(name == undefined){
		var arr = oldHash.split("/");
		name = arr[arr.length - 1];
	}

	
	if(name.charAt(0) == '<'){
		history.back(-1);
		return;
	}
	while(name.charAt(0) == '#'){
		name = name.substr(1);
	}
	//ajax请求显示
	function fun(name, run){
		return function(){
			var getValue = "";
			if(name.split("?").length > 1){
				getValue = name.split("?")[1];
				name = name.split("?")[0];
			}
			var a = document.getElementById("li:" + name);
			if(a != undefined){
				var e = $(a.name);
				if(e.id != "li:" + name){
					li[name] = e;
				}
				var url = a.href;
				if(getValue != ""){
					if(url.indexOf('?') == -1){
						url += "?" + getValue;
					}
					else{
						url += "&" + getValue;
					}
				}
				if(url.indexOf('?') == -1){
					url += "?li=" + escape(name);
				}
				else{
					url += "&li=" + escape(name);
				}
				if(li[name] != undefined && typeof(li[name].onstart) == "function"){
					li[name].onstart();
				}
				
				var postValue;
				//是否是需要post传值, 仅仅是最后子请求有效
				if(run == undefined){
					if(typeof(data) == "string"){
						if(data.split("=").length == -1){
							postValue = _data($(data));
						}
						else{
							postValue = data;
						}
					}
					//返回指定表单值大通
					else if(typeof(data) == "object"){
						postValue =	_data(data);
					}
					//返回所有表单
					else if(typeof(data) == "boolean"){
						postValue = $(li[name], _data);
					}	
				}
				_(name + "_li_", url, postValue);
				//建立ajax方法
				_[name + "_li_"] = function(ajax){
					if(typeof(ajax) == 'string'){
						var end = function(){
							if(li[name] != undefined && typeof(li[name].onload) == "function"){
								li[name].onload();
							}
							if(typeof(run) == "function"){
								run();
							}
						}
						if(mn == undefined || typeof(mn) == "boolean"){
							$(li[name], "=", ajax, end);
						}
					}
					//载入失败
					else{
						if(li[name] != undefined && typeof(li[name].onerror) == "function"){
							li[name].onerror();
						}
						else{
							alert("onerror : " + name);	
						}
					}
				}
			}
			else{
				alert(name  + " : can't found");
				return function(){};
			}
		}
	}
	//结束
	function end(name, obj, ajax){
		var sR = /\<!--back:succeed=(.|\r|\n)*?--\>/;
		var bR = /\<!--back:json\=(.|\r|\n)*?--\>/;
		var sm = ajax.match(sR);
		var succeed = false;
		if(sm.length > 0){
			var ss = sm[0].toString();
			var bl = ss.substr(17, ss.length - 20);
			if(bl.toLowerCase() == "true"){
				succeed = true;	
			}
		}
		else{
			return;
		}
		var bm = ajax.match(bR);
		var j;
		if(bm.length > 0){
			var ss = bm[0].toString();
			j = json(ss.substr(14, ss.length - 17))
		}
		else{
			return;	
		}
		if(method[name]["end"] != undefined){
			toeval(obj, method[name]["end"], j);
		}
		if(succeed){
			if(method[name]["succeed"] != undefined){
				toeval(obj, method[name]["succeed"], j);
			}
		}
		else{
			if(method[name]["unsucceed"] != undefined){
				toeval(obj, method[name]["unsucceed"], j);
			}
		}
	}
	
	//方法为true 表示同时请求和链接, 为false 表示只请求不链接
	if(mn == undefined){
		mn = true;	
	}
	
	//li加载
	if(typeof(mn) == "boolean"){
		//如果第一个字符为"/"就表示为子请求
		var old_arr = oldHash.split("/");
		var isChild = false;
		
		//表示返回父目录
		if(name == "/"){
			var name = "";
			for(var i = 0; i < old_arr.length - 1; i++){
				name += old_arr[i] + "/";
			}
		}
		
		if(name.charAt(0) == "/"){
			name = name.substr(1);
			isChild = true;
		}
		
		//判断是否是多级子请求
		var old_name = name;
		var add_name = "";
		var noChild = false;
		
		for(var i = 0; i < old_arr.length; i++){
			var arr = old_arr[i].split('?');
			if(arr[0] == name.split('/')[0].split('?')[0]){
			//if(arr == name.split('/')[0]){
				if(i > 0){
					name = add_name + name;
					isChild = false;
					break;
				}
			}
			add_name += old_arr[i] + "/";
		}
		
		//新建子请求
		if(isChild == true){
			name = oldHash + "/" + name;	
		}
		
		var new_arr = name.split('/');
		var n_n = new_arr[new_arr.length - 1];
		//是否需要卸载旧请求
		if(mn == true){
			for(var i = 0; i < old_arr.length; i++){
				//var o_n = old_arr[i];
				var o_n = old_arr[i].split('?')[0];
				//var n_n = new_arr[i].split('?')[0];
				//判断需要卸载的项
				if(i >= new_arr.length || old_arr[i] != new_arr[i] || (i == new_arr.length - 1 && new_arr[i] == old_arr[i])){
					if(li[o_n] != undefined && typeof(li[o_n].onunload) == "function"){
						li[o_n].onunload();
					}
				}
			}
			//alert(name);
			if(oldHash != name){
				newHash = false;
				if(hash() != name){
					document.location.hash = "#" + name;
				}
				if(!oldIE){
					oldHash = name;
				}
				
			}
			HashFun();
			if(name == ""){
				return;	
			}
		}
		//生成方法
		var funs = new Array();
		for(var i = new_arr.length - 1; i >= 0; i--){
			var j = 0;
			var nn = new_arr[i];
			if(new_arr.length - 1 > i){
				funs[i] = fun(nn, funs[i + 1]);
			}
			else{
				funs[i] = fun(nn);
			}
		}
		//判断需要运行哪一个
		for(var i = 0; i < new_arr.length; i++){
			if(new_arr[i] != old_arr[i] || new_arr[i] == old_name){
				funs[i]();
				break;
			}	
		}
	}
	//li操作
	else{
		var postValue = "";
		if(typeof(data) == "string"){
			if(data.indexOf("=") == -1){
				postValue =	_data($(data));
			}
			else{
				postValue = data;
			}
		}
		//返回指定表单值
		else if(typeof(data) == "object"){
			postValue =	_data(data);
		}
		//返回所有表单
		else if(typeof(data) == "boolean"){
			postValue = $(li[name], _data);
		}
		
		if(name.split("?").length > 1){
			name = name.split("?")[0];
		}
		
		var a = document.getElementById("li:" + name);
		
		if(a != null){
			var url = a.href;
			var id = ""
			if(typeof(obj) == "object"){
				id = _id(obj);	
			}
			if(true){
				_(name + "_li_" + mn + id, url + "&method=" + mn, postValue);
				_[name + "_li_" + mn + id] = function(ajax){
					if(typeof(obj) == "object"){
						var nn = obj.nodeName.toLowerCase();
						if(nn == "input" || nn == "textarea" || nn == "select"){
							obj.disabled = false;
						}
					}
					if(typeof(ajax) == 'string'){
						var sR = /\<script(.|\n|\r)*?\<\/script\>/;//完整的script
						var startR = /\<script(.|\n|\r)*?\>/;//script开始
						var endR = /\<\/script\>/;//script结束
						var arg2 = ajax;
						while(sR.test(arg2)){//获取javascript
							var str = arg2.match(sR)[0].toString();
							eval(str.replace(startR, "").replace(endR, ""));
							arg2 = arg2.replace(sR, "");
						}
						if(typeof(obj) == "object"){
							var old = li["."];
							li["."] = li[name];
							end(name + ":" + mn, obj, arg2);
							li["."] = old;
						}
					}
					else{
						alert("onerror : " + name + "\nmn : " + mn);	
					}
				}
			}
			else{
				alert("wait !");
			}
		}
	}
}

function _(name, arg1, arg2, arg3, arg4){
	//直接使用ajax与json替换某对象
	if(typeof(name) == 'object'){
		var id = _id(name);
		if(name.nodeName){
			_[id] = function(ajax){
				if(typeof(ajax) == 'string'){
					$(name, "=", ajax);
					if(typeof(arg2) == "function"){
						arg2();
					}
					else if(typeof(arg3) == "function"){
						arg3();
					}
				}
				else{
					//失败后运行
					if(typeof(arg2) == "function"){
						if(typeof(arg3) == "function"){
							arg3();
						}
					}
					else if(typeof(arg3)){
						if(typeof(arg4) == "function"){
							arg4();
						}
					}
				}
			}
			if(arg2 == undefined){
				arg2 = $(name, _data);	
			}
			_(id, arg1, arg2, arg3);
			return;
		}
		else{
			
		}
	}	
	
	if(name === null){
		if(_["."] != undefined){
			_(_["."], null);	
		}
		return;
	}
	else if(typeof(name) != 'string' || name == ""){
		return _["."];//表示当前执行函数的名称
	}
	if(arg1 === null){
		_(name, false);
		delete _[name + ".argument"];
		delete _[name + ".type"];
		delete _[name + ".able"];
		delete _[name + ".load"];
		delete _[name + ".interval"];
		return;
	}
	var args = new Array(arg1, arg2, arg3);
	var url;
	var data;
	var able;
	var time;
	for(var i = 0; i < args.length; i++){
		if(typeof(args[i]) == "string"){
			if(url == undefined && time == undefined){
				url = args[i];	
			}
			else if(time == undefined){
				data = args[i];	
			}
			else{
				return;	
			}
		}
		else if(typeof(args[i]) == "number"){
			if(url == undefined){
				time = args[i];
			}
			else{
				return;	
			}
		}
		else if(typeof(args[i]) == "boolean"){
			able = args[i];	
		}
	}
	//ajax返回成功执行当前函数并将返回结果转换为字符串
	if(url == undefined && time == undefined && able == undefined){
		if(typeof(_[name]) == "function"){
			_["." + name] = _["."];
			_["."] = name;
			try{
				_[name](_[name + ".argument"].responseText);
			}
			catch(e){
				_[name + ".error"] = e;
			}
			_["."] = _["." + name];
		}
		return;
	}

	_[name + ".able"] = true;
	if(time != undefined){
		_[name + ".time"] = time;
	}
	if(able != undefined){
		_[name + ".able"] = able;
		if(url == undefined && time == undefined  && _[name + ".able"] && _[name + ".type"] == "ajax" && _[name + ".load"]){
			_(name);
			return;
		}
	}
	
	if(url == undefined && ((time != undefined) || (_[name + ".type"] == "interval"))){
		_[name + ".type"] = "interval";
		if(typeof(_[name + ".argument"] != 'number')){
			_[name + ".argument"] = 0;
		}
		if(_[name + ".able"]){
			clearInterval(_[name + ".interval"]);
			try{
				_[name + ".interval"] = setInterval(function(){_[name + ".argument"] += _[name + ".time"];_(name);}, _[name + ".time"]);
			}
			catch(e){
			}
		}
		else{
			clearInterval(_[name + ".interval"]);
		}
		return;
	}

	if(url == undefined){
		return;	
	}
	_[name + ".type"] = "ajax";
	_[name + ".load"] = false;
	if(able == undefined){
		_[name + ".able"] = true;
	}
	try{
		_[name + ".argument"] = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e){
		try{
			_[name + ".argument"] = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E){
			_[name + ".argument"] = null;
		}
	}
	if(!_[name + ".argument"] && typeof(XMLHttpRequest) != undefined){
		_[name + ".argument"] = new XMLHttpRequest();
	}
	if(_[name + ".argument"] == undefined){
		_[name + ".error"] = "xmlHttp is null";
		return;
	}
	_[name + ".argument"].onreadystatechange = function(){
		if(_[name + ".argument"].readyState == 4){
			_[name + ".load"] = true;
			if(_[name + ".argument"].status < 400){
				if(_[name + ".able"]){
					_(name);
				}
			}
			else{
				_[name + ".argument"] = false;
				if(_[name + ".able"]){
					_(name);
				}
			}
		}
	}
	var arrUrl = url.split("?");
	var ss = new Date().getTimezoneOffset();
	var z = -1;
	if(ss < 0){
		z = (-1)*z;
		ss = -ss;
	}
	var h = Math.floor(ss/60);
	var tz = (h*100 + (ss - h*60))*z;
	if(/[\?]/.test(url)){
		url += "&timeNow=" + escape(timeNow()) + "&url=" + escape(document.location) + "&timeZone=" + tz;
	}
	else{
		url += "?timeNow=" + escape(timeNow()) + "&url=" + escape(document.location) + "&timeZone=" + tz;
	}
	if(/^[\?]/.test(url)){
		url = "/" + url;	
	}
	try{
		if(typeof(data) == "object"){
			data = _data(data);
		}
		if(typeof(data) == "string"){
			var o = new Object();
			var arr = data.split('&');
			for(var i = 0; i < arr.length; i++){
				var vrr = arr[i].split('=');
				if(vrr.length > 1){
					o[vrr[0]] = vrr[1];	
				}
			}
			data = "";
			for(var p in o){
				data += p + "=" + o[p] + "&";
			}
			_[name + ".argument"].open("POST", url, true);
			_[name + ".argument"].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			_[name + ".argument"].send(data);
			
		}
		else{
			_[name + ".argument"].open("GET", url, true);
			_[name + ".argument"].send(null);
		}
	}
	catch(e){
		_[name + ".error"] = e;
	}
}
//一个扩展函数, 能够快速使用定时函数 和  ajax请求
function __(id, arg1, arg2, arg3, arg4){
	if(id == undefined){
		for(var p in __){
			if(typeof(__[p]) == "function"){
				__[p]();
			}
			if(typeof(__[p]) == "string"){
				_($(p), __[p]);
				delete __[p];
			}
		}
		return;
	}
	_($(id), arg1, arg2, arg3, arg4);
}
_["__"] = __;
_("__", 50);

//缓进函数
function $$(obj, fun, value, num, handler){
	var obj = _obj(obj);
	var id = _id(obj);
	if(!obj.nodeName){
		for(var i = 0; i < obj.length; i++){
			$$(obj[i], fun, value, num, handler);
		}
		return;
	}
	var time = 50;
	var speed = 20 - 1;
	var name = id + ".$$." + fun();
	
	var old_xx = $(obj, fun);
	var i = 0;
	
	if(typeof(num) == "number"){
		speed = num - 1;	
	}
	else if(typeof(num) == "function"){
		handler = num;	
	}
	
	_[name] = function(){
		i++;
		if(i == speed){
			$(obj, fun, value);
			_(name, null);
			if(typeof(handler) == "function"){
				handler(obj);
			}
		}
		else if(value > old_xx){
			$(obj, fun, Math.ceil(old_xx + (value - old_xx)*(Math.sin((Math.PI/2)*Math.pow((i/speed), 1/2)))));
		}
		else if(value < old_xx){
			$(obj, fun, Math.floor(old_xx + (value - old_xx)*(Math.sin((Math.PI/2)*Math.pow((i/speed), 1/2)))));
		}
	}
	_(name, time);
}

//转化当前路径为绝对路径
function absurl(u){
	u = u.replace(/\\/g, "/").toLowerCase();
	if(u.indexOf(":") > 0){
		return u;
	}
	if(u.charAt(0) == '/'){
		while(u.charAt(0) == '/'){
			u = u.substr(1);	
		}
		var href =	location.href.split("#")[0].split("?")[0].toLowerCase().replace(/\\/g, "/");
		return href.substr(0, href.indexOf("/", href.indexOf(":") + 3)) + "/" + u;
	}
	else{
		var h = location.href.split("#")[0].split("?")[0].replace(/\\/g, "/").toLowerCase().split("/");
		h.length--;
		while(u.indexOf("../") == 0){
			u = u.slice(3);
			if(h.length > 3){
				h.length--;
			}
		}
		return unescape(h.join("/") + "/" + u);
	}
}

function scriptcss(ss, cs, fun){
	var n = 0;
	var num = 0;
	if(ss.length > 0){
		n++;
	}
	if(cs.length > 0){
		n++;
	}
	var end = function(){
		num++;
		if(num >= n){
			if(typeof(fun) == "function"){
				fun();	
			}
		}	
	}
	if(ss.length > 0){
		script(ss, end);
	}
	if(cs.length > 0){
		css(cs, end);
	}	
}

//获取的javascript src请求
function script(src, fun){
	//如果是多个对象, 则最后一个加载完成时执行
	if(typeof(src) == "object"){
		var num = 0;
		for(var i = 0; i <src.length; i++){
			script(src[i], 
				function(){
					num++;
					if(num >= src.length){
						if(typeof(fun) == "function"){
							fun();	
						}
					}
				}
			)
		}
		return;
	}
	var ss = document.getElementsByTagName("script");
	for(var i = 0; i < ss.length; i++){
		if(ss[i].src && absurl(ss[i].src) == absurl(src)){
			if(typeof(fun) == "function"){
				fun();
			}
			return true;
		}
	}
	var s = document.createElement("script");
	s.type = "text/javascript";
	s.src = src;
	var head = document.getElementsByTagName("head")[0];   
	head.appendChild(s);
	s.onload = s.onreadystatechange = function(){
		if(this.readyState && this.readyState == "loading"){
			return;
		}
		if(typeof(fun) == "function"){
			fun();	
		}
	}
	//载入错误的时候
	s.onerror = function(){
		if(typeof(fun) == "function"){
			fun();	
		}
	}
}

//获取css
function css(src, fun){
	if(typeof(src) == "object"){
		var num = 0;
		for(var i = 0; i <src.length; i++){
			css(src[i],
				function(){
					num++;
					if(num >= src.length){
						if(typeof(fun) == "function"){
							fun();
						}
					}
				}
			);
		}
	}
	var ll = document.getElementsByTagName("link");
	for(var i = 0; i < ll.length; i++){
		if(ll[i].href && absurl(ll[i].href) == absurl(src)){
			if(typeof(fun) == "function"){
				fun();
			}
			return;
		}
	}
	var l = document.createElement("link");
	l.type = "text/css";
	l.href = src;
	l.rel = "stylesheet";
	var head = document.getElementsByTagName("head")[0];   
	head.appendChild(l);
	//以下在firefox中失效
	l.onload = l.onreadystatechange = function(){
		if(this.readyState && this.readyState == "loading"){
			return;
		}
		if(typeof(fun) == "function"){
			fun();	
		}
	}
	//载入错误的时候
	l.onerror = function(){
		if(typeof(fun) == "function"){
			fun();
		}
	}
}

//可以拖动的对象位置, 拖动的对象
//copy == false -> 出现一个临时对象index,代替拖动点原来的位置
//copy == true -> 如上, 还会再出现一个临时对象temp, 用来代替拖动点到同级节点的位置
function drag(obj, index, copy, fun){
	obj.onmousedown = function(){
		todrag(obj, index, copy, fun)
	}
	obj.ondragstart = function(ev){
		ev = ev || event;
		ev.returnValue = false;
	}
}
//mo解析为需要执行的方法字符串,参数order为移动到的对象
function todrag(obj, index, copy, mo){
	if(obj == undefined){
		return;
	}
	obj.onmouseup = function(){
		obj.onmousemove = null;	
	}
	
	obj.onmousemove = function(ev){
		obj.onmousemove = null;
		drag["state"] = index;
		//*/
		if(!isIE){
			if(obj.setCapture){
				obj.setCapture(true);
			}
			else{
				ev.preventDefault();
			}
		}
		//*/
		//window.blur();
		$(drag["temp"], null);
		$(drag["order"], null);
		delete drag["temp"];
		delete drag["order"];


		if(typeof(index) == "boolean"){
			copy = index;
			index = obj;
		}
		else if(index == undefined){
			index = obj;
		}
		ev = ev || window.event;
		index.style.position = "";
		index.style.left = "";
		index.style.top = "";
		var old_X = $(index, _X);
		var old_Y = $(index, _Y);

		index.style.position = "absolute";
		var old_mx = ev.clientX;
		var old_my = ev.clientY;
		
		$(index, _X, old_X);
		$(index, _Y, old_Y);
		
		
		if(index.drag){
			index.drag(old_X, old_Y);
		}
		
		var objs = $(index, "^<" + index.nodeName);
		
		if(typeof(copy) == "boolean"){
			drag["temp"] = document.createElement(index.nodeName);
			drag["temp"].className = "temp"
			$(drag["temp"], index);
		}
			
		document.onmouseup = function(ev){
			
			drag["state"] = null;
			if(obj.releaseCapture){
				obj.releaseCapture();
			}
			document.ondragstart = null;
			document.onmouseup = null;
			document.onmousemove = null;

			var X = $(index, _X);
			var Y = $(index, _Y);
			if(index.drop){
				var fun = index.drop(X, Y);
			}
			var top = 0;
			var left = 0;
			if(copy == true && fun != false){
				$(drag["order"], false);
				var on_li = on(objs, index);
				$(drag["order"], true);
                if(on_li){
					$(index, on_li);
					var nodes = $(index, "^<");
					for(var i = 0; i < nodes.length; i++){
						if(nodes[i] == drag["temp"]){
							if(i != nodes.length - 1){
								if(order(index, on_li) > 0){
									if(index.nodeName.toLowerCase() == "span"){
										left = $(index, _w);
									}
									else{
										top = $(index, _h);
									}
								}
								if(index.nodeName.toLowerCase() == "span"){
									$(nodes[i + 1], _x, $(index, _w));
									$$(nodes[i + 1], _x, 0);
								}
								else{
									$(nodes[i + 1], _y, $(index, _h));
									$$(nodes[i + 1], _y, 0);
								}
							}
							break;
						}
					}
					$(drag["temp"], null);
					//拖动排序成功
					if(index.order){
						index.order(on_li);
					}
					if(typeof(mo) == "string"){
						eval("var os = function(order){" + mo + "}");
						eval("os.call(index, on_li)");
					}
				}
				else{
					$(drag["order"], null);
				}
				
				index.style.position = "";
				$(drag["temp"], false);
				$(drag["order"], false);
				var new_X = $(index, _X) - left;
				var new_Y = $(index, _Y) - top;
				index.style.position = "absolute";
				$(drag["temp"], true);
				$(drag["order"], true);
				$(index, _X, X);
				$(index, _Y, Y);
				$$(index, _X, new_X);
				$$(index, _Y, new_Y, function(){
					if(drag["state"] == null || drag["state"] == undefined){
						$(drag["temp"], null);
						$(drag["order"], null);
					}
					if(drag["state"] != index){
						index.style.position = "";
					}
				});
			}
			else{
				$(drag["temp"], null);
				index.style.position = "";
			}
		}
		//大约可以防止图片被拖动
		document.onmousemove = function(ev){
			window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
			ev = ev || window.event;
			var x = ev.clientX;
			var y = ev.clientY;
			var X = old_X + (x - old_mx);
			var Y = old_Y + (y - old_my);
			$(index, _X, X);
			$(index, _Y, Y);
			
			//if(X > $(">", _w) - $(index, _w)){
				
			//}
			if(index.move){
				index.move(X, Y);
			}
			//添加一个临时插入对象
			if(copy == true){
				$(drag["order"], null);
				var on_li = on(objs, index);
                if (on_li) {
					var oo = drag["order"];
                    if (oo == null) {
						var oo = document.createElement(index.nodeName);
                        $(oo, ".className", "order");
						drag["order"] = oo;
                    }
                    $(oo, on_li, order(on_li, index));
					$(oo, true);
                }
				else{
					$(drag["order"], null);	
				}
			}
		}
	}
}

//处理json
function json(jStr, key, value){
	var obj;
	var parent;
	if(jStr == undefined){
		return null;
	}
	if(typeof(jStr) == "string"){
		try{
			obj = eval("(" + jStr + ")");
		}
		catch(e){
			return;	
		}
	}
	else{
		obj = jStr;	
	}
	if(key == undefined){
		if(typeof(jStr) == "string"){
			return obj;
		}
		else{
			var toStr = function(o){
				var r = [];
				if(typeof o == 'string'){
					return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t") + "\"";
				}
				if(typeof o == undefined){
					return "";
				}
				if(typeof o == 'object'){   
					if(o === null){
						return "null";
					}
					else if(!o.sort){
						for(var i in o){
							r.push(i + ":" + toStr(o[i]));
						}
						r = "{" + r.join() + "}";
					}else{   
						for(var i =0; i< o.length; i++){
							r.push(toStr(o[i]));
						}
						r = "[" + r.join() + "]";
					}   
					return r;   
				}   
				return o.toString();
			}
			return toStr(obj);
		}
	}
	
	var keys = key.split(".");
	var select = keys[0];
	if(/[\:]/.test(select)){
		var selectKey = select.split(":")[0];
		var selectValue = select.split(":")[1];
		if(obj.length >= 0){
			var index = -1;
			for(var i = 0; i < obj.length; i++){
				if(obj[i][selectKey] == selectValue){
					index = i;
					break;
				}
			}
			if(index >= 0){
				parent = obj;
				obj = obj[i];
			}
			else{
				obj = null;
			}
		}
		else{
			parent = obj;
			obj[selectKey] = selectValue;
		}
	}
	else{
		parent = obj;
		obj = obj[select];
	}
	
	
	if(keys.length > 1){
		var str = key.substr(select.length + 1, key.length - 1 - select.length);
		parent = obj;
		obj = json(obj, str);
	}
	
	if(value === null){	
		if(parent.length >= 0){
			var index = -1;
			for(var i = 0; i < parent.length; i++){
				if(parent[i] == obj){
					index = i;
				}
				if(index >= 0 && i > index){
					parent[i - 1] = parent[i];
				}
				if(index >= 0 && i == parent.length - 1){
					parent.pop();
				}
			}
		}
		else{
			for(var p in parent){
				if(parent[p] == obj){
					delete parent[p];	
				} 
			}
		}
		return;
	}
	else if(typeof(value) == "string"){
		if(value.charAt(0) == "{" && value.charAt(value.length - 1) == "}"){
			if(obj.length >= 0){
				obj[obj.length] = eval("(" + value + ")");
			}
			else{
				for(var p in parent){
					if(parent[p] == obj){
						parent[p] = eval("(" + value + ")");
					} 
				}
			}
		}
		else if(/[\:]/.test(value)){
			if(obj.length >= 0){
				for(var i = 0; i < obj.length; i++){
					var newKey = value.split(":")[0];
					var newValue = value.split(":")[1];
					obj[i][newKey] = newValue;	
				}
			}
			else{
				var newKey = value.split(":")[0];
				var newValue = value.split(":")[1];
				obj[newKey] = newValue;
			}
		}
		else{
			if(obj[value] == null){
				return null;	
			}
			return obj[value];
		}
	}
	else if(typeof(value) == 'number'){
		if(parent.length >= 0){
			if(value < 0){
				value = 0;	
			}
			if(value > parent.length - 1){
				value = parent.length - 1;	
			}
			var index = -1;
			for(var i = 0; i < parent.length; i++){
				if(parent[i] == obj){
					if(i < value){
						var temp = parent[i];
						for(var j = i; j < value; j++){
							parent[j] = parent[j + 1];
						}
						parent[value] = temp;
					}
					else if(i > value){
						var temp = parent[i];
						for(var j = i; j > value; j--){
							parent[j] = parent[j - 1]; 	
						}
						parent[value] = temp;
					}
					return;
				}
			}
		}
	}
	else{
		return obj;	
	}
}

function key(obj, r, fun, error){
	var value = $(obj, _value);
	obj.onKeyUp = function(ev){
		ev = ev || event;
		ev.returnValue=false
	}
}

//*
///* 获取网页的url get传值
function get(name){ 
	var reg = new RegExp("(^|&|\\?)"+ name +"=([^&]*)(&|$)"); 
	var r = window.location.search.substr(1).match(reg); 
	if (r != null){
		return unescape(r[2]);
	}
	else{
		return null;
	}
}

// 获取hash传值或者判断是否有指定值
function hash(name){
	if(name == undefined){
		var l = window.location.toString();
		var s = l.indexOf("#")
		if(s != -1){
			return unescape(l.substr(s + 1));
		}
		else{
			return "";
		}
	}
	var h = hash();
	var reg = new RegExp("(^|&|\\?)"+ name +"=([^&\\/\\\\]*)(&|$)");
	var r = h.match(reg); 
	if (r != null){
		return unescape(r[2]);
	}
	else{
		var ng = new RegExp(name + "\?[^\\/\\\\]*");
		//var ng = new RegExp("(^|&|\\?|\\\\|\\/)" + name + "(\\=|$|\\?|&|\\\\|\\/)");
		var m = h.match(ng); 
		if(m != null){
			return  unescape(m[0].toString());
		}
		else{
			return null;
		}
	}
}
//当hash中的传值改变时执行
function HashFun(){
	for(var p in hash){
		if(p.charAt(0) != '.'){
			var arr = p.split(',');
			var bl = true;
			for(var i = 0; i < arr.length; i++){
				var n = hash(arr[i]);
				if(hash["." + arr[i]] != n){
					for(var j = 0; j < arr.length; j++){
						hash["." + arr[j]] = hash(arr[j]);
					}
					if(bl){
						bl = false;
						hash[p](n);
					}
				}
			}
		}
	}
}

//获取hash中的参数数据
function para(name){
	var arr = name.split(',');
	if(arr.length > 1){
		var str = "";
		for(var i = 0; i < arr.length; i++){
			var p = hash(arr[i]);
			if(p != null){
				if(str != ""){
					str += "&";	
				}
				str += arr[i] + "=" + p;
			}
		}
		return str;
	}
	var h = hash();
	if(name == undefined){
		return 	h.substr(1);
	}
	var reg = new RegExp("(^|&|\\?)"+ name +"=([^&\\/\\\\]*)(&|$)");
	var r = h.match(reg); 
	if (r != null){
		return name + "=" + unescape(r[2]);
	}
	else{
		return "";
	}
}

//获取全局的post
function post(name){
	var arr = name.split(",");
	var o = new Array();
	for(var i = 0; i < arr.length; i++){
		var n = document.getElementsByName(arr[i]);
		if(n.length > 0){
			o = o.concat(n[0]);
		}
	}
	return _data(o);
}


//*/
//*/
///*设置或获取cookie值
///_cookie("name")获取name的cookie值
///_cookie("name", "value")添加或设置name的值为value
///_cookie("name", "value", Date)添加或设置name的值为value,过期时间为Date
///_cookie("name", Date)设置name的过期时间为Date
function cookie(name, value, expires){
	if(value === undefined){
		var arrCookie = document.cookie.split("; ");
		for(var i = 0; i < arrCookie.length; i++){
			var arr = arrCookie[i].toString().split("=");
			if(arr[0] == name){
				if(arr.length > 1){
					return	unescape(arr[1]);
				}
				else{
					return null;
				}
			}
		}
		return null;
	}
	else if(value === null){
		document.cookie = name + "=" + escape(cookie(name)) + "; path=/; " + "expires=" + time(0).toGMTString();
	}
	else if(typeof(value) == 'object'){
		document.cookie = name + "=" + escape(cookie(name)) + "; path=/; " + "expires=" + value.toGMTString();
	}
	else if(typeof(value) == 'string'){
		if(typeof(expires) == "object"){
			document.cookie = name + "=" + escape(value) + "; path=/; " + ((expires == undefined) ? "" : "expires=" + expires.toGMTString());
		}
		else if(typeof(expires) == "number"){
			document.cookie = name + "=" + escape(value) + "; path=/; " + ((expires == undefined) ? "" : "expires=" + time(expires).toGMTString());
		}	
	}
	else if(typeof(value) == 'number'){
		document.cookie = name + "=" + escape(cookie(name)) + "; path=/; " + "expires=" + time(value).toGMTString();
	}
}

//*/
///*设置cookie过期时间
///_time("addSecond")设置时间为当前时间+addSecond
///_time()设置时间为当前时间
function time(addSecond){
	var tempTime = new Date();
	tempTime.setTime(tempTime.getTime() + ((addSecond == undefined) ? 0 : 1000 * addSecond));
	return tempTime;
}

//获取当前时间
function timeNow(){
	var tempTime = new Date();
	var YY = tempTime.getFullYear();
	var mm = tempTime.getMonth() + 1;
	var dd = tempTime.getDate();
	var hh = tempTime.getHours();
	var MM = tempTime.getMinutes();
	var ss = tempTime.getSeconds();
	return  YY + "/" + mm + "/" + dd + " " + hh + ":" + MM + ":" + ss;
}

//获取一个随机整数,指定最大整数和最小整数,不指定表示1-100之间的数
function R(a, b){
	if(a == undefined){
		return 1 - R(0, 1)*2;
	}
	if(b == undefined){
		return R(0, a);
	}
	if(a > b){
		return b + Math.floor(Math.random()*(a - b + 1));
	}
	else if(b > a){
		return a + Math.floor(Math.random()*(b - a + 1));
	}
	else{
		return b;
	}
}

//将数字转换为指定小数点位数的数字
function number(num, n){
	if(typeof(num) == "string"){
		num = Number(num);
	}
	var str = Math.round(num*Math.pow(10, n)).toString();
	while(str.length < n + 1){
		str = "0" + str;	
	}
	str = str.substr(0, str.length - n) + "." + str.substr(str.length - n, n);
	return str;
}

//通过标签获取不同颜色代码
function color(index, cc){
	//var n = ["F","E","D","C","B","A", "9", "8", "7", "6", "5", "4", "3", "2", "1", "0"];
	switch(typeof(index))
	{
		case "number":	
			var n = ["F","C","9","6","3","0"];
			var s = Math.floor(index/6);
			var m = index%6;
			var a = 0;
			var b = 0;
			var c = 0;
			if(m == 0){
				a = 1;
			}
			else if(m == 1){
				b = 1;	
			}
			else if(m == 2){
				c = 1;	
			}
			else if(m == 3){
				a = 1;
				b =1;
			}
			else if(m == 4){
				a = 1;
				c = 1;
			}
			else if(m == 5){
				b = 1;
				c = 1;
			}
			return "#"+ n[s + a] + n[s + b] + n[s + c];
		case "object":
			if(index.nodeNode){
				index.style.color = cc;
			}
			else{
				for(var i = 0; i < index.length; i++){
					color(indes[i], cc);	
				}
			}
			return;
		default:
			return;
	}
}

//判断数组中是否有这个值
function has(arr, key){
	for(var i = 0; i < arr.length; i++){
		if(arr[i] == key){
			return true;	
		}	
	}
	return false;
}
//移除数组中的指定值
function remove(arr, key){
	for(var i = 0; i < arr.length; i++){
		if(arr[i] == key){
			return arr.slice(0, i).concat(arr.slice(i));
		}	
	}
	return arr;
}

//节点所属位置的节点
function on(obj, X, Y){
	if(typeof(X) == "object"){
		var this_obj = X;
		Y = $(this_obj, _Y);
		X = $(this_obj, _X);
	}
	if(!obj.nodeName){
		for(var i = 0; i < obj.length; i++){
			if(obj[i] == this_obj || obj[i] == drag["temp"] || obj[i] == drag["order"]){
				continue;
			}
			else if(on(obj[i], X, Y)){
				return obj[i];	
			}	
		}
		return false;	
	}
	var obj_X = $(obj, _X);
	var obj_Y = $(obj, _Y);
	var obj_w = $(obj, _w);
	var obj_h = $(obj, _h);
	if(X > obj_X && Y > obj_Y && X < obj_X + obj_w && Y < obj_Y + obj_h){
		return true;
	}
	return false;
}

//获取两个同级节点之间的序号是之前还是之后
function order(obj_a, obj_b){
	var nodes = obj_a.parentNode.childNodes;
	var a;
	var b;
	for(var i = 0; i < nodes.length; i++){
		if(nodes[i] == obj_a){
			a = i;
		}
		if(nodes[i] == obj_b){
			b = i;
		}
	}
	 if(a == undefined || b == undefined){
		return undefined;	
	}
	if(a > b){
		return 1;
	}
	else if(b > a){
		return  -1;
	}
	else{
		return 0;
	}
}

//按下enter后触发
function enter(obj, fun){
	obj.onkeypress = function(ev){
		ev = ev || event;
		if(ev.keyCode == 13){
			fun();
		}
	}
}

//输入可行限制(提示)
function input(obj, reg, alt){
	var old_value = obj.value;
	var bl = true;
	function fun(){
		if(reg.test(obj.value)){
			old_value = obj.value;
		}
		else{
			obj.value = old_value;
			if(alt != undefined && bl == true){
				bl = false;
				var span = document.createElement("span");
				span.className= "remind";
				var X = $(obj, _X) + $(obj, _w);
				var Y= $(obj, _Y);
				$(span, ".style.position", "absolute");
				$(span, "=", alt);
				$(span, obj);
				$(span, _X, X);
				$(span, _Y, Y);
				$(span, _a, 0);
				$$(span, _a, 100, function(){
					setTimeout(function(){
							$$(span, _a, 0, function(){
								$(span, null);
								bl = true;
							})	
						},
					1000);
				});
			}
		}
	}
	obj.onkeyup = fun;
	obj.onkeydown = fun;
}
