var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
var is_safari = ((clientPC.indexOf('applewebkit')!=-1) && (clientPC.indexOf('spoofer')==-1));
var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));


function hookEvent(hookName, hookFunct) {
        if (window.addEventListener) {
                window.addEventListener(hookName, hookFunct, false);
        } else if (window.attachEvent) {
                window.attachEvent("on" + hookName, hookFunct);
        }
}

var mwEditButtons = [];
var mwCustomEditButtons = []; // eg to add in MediaWiki:Common.js

// this function generates the actual toolbar buttons with localized text
// we use it to avoid creating the toolbar where javascript is not enabled
function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
        // Don't generate buttons for browsers which don't fully
        // support it.
        mwEditButtons[mwEditButtons.length] =
                {"imageFile": imageFile,
                 "speedTip": speedTip,
                 "tagOpen": tagOpen,
                 "tagClose": tagClose,
                 "sampleText": sampleText};
}

// this function generates the actual toolbar buttons with localized text
// we use it to avoid creating the toolbar where javascript is not enabled
function mwInsertEditButton(parent, item) {
        var image = document.createElement("img");
        image.width = 23;
        image.height = 22;
        image.src = item.imageFile;
        image.border = 0;
        image.alt = item.speedTip;
        image.title = item.speedTip;
        image.style.cursor = "pointer";
        image.onclick = function() {
                insertTags(item.tagOpen, item.tagClose, item.sampleText);
                return false;
        };
        
        parent.appendChild(image);
        return true;
}

function mwSetupToolbar() {

       var toolbar;

       for (i=0;i<document.getElementsByTagName("div").length; i++) {
                if (document.getElementsByTagName("div").item(i).className == "header"){
                        toolbar = document.getElementsByTagName("div").item(i);
                }
        }
       for (i=0;i<document.getElementsByTagName("div").length; i++) {
                if (document.getElementsByTagName("div").item(i).className == "preview"){
                        toolbar = document.getElementsByTagName("div").item(i);
                }
        }
        if (!toolbar) { return false; }

        var textbox = document.getElementById('text');
        if (!textbox) { return false; }
        
        // Don't generate buttons for browsers which don't fully
        // support it.
        if (!document.selection && textbox.selectionStart === null) {
                return false;
        }
        
        // new buttons added into new sub-div "header.editassist"

        var newdiv = document.createElement('div');
        newdiv.className = 'editassist';

        for (var i in mwEditButtons) {
                mwInsertEditButton(newdiv, mwEditButtons[i]);
        }
        for (i in mwCustomEditButtons) {
                mwInsertEditButton(newdiv, mwCustomEditButtons[i]);
        }

        toolbar.appendChild(newdiv);

        return true;
}


// apply tagOpen/tagClose to selection in textarea,
// use sampleText instead of selection if there is none
// copied and adapted from phpBB
function insertTags(tagOpen, tagClose, sampleText) {
        var txtarea;
        if (document.editform) {
                txtarea = document.editform.text;
        } else {
                // some alternate form? take the first one we can find
                var areas = document.getElementsByTagName('textarea');
                txtarea = areas[0];
        }

        // IE
        if (document.selection  && !is_gecko) {
                var theSelection = document.selection.createRange().text;
                if (!theSelection) {
                        theSelection=sampleText;
                }
                txtarea.focus();
                if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any
                        theSelection = theSelection.substring(0, theSelection.length - 1);
                        document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
                } else {
                        document.selection.createRange().text = tagOpen + theSelection + tagClose;
                }

        // Mozilla
        } else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
                var replaced = false;
                var startPos = txtarea.selectionStart;
                var endPos = txtarea.selectionEnd;
                if (endPos-startPos) {
                        replaced = true;
                }
                var scrollTop = txtarea.scrollTop;
                var myText = (txtarea.value).substring(startPos, endPos);
                if (!myText) {
                        myText=sampleText;
                }
                var subst;
                if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
                        subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
                } else {
                        subst = tagOpen + myText + tagClose;
                }
                txtarea.value = txtarea.value.substring(0, startPos) + subst +
                        txtarea.value.substring(endPos, txtarea.value.length);
                txtarea.focus();
                //set new selection
                if (replaced) {
                        var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
                        txtarea.selectionStart = cPos;
                        txtarea.selectionEnd = cPos;
                } else {
                        txtarea.selectionStart = startPos+tagOpen.length;
                        txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
                }
                txtarea.scrollTop = scrollTop;

        // All other browsers get no toolbar.
        // There was previously support for a crippled "help"
        // bar, but that caused more problems than it solved.
        }
        // reposition cursor if possible
        if (txtarea.createTextRange) {
                txtarea.caretPos = document.selection.createRange().duplicate();
        }
}

 
addButton('/wikifiles/editassist/button_bold.png','Fetter Text','**','**','Fetter Text');
addButton('/wikifiles/editassist/button_italic.png','Kursiver Text','//','//','Kursiver Text');

addButton('/wikifiles/editassist/button_link.png','Interner Link (Wiki-Link)','[[',']]','Link Text');
addButton('/wikifiles/editassist/button_extlink.png','Externer Link (http:// beachten)','[[',']]','http://www.example.com Link|Text');

addButton('/wikifiles/editassist/button_headline.png','Überschrift (Ebene 2)','\n== ','\n','Überschrift');
 
addButton('/wikifiles/editassist/button_image.png','Eingebettete Grafik','[[Image:',']]','Beispiel.jpg');

addButton('/wikifiles/editassist/button_nowiki.png','Unformatierter Text','{{{','}}}','Unformatierten Text hier einfügen');
addButton('/wikifiles/editassist/button_sig.png','Deine Signatur mit Zeitstempel','[new::]','','');

addButton('/wikifiles/editassist/button_hr.png','Horizontale Line','\n----\n','','');


hookEvent("load", mwSetupToolbar);

