var _REG_REDIRECT_ = /^http:\/\/([^\/\.]+\.)*(xunlei\.com|gougou\.com|sandai\.net)\/?/i;

is_text_input = function(inputObj)
{
	return  inputObj&&
		inputObj.type&&
		("TEXT"==inputObj.type.toUpperCase()||"PASSWORD"==inputObj.type.toUpperCase());
}

input_focus = function(inputObj)
{
	if( is_text_input(inputObj))
		inputObj.className = "tx_ipt2";
}

input_blur = function(inputObj)
{
	if( is_text_input(inputObj))
		inputObj.className = "tx_ipt";
}

setVerifyCode = function(imgObj)
{
	imgObj = $(imgObj);
	if(imgObj)
		imgObj.src =  "http://verify.xunlei.com/image?cachetime=" + new Date().getTime();
}

/******************************************************************************************
 * 检查密码强度
 ******************************************************************************************/
checkPasswordLevel = function(strPassword)
{
	strPassword = strPassword.trim();
	//alert("enter ");
	//check length
	var result = 0;
	if ( strPassword.length == 0)
		result += 0;
	else if ( strPassword.length<8 && strPassword.length >0 )
		result += 5;
	else if (strPassword.length>10)
		result += 25;
	else
		result += 10;
	//alert("检查长度:"+strPassword.length+"-"+result);
	
	//check letter
	var bHave = false;
	var bAll = false;
	var capital = strPassword.match(/[A-Z]{1}/);//找大写字母
	var small = strPassword.match(/[a-z]{1}/);//找小写字母
	if ( capital == null && small == null )
	{
		result += 0; //没有字母
		bHave = false;
	}
	else if ( capital != null && small != null )
	{
		result += 20;
		bAll = true;
	}
	else
	{	
		result += 10;
		bAll = true;
	}
	//alert("检查字母："+result);
	
	//检查数字
	var bDigi = false;
	var digitalLen = 0;
	for ( var i=0; i<strPassword.length; i++)
	{
	
		if ( strPassword.charAt(i) <= '9' && strPassword.charAt(i) >= '0' )
		{
			bDigi = true;
			digitalLen += 1;
			//alert(strPassword[i]);
		}
		
	}
	if ( digitalLen==0 )//没有数字
	{
		result += 0;
		bDigi = false;
	}
	else if (digitalLen>2)//2个数字以上
	{
		result += 20 ;
		bDigi = true;
	}
	else
	{
		result += 10;
		bDigi = true;
	}
	//alert("数字个数：" + digitalLen);
	//alert("检查数字："+result);
	
	//检查非单词字符
	var bOther = false;
	var otherLen = 0;
	for (var i=0; i<strPassword.length; i++)
	{
		if ( (strPassword.charAt(i)>='0' && strPassword.charAt(i)<='9') ||  
			(strPassword.charAt(i)>='A' && strPassword.charAt(i)<='Z') ||
			(strPassword.charAt(i)>='a' && strPassword.charAt(i)<='z'))
			continue;
		otherLen += 1;
		bOther = true;
	}
	if ( otherLen == 0 )//没有非单词字符
	{
		result += 0;
		bOther = false;
	}
	else if ( otherLen >1)//1个以上非单词字符
	{
		result +=25 ;
		bOther = true;
	}
	else
	{
		result +=10;
		bOther = true;
	}
	//alert("检查非单词："+result);
	
	//检查额外奖励
	if ( bAll && bDigi && bOther)
		result += 5;
	else if (bHave && bDigi && bOther)
		result += 3;
	else if (bHave && bDigi )
		result += 2;
	//alert("检查额外奖励："+result);

	var level = "";
	//根据分数来算密码强度的等级
	if ( result >=90 )
		level = "s8";
	else if ( result>=80)
		level = "s7";
	else if ( result>=70)
		level = "s6";
	else if ( result>=60)
		level = "s5";
	else if ( result>=50)
		level = "s4";
	else if ( result>25)
		level = "s3";
	else if ( result>0)
		level = "s2";
	else
		level = "s1";

//		alert("return:"+level);
	return level.toString();
}	


/******************************************************************************************
 * 设置密码强度样式
 ******************************************************************************************/
setPasswordLevel = function(passwordObj, levelObj)
{
	var level = "s1";
	level = checkPasswordLevel(passwordObj.value);
	levelObj.className = level;
}


/******************************************************************************************
 * 检测日期
 ******************************************************************************************/
checkDate = function(dateStr)
{
	var year;
	var month;
	var day;
	if (dateStr.length==6)
	{
		year = dateStr.substr(0,2);
		month = dateStr.substr(2,2);
		day=dateStr.substr(4,2);
	}
	else if (dateStr.length==8)
	{
		year = dateStr.substr(0,4);
		month = dateStr.substr(4,2);
		day=dateStr.substr(6,2);
	}	
	else
		return false;

  //校验年份位
	if (year.length==2)
	{
		if( parseInt(year) < 0 || parseInt(year) > 99 )
			return false;
	}
	else
	{ 
		if( (year.substr(0,2)!='19'||year.substr(0,2)!='20') && (parseInt(year.substr(2,2)) < 0 || parseInt(year.substr(2,2))>99) )
			return false;
	}
	
	//校验月份
	if(month<'01'||month >'12')
		return false;
	
	//校验日
	if(day<'01'||day >'31')
		return false;
		
	//alert("日期正确");	
	return true;
}

/******************************************************************************************
 * 检测身份证
 ******************************************************************************************/
validId = function (obj)
{
  var _id=obj.value;
  _id=_id+"";
  
  //检测除了最后一位外的其它位是否都是数字
  for(var i=0;i<_id.length-1;i++)
  {
	//校验每一位的合法性
	if(_id.charAt(i)<'0'||_id.charAt(i)>'9')
		return false;
  }
  //alert("每一位都合格");
	if (_id.length == 15)
	{
		if (_id.charAt(_id.length-1)<'0'||_id.charAt(_id.length-1)>'9')
			return false;
		return checkDate(_id.substr(6,6));
	}
	else if( _id.length == 18)
	{
		var lastBit = _id.charAt(_id.length-1);
		if ( ( parseInt(lastBit)>= 0 && parseInt(lastBit) <= 9)||lastBit=='X')
		{	
			//alert(_id.substr(6,8));
			return checkDate(_id.substr(6,8));
		}
		//alert("最后一位不正确");
		return false;
	}
	else
	{
		//id card wrong
		return false;
	}
}    

checkIdcardNo = function(cardNoObjId, infoObjId)
{
	if (!validId($(cardNoObjId)))
	{
		$(infoObjId).innerHTML = "请正确填写身份证号码!";
		$(infoObjId).style.display = "";
		return false;
	}
	else
	{
		$(infoObjId).style.display = "none";
		return true;
	}
}


/******************************************************************************************
 * 检测密码保护问题的问题类型和答案的合法性
 ******************************************************************************************/
checkAnswerFormat = function(ansObjId, qObjId, infoObjId)
{
	//g_objPasswordProtect.BackToNormal();
	var strData = $(ansObjId).value;
	var selectLabel;
	//alert("call checkAnswerFormat");
	
	selectLabel = $(qObjId).options[$(qObjId).selectedIndex].parentNode.label;
	
	//alert(strData);
	//alert(selectLabel);
	if ( selectLabel == "生日" )//选择了生日
	{ 
		if (strData.length != 8 )		//验证失败
		{
			//digit_msg.set_error(infoObjId,'请正确填写答案');
			$(infoObjId).style.display = "";
			return false;
		}
		else
		{
			//alert(strData);
			if ( !checkDate(strData) )		
			{
				//digit_msg.set_error(infoObjId,'请正确填写答案。');
				$(infoObjId).style.display = "";
				return false;
			}
			else
			{
				//digit_msg.set_empty(infoObjId);
				$(infoObjId).style.display = "none";
				return true;
			}
		}
	}
	else//选择了其他
	{
		if ( strData.length < 1 || strData.length > 20 )
		{
			//$(infoObjId).innerHTML = "请正确填写答案。";
			$(infoObjId).style.display = "";
			return false;
		}
		else
		{
			//$(infoObjId).innerHTML = '';
			$(infoObjId).style.display = "none";
			return true;
		}
	}
}


cutLen = function( obj, length)
{
	if ( obj.value.bytes() > length )
		obj.value = obj.value.truncate(length);//截取length个字节
}	
		
//begin========================确认号码=====================================================
var g_did = "";
var g_search_type = "";
var g_mailbox= "";
submitDidLoadCallback = function ( response )//response 为返回结果的 xml 根节点
{
	$("btn_sumbit_did").disabled = false;
	var result = response.result;
	var msg = response.msg;

	if ( result == 0 )//成功
	{
		window.location.href = "http://i.xunlei.com/regist/regist_s2.shtml?did=" + g_did + "&mailbox=" + g_mailbox + "&nick=" + $('nickname').value.trim();
	}
	else
	{
		alert(msg);
		//window.close();
	}
}


//提交确认的数字账号,type==regist为注册, 否则为升级	
sumbitDid = function(did, type, isQq/*1 == qq ,0 == not qq*/, qq)
{	
	var url = "http://idynamic.xunlei.com/cgi-bin/cgi_digit_send_check_mail?";
	url += "did=" + did;
	url += "&type=" + type;
	url += "&q=" + isQq;
	if ( !qq || qq != "" )
		url += "&qq=" + qq;
	
	if ( isQq == 0 && type == "regist")
	{
		g_mailbox = $("email").value;//+"@"+$("email_end").value;
		if ( !checkEmail(g_mailbox, "email_msg") )
			return false;
		else
			url += "&email=" + g_mailbox;
	}
	else if ( isQq == 1 )
		g_mailbox = qq + "@qq.com";
/*
	if ( !checkAgree() )
	{
		return false;
	}
*/
	$("btn_sumbit_did").disabled = true;
	var submitDidLoader = new BufferedLoader(url, submitDidLoadCallback);	
	submitDidLoader.load();	
}

//检测邮箱格式是否正确
checkEmail = function(email, infoObjId)
{
	if ( email.trim().length == 0 )
	{
		//digit_msg.set_error(infoObjId,'邮箱不能为空');
		return false;	
	}
	
	var matchRes = email.match(/qq\.com|tom\.com$/);
	if ( matchRes == "qq.com" || matchRes == "tom.com" )
	{
		$("tips_msg").className = "tips";
		$("tips_msg").style.display = "";
		$("tips_msg").innerHTML = '暂不支持的邮箱包括<em>@qq.com/@tom.com</em>';
		return false;
	}
	else
		$("tips_msg").style.display = "none";
	
	var emailMatch = email.match(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/);
	if ( emailMatch && emailMatch[0] == email )
	{
		digit_msg.set_empty(infoObjId);
		var domain = email.substr(email.indexOf("@")+1);
		var allowDomains = ['163.com', '126.com', 'gmail.com', 'sina.com', 'sohu.com'];
		var bAllow = false;
		for (var i=0; i<allowDomains.length; i++)
		{
			if ( allowDomains[i].indexOf(domain) >= 0 )	
				bAllow = true;
		}
		if ( bAllow )
			$('rubbish_mail_tip').style.display = 'none';
		else
			$('rubbish_mail_tip').style.display = '';

		return true;	
	}
	
	//digit_msg.set_error(infoObjId,'请正确填写邮箱');
	return false;	
}

checkAgree = function(doc_name)
{
	if ($("agree").checked != true )
	{
		if(!doc_name) doc_name = '迅雷用户注册协议';
		if ( $("agree_msg") )
		{
			digit_msg.set_error("agree_msg","请先阅读并同意《"+doc_name+'》');
		}
		else
			alert("请先阅读并同意《"+doc_name+'》');
		return false;
	}

	digit_msg.set_empty("agree_msg");
	return true;
}

//////////////////////////////////////////////////////
//强制把输入框的非数字字符删除
//inputCtrlObj为输入框对象
/*
formatInputToDigit = function(inputCtrlObj)
{
	var inputStr = inputCtrlObj.value.trim();
	var newInputStr = "";
	for (var i=0; i<inputStr.length; i++)
	{
		if ( inputStr.substr(i,1) >= "0" && inputStr.substr(i,1) <= "9" )	
			newInputStr += inputStr.substr(i,1);
	}
	inputCtrlObj.value = newInputStr;
}
*/

//注意用法：<input type="text" onkeypress="formatInputToDigit(event)" />
formatInputToDigit = function(e)
{
	var keyCode = window.event ? event.keyCode : e.which; //处理不同的浏览器的按键代码
	
	if ( !(keyCode>=48 && keyCode<=57) )////48为按键0的ascii码；57为按键9的ascii码；
	{
		if(window.event)
			window.event.returnValue = false;
        else
           e.preventDefault();//for firefox
	}
}


//////////////////////////////////////////////////////

/*------------------------*/
/*
var g_digit_rule = [{minLevel:0,bit:9}
,{minLevel:5,bit:7}
,{minLevel:12,bit:7}
,{minLevel:16,bit:6}
,{minLevel:25,bit:5}
,{minLevel:32,bit:5}
];
*/
var g_digit_rule = [{minLevel:0,bit:9}
,{minLevel:16,bit:8}
,{minLevel:24,bit:7}
,{minLevel:32,bit:6}
];
var g_digit_min_bit = 9;

setLoginUserInfoCallback = function(rr)
{
	if(0==rr.result)
	{
		if ( $('uin_info'))
			$('uin_info').innerHTML = rr.uin;
		rr.grade = XunleiLevel.get(rr.account).level;
		var iBitPos = 0;
		if(g_digit_rule.length>0)
			for(var i=g_digit_rule.length-1; i>=0; i--)
			{
				if( rr.grade >= g_digit_rule[i].minLevel )
				{
					iBitPos = i;
					g_digit_min_bit = g_digit_rule[i].bit;
					break;
				}
			}
		//alert("level:"+rr.grade+"\nbit:"+g_digit_min_bit);
		if ( rr.isuservip == 1 )
		{
			if ($("vip_info"))
				$("vip_info").innerHTML = '您是迅雷会员用户';
			if ( iBitPos != g_digit_rule.length-1 )//不是最高级别的选号，且是会员，则提升一个选号等级
				iBitPos = iBitPos+1;
		}
		$("level_info").innerHTML = XunleiLevel.get(rr.account).level;
		g_digit_min_bit = g_digit_rule[iBitPos].bit;
		//alert("pos:" + iBitPos);
		var obj = $('digit_min_bit');
		if(obj)$('digit_min_bit').innerHTML = g_digit_min_bit;
	}
}
setLoginUserInfo = function()
{
	//var obj = $('ul_userinfo');
	//if(!obj)return;
	var url = "http://idynamic.xunlei.com/fcg-bin/cgi_userinfo_get.fcg"
	var infoLoader = new BufferedLoader(url, setLoginUserInfoCallback );
	infoLoader.load();
}
/*------------------------*/

var digit_msg = {
	set_error:function(html_id, msg)
	{
		var obj = $(html_id);
		if(!obj)return;
		obj.style.display = '';
		obj.innerHTML = msg;
	},
	set_success:function(html_id, msg)
	{
		var obj = $(html_id);
		if(!obj)return;
		obj.style.display = '';
		obj.innerHTML = msg;
	},
	set_empty:function(html_id)
	{
		var obj = $(html_id);
		if(!obj)return;
		obj.style.display = 'none';
	}
};

digit_init = function(init_callback)
{
	setLoginUserInfo();
	if(init_callback)
		init_callback();
}

var UpgradeManager={

	submitDid:function()
	{
		if ( g_did.trim() == "")
		{
			alert("请先获取号码");
			return;
		}
		if ( $('email').value.trim().length == 0 )
		{
			$('tips_msg').style.display = "";
			$('tips_msg').innerHTML = "请填写邮箱<em></em>";
			return;
		}
		
		if(  $('agree') )
		{
			if ( $("agree").checked == true )
			{
				$("agree_msg").style.display = "none";
			}else{
				$("agree_msg").innerHTML = "请先阅读并同意《迅雷号码升级服务条款》";
				$("agree_msg").style.display = "";
				return false;
			}
		}
		
		if(  !checkEmail($('email').value, 'email_msg') )
		{
			return;
		}
		
		if ( confirm("请确认邮箱填写无误："+$('email').value) )
		{
			var url = "http://idynamic.xunlei.com/cgi-bin/cgi_digit_hold?case=did&did="+g_did.trim() + "&mail=" + $("email").value.trim()+"&select_type="+g_search_type;
			var submitLoader = new BufferedLoader(url, Delegate.create(this,this.__forwardMail) );
			submitLoader.load();
		}
	},
	//
	__forwardMail:function(rr)
	{
		if ( rr.result == 0 )
		{
			window.location.href = "http://i.xunlei.com/upgrade/upgrade_activate.shtml?did=" + g_did.trim() + "&mailbox=" + $("email").value.trim();
		}
		else if ( rr.result == 200 )
		{
			alert(rr.msg);
			window.location.href = "http://i.xunlei.com/upgrade/upgrade_resend.shtml";
		}
		else
			alert(rr.msg);
	},
	tryHoldDid:function()
	{
		this.__tryHold('trydid', 'http://i.xunlei.com/upgrade/upgrade_resend.shtml');
	},
	__tryHold:function(trycase, back_url)
	{
		var check_url = 'http://idynamic.xunlei.com/cgi-bin/cgi_digit_hold?case='+trycase;
		var check_func = function(rr)
		{
			if(rr.result==0)
				return;
			//alert("msg:"+rr.msg)
			if(rr.result==200)
				window.location.href=back_url;
			else if(rr.result==401)
				window.location.href='http://i.xunlei.com';
			else 
				window.location.href='http://i.xunlei.com';
			return;
		}
		var checkLoginLoader = new BufferedLoader(check_url,check_func);
		checkLoginLoader.load();
	},
	checkLogin:function()
	{
		var check_url = 'http://idynamic.xunlei.com/fcg-bin/cgi_checklogin.fcg';
		var check_func = function(rr)
		{
			if(rr.result==0)
			{
				return;
			}
			else
			{
				alert('对不起，您的登录状态可能已经超时。')
				window.location.href="http://i.xunlei.com";
			}
			return;
		}
		var checkLoginLoader = new BufferedLoader(check_url,check_func);
		checkLoginLoader.load();
	},
	DoResend:function()
	{
		var mail_url = 'http://idynamic.xunlei.com/cgi-bin/cgi_digit_mail?action=resend';
		var mail_func = function(rr)
		{
			if(rr.result==0)
			{
				alert(rr.msg);
			}
			else
			{
				alert(rr.msg);
			}
			window.location.href="http://i.xunlei.com/";
			return;
		}
		var mailLoader = new BufferedLoader(mail_url, mail_func);
		mailLoader.load();
	}
	
}

//end========================确认号码=====================================================


//being===================自定义邮箱下拉输入框============================================

var emailDomains = new Array("@163.com", "@126.com", "@sina.com", "@gmail.com", "@sohu.com");
var mySelectInput;
initMySelectInput = function()
{
	mySelectInput = new MySelectInput('email'/*输入框id*/, 'tiplist_msg'/*下拉区域id*/, 'li'/*下拉选项的标签名<li>*/, 'on'/*选中项的样式名称className*/, 'tips_msg'/*错误信息输出控件id*/);
	mySelectInput.CheckInputValue = function(inputValue, errMsgId)
	{
		var matchRes = inputValue.match(/@qq\.com|@tom\.com$/);
		if ( matchRes == "@qq.com" || matchRes == "@tom.com" )
		{
			$(errMsgId).style.display = "";
			$(errMsgId).innerHTML = '暂不支持的邮箱包括<em>@qq.com/@tom.com</em>';
			return false;
		}
	
		$(errMsgId).style.display = "none";	
		return true;
	}
	mySelectInput.SetWaitSelect = function(inputValue)
	{
		var emailFirstValue = inputValue;
		var emailDomain = "";
		
		//清空上一次的待选项
		this.waitSelect.length = 0;
		
		var atPos = inputValue.indexOf("@");
		if (atPos >= 0 )
		{//填写了"@", 则检测是否与默认邮箱匹配，匹配则设置为待选项内容
			emailFirstValue = inputValue.substr(0, atPos);
			emailDomain = inputValue.substr(atPos, inputValue.length-atPos);

			//是否与默认邮箱匹配，匹配则设置为待选项内容
			for ( var i=0; i<emailDomains.length; i++)
			{
				//alert(emailDomains[i].indexOf(emailDomain));
				if (emailDomains[i].indexOf(emailDomain) >=0 )
					this.waitSelect.push(emailFirstValue+emailDomains[i]);
			}
		}
		else
		{//没有填写"@", 则显示所有默认的邮箱
			for ( var i=0; i<emailDomains.length; i++)
				this.waitSelect.push(emailFirstValue+emailDomains[i]);
		}
	}
}

//end===================自定义邮箱下拉输入框============================================


selectedDid = function(did)
{
	g_did = did;
	$("show_selected_num").style.display = "";		
	$("selected_num").innerHTML = did;
	//$("submit_digit_div").style.display = "";
	//$("select_digit_div").style.display = "none";	
}


SetRegistHeader = function()
{
	$("_span_current_page").innerHTML = "快速注册";
	var regist_hd = $('_a_hd_regist');
	regist_hd.className = 'on';
	regist_hd.style.display = '';
}

SetUpgradeHeader = function()
{
	$("_span_current_page").innerHTML = "帐号升级";
	var upgrade_hd = $('_a_hd_upgrade');
	upgrade_hd.className = 'on';
	upgrade_hd.style.display = '';
}