/*
 * jQuery Horizon Menu Plugin - A little solution for menus and paging for jQuery.
 *
 *	Author: Lander Ontoria <lander@irontec.com>, http://www.irontec.com , http://code.irontec.com
 *  
 * With special thanks Jabi Infante <jabi@irontec.com> (who started the first version of this plugin to work).
 * 
 * Website: http://code.irontec.com/jQuery/HorizonMenu
 *	
 * Copyright (c) 2008 Lander Ontoria <lander@irontec.com>, http://www.irontec.com
 * 
 * version 1.5 (24/04/2008)
 */

(function($) {
    $.fn.supermenu = function(options) {
			var settings = {
          		updateInterval : 100,
          		selected : false,
          		selectedClass : '',
          		oClass: ''
         	};
        	if(options)	$.extend(settings, options); 
			return this.each(function(a) {
				var self = this;
				var s = settings;
				this.s = s;
				$(this).wrap('<div class="supermenu'+s.oClass+'"></div>').css("left","0px");
				self.ulw = 0;				
				self.divw = $(this).parent(".supermenu"+s.oClass)[0].offsetWidth;
				self.initw = self.divw; 
				marg = (self.initw/3);
				if (s.selected) {
					var initialScroll = 0;
					var initialIndex = 0;
					var FoundClass = false;
				} 
				ali = [];
				$("li",$(this)).each(function(i) {
					if ((s.selected) && (!FoundClass)) {
						initialScroll = self.ulw; 
						initialIndex = i;
						if (($(this).attr("class")) && ($(this).attr("class").indexOf(s.selectedClass)!=-1)) {
							FoundClass = true;
						}
					}
					ali[i] = $(this)[0].offsetWidth+parseInt($(this).css("marginLeft"))+parseInt($(this).css("marginRight"));
					self.ulw += $(this)[0].offsetWidth+parseInt($(this).css("marginLeft"))+parseInt($(this).css("marginRight"));				
				});
				
				
				if (s.selected) {
					if (self.ulw-initialScroll<self.divw) {
						if ((initialScroll+marg)>(self.ulw-marg)){
							initialScroll = initialScroll - (self.divw - (self.ulw-initialScroll));
						}else{
						initialScroll = (initialScroll -marg);
						}
					}else	if (initialScroll< (self.initw/2)) {
						initialScroll=0;
					}else{
						initialScroll=initialScroll-marg;;					
					}
					initialScroll = 0;
					$(this).css("left",(initialScroll*-1)+"px");
				}
				
				$(this).css("width",self.ulw+"px");
				
				$.fn["right"] = function(fn){
          		return fn ? this.bind("right", fn) : this.trigger("right");
          	}
				$.fn["left"] = function(fn){
          		return fn ? this.bind("left", fn) : this.trigger("left");
          	}
				$(this)["left"](function(e,offset) {
					if (self.divw>=self.ulw) return;
        			var curLeft = parseFloat($(self).css("left"));
					var newLeft = ((curLeft+offset)>0)? 0:curLeft+offset;
					$(self).css("left",newLeft);
					return $(this);
				});		
				$(this)["right"](function(e,offset) {
					if (self.divw>=self.ulw) return;
        			var curLeft = parseFloat($(self).css("left"));
					var newLeft = (Math.abs(curLeft-offset)>(self.ulw-self.divw))? (self.ulw-self.divw)*(-1):curLeft-offset;
					$(self).css("left",newLeft);
					return $(this);
				});	
				return $(this);
			});   	
       return $(this); 	
	};
})(jQuery);

(function($) {

$.event.special.mousewheel = {
	setup: function() {
		var handler = $.event.special.mousewheel.handler;
		
		// Fix pageX, pageY, clientX and clientY for mozilla
		if ( $.browser.mozilla )
			$(this).bind('mousemove.mousewheel', function(event) {
				$.data(this, 'mwcursorposdata', {
					pageX: event.pageX,
					pageY: event.pageY,
					clientX: event.clientX,
					clientY: event.clientY
				});
			});
	
		if ( this.addEventListener )
			this.addEventListener( ($.browser.mozilla ? 'DOMMouseScroll' : 'mousewheel'), handler, false);
		else
			this.onmousewheel = handler;
	},
	
	teardown: function() {
		var handler = $.event.special.mousewheel.handler;
		
		$(this).unbind('mousemove.mousewheel');
		
		if ( this.removeEventListener )
			this.removeEventListener( ($.browser.mozilla ? 'DOMMouseScroll' : 'mousewheel'), handler, false);
		else
			this.onmousewheel = function(){};
		
		$.removeData(this, 'mwcursorposdata');
	},
	
	handler: function(event) {
		var args = Array.prototype.slice.call( arguments, 1 );
		
		event = $.event.fix(event || window.event);
		// Get correct pageX, pageY, clientX and clientY for mozilla
		$.extend( event, $.data(this, 'mwcursorposdata') || {} );
		var delta = 0, returnValue = true;
		
		if ( event.wheelDelta ) delta = event.wheelDelta/120;
		if ( event.detail     ) delta = -event.detail/3;
		if ( $.browser.opera  ) delta = -event.wheelDelta;
		
		event.data  = event.data || {};
		event.type  = "mousewheel";
		
		// Add delta to the front of the arguments
		args.unshift(delta);
		// Add event to the front of the arguments
		args.unshift(event);

		return $.event.handle.apply(this, args);
	}
};

$.fn.extend({
	mousewheel: function(fn) {
		return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
	},
	
	unmousewheel: function(fn) {
		return this.unbind("mousewheel", fn);
	}
});

})(jQuery);

// INIT
$(document).ready(function() {
		/*Third box*/
		$("#listai").supermenu({selected:true,selectedClass:'selected',oClass:'_i'});
		$(".supermenu_i").mousewheel(function(eventA, deltaA) {
				if (deltaA > 0) $("#listai").trigger("left",[10]);
				else if (deltaA < 0) $("#listai").trigger("right",[10]);
				eventA.stopPropagation();
				eventA.preventDefault();
		})
		/*MOUSEOVER & MOUSEOUT*/
		$("#izdai").bind("mouseover",function() {
			var offset_ = 2;			
			this.interval_ = window.setInterval(function() {
				offset_ = (offset_) +(offset_-1);
				$("#listai").trigger("left",[offset_]);
			},100);
		}).bind("mouseout",function() {
			window.clearInterval(this.interval_);
			this.offset_ = 0;
		});
		$("#dchai").bind("mouseover",function() {
			var offset_ = 2;
			this.interval_ = window.setInterval(function() {
				offset_ = (offset_) +(offset_-1);
				$("#listai").trigger("right",[offset_]);
			},100);
		}).bind("mouseout",function() {
			window.clearInterval(this.interval_);
			this.offset_ = 0;
		});
		/*End Third box*/
});