// JS - 2005/2006/2007 - Sipke

window.addEventListener(
    'load',
    function(){
        StartProcedures();
        ShowJSElements();
        FillTabsWithPredefinedButtons();
        MakeRadioButtonsAdjustCommandLine();
        SetEventsForCommandLineElements();
        MakeCustomImageAdjustCommandLine();
    }, false);
    

/* STEP 1 */
// Show elements that are hidden when JavaScript is turned off
// Last update: 2007-05-14
function ShowJSElements(){
    var elem = document.getElementById('actiontabs');
    while(elem){
        if(elem.nodeType==1) elem.style.display = 'block';
        elem = elem.nextSibling; }
    elem = document.getElementsByTagName('h3');
    for(var u=0,hu;hu=elem[u];u++) hu.style.display = 'block';
}


// Expand or collapse button category
// Last update: 2006-12-29
function ExpandTreeGroup(elem){
    var olom = elem.parentNode.getElementsByTagName('ol')[0];
    if (!olom) return;
    var othero = document.getElementById('selectiontree').getElementsByTagName('ol');
    for (var q=0,qo;qo=othero[q];q++) if(qo != olom) qo.style.display = 'none';
    olom.style.display = (olom.style.display=='block')? 'none': 'block';
}


// Make predefined buttons fill tab when clicked on
// Last update: 2007-05-06
function FillTabsWithPredefinedButtons(){
    var uls = document.getElementById('selectiontree');
    var lis = uls.getElementsByTagName('li');
    for(var q=0,qlis;qlis=lis[q];q++){
        if(qlis.parentNode!=uls && qlis.getElementsByTagName('pre')){
            qlis.addEventListener('click',
                function(ev){
                    var comm;
                    if(ev.target.nodeName=='SPAN'){ comm = ev.target.parentNode.getElementsByTagName('pre')[0]
                    } else if(ev.target.nodeName=='LI'){ comm = ev.target.getElementsByTagName('pre')[0] }
                    if(comm){
                        document.getElementById('makeyourown').value = comm.innerText;
                        SwitchTabs(1);
                        ExtractButtonCommand();
                    }
                }, false);                
}}}    


// Make radio buttons adjust command line when clicked on.
// Make label select corresponding radio button when clicked on.
// Last update: 2007-05-07
function MakeRadioButtonsAdjustCommandLine(){
    var radios = document.getElementById('actionform').getElementsByTagName('input');
    for(var p=0,rp;rp=radios[p];p++){
        if(rp.getAttribute('type')=='radio'){
            rp.addEventListener('click', function(ev){ CreateCommandLine('actionform'); }, false);
            rp.nextSibling.addEventListener('click', function(ev){ MarkOption(ev.target); }, false);
    }}
    radios = document.getElementById('buttonproperties').getElementsByTagName('input');
    for(var p=0,rp;rp=radios[p];p++){
        if(rp.getAttribute('type')=='radio' || rp.getAttribute('type')=='checkbox'){
            rp.addEventListener('click', function(ev){ CreateCommandLine('buttonproperties'); }, false);
            rp.nextSibling.addEventListener('click', function(ev){ MarkOption(ev.target); }, false);
}}}


// Get id of form to which element belongs
// Last update: 2007-05-20
function GetParentForm(elem){
    while(!(elem.nodeName=='FORM' || elem.nodeName=='BODY'))
        elem = elem.parentNode;
    if(elem.nodeName=='FORM' && elem.hasAttribute('id')){
        return elem.getAttribute('id') 
    } else { return ''}
}


// Make input fields change command line when left
// Last update: 2007-05-20
function MakeCustomImageAdjustCommandLine(){
    var inpts = document.getElementById('actionform').getElementsByTagName('fieldset')[2].getElementsByTagName('input');
    for(var p=0,rp;rp=inpts[p];p++){
        if(rp.getAttribute('type')=='text'){
            rp.addEventListener('blur', function(){ CreateCommandLine('actionform'); }, false);
    }}
    document.getElementById('usertext').addEventListener(
        'blur', function(){ FindRecommendedText(); CreateCommandLine('actionform'); }, false);
    document.getElementById('usermenu').addEventListener(
        'blur', function(){ CreateCommandLine(''); }, false);
}


// Make "and..." checkboxes show/hide additional fields when clicked on.
// Make command line boxes change to dropdown menus when selected.
// Update command line when command dropdown is left.
// Last update: 2007-05-07
function SetEventsForCommandLineElements(){
    var prnt = document.getElementById('actionform').getElementsByTagName('fieldset')[0];
    var cbs = prnt.getElementsByTagName('input');
    for(var q=0,qc;qc=cbs[q];q++){
        if(qc.getAttribute('type')=='checkbox'){
            qc.addEventListener('click', function(ev){ ShowMoreFields(ev.target); CreateCommandLine('actionform'); }, false);
        } else if(qc.getAttribute('value').indexOf('Command')==0){
            qc.addEventListener('focus', function(ev){ ChangeToMenu(ev.target); }, false);
        } else if(qc.getAttribute('value').indexOf('Parameter')==0){
            qc.addEventListener('blur', function(ev){ CreateCommandLine('actionform'); }, false);
        }
    }
    prnt.getElementsByTagName('select')[0].addEventListener('blur', function(ev){ SaveAction(ev.target) }, false);
}


/* STEP 2 */

// Fill dropdown menus when page loads
// Last update: 2006-12-29
function StartProcedures(){
    FillCommandsSelect();
    FillImagesSelect();
    FillMenuSelect()
}


// Actions to perform when a user switches to another tab
// Last update: 2006-12-29
function SelectAction(nr){
    SwitchTabs(nr);
    FillTabFromCommandLine(nr);
}


// Make a different tab visible
// Last update: 2006-12-29
function SwitchTabs(nr){
    var its = document.getElementById("actiontabs").getElementsByTagName('li');
    nr--;
    for (var l=0,lits;lits=its[l];l++){
        if(l==nr){
            lits.style.fontWeight = 'bold';
            lits.style.borderBottomColor = '#fffbdb';
        } else {
            lits.style.fontWeight = 'normal';
            lits.style.borderBottomColor = '#dbcc9c';
        }
    }
}


// Show/hide additional command fields
// Last update: 2007-05-07
function ShowMoreFields(elem){
    var nr = elem.id.substring(2,3);
    nr++;
    if(elem.checked){
        var newState = 'inline';
    } else {
        var newState = 'none';
        if(nr<5){
            var nextLine = document.getElementById('cb'+nr);
            nextLine.checked = false;
            ShowMoreFields(nextLine);
        }           
    }
    var t = elem.nextSibling;
    if(t.nodeType==1 && t.nodeName=='LABEL') t.innerText = (newState=='inline')? 'and':'and...';
    t = t.nextSibling;
    if(t.nodeType==1 && t.nodeName=='SPAN') t.style.display = newState;
    if(nr < 5){
        t = t.nextSibling;
        while(t.nodeType==3) t = t.nextSibling;
        if(t && t.nodeType==1 && t.getAttribute('type')=='checkbox') t.style.display = newState;
        t = t.nextSibling;
        if(t.nodeType==1 && t.nodeName=='LABEL') t.style.display = newState;
    }
}


// Find string in language file matching the user-defined button title or matching the first command
// Last update: 2007-05-08
function FindRecommendedText(){
    var sText1, sText2;
    sText2 = document.getElementById("usertext").value;
    if(sText2=="" || !DoComparison(sText2)){
        sText1 = document.getElementById("cl0").value;
        if(sText1=="" || !DoComparison(sText1))
            WriteRecommendedText("--");
    }
}


// Compare string with strings in language file
// Last update: 2007-05-05
function DoComparison(str){  
    var iLenTxt = str.length;
    str = CapitalizeTxt(str);
    var Commands = [];
    if(iLenTxt<5) { Commands = CommandsLen4() }
    else if(iLenTxt<7) { Commands = CommandsLen6() }
    else if(iLenTxt<9) { Commands = CommandsLen8(); }
    else if(iLenTxt<11) { Commands = CommandsLen10() }
    else if(iLenTxt<13) { Commands = CommandsLen12() }
    else if(iLenTxt<15) { Commands = CommandsLen14() }
    else if(iLenTxt<17) { Commands = CommandsLen16() }
    else if(iLenTxt<20) { Commands = CommandsLen19() }
    else if(iLenTxt<24) { Commands = CommandsLen23() }
    else if(iLenTxt<41) { Commands = CommandsLen40() }
    else { WriteRecommendedText("--"); return; }
    
    var i=0;
    while(Commands[i] && str!=Commands[i][0]) i++;
    if(Commands[i]) {
        WriteRecommendedText(str + " (" + Commands[i][1] + ")"); return true;
    } else { WriteRecommendedText("--"); return false; };
}


// Convert all first letters of words in a string into capitals
// Last update: 2007-05-15
function CapitalizeTxt(str){
    str = str.toLowerCase();
    /*var arrWords = str.split(" ");
    str = "";
    for(var i=0,ai;ai=arrWords[i];i++)
        str += " " + ai.charAt(0).toUpperCase() + ai.substring(1,ai.length);
    str = str.substring(1,str.length);*/
    var u = 0;
    var blnPrevCap = true;
    var alphaomega = 'abcdefghijklmnopqrstuvwxyz';
    var sChar = str.charAt(u);
    var newS = '';
    while(sChar){
        if(blnPrevCap){
            newS+= sChar.toUpperCase();
            blnPrevCap = true;
        } else {
            newS+= sChar;
            blnPrevCap = false;
        }
        blnPrevCap = (alphaomega.indexOf(sChar)==-1);
        u++; sChar = str.charAt(u);         
    }
    return newS;
}


// Write string to "recommented text" option on page
// Last update: 2006-12-29
function WriteRecommendedText(str){
    var t = document.getElementById("recommendedtext");
    t.innerText = str;
}


// Select radio button when certain text or image option is selected
// Last update: 2007-05-20
function MarkOption(elem){
    var ndBefore = elem;
    while(!(ndBefore.nodeType==1 && ndBefore.nodeName=='LABEL')) ndBefore = ndBefore.parentNode;
    do { ndBefore = ndBefore.previousSibling;
    } while(!(ndBefore.nodeType==1 && ndBefore.nodeName=='INPUT' && (ndBefore.type=='radio' || ndBefore.type=='checkbox'))); 
    if(ndBefore.type=='radio'){
        ndBefore.checked = true;
    } else if(ndBefore.type=='checkbox'){
        ndBefore.checked = !ndBefore.checked;
    }
    CreateCommandLine(GetParentForm(elem));
}


// Make command field appear as dropdown menu
// Last update: 2007-04-30
function ChangeToMenu(elem){
    var f = document.getElementById('actionform').getElementsByTagName('fieldset')[0];
    f = f.getElementsByTagName("select")[0];
    
    elem.style.display = 'none';
    elem.parentNode.insertBefore(f.parentNode.removeChild(f),elem)
    var sComm = elem.value;
    if(sComm=='' || sComm.indexOf('Command ')==0){
        f.value = '--';
    } else { f.value = sComm };
    f.style.display = 'inline';
    f.focus();
}


// Insert selected command from dropdown into command field
// Last update: 2007-05-06
function SaveAction(elem){
    var f = elem;
    if(f.value=='--'){
        if(f.parentNode.previousSibling.nodeName=='LABEL' && f.parentNode.previousSibling.hasAttribute('for')){
            var nr = f.parentNode.previousSibling.getAttribute('for');
            nr = nr.replace('cb',''); nr++;
            f.nextSibling.value = 'Command ' + nr;
        } else {
            f.nextSibling.value = 'Command 1';
        }
    } else {
        f.nextSibling.value = f.value;
    }
    f.style.display = 'none';
    f.nextSibling.style.display = 'inline';
    if(f.nextSibling.getAttribute('id')=='cl0') FindRecommendedText();
    CreateCommandLine('actionform');
}


// Create command line from single action tab
// Last update: 2007-05-20
function CreateCommandLine(parentForm){
    if(parentForm == 'actionform'){
        var i = GetActiveTab();
        if(i==0) return; 
        i--;
        var t = document.getElementById('finalbutton').getElementsByTagName('input')[i]; 
        
        var cl = '';
        var pelem, param1, param2, bContinue, sLang, sImg;
        i = 0;
        while(i < 5){
            param1 = '';
            param2 = '';
            bContinue = false;
            if(i == 0) {
                pelem = document.getElementById('cl0');
                if(!(pelem.value=='' || pelem.value=='Command 1')) {
                    bContinue = true;
                    sLang = GetSelectedText();
                    sImg = GetSelectedImage();
                }
            } else { 
                if(document.getElementById('cb'+i).checked){
                    pelem = document.getElementById('cl0').parentNode.getElementsByTagName('input')[4*i+1];
                    if(!(pelem.value=='' || pelem.value=='Command '+(i+1))) {
                        cl += ' & '; 
                        bContinue = true;
                        sLang = '';
                        sImg = '';
            }}};
            if(bContinue){
                cl += pelem.value;
                pelem = pelem.nextSibling;
                if(!(pelem.value=='' || pelem.value.toLowerCase().replace(/\s/g,'')=='parameter1'))
                    //param1 = '"' + pelem.value + '"';
                    param1 = pelem.value;
                pelem = pelem.nextSibling;
                if(!(pelem.value=='' || pelem.value.toLowerCase().replace(/\s/g,'')=='parameter2'))
                    //param2 = '"' + pelem.value + '"';
                    param2 = pelem.value;
                
                if(sImg!='') sLang += ', ';
                if(sLang!='') param2 += ', ';
                if(param2!='') param1 += ', ';
                if(param1!='') param1 = ', ' + param1;
                cl += param1 + param2 + sLang + sImg;
                i++;
            } else { i = 10 };
        };        
        t.value = cl;
    }
    CreateButtonCommand();
}


// Get text selected for new button
// Last update: 2007-05-02
function GetSelectedText(){
    var sGetSelectedText = '';
    var nelem = document.getElementById('usertext');
    var inp =document.getElementById('actionform').getElementsByTagName('fieldset')[1].getElementsByTagName('input');
    var j=0;
    while(j<4 && !(inp[j].type=='radio' && inp[j].checked)) j++;
    if(inp[j]){
        var inpj = inp[j].nextSibling;
        if(inpj){
        if(nelem.parentNode == inpj){
            sGetSelectedText = '"' + nelem.value + '"';
        } else {
            if(inpj.firstChild.innerText=='geen tekst') {
                sGetSelectedText = '""';
            } else {
                nelem = document.getElementById('recommendedtext');
                if(nelem.parentNode == inpj) {
                    sGetSelectedText = nelem.innerText;
                    if(sGetSelectedText=='--'){
                        sGetSelectedText = '';
                    } else {
                        sGetSelectedText = sGetSelectedText.substring(sGetSelectedText.indexOf('(')+1,sGetSelectedText.length-1)
                    };
                }
    }}}}
    return sGetSelectedText;    
}


// Get image selected for new button
// Last update: 2007-05-02
function GetSelectedImage(){
    var sGetSelectedImage = '';
    var nelem = document.getElementById('imageslist');
    var prnt = document.getElementById('actionform').getElementsByTagName('fieldset')[2];
    var inp = prnt.getElementsByTagName('input');
    var sTxt;
    var j=0;
    while(j<4 && !(inp[j].type=='radio' && inp[j].checked)) j++;
    if(inp[j]){
        var inpj = inp[j].nextSibling;
        sTxt = inpj.firstChild.innerText;
        switch(sTxt){
            case 'standaardafbeelding:':
                sGetSelectedImage = '"' + nelem.value + '"'; break;
            case 'afbeelding naar keuze:':
                sGetSelectedImage = '"' + inpj.getElementsByTagName('input')[0].value + '"'; break;
            case 'geen afbeelding':  
                sGetSelectedImage = '" "'; break;
        }
    }
    return sGetSelectedImage;    
}


// Create button command from individual command lines
// Last update: 2007-05-20
function CreateButtonCommand(){
    var tc = '';
    var cls = document.getElementById('finalbutton').getElementsByTagName('input');
    var sSeparator = GetSeparator();
    if(cls[0].getAttribute('type')=='hidden' && cls[0].value!=''){
        tc = cls[0].value;
        for(var k=1;k<5;k++)
            if(cls[k].getAttribute('type')=='hidden' && cls[k].value!='')
                tc += sSeparator + cls[k].value;
        tc += GetPopupMenu();
    }
    document.getElementById('makeyourown').value = tc;
    document.getElementById('link2').style.visibility = 'hidden';
}


// Get character to separate individual command lines: | or >
// Last update: 2007-05-03
function GetSeparator(){
    var ch = document.getElementById('buttonproperties').getElementsByTagName('fieldset')[0].getElementsByTagName('input');
    var sSep = ' | ';
    if(ch[1] && ch[1].getAttribute('type')=='radio' && ch[1].checked)
        sSep = ' > ';
    return sSep;
}


// Get pop-up menu for button
// Last update: 2007-05-20
function GetPopupMenu(){
    var frm = document.getElementById('buttonproperties').getElementsByTagName('fieldset')[1]; 
    var ch = frm.getElementsByTagName('input');
    var sel = frm.getElementsByTagName('select')[0];
    if(ch[0].checked || (ch[2].checked && ch[3].value=='')){
        return '';
    } else {
        var sStr;
        if(ch[4].checked){ sStr = ' + Show popup menu, "';
        } else { sStr = ' + Show hidden popup menu, "'; }
        if(ch[1].checked){
            sStr += sel.value + '"';
        } else if(ch[2].checked && ch[3].value!=''){
            sStr += ch[3].value + '"';
        } else { sStr = ''; }
        return sStr;
    }
}


// Set character to separate individual command lines: | or >
// Last update: 2007-05-03
function SetSeparator(strSep){
    var ch = document.getElementById('buttonproperties').getElementsByTagName('fieldset')[0].getElementsByTagName('input');
    if(strSep=='|'){
        ch[0].checked = true;
    } else {
        ch[1].checked = true;
    }
}


// Extract individual command lines from button command
// Last update: 2007-05-05
function ExtractButtonCommand(){
    var strLine = document.getElementById("makeyourown").value;
    var cl = new Array();
    var param = new Array();
    var j = 0;
    var stParam;
    var strPopup = '';
    if(strLine!=''){
        stParam = FindQuotedParameter(strLine);
        while(stParam && stParam!=''){
            param[j] = stParam[1]+'';
            strLine = strLine.replace(param[j], "{{p" + j + "}}");
            j++;    
            stParam = FindQuotedParameter(strLine);
        }
        if(strLine.toLowerCase().replace(/\s/g,'').indexOf('+show')>-1){
            strPopup = strLine.substring(strLine.indexOf('+'),strLine.length);
            strLine = Trim(strLine.replace(strPopup,'')+'');
            strPopup = Trim(strPopup.replace('+',''));
        }
        if(strLine.indexOf('|')>-1){
            SetSeparator('|');
            cl = strLine.split('|');
        } else if(strLine.indexOf('>')>-1){
            SetSeparator('>');
            cl = strLine.split('>');
        } else { cl[0] = strLine };
        j = 0;
    }
    for(var i=0;i<4;i++) if(!cl[i]) cl[i]='';
    var inpts = document.getElementById('finalbutton').getElementsByTagName('input');
    for(j=0;j<4;j++){
        if(cl[j]==''){
            inpts[j].value = '';
        } else {
            stParam = cl[j].match(/\{\{p(\d{1,2})\}\}/);
            while(stParam){
                cl[j] = cl[j].replace(stParam[0],param[stParam[1]]);
                stParam = cl[j].match(/\{\{p(\d{1,2})\}\}/);
            }
            inpts[j].value = Trim(cl[j]);
        }
    }
    FillTabFromCommandLine(GetActiveTab());
    if(strPopup==''){
        document.getElementById('usermenu').value = '';
        document.getElementById('defaultmenu').firstChild.selected = true;
        document.getElementById('buttonproperties').getElementsByTagName('fieldset')[1].getElementsByTagName('input')[0].checked = true;
    } else {
        strPopup = strPopup.toLowerCase().replace(/\s/g,'');
        var chk = document.getElementById('buttonproperties').getElementsByTagName('fieldset')[1].getElementsByTagName('input');
        chk[4].checked = (strPopup.indexOf('showhidden')==0)? false : true;
        var sMnu = Trim(param[strPopup.match(/\{\{p(\d{1,2})\}\}/)[1]].replace(/[\s\"]+/g,' ')+'');
        var sMnuL = Trim(sMnu.toLowerCase());
        var frmPrnt = document.getElementById('defaultmenu').getElementsByTagName('option');
        var h=0;
        while(frmPrnt[h] && frmPrnt[h].innerText.toLowerCase()!=sMnuL) h++;
        if(h < frmPrnt.length){
            chk[1].checked = true;
            frmPrnt[h].selected = true;
        } else {
            chk[2].checked = true;
            document.getElementById('defaultmenu').firstChild.selected = true;
            chk[3].value = CapitalizeTxt(sMnu);
        }  
    }
    document.getElementById('link2').style.visibility = 'hidden';
}


// Get the number of the selected tab
// Last update: 2007-05-06
function GetActiveTab(){
    var t = document.getElementById('actiontabs').getElementsByTagName('li');
    var i = 0;
    while(i < 5 && t[i].style.fontWeight=='400') i++;
    if(i < 5) { i++; return i
    } else { return 0 };    
}


// Find quoted text in string
// Last update: 2007-05-06
function FindQuotedParameter(strTxt){
    // RegExp: [^\\](\"(.*?[^\\])*?\")
    var result = strTxt.match(/[^\\](\"(.*?[^\\])*?\")/);
    return result;
}


// Trim function
// Last update: 2007-05-05
function Trim(s){
    if(s!='') s = s.match(/^\s*(.*?)\s*$/)[1];
    return s;
}


// Fill tab with elements from command line
// Last update: 2007-05-20
function FillTabFromCommandLine(q){ // q: Action tab number
    if(q==0) return;
    q--;
    var strLine = document.getElementById('finalbutton').getElementsByTagName('input')[q].value;
    var comm = new Array();
    var param = new Array();
    var act = new Array();
    var elem, stParam, elemCB;
    var j = 0;
    var prnt = document.getElementById('actionform');
    if(strLine==''){
        FormReset(q);
    } else {
        var stParam = FindQuotedParameter(strLine);
        while(stParam && stParam!=''){
            param[j] = stParam[1]+'';
            strLine = strLine.replace(param[j], "{{cl" + j + "}}");
            j++;    
            stParam = FindQuotedParameter(strLine);
        }
        if(strLine.indexOf('&')>-1){
            comm = strLine.split('&');
        } else { comm[0] = strLine };
        j = 0;   
    }
    for(var i=0;i<5;i++) if(!comm[i]) comm[i]='';
    for(j=4;j>-1;j--){
        if(j==0){ 
            elem = document.getElementById('cl0');
            if(comm[0]=='') comm[0] = 'Command 1';
        } else { 
            elemCB = document.getElementById('cb'+j);
            elem = elemCB.nextSibling.nextSibling.getElementsByTagName('input')[0];
            if(comm[j]==''){
                comm[j] = 'Command ' + (j+1);    
                if(elem.parentNode.style.display!='none'){
                    elemCB.checked = false;
                    ShowMoreFields(elemCB); }
            } else {
                if(elem.parentNode.style.display!='inline'){
                    elemCB.checked = true;
                    ShowMoreFields(elemCB); }
            }
        }
        elemCB = null;

        if(comm[j].indexOf(',')>-1){
            act = comm[j].split(',');
        } else { act[0] = comm[j] };
        
        elem.value = Trim(act[0]);
        elem = elem.nextSibling;
        if(act[1]){
            act[1] = Trim(act[1]);
            if(act[1]!=''){ 
                stParam = act[1].match(/\{\{cl(\d{1,2})\}\}/);
                if(stParam) act[1] = act[1].replace(stParam[0],param[stParam[1]]);
                elem.value = act[1] 
            } else { elem.value = 'Parameter 1' };
        } else { elem.value = 'Parameter 1' };
        elem = elem.nextSibling;
        if(act[2]){
            act[2] = Trim(act[2]);
            if(act[2]!=''){ 
                stParam = act[2].match(/\{\{cl(\d{1,2})\}\}/);
                if(stParam) act[2] = act[2].replace(stParam[0],param[stParam[1]]);
                elem.value = act[2] 
            } else { elem.value = 'Parameter 2' }; 
        } else { elem.value = 'Parameter 2' }; 
        
        if(j==0){
            var prnt = document.getElementById('actionform').getElementsByTagName('fieldset')[1];
            ResetFieldset(prnt);
            if(act[3]){ 
                stParam = act[3].match(/\{\{cl(\d{1,2})\}\}/);
                if(stParam) act[3] = act[3].replace(stParam[0],param[stParam[1]]);
                act[3] = Trim(act[3]);
                if(act[3]=='""'){
                    prnt.getElementsByTagName('input')[3].checked = true;
                } else {
                    act[3] = act[3].replace(/\"/g,'')
                    if(isNaN(act[3])){
                        prnt.getElementsByTagName('input')[0].checked = true;
                        prnt.getElementsByTagName('input')[1].value = act[3];                        
                    } else {
                        if(act[3]==''){
                            prnt.getElementsByTagName('input')[2].checked = true;
                        } else {
                            stParam = FindMatchingText(act[3]);
                            if(stParam==''){
                                prnt.getElementsByTagName('input')[0].checked = true;
                                prnt.getElementsByTagName('input')[1].value = act[3];
                            } else {
                                prnt.getElementsByTagName('input')[2].checked = true;
                                prnt.getElementsByTagName('input')[1].value = stParam;
                            }
                        }
                    }
                }               
            };
            FindRecommendedText();
            
            prnt = document.getElementById('actionform').getElementsByTagName('fieldset')[2];
            ResetFieldset(prnt);
            if(act[4] && act[4]!=''){ 
                stParam = act[4].match(/\{\{cl(\d{1,2})\}\}/);
                if(stParam) act[4] = act[4].replace(stParam[0],param[stParam[1]]);
                act[4] = Trim(act[4]);
                if(act[4]=='" "'){
                    prnt.getElementsByTagName('input')[3].checked = true;
                } else {
                    act[4] = act[4].replace(/\"/g,'')
                    if(FindImageInList(act[4])){
                        prnt.getElementsByTagName('input')[0].checked = true;
                    } else {
                        elem = prnt.getElementsByTagName('input');
                        elem[1].checked = true;
                        elem[2].value = act[4];
                    }
                }               
            };
        }
        act = null; act = new Array();
    }    
}


// Reset part of button tab
// Last update: 2007-05-18
function ResetFieldset(elem){
    var els = elem.getElementsByTagName('input');
    for(var r=0,re;re=els[r];r++)
        switch(re.getAttribute('type')){
            case 'text':
                re.value = ''; break;
            case 'checkbox', 'radio':
                re.checked = false; break;
        }
    els = elem.getElementsByTagName('select');
    for(var r=0,re;re=els[r];r++)
        re.firstChild.selected = true;
}


// Reset entire button tab
// Last update: 2007-05-05
function FormReset(q){ // q: Action tab number
    var prnt = document.getElementById('actionform');
    prnt.reset();
    if(q < 4 && document.getElementById('finalbutton').getElementsByTagName('input')[q++].value!='') 
        ExtractButtonCommand(); 
}


// Find text matching a number representing a language file string
// Last update: 2007-05-06
function FindMatchingText(nr){
    var aStrings = CommandsLen4();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
    aStrings = CommandsLen6();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
    aStrings = CommandsLen8();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
    aStrings = CommandsLen10();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
    aStrings = CommandsLen12();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
        aStrings = CommandsLen14();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
        aStrings = CommandsLen16();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
        aStrings = CommandsLen12();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
        aStrings = CommandsLen19();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];
        aStrings = CommandsLen40();
    for(var k=0,kl;kl=aStrings[k];k++)
        if(kl[1]==nr) return kl[0];              
    return '';
}


// Find image name in image list
// Last update: 2007-05-06
function FindImageInList(strName){
    strName = CapitalizeTxt(strName);
    var lst = document.getElementById('imageslist').getElementsByTagName('option');
    for(var o=0,ko;ko=lst[o];o++){
        if(ko.innerText==strName){
            ko.parentElement.value=strName;
            return true;
    }}
    return false;
}


// Clear button
// Last update: 2007-05-08
function ClearButton(){
    document.getElementById('makeyourown').value='';
    ExtractButtonCommand();
    document.getElementById('link2').style.visibility = 'hidden'; 
}


// Convert command line into draggable button
// 2007-05-08
function MakeNewButton(){
    /*var strImg = "-o-skin('Push Button Skin')";
    document.getElementById('link2').style.background = strImg;*/
    var btnLink = document.getElementById('link2')
    btnLink.href = 'opera:/button/' + document.getElementById('makeyourown').value;
    btnLink.style.visibility = "visible";    
}






/*
function MakeKeyboardLink()
{
var strLoc=document.forms[1].keyboardpath.value;
var strCom="opera:/button/New page & Go to page,&quot;file://localhost/" + strLoc + "&quot; & Go to page,&quot;"; 
var strJS="javascript:(function(){var d=document;d.write('<style>td{font-family:arial}</style><table>');var strT=d.body.childNodes[0].childNodes[0].nodeValue;strT=strT.toLowerCase();var strL=new Array();var i=0;var j=0;strL[0]='';while(j<strT.length && strT.charCodeAt(j)!=13){strL[i]+=strT.charAt(j); j++; if(strT.charCodeAt(j)==13){j++;if(strL[i].charCodeAt(0)==10){strL[i]=strL[i].slice(1)};if(strL[i]!=''){i++};strL[i]=''};};j=0;while(strL[j]!='[info]'){j++};j++;while(strL[j].charAt(0)!='['){j++};j++;var a, b, strTemp; for(a=j;a<=i;a++){for(b=a+1;b<=i;b++){if(strL[a]>strL[b]){strTemp=strL[b];strL[b]=strL[a];strL[a]=strTemp;}};if(strL[a].charAt(0)!='['){d.write('<tr><td>'+strL[a].replace('=','</td><td>')+'</td></tr>')}};d.write('</table>');})();";
strCom = strCom + strJS + "&quot;"
document.getElementById('link1').href=strCom;
document.getElementById('link1').style.visibility="visible";
}
*/
