/* 
    Javscript Document
    ------------ 
    Creation date:  03/03/2008
    Last edit:      04/03/2008
    Company name:   Onlime s.n.c
*/

var imgs,sh,loader;
var syn =false;
var timer;
var att = new Attender();

addEvent(window,'load',so_init,false);

function so_init()
{ 
  if(!document.getElementById)return;
  
	imgs = document.getElementById('gallery_dx').getElementsByTagName('img');
	for(i=0;i<imgs.length;i++){
    addEvent(imgs[i],'click', handleEvent, false);
    fadeIn(imgs[i].id,0);
  }
  
  sh = document.getElementById('show_gallery');
  addEvent(sh,'load', loaded_image , false);
}

/* Cross-browser gestione evento */
function handleEvent(aEvent) {
    var path_image = (window.event)? (window.event.srcElement.alt):(aEvent.target.alt);
    (!syn)?(do_effect('show_gallery',path_image)):null;
}

// Funzioni per la gestione ( non intrusiva ) degli eventi 
function addEvent(obj, evType, fn, useCapture)
{
  if (obj.addEventListener) // (obj.addEventListener)
  {
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } 
  else if (obj.attachEvent)
  {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } 
  else 
  {
    alert("L'evento non può essere generato.");
  }
}

// Funzione per impostare l'opacità di una immagine
function setOpacity(obj,opacity)
{
  opacity=(opacity==100) ? 99.999 : opacity;
  // IE/Win
  obj.style.filter = "alpha(opacity:"+opacity+")";
  // Safari<1.2, Konqueror
  obj.style.KHTMLOpacity = opacity/100;
  // Older Mozilla and Firefox
  obj.style.MozOpacity = opacity/100;
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  obj.style.opacity = opacity/100;
}

function do_effect(objId,new_src_image)
{ 
  if(!syn && !att.get_stato()){
    timer = setInterval("do_effect('"+objId+"','"+new_src_image+"')", 100);
    syn = true;
    att.set_step(0);
    att.set_nextstep(null);
  }
  else if(syn && !att.get_stato()){
    obj = document.getElementById(objId);
    if(att.get_step()==0){
      att.start_attender();
      loader = document.getElementById('loader');
      loader.style.backgroundImage = "url(http://www.encanthica.com/images/loading.gif)";
      fadeOut(objId,0,100);                   // Lancio il fadeOut
    } 
    else if(att.get_step()==1){
      att.start_attender();
      obj.src=new_src_image;                  // Eseguo lo swop
    }
    else if(att.get_step()==2){
      att.start_attender();
      fadeIn(objId,0);                        // Lancio il fadeIn
    }
    else if(att.get_step()==3){
      att.set_nextstep(0);
      loader = document.getElementById('loader');
      loader.style.backgroundImage = "url(inesistente)";
      clearInterval(timer);
      syn = false;
    }
  }
}

function loaded_image(){
  att.stop_attender();
}

// Funzione per simulare l'effetto fade-in su un oggetto
function fadeIn(objId,opacity)
{
  if(!document.getElementById) return;
  obj = document.getElementById(objId);  
  if(opacity <= 100)
  {
    setOpacity(obj,opacity);
    opacity += 10;
    window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 130);
  }
  else{att.stop_attender();}
}

// Funzione per simulare l'effetto fade-out su un oggetto
function fadeOut(objId,lim_opacity,opacity)
{
  if(!document.getElementById) return; 
  obj = document.getElementById(objId);
  if(opacity >= lim_opacity)
  {
    setOpacity(obj,opacity);
    opacity -= 10;
    window.setTimeout("fadeOut('"+objId+"',"+lim_opacity+","+opacity+")", 130);
  }
  else{att.stop_attender();}
}

