var posizione = 0; 


function initSlide () {

	$$('.pre').each( function (s) {
		Event.observe(s, 'click', bind_imgScrollPN);
	});

	/*$$('.nex').each( function (s) {                     
		Event.observe(s, 'click', bind_imgScrollPN);
	}); */

	$$('.godown').each( function (s) {
		Event.observe(s, 'click', down);
	});	

	$$('.goup').each( function (s) {
		Event.observe(s, 'click', ups);
	});
}

function over_on (e){
  e.stop();
  var src = Event.element(e);
  var tmp =  src.readAttribute('src').replace('_off', '_on');
  src.setAttribute('src', tmp)
  //alert('pippo');
  return false;
}

function over_off (e){
  e.stop();
  var src = Event.element(e);
  var tmp =  src.readAttribute('src').replace('_on', '_off');
  src.setAttribute('src', tmp);
    //alert('pippo');
  return false;  
}


/*************************************************************/

function normalize(){
  $('sopra').scrollTop=(-400);
}



function ScrollLeft (_delta) {

  $$('.pre').each( function (s) {
		Event.stopObserving(s, 'click', bind_imgScrollPN);
	});
  
  $$('.green').each( function (s) {
		s.setStyle({visibility:'hidden'});
	});

  var _inc=0;
 
 normalize();


  arrivo = (_delta/800);
  partenza = posizione;
  

  
  _delta = (arrivo - partenza)*800;
  
  if(_delta != 0) 
    scrollata(_delta);
  else
    visible();    
/*  
 new PeriodicalExecuter(function(pe) {
		  $('sopra').scrollLeft+=(100);
		  _inc+=(100);
		  if (Math.abs(_inc)>=Math.abs(5600))
			{
        pe.stop();
        
        indietro(_delta);

      } //
	}, .01);  */
  posizione = arrivo;
}
function indietro(_delta){
    temp = _delta;
    _inc=0;

    new PeriodicalExecuter(function(pe) {
		      $('sopra').scrollLeft+=(100*-1);
		      _inc+=(100*-1);
		      
		    if (Math.abs(_inc)>=Math.abs(5600)){
		      pe.stop();
    	    scrollata(temp);           
        }
        

        }, .01); 
}

function scrollata(temp){
  _delta = temp;
  
  _inc=0; 
  
  if(temp != 0){
    
    new PeriodicalExecuter(function(pe) {
		    
		    if(_delta<0){
          $('sopra').scrollLeft+=(100*-1);
          _inc+=(100*-1);

        }          
		    else{
          $('sopra').scrollLeft+=(100);
          _inc+=(100);
        }
		    
        if (Math.abs(_inc)>=Math.abs(_delta)){
         pe.stop();
			   visible();
        }
			  
	  }, .03); 
  }  
  else
  {
    pe.stop();
		visible();
  }
}


function imgScrollPN (event) {
	event.stop();
	var src=Event.element(event);

	if (src.tagName.toLowerCase()!='a')
		src=src.up('a');
		
//	alert(src.readAttribute('id'));	
	//set PN

  delta =  src.readAttribute('id').substr(1,2);
	
	ScrollLeft(800*delta);
	
	return false;
}

function visible() {
  $$('.green').each( function (s) {
		s.setStyle({visibility:'visible'});
	});
	$$('.pre').each( function (s) {
		Event.observe(s, 'click', bind_imgScrollPN);
	});
}

function down(event){
  event.stop();
 
  _inc=0; 
  new PeriodicalExecuter(function(pe) {
		  $('sopra').scrollTop+=(100);
		  _inc+=(100);
		 
		  if (Math.abs(_inc)>=Math.abs(500))
			 pe.stop();
	}, .05); 
}

function ups(event){
  event.stop();
 
  _inc=0; 
  new PeriodicalExecuter(function(pe) {
		  $('sopra').scrollTop+=(100*-1);
		  _inc+=(100*-1);
		  
		  if (Math.abs(_inc)>=Math.abs(500))
			 pe.stop();
	}, .05); 
}

bind_imgScrollPN=imgScrollPN.bindAsEventListener();


/* -----------------popup---------------------- */
function openPopup(event){

  src = Event.findElement(event); 

  src = Event.findElement(event,'a'); 

  ShowPlayer(src);
  return false;
}

function CloseOver() {
	$('wOver').remove();
	$('wOver_overlay').remove();
}
var Browser = Class.create({
  initialize: function() {
    var userAgent = navigator.userAgent.toLowerCase();
    this.version = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1];
    this.safari = /webkit/.test( userAgent );
    this.opera = /opera/.test( userAgent );
    this.msie = /msie/.test( userAgent ) && !/opera/.test( userAgent );
    this.mozilla = /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent );
  }
});

function ShowOver (_top,_left) {
	arrayPageSize=getPageSize();
	
	$('cnt').insert({after: '<div id="wOver_overlay" style="display: none;"></div>'});	

	$('wOver_overlay').style.width=arrayPageSize[0]+'px';
	$('wOver_overlay').style.height=arrayPageSize[1]+'px';	
	$('wOver_overlay').show();
	$('wOver_overlay').setOpacity(0.5);
	
	
	//SET WAIT
	$('cnt').insert({top: '<div id="wOver" style="display:none;"><div id="wOverContainer">loading...</div></div>'});
	//SET POS
	$('wOverContainer').setStyle({ 
		top: (_top?_top:(document.viewport.getScrollOffsets().top+Math.ceil((arrayPageSize[3]-$('wOverContainer').getHeight())/2)))+'px', 
		marginLeft: (_left?_left+'px':(document.viewport.getScrollOffsets().left+Math.ceil((arrayPageSize[2]-300)/2))+'px')
	});	

	$('wOver').show();
}

function OpenInfoCar(e) {

  var src = Event.element(e);
  var ID = src.readAttribute('id');
  var toopen = 'infotec';
  ID = ID.substring(4);
  ShowPlayer ('',ID,'',toopen);
  return false;
}

function ShowPlayer (src) {
	
	ShowOver();
       
	var bro=new Browser;
	var objHash = {};
	objHash.page=src.className;
	
	
			
				arrayPageSize=getPageSize();
				$('wOver').remove();
				$('cnt').insert({top: '<div id="wOver" style="display: none; height: 450px; width: 450px;"><div id="wOverContainer"><iframe src="http://www.greenbean.it/include/player.php"></iframe></div></div>'});				
				var _top=document.viewport.getScrollOffsets().top+Math.ceil(arrayPageSize[3]/2-280);
				if (Prototype.Browser.IE && bro.version<7) {
					var _left=document.viewport.getScrollOffsets().left+Math.ceil((arrayPageSize[2]-850)/2);
					  
					$('wOverContainer').setStyle({ 
						top: _top+'px', 
						left: _left+'px'
					});	
				} else {
				  var _left=document.viewport.getScrollOffsets().left+Math.ceil(arrayPageSize[2]/2-(850));
					$('wOverContainer').setStyle({ 
						top: _top+'px',
						left: _left+'px'
					});					
				}
				
				$('wOver').show();
							
		
	
	return false;
}


function setActive (id) {	
	var act_id=($$('#player_right .active')[0]?$$('#player_right .active')[0].id:'');	
	if (act_id==id)
		return false;
	switch (act_id)
	{
	case 'show_images':	
		if ($$('#gallery_slide_cnt img.zoomed')[0])
			$$('#gallery_slide_cnt img.zoomed')[0].setOpacity(1.0);
		break;
	case 'play_video':
		break;
	case 'read_info':
		$('player_txt').hide();
		if ($('track_player_txt'))
			$('track_player_txt').hide();
		$('player_cnt').show();
		break;
	case 'read_photo_info':
		$('player_txt').hide();
		if ($('track_player_txt'))
			$('track_player_txt').hide();
		$('player_cnt').show();
		break;
	}
	if (act_id)
		$(act_id).removeClassName('active');
	$(id).addClassName('active');
	return true;
}

function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	
//	console.log(self.innerWidth);
//	console.log(document.documentElement.clientWidth);

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

//	console.log("xScroll " + xScroll)
//	console.log("windowWidth " + windowWidth)

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
//	console.log("pageWidth " + pageWidth)

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.com
//
function getPageScroll(){

	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}



/* SCROLL */
var slider=new Array();
function InitScroll (_box,_delta,_vertical,_hide,_mWheel)
{	

	if (!$(_box))
		return false;

	_vertical=(_vertical==undefined?false:_vertical);

	var boxSize=(_vertical?$(_box).getHeight():$(_box).getWidth());
	if (_delta)
		boxSize+=_delta;
	var cntSize=(_vertical?$(_box).scrollHeight:$(_box).scrollWidth)+boxSize;
	
	var handleSize=Math.round((boxSize*boxSize)/cntSize);	

	if ((_vertical && $(_box).scrollHeight <= $(_box).offsetHeight) ||
		 (!_vertical && $(_box).scrollWidth <= $(_box).offsetWidth)) {
		return;
	}
	$(_box).insert({after: '<div id="track_'+_box+'" class="'+(_vertical?'v':'o')+'Track"><div id="handle_'+_box+'" class="handle"></div></div>'});
	if (_hide)
		$('track_'+_box).hide();
	if (_vertical) {
		$('track_'+_box).setStyle({
			width: '15px',
			height: $(_box).getHeight()+(_delta?_delta:'')+'px'   
		}); 
	
  	if (handleSize>15)
			$('handle_'+_box).style.height=handleSize+"px";  
	
		slider[_box] = new Control.Slider('handle_'+_box, 'track_'+_box, {
			axis: 'vertical',
			onSlide: function(v) { scrollVertical(v, $(_box), slider);  },
			onChange: function(v) { scrollVertical(v, $(_box), slider); }
		});
			      
	} else {
		if (_delta)
			$('track_'+_box).setStyle({width: ($('track_'+_box).getWidth()+_delta)+'px'});
		if (handleSize>15)
			$('handle_'+_box).style.width=handleSize+"px";
		
    
    	
		slider[_box] = new Control.Slider('handle_'+_box, 'track_'+_box, {
			axis: 'horizontal',
			onSlide: function(v) { scrollHorizontal(v, $(_box), slider);  },
			onChange: function(v) { scrollHorizontal(v, $(_box), slider); }
		});
	}	      
	
	if (_mWheel==true || _mWheel==undefined) {
		if (window.addEventListener)	//DOMMouseScroll is for mozilla.
			$(_box).addEventListener('DOMMouseScroll', wheel, false);	
		
		$(_box).onmousewheel = $(_box).onmousewheel = wheel;// IE/Opera.
		
		
	}
	
	    
}

function scrollHorizontal(value, element, slider)
{	
	element.scrollLeft = Math.round(value/slider[element.id].maximum*(element.scrollWidth+10-element.offsetWidth));
}
function scrollVertical(value, element, slider)
{	
	element.scrollTop = Math.round(value/slider[element.id].maximum*(element.scrollHeight+10-element.offsetHeight));
}

function handle(obj,delta) {	
	slider[obj.id].setValueBy(-delta/5);
}

function wheel(event) {	
	var delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/120;
		/** In Opera 9, delta differs in sign as compared to IE.*/
		/*if (window.opera)
			delta = -delta;*/
	} else if (event.detail) { /** Mozilla case. */
		/** In Mozilla, sign of delta is different than in IE.
		* Also, delta is multiple of 3.
		*/
		delta = -event.detail/3;
	}
	/** If delta is nonzero, handle it.
	* Basically, delta is now positive if wheel was scrolled up,
	* and negative, if wheel was scrolled down.
	*/
	if (delta)
		handle(this,delta);
	/** Prevent default actions caused by mouse wheel.
	* That might be ugly, but we handle scrolls somehow
	* anyway, so don't bother here..
	*/
	if (event.preventDefault)
		event.preventDefault();
	event.returnValue = false;
}
/* SCROLL */
var slider=new Array();
function InitScroll (_box,_delta)
{       
   var vh=$(_box).getHeight();
   if (_delta)
       vh+=_delta;
   var rh=$(_box).scrollHeight+vh;
      var sh=Math.round((vh*vh)/rh);   
   if ($(_box).scrollHeight <= $(_box).offsetHeight) {
       $(_box).style.width='210px';
       return;
   }
   $(_box).insert({after: '<div id="track_'+_box+'" class="track"><div id="handle_'+_box+'" class="handle"></div></div>'});
  /* if (_delta)
       $('track_'+_box).setStyle({height: ($('track_'+_box).getHeight()+_delta)+'px'});*/

   if ($(_box).getHeight()<40)
       $('handle_'+_box).hide();

/*      if (sh>15)
       $('handle_'+_box).style.height=sh+"px";
*/       
       
      slider[_box] = new Control.Slider('handle_'+_box, 'track_'+_box, {
       axis: 'vertical',
       onSlide: function(v) { scrollVertical(v, $(_box), slider);  },
       onChange: function(v) { scrollVertical(v, $(_box), slider); }
   });          if (window.addEventListener)    //DOMMouseScroll is for mozilla.
       $(_box).addEventListener('DOMMouseScroll', wheel, false);

   $(_box).onmousewheel = $(_box).onmousewheel = wheel;// IE/Opera.
   
  
}


function scrollVertical(value, element, slider)
{       element.scrollTop = Math.round(value/slider[element.id].maximum*(element.scrollHeight+10-element.offsetHeight));
}

function handle(obj,delta) {       slider[obj.id].setValueBy(-delta/5);
}

function wheel(event) {       var delta = 0;
   if (!event) /* For IE. */
       event = window.event;
   if (event.wheelDelta) { /* IE/Opera. */
       delta = event.wheelDelta/120;
       /** In Opera 9, delta differs in sign as compared to IE.*/
       /*if (window.opera)
           delta = -delta;*/
   } else if (event.detail) { /** Mozilla case. */
       /** In Mozilla, sign of delta is different than in IE.
       * Also, delta is multiple of 3.
       */
       delta = -event.detail/3;
   }
   /** If delta is nonzero, handle it.
   * Basically, delta is now positive if wheel was scrolled up,
   * and negative, if wheel was scrolled down.
   */
   if (delta)
       handle(this,delta);
   /** Prevent default actions caused by mouse wheel.
   * That might be ugly, but we handle scrolls somehow
   * anyway, so don't bother here..
   */
   if (event.preventDefault)
       event.preventDefault();
   event.returnValue = false;
} 
//---------------------------------------------------------------
