/* File Name : ToolbarJavascriptGeneral.js
 * ------------------------------------------------------------------------------------------------------------
 * Dû au fix du TT-69765 qui nécessitait l'utilisation des try...catch (cfr. ToolbarJavascriptRecentBrowser.js) 
 *
 * À cause des TT-71900 & TT-72348  - Mis en commentaire par Jean-Marie Nzabonimpa
 * les vieilles versions des browsers(Netscape version < 6 et IE version < 5.0) 
 * qui ne supportent pas les (et ne tolèrent pas la présence dans le document du) try...catch
 *
 * J'ai été obligé de faire 2 versions différentes de la fonction onCSToolbarAction();
 * 1) une version de "onCSToolbarAction()" pour les vieux browsers (sans try...catch)
 *          ===> dans le fichier "js/ToolbarJavascriptOldBrowser.js"
 * 2) une autre version de "onCSToolbarAction()" pour les browsers récents (avec try...catch)
 *          ===> dans le fichier "js/ToolbarJavascriptRecentBrowser.js"
 *-------------------------------------------------------------------------------------------------------------
 */
 
if (typeof onCSToolbarAction == "undefined" || onCSToolbarAction == null) // Car des fois, ce fichier est utilisé aussi dans le WEBTOP
{                                                                         // ou dans le AdminWebTop
    function onCSToolbarAction(formId, toolbarId, actionId, anchor)
    {
        try     // TT-69765 - Problem with window XP SP2 and/or IE6, the <input type="file"> TAG
        {        
            eval ("document." + formId + "." + HIDDEN_COMPONENT_ID + ".value = toolbarId");
            eval ("document." + formId + ".ToolbarActionToExecuteID.value = actionId");
        
            var submit = onFireComponentAction(toolbarId, actionId, 1, true);
        
            if (submit == false)
            {
                eval ("document." + formId + "." + HIDDEN_COMPONENT_ID + ".value = ''");
                eval ("document." + formId + ".ToolbarActionToExecuteID.value = ''");
            }
            else
            {
                var submitted = "0";
                eval ( "submitted = " + "document." + formId + ".toolbar_submitted.value" );
                if (submitted == "0")
                {
                    eval ( 'document.' + formId + '.toolbar_submitted.value = "1"' );
                    if (anchor != '')
                    {
                        form = eval('document.' + formId );
                        form.action = form.action + '#' + anchor;
                    }
                    eval ( 'document.' + formId + '.submit()' );
                }
            }
        }
        catch(err) // TT-69765 - Problem with window XP SP2 and/or IE6, the <input type="file"> TAG
        {
            if (onToolbarException != null)
            {
                onToolbarException(toolbarId, err);
            }
            else
            {
                throw err;
            }
        }
        return false;
    }
}

function prepareImage(imagePath)
{
    if (document.images)
    {
      b_r_actionbar_on = new Image();
      b_r_actionbar_off = new Image();
      b_r_actionbar_over = new Image();
      b_r_actionbar_sl = new Image();

      b_r_actionbar_on.src = imagePath + '/b_r_actionbar_on.gif';
      b_r_actionbar_off.src = imagePath + '/b_r_actionbar_off.gif';
      b_r_actionbar_over.src = imagePath + '/b_r_actionbar_ov.gif';
      b_r_actionbar_sl.src = imagePath + '/b_r_actionbar_sl.gif';

      b_r_action_on = new Image();
      b_r_action_off = new Image();
      b_r_action_over = new Image();
      b_r_action_sl = new Image();

      b_r_action_on.src = imagePath + '/b_r_action_on.gif';
      b_r_action_off.src = imagePath + '/b_r_action_off.gif';
      b_r_action_over.src = imagePath + '/b_r_action_ov.gif';
      b_r_action_sl.src = imagePath + '/b_r_action_sl.gif';

    }
}

var toolbarList = new Array(0);

/**
 * Return new Toolbar
 */
function getNewToolbar()
{
    var newToolbar = new Object();
    newToolbar.id = null;
    newToolbar.fullId = null;
    newToolbar.action = new Array(0);

    newToolbar.targetForm = null;
    newToolbar.formTarget = null;

    return newToolbar;
}

/**
 * Return new ToolbarAction
 */
function getNewToolbarAction()
{
    var newToolbarAction = new Object();
    newToolbarAction.id = null;
    newToolbarAction.fullId = null;
    newToolbarAction.targetForm = null;
    newToolbarAction.formTarget = null;

    newToolbarAction.disabledFct = null;
    newToolbarAction.enabledFct = null;

    return newToolbarAction;
}
/**
 * Add toolbar to list if toolbar doesn't exist, else replace toolbar
 */
function putToolbar(toolbar)
{
    var toolbarIndex = getToolbarIndex(toolbar.fullId);

    if (toolbarIndex == -1)
    {
        // it's a new toolbar
        var tmpToolbarList = new Array(1);
        tmpToolbarList[0] = toolbar;

        toolbarList = toolbarList.concat(tmpToolbarList);
    }
    else
    {
        // is'nt a new toolbar
        toolbarList[toolbarIndex] = toolbar;
    }
}


/**
 * get toolbar index, if not found -1
 */
function getToolbarIndex(toolbarId)
{
    for (i = 0; i < toolbarList.length; i++)
    {
        if (toolbarList[i].id == toolbarId ||
            toolbarList[i].fullId == toolbarId)
        {
            return i;
        }
    }
    return -1;
}

/**
 * get toolbar
 */
function getToolbar(toolbarId)
{
    var toolbarIndex = getToolbarIndex(toolbarId);

    if (toolbarIndex > -1)
    {
        return toolbarList[toolbarIndex];
    }
    return;
}


/**
 * Add Action to toolbar
 */
function addToolbarAction(toolbarId, action)
{
  // get toolbar
  var toolbar = getToolbar(toolbarId);

  // create new array with action
  var newAction = new Array(1);
  newAction[0] = action;

  // add new action
  toolbar.action = toolbar.action.concat(newAction);
}


var TYPE_CLASSIC = 1;
var TYPE_PLAIN = 2;
var TYPE_NORMAL = 3;
var TYPE_TOGGLE = 4;
var TYPE_SELECTOR = 5;

var ACTION_ENABLE = 1;
var ACTION_DISABLE = 2;

var ACTION_CLICK = 3;
var ACTION_OVER = 4;
var ACTION_OUT = 5;

/*
* simulate an action on the central section of a button
*/
function callActBtn(type, action, buttonFullId)
{
    var prefix = "";
    if(type == TYPE_NORMAL)
        prefix = 'a_span_';
    else if (type == TYPE_TOGGLE)
        prefix = 'tog_';

    var centralSection = document.getElementById(prefix+buttonFullId);

    if(typeof(centralSection) == 'undefined') return false;

    if(action == ACTION_CLICK)
    {
        centralSection.click();
        return false;
    }
    else if(action == ACTION_OVER)
        centralSection.onmouseover();
    else if(action == ACTION_OUT)
        centralSection.onmouseout();
}


function actBtn(type,action,toolbarFullId,buttonId,buttonFullId,useAlert)
{
    if(type == TYPE_NORMAL && action == ACTION_CLICK)
    {
        if(isToolbarTargetFormPresent(toolbarFullId,buttonId,useAlert))
        {
            if (isToolbarActionEnabledStatus(toolbarFullId, buttonId))
            {
                onToolbarButton(toolbarFullId,buttonId, 0);
            }
        }
        return false;
    }

    else if(type == TYPE_NORMAL && action == ACTION_OVER)
    {
        if (isToolbarActionEnabledStatus(toolbarFullId,buttonId))
            overToolbarButtonImage(buttonFullId);
    }

    else if(type == TYPE_NORMAL && action == ACTION_OUT)
    {
        if (isToolbarActionEnabledStatus(toolbarFullId,buttonId) && !isForceMouseOver(toolbarFullId,buttonId))
            onToolbarButtonImage(buttonFullId);
    }

    else if(type == TYPE_CLASSIC && action == ACTION_CLICK)
    {
        if(isToolbarTargetFormPresent(toolbarFullId,buttonId,useAlert))
        {
            if (isToolbarActionEnabledStatus(toolbarFullId,buttonId))
                onToolbarButtonClassic(toolbarFullId,buttonId, 0);
        }
        return false;
    }

    else if(type == TYPE_PLAIN && action == ACTION_CLICK)
    {
        if(isToolbarTargetFormPresent(toolbarFullId,buttonId,useAlert))
        {
            if (isToolbarActionEnabledStatus(toolbarFullId,buttonId))
                onToolbarButtonPlain(toolbarFullId,buttonId,0);
        }
        return false;
    }
}

function actToggleBtn(action,toolbarId,toolbarFullId,buttonId,buttonFullId)
{
    if(action == ACTION_CLICK)
    {
        if (isToolbarActionEnabledStatus(toolbarFullId,buttonId))
            onToolbarToggle(toolbarFullId,buttonId,getToolbarToggleValue(toolbarId,buttonId));
        return false;
    }

    else if(action == ACTION_OVER)
    {
        if (isToolbarActionEnabledStatus(toolbarFullId,buttonId))
            overToolbarToggleImage(buttonFullId);
    }

    else if(action == ACTION_OUT)
    {
        if (isToolbarActionEnabledStatus(toolbarFullId,buttonId))
            onToolbarToggleImage(buttonFullId);
    }
}

/**
* function to enable or disable the toolbar elements
**/
function enableDisableButton(action, type, toolbarId, buttonId)
{
    var isEnable = action == ACTION_ENABLE;
    var cursorStr = 'hand';
    var enableStr = 'enable';
    if(!isEnable)
    {
        cursorStr = 'default';
        enableStr = 'disable';
    }

    var toolbar = getToolbar(toolbarId);
    var toolbarAction = getToolbarAction(toolbar, buttonId);

    toolbarAction.isEnabled = isEnable;

    if(type == TYPE_CLASSIC)
    {
        var className = document.getElementById("text_" + toolbarAction.fullId).className;

        if (isEnable && className.indexOf("off") >= 0)
            className = className.substring(0,className.indexOf("off"));
        else if(!isEnable && className.indexOf("off") == -1)
            className = className + "off";

        document.getElementById("left_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
        document.getElementById("bg_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
        document.getElementById("text_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
        document.getElementById("right_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;

        document.getElementById("left_" + toolbarAction.fullId).src= eval(toolbarAction.fullId + '_'+enableStr+'_left.src');
        document.getElementById("bg_" + toolbarAction.fullId).className= eval(toolbarAction.fullId + '_'+enableStr+'_bg');
        document.getElementById("text_" + toolbarAction.fullId).className= className;
        document.getElementById("right_" + toolbarAction.fullId).src= eval(toolbarAction.fullId + '_'+enableStr+'_right.src');
    }
    else if(type == TYPE_PLAIN)
    {
        document.getElementById("img_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
        document.getElementById("img_" + toolbarAction.fullId).src= eval(toolbarAction.fullId + '_'+enableStr+'.src');
    }
    else if(type == TYPE_NORMAL || type == TYPE_TOGGLE)
    {
        var isTypeNormal = TYPE_NORMAL == type;
        if (document.images["icon_"+toolbarAction.fullId])
        {
            document.getElementById("icon_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
        }
        else
        {
            // We MUST verify that this image exist (for TYPE_NORMAL) TT - 48843
            if (!isTypeNormal || document.getElementById("left_" + toolbarAction.fullId))
            {
                document.getElementById("left_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
                document.getElementById("span_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
                document.getElementById("right_" + toolbarAction.fullId).parentNode.style.cursor = cursorStr;
            }
        }
        if(isEnable && isTypeNormal)
            onToolbarButtonImage(toolbarAction.fullId);
        else if(isTypeNormal)
            offToolbarButtonImage(toolbarAction.fullId);
        else if (isEnable && !isTypeNormal)
            onToolbarToggleImage(toolbarAction.fullId);
        else
            offToolbarToggleImage(toolbarAction.fullId);
    }
    else if(type == TYPE_SELECTOR)
    {
        document.getElementById(toolbarAction.fullId).disabled = !isEnable;
    }
}


/**
* create the javascript imaged object for Toggle button
**/
function createToggleImg(toggleId, toggleON, toggleOFF, imgON, imgOFF, imgOver, imgToggleON, imgToggleOFF, imgToggleOver, value)
{

    if (document.images)
    {
        eval(toggleId+'_on = new Image();');
        eval(toggleId+'_off = new Image();');
        eval(toggleId+'_over = new Image();');

        eval(toggleOFF+'_on = new Image();');
        eval(toggleOFF+'_off = new Image();');
        eval(toggleOFF+'_over = new Image();');
        eval(toggleOFF+'_on.src = imgON;');
        eval(toggleOFF+'_off.src = imgOFF;');
        eval(toggleOFF+'_over.src = imgOver;');

        eval(toggleON+'_on = new Image();');
        eval(toggleON+'_off = new Image();');
        eval(toggleON+'_over = new Image();');
        eval(toggleON+'_on.src = imgToggleON;');
        eval(toggleON+'_off.src = imgToggleOFF;');
        eval(toggleON+'_over.src = imgToggleOver;');

        eval(toggleId+'_on.src = '+toggleId+value+'_on.src;');
        eval(toggleId+'_off.src = '+toggleId+value+'_off.src;');
        eval(toggleId+'_over.src = '+toggleId+value+'_over.src;');
    }
}

function createPlainImg(buttonFullId, imgOn, imgOff)
{
    if (document.images)
    {
      eval(buttonFullId+'_enable = new Image();');
      eval(buttonFullId+'_disable = new Image();');

      eval(buttonFullId+'_enable.src = imgOn;');
      eval(buttonFullId+'_disable.src = imgOff;');
    }
}

function createNormalButtonImg(buttonFullId,leftImageOn,leftImageOff,leftImageOver)
{
    if (document.images)
    {
      eval(buttonFullId+'_on = new Image();');
      eval(buttonFullId+'_off = new Image();');
      eval(buttonFullId+'_over = new Image();');

      eval(buttonFullId+'_on.src = leftImageOn;');
      eval(buttonFullId+'_off.src = leftImageOff;');
      eval(buttonFullId+'_over.src = leftImageOver;');

    }
}

function initNormalButton(buttonFullId,bgOv,bgOnOff,imgOnOff,imgOv)
{
    initImgButton(buttonFullId,bgOv,bgOnOff,bgOnOff,imgOnOff,imgOnOff,imgOv);
}

function initImgButton(buttonFullId,bgOv,bgOn,bgOff,imgOn,imgOff,imgOv)
{
    document.getElementById("td_"+buttonFullId).ovClass = bgOv;
    document.getElementById("td_"+buttonFullId).onClass = bgOn;
    document.getElementById("td_"+buttonFullId).offClass = bgOff;
    document.getElementById("right_"+buttonFullId).onImgRight = imgOn;
    document.getElementById("right_"+buttonFullId).offImgRight = imgOff;
    document.getElementById("right_"+buttonFullId).overImgRight = imgOv;
}

function createClassicButtonImg(buttonFullId,leftImageOn,rightImageOn,backgroundOn,leftImageOff,rightImageOff,backgroundOff)
{
    if (document.images)
    {
        eval(buttonFullId+'_enable_left = new Image();');
        eval(buttonFullId+'_enable_right = new Image();');
        eval(buttonFullId+'_enable_bg = "";');

        eval(buttonFullId+'_disable_left = new Image();');
        eval(buttonFullId+'_disable_right = new Image();');
        eval(buttonFullId+'_disable_bg = "";');

        eval(buttonFullId+'_enable_left.src = leftImageOn;');
        eval(buttonFullId+'_enable_right.src = rightImageOn;');
        eval(buttonFullId+'_enable_bg = backgroundOn;');

        eval(buttonFullId+'_disable_left.src = leftImageOff;');
        eval(buttonFullId+'_disable_right.src = rightImageOff;');
        eval(buttonFullId+'_disable_bg = backgroundOff;');
    }
}

function createToolbarToggleAction(toolbarId,buttonId,buttonFullId,isEnabled,formTarget,targetForm,toggleModelValue)
{
    createToolbarAction(TYPE_TOGGLE,toolbarId,buttonId,buttonFullId,isEnabled,formTarget,targetForm,null,toggleModelValue)
}

function createToolbarAction(type,toolbarFullId,buttonId,buttonFullId,isEnabled,formTarget,targetForm,isForceMouseOver,toggleModelValue)
{
    var action = getNewToolbarAction();
    action.id = buttonId;
    action.fullId = buttonFullId;
    action.isEnabled = isEnabled;
    if(type == TYPE_TOGGLE)
        action.toggleValue = toggleModelValue;
    action.formTarget = formTarget;
    action.targetForm = targetForm;

    if(type == TYPE_TOGGLE)
    {
        action.enabledFct = enabledToolbarToggle;
        action.disabledFct = disabledToolbarToggle;
    }
    else if(type == TYPE_PLAIN)
    {
        action.enabledFct = enabledToolbarButtonPlain;
        action.disabledFct = disabledToolbarButtonPlain;
    }
    else if(type == TYPE_NORMAL)
    {
        action.enabledFct = enabledToolbarButton;
        action.disabledFct = disabledToolbarButton;
    }

    //TT 69983
    else if(type == TYPE_CLASSIC)
    {
        action.enabledFct = enabledToolbarButtonClassic;
        action.disabledFct = disabledToolbarButtonClassic;
    }
    //TT 70559
    else if(type == TYPE_SELECTOR)
    {
        action.enabledFct = enabledToolbarSelection;
        action.disabledFct = disabledToolbarSelection;
    }

    addToolbarAction(toolbarFullId, action);
}