if(typeof MSGME == "undefined" || !MSGME)
{
	var MSGME = {};
}

MSGME.HoverLabel = function(labelElement, inputElement, options)
{
	this.labelElement = labelElement;
	this.inputElement = inputElement;
	
	/*
	 * Options parameters:
	 * labelColor: string
	 */
	this.options = options;
		
	Event.observe(window, 'load', this.init.bindAsEventListener(this));
}

MSGME.HoverLabel.prototype.init = function()
{
	this.labelElement = $(this.labelElement);
	this.inputElement = $(this.inputElement);
	/*
	 * 1. Decide on the label's appearance
	 * 2. Reposition the label element
	 * 3. Assign events
	 */
	var labelColor = this.options.labelColor ? this.options.labelColor : '#666';
	this.labelElement.setStyle({zIndex: 999, position: 'absolute', color: labelColor, cursor: 'text'}); // Step 1
	
	this.labelElement.clonePosition(this.inputElement, {offsetLeft: this.options.offsetLeft, offsetTop: this.options.offsetTop}); // Step 2
	
	if(this.inputElement.value != '')
	{
		this.labelElement.hide();
	}
	
	/*
	 * Step 3
	 */
	Event.observe(this.labelElement, 'click', this.labelClickEvent.bindAsEventListener(this));
	Event.observe(this.inputElement, 'focus', this.labelClickEvent.bindAsEventListener(this));
	Event.observe(this.inputElement, 'blur', this.inputBlur.bindAsEventListener(this));
}

MSGME.HoverLabel.prototype.labelClickEvent = function()
{
	this.labelElement.hide();
	this.inputElement.focus();
}

MSGME.HoverLabel.prototype.inputBlur = function()
{
	if(this.inputElement.value == '')
	{
		this.labelElement.show();
	}
}