/**
 * FormRefiller
 * Removes the default Value from Input-Fields - and restores it when the User filled nothing in.
 *
 * usage: 
 * create an a Instance of the Object on body load: FormRefiller = new FormRefiller();
 * use something like this for the Input-Fields <input type="text" class="username" name="username" value="Nutzername" onfocus="FormRefiller.removeValue(this.form.name, this.name);" onblur="FormRefiller.refillValue(this.form.name, this.name);" />
 *
 * @author: Daniel Kubitza <kubitza@exozet.com>
 */
function FormRefiller()  
{  
    this.startValues = new Array();
}  
  
FormRefiller.prototype.removeValue = function(formname, fieldname)  
{  
    this._initArray(formname, fieldname);

    field = document.forms[formname].elements[fieldname];

    if ((field.value == this.startValues[formname][fieldname]) && ('hidden' != field.getAttribute('type')))
    {
        field.value = '';
    }
}  

FormRefiller.prototype.refillValue = function(formname, fieldname)  
{  
    field = document.forms[formname].elements[fieldname];
    
    if ('' == field.value)
    {
        field.value = this.startValues[formname][fieldname]
    }
}

FormRefiller.prototype.removeDefaults = function(formname)
{
    elements = document.forms[formname].elements;
    for (i = 0; i < document.forms[formname].elements.length; i++)
    {
        this.removeValue(formname, elements[i].name);
    }
}

FormRefiller.prototype._initArray = function(formname, fieldname)
{
    form_check = this.startValues[formname];
    if (!form_check)
    {
        this.startValues[formname] = Array();
    }
     
    field_check = this.startValues[formname][fieldname];
    if (!field_check)
    {
        field = document.forms[formname].elements[fieldname];
        this.startValues[formname][fieldname] = field.value;
    }
}

FormRefiller.prototype.setDefaultValue = function(formname, fieldname, default_value)
{
    form_check = this.startValues[formname];
    if (!form_check)
    {
        this.startValues[formname] = Array();
    }
    
    this.startValues[formname][fieldname] = default_value;
}

FormRefiller.prototype.removeDefaultValues = function(formname)  
{  
    fields = this.startValues[formname];
    
    for (var field in fields)
    {
        /**
         * prototype appends each to each and every thing which exists out there
         * so we do a double check against the real form on the page
         */
        if (document.forms[formname].elements[field])
        {
            this.removeValue(formname, field);
        }
    }
}
