DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/)
-   JavaScript / DHTML / AJAX (http://www.daniweb.com/forums/forum117.html)
-   -   over-ride inaccessable javascript function? (http://www.daniweb.com/forums/thread121423.html)

Inny Apr 28th, 2008 11:22 am
over-ride inaccessable javascript function?
 
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 in bold. 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( "
  • \n" + thelist + "
\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(""+enterTITLE+"", "", 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(""+emailAddress+"", "", 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('');
}

Inny May 19th, 2008 4:13 am
Re: over-ride inaccessable javascript function?
 
Is there any point at all posting here?

Luckychap May 19th, 2008 7:47 am
Re: over-ride inaccessable javascript function?
 
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.

Inny May 19th, 2008 7:58 am
Re: over-ride inaccessable javascript function?
 
Thankyou for answering , its called onload I beleive, but how do I....
Quote:

bind ur modified handler to that event.


I havent got a clue!


All times are GMT -4. The time now is 4:01 am.

Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC