﻿

var mooSearchBox = new Class({
    Implements: Options,
    options: {
        defaulttext: 'Suchbegriff...',
        helpdivId: 'helpdivId',        // id des divs der angezeigt wird
        textbox: null,
        offsetX: 0,
        offsetY: 3,
        targetElemId: null

    },

    /* constructor */
    initialize: function(options) {

        this.setOptions(options);

        if (this.options.textbox != null) {
            this.options.textbox = $(this.options.textbox);
            if (this.options.textbox.value == this.options.defaulttext)
                this.options.textbox.value == '';

            this.options.textbox.removeEvents('keydown');
            this.options.textbox.addEvent("keydown", this.onKeyDown.bind(this));
            this.options.textbox.addEvent("blur", this.onTextboxLeave.bind(this));
            this.options.textbox.addEvent("dblclick", this.onDoubleClick.bind(this));
            this.options.textbox.addEvent("click", this.onClick.bind(this));
        }

        this.showPanel();
    },

    /* was machen wenn key down */
    onKeyDown: function(e) {

        var ev = new Event(e);

        if (ev.key == 'enter') {

            if (this.targetElem == null) {
                this.targetElem = $(this.options.targetElemId);
            }

            if (this.targetElem != null) {
                if (this.targetElem.get('tag') == 'a' || this.targetElem.get('tag') == 'input') {
                    this.targetElem.click();
                }
            }
        } else {
            
        }
    },

    /* */
    showPanel: function() {

        if (this.div == null) {
            this.div = $(this.options.helpdivId);
        }

        if (this.div != null) {
            this.div.setStyle('top', this.options.textbox.getTop() + this.options.textbox.getSize().y + this.options.offsetY);
            this.div.setStyle('left', this.options.textbox.getLeft() + this.options.offsetX);
            this.div.setStyle('display', 'block');
        }
    },

    /* */
    onTextboxLeave: function() {

        if (this.options.textbox.value == "")
            this.options.textbox.value = this.options.defaulttext;

        if (this.div != null)
            this.div.setStyle('display', 'none');
    },

    /* */
    onDoubleClick: function() {
        this.options.textbox.value = "";
    },

    /* */
    onClick: function() {

        if (this.options.textbox.value == this.options.defaulttext) {
            this.options.textbox.value = "";
        }
    }

});
