
function openSelectWindow(type) {
	if(type == 'prepareSelectShop') {
		var url = "/choose/shop&com";
	} else if(type == 'prepareCreateShop') {
		var url = "/create/shop";
	} else if(type == 'prepareCreateCompany') {
		var url = "/create/company";
	} else{
		var url = "../usual/prepareAction.do?method=" + type;
	}
	window.open(url,'','width=550,height=300,resizable=0,top=100,left=200,scrollbars=no,menubar=no,status=no');
}

function openModelDialog(type) {
	var url = "../usual/prepareAction.do?method=" + type;
	window.showModalDialog(url,'','width=550,height=300,resizable=0,top=100,left=200,scrollbars=no,menubar=no,status=no');
}

function changeBrokerType() {
	var brokerTypes = document.getElementsByName("brokerType");
	if (brokerTypes[0].checked) {
		//document.getElementById("createCompany").disabled = true;
		//document.getElementById("createShop").disabled = true;
		document.getElementById("selectShop").disabled = true;
		document.getElementById("companyName").value="";		
		document.getElementById("shopName").value="";		
	} else {
		//document.getElementById("createCompany").disabled = false;
		//document.getElementById("createShop").disabled = false;
		document.getElementById("selectShop").disabled = false;	
	}
}

function openCreateCompanyWindow() {
	openSelectWindow("prepareCreateCompany");
}

function openCreateShopWindow() {
	openSelectWindow("prepareCreateShop");
}

function openSelectShopWindow() {
	openSelectWindow("prepareSelectShop");	
}

var registBroker = function () {
	var form = $('registForm');
	onRegisterBroker(form);
}

function onFindPsw()
{
//alert(document.form1.email);
	if(document.form1.email.value.length==0) {
		alert("请输入email！");
		return;
	}
	if(document.form1.randomNumber.value.length==0) {
		alert("请输入验证码！");
		return;
	}
	document.form1.submit();
}

function checkLogin(form) {
	if (form.userName.value.length == 0) {
		alert("邮件地址不能为空");
		return;
	}
	if (form.password.value.length == 0) {
		alert("密码不能为空");
		return;
	}	
	form.submit();
}

function changeCity(cities, districts) {
	while(districts.length != 1) {
		districts.options.remove(1);
	}
	var cityId = cities.options[cities.selectedIndex].value;
	var url   = "/ajaxServlet?type=getDistricts&cityId=" + cityId;
	ajaxSendInSynchronizeGet(url, refreshDistricts);
}

function refreshDistricts() {
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200) {
			var result = xmlHttp.responseXML;
			var districts = document.getElementById("district");   
			var xmlRoot = result.getElementsByTagName("districts");
			var xmlDistricts = xmlRoot[0].getElementsByTagName("district");
			for (var i = 0; i < xmlDistricts.length; i++) {
				var districtId = xmlDistricts[i].getElementsByTagName("id")[0].firstChild.data;				
				var districtName = xmlDistricts[i].getElementsByTagName("value")[0].firstChild.data;	
				districts.options.add(new Option(districtName, districtId));
			}	
		}
	}
}


function changeValidCode(){
	var vcimage = document.getElementById('vcimage');
	vcimage.src = "/validCode.jsp?code="+Math.random();
	var vcinput = document.getElementById('randomNumber');
	vcinput.value = "";
	vcinput.focus();
}

//--------------------------- 注册信息即时验证 ----------------------------------
var emailStat = '', phoneStat = '', randomStat = '';

var manualRemoveMessage = function (afterElement) {
	var nextEl;
	var el = $(afterElement);
	if(el.nextSibling != null) {
		while(el.nextSibling){
			if(el.nextSibling.nodeType === 1){
				nextEl = el.nextSibling;
				break;
			}
		}
		$(afterElement).parentNode.removeChild(nextEl);
	}
}

//验证城市区域
var validArea = function () {
	manualRemoveMessage('m_area');
	if($('district').selectedIndex == 0) {
		var span = document.createElement('div');
		span.innerHTML = '请选择所在的城市区域';
		span.className = 'LV_invalid';
		$('m_area').parentNode.insertBefore(span);
		return false;
	}
	return true;
}

var validFormServer = function (validElement, jsValidObj) {
	var url = "/ajaxServlet";
	var type, validValue;

	if(validElement.blank()) return false;

	switch (validElement) {
		case 'email': {
			type = 'checkEmail';
			validValue = $F(validElement);
			break;
		}
		case 'mobile': {
			type = 'matchPhoneExists';
			validValue = $F(validElement);
			break;
		}
		case 'randomNumber': {
			type = 'checkRandomCode';
			validValue = $F(validElement);
			break;
		}
	}
	var validParam = new Hash();
	validParam.set("type", type);
	validParam.set(validElement, validValue);

	new Ajax.Request(url, {
		parameters: validParam,
		onSuccess: function(transport) {
			var validResult = transport.responseText.evalJSON()[0];
			if(!validResult.flag.blank() && !validResult.content.blank()) {
				jsValidObj.showServerValidMessage(validResult.flag, validResult.content);
				switch (validElement) {
					case 'email': {
						emailStat = validResult.flag == 'available' ? 'true' : 'false';
						break;
					}
					case 'mobile': {
						phoneStat = validResult.flag == 'available' ? 'true' : 'false';
						break;
					}
					case 'randomNumber': {
						randomStat = validResult.flag == 'available' ? 'true' : 'false';
						break;
					}
				}
			} else {
				jsValidObj.showServerValidMessage('error', '验证失败，请刷新页面重试');
			}
		},
		onFailure: function(transport) {
			alert("服务器连接超时，请重试或联系客服");
		}
	});
}

var convertValidTip = function (targetName, content) {
	var target = $(targetName);
	if(target != null) {
		if(content.blank()) {
			target.style.display = 'none';
		} else {
			target.innerHTML = content;
		}
	}
}

var initRegiste = function () {
	alert();
}

if(typeof(LiveValidation) != 'undefined') {
	LiveValidation.prototype.doOnBlur = function (e) {
		if(this.element.type == 'text') {
			this.element.value = this.element.value.replace(/(^[\s]*)|([\s]*$)/g, "");;
		}
		'11';
		this.focused = false;
		this.validate(e);
    }

	LiveValidation.prototype.showServerValidMessage = function (flag, message) {
		flag = flag || '';
		var oldvalidationFailed;
		if(!flag.blank() && flag == 'error') {
			oldvalidationFailed = this.validationFailed;
			this.validationFailed = true;
		}
		this.message = message;
		this.insertMessage(this.createMessageSpan());
		this.addFieldClass();

		if(!flag.blank() && flag == 'error') {
			this.validationFailed = oldvalidationFailed;
		}
	}

	LiveValidation.prototype.initDefaultTip = function (message) {
		message = message || '';
		var oldDisplayMessageWhenEmpty = this.displayMessageWhenEmpty;
		var oldvalidationFailed = this.validationFailed;
		var oldinvalidClass = this.invalidClass;
		this.displayMessageWhenEmpty = true;
		this.validationFailed = true;
		this.invalidClass = '';

		this.defaultTip = message.blank() ? (this.defaultTip || '初始化错误') : message;
		this.message = this.defaultTip;
		this.insertMessage(this.createMessageSpan());
		this.addFieldClass();

		this.displayMessageWhenEmpty = oldDisplayMessageWhenEmpty;
		this.validationFailed = oldvalidationFailed;
		this.invalidClass = oldinvalidClass;
	}

	LiveValidation.prototype.createMessageSpan = function () {
		var span = document.createElement('div');
		span.innerHTML = this.message;
		return span;
	}
}


//email验证
if($('email') != null) {
	var f_email = new LiveValidation('email', {insertAfterWhatNode: 'm_email', 
		validMessage: 'Loading...', 
		onlyOnBlur: true,
		onValid: function() {
			this.insertMessage(this.createMessageSpan());
			this.addFieldClass();
			//convertValidTip('m_email', '');
			validFormServer('email', this);
		}});
	f_email.add(Validate.Presence, {failureMessage: '没有邮箱？ 建议申请 '
		+ '<a target=\'_blank\' href=\'http://www.gmail.com/\'>Gmail邮箱</a>、'
		+ '<a target=\'_blank\' href=\'http://mail.cn.yahoo.com/\'>雅虎邮箱</a>、'
		+ '<a target=\'_blank\' href=\'http://email.163.com\'>网易邮箱</a>、'
		+ '<a target=\'_blank\' href=\'http://mail.sina.com\'>新浪邮箱</a>'});
	f_email.add(Validate.Email, {failureMessage: '请您输入正确的邮箱地址'});
	f_email.initDefaultTip('用来登陆房友圈，建议填写您最常用的E-mail');
	Event.observe($('email'), 'focus', function(event) {
		f_email.initDefaultTip();
	});
}

//密码验证
if($('password') != null) {
	var f_psw = new LiveValidation('password', {insertAfterWhatNode: 'm_password', validMessage: '密码符合规则'});
	f_psw.add(Validate.Presence, {failureMessage: '必须填写此项'});
	//f_psw.add(Validate.Exclusion, {within: [$F('email')]});
	f_psw.add(Validate.Length, {minimum: 6, maximum: 32, 
		tooShortMessage: '密码太短，长度为6~32位，字母区分大小写', 
		tooLongMessage: '密码太长，长度为6~32位，字母区分大小写'});
	f_psw.initDefaultTip('区分大小写，6~32个字符，限用英文数字');
	Event.observe($('password'), 'focus', function(event) {
		f_psw.initDefaultTip();
	});
}

if($('retypedPassword') != null) {
	var f_pswConfim = new LiveValidation('retypedPassword', {insertAfterWhatNode: 'm_retypedPassword', validMessage: '登录密码一致'});
	f_pswConfim.add(Validate.Confirmation, {match: 'password', failureMessage: '您两次输入的登录密码不一致'});
	f_pswConfim.add(Validate.Presence, {failureMessage: '必须填写此项'});
	f_pswConfim.add(Validate.Length, {minimum: 6, maximum: 32, 
		tooShortMessage: '密码太短，长度为6~32位，字母区分大小写', 
		tooLongMessage: '密码太长，长度为6~32位，字母区分大小写'});
	f_pswConfim.initDefaultTip('请再次输入您的登录密码');
	Event.observe($('retypedPassword'), 'focus', function(event) {
		f_pswConfim.initDefaultTip();
	});
}


//姓名验证
if($('name') != null) {
	var f_name = new LiveValidation('name', {insertAfterWhatNode: 'm_name', 
		validMessage: '您可以在个人资料中进行修改'});
	f_name.add(Validate.Presence, {failureMessage: '必须填写此项'});
	//f_name.add(Validate.Format, {pattern: /[\u4e00-\u9fa5]/, failureMessage: "请输入真实姓名" } );
	f_name.add(Validate.Length, {minimum: 2, maximum: 4, tooShortMessage: '最少2个字，不超过4个字', tooLongMessage: '最少2个字，不超过4个字'});
	f_name.initDefaultTip('请输入真实姓名');
	Event.observe($('name'), 'focus', function(event) {
		f_name.initDefaultTip();
	});
}


//手机号验证
if($('name') != null) {
	var f_mobile = new LiveValidation('mobile', {insertAfterWhatNode: 'm_mobile', 
		validMessage: 'Loading...', 
		onlyOnBlur: true,
		onValid: function() {
			this.insertMessage(this.createMessageSpan());
			this.addFieldClass();
			//convertValidTip('m_mobile', '');
			validFormServer('mobile', this);
		}});
	f_mobile.add(Validate.Presence, {failureMessage: '必须填写此项'});
	f_mobile.add(Validate.Format, {pattern: /(^13[0-9]{9}$)|(^15[0-9]{9}$)|(^18[0-9]{9})/,
		failureMessage: '手机号不符合规则'});
	f_mobile.initDefaultTip('手机是客户与您联系的重要途径');
	Event.observe($('mobile'), 'focus', function(event) {
		f_mobile.initDefaultTip();
	});
}


//验证码验证
if($('randomNumber') != null) {
	var f_randomNumber = new LiveValidation('randomNumber', {insertAfterWhatNode: 'm_randomNumber', 
		validMessage: 'Loading...', 
		onlyOnBlur: true,
		onValid: function() {
			this.insertMessage(this.createMessageSpan());
			this.addFieldClass();
			//convertValidTip('m_randomNumber', '');
			validFormServer('randomNumber', this);
		}});
	f_randomNumber.add(Validate.Presence, {failureMessage: '必须填写此项'});
	f_randomNumber.initDefaultTip('请输入验证码');
	Event.observe($('randomNumber'), 'focus', function(event) {
		f_randomNumber.initDefaultTip();
	});
}

//用户协议验证
if($('agreement') != null) {
	var f_agreement = new LiveValidation('agreement', {insertAfterWhatNode: 'm_agreement', 
		onValid: function() {
			this.removeMessage();
		}});
	f_agreement.add(Validate.Acceptance, {failureMessage: '不同意条款内容，无法注册，请查阅条款'});
}

//提交时验证
if($('email') != null) {
	f_email.form.action = '/register';
	var automaticOnSubmit = f_email.form.onsubmit;
	f_email.form.onsubmit = function(){
		var valid = automaticOnSubmit();

		if(!valid) {
			return false;
		}

		if(emailStat.blank() || phoneStat.blank() || randomStat.blank()) {
			var partingTime = 0;
			var waitingForAjax = window.setInterval(function () {
				var hasRightEmailState = emailStat.include('true');
				var hasRightPhoneStat = phoneStat.include('true');
				var hasRightRandomStat = randomStat.include('true');

				if(partingTime > 1500) {
					window.clearInterval(waitingForAjax);
					alert('服务器忙，信息验证未完成，请重试');
				}
				if((!hasRightEmailState && !emailStat.blank())
					|| (!hasRightPhoneStat && !phoneStat.blank())
					|| (!hasRightRandomStat && !randomStat.blank())) {
					window.clearInterval(waitingForAjax);
				} else if(hasRightEmailState && hasRightEmailState && hasRightEmailState) {
					window.clearInterval(waitingForAjax);
					f_email.form.submit();
				}
				partingTime += 5;
			}, 5);
			return false;
		}

		//验证城市区域
		if(!validArea() || !emailStat.include('true') || !phoneStat.include('true') || !randomStat.include('true')) {
			return false;
		}
		return true;
	}
}

var debug = function(obj) {
	var debug = ""; 
	for(var p in obj) {
		debug += "P: " + p + " --> " + obj[p] + "\r\n\r\n";
	} 
	prompt('', debug);
}
