/* skellos@skellos.com
/* text editor for FORUMS and PAGE EDITION
/* built and provided by www.skellos.com and www.solutionskynet.com
/* free to use, free to give and feel free to donate at one of our web sites if you like this editor
/**/

var actionStack = new Array();
var actionStackCount = 0;
var backActionStackCount = 0;

var editorTextAreaHasFocus = 0;

function showHideSmileyBar(whichBar){
    document.getElementById('smileyPage_1').style.display = 'none';
    document.getElementById('smileyPage_2').style.display = 'none';
    document.getElementById('smileyPage_3').style.display = 'none';

    document.getElementById('smileyPage_' + whichBar).style.display = '';
}

function editorUndoButton(){
    if(backActionStackCount > 0){
        backActionStackCount = backActionStackCount - 1;
        var text = actionStack[backActionStackCount];
        document.getElementById('editorTextArea').value = text;
        document.getElementById('editorArea1').innerHTML = skEditorConvert_Tag_2_Code(text);
    }
    else alert('Can not undo anymore.');
}
function editorRedoButton(){
    backActionStackCount++;
    if(backActionStackCount > 0 && backActionStackCount <= actionStackCount){
        var text = actionStack[backActionStackCount];
        document.getElementById('editorTextArea').value = text;
        document.getElementById('editorArea1').innerHTML = skEditorConvert_Tag_2_Code(text);
    }
    else{
        alert('Can not go further then where you were at.');
        backActionStackCount = parseInt(backActionStackCount - 1);
    }
}

function sk_editor_itemClick(whichClick){
    var taId = document.getElementById('editorTextArea');
    //IE support
    if (document.selection){
        var selectedText = (document.all) ? document.selection.createRange().text : document.getSelection();
        if (selectedText == ""){
            if (whichClick == "link") selectedText = document.getElementById('linkName').value;
            var textBefore = (taId.value).substring(0);
            var textAfter = "";
        }
        else{
            var textBefore = (taId.value).substring(0, document.getElementById('editorTextArea').value.indexOf(selectedText));
            var textAfter = (taId.value).substring(parseInt(document.getElementById('editorTextArea').value.indexOf(selectedText) + selectedText.length));
        }
    }
    //MOZILLA/NETSCAPE support
    else{
        var textBefore = (taId.value).substring(0, taId.selectionStart);
        var selectedText = (taId.value).substring(taId.selectionStart, taId.selectionEnd);
        var textAfter = (taId.value).substring(taId.selectionEnd);
    }
    var originalSelection = selectedText;
    var originalSelection = selectedText;
    var text = textBefore + selectedText + textAfter;

        if (backActionStackCount == 0) actionStack[backActionStackCount] = text;
        
        if(whichClick.substring(0, 6) == "colums"){
            var columnsAr = new Array("[_colums2a_]", "[_colums2b_]", "[_colums3a_]", "[_colums3b_]", "[_colums4a_]", "[_colums4b_]", "[_columsC_]");
            var columnsAr2 = new Array("", " ", "", " ", "", " ", "");
            for (var i=0; i<columnsAr.length; i++){
                var newSplit = selectedText.split(columnsAr[i]);
                for(var ii=0; ii<newSplit.length; ii++){
                    selectedText = selectedText.replace(columnsAr[i], columnsAr2[i]);
                }
            }
        }
        
        if (whichClick == "colums1") showHide('editorColumSelector');
        else if(whichClick == "colums2"){
            var myLength = selectedText.length;
            var myLengthCut = Math.floor(myLength/2);
            
            var firstHalf = selectedText.substring(0, myLengthCut);
            var lastSpacerPos = firstHalf.lastIndexOf(" ");
                firstHalf = selectedText.substring(0, lastSpacerPos);
            
            var lastHalf = selectedText.substring(lastSpacerPos + 1);
            
            var selectedText = '[_colums2a_]' + firstHalf + '[_colums2b_]' + lastHalf + '[_columsC_]';
            showHide('editorColumSelector');
        }
        else if(whichClick == "colums3"){
            var myLength = selectedText.length;
            var myLengthCut = Math.floor(myLength/3);
            
            var firstHalf = selectedText.substring(0, myLengthCut);
            var lastSpacerPos1 = firstHalf.lastIndexOf(" ");
                firstHalf = selectedText.substring(0, lastSpacerPos1);

            var secondHalf = selectedText.substring(lastSpacerPos1, parseInt(lastSpacerPos1 + myLengthCut));
            var lastSpacerPos2 = secondHalf.lastIndexOf(" ");
                secondHalf = secondHalf.substring(0, lastSpacerPos2);
            
            var lastHalf = selectedText.substring(parseInt(lastSpacerPos1 + lastSpacerPos2 + 1));

            var selectedText = '[_colums3a_]' + firstHalf + '[_colums3b_]' + secondHalf + '[_colums3b_]' + lastHalf + '[_columsC_]';
            showHide('editorColumSelector');
        }
        else if(whichClick == "colums4"){
            var myLength = selectedText.length;
            var myLengthCut = Math.floor(myLength/4);
            
            var firstHalf = selectedText.substring(0, myLengthCut);
            var lastSpacerPos1 = firstHalf.lastIndexOf(" ");
                firstHalf = selectedText.substring(0, lastSpacerPos1);

            var secondHalf = selectedText.substring(lastSpacerPos1, parseInt(lastSpacerPos1 + myLengthCut));
            var lastSpacerPos2 = secondHalf.lastIndexOf(" ");
                secondHalf = secondHalf.substring(0, lastSpacerPos2);
            
            var thirdHalf = selectedText.substring(parseInt(lastSpacerPos1 + lastSpacerPos2 + 1), parseInt(lastSpacerPos1 + lastSpacerPos2 + myLengthCut));
            var lastSpacerPos3 = thirdHalf.lastIndexOf(" ");
                thirdHalf = thirdHalf.substring(0, lastSpacerPos3);

            var lastHalf = selectedText.substring(parseInt(lastSpacerPos1 + lastSpacerPos2 + lastSpacerPos3 + 1));

            var selectedText = '[_colums4a_]' + firstHalf + '[_colums4b_]' + secondHalf + '[_colums4b_]' + thirdHalf + '[_colums4b_]' + lastHalf + '[_columsC_]';
            showHide('editorColumSelector');
        }
        else if (whichClick.substring(0, 11) == "fontfamily_"){
            selectedText = '[_fontfamilyA_]' + whichClick.substring(11) + '[_fontfamilyB_]' + selectedText + '[__fontfamily__]';
            document.getElementById('fontfamily').value = '';
        }
        else if (whichClick == "fieldset"){
            var allValue = new Array();
                allValue[0] = document.getElementById('fieldsetTitle').value;
                allValue[1] = document.getElementById('fieldsetText').value;

            selectedText = '[_fiedlsetB_]' + allValue[0] + '[_fieldsetL_]' + allValue[1] + '[__fieldset__]';

            document.getElementById('fieldsetTitle').value = '';
            document.getElementById('fieldsetText').value = '';
            showHide('editorFieldset');
        }
        else if (whichClick == "link"){
            var allValue = new Array();
                allValue[0] = document.getElementById('linkURL').value;
                allValue[1] = document.getElementById('linkName').value;
                allValue[2] = document.getElementById('linkInNewWindow').value;

            // Check if we find a Mail address or a URL directly
            if (allValue[0].indexOf('@') > 0) selectedText = '[_linkM_]' + allValue[0] + '[_link_]' + allValue[1] + '[__link__]';
            else{
                if (allValue[0].substring(0, 7) == 'http://') allValue[0] = allValue[0].substring(7);
                if (document.getElementById('linkInNewWindow').checked == true) selectedText = '[_linkU_]http://' + allValue[0] + '[_linkNP_]' + allValue[1] + '[__link__]';
                else selectedText = '[_linkU_]http://' + allValue[0] + '[_link_]' + allValue[1] + '[__link__]';
            }

            document.getElementById('linkURL').value = '';
            document.getElementById('linkName').value = '';
            document.getElementById('linkInNewWindow').checked = true;
            showHide('editorLinkSelector');
        }
        else if (whichClick == "image"){
            var allValue = new Array();
                allValue[0] = document.getElementById('imageURL').value;
                allValue[1] = document.getElementById('imgWidthB').value;
                allValue[2] = document.getElementById('imgHeightB').value;

            if (allValue[0].substring(0, 7) == 'http://') allValue[0] = allValue[0].substring(7);
            var NEWselectedText = '[_image_]http://' + allValue[0] + '[_imageA_]';
            if(allValue[1] > 0 && document.getElementById('imgConsProp').checked == true) NEWselectedText += '[_imageW_]' + allValue[2] + '[_imageA_]';
            else if(allValue[1] > 0 && allValue[2] > 0 && document.getElementById('imgConsProp').checked == false) NEWselectedText += '[_imageW_]' + allValue[1] + '[_imageA_][_imageH_]' + allValue[2] + '[_imageA_]';
            else if(document.getElementById('imgConsProp').checked == false){
                if(allValue[1] > 0) NEWselectedText += '[_imageW_]' + allValue[1] + '[_imageA_]';
                if(allValue[2] > 0) NEWselectedText += '[_imageH_]' + allValue[2] + '[_imageA_]';
            }
            NEWselectedText += '[__image__]';
            
            if (document.getElementById('linkImage').checked == true) NEWselectedText = '[_linkU_]http://' + allValue[0] + '[_linkNP_]' + NEWselectedText + '[__link__]';
            
            selectedText += NEWselectedText;
            
            document.getElementById('imageURL').value = 'http://';
            document.getElementById('imgWidthA').checked = true;
            document.getElementById('imgWidthB').value = 0;
            document.getElementById('imgHeightA').checked = true;
            document.getElementById('imgHeightB').value = 0;
            document.getElementById('imgConsProp').checked = true;
            document.getElementById('linkImage').checked = true;
            showHide('editorImageSelector');
        }
        else if (whichClick.substring(0, 9) == "table"){
            var allValue = new Array();
                if (document.getElementById('numRows').value > 0) allValue[0] = document.getElementById('numRows').value;
                else allValue[0] = 1;
                if (document.getElementById('numCols').value > 0) allValue[1] = document.getElementById('numCols').value;
                else allValue[1] = 1;
                allValue[2] = document.getElementById('cellSpacing').value;
                allValue[3] = document.getElementById('cellPadding').value;
                allValue[4] = document.getElementById('borderThickness').value;
                allValue[5] = document.getElementById('borderColor').value;
            
            selectedText += '\r\n[_table_][_tableCS_]' + allValue[2] + '[__tableB__][_tableCP_]' + allValue[3] + '[__tableB__][_tableBT_]' + allValue[4] + '[__tableB__]';
            if (allValue[5].substring(0, 1) == '#') selectedText += '[_tableBC_]' + allValue[5] + '[__tableB__]';
            selectedText += '[_tableA_]';
            
            for(var i=0; i<allValue[0]; i++){
                selectedText += '[_tr_]';
                var colii = 0; var rowi = 0;
                for(var ii=0; ii<allValue[1]; ii++){
                    colii = ii + 1;
                    rowi = i + 1;
                    selectedText += '\r\n[_td_]==== TEXT ROW ' + rowi + ', COLUMN ' + colii + ' ====[__td__]';
                }
                selectedText += '\r\n[__tr__]';
            }
            selectedText += '[__table__]';
            showHide('editorTableSelector');
        }
        else if (whichClick.substring(0, 9) == "fontsize_"){
            selectedText = '[_fontsizeA_]' + whichClick.substring(9) + '[_fontsizeB_]' + selectedText + '[__fontsize__]';
            document.getElementById('fontsize').value = '';
        }
        else if (whichClick.substring(0, 10) == "textcolor_"){
            selectedText = '[_textcolorA_]' + whichClick.substring(10) + '[_textcolorB_]' + selectedText + '[__textcolor__]';
            document.getElementById('textcolor').value = '';
        }
        else if (whichClick.substring(0, 16) == "backgroundcolor_"){
            selectedText = '[_backgroundcolorA_]' + whichClick.substring(16) + '[_backgroundcolorB_]' + selectedText + '[__backgroundcolor__]';
            document.getElementById('backgroundcolor').value = '';
        }
        else if (whichClick.substring(0, 7) == "smiley_"){
            selectedText = '[_smiley_]' + whichClick.substring(7) + '[__smiley__]';
        }
        else if (whichClick.substring(0, 12) == "more_smiley_"){
            selectedText = '[_smiley_]' + whichClick.substring(12) + '[__smiley__]';
            showHide('smileyBox_01');
            showHide('editorBox_01');
        }
        else selectedText = '[_' + whichClick + '_]' + selectedText + '[__' + whichClick + '__]';

        text = textBefore + selectedText + textAfter;
        document.getElementById('editorTextArea').value = text;
        document.getElementById('editorArea1').innerHTML = skEditorConvert_Tag_2_Code(text);
        
        backActionStackCount++;
        actionStackCount = backActionStackCount;
        actionStack[backActionStackCount] = text;
        
        document.getElementById('editorTextArea').focus();
        // document.getElementById('editorTextArea').select();

    if (document.selection){
    }
    //MOZILLA/NETSCAPE support
    else{
        taId.selectionStart = textBefore.length;
        taId.selectionEnd = textBefore.length + selectedText.length;
    }
}

function skEditorConvert_Tag_2_Code(text){
    for (var i=0; i<listSimpleTags.length; i++){
        var newSplit = text.split(listSimpleTags[i]);
        for(var ii=0; ii<newSplit.length; ii++){
            text = text.replace(listSimpleTags[i], listToReplaceBy[i]);
        }
    }
    
    // convert \r\n for line jumps
    var textS = text.split("\n");
    var margeThis = '';
    text = '';
    for(var ii=0; ii<textS.length; ii++){
        text += '<br/>' + textS[ii];
        /* IF we want to split \n to DIV instead of BR, use this code
        if (textS[ii] == '') textS[ii] = '&nbsp;';
        text += '<div>' + textS[ii] + '</div>';
        /**/
    }

    // filter the double <span tags
    var posDouble = text.indexOf("</span></span>");
    if(posDouble > 0) text = removeDoubleSpan(text);

    return text;
}
function removeDoubleSpan(text){
    var posDoubleSpan = text.indexOf("</span></span>");
    var firstPart = text.substring(0, posDoubleSpan+7);
    var lastPart = text.substring(posDoubleSpan + 14);
    var beforeLastSpanPos = firstPart.lastIndexOf("<span");
    var beforeLastSpan = firstPart.substring(0, beforeLastSpanPos-2);
    var lastSpanPart = firstPart.substring(beforeLastSpanPos+13);
    text = beforeLastSpan + ' ' + lastSpanPart + lastPart;

    var posDoubleSpan2 = text.indexOf("</span></span>");
    if(posDoubleSpan2 > 0) text = removeDoubleSpan(text);

    return text;  
}

var numColomnSelected = 0;
function columnSelector(bgColor, actWhat, meId){
    if(actWhat == "OVER"){
        if(meId == 1){
            document.getElementById('columnSelectorImg1').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg2').style.backgroundColor = '';
            document.getElementById('columnSelectorImg3').style.backgroundColor = '';
            document.getElementById('columnSelectorImg4').style.backgroundColor = '';
            document.getElementById('editorColumSelectorNumber').innerHTML = '1';
        }
        else if(meId == 2){
            document.getElementById('columnSelectorImg1').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg2').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg3').style.backgroundColor = '';
            document.getElementById('columnSelectorImg4').style.backgroundColor = '';
            document.getElementById('editorColumSelectorNumber').innerHTML = '2';
        }
        else if(meId == 3){
            document.getElementById('columnSelectorImg1').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg2').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg3').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg4').style.backgroundColor = '';
            document.getElementById('editorColumSelectorNumber').innerHTML = '3';
        }
        else if(meId == 4){
            document.getElementById('columnSelectorImg1').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg2').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg3').style.backgroundColor = bgColor;
            document.getElementById('columnSelectorImg4').style.backgroundColor = bgColor;
            document.getElementById('editorColumSelectorNumber').innerHTML = '4';
        }
    }
    else if(actWhat == "OUT"){
    }
}

function editorTareaFocus(){
    var editorTextAreaHasFocus = 1;
    document.getElementById('editorFieldset').style.display = "none";
    document.getElementById('editorImageSelector').style.display = "none";
    document.getElementById('editorTableSelector').style.display = "none";
    document.getElementById('editorColumSelector').style.display = "none";
    document.getElementById('editorLinkSelector').style.display = "none";
}


function autoValueForNewItem(nVal){
    var taId = document.getElementById('editorTextArea');
    //IE support
    if (document.selection) var selectedText = (document.all) ? document.selection.createRange().text : document.getSelection();
    //MOZILLA/NETSCAPE support
    else var selectedText = (taId.value).substring(taId.selectionStart, taId.selectionEnd);

    if (nVal == 1) document.getElementById('fieldsetText').value = selectedText;
    else if (nVal == 2){
        // Check if we find a Mail address or a URL directly
        if (selectedText.indexOf('@') > 0) document.getElementById('linkURL').value = selectedText;
        else{
            // check if we can determine the selected text to be a direct URL
            var isUrlFound = 0;
            var urlExplode = selectedText.split('.');
            if (selectedText.substring(0, 7) == 'http://' || selectedText.substring(0, 5) == 'fttp:' || selectedText.substring(0, 3) == 'ftp' || urlExplode[0] == 'http://www' || urlExplode[0] == 'www') isUrlFound = 1;
            else{
                var lastDot = selectedText.lastIndexOf(".");
                if (lastDot > 0){
                    var urlExtension = selectedText.substring(lastDot);
                    if (checkIfAZaz09_straight(urlExtension.substring(1))) isUrlFound = 1;
                }
            }
                
            if (isUrlFound == 1){
                document.getElementById('linkURL').value = selectedText;
                document.getElementById('linkName').value = selectedText;
            }
            else document.getElementById('linkName').value = selectedText;
        }
    }
}