/**
 * FormRefiller
 * Removes the default Value from Input-Fields - and restores it when the User filled nothing in.
 *
 * usage:
 * all input elements that should be refilled have to get the class "refill"
 * - default value is set from the title attribute
 * - the refiller will autodetect those input elements and set the focus and blur events
 * - the forms containing refill elements will get a submit event, which will remove the default values 
 *
 * example:
 * <input type="text" name="UserName" id="login_username" title="Benutzername" class="refill" />
 *
 * @author: Daniel Kubitza <kubitza@exozet.com>
 * @author: Sven Kretschmann <kretschmann@exozet.com>
 */
function FormRefiller()  
{  
}  
  
FormRefiller.prototype.emptyField = function(field)
{
    if ((field.value == field.title) && ('hidden' != field.getAttribute('type')))
    {
        field.value = '';
    }
}

FormRefiller.prototype.refillField = function(field)  
{  
    if ('' == field.value)
    {
        field.value = field.title
    }
}

FormRefiller.prototype.removeFormDefaults = function(form)
{
    elements = form.elements;
    for (i = 0; i < elements.length; i++)
    {
	    if (-1 != elements[i].className.search(/(^|\s)refill(\s|$)/))
	    {
	    	this.emptyField(elements[i]);
	    }
    }
}

/**
 * initializes the form refiller for the specified forms and input elements
 * on the page
 */
function init_FormRefiller()
{
    FormRefiller = new FormRefiller();
    
    for (i=0; i < document.forms.length; i++)
    {
    	var form = document.forms[i];
    	
    	input_elements = form.elements;
    	
    	var form_has_refill_elements = false;
    	for (j=0; j < input_elements.length; j++)
    	{
    		input_element = input_elements[j];
    		
    		if (-1 != input_element.className.search(/(^|\s)refill(\s|$)/))
    		{
    			form_has_refill_elements = true;
    			
	    		input_element.value = input_element.title;
	    		addEvent(input_element, 'focus', function(event)
	    		{
	    			FormRefiller.emptyField(getEventSource(event));
	    		});
	    		
	    		addEvent(input_element, 'blur', function(event)
	    		{
	    			FormRefiller.refillField(getEventSource(event));
	    		});
	    	}
    	}

    	if (true == form_has_refill_elements)
    	{
	    	addEvent(form, 'submit', function(event)
			{
				FormRefiller.removeFormDefaults(getEventSource(event));
			});
		}
    }
}

addEvent(window, 'load', init_FormRefiller);
