﻿if (!window.Bauer) { window['Bauer'] = {} }
if (!window.Bauer.Controls) { window['Bauer']['Controls'] = {} }
window['Bauer']['Controls']['DefaultText'] = Class.create();

Bauer.Controls.DefaultText.prototype = {

    options: {

        element: null,
        defaultText: ''
    },

    initialize: function(options) {

        this.options = options;
        var element = $(this.options.element)

        if (!element) {
            return;
        }

        Element.extend(element);
        this.setInitialText();
        element.observe('focus', this.handleFocus.bindAsEventListener(this));
        element.observe('blur', this.handleBlur.bindAsEventListener(this));

        var form = element.up('form');

        if (form) {
            form.observe('submit', this.handleSubmit.bindAsEventListener(this));
        }
    },

    setInitialText: function() {
        var element = this.options.element;

        if (element.present() == false) {
            element.value = this.options.defaultText;
        }
    },

    handleFocus: function(event) {
        var element = this.options.element;
        var value = $F($(this.options.element));

        element.addClassName('focus');

        if (value == this.options.defaultText) {
            element.value = '';
        }
    },

    handleBlur: function(event) {

        var element = this.options.element;
        var value = $F($(this.options.element));

        element.removeClassName('focus');

        if (!this.options.element.present()) {
            element.value = this.options.defaultText;
        }
    },

    handleSubmit: function(event) {
        var element = this.options.element;
        var value = $F($(this.options.element));

        if (value == this.options.defaultText) {
            element.value = '';
        }
    }
};

