/**
 * $ makeElementComplex
 * @param path : string path to tag to make complex, Path is build with
 * universal ID attribute and tag name (ie : page.contents.leftcol.h3)
 * @param pattern : string pattern replacement for target tags content,
 * %S return original content
 **/
function makeElementComplex(path, pattern) {
    var container = document;
    if (path.indexOf('.')!=-1) {
        var items = path.split('.');
        var tag2search = items[items.length-1];
        for(var i=0; i<items.length-1; i++) {
            container = container.getElementById(items[i]);
            if(!container)
                break;
        }
    } else
        tag2search = path;
    var items = container.getElementsByTagName(tag2search);
    for (var i=0; i<items.length; i++) {
        items[i].innerHTML = pattern.replace("%S", items[i].innerHTML);
    }
}


    /**
     * Toggle visibility status of an identified element
     * @id : string, target identifier
     **/
    function toggleVisible(id) {
        var item = document.getElementById(id);
        if ( item ) {
            if (!item.style.display || item.style.display =='block')
                item.style.display= 'none';
            else
                item.style.display= 'block';
        
        } else
            alert(id+' existe pas !!');
    }
    
  /**
   * Return all childs with specified tag name & CSS class name attribute
   * @tag : string, tag name to get
   * @classname : string, CSS class name associated with tag name
   * @container : optional string, container identifier for target restriction
   *              if not specified, container is set to HTML...
   **/
  function getElementsByTagClass(tag, className) {
    var items = new Array();
    if(getElementsByTagClass.arity==3) {
        // parent by ID
        if(typeof(getElementsByTagClass.arguments[2])==string)
            var container = document.getElementById(getElementsByTagClass.arguments[2]);
        else
            var container = getElementsByTagClass.arguments[2];
    } else {
        // no param 3 : get all from HTML
        var container = document.getElementsByTagName('html')[0];
    }
    var collection = container.getElementsByTagName(tag);
    for (var i=0; i<collection.length; i++) {
        if (collection[i].className == className) {
            items.push(collection[i]);
        }
    }
    if (items.length>0) {
        return items;
    }
    else {
        return false;
    }
  }
  
  function childsOnlyTagName(item, tag) {
    if( item!=undefined && item.hasChildNodes() ) {
        var max = item.childNodes.length;
        var n = 0;
        for(var i=0; i<max; i++) {
            var cur = item.childNodes[i];
            if ( cur.nodeName.toLowerCase() == tag) {
                n++;
                break;
            }
        }
        if (n>0)
            return true;
        else
            return false;
    } else
        return false;
  }
  
  
  function toggleFullSize(image) {
    var item = getElementsByTagClass('div', 'colleft', document.getElementById('text'));
    img = item[0].getElementsByTagName('img')[0];
    if( image!=undefined && document.getElementById(image).nodeName == 'IMG' ) {
        cur = document.getElementById(image);
        target = cur.parentNode.getElementsByTagName('IMG')[0];
        if ( !document.getElementById('baseIllust') )
            img.parentNode.innerHTML += '<input type="hidden" id="baseIllust" value="'+img.src+'"/>';
        img.src = document.getElementById(image).src;
    } else {
        img.src = document.getElementById('baseIllust').value;
    }
  }
  
    function galleryBuilder() {
        if ( document.URL.toLowerCase().indexOf('/parc-machines')!=-1 ) {
        // parse content for a potential gallery to build.
        var items = getElementsByTagClass('div', 'below_left', document.getElementById('text'));
        // found && contain only images
        if ( childsOnlyTagName(items[0], 'img') ) {
            var imgs = items[0].getElementsByTagName('img');
            if (imgs.length>0) {
                for (var i=0; i<imgs.length; i++) {
                    imgs[i].setAttribute('id', 'zoomImage'+i);
                    if ( navigator.appName.toLowerCase().indexOf('internet explorer')!=-1 ) {
                        imgs[i].onmouseover = function() {toggleFullSize(this.id);}
                        imgs[i].onmouseout = function() {toggleFullSize();}
                    } else {
                        imgs[i].setAttribute('onmouseover', 'toggleFullSize(this.id);');
                        imgs[i].setAttribute('onmouseout', 'toggleFullSize();');
                    }
                    imgs[i].setAttribute('title', 'Zoom');
                    imgs[i].style.cursor = 'pointer';
                }
            }
        } }
    }

/*****  third party scripts  ******/

/**
 * window.onload manager by http://www.ibilab.net/
 */
function addToStart(fnc){
  if(!window.listStart) window.listStart = new Array();
  window.listStart.push(fnc);
}

function start(){
  var ls = window.listStart;
  if(ls){
    for(i=0; i<ls.length; i++){
      fnc = ls[i];
      if(typeof(fnc) == 'function'){
        fnc();
      } else {
        eval(fnc);
      }
    }
  }
}

window.onload = start;

/************* onload jobs *************/
//addToStart("makeElementComplex('contents.h1', '<img src=\"/images/h1_left.gif\"/><span>%S</span><img src=\"/images/h1_right.gif\"/>')");
addToStart("makeElementComplex('contents.h1', '<img src=\"/images/titre_niv1_left.gif\"/><span>%S</span><img src=\"/images/titre_niv1_droit.gif\"/>')");
addToStart("makeElementComplex('tools.h3', '%S<img src=\"/images/boxheader_right.gif\"/>')");
addToStart("makeElementComplex('boxlastelements.a', '<img src=\"/images/box_sw_left.gif\"/>%S<img src=\"/images/box_sw_right.gif\"/>')");
addToStart("makeElementComplex('verticalmenu.ul', '<img src=\"/images/menu_niv3_left.gif\"/><img src=\"/images/menu_niv3_right.gif\" class=\"cr\"/>%S')");
addToStart(galleryBuilder);
