/*
 * Created by Hobo
 * Http://www.qq.com/
 * Tencent Technologies (Shenzhen) Company Limited
 * All rights reserved
 */

/************************检测浏览器类型*************************************************/
var Browser = new Object();

Browser.ua = window.navigator.userAgent.toLowerCase();
Browser.ie = /msie/.test(Browser.ua);
Browser.moz = /gecko/.test(Browser.ua);

/************************为document.getElementById增加一个快捷方式************************/
var $ = function(s)
{
	return document.getElementById(s);
};

/************************String.prototype.trim********************************************/
String.prototype.trim = function()
{
	return this.replace(/^\s*|\s*$/ig, "");
};
/********************针对ff中跨域加载loadXML错误的补丁************************/
function getXmlDoc(s)
{
	var xmlDocument = new XmlDocument();
	if (Browser.moz)
	{
		var parser = new DOMParser();
		xmlDocument = parser.parseFromString(s, "text/xml");
	}
	else
	{
		xmlDocument.loadXML(s);
	}
	return xmlDocument;
}
/************************如果为firefox浏览器,增加属性及方法****/
if (Browser.moz)
{
	XMLDocument.prototype.loadXML = function(s)
	{
		var parser = new DOMParser();
		var doc2 = parser.parseFromString(s, "text/xml");

		while (this.hasChildNodes())
		{
			this.removeChild(this.lastChild);
		}
		var cs=doc2.childNodes;
		var l = cs.length;

		for (var i = 0; i < l; i++)
		{
			this.appendChild(this.importNode(cs[i], true));
		}
	};
	
	Node.prototype.__defineGetter__
	(
		"xml",
		function()
		{
			return (new XMLSerializer()).serializeToString(this,"text/xml");
		}
	);

	Node.prototype.__defineGetter__
	(
		"text",
		function()
		{
			return this.xml.replace(/<\/?[^>]+>/ig, "");
		}
	);

	Node.prototype.selectNodes = function(sExpr)
	{
		var doc = this.nodeType==9 ? this : this.ownerDocument;
		var nsRes = doc.createNSResolver(this.nodeType==9 ? this.documentElement : this);
		var nsRes2;

		if (doc._selectionNamespaces)
		{
			nsRes2 = function(s)
			{
				if (s in doc._selectionNamespaces)
				{
					return doc._selectionNamespaces[s];
				}

				return nsRes.lookupNamespaceURI(s);
			};
		}
		else
		{
			nsRes2=nsRes;
		}

		var xpRes = doc.evaluate(sExpr, this, nsRes2, 5, null);
		var res=[];
		var item;

		while ((item = xpRes.iterateNext()))
		res.push(item);

		return res;
	};

	Node.prototype.selectSingleNode = function(sExpr)
	{
		var doc = this.nodeType==9 ? this : this.ownerDocument;
		var nsRes = doc.createNSResolver(this.nodeType==9 ? this.documentElement : this);
		var nsRes2;

		if (doc._selectionNamespaces)
		{
			nsRes2 = function(s)
			{
				if (s in doc._selectionNamespaces)
				{
					return doc._selectionNamespaces[s];
				}

				return nsRes.lookupNamespaceURI(s);
			};
		}
		else 
		{
			nsRes2 = nsRes;
		}

		var xpRes = doc.evaluate(sExpr, this, nsRes2, 9, null);
	
		return xpRes.singleNodeValue;
	};

	Node.prototype.transformNode = function(oXsltNode)
	{
		var doc = this.nodeType==9 ? this : this.ownerDocument;
		var processor = new XSLTProcessor();
		processor.importStylesheet(oXsltNode);
		var df = processor.transformToFragment(this, doc);

		return df.xml;
	};
}

/************************XmlHttp***********************************************************/
var XmlHttp = function()
{
	if (Browser.ie)
	{
		var msxmls = ["MSXML3", "MSXML2", "Microsoft"]

		for (var i = 0; i < msxmls.length; i++) 
		{
			try 
			{
				return new ActiveXObject(msxmls[i] + ".XmlHttp");
			}
			catch (e) 
			{
			}
		}
	}
	else
	{
		return new XMLHttpRequest();
	}
};

/************************XmlDocument*********************************************************/
var XmlDocument = function()
{
	if (Browser.ie)
	{
		var msxmls = ["MSXML3", "MSXML2", "Microsoft"]

		for (var i = 0; i < msxmls.length; i++) 
		{
			try 
			{
				return new ActiveXObject(msxmls[i] + ".XmlDom");
			}
			catch (e) 
			{
			}
		}
	}
	else
	{
		var doc = document.implementation.createDocument("", "", null);
		doc.addEventListener("load", function(e){this.readyState=4;}, false);
		doc.readyState = 4;

		return doc;
	}
};
/************************获得参数*********************************************************/
var Url = {
	getVar : function(name)
	{
		var reg = new RegExp("(&|\\u003F)" + name + "=([^&]*)(&|$)")
		var arr = window.location.href.match(reg);

		if (arr != null)
		{
			return arr[2];
		}

		return null;
	}
};

function g_mand()
{
	return Math.random();
}