(function($){

	AutoHideGuideText = function(setting)
	{
		this.selector_input = setting.input ? setting.input : null;
		this.selector_form = setting.form ? setting.form : null;
		this.guideText = setting.guideText ? setting.guideText : null;
		this.guideClass = setting.guideClass ? setting.guideClass : "guideMode";
		this.elemSet = null;
		
		var self = this;
		$(function(){ self.setup(); });
	}

	AutoHideGuideText.prototype.setup = function()
	{
		this.prepareSet();
		if(!this.elemSet) return;
		this.setEvents();
		this.firstGuideTextCheck();
	}
	AutoHideGuideText.prototype.prepareSet = function()
	{
		var $input = $(this.selector_input);
		var $form = this.selector_form ? $(this.selector_form) : null;
		this.elemSet = {
			$input: $input,
			$form: $form
		};
	}
	AutoHideGuideText.prototype.setEvents = function()
	{
		var $input = this.elemSet.$input;
		var $form = this.elemSet.$form;
		var guideClass = this.guideClass;
		var guideText = this.guideText;
		
		$input.focus(toInputMode);
		$input.blur(toGuideMode);
		if($form) $form.submit(avoidGuideTextRequest);
		
		function toInputMode(){
			$input.removeClass(guideClass);
			if($input.val()==guideText) $input.val("");
		}
		function toGuideMode(){
			if(!$input.val()) $input.val(guideText).addClass(guideClass);
		}
		function avoidGuideTextRequest(){
			if($input.val()==guideText) return false;
		}
	}
	AutoHideGuideText.prototype.firstGuideTextCheck = function()
	{
		var $input = this.elemSet.$input;
		var val = $input.val();
		var guideText = this.guideText;
		var guideClass = this.guideClass;
		if(!val || val==guideText){
			$input.val(guideText).addClass(guideClass);
		}
	}
})(jQuery);

