I want to know if its possible to over-ride a setting that is part of an included js that i dont have direct access to.

below is the js in question. the only part i want to change is the Tab-key feature. can I wite a new function to switch back to 'unchecked' onload? I want it unchecked by default.

var useTabKey  = 1;     // 1 = enable tab-key feature / 0 = no tab-key
var tabbedMode = 1;     // Default TabMode in editbox: 1 = On; 0 = Off (This option has no effect if useTabKey is != 1!)
var tspace = "    ";    // Convert tab to value of tspace (default is 4 spaces)
var B_open = 0;
var I_open = 0;
var U_open = 0;
var QUOTE_open = 0;
var PHP_open = 0;
var CODE_open = 0;
var SQL_open = 0;
var HTML_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);

var dom     = (document.getElementById && !document.all);


// Tab-key feature
if(useTabKey){
    document.onkeypress = handleKeyEvent;
    if(is_ie)
        document.onkeydown = handleKeyEvent;
    tabbedMode = (tabbedMode)? 2: false;
    document.REPLIER.onsubmit = function() {
        var rv = ValidateForm();
        if(!rv) return false;

//      nts = tspace.replace(/  /g, " &nsbp;");
        document.REPLIER.Post.value = document.REPLIER.Post.value.replace(new RegExp(tspace, 'g'), nts);

        return true;
    };

    // Insert mode switch box if possible
    if(document.write){
        var chck = (tabbedMode)? " checked='checked'": "";
        document.open();
        document.write("<br /><input type='checkbox' class='radiobutton' name='bbtabmode' value='1' onclick='toggleTabMode()'" + chck + " />&nbsp;<b>Tab-Key Mode</b>");
        document.close();
    }
}


// Set the 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.REPLIER.bbmode[0].checked = true;
        } else {
            document.REPLIER.bbmode[1].checked = true;
        }
    } 
    else {
        // default to normal mode.
        document.REPLIER.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

    return (document.REPLIER.bbmode[0].checked);
}

//--------------------------------------------
// Set the help bar status
//--------------------------------------------

function hstat(msg)
{
    document.REPLIER.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.REPLIER.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.REPLIER.Post.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.
//edited

            if ( (tagRemove != 'YOUTUBE') && (tagRemove != 'GOOGLEVIDEO')&& (tagRemove != 'METACAFE') && (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') && (tagRemove != 'ALT') && (tagRemove != 'ALERT') && (tagRemove != 'ALLCAPS') && (tagRemove != 'BACKWARDS') && (tagRemove != 'BLOCKQUOTE') && (tagRemove != 'BLUR') && (tagRemove != 'BR') && (tagRemove != 'CAPITALIZE') && (tagRemove != 'CENTER') && (tagRemove != 'CITATION') && (tagRemove != 'DATE') && (tagRemove != 'DEFINITION') && (tagRemove != 'DROPSHADOW') && (tagRemove != 'FADE') && (tagRemove != 'FLIPH') && (tagRemove != 'FLIPV') && (tagRemove != 'GLOW') && (tagRemove != 'HR') && (tagRemove != 'INVERT') && (tagRemove != 'JUSTIFY') && (tagRemove != 'KEYBOARD') && (tagRemove != 'LEFT') && (tagRemove != 'MASK') && (tagRemove != 'MARQUEE') && (tagRemove != 'OVERLINE') && (tagRemove != 'P') && (tagRemove != 'RIGHT') && (tagRemove != 'SAMPLE') && (tagRemove != 'SHADOW') && (tagRemove != 'SMALLCAPS') && (tagRemove != 'SPOILER') && (tagRemove != 'SUB') && (tagRemove != 'SUP') && (tagRemove != 'TIME') && (tagRemove != 'VARIBLE') && (tagRemove != 'WAVE') && (tagRemove != 'XRAY') )
            {
                eval("document.REPLIER." + tagRemove + ".value = ' " + tagRemove + " '");
                eval(tagRemove + "_open = 0");
            }
        }
    }

    // Ensure we got them all
    document.REPLIER.tagcount.value = 0;
    bbtags = new Array();
    document.REPLIER.Post.focus();
}

//--------------------------------------------
// EMOTICONS
//--------------------------------------------

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

//--------------------------------------------
// ADD CODE
//--------------------------------------------

function add_code(NewCode)
{
    document.REPLIER.Post.value += NewCode;
    document.REPLIER.Post.focus();
}

//--------------------------------------------
// ALTER FONT
//--------------------------------------------

function alterfont(theval, thetag)
{
    if (theval == 0)
        return;

    if(doInsert("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true))
        pushstack(bbtags, thetag);

    if(document.REPLIER.ffont)
        document.REPLIER.ffont.selectedIndex  = 0;
    if(document.REPLIER.fsize)
        document.REPLIER.fsize.selectedIndex  = 0;
    if(document.REPLIER.fcolor)
        document.REPLIER.fcolor.selectedIndex = 0;

    cstat();

}





//--------------------------------------------
// Misc BBcodes -- Edited
//--------------------------------------------

function miscbbcodes(bbc)
{
    if (bbc == 0)
        return;

    if (bbc == 'DROPSHADOW' || bbc == 'GLOW' || bbc == 'MASK' || bbc == 'SHADOW' || bbc == 'HR') {
        var FoundErrors = '';
    var enterCOLOR = prompt(text_enter_color, "");

    if (!enterCOLOR) {
            alert("Error! Please enter a color!");
            document.REPLIER.fmiscbbcodes.selectedIndex  = 0;
            return;
        }

    doInsert("[" + bbc + "=" + enterCOLOR + "]", "[/" + bbc + "]", true)
pushstack(bbtags, bbc);
    }
    else if (bbc == 'ALIGN' || bbc == 'MARQUEE') {
        var FoundErrors = '';
    var enterDIR = prompt(text_enter_align, "");

    if (!enterDIR) {
            alert("Error! Please enter a direction!");
            document.REPLIER.fmiscbbcodes.selectedIndex  = 0;
            return;
        }

    doInsert("[" + bbc + "=" + enterDIR + "]", "[/" + bbc + "]", true)
pushstack(bbtags, bbc);
    }
    else if (bbc == 'ALT') {
        var FoundErrors = '';
    var enterTXT = prompt(text_enter_text, "");

    if (!enterTXT) {
            alert("Error! Please enter some text!");
            document.REPLIER.fmiscbbcodes.selectedIndex  = 0;
            return;
        }

    doInsert("[" + bbc + "=" + enterTXT + "]", "[/" + bbc + "]", true)
pushstack(bbtags, bbc);
    }
    else if (bbc == 'MEN')
    {
    doInsert("[ME=NAME]", "", true)
    }
    else if (bbc == 'MEI')
    {
    doInsert("[ME=ID]", "", true)
    }
    else if (bbc == 'MEE')
    {
    doInsert("[ME=EMAIL]", "", true)
    }
    else
    {
    if(doInsert("[" + bbc + "]", "[/" + bbc + "]", true))
            pushstack(bbtags, bbc);
    }

    document.REPLIER.fmiscbbcodes.selectedIndex  = 0;

    cstat();
}

function do_datentime_tag(bbc) {
    if (bbc == 0)
        return;

    if (bbc == 'DATE1')
    {
    doInsert("[DATE=1]", "", false)
    }
    else if (bbc == 'DATE2')
    {

    doInsert("[DATE=2]", "", false)
    }
    else if (bbc == 'DATE3')
    {

    doInsert("[DATE=3]", "", false)
    }
    else if (bbc == 'DATE4')
    {

    doInsert("[DATE=4]", "", false)
    }
    else if (bbc == 'TIME1')
    {

    doInsert("[TIME=1]", "", false)
    }
    else if (bbc == 'TIME2')
    {

    doInsert("[TIME=2]", "", false)
    }
    else if (bbc == 'TIME3')
    {

    doInsert("[TIME=3]", "", false)
    }

    document.REPLIER.fdatentime.selectedIndex = 0;
}

function do_search_tag(stag) {
    if (stag == 0)
        return;

    if (stag == 'SEARCH') { 
        var stag = 'SEARCH.COM';
    }
    if (stag == 'ABOUT') { 
        var stag = 'ABOUT.COM';
    }
    if (stag == 'ASK') { 
        var stag = 'ASK JEEVES';
    }
    if (stag == 'DEFINITIONS') {
        var stag = 'DEFINITION';
    }
    if (stag == 'GOOGLEDEFINE') {
        var stag = 'GOOGLE DEFINITION';
    }
    if (stag == 'GOOGLEIMG') {
        var stag = 'GOOGLE IMAGE';
    }
    if (stag == 'YAHOOIMG') {
        var stag = 'YAHOO IMAGE';
    }

    var FoundErrors = '';
    var enterURL   = prompt(text_enter_url, stag+" SEARCH");
    if (!enterURL) var enterURL = '';
    var enterTITLE = prompt(text_enter_url_name, stag+" SEARCH: "+enterURL);

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

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

    if (stag == 'SEARCH.COM') { 
        var stag = 'SEARCH';
    }
    if (stag == 'ABOUT.COM') { 
        var stag = 'ABOUT';
    }
    if (stag == 'ASK JEEVES') { 
        var stag = 'ASK';
    }
    if (stag == 'DEFINITION') {
        var stag = 'DEFINITIONS';
    }
    if (stag == 'GOOGLE DEFINITION') {
        var stag = 'GOOGLEDEFINE';
    }
    if (stag == 'GOOGLE IMAGE') {
        var stag = 'GOOGLEIMG';
    }
    if (stag == 'YAHOO IMAGE') {
        var stag = 'YAHOOIMG';
    }

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

    document.REPLIER.fsearch.selectedIndex = 0;
}





//--------------------------------------------
// 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.REPLIER." + 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.REPLIER." + tagRemove + ".value = '" + tagRemove + "'");
                    eval(tagRemove + "_open = 0");
                }
            }

            cstat();
        }
    }
}


function tag_list()
{
    var listvalue = "init";
    var thelist = "";

    while ( (listvalue != "") && (listvalue != null) )
    {
        listvalue = prompt(list_prompt, "");
        if ( (listvalue != "") && (listvalue != null) )
        {
            thelist = thelist+"[*]"+listvalue+"\n";
        }
    }

    if ( thelist != "" )
    {
        doInsert( "[LIST]\n" + thelist + "[/LIST]\n", "", false);
    }
}

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

    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);
}

//--------------------------------------------
// TAG 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 sel = _getTASelection();
    if(!sel)
        sel = new Array('');

    if(ibClsTag && sel[0].length)
        ibTag += sel[0] + ibClsTag;
    else if(isSingle)
        isClose = true;

    _insertAtSelection(sel, ibTag)

    return isClose;
}


//--------------------------------------------
// KEYBOARD EVENTS
//--------------------------------------------

function handleKeyEvent(e)
{
    if(!document.getElementById) return;
    if(!(e = (window.event)? window.event: e)) return;

    var obj_ta = document.getElementsByName('Post')[0];

    if((e.target && e.target != obj_ta) || (e.srcElement && e.srcElement != obj_ta))
        return;

    var aK = (e.modifiers)? e.modifiers & Event.ALT_MASK: e.altKey;
    var cK = (e.modifiers)? e.modifiers & Event.CONTROL_MASK: e.ctrlKey;
    var sK = (e.modifiers)? e.modifiers & Event.SHIFT_MASK: e.shiftKey;
    var c  = (e.which)? e.which: e.keyCode;

    if(c == 9){
        if(tabbedMode == 2){
            var rv = confirm("Do you want to indent text or move the input focus?\n"
                            +"You can toggle this mode later with Alt+M or the checkbox to the left.\n\n"
                            +"Hit 'OK' to indent or 'Cancel' to move the focus...");
            tabbedMode = (rv)? false: true;
            toggleTabMode();
        }
        if(!tabbedMode) return;

        var sel = _getTASelection();
        var val = _prepareTabs(sel, sK);
        _insertAtSelection(sel, val);

        if(dom && e.stopPropagation){
            if(e.cancelable)
                e.preventDefault();
            e.stopPropagation();
        }
        else if(is_ie){
            e.returnValue = false;
            e.cancelBubble = true;
        }
    }
    else if(((is_nav && c == 109) || (is_ie && c == 77)) && aK){
        toggleTabMode();
    }
    else if(((is_nav && c == 118) || (is_ie && c == 86)) && cK){
        if(!tabbedMode) return;
        onTabbedBeforePaste(e);
    }
}

function _prepareTabs(sel, sK)
{
    var tmp;

    if(!sel[0] && !sK)
        return tspace;

    sel[0] = sel[0].replace(/\r\n/g, "\n");
    sel[0] = sel[0].replace(/\r/g, "\n");
    tmp    = sel[0].split("\n");

    // Outdent
    if(sK){
        for(var i = 0; i < tmp.length; i++){
            var n = 0;
            while(tmp[i].charAt(0) == ' ' && n < 4){
                tmp[i] = tmp[i].substring(1, tmp[i].length);
                n++;
            }
        }
    }

    // Fix up
    if(!tmp[tmp.length - 1]){
        tmp.pop();
        tmp[tmp.length - 1] += "\n";
    }
    else if(is_ie){
        tmp[tmp.length - 1] += "\n";
    }

    // Return re-formatted string
    return (!sK)? tspace + tmp.join("\n" + tspace): tmp.join("\n");
}

function toggleTabMode()
{
    tabbedMode = (tabbedMode)? false: true;
    document.REPLIER.bbtabmode.checked = (tabbedMode);
}


//--------------------------------------------
// onPaste-handler
//--------------------------------------------

function onTabbedBeforePaste(e)
{
    if(!e) return;

    var obj_ta = (dom)? document.getElementsByName('Post')[0]: document.all.Post;
    var obj = (e.srcElement)? e.srcElement: e.target;
    if(!obj || obj != obj_ta) return;

    setTimeout("onTabbedAfterPaste()", 100);
}

function onTabbedAfterPaste()
{
    var sel = _getTASelection();
    var obj_ta = (dom)? document.getElementsByName('Post')[0]: document.all.Post;

    obj_ta.value = obj_ta.value.replace(/\t/g, tspace);
    obj_ta.focus();
}


//--------------------------------------------
// GENERAL INSERT FUNCTIONS
//--------------------------------------------
// sel: selection
//      Gecko: Array(selected text, selection start, selection end)
//      IE: Array(selected text, TextRange object)
//      Other: false
// val: text to insert

function _insertAtSelection(sel, val)
{
    var obj_ta = (dom)? document.getElementsByName('Post')[0]: document.all.Post;
    obj_ta.focus();

    if(sel.length > 2){
        var txt  = obj_ta.value.substring(0, sel[1]);
        txt += val;
        txt += obj_ta.value.substring(sel[2], obj_ta.value.length);
        obj_ta.value = txt;

        if(obj_ta.setSelectionRange){
            sel[2] = sel[1] + val.length;
            if(insertMode == 1 || !sel[0].length)
                obj_ta.setSelectionRange(sel[2], sel[2]);
            else
                obj_ta.setSelectionRange(sel[1], sel[2]);
        }
    }
    else if(sel.length == 2){
        var len = sel[1].text.length;
        sel[1].text = val;

        if(insertMode != 1 && len)
            sel[1].moveStart('character', -val.length);
        sel[1].select();
    }
    else {
        obj_ta.value = val;
    }

    obj_ta.focus();
}

// Returns a selection as described above
function _getTASelection()
{
    var sel;
    var obj_ta = (dom)? document.getElementsByName('Post')[0]: document.all.Post;

    obj_ta.focus();

    if(obj_ta.setSelectionRange){
        var s = obj_ta.selectionStart;
        var e = obj_ta.selectionEnd;
        sel = obj_ta.value.substring(s, e);
        // Cut off blank at end
        if(s < e && sel.charAt(sel.length - 1) == ' '){
            sel = sel.substring(0, sel.length - 1);
            e--;
        }

        return new Array(sel, s, e);
    }
    else if(!dom && !window.opera && !is_mac){
        sel = document.selection;
        var rng = sel.createRange();

        if((sel.type == "Text" || sel.type == "None") && rng != null){
            rng.collapse;
            // Cut off blank at end
            if(rng.text.length > 1 && rng.text.charAt(rng.text.length - 1) == ' ')
                rng.moveEnd('character', -1);
            rng.select();

            return new Array(rng.text, rng);
        }
    }

    return new Array('');
}

Recommended Answers

All 3 Replies

Is there any point at all posting here?

For first 2 lines i.e:

var useTabKey = 1; // 1 = enable tab-key feature / 0 = no tab-key
var tabbedMode = 1;

since these are global variables u can easily change there value.


for third part to change, find out on which event that function is called, then bind ur modified handler to that event.

Thankyou for answering , its called onload I beleive, but how do I....

bind ur modified handler to that event.

I havent got a clue!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.