﻿var UREGISTER = function() {
	var self = this;
	var queryUsernameUrl = 'pms/listSimilarUsernameAction2.do';
	var Initialize = {
		searchPanel: function() {
			USEARCHBEAN.search();
		},
		registerPanel: function() {
			//$('#username').bind('blur', queryUsername);
			$('#registerFormId').get(0).reset();
			$('#registerFormId').validate({
				errorClass: 'input-error',
				errorElement: 'span',
				onkeyup: false,
				rules: {
					username: {
						required: true,
						minlength: 3,
						maxlength: 20,
						usernameInUse: true,
						usernameValidChars: true
						//remote: queryUsernameUrl
					},
					password: {
						required: true,
						minlength: 6,
						passwordValidChars: true
					},
					passwordConfirm: {
						required: true,
						equalTo: '#password'
					},
					email: {
						required: true,
						emailValidChars: true
					},
					terms: 'required'
				},
				messages: {
					username: {
						required: '請填入使用者名稱',
						minlength: '請填入3個字以上的暱稱',
						maxlength: '請填入20個字以下的暱稱'
						//remote: jQuery.format('{0} 已被使用')
					},
					password: {
						required: '請填入密碼',
						minlength: '請填入6個字以上的密碼'
					},
					passwordConfirm: {
						required: '請填入密碼',
						equalTo: '填入的密碼與先前填入不同'
					},
					email: {
						required: '請填入電子信箱'
					},
					terms: '請勾選服務條款'
				},
				errorPlacement: function(error, element){
					if (element.is(':checkbox')) {
						element.removeClass('input-error');
						error.appendTo(element.parent());
					} else {
						error.prependTo(element.parent());
					}
				},
				success: function(label){
					label.addClass('input-success');
				},
				submitHandler: function(form){
					$('#loadingDiv').show();
					form.submit();
				}
			});
			// Check if username has been in use.
			$.validator.addMethod('usernameInUse', function(username){
				var parent = $('#registerUsernameField').parent();
				var isTaken = false;
				$.ajax({
					url: queryUsernameUrl,
					type: 'post',
					data: 'username=' + username,
					cache: false,
					async: false,
					beforeSend: function(XMLHttpRequest) {
						var loading = $('span', parent).filter('.input-error');
						if (loading.length > 0)
							loading.addClass('input-loading').html('檢查暱稱中');
						else
							loading = $('<span></span>').addClass('input-loading').html('檢查暱稱中');
						$('#labelUsername').before(loading);
					},
					error: function(XMLHttpRequest, textStatus, errorThrown) {},
					success: function(data, textStatus){},
					complete: function(XMLHttpRequest, textStatus) {
						var loading = $('span', parent).filter('.input-error');
						if (loading.length > 0)
							loading.removeClass('input-loading').html('');
						else
							$('.input-loading', parent).remove();
						var data = XMLHttpRequest.responseText;
						isTaken = (data && data.search('已被使用') == -1) ? true : false;
					}
				});
				return isTaken;
			}, '你填入的暱稱已被註冊');
			// Check if there is any wrong character inputed.
			$.validator.addMethod('usernameValidChars', function(value, element){
				return this.optional(element) || /^[a-z0-9._-]+$/i.test(value);
			}, '請填入正確的暱稱');
			$.validator.addMethod('passwordValidChars', function(value, element){
				return this.optional(element) || /^[a-z0-9]+$/i.test(value);
			}, '請填入正確的密碼');
			$.validator.addMethod('emailValidChars', function(value, element){
				return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(value);
			}, '請填入正確的電子信箱');
		},
		Ajax : function(){
			var loading = function(){
				
			};
			var complete = function(){
				
			}
			$.ajaxSetup({
				beforeSend: loading,
				error: complete,
				success: complete,
				complete: complete
			});
		}
	};
	var queryUsername = function() {
		if ($('#registerUsernameField').val() != '')
			$.post(queryUsernameUrl, {username:$('#registerUsernameField').val()}, queryUsernameCallback);
		return false;
	};
	var queryUsernameCallback = function(data) {
		if (data) {
			if (data.search('已被使用') != -1) {
				$('#registerFormId').validate().showErrors({'username': '已被註冊'});
			} else {
				$('#registerFormId').validate().showErrors({'username':''});
				$('#registerUsernameField').removeClass('input-error');
			}
		}
	};
	(function(){
		for (var i in Initialize)
			Initialize[i]();
	})();
};
