﻿function Trim(text)
{		
    while(text.value.charAt(0)==' ')
	    text.value=text.value.substring(1,text.value.length )
	    
	while(text.value.charAt(text.value.length-1)==' ')
	    text.value=text.value.substring(0,text.value.length-1)
}

// AO : 17/09/2010
function TrimEmail()
{
    var emailTextbox=document.getElementById("ctl00_userControlTemplate_txtBox_email_lost_password");
    if (emailTextbox)
        Trim(emailTextbox);
}

// AO : 02/04/2010
function DisableShowConfirmationWidgetRemove(checked)
{    
    var action="";
    
    if (checked==true)
        action="disable";
    else
        action="enable";

    var url = AppBasePath + "ESP/AjaxAsyncDesktop.aspx?type=disableConfirmationWidgetRemove&action=" + action + "&Lan=" + languageId + "&rnd=" + randomString("abcdecfhijklmnopqrstuvwxyz", 64);
    var xhr = createXHR();
    xhr.open("GET", url, true);
    xhr.send(null);     
}

// AO : 01/02/2010
function ShowBIATicketError()
{
    var url = AppBasePath + "ESP/AjaxAsyncRecord.aspx?type=logout&Lan=" + languageId + "&rnd=" + randomString("abcdecfhijklmnopqrstuvwxyz", 64);
    var xhr = createXHR();
    xhr.open("GET", url, true);
    xhr.onreadystatechange = function() 
    {            
        if (xhr.readyState == 4 && xhr.status == 200) 
        {
            if (xhr.responseText) 
            {
                response = eval('(' + xhr.responseText + ')');
                if (response != null) 
                {                                        
                    document.getElementById(popinTemplateSpecialId).className='invisible';
                    document.getElementById(codeMessageHiddenFieldId).value = BIATicketErrorMessage;
                    document.getElementById(hdShowPopinOkActionId).value="window.location.href = window.location.pathname;return false;";
                    document.getElementById(hdShowPopinClosingCrossActionId).value="window.location.href = window.location.pathname;return false;";
                    ShowPopinMessage(); 
                }
            }
        }
    };
    
    xhr.send(null); 
} 

function ShowNotificationsWidget()
{    
    WidgetUserExists(notificationWidgetModelCountryId);
}
 
// AO, 23/11/2009
function EmptyCallback()
{      

}

//--------------------------------------------------------------
// DG, 22/12/2009
function ConfirmDeleteUser(name)
{   
    var msg = ConfirmDeleteMessage.replace('{0}', name );
    document.getElementById(popin_ajax_content_Del_User_obj.id).className="invisible";    
    document.getElementById(hdShowPopinTemplateArgumentId).value = msg;
    document.getElementById(hdShowPopinYesActionId).value = "DeleteUserPopin();";
    document.getElementById(hdShowPopinNoActionId).value = "RefreshUserDeletedPopin(); window.location.href = parent.location.href.substr(0, parent.location.href.indexOf('?'));";
    document.getElementById(hdShowPopinYesNoShowDisableMessageCheckboxId).value = "0";
    ShowPopinMessageYesNo();        
}

// DG, 23/12/2009
function RefreshUserDeletedPopin()
{  
    ClosePopinTemplate(false); 
    document.getElementById(popinControlHiddenFieldId).value = "";
    ShowPopinTemplate();    
}

// DG, 22/12/2009
function DeleteUserPopin()
{
    if (popinTemplateSpecialId)
    {
        var popinTemplateSpecial=document.getElementById(popinTemplateSpecialId);
        if (popinTemplateSpecial)
        {
            if (updPopinTemplateContentSpecialId)
            {
                var updPopinTemplateContentSpecial=document.getElementById(updPopinTemplateContentSpecialId);
                if (updPopinTemplateContentSpecial)
                {
                    document.getElementById(popinTemplateSpecialId).className='popin';                                            
                    ClosePopinTemplate(true);
                    GrayFlashHeader();                                                                        
                    setTimeout("DeleteUserPopin_Ok()", 500);                        
                }
            }
        }
    }
}

// DG, 22/12/2009
function DeleteUserPopin_Ok()
{
    GrayFlashHeader();
    ClosePopinTemplate(true); 
    DeleteUserServerAction();
        
    document.getElementById(hdShowPopinYesActionId).value = "";
    document.getElementById(hdShowPopinNoActionId).value = "";            
}

// DG, 24/12/2009
function DeleteUserServerAction() 
{     
    var data = "type=DelUser";
    var url = AppBasePath + "ESP/AjaxAsyncRecord.aspx?" + data + "&Lan=" + languageId + "&rnd=" + randomString("abcdecfhijklmnopqrstuvwxyz", 64);
    var xhr = createXHR();
    xhr.open("GET", url, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            if (xhr.responseText) {
                response = eval('(' + xhr.responseText + ')');
                if (response != null) {
                    if (response.IsDeleted == "OK") 
                    {
                        // Redirection vers la BNA                        
                        DeleteUserRedirectToBNA();
                    }
                }
            }
        }
    };

    xhr.send(null);
}
 
// DG 18/01/2010
function DeleteUserRedirectToBNA() 
{
    var data = 'type=logout';
    var url = AppBasePath + 'ESP/AjaxAsyncRecord.aspx?' + data + '&Lan=' + languageId + '&rnd=' + randomString('abcdecfhijklmnopqrstuvwxyz', 64);
    var xhrWindowLogout = createXHR();    
                                                                                           
    xhrWindowLogout.open("GET", url, true);
    xhrWindowLogout.onreadystatechange = function() {
        if (xhrWindowLogout.readyState == 4 && xhrWindowLogout.status == 200) {

            if (xhrWindowLogout.responseText) 
            {
                response = eval('(' + xhrWindowLogout.responseText + ')');

                if (response != null) 
                {
                    SetSophusTag_JS('DelUser');
                    window.location.href = parent.location.href.substr(0, parent.location.href.indexOf('?')); ;
                }
            }
        }
    };  
        
    xhrWindowLogout.send(null);  
}

function RedirectToBNA() {
    alert("   RedirectToBNA");
    var data = 'type=logout';
    var url = AppBasePath + 'ESP/AjaxAsyncRecord.aspx?' + data + '&Lan=' + languageId + '&rnd=' + randomString('abcdecfhijklmnopqrstuvwxyz', 64);
    var xhrWindowLogout = createXHR();    
                                                                                           
    xhrWindowLogout.open("GET", url, true);   
    xhrWindowLogout.onreadystatechange = function(){ 
        if (xhrWindowLogout.readyState == 4 && xhrWindowLogout.status == 200) 
        {
            if (xhrWindowLogout.responseText) 
            {                                            
                response = eval('(' + xhrWindowLogout.responseText + ')');
                 
                if (response!=null)
                    window.location.reload();
            }
        }};  
        
    xhrWindowLogout.send(null);  
}

// DG 21/06/2010
function ChangeParamIfWebkit()
{
    //  implémenter pour resoudre les problèmes de focus lié 
    // à SAFARI 3 .  Un problème d'incompatibilité de gestion des focus 
    // entre MicrosoftAjax.js et les navigateurs webkit (Chrome, safari ...) 
    try
    {     
        if (navigator.userAgent.indexOf('WebKit/') > -1) 
        {
            Sys.Browser.WebKit = {};  
            Sys.Browser.agent = Sys.Browser.WebKit;  
            Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]); 
            Sys.Browser.name = 'WebKit';  
        } 
     }
     catch(e)
     {
        // Ne rien faire 
     }        
}

// DG 18-01-2010
function preg_replace(array_pattern, array_pattern_replace, my_string)  
{
	var new_string = String (my_string);
	
	for (i=0; i<array_pattern.length; i++) 
	{
		var reg_exp= RegExp(array_pattern[i], "gi");
		var val_to_replace = array_pattern_replace[i];
		new_string = new_string.replace (reg_exp, val_to_replace);
	}
	
	return new_string;
}

// AO, 28/07/2009
function WindowResize() 
{
    var windowHeight = document.documentElement.clientHeight;
    var windowWidth = document.documentElement.clientWidth;
    var iFrame = document.getElementById(iFrameDependantId);
    var footer =document.getElementById("footer");
    var header =document.getElementById("header");

    if (iFrame && footer && header) 
    {
        var footerHeight = footer.clientHeight;
        var headerHeight = header.clientHeight;
        var newIFrameHeight = windowHeight - footerHeight - headerHeight;
        var newIFrameWidth = windowWidth;

        if (newIFrameHeight>0)
            iFrame.style.height = newIFrameHeight + "px";
    }
}  

// AO, 31/07/2009
function tbNewTabName_KeyPress(e)
{
    var keyCode;
    
    if (window.event)
        keyCode = window.event.keyCode;                
    else if (e)
        keyCode = e.which; 
                
    if (keyCode==32 || keyCode==8 || keyCode==0)
        return true;
    else if (keyCode==13) // Si l'utilisateur a pressé la touche "Entrée"
    {
        if (browserIsFirefox && navigator.userAgent.indexOf('Chrome') == -1) //ESPC-780 
            return AddNewTab(cellNewTabTitleId,cellNewTabId);
        else
            return true;
    }        
    else
    {
    	var keychar = String.fromCharCode(keyCode);    	
    	var reg = /['"]+$/; // Caractères interdits
	    	    
	    return (!reg.test(keychar));
	}
}   
            
// AO, 29/07/2009
function tbExistingTabNewName_KeyPress(e)
{
    var keyCode;
    
    if (window.event)
        keyCode = window.event.keyCode;                
    else if (e)
        keyCode = e.which;                                

    if (keyCode==32 || keyCode==8 || keyCode==0)
        return true;
    else if (keyCode==13) // Si l'utilisateur a pressé la touche "Entrée"
    {
        RenameTab();
        return true;    
    }
    else
    {
    	var keychar = String.fromCharCode(keyCode);    	
    	var reg = /['"]+$/; // Caractères interdits
	    	    
	    return (!reg.test(keychar));
    }        
}      

function hideNewOnglet()
{
    var cellNewTabTitle = document.getElementById(cellNewTabTitleId);
    if (cellNewTabTitle)
        cellNewTabTitle.className = "invisible";
    
    var cellNewTab = document.getElementById(cellNewTabId);
    if (cellNewTab)
        cellNewTab.className = "new_onglet";
}

function showNewOnglet() {
    var cellNewTabTitle = document.getElementById(cellNewTabTitleId);
    if (cellNewTabTitle)
    {
        if (cellNewTabTitle.className != "invisible")
            cellNewTabTitle.className = "invisible";
        else
            cellNewTabTitle.className = "add_onglet";
    }
    
    var cellNewTab = document.getElementById(cellNewTabId);
    if (cellNewTab)
    {
        if (cellNewTab.className != "invisible")
            cellNewTab.className = "invisible";
        else
            cellNewTab.className = "new_onglet";                
    }                
}      
 
function LoadLastTab() {                              
    CreateTooltipMaxNbTabReached();
}

function CreateTooltipMaxNbTabReached()
{
    jQuery('#new_onglet_end').tooltip({position:['center', 'right'],tip:'#tooltip_new_onglet_end'});    
}

function trim(myString) {     
    return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
} 

function AddNewTab(cellNewTabTitleId, cellNewTabId) {
    var cellNewTabTitle = document.getElementById(cellNewTabTitleId);
    if (cellNewTabTitle)
    {
        var tabName=trim(cellNewTabTitle.childNodes[0].childNodes[0].value);
        
        if (tabName.length>0)
        {
            var url = AppBasePath + "ESP/AjaxAsyncDesktop.aspx?type=addTab&Lan=" + languageId + "&rnd=" + randomString("abcdecfhijklmnopqrstuvwxyz", 64);
            var params = "tabName=" + tabName;
            
            var xhrAddTab = createXHR();                        
            xhrAddTab.open("POST", url, true);            
            xhrAddTab.onreadystatechange = function() {
                if (xhrAddTab.readyState == 4)
                {
                    if (xhrAddTab.status == 200) 
                    {
                        if (xhrAddTab.responseText)
                        {
                            response = eval('(' + xhrAddTab.responseText + ')');
                            
                            if (response.newTabId)
                            {
                                iActiveTabId=response.newTabId;
                                iActiveTabName = response.newTabName;
                                iActiveTabIndexFromDB = response.activeTabIndexFromDB;
                                document.getElementById(bthdActiveTabIdId).value=response.newTabId;
 
                                RefreshTabsList(1);                                                                            
                            }
                            else
                            {
                                hideNewOnglet();
                                document.getElementById(hdIsEditingNewTabNameId).value=false;
                                document.getElementById(popinControlHiddenFieldId).value = "ucMessage";
                                document.getElementById(codeMessageHiddenFieldId).value = maxNbTabsReached;                                   
                                
                                document.getElementById(hdShowPopinOkActionId).value="RefreshTabsList(1);";
                                document.getElementById(hdShowPopinClosingCrossActionId).value="RefreshTabsList(1);ClosePopinTemplate();";
                                                                
                                ShowPopinTemplate();
                            }
                        }
                    }
                    else
                    {
                        hideNewOnglet();
                        document.getElementById(hdIsEditingNewTabNameId).value=false;
                        document.getElementById(popinControlHiddenFieldId).value = "ucMessage";
                        document.getElementById(codeMessageHiddenFieldId).value = tabAddError;
                        ShowPopinTemplate();                                           
                    }
                }};
            
            xhrAddTab.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
            xhrAddTab.send(params);
        }
        else
        {
            document.getElementById(hdIsEditingNewTabNameId).value=true;
            document.getElementById(popinControlHiddenFieldId).value = "ucMessage";
            document.getElementById(codeMessageHiddenFieldId).value = tabEmptyMessage;
            ShowPopinTemplate();
        }
    }

    //On doit toujours renvoyer false pour éviter le postback dans le formulaire appelant. De toute facon avec ajax, on envoie le resultat sans le connaitre^^
    return false;
}

function showOptionsWithDelay(iClickedTabIndex, isOngletAccueil) {
    var func = "showOptions(" + iClickedTabIndex + "," + isOngletAccueil + ")";
    setTimeout(func, 100);
}

function ChangeTabHeadersStyleWithDelay(iClickedTabIndex, useDBIndex) {
    var func = "ChangeTabHeadersStyle(" + iClickedTabIndex + "," + useDBIndex + ")";
    setTimeout(func, 1500);
}

function ChangeTabHeadersStyle(iClickedTabIndex, useDBIndex) {
    var parentTable = document.getElementById(tableOngletId);
    var parentCell;
    var nbCells = parentTable.rows[1].cells.length;

    // On part à 1 car la cellule 0 est une cellule spéciale
    for (index = 1; index <= nbCells; index++) 
    {
        parentCell = parentTable.rows[1].cells[index];

        if (parentCell != null && parentCell.id.indexOf("add_onglet")<0 && parentCell.id.indexOf("new_onglet")<0)
        {
            parentCell.className = "add_onglet";
            
            if (parentCell.childNodes.length>=3)
            {
                parentCell.childNodes[0].className = "";
                parentCell.childNodes[1].className = "invisible";
                parentCell.childNodes[2].className = "invisible";
            }
        }
    }

    if (useDBIndex) // Nb : "useDBIndex" est devenu obsolet car l'index en base est désormais égal à l'index tout court
        parentCell = document.getElementById(cellPrefixFull + iClickedTabIndex);
    else
        parentCell = parentTable.rows[1].cells[iClickedTabIndex];

    if (parentCell != null)
    {
        if (parentCell.id.indexOf("add_onglet")<0 && parentCell.id.indexOf("new_onglet")<0)
            parentCell.className = "on add_onglet";
        
        // AO, 09/02/2010
        var bt_fleche = getElementsByClassName("bt_fleche", parentCell)[0];        
        if (bt_fleche)
            bt_fleche.style.display="";
    }
}

function CascadeWidgets()
{
    document.getElementById(iFrameDependantId).contentWindow.CascadeWidgets();
}

function RemoveTab() {
    ClosePopinTemplate(true);
    
    // Enregistrement de la suppression de l'onglet
    var data = "type=removeTab&tabId=" + iActiveTabId + "&Lan=" + languageId;
    var url = AppBasePath + "ESP/AjaxAsyncDesktop.aspx?" + data + "&rnd=" + randomString("abcdecfhijklmnopqrstuvwxyz", 64);
    var xhrRemoveTab = createXHR();
    xhrRemoveTab.open("GET", url, true);
    xhrRemoveTab.onreadystatechange = function() {
        if (xhrRemoveTab.readyState == 4) 
        {
            if (xhrRemoveTab.status == 200) 
            {                
                SetSophusTag_JS('RemoveTab');
                
                var response = eval('(' + xhrRemoveTab.responseText + ')');
                
                iActiveTabId=response.lastDeskId;
                iActiveTabName=response.lastDeskTitle;
                iActiveTabIndexFromDB=response.lastDeskIndexInDB;
                
                RefreshTabsList(1);
            }
            else 
            {
                document.getElementById(hdIsEditingNewTabNameId).value = false;
                document.getElementById(popinControlHiddenFieldId).value = "ucMessage";
                document.getElementById(codeMessageHiddenFieldId).value = tabRemoveError;
                ShowPopinTemplate();
                returnValue = false;
            }
        }
    };
    
    xhrRemoveTab.send(null);                   
}    

function SelectTab() {
    setTimeout(SelectTab2, 100);
}

function SelectTab2() { 
    ChangeTabHeadersStyle(iActiveTabIndexFromDB, 0);
}

// Utilisé pour afficher les popin contenant un iframe
function ShowPopinIframe(params) { 
    hideOptions();
    document.getElementById("iFramePopin").src = AppBasePath + "ESP/ControlLoad.aspx?" + params;
    document.getElementById(popinIFrameId).className = "popin";
}

// Utilisé pour afficher les popin "normaux" créés dynamiquement avec un UserControl
function ShowPopinTemplate() {
    $('#popinBkgTemplate').css('z-index', '10');
    document.getElementById(btShowPopinTemplateId).click();
}

// Utilisé pour afficher les popin "spéciaux" (avec barre en haut à gauche) créés dynamiquement avec un UserControl
// Partie 1 : appelée avant le postback
function ShowPopinTemplateSpecial(parametres) 
{
    if (typeof(parametres)!="undefined")
    {
        var top;
        var arguments = parametres.split(';');
        if (arguments[0] != undefined && arguments[0] != null)
            top = arguments[0];
        else
            top = arguments;
            
        var popin = document.getElementById(popinTemplateSpecialId);
        if (popin)
            popin.style.top=(top)?top+"px":0;
    }
    
    document.getElementById(btShowPopinTemplateSpecialId).click();
}

// Utilisé pour afficher les popin "spéciaux" (avec barre en haut à gauche) créés dynamiquement avec un UserControl
// Partie 2 : appelée après le postback
function ShowPopinTemplateSpecialAfterPostBack() 
{
    hideOptions();
    GrayFlashHeader();
    var ptemplateSpec = document.getElementById(popinTemplateSpecialId);
    if (ptemplateSpec)
    {
        ptemplateSpec.className = "popin";        
        ReloadChildIFrames(ptemplateSpec);
    }
}

// Utilisé pour afficher les popin classiques (sans barre en haut à gauche) créés dynamiquement avec un UserControl
// Partie 2 : appelée après le postback
function ShowPopinTemplateAfterPostBack() 
{
    hideOptions();
    GrayFlashHeader();
    var ptemplat = document.getElementById(popinTemplateId);
    if (ptemplat)
    {
        ptemplat.className = "popin";        
        ReloadChildIFrames(ptemplat);
    }
}

// AO, 03/01/2011
function ReloadChildIFrames(item)
{
    var childIFrames=item.getElementsByTagName("iframe");
    if (childIFrames)
    {
        for (i=0; i<childIFrames.length; i++)
        {                        
            childIFrames[i].src=childIFrames[i].src;
        }
    }
}

// Utilisé pour fermer le popin contenant un iframe
function ClosePopinIframe() 
{
    if (!PopinIsDisplayed())
        return;
        
    document.getElementById(popinIFrameId).className = "invisible";    
}

// Utilisé pour fermer les popin en durs dans la page
function ClosePopin(popinId)
{
    if (!PopinIsDisplayed())
        return;    
    
    var obj;
    
    if (typeof(popinId)!="undefined")
        obj=this;
    else if (typeof(parent.popinId)!="undefined")
        obj=parent;      
    
    var popin = obj.document.getElementById(obj.popinId);

    if (popin) 
        popin.className = "invisible";
}

// Utilisé pour fermer les popin "normaux" créés dynamiquement avec un UserControl
function ClosePopinTemplate(unGrayFlashHeader) 
{
    if (!PopinIsDisplayed())
        return;    
        
    var obj;
        
    if (typeof(popinTemplateId)!="undefined")
        obj=this;
    else if (typeof(parent.popinTemplateId)!="undefined")
        obj=parent;          

    obj.document.getElementById(obj.popinTemplateId).className = "invisible";    
}

// Utilisé pour fermer les popin "spéciaux" (avec barre en haut à gauche) créés dynamiquement avec un UserControl
function ClosePopinTemplateSpecial(reloadWidgetsContent) {
    $('#overlayCreateAccountContent').removeClass().addClass('popin invisible');
    if ($('#overlayMessage').css('display') == 'block')
    {
        HidePopinTemplate();
    }
    else
    {
        if (!PopinIsDisplayed())
            return;

        var obj;

        if (typeof (popinTemplateSpecialId) != "undefined")
            obj = this;
        else if (typeof (parent.popinTemplateSpecialId) != "undefined")
            obj = parent;

        obj.document.getElementById(obj.popinTemplateSpecialId).className = "invisible";
    }
}      

// Mise à jour de la liste des onglets de l'utilisateur connecté
function RefreshTabsList(loadLastTab) 
{
    document.getElementById(btUpdateTabsId).click();        
    document.getElementById(iFrameDependantId).src = AppBasePath + "ESP/Widget.aspx?Lan=" + languageId + "&linguisticVersionId=" + linguisticVersionId + "&tabIndex=" + iActiveTabIndexFromDB + "&tabID=" + iActiveTabId + "&rnd=" + randomString('abcdecfhijklmnopqrstuvwxyz', 64);
}

function hideOptions() 
{
    var options = document.getElementById(divOptionsId);
    if (options)
        if (options.style.display!="none")
            options.style.display = "none";
}  

function showOptions(iClickedTabIndex, isOngletAccueil) 
{                                
    var options = document.getElementById(divOptionsId);
    var parentCell = document.getElementById(cellPrefixFull + iClickedTabIndex);
    var posLeft = 0;
    var index = 0;
    var optionChildNode;
    var childNodesIndex;
    var currentLiItemIndex = 0;
                        
    for (index = 0; index < iClickedTabIndex; index++) 
    {
        if (document.getElementById(cellPrefixFull + index))
            posLeft += eval(document.getElementById(cellPrefixFull + index).clientWidth);
    }
    
    var iWidth = (document.getElementById(cellPrefixFull + index).clientWidth>=67)?document.getElementById(cellPrefixFull + index).clientWidth:66;
                    
    options.style.border = "none";
    options.style.position = "relative";
    options.style.top = "18px";
    options.style.left = posLeft + "px";
                    
    isOngletAccueil = Boolean(isOngletAccueil);                                                
    
    if (browserIsFirefox)
        childNodesIndex=1;
    else
        childNodesIndex=0;
                  
    optionChildNode = options.childNodes[childNodesIndex];
    
    var nbLiItems = optionChildNode.getElementsByTagName("LI").length;                
    
    // Si c'est l'onglet "Accueil", on masque tous les choix du menu déroulant sauf "Personnaliser", sinon on affiche tous les choix
    for (j=0; j<optionChildNode.childNodes.length; j++)
    {                                                                            
        if (optionChildNode.childNodes[j].nodeName=="LI")
        {
            currentLiItemIndex++;                        
            
            if (isOngletAccueil) // Onglet "Accueil"
            {
                optionChildNode.childNodes[j].style.display = (optionChildNode.childNodes[j].id!=liPersonnaliserId)?"none":"block";                                                                                                                
                optionChildNode.childNodes[j].className = (optionChildNode.childNodes[j].id!=liPersonnaliserId)?"":"last";                                                                                                                                                            
            }
            else                 // Autre onglet
            {   
                optionChildNode.childNodes[j].style.display = "block";
                optionChildNode.childNodes[j].className = (currentLiItemIndex!=nbLiItems)?"":"last";                                                                     
            }
            
            // Masquage ou affichage du contrôle enfant de type lien hypertexte (balise "<A>")
            optionChildNode.childNodes[j].getElementsByTagName("a")[0].style.display = optionChildNode.childNodes[j].style.display;
        }                                                                   
    }                                                               
    
    if (optionChildNode.style)
        optionChildNode.style.width = options.style.width;
    
    options.style.display = "block";
}

function ToggleOptionsWithDelay(iClickedTabIndex, tabName, tabId, isOngletAccueil) 
{                
    var func = "";             
                             
    if (iActiveTabIndexFromDB != iClickedTabIndex) 
        return;
    else 
    {
        tblTabs = document.getElementById(tableOngletId);
        var cell = tblTabs.rows[1].cells[iActiveTabIndexFromDB+1];                                        
        
        if (cell)
        {
            if (cell.childNodes.length>=3)
            {
                if (cell.childNodes[0].className == "invisible")
                    return; // On affiche pas le menu contextuel si l'onglet est en cours de renommage
            }
        }
                           
        iActiveTabName = tabName;
        iActiveTabId = tabId;
        document.getElementById(bthdActiveTabIdId).value = iActiveTabId;
        iActiveTabIndexFromDB = iClickedTabIndex;
        
        ToggleOptions(iClickedTabIndex, isOngletAccueil);
    }
}

function ToggleOptions(iClickedTabIndex, isOngletAccueil) 
{            
    var options = document.getElementById(divOptionsId);

    // On n'affiche pas le menu contextuel si on est en mode renommage d'un onglet
    var tblTabs = document.getElementById(tableOngletId);                                
    var tabCells = tblTabs.rows[1].cells;
    var cell;
    
    // On part à 1 car la cellule 0 est une cellule spéciale
    for (var i=1; i<tabCells.length; i++)
    {
        if (tabCells[i].iActiveTabIndexFromDB==iActiveTabIndexFromDB)
        {
            cell = tabCells[i];                       
            break;
        }
    }
    
    if (cell)
    {
        if (cell.childNodes.length>=3)
        {
            if (cell.childNodes[0].className == "invisible")
                return;
        }                        
    }                
                    
    if (options.style.display == "none")
        showOptions(iClickedTabIndex, isOngletAccueil)
    else
        hideOptions();
}

function NewTabTitleToggle(txtNewTabTitle, actionType)
{                                
    if (txtNewTabTitle)
    {                
        if (actionType=="focus")
        {
            if (txtNewTabTitle.value==labelNewTab)
                txtNewTabTitle.value="";
        }
        else if (actionType=="blur")
        {
            if (txtNewTabTitle.value=="")
                txtNewTabTitle.value=labelNewTab;
        }                    
    }
}
                                  
// AO, 29/07/2009
function ResetTabMode()
{
    tblTabs = document.getElementById(tableOngletId);
    var cell = tblTabs.rows[1].cells[iActiveTabIndexFromDB+1];                                        
    
    if (cell)
    {
        if (cell.childNodes.length>=3)
        {                
            cell.childNodes[0].className = "";
            cell.childNodes[1].className = "invisible";
            cell.childNodes[2].className = "invisible";            
        }
    }
}  

// AO, 29/07/2009
function RenameTab()
{
    var returnValue=true;
    
    if (iActiveTabIndexFromDB>=0)
    {                    
        var tblTabs = document.getElementById(tableOngletId);
        var cell;
        
        // On part à 1 car la cellule 0 est une cellule spéciale
        for (var i=1; i<tblTabs.rows[1].cells.length; i++)
        {
            if (tblTabs.rows[1].cells[i].attributes.iActiveTabIndexFromDB.value==iActiveTabIndexFromDB)
            {
                cell = tblTabs.rows[1].cells[i];                       
                break;
            }
        }
                
        if (cell)
        {
            if (cell.childNodes.length>=3)
            {
                var textBoxNewTabName = cell.childNodes[1];
                var newTabName = trim(textBoxNewTabName.value);                                                
                
                // Enregistrement du nouveau nom de l'onglet que si il a changé et si le nouveau nom n'est pas vide
                if (newTabName.length>0)
                {
                    if ((newTabName.toLowerCase()!=iActiveTabName.toLowerCase()))
                    {                        
                        var url="";
                        var method="";
                        var xhrChangeTabName = createXHR();                                                
                        var params=null;
                        var data=null;
                                                
                        url = AppBasePath + "ESP/AjaxAsyncDesktop.aspx?type=editTabName&tabName=" + newTabName + "&Lan=" + languageId+ "&rnd=" + randomString("abcdecfhijklmnopqrstuvwxyz", 64)
                                                
                        if (browserIsFirefox)
                        {
                            data = "&tabid=" + iActiveTabId;
                            url+=data;                            
                            method="GET";                            
                        }
                        else
                        {
                            params="tabid=" + iActiveTabId + "&tabName=" + newTabName;
                            method="POST";                            
                        }                                                                           
                                                                        
                        xhrChangeTabName.open(method, url, true);                        
                        xhrChangeTabName.onreadystatechange = function() 
                        {                                        
                            if (xhrChangeTabName.readyState == 4 && xhrChangeTabName.status == 200) 
                            {
                                if (xhrChangeTabName.responseText) 
                                {
                                    response = eval('(' + xhrChangeTabName.responseText + ')');
                                    
                                    document.getElementById(hdExistingTabNameEditedId).value="";
                                    document.getElementById(hdIsEditingExistingTabNameId).value=false;
                                    
                                    if (response != null) 
                                    {
                                        setTimeout("CreateTooltipMaxNbTabReached()", 500);
                                        
                                        if (!browserIsFirefox)
                                            RefreshTabsList();
                                    }
                                }
                            }
                        };
                        
                        if (!browserIsFirefox)
                            xhrChangeTabName.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
                            
                        xhrChangeTabName.send(params);                                                
                    }
                    else // Si le nouveau nom est identique à l'ancien
                    {                        
                        returnValue=false;                        
                        ResetTabMode();
                    }
                }
                else
                {
                    document.getElementById(hdIsEditingExistingTabNameId).value=true;
                    document.getElementById(hdExistingTabNameEditedId).value=iActiveTabId;                    
                    document.getElementById(popinControlHiddenFieldId).value = "ucMessage";
                    document.getElementById(codeMessageHiddenFieldId).value = tabEmptyMessage;
                    ShowPopinTemplate();
                    returnValue=false;
                }
            }                        
        }
    }
    
    return returnValue;
}    

// AO, 29/07/2009
function ShowRenameTextbox()
{
    if (iActiveTabIndexFromDB>=0)
    {
        tblTabs = document.getElementById(tableOngletId);
        
        var cell;
        var tabCells = tblTabs.rows[1].cells;
        
        // On part à 1 car la cellule 0 est une cellule spéciale
        for (var i=1; i<tabCells.length; i++)
        {
            if (tabCells[i].attributes.iActiveTabIndexFromDB.value==iActiveTabIndexFromDB)
            {
                cell = tabCells[i];                       
                break;
            }
        }
        
        if (cell)
        {
            if (cell.childNodes.length>=3)
            {
                cell.childNodes[0].className = "invisible";
                cell.childNodes[1].className = "input_text";
                cell.childNodes[1].value = trim((browserIsFirefox)?cell.childNodes[0].text:cell.childNodes[0].innerText);
                cell.childNodes[1].style.width = (cell.childNodes[1].value.length*5) + "px";
                cell.childNodes[2].className = "input_submit";
            }                        
        }
    }
}  

function ShowRemoveTabConfirm()  
{                                
    document.getElementById(hdShowPopinTemplateArgumentId).value = removeTabConfirmMessage.replace('{0}', unescape(iActiveTabName)) + ' ?';
    document.getElementById(hdShowPopinYesActionId).value = "RemoveTab()";  
    document.getElementById(hdShowPopinNoActionId).value="";
    document.getElementById(hdShowPopinYesNoShowDisableMessageCheckboxId).value = "0";
    ShowPopinMessageYesNo();
}

function GenerateRandomString(string_length)
{
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var randomstring;

    for (var i = 0; i < string_length; i++) 
    {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum, rnum + 1);
    }
    
    return randomstring;
}

// Rafraichissement de la liste des widgets
function RefreshWidgets(iClickedTabIndex, tabName, tabID) 
{
    var randomstring = GenerateRandomString(64);
 
    document.getElementById(iFrameDependantId).src = AppBasePath + "ESP/Widget.aspx?Lan=" + languageId + "&linguisticVersionId=" + linguisticVersionId + "&tabIndex=" + iClickedTabIndex + "&tabID=" + tabID + "&rnd=" + randomstring;
}   

function GetTabNameFromId(tabId)
{
    var tabName = "";
    
    var parentTable = document.getElementById(tableOngletId);
    var parentCell;

    var nbCells = parentTable.rows[1].cells.length;

    // On part à 1 car la cellule 0 est une cellule spéciale
    for (index = 1; index <= nbCells; index++) 
    {
        parentCell = parentTable.rows[1].cells[index];

        if (parentCell)
        {
            if (parentCell.getAttribute("iActiveTabId")==tabId)
            {
               tabName = parentCell.getAttribute("iActiveTabName");
               break;
            }
        } 
    }    
        
    return tabName;
}

function GetTabIndexFromDBFromId(tabId)
{
    var tabIndexFromDB = -1;
    
    var parentTable = document.getElementById(tableOngletId);
    var parentCell;

    var nbCells = parentTable.rows[1].cells.length;

    // On part à 1 car la cellule 0 est une cellule spéciale
    for (index = 1; index <= nbCells; index++) 
    {
        parentCell = parentTable.rows[1].cells[index];

        if (parentCell)
        {
            if (parentCell.getAttribute("iActiveTabId")==tabId)
            {
               tabIndexFromDB = parentCell.getAttribute("iActiveTabIndexFromDB");
               break;
            }
        } 
    }    
        
    return tabIndexFromDB;
}

function GetTabIndexFromId(tabId)
{
    var tabIndex = -1;
    
    var parentTable = document.getElementById(tableOngletId);
    var parentCell;

    var nbCells = parentTable.rows[1].cells.length;

    // On part à 1 car la cellule 0 est une cellule spéciale
    for (index = 1; index <= nbCells; index++) 
    {
        parentCell = parentTable.rows[1].cells[index];

        if (parentCell)
        {
            if (parentCell.getAttribute("iActiveTabId")==tabId)
            {
               tabIndex =index;
               break;
            }
        } 
    }    
        
    return tabIndex;
}

function ChangeTab(iClickedTabIndex, tabName, tabId, useDBIndex, isOngletAccueil)
{             
    TabIsLoading = true;
    
    // Si on a cliqué sur un autre onglet que l'onglet actif
    if (iActiveTabIndexFromDB != iClickedTabIndex) 
    {
        hideOptions();        
        
        // On cache les widgets existant pour éviter un effet de clignotement
        var iFrame  = document.getElementById(iFrameDependantId).contentWindow;
        var manager = iFrame.GetRadWindowManager();    
        if (manager) 
        {                        
            var windows = manager.get_windows();                                            
            var oWnd;
            var windowId;
            for (i = 0; i < windows.length; i++) 
            {
                oWnd = windows[i];
                oWnd.SetVisible(false);
            }
        }
        
        iActiveTabName = tabName;
        iActiveTabId = tabId;
        iActiveTabIndexFromDB = iClickedTabIndex;
        
        document.getElementById(bthdActiveTabIdId).value = iActiveTabId;                    

        RefreshWidgets(iClickedTabIndex, tabName, tabId);
        
        ChangeTabHeadersStyle(iClickedTabIndex, useDBIndex);
    }
    else // Si on a cliqué sur l'onglet actif, on affiche ou masque le menu de l'onglet
    {
        if (userId!=undefined && userId!="" && userId!=GuidEmpty)
            ToggleOptionsWithDelay(iClickedTabIndex, tabName, tabId, isOngletAccueil);                    
    }                        
}

/*================================= FONCTIONS DU WIDGET MON PROFIL =====================================*/
// AO, 14/12/2009
function ReloadMyProfileWidget() 
{
    var iFrame  = document.getElementById(iFrameDependantId).contentWindow;    
    var manager = iFrame.GetRadWindowManager();
    
    if (manager) 
    {                        
        var windows = manager.get_windows();                                            
        var oWnd;
        var windowId;
        
        for (i = 0; i < windows.length; i++) 
        { 
            // try catch est nécessaire car certains widgets conteneurs font appel à des domaines externes. 
            // DG 07/06/2010 
            try
            {        
                oWnd = windows[i];
                var buttonRefreshMyProfileWidget = oWnd.GetContentFrame().contentWindow.document.getElementById("btnRefreshMyProfileWidget");
                
                if (buttonRefreshMyProfileWidget) 
                {                
                    var contentWind = oWnd.get_contentFrame().contentWindow;                
                    var activeTab = contentWind.document.getElementById(contentWind.hdActiveTabId).value;
                    if (activeTab>0)          
                    {
                        var userControl = contentWind.document.getElementById(contentWind.hdUserControlId).value;
                        var widgetId = contentWind.document.getElementById(contentWind.hdWidgetIdId).value;
                        var widgetCountryId = contentWind.document.getElementById(contentWind.hdWidgetCountryIdId).value;
                                            
                        var src=AppBasePath+"ESP/WidgetLoad.aspx?reload=1&id=" + userControl + "&widgetid=" + widgetId + "&widgetcountryid=" + widgetCountryId + "&lan=" + LanguageId + "&activetab=" + activeTab + "&rnd=" + randomString('abcdecfhijklmnopqrstuvwxyz', 64);
                        
                        oWnd.get_contentFrame().src=src;
                    }
                        
                    break;
                }            
            }
	        catch(e)
	        {
	        }  
        }
    }
}

/*======================================================================================================*/
/*================================= FONCTIONS DE RECHARGMENENT D'UN WIDGET =============================*/
// DJ, 19/07/2010
function ReloadWidget(buttonId) 
{
    var iFrame = document.getElementById(iFrameDependantId).contentWindow;
    var manager = iFrame.GetRadWindowManager();

    if (manager) 
    {
        var windows = manager.get_windows();
        var oWnd;
        var windowId;

        for (i = 0; i < windows.length; i++) 
        {
            // try catch est nécessaire car certains widgets conteneurs font appel à des domaines externes.
            try 
            {
                oWnd = windows[i];
                var buttonRefresh = oWnd.GetContentFrame().contentWindow.document.getElementById(buttonId);

                if (buttonRefresh) 
                {
                    var contentWind = oWnd.get_contentFrame().contentWindow;
                    var activeTab = contentWind.document.getElementById(contentWind.hdActiveTabId);
                    var userControl = contentWind.document.getElementById(contentWind.hdUserControlId).value;
                    var widgetId = contentWind.document.getElementById(contentWind.hdWidgetIdId).value;
                    var widgetCountryId = contentWind.document.getElementById(contentWind.hdWidgetCountryIdId).value;
                    var src;
                    
                    if (activeTab)
                    {
                        if (activeTab.value > 0)
                            src = AppBasePath + "ESP/WidgetLoad.aspx?reload=1&id=" + userControl + "&widgetid=" + widgetId + "&widgetcountryid=" + widgetCountryId + "&lan=" + LanguageId + "&activetab=" + activeTab.value + "&rnd=" + randomString('abcdecfhijklmnopqrstuvwxyz', 64);                            
                    }
                    else 
                        src = AppBasePath + "ESP/WidgetLoad.aspx?reload=1&id=" + userControl + "&widgetid=" + widgetId + "&widgetcountryid=" + widgetCountryId + "&lan=" + LanguageId + "&rnd=" + randomString('abcdecfhijklmnopqrstuvwxyz', 64);                    
                    
                    oWnd.get_contentFrame().src = src;
                    break;
                }
            }
            catch (e) 
            {
            }
        }
    }
}

/*======================================================================================================*/
/*================================= FONCTIONS DU WIDGET ED  ===========================================*/
function ReloadCEVWidget() 
{
    ReloadWidget("btnRefreshCEVWidget");
}

/*================================= FONCTIONS DU WIDGET ED  ===========================================*/
function ReloadEDWidget() 
{
    ReloadWidget("btnRefreshEDWidget");
}
/*======================================================================================================*/

/*================================= FONCTIONS DU WIDGET POINTS DE VENTE =====================================*/
// AO, 14/12/2009
function ReloadPdvWidget()
{
    var iFrame  = document.getElementById(iFrameDependantId).contentWindow;
    var manager = iFrame.GetRadWindowManager();
    
    if (manager) 
    {                        
        var windows = manager.get_windows();                                            
        var oWnd;
        var windowId;
        
        for (i = 0; i < windows.length; i++) 
        {
            // try catch est nécessaire car certains widgets conteneurs font appel à des domaines externes.
            // DG 07/06/2010 
            try
            {       
                oWnd = windows[i];
                var buttonRefreshPdvWidget = oWnd.GetContentFrame().contentWindow.document.getElementById('ifPDV').contentWindow.document.getElementById("btnRefreshPdvWidget");                
                if (buttonRefreshPdvWidget) 
                {                    
                    oWnd.reload();                        
                    break;
                }
        	}
            catch(e)
            {
            }
        }
    }
}
/*===========================================================================================================*/

/*================================= FONCTIONS DU TABLEAU DE BORD =====================================*/
// appelé par cev/ed
function ReloadDashBoard() 
{                    
    var iFrame  = document.getElementById(iFrameDependantId).contentWindow;
    var manager = iFrame.GetRadWindowManager();
    
    if (manager) 
    {                        
        var windows = manager.get_windows();                                            
        var oWnd;
        var windowId;
        
        for (i = 0; i < windows.length; i++) 
        {                
            try
            {
                oWnd = windows[i];                
                var buttonRefresh = oWnd.GetContentFrame().contentWindow.document.getElementById('ifrTdB').contentWindow.document.getElementById("btnRefreshTdbWidget");
                if (buttonRefresh) 
                {
                    oWnd.reload();
                    break;
                }
                
            }
	        catch(e)
	        {
	        }
        }
    }
}


// Cette fonction est appelée depuis un popin de confirmation 
// lui même appelé depuis la suppression d'une configuration 
// de widget configuration
function DeleteConfiguration() 
{
    var iFrame = document.getElementById(iFrameDependantId).contentWindow;
    var manager = iFrame.GetRadWindowManager();
    if (manager) 
    {
        var windows = manager.get_windows();
        var oWnd;
        var windowId;
        
        for (i = 0; i < windows.length; i++) 
        {
            // try catch est nécessaire car certains widgets conteneurs font appel à des domaines externes. 
            try
            {  
                oWnd = windows[i];                            
                var btnSuppress = oWnd.GetContentFrame().contentWindow.document.getElementById("btndeleteConfig");
                
                if (btnSuppress) 
                {
                    if (browserIsFirefox) 
                        btnSuppress.onclick();
                    else
                        btnSuppress.click();

                    break;
                }
	        }
	        catch(e)
	        {
	        }
        }
    }
}

function InviteAmiSetErrorStyles(txtBox) 
{
    if (txtBox && txtBox._styles) 
    {
        txtBox._styles.HoveredStyle[1] = "riTextBox riHover erreur";
        txtBox._styles.FocusedStyle[1] = "riTextBox riFocused erreur";
        txtBox._styles.InvalidStyle[1] = "riTextBox riError erreur";
        txtBox._styles.DisabledStyle[1] = "riTextBox riDisabled erreur";
        txtBox._styles.EnabledStyle[1] = "riTextBox riEnabled erreur";
        txtBox._styles.EmptyMessageStyle[1] = "riTextBox riEmpty erreur";
        txtBox._styles.ReadOnlyStyle[1] = "riTextBox riRead erreur";
    }
}    

function InviteAmiSetError(elt, theParent) 
{
    var tbEmail = $find(elt, theParent);
    if (tbEmail)
        SetErrorStyles(tbEmail);

    var tbEmail_HiddenTextbox = document.getElementById(elt+"_text");
    if (tbEmail_HiddenTextbox) {
        tbEmail_HiddenTextbox.className = "riTextBox";

        if (tbEmail_HiddenTextbox.value.lastIndexOf('*') == (tbEmail_HiddenTextbox.value.length-1))
            tbEmail_HiddenTextbox.className += " riDisabled";
        else
            tbEmail_HiddenTextbox.className += " riEnabled";

        tbEmail_HiddenTextbox.className += " erreur";
    }
}                               
/*================================= FIN FONCTIONS DU TABLEAU DE BORD =====================================*/

/*================================= FONCTIONS DE L'OVERLAY MENTIONS LEGALES  =====================================*/
function ShowMentions() 
{
    jQuery('#scrollBarML').width("630px");
    jQuery('#scrollBarML').height("400px");
    jQuery('#scrollBarML').jScrollPane({ scrollbarWidth: 7, dragMaxHeight: 20 });
}
/*================================= FIN FONCTIONS DE L'OVERLAY MENTIONS LEGALES ==================================*/

function SetSophusTag_JS(Tag) 
{
    var ifSophus = document.getElementById("ifSophus");
    if (ifSophus) 
    {
        ifSophus.src = siteURL + 'ESP/Sophus.aspx?idAct=' + Tag + '&Lan=' + languageId;
    }
}

function setSophusTagCreateAccount() 
{
    SetSophusTag_JS('RegistrationCheck');
}

/*=======================================================GH - AMELIORATION DES PERFORMANCES DES OVERLAYS=======================================================*/
function ShowPopinTemplate2(parameters)
{
    var data = '';

    $('#' + popinTemplateId).removeClass().addClass('visible');
    $('#' + popinTemplateId).css('top', '0');
    $('#popinBkgTemplate').css('z-index', '9999');

    if (typeof (parameters) != 'undefined')
    {
        for (param in parameters) {
            data += '&' + param + '=' + encodeURIComponent(parameters[param]);
        }
    }
    var controlToLoad = $('#' + popinControlHiddenFieldId).attr('value');

    $('#overlayMessage').load(AppBasePath + 'ESP/GetPopin.aspx?userControlId=' + encodeURIComponent(controlToLoad) + data);
    $('#overlayMessage').removeClass().addClass('visible popin');
    $('#overlayMessage').css('z-index', '99999');
}

function ShowPopinEditAccount() {
    $('#popinBkgTemplate').css('z-index', '9999');

    hideOptions();
    GrayFlashHeader();
    $('#ifrAccount').attr('src', AppBasePath + 'ESP/html/overlay_profil/index.html');
    $('#overlayEditAccountPopin').removeClass().addClass('popin visible');
    $('#overlayEditAccountPopin').css('z-index', '99999');
}

function ShowPopinCreateAccount() {
    $('#popinBkgTemplate').css('z-index', '9999');

    hideOptions();
    GrayFlashHeader();
    $('#iFrameCreateAccount').attr('src', AppBasePath + 'ESP/html/inscription/index.html');
    $('#overlayCreateAccountContent').removeClass().addClass('popin visible');
    $('#overlayCreateAccountContent').css('z-index', '99999');
}

function ClosePopinAccount() {
    $('#overlayEditAccountPopin').removeClass().addClass('popin invisible');
}

function HidePopinTemplate()
{
    if (document.getElementById('iFrameInviteFriend'))
    {
        document.getElementById('iFrameInviteFriend').src = '';
    }

    $('#overlayMessage').removeClass().addClass('invisible popin');
    $('#' + popinTemplateId).removeClass().addClass('invisible');
    $('#overlayMessage').empty();
}
