var lib = {
	//去除空白
	trim: function (str)
	{
		return lib.replace(str, "(^\\s+)|(\\s+$)", "");
	},
	//检验是否为空
	isNull: function (s)
	{
	if (lib.trim(s) + "test" == "test")
	{
		return true;
		}
	return false;
	},

	//匹配
	match: function (str, regexp, mode)
	{
		if (typeof mode == "undefined") mode = "g";
		var re = new RegExp(regexp, mode);
		var arr = re.exec(str);
		return arr;
	},

	//替换
	replace: function (str, regexp, rep, mode)
	{
		if (typeof rep == "undefined") rep = "";
		if (typeof mode == "undefined") mode = "g";
		var re = new RegExp(regexp, mode);
		var s = str.replace(re, rep);
		return s;
	},

	stripTags: function(str)
	{
		return lib.replace(str, "<\/?[^>]+>", "");
		
	},

	/**
	*	html字符转换
	*/
	HtmlEncode:function(text){
		var re = {'<':'&lt;','>':'&gt;','&':'&amp;','"':'&quot;'};
		for (i in re) 
			text = text.replace(new RegExp(i,'g'), re[i]);
		return text;
	},

	/**
	*	html字符转换
	*/
	HtmlDecode:function(text){
		var re = {'&lt;':'<','&gt;':'>','&amp;':'&','&quot;':'"'};
		for (i in re) 
			text = text.replace(new RegExp(i,'g'), re[i]);
		return text;
	},

	//取得对象
	element: function (elementId)
	{
		if (document.getElementById){
			return document.getElementById(elementId);
		}else if (document.all){
			return document.all[elementId];
		}else if (document.layers){
			return document.layers[elementId];
		}else{
			return null;
		}
	},
	//in_array
	in_array: function (in_array,is)
	{
		//alert(is);
		for (i=0;i<in_array.length;i++)
		{
			//alert(in_array[i]);
			if (in_array[i] === lib.trim(is))
			{
				return true;
			}
		}
		return false;
	},	
	//取得一个元素的text
	getText: function (element)
	{
		if (typeof element.innerText != "undefined") return element.innerText;
		if (typeof element.textContent != "undefined") return element.textContent;
		return null;
	},

	//设置一个元素的text
	setText: function (element, text)
	{
		if (typeof element.innerText != "undefined") 
		{
			element.innerText = text;
			return true;
		}
		if (typeof element.textContent != "undefined") 
		{
			element.textContent = text;
			return true;
		}
		return false;
	},

	//取得元素的innerHTML
	getHTML: function (element)
	{
		return element.innerHTML;
	},
	
	//设置元素的innerHTML
	setHTML: function (element, html)
	{
		element.innerHTML = html;
		return true;
	},	

	//通过打印其下元素调试对象
	debug: function (element)
	{
		try 
		{
			var win = window.open("", win, "width=320,height=240,scrollbars=yes");
			win.document.open();
			win.document.write("<ul>");
			for (var i in element)
			{
				win.document.write("<li>" + i + "=" + element[i] + "</li>")
			}
			win.document.write("</ul>");
			win.document.close();
		}catch (e)
		{
			alert(e);
		}
	},

	//取得对象的子节点
	childNodes: function (element)
	{
		var nodes = element.childNodes;
		var _nodes = new Array();
		var j = 0;
		for (var i = 0; i < nodes.length; i ++)
		{
			if (nodes[i].nodeType == 1) 
			{
				_nodes[j] = nodes[i];
				j ++;
			}
		}

		return _nodes;
	},

	//删除一个元素
	remove: function (element)
	{
		element.parentNode.removeChild(element);
	},
	
	//取得一个对象的X坐标
	x: function (element)
	{
		var positionX = 0;
		while (element != null)
		{
			positionX += element.offsetLeft;
			element = element.offsetParent;
		}
		return positionX;
	},
	
	//取得一个对象的y坐标
	y: function (element)
	{
		var positionY = 0;
		while (element != null)
		{
			positionY += element.offsetTop;
			element = element.offsetParent;
		}
		return positionY;
	},

	//取得一个对象的width
	w: function (element)
	{
		return element.offsetWidth;
	},

	//取得url中参数值
	getParameter: function (varName)
	{
		var query = window.location.search;
		if (query != null || query != "")
		{
			query = query.replace(/^\?+/, "");
			var qArray = query.split("&");
			var len = qArray.length;
			if (len > 0)
			{
				for (var i=0; i<len; i++)
				{
					var sArray = qArray[i].split("=", 2);
					if (sArray[0] && sArray[1] && sArray[0] == varName)
					{
						return unescape(sArray[1]);
					}
				}
			}
		}
		return null;
	},

	//url编码
	urlencode: function (str)
	{
		return encodeURIComponent(str);
	},	

	//url解码
	urldecode: function (str)
	{
		return decodeURIComponent(str);
	},
		
	//将字符串转换成整数
	intval:function(s)
	{
		var _s = parseInt(s);
		if (isNaN(_s)) _s = 0;
		return _s;
	},
	
	//取得body对象
	getBody:function(s)
	{
		if (document.compatMode && document.compatMode != "BackCompat")
		{
			return document.documentElement;
		}
		else
		{
			return document.body;
		}
	}
}

//去除空格
String.prototype.trim = function() 
{
	return lib.trim(this);
};

//取得字符串长度，flg:true时 一个中文算两个
String.prototype.strlen = function(flg)
{
	if (typeof flg == "undefined") flg = false;
	if (flg == true)
	{
		return this.replace(/[^\x00-\xff]/g, "##").length;
	}
	else
	{
		return this.length;
	}
}

/**
listener.add(element, "mousedown", function(){alert("xx");});
**/
var listener = {
	/** 添加一事件的监听器 **/
	add: function (element, event, listener)
	{
		if (typeof element.addEventListener != "undefined")
		{
			element.addEventListener(event, listener, false);
		}
		else if (typeof element.attachEvent != "undefined")
		{
			element.attachEvent("on" + event, listener);
		}
		else
		{
			eval("element." + "on" + event + "=listener");
		}
	},

	/** 删除事件的监听器 **/
	remove: function (element, event, listener)
	{
		if (typeof element.removeEventListener != "undefined")
		{
			element.removeEventListener(event, listener, false);
		}
		else if (typeof element.detachEvent != "undefined")
		{
			element.detachEvent("on" + event, listener);
		}
		else
		{
			element["on" + event] = null;
		}
	},

	/** 事件目标 **/
	src: function (event)
	{
		var targetElement = null;
		if (typeof event.target != "undefined")
		{
			targetElement = event.target;
		}
		else
		{
			targetElement = event.srcElement;
		}
		while (targetElement.nodeType == 3 && targetElement.parentNode != null)
		{
			targetElement = targetElement.parentNode;
		}
		return targetElement;
	},

	stop: function (event)
	{
		if (typeof event.stopPropagation != "undefined")
		{
			event.stopPropagation();
		}
		else
		{
			event.cancelBubble = true;
		}
	}
}

/**
cookie.set("name", "value", 3600, "/", "duojiu.com");
cookie.get("name");
**/
var cookie = {
	//设置cookie
	set: function (name, value, time, path, domain) 
	{
		var expires = "";
		if (time) 
		{
			var date = new Date();
			date.setTime(date.getTime() + time * 1000);
			expires = "; expires=" + date.toGMTString();
		}
		if (!path) path = "/";
		
		if (domain)
		{
			document.cookie = name + "=" + value + expires + "; path=" + path + "; domain=" + domain + ";";
		}
		else
		{
			document.cookie = name + "=" + value + expires + "; path=" + path + ";";
		}
	},

	//取得cookie值
	get: function (name) 
	{
		var name = name + "=";
		var cookies = document.cookie.split(";");
		for(var i=0; i<cookies.length; i++) 
		{
			var c = cookies[i];
			while (c.charAt(0) == " ") c = c.substring(1, c.length);
			if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
		}
		return null;
	}
}


/** XMLHTTP **/
if (!window.XMLHttpRequest) 
{
	window.XMLHttpRequest = function()
	{
		var xmlhttp = null;
		try 
		{ 
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
		} 
		catch (e) 
		{
			try 
			{ 
				xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
			} 
			catch (e)
			{
				try 
				{ 
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e)
				{}
			}
		}
		return xmlhttp;
	}
}



//var xmlhttp = new XMLHttpRequest();

/**new Request(function()
{
	if (xmlhttp.readyState == 4)
	{
		alert(xmlhttp.responseText);
	}
});**/
function Request(callback) 
{
	this.xmlhttp = new XMLHttpRequest();
	this.post = function (url, args)
	{
		this.xmlhttp.open("post", url, true);
		this.xmlhttp.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
		//this.xmlhttp.setRequestHeader("Charset","gb2312");
		this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		this.xmlhttp.onreadystatechange = callback;
		this.xmlhttp.send(args);
	}

	this.get = function (url)
	{
		this.xmlhttp.open("get", url, true);
		this.xmlhttp.onreadystatechange = callback;
		this.xmlhttp.send(null);
	}
}

/**
drag.init(
	{
		element: div,
		start: function()
		{
			this.element.innerHTML = "开始";
		},
		drag: function()
		{
			this.element.innerHTML = "进行中...";
		},
		end: function()
		{
			this.element.innerHTML = "结束";
		}
	}
);
**/
var drag = {
	flg: 0,
	dragX: 0,
	dragY: 0,
	dragEX: 0,
	dragEY: 0,
	element: null,
	direction: null,
	customStart: null,
	customDrag: null,
	customEnd: null, 
	minX: null,
	maxX: null,
	minY: null,
	maxY: null,
	init: function(dragObj)
	{
		this.element = dragObj.element;
		this.customStart = dragObj.start;
		this.customDrag = dragObj.drag;
		this.customEnd = dragObj.end;
		if (typeof dragObj.direction == "undefined") dragObj.direction = "all";
		if (typeof dragObj.minX == "undefined") dragObj.minX = 0;
		if (typeof dragObj.maxX == "undefined") dragObj.maxX = 0;
		if (typeof dragObj.minY == "undefined") dragObj.minY = 0;
		if (typeof dragObj.maxY == "undefined") dragObj.maxY = 0;
		this.direction = dragObj.direction;
		this.minX = lib.intval(dragObj.minX);
		this.maxX = lib.intval(dragObj.maxX);
		this.minY = lib.intval(dragObj.minY);
		this.maxY = lib.intval(dragObj.maxY);
		this.element.style.cursor = "auto";	
		listener.add(this.element, "mousedown", this.start);
		listener.add(this.element, "mousemove", this.drag);
		listener.add(this.element, "mouseout", this.end);
		listener.add(this.element, "mouseup", this.end);  
		this.element.onDragStart=new Function();
		this.element.onDragEnd=new Function();
		this.element.onDrag=new Function()
	},

	start: function(e)
	{
		drag.element.style.cursor = "move";		
		drag.flg = 1;
		drag.dragX = e.clientX;
		drag.dragY = e.clientY;
		drag.dragEX = lib.x(drag.element);
		drag.dragEY = lib.y(drag.element);
		drag.customStart();
	},

	drag:function(e)
	{			
		if (drag.flg == 1)
		{
			drag.element.style.cursor = "move";	
			x1 = e.clientX;
			y1 = e.clientY;		
			drag.element.style.position = "absolute";
			if (drag.direction == "x" || drag.direction == "all")
			{
				drag.element.style.left = drag.left(x1 - drag.dragX + drag.dragEX) + "px";
			}
			if (drag.direction == "y" || drag.direction == "all")
			{
				drag.element.style.top = drag.top(y1 - drag.dragY + drag.dragEY) + "px";
			}
			drag.dragX = x1;
			drag.dragY = y1;
			drag.dragEX = lib.intval(drag.element.style.left);
			drag.dragEY = lib.intval(drag.element.style.top);
			drag.customDrag();
		}	
	},

	end:function(e)
	{
		drag.element.style.cursor = "auto";
		drag.flg = 0;
		drag.customEnd();
	},

	left:function(leftPx)
	{
		if (drag.minX > 0 && leftPx < drag.minX) 
			return drag.minX;
		if (drag.maxX > 0 && leftPx > drag.maxX)
			return drag.maxX;
		return leftPx;
	},

	top:function(topPx)
	{
		if (drag.minY > 0 && topPx < drag.minY) 
			return drag.minY;
		if (drag.maxY > 0 && topPx > drag.maxY)
			return drag.maxY;
		return topPx;
	}
}