/**
 * This class provide support for tinyMCE editor
 *
 */
 
function EditorActionBarSupport(root) {

    var isBoldActive = false;
    var isItalicActive = false;
    var isUnderlineActive = false;
    var isAlignLeftActive = false;
    var isAlignRightActive = false;
    var isAlignCenterActive = false;
    var isAlignFullActive = false;
    var isSearchUserActive = false;
    var isSearchCommunityActive = false;
    var isCutActive = false;
    var isLinkActive = false;
    var isUlActive = false;
    var isOlActive = false;

    var BOLD_COMMAND_ID         = "boldCommand";
    var ITALIC_COMMAND_ID       = "italicCommand";
    var UNDERLINE_COMMAND_ID    = "underlineCommand";
    var ALIGN_LEFT_COMMAND_ID   = "alignLeftCommand";
    var ALIGN_RIGHT_COMMAND_ID  = "alignRightCommand";
    var ALIGN_CENTER_COMMAND_ID = "alignCenterCommand";
    var ALIGN_FULL_COMMAND_ID   = "alignFullCommand";
    var LINK_COMMAND_ID            = "linkCommand";
    var UL_ID            = "ulCommand";
    var OL_ID            = "olCommand";

    var LINK_DIV_ID             = "editor-popup-url"; 
    var FIRST_LINK_ELEMENT = "urlInput";

    function hiBold() {
        var element = $(BOLD_COMMAND_ID);
        element.src = root + "styles/kaDesign/images/editor/bold_on.gif";
    }
    
    function loBold() {
        var element = $(BOLD_COMMAND_ID);
        if (!isBoldActive) {
            element.src = root + "styles/kaDesign/images/editor/bold.gif";
        }
    }
    
    function activateBold(activate) {
        var element = $(BOLD_COMMAND_ID);
        if (activate) {
            isBoldActive = true;
            element.src = root + "styles/kaDesign/images/editor/bold_on.gif";
        } else {
            isBoldActive = false;
            element.src = root + "styles/kaDesign/images/editor/bold.gif";
        }
    }

    // Italic command operations
    
    function hiItalic() {
        var element = $(ITALIC_COMMAND_ID);
        element.src = root + "styles/kaDesign/images/editor/italic_on.gif";
    }
    
    function loItalic() {
        var element = $(ITALIC_COMMAND_ID);
        if (!isItalicActive) {
            element.src = root + "styles/kaDesign/images/editor/italic.gif";
        }
    }
    
    function activateItalic(activate) {
        var element = $(ITALIC_COMMAND_ID);
        if (activate) {
            isItalicActive = true;
            element.src = root + "styles/kaDesign/images/editor/italic_on.gif";
        } else {
            isItalicActive = false;
            element.src = root + "styles/kaDesign/images/editor/italic.gif";
        }
    } 

    // Underline command operations
    
    function hiUnderline() {
        var element = $(UNDERLINE_COMMAND_ID);
        element.src = root + "styles/kaDesign/images/editor/underlined_on.gif";
    }
    
    function loUnderline() {
        var element = $(UNDERLINE_COMMAND_ID);
        if (!isUnderlineActive) {
            element.src = root + "styles/kaDesign/images/editor/underlined.gif";
        }
    }
    
    function activateUnderline(activate) {
        var element = $(UNDERLINE_COMMAND_ID);
        if (activate) {
            isUnderlineActive = true;
            element.src = root + "styles/kaDesign/images/editor/underlined_on.gif";
        } else {
            isUnderlineActive = false;
            element.src = root + "styles/kaDesign/images/editor/underlined.gif";
        }
    }
    
    // AlignLeft command operations
    
    function hiAlignLeft() {
        var element = $(ALIGN_LEFT_COMMAND_ID);
        element.src = root + "styles/kaDesign/images/editor/align_left_on.gif";
    }
    
    function loAlignLeft() {
        var element = $(ALIGN_LEFT_COMMAND_ID);
        if (!isAlignLeftActive) {
            element.src = root + "styles/kaDesign/images/editor/align_left.gif";
        }
    }

    function activateAlignLeft(activate) {
        var element = $(ALIGN_LEFT_COMMAND_ID);
        if (activate) {
            isAlignLeftActive = true; 
            element.src = root + "styles/kaDesign/images/editor/align_left_on.gif";
        } else {
            isAlignLeftActive = false; 
            element.src = root + "styles/kaDesign/images/editor/align_left.gif";
        }
    }

    // AlignRight command operations
    
    function hiAlignRight() {
        var element = $(ALIGN_RIGHT_COMMAND_ID);
            element.src = root + "styles/kaDesign/images/editor/align_right_on.gif";
    }
    
    function loAlignRight() {
        var element = $(ALIGN_RIGHT_COMMAND_ID);
        if (!isAlignRightActive) {
            element.src = root + "styles/kaDesign/images/editor/align_right.gif";
        }
    }

    function activateAlignRight(activate) {
        var element = $(ALIGN_RIGHT_COMMAND_ID);
        if (activate) {
            isAlignRightActive = true;
            element.src = root + "styles/kaDesign/images/editor/align_right_on.gif";
        } else {
            isAlignRightActive = false;
            element.src = root + "styles/kaDesign/images/editor/align_right.gif";
        }
    }

    // AlignCenter command operations
    
    function hiAlignCenter() {
        var element = $(ALIGN_CENTER_COMMAND_ID);
            element.src = root + "styles/kaDesign/images/editor/align_center_on.gif";
    }
    
    function loAlignCenter() {
        var element = $(ALIGN_CENTER_COMMAND_ID);
        if (!isAlignCenterActive) {
            element.src = root + "styles/kaDesign/images/editor/align_center.gif";
        }
    }

    function activateAlignCenter(activate) {
        var element = $(ALIGN_CENTER_COMMAND_ID);
        if (activate) {
            element.src = root + "styles/kaDesign/images/editor/align_center_on.gif";
        } else {
            element.src = root + "styles/kaDesign/images/editor/align_center.gif";
        }
    }

    // AlignFull command operations
    
    function hiAlignFull() {
        var element = $(ALIGN_FULL_COMMAND_ID);
            element.src = root + "styles/kaDesign/images/editor/align_justify_on.gif";
    }
    
    function loAlignFull() {
        var element = $(ALIGN_FULL_COMMAND_ID);
        if (!isAlignFullActive) {
            element.src = root + "styles/kaDesign/images/editor/align_justify.gif";
        }
    }

    function activateAlignFull(activate) {
        var element = $(ALIGN_FULL_COMMAND_ID);
        if (activate) {
            element.src = root + "styles/kaDesign/images/editor/align_justify_on.gif";
        } else {
            element.src = root + "styles/kaDesign/images/editor/align_justify.gif";
        }
    }
    
    //ul
    
    function hiUl() {
        var element = $(UL_ID);
            element.src = root + "styles/kaDesign/images/editor/ul_on.gif";
    }
    
    function loUl() {
        var element = $(UL_ID);
        if (!isUlActive) {
            element.src = root + "styles/kaDesign/images/editor/ul.gif";
        }
    }

    function activateUl(activate) {
        var element = $(UL_ID);
        if (activate) {
        	isUlActivate = true;
            element.src = root + "styles/kaDesign/images/editor/ul_on.gif";
        } else {
            isUlActivate = false;
            element.src = root + "styles/kaDesign/images/editor/ul.gif";
        }
    }
    
    //ol
    
    function hiOl() {
        var element = $(OL_ID);
            element.src = root + "styles/kaDesign/images/editor/ol_on.gif";
    }
    
    function loOl() {
        var element = $(OL_ID);
        if (!isOlActive) {
            element.src = root + "styles/kaDesign/images/editor/ol.gif";
        }
    }

    function activateOl(activate) {
        var element = $(OL_ID);
        if (activate) {
            element.src = root + "styles/kaDesign/images/editor/ol_on.gif";
        } else {
            element.src = root + "styles/kaDesign/images/editor/ol.gif";
        }
    }
    
        // Link
    
    function hiLink() {
        if (!isLinkActive) {
            var element = $(LINK_COMMAND_ID);
            element.src = root + "styles/kaDesign/images/editor/url_on.gif";
        }
    }
    
    function loLink() {
        if (!isLinkActive) {
            var element = $(LINK_COMMAND_ID);
            element.src = root + "styles/kaDesign/images/editor/url.gif";
        }
    }

    function doActivateLink(activate) {
        var element = $(LINK_COMMAND_ID);
        if (activate) {
            element.src = root + "styles/kaDesign/images/editor/url_active.gif";
        } else {
            element.src = root + "styles/kaDesign/images/editor/url.gif";
        }
    }

    function activateLink(activate) {
        saveBookmark();
        if (!isLinkActive) {
            isLinkActive = true;
            doActivateLink(true);
            $(LINK_DIV_ID).style.visibility = 'visible';
            $(FIRST_LINK_ELEMENT).value = "http://"
            $(FIRST_LINK_ELEMENT).focus();
        } else {            
            hideLink();
        } 
        
    }
    
    function hideLink() {
        $(LINK_DIV_ID).style.visibility = 'hidden'; 
        loLink();
        isLinkActive = false;
        doActivateLink(false);
        restoreBookmark();
    }
    
    function pasteLink() {
        hideLink();
        var url = $(FIRST_LINK_ELEMENT).value;
        if (url.indexOf("http://") != 0) {
           url = "http://" + url;
        }
        var link = '<a href="' + url + '">' + url + '</a>  ';
        tinyMCE.execInstanceCommand(
                    getEditor(), "mceInsertContent", true, link); 
    }

	function saveBookmark() {
        instance = getInstance();
        bookmark = instance.selection.getBookmark();
	}
	
	function getInstance() {
        return tinyMCE.getInstanceById(getEditor());
    }
	
	function getEditor () { 
        return 'mce_editor_' + (tinyMCE.idCounter - 1); 
    }
	
	function restoreBookmark() {
        instance = getInstance();
        instance.selection.moveToBookmark(bookmark);
        bookmark = null;
    }
	

    this.activateBold = activateBold;
    this.activateItalic = activateItalic;
    this.activateUnderline = activateUnderline;
    this.activateAlignLeft = activateAlignLeft;
    this.activateAlignRight = activateAlignRight;
    this.activateAlignCenter = activateAlignCenter;
    this.activateAlignFull = activateAlignFull;
	this.activateLink = activateLink;
	this.activateUl = activateUl;
	this.activateOl = activateOl;

    this.hiBold = hiBold;
    this.hiItalic = hiItalic;
    this.hiUnderline = hiUnderline;
    this.hiAlignLeft = hiAlignLeft;
    this.hiAlignRight = hiAlignRight;
    this.hiAlignCenter = hiAlignCenter;
    this.hiAlignFull = hiAlignFull;
    this.hiLink = hiLink;
    this.hiUl = hiUl;
    this.hiOl = hiOl;
    
    this.loBold = loBold;
    this.loItalic = loItalic;
    this.loUnderline = loUnderline;
    this.loAlignLeft = loAlignLeft;
    this.loAlignRight = loAlignRight;
    this.loAlignCenter = loAlignCenter;
    this.loAlignFull = loAlignFull;
    this.loLink = loLink;    
    this.loUl = loUl;    
    this.loOl = loOl;    
    
   
    this.hideLink = hideLink;
    this.pasteLink = pasteLink;
    this.getEditor = getEditor;
    
}
