////////////////// CONSTANTS ///////////////////////////
// MENU/FLASH position (NON modificare)
var LEFT=0;
var CENTER=1;
var RIGHT=2;
var FIXED=3;    // definire FLASH_WIDTH e MENU_WIDTH

var xArray, xArrayTmp, x0Init, yMenu, EXISTS_FLASH_OBJ, X_LEFT_MENU_OFFSET, MENU_POSITION;



///////////////////////////////
//          PARMS            //
///////////////////////////////

//////////////////////// LAYERS PARMS /////////////////////
// Y positions (La X se calcula dinamicamente en function del tamanyo de la ventana)
var Y_LAYER_FLASH, Y_LAYER_IMAGE;
    

// Positions
var FLASH_POSITION;
// Offset
var FLASH_OFFSET;
// Larghezza
var WIDTH_FLASH, HEIGHT_FLASH;
  
// Stack orders
var STACK_ORDER_FLASH=1, 
    STACK_ORDER_IMAGE=2; 

// Initial visibility
var INITIAL_VISIBILITY_FLASH=true, 
    INITIAL_VISIBILITY_IMAGE=false; 

var FLASH_FILE, CENTER_IMG, HEAD_IMG, TAIL_IMG, tailArray, j;
var FLASH_IMG, HEAD_FLASH_OBJ, TAIL_FLASH_OBJ='';

var FLASH_OBJ;



// parms: x0, x1, x2, ..., xn: vanno presi dal codice generato da Fireworks
function initIntegration(){
  // Set correct FLASH_IMG, HEAD_FLASH_OBJ and TAIL_FLASH_OBJ values
  if (EXISTS_FLASH_OBJ){
    if (CENTER_IMG!='') FLASH_IMG='<img src="'+ CENTER_IMG +'">';
    else FLASH_IMG='';
    if (HEAD_IMG!='') HEAD_FLASH_OBJ='<img src="'+ HEAD_IMG +'">';
    else HEAD_FLASH_OBJ='';
    if (TAIL_IMG!='') {
      tailArray=TAIL_IMG.split(',');
      for (j=0; j<tailArray.length-1; j++) {
        TAIL_FLASH_OBJ=TAIL_FLASH_OBJ+'<img src="'+ tailArray[j] +'"><br>';
      }
      TAIL_FLASH_OBJ=TAIL_FLASH_OBJ+'<img src="'+ tailArray[tailArray.length-1] +'">';
    }
    else TAIL_FLASH_OBJ='';


    FLASH_OBJ='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="'+ WIDTH_FLASH +'" height="'+ HEIGHT_FLASH +'">'+
            '<param name=movie value="'+ FLASH_FILE +'">'+
            '<param name=quality value=high>'+
            '<param name=wmode value=opaque>'+
            '<embed src="'+ FLASH_FILE +'" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="'+ WIDTH_FLASH +'" height="'+ HEIGHT_FLASH +'">'+
            '</embed>'+
            '</object>';
  }
  //initIntegration(x0, x1, ..., xn);
  xArray=new Array();
  xArrayTmp=new Array();
  for(var i=1; i<arguments.length; i++){
    xArray[i-1]=arguments[i];
    xArrayTmp[i-1]=arguments[i];
  }
  x0Init=xArray[0];
  yMenu=arguments[0];
  if (MENU_POSITION==CENTER){
    resize(true);
    resizeWindowHandler();

    // La tendina attiva rimane accesa
    if(imgNameOn!=null)
      MM_swapImage(imgNameOn,'',imgFileOn,1);
  }
}


////////////////////////////
//         FBASE          //
////////////////////////////

///////////////////////////////////////////////////////////////////////////////////
// identificadores de los diferentes layers y del menu
var layerFlash="";
var layerImage="";

// If EXISTS_FLASH_OBJ mostramos el objeto flash (y, eventualmente, img si no soporta transparencias)
function createLayers(){
  // Definizione dei layers: HTML init=""
  // Per inserire l'HTML: initLayersBody (onLoad)
  // La posicion inicial X se calculara automaticamente en funcion del ancho de la ventana (CENTER!)
  // cuando se haya creado el body (en el head no se puede)
  Y_LAYER_FLASH=Y_FLASH; 
  Y_LAYER_IMAGE=Y_LAYER_FLASH;
  if (EXISTS_FLASH_OBJ){
    layerFlash = new DynLayer(window, "layer2", "",      0, Y_LAYER_FLASH, 0);
    layerImage = new DynLayer(window, "layer3", "",      0, Y_LAYER_IMAGE, 0);
  }
}

function outputLayers(){
  // si window diferente entre los layers: pasar la window correspondiente
  // Init layers with output method
  if (layerFlash){
    layerFlash.output();
    layerImage.output();
  }

  // calculamos posicion X (en el head no se puede!)
  var xPositionFlash;
  if (layerFlash){
    if (FLASH_POSITION==FIXED){
      layerFlash.moveTo(X_FLASH, Y_FLASH);
      layerImage.moveTo(X_FLASH, Y_FLASH);
	}
	else{
	  if (FLASH_POSITION==RIGHT){ 
        FLASH_OFFSET=WIDTH_TABLE-WIDTH_FLASH-FLASH_OFFSET; 
        FLASH_POSITION=CENTER;
      }
	  xPositionFlash=FLASH_OFFSET+getXPosition(window, FLASH_POSITION, WIDTH_TABLE);
      layerFlash.moveTo(xPositionFlash, layerFlash.getY());
      layerImage.moveTo(xPositionFlash, layerImage.getY());
    }
  }

  // Stacking order of layers
  if (layerFlash){
    layerFlash.setStackingOrder(STACK_ORDER_FLASH);
    layerImage.setStackingOrder(STACK_ORDER_IMAGE);
  }

  // Visualizazione iniziale
  if (layerFlash){
    if (INITIAL_VISIBILITY_FLASH) {
      layerFlash.show();
      }
    else  
      layerFlash.hide();
    if (INITIAL_VISIBILITY_IMAGE)
      layerImage.show();
    else  
      layerImage.hide();
  }
}

// Eventos onload
// Init HTML dei layers e del menu
function initLayersBody(){
  // Preload images menu
  if (layerFlash){
    layerFlash.setBody(getObjectFlash());
    layerImage.setBody(getObjectImage());
  }
}


//////////////////////// HTML LAYERS ////////////////////////
function getObjectImage(){
  return getObjectFlashImage(HEAD_FLASH_OBJ, FLASH_IMG, TAIL_FLASH_OBJ);
}
// Si no ponemos 'objects' en vez de 'object' no funciona el flash con explorer!
function getObjectFlash(){
  return getObjectFlashImage(HEAD_FLASH_OBJ, FLASH_OBJ, TAIL_FLASH_OBJ);
}
function getObjectFlashImage(head, obj, tail){
  return '<table border="0" cellspacing="0" cellpadding="0">'+
            '<tr>'+
              '<td>'+
                head+
              '</td>'+
            '</tr>'+
            '<tr>'+
              '<td>'+
                obj+
              '</td>'+
            '</tr>'+
            '<tr>'+
              '<td>'+
                tail+
              '</td>'+
            '</tr>'+
         '</table>';
}
////////////////////////// FLASH PARMS //////////////////////

/*
 * Mostra il menu. Se non soporta trans -> cambia object flash per image
 * imgName e imgSrc son opcionales: actualiza imgName.src=imgSrc
 */

// Browser che soportan trans in Flash
function supportsTransFlash(){
  // Netscape: no
  // Explorer: si (dipende de versione!)
//TODO
  var supports;
  if (navigator.appName.indexOf('Microsoft')!=-1){
    supports=true;
  }
  else if(navigator.appName.indexOf('Netscape')!=-1){
    // Netscape
    supports=false;
  }
  else
    supports=true;
  return supports;
}


// TODO: per Netscape non funziona->reload
function resizeWindowHandler(evt){
    // si window diferente entre los layers: pasar la window correspondiente
    var xPositionFlash, xPositionMenu;
    if (layerFlash){
      xPositionFlash=FLASH_OFFSET+getXPosition(window, FLASH_POSITION, WIDTH_TABLE);
      layerFlash.moveTo(xPositionFlash, layerFlash.getY());
      layerImage.moveTo(xPositionFlash, layerImage.getY());
    }
    // TODO: getXPosition(window, RIGHT) per menu -> WIDTH_MENU
}

function resize(firstTime){
  if((navigator.appName.indexOf("Netscape")==-1)
  || (firstTime)){
    // Non Netscape, tranne la prima volta (onLoad)
    for(var i=xArray.length-1; i>=0; i--){
      resizeMenu(MM_findObj("fw_menu_"+i, window), i);
      xArray[i]=xArrayTmp[i];
    }
    hideActiveMenus();
  }
  else{
    // Netscape e non prima volta
    location.reload();
  }
}

function resizeMenu(menu, i){
  var x,y,i;
  var xOffset;
  if(i>0) {
    xOffset=xArray[i]-xArray[0];
  }
  else{
       xOffset=0;
  }
  x = getXPosition(window, FLASH_POSITION, WIDTH_TABLE) + xOffset + X_LEFT_MENU_OFFSET;   
  //var top = s.top;
  y=yMenu;  // TODO
  window.FW_showMenu(menu, x, y);
  xArrayTmp[i]=x;
}

function fullResize(){
  resize();
  resizeWindowHandler();
}


////////////////// FUNCIONES AUXILIARES DEL MENU /////////////////////
function getWidthWindow(win) {
  var width=800;
  if (win.document.layers)
    width=win.innerWidth;
  else if (win.document.all){
    //width=win.document.body.clientWidth;
    // Con clientWidth non sempre ritorna il valore corretto!
	width=win.document.body.offsetWidth;
  }
  else //TODO: default
       ;
  return width;
}

function getHeightWindow(win) {
  var height=600;
  if (win.document.layers)
    height=win.innerHeight;
  else if (win.document.all){
    //height=win.document.body.clientHeight
    // Con clientHeight non sempre ritorna il valore corretto!
	height=win.document.body.offsetHeight;
  }
  else //TODO: default
    ;
  return height;
}


function getAutomaticObjectLeft(offset) {
  return offset;
}

function getAutomaticObjectCenter(win, menuWidth) {
  var widthWin=getWidthWindow(win);
  var left  = (widthWin - menuWidth - 0) / 2;
  if (left < x0Init)
    left = x0Init;
  return left;
}

function getAutomaticObjectRight(win, widthTable, widthFlash) {
  var widthWin=getWidthWindow(win);
  var right  = (widthWin - widthTable - 0) / 2;
  if (right < 0)
    right = widthTable-widthFlash;
  else
    right=widthWin-right-widthFlash;
  return right;
}

function getXPosition(win, align, widthTable){
  var xPosition;
  if(align==LEFT)
    xPosition=getAutomaticObjectLeft(0);
  else if(align==RIGHT)
    xPosition=getAutomaticObjectRight(win, widthTable, WIDTH_FLASH);
  else //CENTER
    xPosition=getAutomaticObjectCenter(win, widthTable);
  return xPosition;
}


function rightVisionOver(){
  if ((EXISTS_FLASH_OBJ)&&(!supportsTransFlash())){
    layerFlash.hide();
    layerImage.show();
  }
}


function rightVisionOut(){
  if ((EXISTS_FLASH_OBJ)&&(!supportsTransFlash())){
    layerFlash.show();
    layerImage.hide();
  }
}

