/*mouse-wheel/  */
(function($) {
var types = ['DOMMouseScroll', 'mousewheel'];
$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener )
            for ( var i=types.length; i; )
                this.addEventListener( types[--i], handler, false );
        else this.onmousewheel = handler;
    },
    teardown: function() {
        if ( this.removeEventListener )
            for ( var i=types.length; i; )
                this.removeEventListener( types[--i], handler, false );
        else this.onmousewheel = null;
    }
};
$.fn.extend({
    mousewheel: function(fn) {return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");},
    unmousewheel: function(fn) {return this.unbind("mousewheel", fn);}
});
function handler(event) {
    var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
    event = $.event.fix(event || window.event);
    event.type = "mousewheel";
    if ( event.wheelDelta ) delta = event.wheelDelta/120;
    if ( event.detail     ) delta = -event.detail/3;
    // Add event and delta to the front of the arguments
    args.unshift(event, delta);
    return $.event.handle.apply(this, args);
}})(jQuery);

/*
* @Author: Papay
* Usage:
* var opts = {
*	.... // array of options
* }
* $('#my-id').slider(opts);
*/
(function($) {
	var options;
	var navElements;
    var slides;
    var period = null;
    var timeout = null;
    $.fn.jQSlider = function(opts) {
        target = $(this)[0];
	    if (!target || !target.nodeName){return alert('Informer: argument "target" is not DOM Element');}
	    options = $.extend({
            navigation:{
                container:'#navigator_outer',
                elements:'.element',
                selectedClass: 'selected_left'
            },
            slides:{
                container:'#slides',
                elements:'.slide',
                infoContainer:'.long_desc',
                infoContainerPosition: 'right',
                startFx:{
                    'top':0,
                    'left':0,
                    'width':640,
                    'height':300
                },
                endFx:{
                    'top':150,
                    'left':320,
                    'width':0,
                    'height':0
                }
            },
            startElem:0,
            autoSlide:1000
        }, opts);
        navElements = $(options.navigation.elements);
        slides = $(options.slides.elements);
        start();
    }
    function start(){
        currentElem = options.startElem ? options.startElem - 1 : 0;
        l = navElements.length;
        ul = $('<ul id="navigator">');
        navElements.each(function(a, b){
            ul.append($('<li class="element">').addClass('c_'+l).append($(b).children()));
            $(options.navigation.container).append(ul);
            if (a == currentElem) {
                $(ul.find(options.navigation.elements)[a]).addClass(options.navigation.selectedClass);
            }
            $(ul.find(options.navigation.elements)[a]).bind('click', function(){
				if (a==currentElem){
                    if(href = $(ul.find(options.navigation.elements)[a]).find('input.href').val()) {window.location.href=href}
                    return;
                }
                $(this).stop(true, true);
				clearInterval(period);
                changeSlide(a);
                if (options.autoSlide) {
                    clearTimeout(timeout);
                    timeout = setTimeout(function() {period = setInterval(rotate, options.autoSlide)}, 15000);
                }
            });
        })
        $(options.slides.container).addClass('c_'+l);
        slides.each(function(c, elem){
            $(options.slides.container).append(elem);
            $(elem).css({display:"block",position:"absolute",left:0,top:0});
			if (!($.browser.msie && $.browser.version <= 8)){
				$(elem).css('opacity', (c==currentElem ? 1 : 0));
			}
            if (c !== currentElem) {
            	if (!($.browser.msie && $.browser.version <= 8)){
					options.slides.endFx.opacity = 0;
				}
                $(elem).animate(options.slides.endFx, 1000);
            }
            if (c == currentElem) {
                if (!($.browser.msie && $.browser.version <= 8)){
					options.slides.startFx.opacity = 1
				}
                $(elem).css(options.slides.startFx);
            }
            $(elem).bind("mouseover", function() {showInfo(elem)})
            if (options.autoSlide) {
                $(elem).bind("mouseover", function() {clearInterval(period)});
                $(elem).bind("mouseout", function() {period = setInterval(rotate, options.autoSlide)});
            }
        });
        navElements = $(options.navigation.container).find(options.navigation.elements);
        slides = $(options.slides.container).find(options.slides.elements);
        if (options.autoSlide) {
            period = setInterval(rotate, options.autoSlide);
        }
        $('ul#navigator').bind('mousewheel', function(event, delta) {
            newSlide = (currentElem==0 && delta==1) ? navElements.length-1 : (currentElem==(navElements.length-1) && delta==-1) ? 0 : currentElem-delta;
            changeSlide(newSlide);
            return false;
        });
    }
    function showInfo(a){
        $(a).siblings().find(options.slides.infoContainer).css({'left':'-251px','display':'none'});
        $(a).find(options.slides.infoContainer).css({'display':'block'});
        $(a).find(options.slides.infoContainer).animate({'left':'89px'});
        $(a).find('.modelimage').animate({'left':'450px'});
    }
    function changeSlide(a) {
    	clearInterval(period);
        $(slides).each(function(a,b){
            $(b).stop(true, true);
            $(b).find(options.slides.infoContainer).css({'left':'-251px', 'display':'none'});
            $(b).find('.modelimage').css({'left':'-10px'});
        });
        if (a == currentElem) {return}
		if (!($.browser.msie && $.browser.version <= 8)){
			options.slides.endFx.opacity = 0;
		}
        $(slides[currentElem]).animate(options.slides.endFx, 1000);
        if (!($.browser.msie && $.browser.version <= 8)){
			options.slides.startFx.opacity = 1;
		}
		$(slides[a]).animate(options.slides.startFx, 200);
		
        $(navElements[currentElem]).removeClass(options.navigation.selectedClass);
        $(navElements[a]).addClass(options.navigation.selectedClass);
        currentElem = a
        if (options.autoSlide) {
            period = setInterval(rotate, options.autoSlide);
        }
    }
    function rotate() {
        var a = currentElem + 1 < navElements.length ? currentElem + 1 : 0;
        changeSlide(a)
    }
})(jQuery);

