﻿//****************************************************************************
//**No:             56140
//**Author:         ycao@ctrip.com
//**LastUpdateDate: 2009-5-7
//**Modified by chensq at 2009-08-21
//***************************************************************************

function hasClass(obj, strName) {
	var reg = new RegExp('(\\s|^)' + strName + '(\\s|$)');
	return obj.className.match(reg);
}
function addClass (obj, strName) {
	obj.className = obj.className + " " + strName;
}
function removeClass (obj, strName) {
	if (hasClass(obj, strName)) {
		var reg = new RegExp('(\\s|^)'+strName+'(\\s|$)');
		obj.className = obj.className.replace(reg,' ');	
	} 
	//obj.className = obj.className.replace(strName, "");
}

window.$r("domready",
function() {
	//tab列表
	var radioList = ['signIn', 'regist', 'guest'];
	//验证配置列表
	var validateList = [
	{
		obj: $('engUserName'),
		//要验证的对象
		re: /^[0-9]{10}$/i,
		//规则
		event: 'blur',
		//规则应用于对象的事件
		success: function() {
			
			 try{
				 var selectpartner = $('selectpartner'),
					 index = selectpartner.selectedIndex,
					 prefixArr = [selectpartner.options[0].getAttribute("prefix"),selectpartner.options[1].getAttribute("prefix")];
					
				$ajax(validateList[0].obj.getAttribute("ajaxurl"), "uid=" + prefixArr[index] + escape(this.value),
					 function(txt) {
						 if (txt.indexOf("check succeed") == -1) {
							 validateList[0].obj.nextSibling.style.display = "";
							 validateList[0].obj.nextSibling.className += " pubmencenterinfo_tips_wrong";
							 validateList[0].obj.nextSibling.innerHTML = 'Lufthansa card number.';
							 validateList[0].obj.nextSibling.nextSibling.style.display = 'none';
						 }
					 });
			 }catch(e){
			
			}


			// try{
				// var selectpartner = $('selectpartner'),
					// index = selectpartner.selectedIndex,
					// prefixArr = [selectpartner.options[0].getAttribute("prefix"),selectpartner.options[1].getAttribute("prefix")];
					
				// $ajax(validateList[0].obj.getAttribute("ajaxurl"), "uid=" + prefixArr[index] + escape(this.value),
					// function(txt) {
						// if (txt.indexOf("check succeed") == -1) {
							// validateList[0].obj.nextSibling.style.display = "";
							// validateList[0].obj.nextSibling.className += " pubmencenterinfo_tips_wrong";
							// validateList[0].obj.nextSibling.innerHTML = 'This card number is already taken. Please try another.';
							// validateList[0].obj.nextSibling.nextSibling.style.display = 'none';
						// }
					// });
			// }catch(e){
			
			// }
		}
	},
	{
		obj: $('engPassword'),
		re: /^.{4,}$/,
		event: 'keyup'
	},
	{
		obj: $('engPassword2'),
		re: /^.{4,}$/,
		event: 'keyup',
		success: function() {
			if (this.value != $('engPassword').value) {
				this.nextSibling.className += " pubmencenterinfo_tips_wrong";
				this.nextSibling.style.display = 'inline';
				this.nextSibling.nextSibling.style.display = 'none';
			}
		}
	},
	{
		obj: $('engEmail'),
		re: /^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/i,
		event: 'blur'
	},
	{
		obj: $('engFirName'),
		re: /^.+$/,
		event: 'blur',
		fail: function() {
			var obj = this.nextSibling;
			while (obj.tagName != 'SPAN') {
				obj = obj.nextSibling;
			}
			obj.innerHTML = 'Please provide first name';
		}
	},
	{
		obj: $('engLastName'),
		re: /^.+$/,
		event: 'blur',
		fail: function() {
			var obj = this.nextSibling;
			while (obj.tagName != 'SPAN') {
				obj = obj.nextSibling;
			}
			obj.innerHTML = 'Please provide last name';
		}
	}];
	//注册submit事件
	$('frmLogin').onsubmit=function() {
		
		var signin_uid = $('signin_uid'),
		signin_pwd = $('signin_pwd');
		if (signin_uid.isNull()) {
			$alert(signin_uid, "Please provide your Card number");
			return false;
		} else if (signin_pwd.value == "") {
			$alert(signin_pwd, "Please provide your password.");
			return false;
		// } else if (!signin_uid.isNull()){
				// if($('selectpartner').selectedIndex!=1){
					// var CardNo=signin_uid.value;
					// if(!(CardNo.substr(9,1)==CardNo.substr(0,8) % 7 + 3)){
						// $alert(signin_uid,"KrisFlyer card number");
						// return false;
					// }
				// }
				
		
		}else{
			return true;
		}
	};
	$('submit_checkinfo_m1').$r('click',
	function() {
		var isOK = true;
		validateList.each(function(item, i) {
			var result = item.re.test(item.obj.value);
			var infoNode = item.obj.$parentNode('tr').getElementsByTagName('span');
			if ((item.obj.id == 'engFirName' || item.obj.id == 'engLastName') && item.obj.isNull()) {
				$alert(item.obj, infoNode[1].innerHTML);
				isOK = false;
				return false;
			}
			if ((!result && infoNode[1].className.search('error') < 0) || infoNode[1].className.search('wrong') > 0) {
				infoNode[2].style.display = 'none';
				$alert(validateList[i].obj, validateList[i].obj.$parentNode('tr').getElementsByTagName('span')[1].innerHTML);
				isOK = false;
				return false;
			}
		});
		if (isOK) {
			if (!$('reAccept2').checked) {
				$alert($('reAccept2'), 'Please check to indicate you agree to the terms and conditions.');
				return false;
			}
			//验证通过提交表单
			this.form.submit();
		}

	});
	//tab列表注册click事件用于切换
	for (var i = 0; i < radioList.length; i++) {
		$(radioList[i]).$r('click',
		function() {
			//其它标题样式及隐藏所有内容表单
			radioList.each(function(item, index) {
				$(item).checked = false;
				$(item).parentNode.parentNode.className = 'pubmencenterinfo_title02';
				if (document.all) {
					$(radioList[index]).parentNode.parentNode.nextSibling.style.display = 'none';
				} else {
					$(radioList[index]).parentNode.parentNode.nextSibling.nextSibling.style.display = 'none';
				}
			});
			var obj = document.all ? this.parentNode.parentNode.nextSibling: this.parentNode.parentNode.nextSibling.nextSibling;
			//标题样式
			this.checked = true;
			this.parentNode.parentNode.className = 'pubmencenterinfo_title01';
			obj.style.display = "block";
			var ih = obj.offsetHeight;
		})
	}
	//验证函数
	function validate() {
		var option = {
			obj: arguments[0]['obj'],
			//验证对象参数
			re: arguments[0]['re'],
			reChinesePod: arguments[0]['reChinesePod'],		//增加对ChinesePod规则的判定
			reLufthansa: arguments[0]['reLufthansa'],		//增加对ChinesePod规则的判定
			//规则参数
			msg: arguments[0]['msg'],
			//提示消息参数
			event: arguments[0]['event'],
			//规则应用于对象事件参数
			success: arguments[0]['success'],
			//验证成功参数
			fail: arguments[0]['fail'] //验证失败参数
		};
		var arr = Array.prototype.slice.apply(arguments);
		
		option.obj.$r(option.event,
		function() {	
			if (option.re.test(option.obj.value)) {
				if(option.obj.id=="engUserName" && $('selectpartner').selectedIndex==2){
					var CardNo=option.obj.value;
					if(!((CardNo.substr(9,1)==CardNo.substr(0,9) % 7 + 3))){
						var obj = this.nextSibling;
						while (obj.tagName != 'SPAN') {
							obj = obj.nextSibling;
						}
						obj.style.display="";
						if(!hasClass(obj,'pubmencenterinfo_tips_wrong')){
							addClass(obj,'pubmencenterinfo_tips_wrong');
						}
						
						obj.nextSibling.style.display = 'none';
						return ;
					}
				}

				var obj = this.nextSibling;
				while (obj.tagName != 'SPAN') {
					obj = obj.nextSibling;
				}
				if(hasClass(obj,'pubmencenterinfo_tips_wrong')){
					removeClass(obj,'pubmencenterinfo_tips_wrong');
				}
				
				obj.style.display = 'none';
				obj.nextSibling.style.display = 'inline';
				
				
				if (typeof(option.success) == 'function') {
					option.success.apply(option.obj, arr);
				}
			
			} else {
				var obj = this.nextSibling;
				var objspan = obj;
				while (objspan.nodeName != 'SPAN') {
					objspan = objspan.nextSibling;
				}
				objspan.style.display = 'none';
				while (obj.tagName != 'SPAN') {
					obj = obj.nextSibling;
				}
				
				if(!hasClass(obj,'pubmencenterinfo_tips_wrong')){
					addClass(obj,'pubmencenterinfo_tips_wrong');
				}
				obj.nextSibling.style.display = 'none';
				obj.style.display = "";
				if (typeof(option.fail) == 'function') option.fail.apply(option.obj, arr);
				// return false;
			}
		});
		
	};
	//绑定验证
	function checkingInputs() {
		validateList.each(function(item, i) {
			validate(item);
		});
	}
	checkingInputs();


	//Add by chensq@ctrip.com: Select partner 下拉框增加 ChinesePod选项所新增的以下代码：
	var selectpartner = $('selectpartner'),
		aboutlink1 = $('aboutlink1'),
		aboutlink2 = $('aboutlink2'),
		aboutlinkHref1 = $("aboutlink1").getAttribute("href"),
		aboutlinkHref2 = "http://pages.english.ctrip.com/partners/ChinesePod/home.html",
		aboutlinkHref3 = "http://pages.english.ctrip.com/partners/KrisFlyer/Promotions.html",
		aboutlinkHref4 = "http://pages.english.ctrip.com/partners/Lufthansa/Promotions.html",
		partnerType = "?PartnerType=806",
		setAboutText = function() {
			var index = selectpartner.selectedIndex,
			text = selectpartner.options[index].text,
			links = [aboutlinkHref1,aboutlinkHref2,aboutlinkHref3,aboutlinkHref4];
			aboutlink1.innerHTML = "About " + text + " and Ctrip";
			aboutlink1.setAttribute('href', links[index]);
			aboutlink2.innerHTML = "About " + text + " and Ctrip";
			aboutlink2.setAttribute('href', links[index]);
		},
		setCardNumText = function() {
			var index = selectpartner.selectedIndex,
			text = selectpartner.options[index].text,
			defaultText = '<span class="pubglobal_need">*</span>';
			validateList[0].obj.nextSibling.innerHTML = text + ' card number.';
			if(index == 1) {
				validateList[0].obj.nextSibling.innerHTML = 'ChinesePod username.';
				document.all ? validateList[0].obj.parentNode.previousSibling.innerHTML = defaultText + " Username" : validateList[0].obj.parentNode.previousSibling.previousSibling.innerHTML = defaultText + " Username";
				validateList[0].obj.setAttribute("maxLength","16");
				validateList[0].obj.value = validateList[0].obj.value.substring(0,16);
			}
			else {
				document.all ? validateList[0].obj.parentNode.previousSibling.innerHTML = defaultText + " Card number" : validateList[0].obj.parentNode.previousSibling.previousSibling.innerHTML = defaultText + " Card number";
				validateList[0].obj.setAttribute("maxLength","20");
			}
		},
		setSelectPartner = function() {
			var selfLocation = top.location.href;
			if(selfLocation.indexOf(partnerType) != -1) {
				selectpartner.options[1].selected = "selected";
			}
			setCardNumText();
			setAboutText();
		},
		changeCheckingInputs = function() {
			if(selectpartner.selectedIndex!=2){
				var AsiaRe = /^[0-9]{10}$/i,
					ChinesePodRe = /^[0-9a-zA-Z]{1,16}$/i,			//ChinesePod的验证规则为不超过16位长度的任意字母或数字组合
					LufthansaRe = /^33303[0-9]{10}$|^401003[0-9]{10}$|^531003[0-9]{10}$|^22201[0-9]{10}$|^401001[0-9]{10}$|^531001[0-9]{10}$|^99222[0-9]{10}$|^401002[0-9]{10}$|^531002[0-9]{10}$|^99200[0-9]{10}$|^401000[0-9]{10}$|^403400[0-9]{10}$|^531000[0-9]{10}$|^523400[0-9]{10}$|^99990[0-9]{10}$/; ///^[0-9a-zA-Z]{15,16}$/i,
					oUserName = validateList[0].obj;
				validateList[0].re = selectpartner.selectedIndex == 1 ? ChinesePodRe :selectpartner.selectedIndex == 3 ? LufthansaRe: AsiaRe;
				if($(radioList[1]).checked == true) {
					setTimeout(function(){oUserName.focus();oUserName.blur();},1);
				}
				checkingInputs();
			}
		},
		changeSelectPartner = function() {
			selectpartner.$r('change',function(){
				if(this.selectedIndex==1){
					$("signin_uid").isNull()&&($("signin_uid").value="");
					$("signin_uid").module.notice.tip="Username / E-mail";
					$("signin_uid").module.notice.check();					
				}else{
					$("signin_uid").isNull()&&($("signin_uid").value="");
					$("signin_uid").module.notice.tip="Card No. / E-mail";
					$("signin_uid").module.notice.check();
				}
				setCardNumText();
				setAboutText();
				changeCheckingInputs();
			});
		},
		setLogRadio = function() {
			var tabHidden = $('tabHidden');
			if (tabHidden.value == 1) {
				$(radioList[1]).click();
			}
		};
		
	setCardNumText();						//by chensq: 设置“Card number.”输入框后的文字随“Select partner”下拉内容切换
	setSelectPartner();					//根据地址栏“?PartnerType=806”参数属性值来初始化“Select partner”默认下拉项
	changeSelectPartner();
	setLogRadio();							//如果隐藏域value是1，则单选框默认定位到Register
	changeCheckingInputs();
});