// IBC Code stuff
var text_enter_image    = "Bitte die komplette URL für das Bild eingeben";
var text_enter_url      = "Bitte die komplette URL für den HyperLink eingeben";
var text_enter_url_name = "Bitte einen Titel für den HyperLink eingeben";
var text_enter_email    = "Bitte die eMail-Adresse eingeben";
var error_no_url        = "keine URL angegeben";
var error_no_title      = "kein Titel angegeben";
var error_no_email      = "keine eMail-Adresse angegeben";
var prompt_start        = "Bitte den zu formatierenden Text eingeben";

var help_bold           = "Fett (alt + b)";
var help_italic         = "Kursiv (alt + i)";
var help_under          = "Unterstrichen (alt + u)";
var help_close          = "alle offene TAGs schliessen";
var help_img            = "Bild einfügen (alt+ g)";
var help_url            = "Hyperlink einfügen (alt+ h)";
var help_email          = "eMail-Adresse einfügen (alt + e)";
var help_click_close    = "nochmal klicken um TAG zu schliessen";

//--------------------------------------------
// Set up our simple tag open values
//--------------------------------------------
var B_open = 0;
var I_open = 0;
var U_open = 0;

var bbtags   = new Array();

// Determine browser type and stuff.
// Borrowed from http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
                && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
                && (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));

var is_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac    = (myAgent.indexOf("mac")!=-1);

// initial radio button status based on cookies
var allcookies = document.cookie;
var pos = allcookies.indexOf("bbmode=");

//prep_mode();

function prep_mode() {
    if (pos != 1) {
        var cstart = pos + 7;
        var cend   = allcookies.indexOf(";", cstart);
        if (cend == -1) { cend = allcookies.length; }
        cvalue = allcookies.substring(cstart, cend);

        if (cvalue == 'ezmode') {
            document.guestbook.bbmode[0].checked = true;
        } else {
            document.guestbook.bbmode[1].checked = true;
        }
    } else {
        // default to normal mode
        document.guestbook.bbmode[1].checked = true;
    }
}

function setmode(mVal) {
    document.cookie = "bbmode="+mVal+"; path=/; expires=Wed, 1 Jan 2020 00:00:00 GMT;";
}

function get_easy_mode_state() {
    // returns true if we've chosen easy mode
    if (document.guestbook.bbmode[0].checked) {
        return true;
    } else {
        return false;
    }
}

//--------------------------------------------
// Set the help bar status
//--------------------------------------------
function hstat(msg) {
    document.guestbook.helpbox.value = eval( "help_" + msg );
}

// Set the number of tags open box
function cstat() {
    var c = stacksize(bbtags);

    if ( (c < 1) || (c == null) ) {
        c = 0;
    }
    if ( ! bbtags[0] ) {
        c = 0;
    }

    document.guestbook.tagcount.value = c;
}

//--------------------------------------------
// Get stack size
//--------------------------------------------
function stacksize(thearray) {
    for (i = 0 ; i < thearray.length; i++ ) {
        if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) {
            return i;
        }
    }
    return thearray.length;
}

//--------------------------------------------
// Push stack
//--------------------------------------------
function pushstack(thearray, newval) {
    arraysize = stacksize(thearray);
    thearray[arraysize] = newval;
}

//--------------------------------------------
// Pop stack
//--------------------------------------------
function popstack(thearray) {
    arraysize = stacksize(thearray);
    theval = thearray[arraysize - 1];
    delete thearray[arraysize - 1];
    return theval;
}

//--------------------------------------------
// Close all tags
//--------------------------------------------
function closeall() {
    if (bbtags[0]) {
        while (bbtags[0]) {
            tagRemove = popstack(bbtags)
            document.guestbook.tag.value += "[/" + tagRemove + "]";

            // change the button status
            // ensure we're not looking for FONT, SIZE or COLOR as these
            // buttons don't exist, they are select lists instead.
            if ((tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR')) {
                eval("document.guestbook." + tagRemove + ".value = ' " + tagRemove + " '");
                eval(tagRemove + "_open = 0");
            }
        }
    }
    // ensure we got them all
    document.guestbook.tagcount.value = 0;
    bbtags = new Array();
    document.guestbook.tag.focus();
}

//--------------------------------------------
// EMOTICONS
//--------------------------------------------
function emoticon(theSmilie) {
    doInsert(" " + theSmilie + " ", "", false);
}

//--------------------------------------------
// SIMPLE TAGS (such as B, I, U, etc)
//--------------------------------------------
function simpletag(thetag) {
    var tagOpen = eval(thetag + "_open");

    if (get_easy_mode_state()) {
        inserttext = prompt(prompt_start + "\n[" + thetag + "]xxx[/" + thetag + "]");
        if ((inserttext != null) && (inserttext != "")) {
            doInsert("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false);
        }
    } else {
        if (tagOpen == 0) {
            if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true)) {
                eval(thetag + "_open = 1");
                // Change the button status
                eval("document.guestbook." + thetag + ".value += '*'");
                pushstack(bbtags, thetag);
                cstat();
                hstat('click_close');
            }
        } else {
            // find the last occurance of the opened tag
            lastindex = 0;
            for (i = 0 ; i < bbtags.length; i++ ) {
                if ( bbtags[i] == thetag ) {
                    lastindex = i;
                }
            }
            // Close all tags opened up to that tag was opened
            while (bbtags[lastindex]) {
                tagRemove = popstack(bbtags);
                doInsert("[/" + tagRemove + "]", "", false)
                // Change the button status
                if ((tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR')) {
                    eval("document.guestbook." + tagRemove + ".value = ' " + tagRemove + " '");
                    eval(tagRemove + "_open = 0");
                }
            }
            cstat();
        }
    }
}

function tag_url() {
    var FoundErrors = '';
    var enterURL    = prompt(text_enter_url, "http://");
    var enterTITLE  = prompt(text_enter_url_name, "Meine Webseite");

    if (!enterURL) {
        FoundErrors += " " + error_no_url;
    }
    if (!enterTITLE) {
        FoundErrors += " " + error_no_title;
    }
    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

    doInsert("[URL="+enterURL+"]"+enterTITLE+"[/URL]", "", false);
}

function tag_image() {
    var FoundErrors = '';
    var enterURL   = prompt(text_enter_image, "http://");

    if (!enterURL) {
        FoundErrors += " " + error_no_url;
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

	doInsert("[IMG]"+enterURL+"[/IMG]", "", false);
}

function tag_email() {
    var emailAddress = prompt(text_enter_email, "");

    if (!emailAddress) {
        alert(error_no_email);
        return;
    }

    doInsert("[EMAIL]"+emailAddress+"[/EMAIL]", "", false);
}

//--------------------------------------------
// GENERAL INSERT FUNCTION
//--------------------------------------------
// ibTag: opening tag
// ibClsTag: closing tag, used if we have selected text
// isSingle: true if we do not close the tag right now
// return value: true if the tag needs to be closed later

//

function doInsert(ibTag, ibClsTag, isSingle) {
    var isClose = false;
    var obj_ta = document.guestbook.tag;

    if ((myVersion >= 4) && is_ie && is_win) { // ensure it works for IE4up / Win only
        if (obj_ta.isTextEdit) { // this doesn't work for NS, but it works for IE 4+ and compatible browsers
            obj_ta.focus();
            var sel = document.selection;
            var rng = sel.createRange();
            rng.colapse;
            if((sel.type == "Text" || sel.type == "None") && rng != null){
                if(ibClsTag != "" && rng.text.length > 0)
                    ibTag += rng.text + ibClsTag;
                else if(isSingle)
                    isClose = true;

                rng.text = ibTag;
            }
        } else{
            if(isSingle)
                isClose = true;

            obj_ta.value += ibTag;
        }
    } else {
        if(isSingle)
            isClose = true;

        obj_ta.value += ibTag;
    }
    obj_ta.focus();

    // clear multiple blanks
    //bbj_ta.value = obj_ta.value.replace(/  /, " ");

    return isClose;
}

