/*
 * Singup - Agreement
 */
// Validate agreement form.
function validateAgreement(form) {
	// Agreement
	var agree = _getCheckedValue('user[agree]');
	if(agree != '1') {
		showMessage('약관에 동의하셔야 가입하실 수 있습니다.');
		return false;
	}
	
	// Name
	if(!validateEmpty('user_name', '이름을 입력해주세요.')) return false;
	
	// Jumin
	if(!validateEmpty('user_jumin1', '주민등록번호 앞자리를 입력해주세요.')) return false;
	if(!validateNumber('user_jumin1', '주민등록번호에는 숫자만 사용하실 수 있습니다.')) return false;
	if(!validateEmpty('user_jumin2', '주민등록번호 뒷자리를 입력해주세요.')) return false;
	if(!validateNumber('user_jumin2', '주민등록번호에는 숫자만 사용하실 수 있습니다.')) return false;
	if(!validateJumin('user_jumin1', 'user_jumin2', '주민등록번호가 형식에 맞지 않습니다.')) return false;
	
	return true;
}

/*
 * Singup - User info
 */
// Add event handler on new page.
function addEventHandlerOnNew() {
	$('user_login').onchange = function () { $('user_login_checked').value = 0; }
	$('btnLoginUnique').onclick = function() { validateLoginUniqueness(); return false; }
	$('user_zip1').onfocus = showZipFinder;
	$('user_zip2').onfocus = showZipFinder;
	$('btnZipcode').onclick = function() { showZipFinder(); return false; }
	$('user_address1').onfocus = showZipFinder;
	$('btnHideZipFinder').onclick = function() { hideZipFinder(); return false; }
}

// Validate user form.
function validateLoginField(login) {
	if(!validateEmpty(login, '아이디를 입력해주세요.')) return false;
	if(!validateFormat(login, /^[a-zA-Z0-9]{4,15}$/, '아이디는 영문/숫자 조합으로 4~15자까지 가능합니다.')) return false;
	
	return true;
}

// Validate uniqueness.
function validateLoginUniqueness() {
	if( !validateLoginField($('user_login')) ) return false;
	
	var params = 'value=' + $F('user_login');
	new Ajax.Request('/users/new/unique', { 
		asynchronous: true, method: 'get', parameters: params, evalScripts: true, 
		onLoading: function() { $('ajax_login').show(); },
		onComplete: function(transport) { $('ajax_login').hide(); }
	});
}

// Validate user field.
function validateUser(form) {
	// Login
	if(form.user_login) {
		if(!validateLoginField(form.user_login)) return false;
		if(!validateUniqueness(form.user_login, '아이디 중복 확인을 해주세요.')) return false;
	}
		
	// Password
	if(!isUpdate(form)) {
		if(!validateEmpty(form.user_password, '비밀번호를 입력해주세요.')) return false;
		if(!validateFormat(form.user_password, /^.{6,10}$/, '비밀번호는 6자에서 10자까지 입력할 수 있습니다.')) return false;
		if(!validateEmpty(form.user_password_confirmation, '확인을 위한 비밀번호를 입력해주세요.')) return false;
	}	
	if(!validateConfirmation(form.user_password, '비밀번호가 일치하지 않습니다.')) return false;
		
	// Address
	if(!validateEmpty(form.user_zip1, '우편번호를 입력해주세요.')) return false;
	if(!validateEmpty(form.user_zip2, '우편번호를 입력해주세요.')) return false;
	if(!validateEmpty(form.user_address1, '주소를 입력해주세요.')) return false;
	if(!validateEmpty(form.user_address2, '주소를 입력해주세요.')) return false;

	// E-mail
	if(!validateEmpty(form.user_email, '이메일을 입력해주세요.')) return false;
	if(!validateEmail(form.user_email, '이메일 형식이 잘못 되었습니다.')) return false;
	if(!validate(form.user_email, '@hanmail.net은 입력하실 수 없습니다.', function(v) { return (v.indexOf('@hanmail.net') != -1); })) return false;

	// Phone
	if(!validateEmpty(form.user_phone1, '전화번호 국번을 입력해주세요.')) return false;
	if(!validateEmpty(form.user_phone2, '전화번호 앞자리를 입력해주세요.')) return false;
	if(!validateEmpty(form.user_phone3, '전화번호 뒷자리를 입력해주세요.')) return false;
	
	// Mobile
	if(!validateEmpty(form.user_mobile1, '핸드폰 국번을 입력해주세요.')) return false;
	if(!validateEmpty(form.user_mobile2, '핸드폰 앞자리를 입력해주세요.')) return false;
	if(!validateEmpty(form.user_mobile3, '핸드폰 뒷자리를 입력해주세요.')) return false;
	
	// Job
	if(!validateEmpty(form.user_job, '직업을 선택해주세요.')) return false;
	
	// Visit path
	if(!validateEmpty(form.user_visit_path, '방문 경로를 선택해주세요.')) return false;
	
	return true;
}

/*
 * Singup - Zipcode
 */
// Show zipcode finder.
function showZipFinder() {
	var layer = new Layer('zip_finder', {alpha: false, opacity:60});
	layer.show(); 
	layer.center();
	
	// Initialize result.
	$('query').value = '';
	$('zipcode_result').update('<div class="none">검색 결과가 없습니다.</div>');
}

function hideZipFinder() {
	var layer = new Layer('zip_finder');
	layer.hide();
}

function findAddress(form) {
	if(!validateEmpty(form.query, '검색어를 입력해주세요.')) return false;

	var params = 'query=' + form.query.value;
	new Ajax.Request(form.action, {
		asynchronous: true, parameters: params, method: 'get', 
		onLoading: function() { Element.show('ajax_zipcode'); },
		onComplete: function() { Element.hide('ajax_zipcode'); }
	});
	
	return false;
}

function insertAddress(zip1, zip2, addr1) {
	$('user_zip1').value = zip1;
	$('user_zip2').value = zip2;
	$('user_address1').value = addr1;
	$('user_address2').focus();
	hideZipFinder();
}

/*
 * Login
 */
// Validate login field.
function validateLogin(form) {
	if(!validateEmpty(form.login, '아이디를 입력해주세요.')) return false;
	if(!validateEmpty(form.password, '비밀번호를 입력해주세요.')) return false;
	
	return true;
}

/*
 * Forgot ID/Password
 */
// Validate forgot id form.
function validateForgotPwd(form) {
	// Name
	if(!validateEmpty(form.user_name, '이름을 입력해주세요.')) return false;
	
	// Jumin
	if(!validateEmpty(form.user_jumin1, '주민등록번호 앞자리를 입력해주세요.')) return false;
	if(!validateNumber(form.user_jumin1, '주민등록번호에는 숫자만 사용하실 수 있습니다.')) return false;
	if(!validateEmpty(form.user_jumin2, '주민등록번호 뒷자리를 입력해주세요.')) return false;
	if(!validateNumber(form.user_jumin2, '주민등록번호에는 숫자만 사용하실 수 있습니다.')) return false;
	if(!validateJumin(form.user_jumin1, form.user_jumin2, '잘못된 주민등록번호입니다.')) return false;
	
	return true;
}