
/*-----------------------
  Funzioni principali
-----------------------*/

// I seguenti array contengono gli stili che devono essere settati
// alle celle della tabella nei rispettivi eventi di mouse

stiliOver = new Array("backgroundColor=#ffffff")
stiliOver2 = new Array("backgroundColor=#BABDEB")
stiliOver3 = new Array("backgroundColor=#BABDEB")
stiliOut = new Array("backgroundColor=#BABDEB")
stiliOut2 = new Array("backgroundColor=#BABDEB")
stiliOut3 = new Array("backgroundColor=#ffffff")
stiliClick = new Array("backgroundColor=#ffffff")

// "acceso" è la variabile che di volta in volta contiene
// un riferimento alla cella cliccata

acceso = null 

function cambiaSuOver(e){
  if(!e) e = event
  sorgente = (e.target) ? e.target : e.srcElement
  if (sorgente.tagName=="TR" || sorgente.tagName=="TABLE") 
    return 
  while(sorgente.tagName!="TD" && sorgente.tagName!="HTML")
    sorgente = (sorgente.parentNode) ? sorgente.parentNode : sorgente.parentElement
  if (sorgente.id!="ignora" && sorgente!=acceso) {
    for(a in stiliOver) {
      stile=stiliOver[a].split("=");
      sorgente.style[stile[0]]=stile[1];
    }
  } 
} 

function cambiaSuOut(e){ 
  if(!e) e = event
  if (e.fromElement&&(e.fromElement.contains(e.toElement)||sorgente.contains(e.toElement)||sorgente.id=="ignora")
||sorgente==acceso||sorgente.tagName=="TR"||sorgente.tagName=="TABLE") 
    return 
  else if (e.relatedTarget&&(contains_ns6(sorgente, e.relatedTarget)||sorgente.id=="ignora"||sorgente==acceso))
    return 
  if (e.toElement&&e.toElement!=sorgente||e.relatedTarget&&e.relatedTarget!=sorgente)
    for(a in stiliOut) {
      stile=stiliOut[a].split("="); 
      sorgente.style[stile[0]]=stile[1];
    }
} 

function cambiaSuOut2(e){ 
  if(!e) e = event
  if (e.fromElement&&(e.fromElement.contains(e.toElement)||sorgente.contains(e.toElement)||sorgente.id=="ignora")
||sorgente==acceso||sorgente.tagName=="TR"||sorgente.tagName=="TABLE") 
    return 
  else if (e.relatedTarget&&(contains_ns6(sorgente, e.relatedTarget)||sorgente.id=="ignora"||sorgente==acceso))
    return 
  if (e.toElement&&e.toElement!=sorgente||e.relatedTarget&&e.relatedTarget!=sorgente)
    for(a in stiliOut2) {
      stile=stiliOut2[a].split("="); 
      sorgente.style[stile[0]]=stile[1];
    }
} 

function clicca() {
  if (sorgente!=acceso&&sorgente.id!="ignora") {
    if(acceso) {
      for(a in stiliOut) {
        stile=stiliOut[a].split("="); 
        acceso.style[stile[0]]=stile[1];
      }
    } 
    for(a in stiliClick) {
      stile=stiliClick[a].split("=");
      sorgente.style[stile[0]]=stile[1];
    }
    acceso = sorgente
  } 
} 

function cambiaSuOver2(e){
  if(!e) e = event
  sorgente = (e.target) ? e.target : e.srcElement
  if (sorgente.tagName=="TR" || sorgente.tagName=="TABLE") 
    return 
  while(sorgente.tagName!="TD" && sorgente.tagName!="HTML")
    sorgente = (sorgente.parentNode) ? sorgente.parentNode : sorgente.parentElement
  if (sorgente.id!="ignora" && sorgente!=acceso) {
    for(a in stiliOver2) {
      stile=stiliOver2[a].split("=");
      sorgente.style[stile[0]]=stile[1];
    }
  } 
} 

function cambiaSuOver3(e){
  if(!e) e = event
  sorgente = (e.target) ? e.target : e.srcElement
  if (sorgente.tagName=="TR" || sorgente.tagName=="TABLE") 
    return 
  while(sorgente.tagName!="TD" && sorgente.tagName!="HTML")
    sorgente = (sorgente.parentNode) ? sorgente.parentNode : sorgente.parentElement
  if (sorgente.id!="ignora" && sorgente!=acceso) {
    for(a in stiliOver3) {
      stile=stiliOver3[a].split("=");
      sorgente.style[stile[0]]=stile[1];
    }
  } 
} 

function cambiaSuOut3(e){ 
  if(!e) e = event
  if (e.fromElement&&(e.fromElement.contains(e.toElement)||sorgente.contains(e.toElement)||sorgente.id=="ignora")
||sorgente==acceso||sorgente.tagName=="TR"||sorgente.tagName=="TABLE") 
    return 
  else if (e.relatedTarget&&(contains_ns6(sorgente, e.relatedTarget)||sorgente.id=="ignora"||sorgente==acceso))
    return 
  if (e.toElement&&e.toElement!=sorgente||e.relatedTarget&&e.relatedTarget!=sorgente)
    for(a in stiliOut3) {
      stile=stiliOut3[a].split("="); 
      sorgente.style[stile[0]]=stile[1];
    }
} 
