/////////////////////////////////////////////////////////////
/*PARAMETROS PARA EL CARRUSEL*/
var numFotosCoulisses = 3;/*número de fotos en el carrusel*/
var brakeFotos = 10;/*velocidad con la que se abren las fotos para dejar ver la siguiente*/
var inactiveFotosWidth = 100;/*area en pixels que queda para las fotos que permanecen detrás en segundo plano, es el resultado de dividir el espacio total-tamaño de foto dividido entre el número de fotos en segundo plano*/
var totalFotosWidth = 500;/*espacio total para las fotos en pixels*/
var timeCorrerFotos = 5000;/*tiempo que tardan en irse desplazando cada una de las fotos, para dejar paso a la siguiente*/

function fixCoulisseImage( img	) {
  img.parentNode.style.width  = img.width  + "px";
  img.parentNode.style.height = img.height + "px";
}


allCoulisseControls = new Array()
with( CoulisseControl = function()  {
  this.toString = new Function( "return 'allCoulisseControls["  + allCoulisseControls.length  + "]';" );
  allCoulisseControls[  allCoulisseControls.length  ] = this;

  this.elementId  = arguments[  0 ];
   this.element = null;
  this.itemElements = new Array();
  this.itemClassName  = "Item";
  this.innerClassName = "Inner";
  this.activeItemElement  = null;
  this.lastActiveItemElement = null;

  this.brake  = brakeFotos;/*velocidad con la que se abren las fotos para dejar ver la siguiente*/
  this.inactiveItemWidth  = inactiveFotosWidth;/*area que queda para las fotos que permanecen detrás en segundo plano, es el resultado de dividir el espacio total-tamaño de foto dividido entre el número de fotos en segundo plano*/
  this.inactiveItemHeight = null;
  this.totalWidth = null;

  this.mouseX = null;
   this.mouseY  = null;

  this.expandRight  = true;

  this.offset = 0;
  
  this.isMoving	=	false;
  } ) {

  prototype.setItemClassName  = function()  {this.itemClassName = arguments[  0 ];}
  prototype.getItemClassName  = function()  {return this.itemClassName;}

  prototype.setInnerClassName = function()  {this.innerClassName  = arguments[  0 ];}
  prototype.getInnerClassName = function()  {return this.innerClassName;}

  prototype.setActiveItemElement  = function()  {this.activeItemElement = arguments[  0 ]; if (arguments[0]) this.lastActiveItemElement = arguments[  0 ]}
  prototype.getActiveItemElement  = function()  {return this.activeItemElement;}

  prototype.setBrake  = function()  {this.brake = arguments[  0 ];}
  prototype.getBrake  = function()  {return this.brake;}

  prototype.setInactiveItemWidth  = function()  {this.inactiveItemWidth = arguments[  0 ];}
  prototype.getInactiveItemWidth  = function()  {return this.inactiveItemWidth;}

  prototype.setTotalWidth = function()  {this.totalWidth  = arguments[  0 ];}
  prototype.getTotalWidth = function()  {return this.totalWidth;}

  prototype.setExpandRight  = function()  {this.expandRight = arguments[  0 ];}
  prototype.getExpandRight  = function()  {return this.expandRight;}
  
  
  prototype.start = function()  {
    this.element  = document.getElementById(  this.elementId  );
    if( !this.element ) {
      return false;
      }
    var maxHeight = 0;
    with( this.element  ) {
      for(  var c = 0;  c < childNodes.length;  c ++  ) {
        var itemElement = childNodes[ c ];
        if( itemElement.className ==  this.itemClassName  ) {
          for(  var c1  = 0;  c1  < itemElement.childNodes.length;  c1  ++  ) {
            var innerElement  = itemElement.childNodes[ c1  ];
            if( innerElement.className  ==  this.innerClassName ) {
              if( !innerElement.style.left
                ||  !innerElement.style.top
                ||  !innerElement.style.width
                ||  !innerElement.style.height
                ) {
                //status="not fnd:"+outerHTML;

                innerElement.originalLeft = parseInt( innerElement.style.left );
                innerElement.originalTop  = parseInt( innerElement.style.top  );
                innerElement.originalWidth  = 1;
                innerElement.originalHeight = 1;

                itemElement.innerElement  = innerElement;
                //return false;
              } else {
                innerElement.originalLeft = parseInt( innerElement.style.left );
                innerElement.originalTop  = parseInt( innerElement.style.top  );
                innerElement.originalWidth  = parseInt( innerElement.style.width  );
                innerElement.originalHeight = parseInt( innerElement.style.height );

                itemElement.innerElement  = innerElement;

                maxHeight = Math.max( maxHeight,  innerElement.originalHeight );
                }
              }
            }

            if (itemElement) {
              itemElement.currentWidth  = this.inactiveItemWidth;
              itemElement.idx = this.itemElements.length;
              this.itemElements[  itemElement.idx  ] = itemElement;
            }
          }
        }

      if( this.totalWidth ) {
        style.overflow  = "hidden";
        style.width = this.totalWidth + "px";
        style.height  = maxHeight + "px";
        }
      this.update();
      style.visibility = "visible";
      style.display = "block";
      }
    return true;
    }

 
  /*va rotando las fotos una tras otra, desde la foto0*/
  prototype.nextItem = function() {
    if (!this.activeItemElement) {
      if (this.lastActiveItemElement)
        this.setActiveItemElement(this.itemElements[Math.min(this.lastActiveItemElement.idx + 1, this.itemElements.length - 1)]);
      else
        this.setActiveItemElement(this.itemElements[0]);
    }
    else
      this.setActiveItemElement(this.itemElements[Math.min(this.getActiveItemElement().idx + 1, this.itemElements.length - 1)]);
    this.activeElementToBeSet = this.activeItemElement;
  };


  prototype.step  = function()  {
    if( !this.element ) {
      this.start();
      return false;
      }
    if (this.activeElementToBeSet) { this.setActiveItemElement(this.activeElementToBeSet); this.activeElementToBeSet = null; }
		var totalSizeSpeed	=	0;
    for(  var c = 0;  c < this.itemElements.length; c ++  ) {
      var itemElement = this.itemElements[  c ];
      var itemElementWidth  = this.inactiveItemWidth;

      if( itemElement ==  this.activeItemElement  ) {
        itemElementWidth  = itemElement.innerElement.originalWidth;
        }

      var sizeSpeed = ( itemElementWidth  - itemElement.currentWidth  ) / this.brake;
      sizeSpeed = ( sizeSpeed < 0 ) ? Math.floor( sizeSpeed ) : Math.ceil(  sizeSpeed );
      itemElement.currentWidth  = ( itemElement.currentWidth  + sizeSpeed );

			totalSizeSpeed	+=	Math.abs(	sizeSpeed	);
      }

    if( this.totalWidth ) {
      var currentTotalWidth = 0;
      var activeItemOffset  = 0;
      for(  var c = 0;  c < this.itemElements.length; c ++  ) {
        var itemElement = this.itemElements[  c ];
        if( itemElement ==  this.activeItemElement  ) {
          activeItemOffset  = currentTotalWidth - parseInt( ( this.totalWidth - this.activeItemElement.currentWidth ) / 2 );

          var offsetSpeed = ( activeItemOffset  - this.offset ) / this.brake;
          offsetSpeed = ( offsetSpeed < 0 ) ? Math.floor( offsetSpeed ) : Math.ceil(  offsetSpeed );
          this.offset = ( this.offset + offsetSpeed );

          }

        currentTotalWidth +=  itemElement.currentWidth;
        }


      d = this.totalWidth - currentTotalWidth;
      
      if( d > 0 ) {
        wd  = parseInt( d / this.itemElements.length  );
        wdm = d % this.itemElements.length;
        currentTotalWidth = 0;
        for(  var c = 0;  c < this.itemElements.length; c ++  ) {
          var itemElement = this.itemElements[  c ];
          itemElement.currentWidth  +=  wd;
          if( c < wdm ) {
            itemElement.currentWidth  ++;
            }
          currentTotalWidth +=  itemElement.currentWidth;
          }
        }

      this.offset = Math.min( Math.max( this.offset,  0 ),  currentTotalWidth - this.totalWidth );
      }
    else  {
      this.offset = 0;
      }
    
    if (totalSizeSpeed	== 0 &&	this.isMoving	==	true	){
      //alert('');
    }      
		if(	totalSizeSpeed	<	10	&&	this.isMoving	==	true	)	{
			this.isMoving	=	false;
			if(	this.onMoveStop	)this.onMoveStop();
    }
		else if(	totalSizeSpeed	>=	10	&&	this.isMoving	==	false	)	{
			this.isMoving	=	true;
			if(	this.onMoveStart	)this.onMoveStart();
    }
    this.update();

    return true;
    }
	

  prototype.update  = function()  {
    var currentTotalWidth = 0;
    for(  var c = 0;  c < this.itemElements.length; c ++  ) {
      itemElement = this.itemElements[  c ];

      with( this.itemElements[  c ] ) {
        var p = currentTotalWidth;
        if( this.totalWidth ) {
          p -=  this.offset;
          }
        if( currentWidth  > 0 &&  ( !this.totalWidth  ||  p > 0 - itemElement.currentWidth  &&  p < this.totalWidth ) ) {
		      style.visibility = "visible";
          style.display = "block";
          if( this.expandRight  ) {
            style.left  = p + "px";
            }
          else  {
            style.right = p + "px";
            }
          style.width = currentWidth  + "px";

          var newLeft = parseInt( innerElement.originalLeft - innerElement.originalLeft * currentWidth  / innerElement.originalWidth  ) + "px";
          /*alert(newLeft);
          alert(innerElement.originalLeft);
          alert(innerElement.originalLeft);
          alert(currentWidth);
          alert(innerElement.originalWidth);
          */
          //status = newLeft;

          innerElement.style.left = newLeft;

          if( this.inactiveItemHeight ) {
            style.height  = this.inactiveItemHeight + parseInt( ( currentWidth  - this.inactiveItemWidth  ) * ( innerElement.originalHeight - this.inactiveItemHeight ) / ( innerElement.originalWidth  - this.inactiveItemWidth  ) ) + "px";
            }

          }
        else  {
          style.display = "none";
          //status = 'nee';
          }

        if( this.mouseX !== null  &&  this.mouseY !== null  &&  this.mouseX > itemElement.offsetLeft  &&  this.mouseX < itemElement.offsetLeft  + itemElement.offsetWidth ) {
          this.setActiveItemElement(  itemElement );
          }

        currentTotalWidth +=  currentWidth;
        }
      }

    }

  }


function step() {
  subhomeCoulisseControl.step();
}

/*subhome coulissen*/
subhomeCoulisseControl = new CoulisseControl(  "subhomeCoulisse"  );
subhomeCoulisseControl.setBrake( brakeFotos  );/*velocidad con la que se abren las fotos para dejar ver la siguiente*/
subhomeCoulisseControl.setInactiveItemWidth( inactiveFotosWidth  );/*area que queda para las fotos que permanecen detrás en segundo plano, es el resultado de dividir el espacio total-tamaño de foto dividido entre el número de fotos en segundo plano*/
subhomeCoulisseControl.setExpandRight( true );
subhomeCoulisseControl.setTotalWidth(  totalFotosWidth );/*mi espacio total para las fotos son 500px*/

/**/	
subhomeCoulisseControl.onMoveStop =	function()	{
  for(var i = 0;  i < subhomeCoulisseControl.itemElements.length; i++) {
    var el = subhomeCoulisseControl.itemElements[i];
    var elOverlay = el.getElementsByTagName('div')[1];
    elOverlay.className = 'overlay hidden';
    if (el == subhomeCoulisseControl.activeItemElement){
      elOverlay.className = 'overlay';
    }
  }
  subhomeCoulisseControl.startAutoPlay();
}

/**/
subhomeCoulisseControl.onMoveStart = function()	{
  for(var i = 0;  i < subhomeCoulisseControl.itemElements.length; i++) {
    var el = subhomeCoulisseControl.itemElements[i];
    var elOverlay = el.getElementsByTagName('div')[1];
    elOverlay.className = 'overlay hidden';
  }
  subhomeCoulisseControl.stopAutoPlay();
}


/*muestra la primera foto y deja las otras en segundo plano*/
subhomeCoulisseControl.setup = function (){
  var el = getEl(subhomeCoulisseControl.elementId);
  if (!el){
    return;
  }
  var activeElement = el.getElementsByTagName('div')[0];
  if (!activeElement){
    return;
  }
  subhomeCoulisseControl.setActiveItemElement(activeElement);
  subhomeCoulisseControl.setupAutoPlay();
}

/*desplaza las fotos del carrusel mostrando la que hay bajo el ratón*/
subhomeCoulisseControl.setupAutoPlay = function(){
  if (subhomeCoulisseControl.itemElements.length != numFotosCoulisses){
    setTimeout('subhomeCoulisseControl.setupAutoPlay()',10);
    return;
  }
  
  subhomeCoulisseControl.startAutoPlay(); 
  
  //mouseover variant
  for(var i = 0;  i < subhomeCoulisseControl.itemElements.length; i++) {
    var itemEl = subhomeCoulisseControl.itemElements[i];
    addEvent(itemEl,'mouseover', 
      function(){
        subhomeCoulisseControl.setActiveItemElement(this);
      }
    );
  }
  
  
  var el = getEl(subhomeCoulisseControl.elementId);
  
  addEvent(el,'mouseover', 
      function(){
        subhomeCoulisseControl.hasMouseOver = true;
        subhomeCoulisseControl.stopAutoPlay();
      }
    );
    
  addEvent(el,'mouseout', 
      function(e){
        if(eventOnPartOfElement(e, this, true)){
          return;
        }
        subhomeCoulisseControl.hasMouseOver = false;
        if (subhomeCoulisseControl.isMoving){
          return;
        }
        subhomeCoulisseControl.startAutoPlay();
      }
    );  
}

/*va rotando las fotos una a una en el carrusel*/
subhomeCoulisseControl.autoPlay = function (){
  var elements = subhomeCoulisseControl.itemElements;
  if(elements[elements.length - 1] == subhomeCoulisseControl.getActiveItemElement()){
    subhomeCoulisseControl.setActiveItemElement(elements[0]);
  }
  else {
    subhomeCoulisseControl.nextItem();
  }
}

subhomeCoulisseControl.startAutoPlay = function (){
  if (subhomeCoulisseControl.hasMouseOver){
    return;
  }
  subhomeCoulisseControl.aPTimer = setTimeout('subhomeCoulisseControl.autoPlay()',timeCorrerFotos);/*tiempo que tardan en irse desplazando cada una de las fotos, para dejar paso a la siguiente*/
}

subhomeCoulisseControl.stopAutoPlay = function (){
  clearTimeout(subhomeCoulisseControl.aPTimer);
}

addEvent(window,'load', subhomeCoulisseControl.setup);


