var http_request = false;
function send_request(url)
{
	http_request = false;
	if(window.XMLHttpRequest) //Mozilla 浏览器
	{
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType)
		{
			http_request.overrideMimeType('text/xml'); //设置MiME类别
		}
	}
	else if (window.ActiveXObject) // IE浏览器
	{
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
			}
		}
	}

	if (!http_request) // 异常，创建对象实例失败
	{
		window.alert("不能创建XMLHttpRequest对象实例... 囧rz");
		return false;
	}
	http_request.onreadystatechange = processRequest;
	// 确定发送请求的方式和URL以及是否同步执行下段代码
	http_request.open("GET", url, true);
	http_request.send(null);
}

function processRequest() // 处理返回信息的函数
{
	if (http_request.readyState == 4)
	{	// 判断对象状态
		if (http_request.status == 200)
		{	// 信息已经成功返回，开始处理信息
			//alert(http_request.responseText);
			var msgStr=http_request.responseText;

			if(msgStr=="0")
			{
				document.getElementById("check_mail_info").className="check_user_success";
				document.getElementById("check_mail_info").innerHTML = "恭喜，这个E-mail可用...";
				return true;
			}
			else
			{
				document.getElementById("check_mail_info").className="check_user_failure";
				document.getElementById("check_mail_info").innerHTML = "这个E-mail已被用掉了... 囧";
				return false;
			}
		}
		else
			alert("你所请求的页面有异常... 囧");
	}
}

function checkMail()
{
	var f = document.forms[1];
	var email = f.email.value;

	var jsmail = document.getElementById("mail").value;
	document.getElementById("check_mail_info").innerHTML = "等等哈... ￣▽￣";
	document.getElementById("check_mail_info").className="check_user_waiting";

	if(checkMailAviable(jsmail))
	{
		document.getElementById("mail1").value = jsmail;
		document.checkMailForm.submit();
		send_request("checkmail.do?email="+email);
		return true;
	}
}

function checkMailAviable(input_mail)
{
	if(input_mail=="")
	{
		document.getElementById("check_mail_info").innerHTML = "E-mail不要留空...";
		document.getElementById("check_mail_info").className="check_user_unlawful";
		return false;
	}
	else if(input_mail.indexOf(" ")!=-1 || input_mail.indexOf("'")!=-1 || input_mail.indexOf("\"")!=-1 || 
		input_mail.indexOf("*")!=-1 || input_mail.indexOf("\\")!=-1 || input_mail.indexOf("/")!=-1 || 
		input_mail.indexOf(";")!=-1 || input_mail.indexOf(":")!=-1 || input_mail.indexOf("?")!=-1)
	{
		document.getElementById("check_mail_info").innerHTML = "E-mail包含非法字符...";
		document.getElementById("check_mail_info").className="check_user_unlawful";
		return false;
	}
	else
	{
		if(input_mail.indexOf("@")==-1)
		{
			document.getElementById("check_mail_info").innerHTML = "E-mail格式错误...";
			document.getElementById("check_mail_info").className="check_user_unlawful";
			return false;
		}
		else
		{
			if(input_mail.indexOf(".")==-1)
			{
				document.getElementById("check_mail_info").innerHTML = "E-mail格式错误...";
				document.getElementById("check_mail_info").className="check_user_unlawful";
				return false;
			}
			else
			{
				if(input_mail.substring(input_mail.lastIndexOf(".")+1,input_mail.length).length==0)
				{
					document.getElementById("check_mail_info").innerHTML = "E-mail格式错误...";
					document.getElementById("check_mail_info").className="check_user_unlawful";
					return false;
				}
				else if(input_mail.substring(input_mail.lastIndexOf("@")+1,input_mail.indexOf(".")).length==0)
				{
					document.getElementById("check_mail_info").innerHTML = "E-mail格式错误...";
					document.getElementById("check_mail_info").className="check_user_unlawful";
					return false;
				}
			}
		}
	}
	return true;
}

/* namespacing object */
var net=new Object();

net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;

/*--- content loader object for cross-browser requests ---*/
net.ContentLoader=function(url,on_load,on_error,method,params,contentType)
{
	this.req=null;
	this.on_load=on_load;
	this.on_error=(on_error) ? on_error : this.defaultError;
	this.loadXMLDoc(url,method,params,contentType);
}

net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType)
{
	if (!method)
	{
		method="GET";
	}
	if (!contentType && method=="POST")
	{
		contentType='application/x-www-form-urlencoded';
	}
	if (window.XMLHttpRequest)
	{
		this.req=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		try
		{
			this.req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e1)
		{
			try
			{
				this.req = new ActiveXObject("Microsoft.XMLHTTP");     
			}
			catch (e2)
			{
			}
		}
     //
 //this.req=new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (this.req)
	{
		try
		{
			var loader=this;
			this.req.onreadystatechange=function()
			{
				net.ContentLoader.onReadyState.call(loader);
			}
			this.req.open(method,url,true);
			if (contentType)
			{
				this.req.setRequestHeader('Content-Type', contentType);
			}
			this.req.send(params);
		}
		catch (err)
		{
			this.on_error.call(this);
		}
	}
}

net.ContentLoader.onReadyState=function()
{
	var req=this.req;
	var ready=req.readyState;
	if (ready==net.READY_STATE_COMPLETE)
	{
		var httpStatus=req.status;
		if (httpStatus==200 || httpStatus==0)
		{
			this.on_load.call(this);
		}
		else
		{
			this.on_error.call(this);
		}
	}
}

net.ContentLoader.prototype.defaultError=function()
{
	alert("error fetching data!"
	+"\n\nreadyState:"+this.req.readyState
	+"\nstatus: "+this.req.status
	+"\nheaders: "+this.req.getAllResponseHeaders());
}

function validata()
{
	var enter=true;
	var info=document.getElementById("info");
	var msg="";

	var input_user=document.forms[1].user_name.value;
	if(document.forms[1].user_name.value.match(/^\s*$/g))
	{
		msg+="昵称<br>";enter=false
		document.getElementById("info").className="check_user_failure";
	}
	else if(input_user.indexOf("'")!=-1 || input_user.indexOf("\"")!=-1 || input_user.indexOf("*")!=-1 || 
		input_user.indexOf("\\")!=-1 || input_user.indexOf("/")!=-1 || input_user.indexOf(";")!=-1 || 
		input_user.indexOf(":")!=-1 || input_user.indexOf("?")!=-1)
	{
		msg+="昵称中包含非法字符<br>";enter=false
		document.getElementById("info").className="check_user_failure";
	}
	else if(fucCheckLength(input_user) < 1 || fucCheckLength(input_user) > 30)
	{
		msg+="昵称不能超过30个字符（15个汉字）<br>";enter=false
		document.getElementById("info").className="check_user_failure";
	}

	if(document.forms[1].email.value.match(/^\s*$/g))
	{
		msg+="E-mail<br>";enter=false
		document.getElementById("info").className="check_user_failure";
	}

	if(document.forms[1].password.value.match(/^\s*$/g))
	{
		msg+="密码<br>";enter=false
		document.getElementById("info").className="check_user_failure";
	}
	else if(document.forms[1].password.value.length < 6 || document.forms[1].password.value.length >30)
	{
		msg+="密码长度建议在6-30个字符之间<br>";enter=false
		document.getElementById("info").className="check_user_failure";
	}

	if(document.forms[1].cpwd.value.match(/^\s*$/g))
	{
		msg+="确认密码<br>";enter=false
		document.getElementById("info").className="check_user_failure";
	}
	else
	{
		if(document.forms[1].cpwd.value.length < 6 || document.forms[1].cpwd.value.length >30)
		{
			msg+="确认密码长度也在6-30个字符之间<br>";enter=false
			document.getElementById("info").className="check_user_failure";
		}
		else if(document.forms[1].cpwd.value!=document.forms[1].password.value)
		{
			msg+="两次密码输入不相同哦...<br>";enter=false
			document.getElementById("info").className="check_user_failure";
		}
		else
		{
			var mdpassword=document.forms[1].password.value;
			document.forms[1].md5pwd.value=md5Encrypt(mdpassword);
		}
	}

	if(enter==false)
	{
		msg+="<br>左边要填的一个都不能少，嗯嗯";enter=false
		document.getElementById("info").className="check_user_failure";
		info.innerHTML=msg;
		return false;
	}
	if(!checkMail())
	{
		return false;
	}
	/*if(!processRequest()) 解决IE8下无法提交而去掉
	{
		return false;
	}*/
}
