﻿
if(typeof(HTMLElement)!="undefined" && !window.opera)
{
	HTMLElement.prototype.__defineGetter__("outerHTML",function()
	{
		var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++)
		if(a[i].specified)		str+=" "+a[i].name+'="'+a[i].value+'"';
		if(!this.canHaveChildren)	return str+" />";
		return str+">"+this.innerHTML+"</"+this.tagName+">";
	});
	HTMLElement.prototype.insertAdjacentHTML=function(where, html)
	{
		var e=this.ownerDocument.createRange();
		e.setStartBefore(this);
		e=e.createContextualFragment(html);
		switch (where)
		{
			case 'beforeBegin': this.parentNode.insertBefore(e, this);break;
			case 'afterBegin': this.insertBefore(e, this.firstChild); break;
			case 'beforeEnd': this.appendChild(e); break;
			case 'afterEnd':
			if(!this.nextSibling) this.parentNode.appendChild(e);
			else this.parentNode.insertBefore(e, this.nextSibling); break;
		}
	};

	HTMLElement.prototype.__defineSetter__("outerHTML",function(s)
	{
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var df = r.createContextualFragment(s);
		this.parentNode.replaceChild(df, this);
		return s;
	});
	HTMLElement.prototype.__defineGetter__("canHaveChildren",function()
	{
		return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());
	});
}
var valexpress=new Array();
valexpress["email"]=/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$/;
valexpress["username"]=/^[0-9a-z][0-9a-z@_\-\.]{2,31}$/;
valexpress["nickname"]=/^([a-zA-Z]|[\u00FF-\uFFFF])[\w\-\u00FF-\uFFFF]{1,16}$/;
valexpress["password"]=/^[\x20-\x7E]{6,32}$/;
valexpress["mobile"]=/^1(3\d|5\d|8[689])\d{8}$/;
valexpress["phone"]=/^0\d{2,4}\-\d{7,8}$/;
valexpress["post"]=/^\d{6}$/;
valexpress["msn"]=valexpress["email"];
valexpress["qq"]=/^[1-9]\d{4,11}$/;
valexpress["wangwang"]=valexpress["username"];
valexpress["date"]=/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))$/;
valexpress["time"]=/^(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9]))))?$/;
valexpress["datetime"]=/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/;
valexpress["idcard"]=/^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)\d{4}(18|19|20)\d{2}((0\d)|(1[0-2]))(([0-2]\d)|(3[0-1]))\d{3}[\dXx]$/;
function $(s){return document.getElementById(s)}
function validate(element,regEx,nullMsg)
{
	var el;
	if(typeof(element)!="object")	el=$(element.toString());
	else	el=element;
	if(!el)	return false;
	if(!el.value || el.value=="")	{alert(nullMsg);try{el.focus();}catch(ex){}return false}
	else
	{
		var r,illegalMsg;
		if(arguments.length>3)	illegalMsg=arguments[3];
		else	illegalMsg=nullMsg;
		if(typeof(regEx)!="object")
		{
			regEx=regEx.toString();
			if(valexpress[regEx]!=null)	r=valexpress[regEx];
			else	r=new RegExp(regEx);
		}
		else r=regEx;
		if(el.value.match(r)==null)
		{
			alert(illegalMsg);
			try{el.select();}catch(ex){}
			return false;
		}
		else	return true;
	}
}
function removeClassName(e,clsName)
{
	if(!e)	return false;
	var r=false;
	var cls=e.className;
	if(cls!=null && cls!="")
	{
		if(cls==clsName)
		{
			e.className="";
			r=true;
		}
		else
		{
			var clss=cls.split(" ");
			var newClss=new Array();
			for(var i=0;i<clss.length;i++)
			{
				if(clss[i]!=clsName && clss[i]!="")
					newClss.push(clss[i]);
			}
			if(newClss.length!=clss.length)
				r=true;
			e.className=newClss.join(" ");
		}
	}
	return r;
}
function getElementPosition(o)
{
	var cx=0,cy=0,ax,ay,bx,by;
	if(navigator.appName=="Microsoft Internet Explorer")
	{
		for(var p=o;p;p=p.offsetParent)
		{
			ax=parseInt(p.offsetLeft);
			ay=parseInt(p.offsetTop);
			bx=parseInt(p.currentStyle.borderLeftWidth.replace(/[^\d]+$/,""));
			by=parseInt(p.currentStyle.borderTopWidth.replace(/[^\d]+$/,""));
			
			if(isNaN(ax))ax=0;
			if(isNaN(ay))ay=0;
			if(isNaN(bx))bx=0;
			if(isNaN(by))by=0;
			cx+=ax+bx;
			cy+=ay+by;
			if(p==p.offsetParent)
				break;
		}
	}
	else
	{
		cx=o.offsetLeft;
		cy=o.offsetTop;
	}
	return {"left":cx,"top":cy,"right":(cx+o.offsetWidth),"bottom":(cy+o.offsetHeight)};
}
function clearOptions(e)
{
	while(e.options.length>0)
		e.options[0]=null;
}
function loadXml(u)
{
	var xml = new ActiveXObject("Microsoft.XMLDOM");
	if(arguments.length>1 && typeof(arguments[1])=="function")
	{
		var xh = new ActiveXObject("Microsoft.XMLHTTP");
		var ok=arguments[1];
		var faild=(arguments.length>2 && typeof(arguments[2])=="function")?arguments[2]:null;
		xh.onreadystatechange=function()
		{
			if(xh.readyState==4)
			{
				if(xh.status==200)
				{
					ok(xh.responseXML);
				}
				else if(faild)
				{
					faild(xh);
				}
			}
		};
		xh.open("GET",u,true);
		xh.send();
	}
	else
	{
		xml.async="false";
		xml.load(u);
		return xml;
	}
}
function removeUrlParams(u)
{
	var r;
	for(var i=1;i<arguments.length;i++)
	{
		r=new RegExp("(\\?|&)"+arguments[i]+"=[^&]*","i");
		u=u.replace(r,"$1");
	}
	if(u.indexOf("?")>=0)
		u+="&";
	else
		u+="?";
	while(u.indexOf("&&")>=0)
		u=u.replace("&&","&");
	u=u.replace("?&","?");
	return u;
}

function urlEncode(s)
{
	return encodeURI(s).replace("-","%2D");
}
function itemExpend(i)
{
	var ul=$(i);
	var h3=$(i+"_h");
	if(!ul)	return;
	if(ul.style.display=="none" || ul.currentStyle.display=="none")
	{
		ul.style.display="block";
		if(h3)h3.className="expend";
	}
	else
	{
		ul.style.display="none";
		if(h3)h3.className="collapsed";
	}
}
var lastTab=new Array();
var lastTabPage=new Array();
function setTabPage(w,i)
{
	var h=$(i+"_h");
	var t=$(i);
	if(!t)	return;
	if(lastTab[w])lastTab[w].className="";
	lastTab[w]=h;
	if(h)h.className="current";
	if(lastTabPage[w])lastTabPage[w].style.display="none";
	lastTabPage[w]=t;
	t.style.display="block";
}
function charCount(o,v)
{
	if(typeof(v)!="object")
		v=$(v.toString());
	if(v && o)
	{
		v.innerHTML=o.value.length;
	}
}
function showInnerWindow(e)
{
	var inn=$("innerwindow");
	var body=(document.getElementsByTagName("body"))[0];
	if(!inn)
	{
		inn=document.createElement("div");
		inn.id="innerwindow";
		body.appendChild(inn);
	}
	inn.style.display="block";
	inn.style.height="100%";
	e.style.display="block";
	setTimeout("setInnerWindowSize(\""+e.id+"\")",0);
}
function setInnerWindowSize(i)
{
	var inn=$("innerwindow");
	var item=$(i);
	var body=(document.getElementsByTagName("body"))[0];
	var h=inn.offsetHeight;
	var bh=body.offsetHeight;
	if(h<bh)
	{
		inn.style.height=bh+"px";
	}
	item.style.left=(body.offsetWidth-item.offsetWidth)/2;
	item.style.top=(h-item.offsetHeight)/2;
}
