function displayMainLoading() {
    if ($('mainLoading')) $('mainLoading').style.display = 'block';
}
function hideMainLoading() {
    if ($('mainLoading')) $('mainLoading').style.display = 'none';
}

function toggleBlindDivDown (divId, buttonId) {
  if ($(divId)) {
    if ($(divId).style.display == 'none') { //on affiche la div
      $(buttonId).className='reduce';
      $(buttonId).onclick = function () {
         new Effect.BlindUp(divId, {});
         toggleBlindDivDown(divId, buttonId);
         this.blur();
      };
      new Ajax.Updater('invisible', ABS_PATH+'pages/setDisplay?field='+divId+'&value=displayed', {asynchronous:true, evalScripts:false});
    }
    else {
      new Ajax.Updater('invisible', ABS_PATH+'pages/setDisplay?field='+divId+'&value=hidden', {asynchronous:true, evalScripts:false});
      $(buttonId).className='expand';
      $(buttonId).onclick = function () {
         new Effect.BlindDown(divId, {});
         toggleBlindDivDown(divId, buttonId);
         this.blur();
      };
    }
  }
}

function showUploadLoading(cas) {
    switch (cas) {
        case "header":
            var target = $('uploadHeader');
            var targetLoading = $('uploadHeader_loading');
        break;
        case "logo":
            var target = $('uploadLogo');
            var targetLoading = $('uploadLogo_loading');
        break;
        case "headerFlash":
            var target = $('uploadHeaderFlash');
            var targetLoading = $('uploadHeaderFlash_loading');
        break;
    }
    target.style.display = 'none';
    targetLoading.style.display = 'block';
}

function updateFieldFromSelect(select_id, divToUpdate_id) {
    var nom = document.getElementById(select_id).options[document.getElementById(select_id).options.selectedIndex].text;
    document.getElementById(divToUpdate_id).value = nom;
}

function catalogue_recherche(selectId) {
   if ($('recherche-nom').value == '') {
     $('recherche-nom').value = 'empty';
   }
   $('form-recherche').submit();
}

function selectAllMessages() {
    var elts = getElementsByClassName('checkboxMessage','input');
    var nbChecks=0;
    var idList='';    
    for (var index=0; index < elts.length; ++index) {
        document.getElementById(elts[index].id).checked=true;
        ++nbChecks;
        var tmp=elts[index].id;
        tmp=tmp.split('_');
        tmp=tmp[1];
        idList+=tmp+';';
    }
}

function unselectAllMessages() {
    var elts = getElementsByClassName('checkboxMessage','input');
    var nbChecks=0;
    var idList='';    
    for (var index=0; index < elts.length; ++index) {
        document.getElementById(elts[index].id).checked=false;
        ++nbChecks;
        var tmp=elts[index].id;
        tmp=tmp.split('_');
        tmp=tmp[1];
        idList+=tmp+';';
    }
}

function getElementsByClassName(className, tag, elm){
    var testClass = new RegExp("(^|s)" + className + "(s|$)");
    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];
    var current;
    var length = elements.length;
    for(var i=0; i<length; i++){
        current = elements[i ];
        if(testClass.test(current.className)){
            returnElements.push(current);
        }
    }
    return returnElements;
}

function selectGroupItem(groupToSelect) {
    var elts = getElementsByClassName('col1Selected','li');
    for (var index=0; index < elts.length; ++index) {
        switchClass(elts[index].id, 'col1Normal')
    }
    switchClass(groupToSelect, 'col1Selected');
}

// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling) {
    bubbling = bubbling || false;
    if(window.addEventListener) { // Standard
       element.addEventListener(type, expression, bubbling);
       return true;
    } else if(window.attachEvent) { // IE
       element.attachEvent('on' + type, expression);
       return true;
    } else return false;
}

function inArray(arrayToSearch, occur) {
    var found = false;
    for (var i=0; i < arrayToSearch.length; i++) {
        if (occur == arrayToSearch[i]) found = true;
    }
    return found;
}

function switchClass(element_id, class_name) {
    var element = document.getElementById(element_id);
    if (element != null) {
        element.oldClassName = element.className;
        element.className = class_name;
    }
}

function getElementsByClassName(className, tag, elm){
    var testClass = new RegExp("(^|s)" + className + "(s|$)");
    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];
    var current;
    var length = elements.length;
    for(var i=0; i<length; i++){
        current = elements[i ];
        if(testClass.test(current.className)){
            returnElements.push(current);
        }
    }
    return returnElements;
}

function fadeOutElement(elementId) {
    new Effect.Fade(elementId, {
           from: 1, 
           to: 0, 
           duration: .5, 
           afterFinish: function() {
              
           }
   });
}

function is_valid_email(email) {
    var place = email.indexOf("@",1);
    var point = email.indexOf(".",place+1);
    if ((place > -1)&&(email.length >2)&&(point > 1)) {
        return(true);
    }
    else {
        return(false);
    }
}

function popup(url, w, h) {
    var width  = w;
    var height = h;
    var left   = (screen.width  - width)/2;
    var top    = 200;
    var params = 'width='+width+', height='+height;
    params += ', top='+top+', left='+left;
    params += ', directories=no';
    params += ', location=yes';
    params += ', menubar=no';
    params += ', resizable=no';
    params += ', scrollbars=yes';
    params += ', status=no';
    params += ', toolbar=no';
    
    var  newwindow=window.open(url, '', params);
    if (window.focus) {newwindow.focus()}
}


var displayed13 = false;
var displayed14 = false;
var cp13; var cp14;
function toggleDisplayColorPicker(divId, val) {
    if (!displayed13) {
        cp13 = new Refresh.Web.ColorPicker('cp'+divId,{startHex: ''+val+'', startMode:'s'});
        $('colorPick_'+divId).style.visibility = 'visible';
        displayed13 = true;
    }
    else {
        if ($('colorPick_'+divId).style.visibility == 'hidden') {
            $('colorPick_'+divId).style.visibility = 'visible';
            var arrows = getElementsByClassName('cpArrow', 'img');
            for (var i=0; i < arrows.length; i++) {
               arrows[i].style.visibility = 'visible';
            }
        }
        else {
            $('colorPick_'+divId).style.visibility = 'hidden';
            var arrows = getElementsByClassName('cpArrow', 'img');
            for (var i=0; i < arrows.length; i++) {
               arrows[i].style.visibility = 'hidden';
            }
        }
    }
}

function toggleDisplayColorPickerIcon(divId, val) {
    if (!displayed14) {
        cp14 = new Refresh.Web.ColorPicker('cp'+divId,{startHex: ''+val+'', startMode:'s'}, divId);
        $('colorPick_'+divId).style.visibility = 'visible';
        displayed14 = true;
    }
    else {
        if ($('colorPick_'+divId).style.visibility == 'hidden') {
            $('colorPick_'+divId).style.visibility = 'visible';
            var arrows = getElementsByClassName('cpArrow', 'img');
            for (var i=0; i < arrows.length; i++) {
               arrows[i].style.visibility = 'visible';
            }
        }
        else {
            $('colorPick_'+divId).style.visibility = 'hidden';
            var arrows = getElementsByClassName('cpArrow', 'img');
            for (var i=0; i < arrows.length; i++) {
               arrows[i].style.visibility = 'hidden';
            }
        }
    }
}

function toggleDisplayGroupToolbar(groupId) {
    if ($('groupToolbar_'+groupId).style.display == 'none') { //on affiche la div
      hideAllGroupToolbars();
      new Ajax.Updater('groupToolbar_'+groupId+'', ABS_PATH+'messagerie/groupToolbar/id/'+groupId+'', {
            asynchronous:true, 
            evalScripts:false, 
            onComplete:function(request, json){
                $('groupToolbar_'+groupId).show();
                hideMainLoading();
            }, 
            onLoading:function(request, json){
                displayMainLoading();
            }
      });
    }
    else {
      $('groupToolbar_'+groupId).style.display = 'none';
    }
}

function hideAllGroupToolbars() {
    var elts = getElementsByClassName('groupListToolbar','div');
    for (var index=0; index < elts.length; ++index) {
        document.getElementById(elts[index].id).style.display = 'none';
    }
}