function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
    } else {
      window.onload = function() {
        if (oldonload) {
          oldonload();
        }
      func();
      }
    }
  }

/*inicialitzar tots els divs "assana" a display:none
  assignar plega/desplega als a.titol
  ht -> anc
        assana -> fotoAssana{Ample|Estreta}
                  textAssana{Estret|Ample}
*/
addLoadEvent(function() {
  var classes = new Array();
  classes[0] = "assana";
  classes[1] = "titol";
  var elements = getElementsByClasse(classes);
  for (var ix=0; ix<elements.length; ix++) {
    if (elements[ix].className == "assana") {
      toggleClassName( elements[ix], "nodisplay" );
      } else if (elements[ix].className=="titol") {
      if (!elements[ix].estat) {
        elements[ix].estat = "plegat";
        elements[ix].paddingLeft="3em";
        elements[ix].style.backgroundImage="url(\"./imatges/plus.gif\")";
        elements[ix].style.backgroundPosition="left center";
        elements[ix].style.backgroundRepeat="no-repeat";
        elements[ix].style.paddingLeft="1em";
        }
      addEventHandler(elements[ix], "click", canviaEstat);
      addEventHandler(elements[ix], "mouseover", rataASobre);
      addEventHandler(elements[ix], "mouseout", rataASobre);
      if (elements[ix].estat == "plegat") {
        elements[ix].style.backgroundImage="url(\"./imatges/plus.gif\")";
        }
      }
    }
  });

function getElementsByClasse(classes) {
  var retVal = new Array();
  var allNodes = document.getElementsByTagName("*");
  for (var ix=0; ix<allNodes.length; ix++) {
    if (classes.indexOf(allNodes[ix].className)!=-1) {
      retVal.push(allNodes[ix]);
      }
    }
  return retVal;
  }

function addEventHandler(elem, event, func) {
  if (elem.addEventListener) {
    elem.addEventListener(event, func, false);
    } else if (elem.attachEvent) {
     elem.attachEvent("on"+event, func);
    } else alert("addEventHandler fails");
  }

function canviaEstat() {
  var evnt=arguments[0];
  //elem és <a> on es clica
  var elem = tornaElement(evnt)
  if (elem.estat == "plegat") {
    elem.style.backgroundImage="url(\"./imatges/minus.gif\")";
    elem.estat = "obert";
    } else {
    elem.style.backgroundImage="url(\"./imatges/plus.gif\")";
    elem.estat = "plegat"
    }
  //seguent és el div que segueix a <a> 
  toggleClassName(seguent(elem), "nodisplay");
  }

function seguent(elem) {
  var p;
  do p = elem.parentNode;
  while( p && p.nodeType !=1 );
  do  p = p.nextSibling;
  while (p && p.nodeType != 1);
  return p;
  }

function rataASobre() {
  var evnt=arguments[0];
  var elem = tornaElement(evnt);
  if (evnt.type == "mouseover") {
    //elem.style.cursor = "pointer";
    elem.style.color = "#cc0033";
    } else if (evnt.type == "mouseout") {
    //elem.style.cursor = "default";
    elem.style.color = "#333366";
    }
  }

function toggleClassName(el, name) {
  var deleted = false;
  var aClasses = el.className.split(' ');
  for (var i = 0; !deleted && i < aClasses.length; ++i) {
    if (aClasses[i] == name) { // si la contiene
      delete(aClasses[i]); 
      deleted = true; 
      }
    }
  if (!deleted) { 
    aClasses[aClasses.length] = name;
    }
  el.className = aClasses.join(' ');
  }


//això també és per culpa l'IE.
//dins els manegadors d'events no reconeix "this"
//la funció torna l'element que provoca l'event
function tornaElement(evnt) {
  if (evnt.target) {
    var elem = evnt.target;
    } else if (evnt.srcElement) {
    var elem = evnt.srcElement;
    }
  return elem
  }

//això és per a l'IE
if (!Array.prototype.push) {
  Array.prototype.push = function() {
    for (var ix=0; jx=arguments[ix]; ix++) this[this.length] = jx;
    return this.length;
    }
  }

//això per a versions Javascript < 1.6
if (!Array.prototype.indexOf) {
  //busca l'agulla al paller(this)
  Array.prototype.indexOf = function(agulla) {
    for (var ix=0; ix<this.length; ix++) {
      if(this[ix] == agulla) {
        return ix;
        }
      }
    return -1;
    }
  }
