/*
* 用户输入验证类
*
*
*/


//定义类
var validate = function (){}


//定义类属性
validate.prototype.showtype = 1;

validate.prototype.email_pass = '';

validate.prototype.nickname_pass = '';


//添加提示
validate.prototype.createMessage = function(id,msg){

	if(document.getElementById(id)){

		var targetElement = document.getElementById(id);

		targetElement.className = 'errormsg';

		targetElement.parentNode.className = 'err2';

		targetElement.innerHTML = msg;

		var _tip = id.replace(new RegExp('error'),'_tip');

		if(document.getElementById(_tip)){

			_tip = document.getElementById(_tip);

			_tip.style.display = 'inline-block';

		}

	}

}


//删除提示
validate.prototype.removeMessage = function(id){

	if(document.getElementById(id)){

		var targetElement = document.getElementById(id);

		targetElement.className = 'rightmsg';

		targetElement.parentNode.className = 'err3';

		if(arguments[1]){

			targetElement.innerHTML = arguments[1];

		}else{

			targetElement.innerHTML = '&nbsp;&nbsp;';

			//隐藏
			var _span = document.getElementsByTagName('span');

			for(i=0 ; i<_span.length;i++){

				if(_span[i].className == 'tip'){

					_span[i].style.display = 'none';

				}
			}

		}

	}

}


//显示提示
validate.prototype.showError = function(msg,id){

	if(this.showtype == 1){

		return this.createMessage(id,msg);

	}else{

		return alert(msg);

	}

}


//密码验证
validate.prototype.passwd = function(){

	var _passwd = document.getElementById('passwd');

	if(arguments[0]){

		if(_passwd.value != ''){

			var regular = /^\w{6,20}$/;

			if(!regular.test(_passwd.value)){

				this.showError('密码格式不正确！','passwderror');

				return 'fault';

			}

		}

	}else{

		if(_passwd.value == ''){

			this.showError('请填写密码！','passwderror');

			return 'fault';

		}
		else{

			var regular = /^\w{6,20}$/;

			if(!regular.test(_passwd.value)){

				this.showError('密码格式不正确！','passwderror');

				return 'fault';

			}

		}

	}

	this.removeMessage('passwderror');

	return '';

}


//再次输入密码
validate.prototype.re_passwd = function(){

	var _re_passwd = document.getElementById('re_passwd');

	var _passwd = document.getElementById('passwd');

	if(arguments[0]){

		if(_re_passwd.value != ''){

			if(_re_passwd.value != _passwd.value){

				this.showError('两次输入的密码不一致！','re_passwderror');

				return 'fault';

			}

		}

	}else{

		if(_re_passwd.value == ''){

			this.showError('请重新输入一次密码！','re_passwderror');

			return 'fault';

		}else{

			if(_re_passwd.value != _passwd.value){

				this.showError('两次输入的密码不一致！','re_passwderror');

				return 'fault';

			}

		}

	}

	this.removeMessage('re_passwderror');

	return '';

}


//邮箱验证
validate.prototype.email = function(){
	
    if(arguments[0] == 'new_email'){

	    var  _email = document.getElementById(arguments[0]);

    }else{
    	
    	var _email = document.getElementById('email');
    }
	
	if(_email.value ==''){

		this.showError('请填写电子邮箱地址！','emailerror');

		return 'fault';

	}
	else{

		var r = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/;

		if (!r.test(_email.value.toLowerCase())){

			this.showError('电子邮箱格式不正确！','emailerror');

			return 'fault';

		}

	}

	if(!arguments[0]){

		this.removeMessage('emailerror');

	}

	return '';
}

//邮箱是否存在?
validate.prototype.email_exist = function(url){

	var _email = document.getElementById('email');

	if(this.email(1) !=''){

		return 'fault';
	}

	$.post(url,{is_email:_email.value},function(data){

		if(data == '电子邮箱未被占用，可以使用！'){

			validate.prototype.removeMessage('emailerror','');

			validate.prototype.email_pass = '';

		}else{

			validate.prototype.showError(data,'emailerror');

			validate.prototype.email_pass = 'fault';

		}

	});

	return validate.prototype.email_pass;

}


validate.prototype.nickname_exist = function(url){

	var _nickname = document.getElementById('nickname');

	if(this.nickname(1) !=''){

		return 'fault';

	}


	$.post(url,{is_nickname:_nickname.value,email:arguments[1]},function(data){

		if(data == '昵称未被占用，可以使用！'){

			validate.prototype.removeMessage('nicknameerror','');

			validate.prototype.nickname_pass = '';

		}else{

			validate.prototype.showError(data,'nicknameerror');

			validate.prototype.nickname_pass = 'fault';

		}

	});

	return validate.prototype.nickname_pass;
}

//昵称检查
validate.prototype.nickname = function(){

	_nickname = document.getElementById('nickname');


	if(_nickname.value==''){

		this.showError('请填写昵称！','nicknameerror');

		return 'fault';

	}else{

		var r = /(^[a-zA-Z0-9]{4,15}$)|^[\u4e00-\u9fa5]{2,15}$/;

		if(!r.test(_nickname.value)){

			this.showError('昵称格式不正确！','nicknameerror');

			return 'fault';
		}

	}

	if(!arguments[0]){

		this.removeMessage('nicknameerror');

	}
	return '';

}


//姓名检查
validate.prototype.name = function(){

	_name = document.getElementById('name');

	if(_name.value != ''){

		var r = /^[\u4e00-\u9fa5]{2,10}$/;

		if(!r.test(_name.value)){

			this.showError('姓名格式不正确！','nameerror');

			return 'fault';
		}

	}

	this.removeMessage('nameerror');

	return '';

}

//手机检查
validate.prototype.phone = function(){

	var _phone = document.getElementById('phone');

	if(_phone.value != ''){

		var r =/^((\(\d{2,3}\))|(\d{3}\-))?((13\d{9})|(15[3890]\d{8}))$/ ;

		if(!r.test(_phone.value)){

			this.showError('手机号码格式不正确！','phoneerror');

			return 'fault';

		}

	}

	this.removeMessage('phoneerror');

	return '';

}

//住址检查
validate.prototype.address = function(){

	var _address = document.getElementById('address');

	if(_address.value != ''){

		if(_address.value.length<4 || _address.value.length>20){

			this.showError('住址格式不正确！','addresserror');

			return 'fault';

		}

	}

	this.removeMessage('addresserror');

	return '';

}


//注册检查
validate.prototype.register = function(){
	  

	var error = this.email_exist(arguments[0])+this.nickname_exist(arguments[1])+this.passwd()+this.re_passwd()+this.name()+this.phone()+this.address();
      
	if(error == ''){
         
		return true;

	}else{

		return false;

	}

}

//修改资料检查
validate.prototype.update_info = function(){

	var error = this.nickname_exist(arguments[0],arguments[1])+this.passwd(1)+this.re_passwd(1)+this.name()+this.phone()+this.address();

	if(error == ''){

		return true;

	}else{

		return false;

	}

}

//修改资料检查
validate.prototype.check_password = function(button){

	if(button == 0){

		this.showtype = 0;

	}

	if(this.passwd()){

		return false;

	}

	return true;
}


//修改资料检查
validate.prototype.password = function(button){

	if(button == 0){

		this.showtype = 0;

	}

	if(this.passwd()){

		return false;

	}

	if(this.re_passwd()){

		return false;

	}

	return true;

}


//登陆检查
validate.prototype.login = function(button){

	if(button == 0){

		this.showtype = 0;

	}

	if(this.email()){

		return false;

	}

	if(this.passwd()){

		return false;

	}

	return true;

}


//添加书签URL
validate.prototype.linkurl = function(){

	var _linkurl = document.getElementById('linkurl');

	if(_linkurl.value == '' || _linkurl.value == 'http://' || _linkurl.value == 'ftp://' || _linkurl.value == 'https://'){

		this.showError('请输入您要收藏的网址！','linkurlerror');

		return 'fault';

	}

	//是否有输入http?
	var regular = /[a-zA-z]+:\/\/(.*)/;

	if(!regular.test(_linkurl.value)){

		_linkurl.value = 'http://'+_linkurl.value;

	}

	//var regular = /[a-zA-z]+:\/\/[^s]*/;

	var regular = /\b((https?|ftp):\/\/[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!/~%\$]*)?)/

	if(!regular.test(_linkurl.value)){

		this.showError('请您输入合法的网址！','linkurlerror');

		return 'fault';

	}else{

		this.removeMessage('linkurlerror');

		return '';

	}

}

//检查标题
validate.prototype.linktitle = function(){

	_linktitle = document.getElementById('linktitle');

	if (_linktitle.value == ''){

		this.showError('请输入收藏标题！','linktitleerror');

		return 'fault';

	}
	else if(_linktitle.value.length>50){

		this.showError('标题长度不能多于50个字符！','linktitleerror');

		return 'fault';

	}
	else{

		this.removeMessage('linktitleerror');

		return '';

	}
}



//标签检查
validate.prototype.linktag = function(){

	var _linktag = document.getElementById('linktag');

	if (_linktag.value == '')
	{

		this.showError('请输入标签！','linktagerror')

		return 'fault';

	}else if(_linktag.value.length > 80){

		this.showError('标签由80个字符组成！');

		return 'fault';
	}

	this.removeMessage('linktagerror');

	return '';

}

//备注检查
validate.prototype.linkremark = function(){

	var _linkremark = document.getElementById("linkremark");

	if(_linkremark.value != ''){

		if( _linkremark.value.length > 850){

			this.showError('备注长度不能超过50个字符！','linkremarkerror');

			return 'fault';

		}

	}

	this.removeMessage('linkremarkerror');

	return '';

}

//添加标签
validate.prototype.insert_tag = function (){

	var error = this.linkurl()+this.linktitle()+this.linktag()+this.linkremark();

	if(error == ''){

		return true;

	}else{

		return false;

	}

}

//修改标签
validate.prototype.update_tag = function (){

	var error = this.linktitle()+this.linktag()+this.linkremark();

	if(error == ''){

		return true;

	}else{

		return false;

	}

}



//显示提示
validate.prototype.tip_show = function(id){

	//隐藏
	var _span = document.getElementsByTagName('span');

	for(i=0 ; i<_span.length;i++){

		if(_span[i].className == 'tip'){

			_span[i].style.display = 'none';

		}
	}

	//去除focu
	var _input = document.getElementsByTagName('input');

	for(i=0;i<_input.length;i++){

		if(_input[i].className.indexOf('focu') != -1){

			_input[i].className = _input[i].className.replace(new RegExp('focu'),'');

		}

	}

	//document.getElementsByTagName('textarea')[0].className = document.getElementsByTagName('textarea')[0].className.replace(new RegExp('focu'),'');


	var _this = id.replace(new RegExp('_tip'),'');

	_this = document.getElementById(_this);

	_this.className += ' focu';



	var _id = document.getElementById(id);

	//_id.style.display = 'inline-block';


}

//重发激活
validate.prototype.send_again = function(button){

	if(button == 0){

		this.showtype = 0;

	}

	if(this.email()){

		return false;

	}

	if(document.getElementById('change').checked){

		if(this.email('new_email')){

			return false;

		}

	}

	if(this.passwd()){

		return false;

	}

	return true;

}

validate.prototype.check_email= function(){
	
	this.showtype = 0;
	
	if(this.email(1)){
		
		return false;
	
	}
	
	return true;
	
}


var _validate = new validate();
