//Horinaja Content Slide
Object.extend(Event, {
    wheel:function (event){
    var delta = 0;
    if (event.wheelDelta) {
	delta = event.wheelDelta/120;
	if (window.opera) delta = -delta;
    } else if (event.detail) {
	delta = -event.detail/3;
    }
	if(navigator.userAgent.indexOf('Mac') != -1) delta = -delta; 	 
	return Math.round(delta);
    }
});
var Horinaja = Class.create();
Horinaja.prototype = {
    initialize: function(capture, duree, secExecution, pagination){
	this.capture = capture;
	this.duree = duree;
	this.secExecution = secExecution;
	this.pagination = pagination;
	this.nCell = 0;
	this.id = 1;
	this.po = 0;	
	this.f = $$('div#'+this.capture+' ul li');
	this.px = $(this.capture).getWidth();
	this.pxH = $(this.capture).getHeight();
	this.start();
    },
    start: function(){		
	this.mover = $(this.capture).firstDescendant();	
	this.nCell = this.f.length;	
	for(i=0;i!=this.nCell;i++){
	    this.f[i].setStyle({
		width: this.px+'px',
		height: (this.pxH)+'px',
		float: 'left'
	    });	
	}
	
	$(this.capture).setStyle({
	    overflow:'hidden',
	    position: 'relative'
	});
	
	$(this.capture).firstDescendant().setStyle({
	    width:(this.px*this.nCell)+'px'
	});
	
	if(this.pagination){
	    $(this.capture).insert({bottom:'<ol class="horinaja_pagination"></ol>'});
	    this.olPagination  = $(this.capture).firstDescendant().next();
	    this.wb = Math.floor(this.px/this.f.length);
	    for(i=1;i!=(this.f.length+1);i++){
		$(this.olPagination).insert({bottom:'<li><a title="'+ i +'" href="javascript:void(0);">'+i+'</a></li>'});
		if(i!=this.id){
		    $(this.olPagination).childElements()[i-1].setStyle({
			opacity:0.2
		    });					
		}
	    }
	    $(this.olPagination).childElements()[0].setStyle({
		opacity:1
	    });	
	    this.startOC();
	}
	this.startPe();
	Event.observe($(this.capture),"mouseout", this.startPe.bind(this));
	Event.observe($(this.capture),"mouseover", this.stopPe.bind(this));								
	Event.observe($(this.capture), "mousewheel", this.wheelwheel.bind(this));		
	Event.observe($(this.capture), "DOMMouseScroll", this.wheelwheel.bind(this));				
    },
    
    startOC: function(){
	Event.observe($(this.olPagination),"click", this.moveP.bind(this));
    },
    
    startPe: function(){
	this.periodik = new PeriodicalExecuter(this.Pe.bind(this),this.secExecution);	
    },
    
    stopPe: function(){
	this.periodik.stop();
    },
    
    effaceP: function(mop){
	this.mop = mop;
	if(this.pagination)
	new Effect.Fade($(this.olPagination).childElements()[this.mop-1],{duration:0.3,to:0.2})
    },
    move: function(xp){
	this.xp = xp;
	new Effect.Move(this.mover, { 
	    x: this.xp, 
	    y: 0,
	    mode:'absolute',
	    duration: this.duree,
	    transition: Effect.Transitions.sinoidal
	});
	
	if(this.pagination) {
	    new Effect.Appear($(this.olPagination).childElements()[this.id-1],{duration:0.3,to:1})
	}	
    },	
    Pe: function(){
	if(this.id<this.nCell){
	    this.po=this.po-this.px;
	    this.effaceP(this.id);
	    this.id=this.id+1;
	    this.move(this.po);
	} else {
	    this.po=0;
	    this.effaceP(this.id);
	    this.id=1;
	    this.move(this.po);
	}
    },
    moveP: function(evt){
	var child = Event.element(evt);
	this.occ = parseInt(child.innerHTML);
	if(this.id>this.occ){
	    this.diff= this.id-this.occ;
	    this.po=this.po+(this.px*this.diff);
	    this.effaceP(this.id);
	    this.id=this.occ;
	    this.move(this.po);
	}else if(this.id<this.occ){
	    this.diff= this.occ-this.id;
	    this.po=this.po-(this.px*this.diff);
	    this.effaceP(this.id);
	    this.id=this.occ;
	    this.move(this.po);
	}
    },
    
    stopEvent:function(pE)
    {
	if (!pE)
	    if (window.event)
		pE = window.event;
	    else
		return;
	if (pE.cancelBubble != null)
	    pE.cancelBubble = true;
	if (pE.stopPropagation)
	    pE.stopPropagation();
	if (pE.preventDefault)
	    pE.preventDefault();
    } ,
    
    wheelwheel: function(e){
	this.event = e;
	this.stopPe();
	this.stopEvent(e);
	if (Event.wheel(this.event) < 0){
	    if(this.id<this.nCell){
		this.po=this.po-this.px;
		this.effaceP(this.id);
		this.id=this.id+1;
		this.move(this.po);
	    }
	} else {
	    if(this.id!=1){
		this.po=this.po+this.px;
		this.effaceP(this.id);
		this.id=this.id-1;
		this.move(this.po);
	    }
	}
    }
};
