document.observe('dom:loaded', function() {
    setPositions();
    Event.observe(window,'resize',function() {
        setPositions();
    })
    gbEditor.init();
});

var setPositions = function () {
    var viewportHeight = document.viewport.getHeight();
    var contentHeight = $('content').getHeight();
    var sidebarHeight = $('sidebar').getHeight();
    if(contentHeight < viewportHeight) {
        $('contentWrapper').style.height = viewportHeight+'px';
    } else {
        $('contentWrapper').style.height = 'auto';
    }
    if(sidebarHeight > viewportHeight) {
        $('sidebar').style.position = 'static';
        $('content').style.height = sidebarHeight;
    } else {
        $('sidebar').style.position = 'fixed';
        $('content').style.height = 'auto';
    }
}

var gbEditor = {
    init: function () {
        $$('.guestbookEditor').each(this.makeEditor.bind(this));
    },
    makeEditor: function (editor) {
        editor.select('div img').each(this.addSmileyBehaviour.bind(this));
        editor.select('p input[type="text"]').each(this.addInputBehaviour.bind(this));
    },
    addSmileyBehaviour: function (button) {
        button.observe('click', this.clickHandler.bindAsEventListener(this));
    },
    clickHandler: function (ev) {
        ev.stop();
        var element = ev.element();
        var editor = element.up('.guestbookEditor');
        var textarea = editor.down('textarea');
        textarea.focus();
        this.replaceText(textarea, element.getAttribute('alt'));
    },
    addInputBehaviour: function (input) {
        input.observe('click', this.selectInput.bindAsEventListener(this));
    },
    selectInput: function (ev) {
        ev.stop();
        var element = ev.element();
        element.select();
        
    },
    replaceText: function (input, icon) {
        if(typeof document.selection != 'undefined') {
        /* Einfügen des Formatierungscodes */
        var range = document.selection.createRange();
        var insText = range.text;
        range.text = icon;
        /* Anpassen der Cursorposition */
        range = document.selection.createRange();
        if (insText.length == 0) {
          range.move('character', -eTag.length);
        } else {
          range.moveStart('character', aTag.length + insText.length + eTag.length);      
        }
        range.select();
      }
      /* für neuere auf Gecko basierende Browser */
      else if(typeof input.selectionStart != 'undefined')
      {
        /* Einfügen des Formatierungscodes */
        var start = input.selectionStart;
        var end = input.selectionEnd;
        var insText = input.value.substring(start, end);
        input.value = input.value.substr(0, start) + icon + input.value.substr(end);
        /* Anpassen der Cursorposition */
        var pos;
        if (insText.length == 0) {
          pos = start + icon.length;
        } else {
          pos = start + insText.length + icon.length;
        }
        input.selectionStart = pos;
        input.selectionEnd = pos;
      }
    }
}
