﻿(function($) {	
	String.prototype.UTF8Length = vs_str_UTF8Length;
	String.prototype.BLength = vs_str_BLength;
	String.prototype.UTF8Trunc = vs_str_UTF8Trunc;
	String.prototype.BTrunc = vs_str_BTrunc;
	String.prototype.format = vs_str_format;
	String.prototype.trim = vs_str_trim;
	String.prototype.leftTrim = vs_str_leftTrim;
	String.prototype.rightTrim = vs_str_rightTrim;
	
	if(typeof(Array.prototype.push) == "undefined")
	{
		Array.prototype.push = vs_ar_push;
		Array.prototype.pop = vs_ar_pop;
	}
	
	
	$.vs = new Object();
	// Error Messages
	var ERR_UNKNOW="服务器忙";
	var err_xmlErrorCode = new Array();
	err_xmlErrorCode["5001"] = "注册失败";
	err_xmlErrorCode["6001"] = "用户名不存在或者密码错误";
	err_xmlErrorCode["6002"] = "该用户名已经被注册";
	err_xmlErrorCode["6003"] = "注册帐号不能以anonymous或者sgd开头";
	err_xmlErrorCode["6004"] = "注册帐号由字母、数字、下划线组成";
	
	$.vs.xmlErrorCode=err_xmlErrorCode;

	$.vs.checkXml = function(xml,Rem){
		var root;
		var em;
		//var s;
		if(!(xml&&(root=xml.selectSingleNode("//root"))))
		{
			alert("格式错误");
			return false;
		}
		else if($.vs.getValue(root,"s")=="f")
		{
			em=$.vs.getValue(root,"em");
			if(err_xmlErrorCode[em])
			{
				alert(err_xmlErrorCode[em]);
			}
			else
			{
				alert(ERR_UNKNOW);
			}
			if(Rem)
			{
				return em;
			}
			return false;
		}
		else if($.vs.getValue(root,"s")=="o")
		{
			if(Rem)
			{
				return "o";
			}
			return true;
		}
		else
		{
			alert(ERR_UNKNOW);
			return false;
		}
	};
		
	$.vs.getValue = function(node, name){
		var value = "";
		var n = node.selectSingleNode(name);
		
		if(n)
		{
			value = n.text;
		}
		
		return value;
	};

	$.vs.getSafeHTML = function(s){
		var html = "";
		var safeNode = $.safeNode;
		
		if(!safeNode)
		{
			safeNode = document.createElement("TEXTAREA");
		}
	
		if(safeNode)
		{
		 	var el = $(safeNode);
			el.text(s);
			html=el.html();
			el.text("");

			$.safeNode = safeNode;
		}
		
		return html;
	};
	
	$.vs.encodeURLValue = function(s){
		if(typeof(s) != "string")
		{
			return "";
		}
		try
		{
			if(typeof(encodeURIComponent) != "undefined")
			{
				return encodeURIComponent(s);
			}
			
			if(typeof(encodeURI) != "undefined")
			{
				return encodeURI(s).replace(/&/g, "%26").replace(/=/g, "%3D");
			}
		}
		catch(e)
		{
			return escape(s).replace(/&/g, "%26").replace(/=/g, "%3D");
		}
		return escape(s).replace(/&/g, "%26").replace(/=/g, "%3D");
	};
	
	$.vs.decodeURLValue = function(s){
		
		if(typeof(s) != "string")
		{
			return "";
		}
		try
		{
			if(typeof(decodeURIComponent) != "undefined")
			{
				return decodeURIComponent(s);
			}
			
			if(typeof(decodeURI) != "undefined")
			{
				return decodeURI(s.replace(/%3D/g, "=").replace(/%26/g, "&"));
			}
		}
		catch(e)
		{
			return unescape(s.replace(/%3D/g, "=").replace(/%26/g, "&"));
		}
		return unescape(s.replace(/%3D/g, "=").replace(/%26/g, "&"));
	};

	$.vs.query = function(q) {
		q = q || window.location.search;
		q = q.substr(1,q.length);

		var ret = {};
		
		$.each(q.split("&"), function(){
			var arr = this.split("=");
			var key = "", val = "";
			if (arr.length > 0)	
				key = $.vs.decodeURLValue(arr[0]);
			if (arr.length > 1)
				val = $.vs.decodeURLValue(arr[1]);
			ret[key] = val;
		});
		return ret;
	};
/*	
	$.prototype.hide=function()
	{
		this.addClass("dis");
		return this;
	};
	
	$.prototype.show=function()
	{
		this.removeClass("dis");
		return this;
	};
*/
	// jquery.cookie.js
	$.clearCookie=function(name,domain)
	{
		var nv = name + "=;";
		var d = null;
		
		d = new Date();
		d = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours()-1, d.getMinutes(), d.getSeconds(), d.getMilliseconds());		
		nv += "expires=" + d.toGMTString() + ";";
		nv += "path=/;";		
		if(typeof(domain) == "string" && domain != "")
		{
			nv += "domain=" + domain + ";";
		}
	
		document.cookie = nv;
	}
	$.cookie = function(name, value, options) {
		if (typeof value != 'undefined') { // name and value given, set cookie
			options = options || {};
			if (value === null) {
				value = '';
				options.expires = -1;
			}
			var expires = '';
			if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
				var date;
				if (typeof options.expires == 'number') {
					date = new Date();
					date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
				} else {
					date = options.expires;
				}
				expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
			}
			var path = options.path ? '; path=' + options.path : '';
			var domain = options.domain ? '; domain=' + options.domain : '';
			var secure = options.secure ? '; secure' : '';
			if(name == "skey" || name == "skey2")
			{
				document.cookie = [name, '=', escape(value), expires, path, domain, secure].join('');
			}
			else
			{
				document.cookie = [name, '=', $.vs.encodeURLValue(value), expires, path, domain, secure].join('');
			}
		} else { // only name given, get cookie
			var cookieValue = "";
			if (document.cookie && document.cookie != '') {
				var cookies = document.cookie.split(';');
				for (var i = 0; i < cookies.length; i++) {
					var cookie = jQuery.trim(cookies[i]);
					// Does this cookie string begin with the name we want?
					if (cookie.substring(0, name.length + 1) == (name + '=')) {
						if(name == "skey" || name == "skey2")
						{
							cookieValue = unescape(cookie.substring(name.length + 1));
						}
						else
						{
							cookieValue =  $.vs.decodeURLValue(cookie.substring(name.length + 1));
						}
						break;
					}
				}
			}
			return cookieValue;
			
		}
	};

})(jQuery);

function vs_addScript(url, script, lang)
{
	var scr = document.createElement("SCRIPT");
	if(scr)
	{
		if(!lang)
		{
			lang = "javascript";
		}
		
		scr.language = lang;
		
		if(url)
		{
			scr.src = url;
		}
		
		if(script)
		{
			scr.text = script;
		}
		
		document.body.appendChild(scr);
	}

	return scr;
}

function vs_str_trim(cs)
{
	return this.leftTrim(cs).rightTrim(cs);
}

function vs_str_leftTrim(cs)
{
	var len = this.length;
	var i = 0;
	
	if(typeof(cs) != "string")
	{
		cs = " ";
	}
	
	while(i < len)
	{
		if(cs.indexOf(this.charAt(i)) < 0)
		{
			break;
		}
		
		i++;
	}

	if(i <= len)
	{
		s = this.substr(i);
	}
	else
	{
		s = this;
	}

	return s;
}

function vs_str_rightTrim(cs)
{
	var s;
	var len = this.length;
	var i = len - 1;
	
	if(typeof(cs) != "string")
	{
		cs = " ";
	}
	
	while(i >= 0)
	{
		if(cs.indexOf(this.charAt(i)) < 0)
		{
			break;
		}
		
		i--;
	}
	
	if(i >= -1)
	{
		s = this.substr(0, i + 1);
	}
	else
	{
		s = this;
	}

	return s;
}

var VS_DATE = "yyyy-mm-dd";
var VS_TIME = "HH:MM:SS";
var VS_DATETIME = "yyyy-mm-dd HH:MM:SS";

function vs_vsinit()
{
	Date.prototype.format = vs_dt_format;
	if(typeof(Array.prototype.push) == "undefined")
	{
		Array.prototype.push = vs_ar_push;
		Array.prototype.pop = vs_ar_pop;
	}
	
	if (!($.browser.msie))
	{
		//for event
		Window.prototype.__defineGetter__("event", ff_win_event);
		
		XMLDocument.prototype.getAttributeOld = Element.prototype.getAttribute;
		XMLDocument.prototype.getAttribute = ff_xml_el_getAttribute;

		XMLDocument.prototype.selectNodes = ff_xml_el_selectNodes;
		XMLDocument.prototype.selectSingleNode = ff_xml_el_selectSingleNode;
	
		XMLDocument.prototype.__defineGetter__("text", ff_xml_el_get_text);
		
		Element.prototype.getAttributeOld = Element.prototype.getAttribute;
		Element.prototype.getAttribute = ff_xml_el_getAttribute;

		Element.prototype.selectNodes = ff_xml_el_selectNodes;
		Element.prototype.selectSingleNode = ff_xml_el_selectSingleNode;
	
		Element.prototype.__defineGetter__("text", ff_xml_el_get_text);
		
		window.clipboardData = new Object();
		window.clipboardData.setData = ff_cb_setData;
	}	
}

function ff_cb_setData(type, data)
{
	var b = false;
	var clip;
	var trans;
	var strObj;
	var clipID;

	try
	{
		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		b = true;
	}
	catch(e)
	{
		alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将[signed.applets.codebase_principal_support]设置为'true'");
	}

	type = type.toLowerCase();
	if(type == "text" && b)
	{
		b = false;
		
		clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
		trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
		strObj = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		clipID = Components.interfaces.nsIClipboard;

		if(clip && trans && strObj && clipID)
		{
			trans.addDataFlavor("text/unicode");
			strObj.data = data;
			trans.setTransferData("text/unicode", strObj, data.length * 2);

			clip.setData(trans, null, clipID.kGlobalClipboard);
			b = true;
		}
	}

	return b;
}

function ff_xml_el_selectNodes(xpath, maxNodes)
{
	if(xpath.substr(0, 2) == "//")
	{
		xpath = xpath.substr(2);
	}
	
	xpath = xpath.toLowerCase();

	if(!maxNodes)
	{
		maxNodes = 10000;
	}

	var arrXPath = xpath.split('/');
	var nodes = new Array();
	
	ff_xml_el_findNodes(this.childNodes, arrXPath, 0, nodes, maxNodes);
	
	nodes.i = 0;
	nodes.nextNode = ff_xml_node_nextNode;

	return nodes;
}

function ff_xml_el_findNodes(childNodes, arrXPath, deep, nodes, maxNodes)
{
	var node;
	var i;
	var name = arrXPath[deep];
	var s;
	
	for(i = 0; i < childNodes.length; i++)
	{
		if(nodes.length >= maxNodes)
		{
			break;
		}

		node = childNodes[i];
		if(node.nodeName.toLowerCase() == name)
		{
			if(deep < arrXPath.length - 1)
			{
				ff_xml_el_findNodes(node.childNodes, arrXPath, deep + 1, nodes, maxNodes);
			}
			else
			{
				nodes.push(node);
			}
		}
	}
}

function ff_xml_el_selectSingleNode(xpath)
{
	var nodes = this.selectNodes(xpath, 1);
	return nodes.nextNode();
}

function ff_xml_el_get_text()
{
	return this.textContent;
}

function ff_xml_node_nextNode()
{
	var node = null;
	if(this.i < this.length)
	{
		node = this[this.i];
		this.i++;
	}
	
	return node;
}

function ff_xml_el_getAttribute(name)
{
	name = name.toLowerCase();
	
	return this.getAttributeOld(name);
}

function ff_win_event()
{
	var caller = arguments.callee.caller;
	var e;

	while(caller)
	{
		e = caller.arguments[0];
		
		if(e && (e.constructor == MouseEvent || e.constructor == KeyboardEvent || e.constructor == Event))
		{
			if(!e.srcElement)
			{
				e.srcElement = e.target;
			}
			
			break;
		}
		else
		{
			e = new Object();
			caller = caller.caller;
		}
	}

	return e;
}


function vs_ar_push(v)
{
	this[this.length] = v;
	
	return this.length;
}

function vs_ar_pop()
{
	var v;

	if(this.length > 0)
	{
		v = this[this.length - 1];
		this.length--;
	}

	return v;
}
function vs_str_UTF8Length(maxlen)
{
	var i;
	var len = 0;
	var s = this;
	var ch;
	
	for(i = 0; i < s.length; i++)
	{
		ch = s.charAt(i);
		
		if(ch < String.fromCharCode(0x80))
		{
			len++;
		}
		else if(ch < String.fromCharCode(0x800))
		{
			len += 2;
		}
		else
		{
			len += 3;
		}
		
		if(maxlen)
		{
			if(len > maxlen)
			{
				len = i;
				break;
			}
		}
	}
	
	if(maxlen)
	{
		len = Math.min(i, len);
	}

	return len;
}

function vs_str_UTF8Trunc(maxlen)
{
	var s = this;
	var i = s.UTF8Length(maxlen);

	if(i >= 0)
	{
		s = s.substr(0, i);
	}
	
	return s;
}

function vs_str_BLength(maxlen)
{
	var i;
	var len = 0;
	var s = this;
	var ch;
	
	for(i = 0; i < s.length; i++)
	{
		ch = s.charAt(i);
		
		if(ch < String.fromCharCode(0x100))
		{
			len++;
		}
		else
		{
			len += 2;
		}

		if(maxlen)
		{
			if(len > maxlen)
			{
				len = i;
				break;
			}
		}
	}
	
	if(maxlen)
	{
		len = Math.min(i, len);
	}

	return len;
}

function vs_str_BTrunc(maxlen)
{
	var s = this;
	var i = s.BLength(maxlen);

	if(i >= 0)
	{
		s = s.substr(0, i);
	}
	
	return s;
}

function vs_str_format()
{
	var ar = this.split("?");
	var i;
	var s = "";
	var t;
	
	for(i = 0; i < ar.length; i++)
	{
		if(i < arguments.length && i != (ar.length - 1))
		{
			t = arguments[i];
		}
		else
		{
			t = "";
		}

		s += ar[i] + t;
	}
	
	return s;
}

function vs_dt_format(fmt)
{
	var s = fmt.replace(/yyyy/g, this.getFullYear());
	s = s.replace(/mm/g, vs_dt_toString(this.getMonth() + 1));
	s = s.replace(/m/g, this.getMonth() + 1);
	s = s.replace(/dd/g, vs_dt_toString(this.getDate()));
	s = s.replace(/d/g, this.getDate());
	s = s.replace(/HH/g, vs_dt_toString(this.getHours()));
	s = s.replace(/MM/g, vs_dt_toString(this.getMinutes()));
	s = s.replace(/SS/g, vs_dt_toString(this.getSeconds()));
	
	return s;
}

function vs_dt_toString(n)
{
	var s;
	
	if(n < 10)
	{
		s = "0" + n;
	}
	else
	{
		s = n;
	}
	
	return s;
}
//pv_init();
vs_vsinit();