function dgebi(id) { return document.getElementById(id); }

var caroselli = new Array(), stato_caroselli = new Array();

function setOpacity(obj, op) { if(op>.99) { op = .99; } obj.style.opacity = op; obj.style.MozOpacity = op; obj.style.filter = 'alpha(opacity=' + (op*100) + ')'; }

var cTI = null;
function caroselloFadeIn(element, opacity)
{
	var reduceOpacityBy = 5; if (opacity < 100) { opacity += reduceOpacityBy; if (opacity > 100) {	opacity = 100; } if (element.filters) { try { element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity; } catch (e) { element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';	}	} else { element.style.opacity = opacity / 100; } }	if (opacity < 100) { if (cTI != null) clearTimeout(cTI); cTI = setTimeout(function () {	caroselloFadeIn(element, opacity);	}, 30); }
}

/* caroselli = [0]effect, [1]play, [2]speed, 
     [3]sCarosello, [4]wCarosello, [5]hCarosello, 
     [6]sControl, [7]xControl, [8]yControl, [9]wControl, [10]hControl, 
     [11]sPrev, [12]xPrev, [13]yPrev, [14]wPrev, [15]hPrev, [16]sNext, [17]xNext, [18]yNext, [19]wNext, [20]hNext, 
     [21]sStartStop, [22]xStartStop, [23]yStartStop, [24]wStartStop, [25]hStartStop, [26]sHTMLstart, [27]sHTMLstop,
     [28]sGruppoItems, [29]xGruppoItems, [30]yGruppoItems, [31]wGruppoItems, [32]hGruppoItems, 
     [33]sZoom, [34]xZoom, [35]yZoom, [36]wZoom, [37]hZoom, 
     [38]wItem, [39]hItem, [40]xMarginItem, [41]yMarginItem */
     
/* stato_caroselli = [0]run, [1]current_x, [2]current_y, [3]destination_x, [4]destination_y, 
     [5]t, [6]xCaroselloTarget, [7]yCaroselloTarget, [8]wCaroselloTarget, [9]hCaroselloTarget, 
     [10]xControlTarget, [11]yControlTarget, [12]wControlTarget, [13]hControlTarget, 
     [14]xPrevTarget, [15]yPrevTarget, [16]wPrevTarget, [17]hPrevTarget, 
     [18]xNextTarget, [19]yNextTarget, [20]wNextTarget, [21]hNextTarget, 
     [22]xStartStopTarget, [23]yStartStopTarget, [24]wStartStopTarget, [25]hStartStopTarget, 
     [26]xGruppoItemsTarget, [27]yGruppoItemsTarget, [28]wGruppoItemsTarget, [29]hGruppoItemsTarget, 
     [30]xZoomTarget, [31]yZoomTarget, [32]wZoomTarget, [33]hZoomTarget, 
     [34]wItemTarget, [35]hItemTarget, [36]xMarginItemTarget, [37]yMarginItemTarget, 
     [38]zoom_progress, [39]zoom_target, [40]resize_progress, [41]currentZoomItem */

function carosello_init() { setInterval(function () { carosello_anim(); }, 100); }      

function carosello_anim()
{
  var i, j, c, ii, x, y, delta, min, max, zmax, jzmax, jzmax2;
  for (i=0; i<caroselli.length; i++)
  {
    c = caroselli[i][3];
    
    if (stato_caroselli[i][5] > 100) { stato_caroselli[i][5] = 0; }
    if (stato_caroselli[i][5] != 0) { stato_caroselli[i][5]++; }
   
    ii = dgebi(caroselli[i][28]).getElementsByTagName('div');
    switch(caroselli[i][0])
    {
    case 1 : /* 1=scroll orizzontale */
      if (stato_caroselli[i][0]) { stato_caroselli[i][3] += caroselli[i][2]; stato_caroselli[i][5] = 0; }
      delta = (caroselli[i][38] + caroselli[i][40]); min = (0 - delta); max = ((ii.length-1) * delta);
      if (stato_caroselli[i][3] < min) { stato_caroselli[i][1] += ii.length * delta; stato_caroselli[i][3] += ii.length * delta; }
      if (stato_caroselli[i][3] > max) { stato_caroselli[i][1] -= ii.length * delta; stato_caroselli[i][3] -= ii.length * delta; }
      stato_caroselli[i][1] += (stato_caroselli[i][3] - stato_caroselli[i][1])*(1 + stato_caroselli[i][5]*.8)*0.1;
      for (j=0; j<ii.length; j++)
      {
        x = stato_caroselli[i][1] + delta*j;
        if (x < min) { x += ii.length * delta; } if (x > max) { x -= ii.length * delta; }
        ii[j].style.left = (Math.round(x)).toString() + 'px' ;
      }
      break;
    case 2 : /* 2=scroll verticale  */
      if (stato_caroselli[i][0]) { stato_caroselli[i][4] += caroselli[i][2]; stato_caroselli[i][5] = 0; }
      delta = (caroselli[i][39] + caroselli[i][41]); min = (0 - delta); max = ((ii.length-1) * delta);
      if (stato_caroselli[i][4] < min) { stato_caroselli[i][2] += ii.length * delta; stato_caroselli[i][4] += ii.length * delta; }
      if (stato_caroselli[i][4] > max) { stato_caroselli[i][2] -= ii.length * delta; stato_caroselli[i][4] -= ii.length * delta; }
      stato_caroselli[i][2] += (stato_caroselli[i][4] - stato_caroselli[i][2])*(1 + stato_caroselli[i][5]*.8)*0.1;
      for (j=0; j<ii.length; j++)
      {
        y = stato_caroselli[i][2] + delta*j;
        if (y < min) { y += ii.length * delta; } if (y > max) { y -= ii.length * delta; }
        ii[j].style.top = (y).toString() + 'px';
      }
      break;
    case 3 : /* 3=scroll z-index  */
      if (stato_caroselli[i][0]) { stato_caroselli[i][3] += caroselli[i][2]; }
      else { stato_caroselli[i][3] = Math.ceil(stato_caroselli[i][3]); }
      min = 0; max = ii.length;
      if (stato_caroselli[i][3] < min) { stato_caroselli[i][1] += ii.length; stato_caroselli[i][3] += ii.length; }
      if (stato_caroselli[i][3] > max) { stato_caroselli[i][1] -= ii.length; stato_caroselli[i][3] -= ii.length; }
      stato_caroselli[i][1] += (stato_caroselli[i][3] - stato_caroselli[i][1])*0.1;
      for (j=0, zmax=0, jzmax=ii.length-1; j<ii.length; j++)
      {
        y = (j + max) - stato_caroselli[i][1];
        if (y < min) { y += ii.length; } if (y > max) { y -= ii.length; }
        ii[j].style.zIndex = Math.ceil(y).toString(); 
        if (ii[j].style.zIndex > zmax) { zmax = ii[j].style.zIndex; jzmax2 = jzmax; jzmax = j; }
      }
      for (j=0; j<ii.length; j++)
      {
        if (j == jzmax) { setOpacity (ii[j], 10*(Math.ceil(y) - y)) ; }
        else if (j != jzmax2) { setOpacity (ii[j], 0) ; }
      }
      break;
} } }
      

/* effect { 1=scroll orizzontale | 2=scroll verticale | 3=fermi z-index | ... } */
function carosello_new(effect, play, speed, sCarosello, wCarosello, hCarosello, sControl, xControl, yControl, wControl, hControl, sPrev, xPrev, yPrev, wPrev, hPrev, sNext, xNext, yNext, wNext, hNext, sStartStop, xStartStop, yStartStop, wStartStop, hStartStop, sHTMLstart, sHTMLstop, sGruppoItems, xGruppoItems, yGruppoItems, wGruppoItems, hGruppoItems, sZoom, xZoom, yZoom, wZoom, hZoom, wItem, hItem, xMarginItem, yMarginItem)
{
  var i, j, ii;
  
  caroselli.push(new Array(effect, play, speed, sCarosello, wCarosello, hCarosello, sControl, xControl, yControl, wControl, hControl, sPrev, xPrev, yPrev, wPrev, hPrev, sNext, xNext, yNext, wNext, hNext, sStartStop, xStartStop, yStartStop, wStartStop, hStartStop, sHTMLstart, sHTMLstop, sGruppoItems, xGruppoItems, yGruppoItems, wGruppoItems, hGruppoItems, sZoom, xZoom, yZoom, wZoom, hZoom, wItem, hItem, xMarginItem, yMarginItem));
  
  stato_caroselli.push(new Array(play,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,''));
    
  i = dgebi (sCarosello);
  i.style.width = (wCarosello).toString() + 'px';
  i.style.height = (hCarosello).toString() + 'px';
  
  ii = dgebi(sGruppoItems).getElementsByTagName('div');
  for (j=0; j<ii.length; j++)
  {
    switch(effect)
    {
      case 1 : 
        ii[j].style.width = (wItem).toString() + 'px'; ii[j].style.height = (hItem).toString() + 'px';
        ii[j].style.left = ((xMarginItem + wItem)*j).toString() + 'px'; ii[j].style.top = '0px';
        break;
      case 2 : 
        ii[j].style.width = (wItem).toString() + 'px'; ii[j].style.height = (hItem).toString() + 'px';
        ii[j].style.left = '0px'; ii[j].style.top = ((yMarginItem + hItem)*j).toString() + 'px';
        break;
      default : 
        ii[j].style.width = (wItem).toString() + 'px'; ii[j].style.height = (hItem).toString() + 'px';
        ii[j].style.left = '0px'; ii[j].style.top = '0px'; ii[j].style.zIndex = j; setOpacity(ii[j], 0.01);
        break;
  } }
  if (play != 0)
  {
    dgebi(sStartStop).innerHTML = sHTMLstop;
    eval("dgebi('" + sGruppoItems + "').onmouseover = function(e) { carosello_stop('" + sCarosello + "'); }");
    eval("dgebi('" + sGruppoItems + "').onmouseout = function(e) { carosello_start('" + sCarosello + "'); }");  
  }
  if (sZoom != '')
  {
    z=dgebi(sZoom); z.style.left = (xZoom).toString() + 'px'; z.style.top = (yZoom).toString() + 'px';
    z.style.width = (wZoom).toString() + 'px'; z.style.height = (hZoom).toString() + 'px'; z.style.overflow = 'hidden';
    if (z=dgebi(sZoom + "_over"))
    {
      z.style.left = (xZoom).toString() + 'px'; z.style.top = (yZoom).toString() + 'px'; 
      z.style.width =  (wZoom).toString() + 'px'; z.style.height = (hZoom).toString() + 'px'; z.style.overflow = 'hidden';
    }
  }
}

function carosello_prev(c)
{
  var i; 
  for (i=0; i<caroselli.length; i++)
  {
    if (caroselli[i][3] == c)
    {
      stato_caroselli[i][5] = 1; 
      switch(caroselli[i][0])
      {
        case 1 : /* 1=scroll orizzontale */ stato_caroselli[i][3] += (caroselli[i][38] + caroselli[i][40]); break;
        case 2 : /* 2=scroll verticale */   stato_caroselli[i][4] += (caroselli[i][39] + caroselli[i][41]); break;
        case 3 : /* 3=scroll trasparenza */ stato_caroselli[i][3] = Math.floor(stato_caroselli[i][3] - 1); break;
      }
      return;
} } }

function carosello_next(c)
{
  var i;
  for (i=0; i<caroselli.length; i++)
  {
    if (caroselli[i][3] == c)
    {
      stato_caroselli[i][5] = 1; 
      switch(caroselli[i][0])
      {
        case 1 : /* 1=scroll orizzontale */ stato_caroselli[i][3] -= (caroselli[i][38] + caroselli[i][40]); break;
        case 2 : /* 2=scroll verticale */   stato_caroselli[i][4] -= (caroselli[i][39] + caroselli[i][41]); break;
        case 3 : /* 3=scroll trasparenza */ stato_caroselli[i][3] = Math.floor(stato_caroselli[i][3] - 1); break;
      }
      return;
} } }

function carosello_start(c) { var i; for (i=0; i<caroselli.length; i++) { if (caroselli[i][3] == c) { stato_caroselli[i][5] = 1; stato_caroselli[i][0] = 1; dgebi(caroselli[i][21]).innerHTML = caroselli[i][27]; return; } } }
      
function carosello_stop(c) { var i; for (i=0; i<caroselli.length; i++) { if (caroselli[i][3] == c) { stato_caroselli[i][5] = 1; stato_caroselli[i][0] = 0; dgebi(caroselli[i][21]).innerHTML = caroselli[i][26]; return; } } }
      
function carosello_start_stop(c) { var i; for (i=0; i<caroselli.length; i++) { if (caroselli[i][3] == c) { stato_caroselli[i][5] = 1; stato_caroselli[i][0] = !stato_caroselli[i][0]; if (stato_caroselli[i][0]) { dgebi(caroselli[i][21]).innerHTML = caroselli[i][27]; } else { dgebi(caroselli[i][21]).innerHTML = caroselli[i][26]; } return; } } }
      
function carosello_item(o, c) { var i; carosello_set_zoom(c, 1.0); for (i=0; i<caroselli.length; i++) { if (caroselli[i][3] == c) { if (stato_caroselli[i][41] !== o) { stato_caroselli[i][41] = o; if (dgebi(caroselli[i][33]+"_over")) { dgebi(caroselli[i][33]).innerHTML=dgebi(caroselli[i][33]+"_over").innerHTML; caroselloFadeIn(dgebi(caroselli[i][33]+"_over"),0); dgebi(caroselli[i][33]+"_over").innerHTML = o.innerHTML; return; } else { caroselloFadeIn(dgebi(caroselli[i][33]),0); dgebi(caroselli[i][33]).innerHTML = o.innerHTML; } } } }}

function carosello_set_zoom(c,target) { var i, r, z; for (i=0; i<caroselli.length; i++) { if (caroselli[i][3] == c) { if (target != -1) { stato_caroselli[i][39]=target; } if (stato_caroselli[i][38] < stato_caroselli[i][39]) { stato_caroselli[i][38] += 0.05; if (stato_caroselli[i][38] >= stato_caroselli[i][39]) { stato_caroselli[i][38] = stato_caroselli[i][39]; } } if (stato_caroselli[i][38] > stato_caroselli[i][39]) { stato_caroselli[i][38] -= 0.05; if (stato_caroselli[i][38] <= stato_caroselli[i][39]) { stato_caroselli[i][38] = stato_caroselli[i][39]; } } z = dgebi(caroselli[i][33]); z.style.width =  (1+ (caroselli[i][36]/* * stato_caroselli[i][38] */)).toString() + 'px'; z.style.height = (1+ (caroselli[i][37] * stato_caroselli[i][38])).toString() + 'px'; if (z=dgebi(caroselli[i][33] + "_over")) { z.style.width =  (1+ (caroselli[i][36]/* * stato_caroselli[i][38]*/)).toString() + 'px'; z.style.height = (1+ (caroselli[i][37] * stato_caroselli[i][38])).toString() + 'px'; } if (stato_caroselli[i][38] != stato_caroselli[i][39]) { setTimeout(function () { carosello_set_zoom(c,-1); }, 50); } return; }
  }
}

function carosello_resize(c, carosello_w, carosello_h, items_w, items_h, item_w, item_h) 
{
  var i, j, r, o, ii;
  for (i=0; i<caroselli.length; i++)
  {
    if (caroselli[i][3] == c)
    {
      if (carosello_w) { stato_caroselli[i][8]=carosello_w; stato_caroselli[i][9]=carosello_h; stato_caroselli[i][28]=items_w; stato_caroselli[i][29]=items_h; stato_caroselli[i][34]=item_w; stato_caroselli[i][35]=item_h; stato_caroselli[i][40] = 0; }

      stato_caroselli[i][40] += 0.05;
      if (stato_caroselli[i][40] > 1.0) { stato_caroselli[i][40] = 1.0; }
      o = dgebi(caroselli[i][3]);
      o.style.width = (caroselli[i][4] +  (stato_caroselli[i][8] - caroselli[i][4]) * stato_caroselli[i][40]).toString() + 'px';
      o.style.height = (caroselli[i][5] +  (stato_caroselli[i][9] - caroselli[i][5]) * stato_caroselli[i][40]).toString() + 'px';
      o = dgebi(caroselli[i][28]);
      o.style.width = (caroselli[i][31] +  (stato_caroselli[i][28] - caroselli[i][31]) * stato_caroselli[i][40]).toString() + 'px';
      o.style.height = (caroselli[i][32] +  (stato_caroselli[i][29] - caroselli[i][32]) * stato_caroselli[i][40]).toString() + 'px';
      ii = o.getElementsByTagName('div');
      for (j=0; j<ii.length; j++)
      {
        ii[j].style.width =  (caroselli[i][38] +  (stato_caroselli[i][34] - caroselli[i][38]) * stato_caroselli[i][40]).toString() + 'px';
        ii[j].style.height = (caroselli[i][39] +  (stato_caroselli[i][35] - caroselli[i][39]) * stato_caroselli[i][40]).toString() + 'px';
      }
      
      if (stato_caroselli[i][40] < 1.0) { setTimeout(function () {carosello_resize(c); }, 100); }
      else { caroselli[i][4]=stato_caroselli[i][8]; caroselli[i][5]=stato_caroselli[i][9]; caroselli[i][31]=stato_caroselli[i][28]; caroselli[i][32]=stato_caroselli[i][29]; caroselli[i][38]=stato_caroselli[i][34]; caroselli[i][39]=stato_caroselli[i][35]; }
      return;
    }
  }
}
