function $(id) {
	return document.getElementById(id);
}

if(!String.prototype.trim) {
	String.prototype.trim = function() {
		return this.replace(new RegExp("(?:^\\s+)|(?:\\s+$)", "g"), "");
	}
}

function FormValidator(form) {
	this.form = form;
	this.rules = new Array();
}

FormValidator.prototype = {
	addRule: function(rule) {
		this.rules[this.rules.length] = rule;
	},
	getRadioValue: function(name) {
		for(var i=0; i<this.form[name].length; i++) {
			if(this.form[name][i].checked)
				return this.form[name][i].value;
		}
		return null;
	},
	validate: function(setFocus) {
		setFocus = (setFocus || typeof(setFocus) == "undefined") ? true : false;
		for(var i in this.rules) {
			var rule = this.rules[i];
			var element = this.form[rule.name];
			var validation = true;
			var value = null;
			if(typeof(element) != "object")
				continue;
			if(typeof(rule.type) == "undefined") {
				if(typeof(element.length) == "undefined")
					rule.type = element.type;
				else
					rule.type = element[0].type;
			}
			if(element.tagName == "SELECT") {
				validation = element.selectedIndex > -1;
				value = element.value;
			}
			else {
				switch(rule.type) {
					case "checkbox":
						value = element.value;
						validation = element.checked;
						break;
					case "text": case "password": default:
						var length = element.value.trim().length;
						value = element.value;
						validation = (length > 0);
						if(validation && rule.minLength && length < rule.minLength) {
							message = rule.label + "의 길이는 " + rule.minLength + "글자 이상으로 입력하셔야 합니다";
							validation = false;
						}
						if(validation && rule.maxLength && length < rule.maxLength) {
							message = rule.label + "의 길이는 " + rule.maxLength + "글자 이하로 입력하셔야 합니다";
							validation = false;
						}
						break;
					case "radio":
						validation = false;
						for(var j=0; j<element.length; j++) {
							if(element[j].checked) {
								value = element[j].value;
								validation = true;
								break;
							}
						}
				}
			}
			if(validation && rule.validator &&
			   		(typeof(rule.validator) == "function" && !rule.validator(value) ||
					typeof(rule.validator) == "object" && !rule.validator.test(element.value))) {
				rule.message = rule.validatorErrorMessage ? rule.validatorErrorMessage : rule.label + "의 형식이 올바르지 않습니다";
				validation = false;
			}
			if(!validation) {
				alert(rule.message);
				if(setFocus) {
					if(element.length)
						element = element[0];
					element.focus();
					if(element.select)
						element.select();
				}
				return false;
			}
		}
		return true;
	},
	regexp: {
		"email": new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$"),
		"phone": new RegExp("^[\\s\\d()+-]+$")
	}
}

function login() {
	var form = $("FormLogin");
	var validator = new FormValidator(form);
	validator.addRule({ name: "email", message: "이메일 주소를 입력해주세요" });
	validator.addRule({ name: "passwd", message: "비밀번호를 입력해주세요" });
	if(validator.validate()) {
		var request = new HTTPRequest("POST", form.action);
		request.persistent = false;
		request.onSuccess = function() {
			$("User").innerHTML = this.getText("/response/html");
			window.location = this.getText("/response/returnTo");
		}
		request.onError = function() {
			alert("이메일 주소나 비밀번호가 올바르지 않습니다");
		}
		request.send("email=" + encodeURIComponent(form.email.value) + "&passwd=" + encodeURIComponent(form.passwd.value) + "&returnTo=" + encodeURIComponent(form.returnTo.value) + (form.remember.checked ? "&remember=1" : ""));
	}
	return false;
}

function logout(returnTo) {
	var request = new HTTPRequest("GET", "http://www." + tnmHost + "/member/logout/?returnTo=" + encodeURIComponent(returnTo));
	request.persistent = false;
	request.onSuccess = function() {
		if(new RegExp("^/member", "i").test(window.location.pathname))
			window.location = "/";
		else
			$("User").innerHTML = this.getText("/response/html");
	}
	request.onError = function() {
		window.location = "/member/logout/";
	}
	request.send();
}


function changeURIParam(key, value){
		var urlObj = location.href.split('?');
		var isExistPram = false;
		_uriObj = new Array();
		if(urlObj.length>1){
			var _uriObj	 = urlObj[1].split('&');
		} else {
			location.href=urlObj[0]+'?'+key+'='+value;
			return false;
		}
		var uriObj = new Array();
		for(var i = 0; i < _uriObj.length; i++){
			var _temp = _uriObj[i].split('=');
			if(_temp[0] == key) {
				_temp[1] = value;
				isExistPram = true;
			}
			uriObj.push(_temp[0]+'='+ _temp[1]);
		}
		if(!isExistPram) {
			uriObj.push(key+'='+ value);
		}
		location.href=urlObj[0]+'?'+uriObj.join('&');
}