(function($) {
    $.fn.innerfade = function(options) {
        return this.each(function() {
            $.innerfade(this, options);
        });
    };

    $.innerfade = function(container, options) {
        var settings = {
            'speed':            'fast',
            'timeout':          2000,
            'containerheight':  406,
            'runningclass':     'innerfade',
            'children':         null
        };
        if(options)
            $.extend(settings, options);
        if(settings.children === null)
            var elements = $(container).children();
        else
            var elements = $(container).children(settings.children);

        if (elements.length > 1) {
            $(container).css('position', 'relative').css('height', settings.containerheight).addClass(settings.runningclass);
            for (var i = 0; i < elements.length; i++) {
                $(elements[i]).css('z-index', String(elements.length-i)).css('position', 'absolute').hide();
            }
            $.innerfade.current = 0;
            $.innerfade.last = 3;

            $.innerfade.bindautonext(elements, settings);
            $(elements[0]).show();

            $.innerfade.bindButtonEvents(elements, settings);

            settings.pause = false;
        }
    };

    $.innerfade.bindButtonEvents = function(elements, settings){
        $('#right-arrow').click(function(){
                $.innerfade.next(elements, settings);
        });

        $('#left-arrow').click(function(){
            $.innerfade.prev(elements, settings);
        });

        $('#play').click(function(){
            $.innerfade.pause(elements, settings);
        });

        $('.button-number').click(function(event){
            $.innerfade.gotoPic(event,elements, settings);
        });
        
    };

    $.innerfade.pause = function(elements, settings){
        clearTimeout(window.tout);
        $('#play').unbind();
        $('#play').css('background','url("/imagenes/slide/play.gif")');
        settings.pause = true;
        $('#play').click(function(){
            $.innerfade.play(elements, settings);
        });
    };

    $.innerfade.play = function(elements, settings){
        $('#play').unbind();
        $('#play').css('background','url("/imagenes/slide/pause.gif")');
        settings.pause = false;
        $('#play').click(function(){
            $.innerfade.pause(elements, settings);
        });
        $.innerfade.bindautonext(elements, settings);
    };

    $.innerfade.gotoPic = function(event, elements, settings){
        var elem = event.target;
        var num = parseInt(elem.id.substring((elem.id.indexOf('-') + 1)), 10);
        if($.innerfade.current != (num - 1)){
            $.innerfade.last = $.innerfade.current;
            $.innerfade.current = num - 1;
            $.innerfade.doFade(elements, settings, $.innerfade.current, $.innerfade.last);
        }
        
    };

    $.innerfade.doFade = function(elements, settings, current, last){
        
        $("#index-"+(last + 1)).css('border','0');
        $("#index-"+(current + 1)).css('border','1px solid white');
        $(elements[last]).fadeOut(settings.speed);
        $(elements[current]).fadeIn(settings.speed, function() {
            removeFilter($(this)[0]);
            if(!settings.pause){
                $.innerfade.bindautonext(elements, settings);
            }
        });        
    };

    $.innerfade.bindautonext = function(elements, settings) {
        clearTimeout(window.tout);
        window.tout = setTimeout(function() {
            $.innerfade.autonext(elements, settings);
        }, settings.timeout);
    };

    $.innerfade.autonext = function(elements, settings) {
        $.innerfade.next(elements, settings)
        clearTimeout(window.tout);
    };

    $.innerfade.next = function(elements, settings) {
        if(($.innerfade.current + 1) > (elements.length - 1)){
            $.innerfade.current = 0
            $.innerfade.last = elements.length - 1;
        }
        else {
            $.innerfade.last = $.innerfade.current;
            $.innerfade.current = $.innerfade.current + 1;
        }
        $.innerfade.doFade(elements, settings, $.innerfade.current, $.innerfade.last);
    };

    $.innerfade.prev = function(elements, settings) {
        if(($.innerfade.current - 1) < 0){
            $.innerfade.current = elements.length - 1;
            $.innerfade.last = 0;
        }
        else {
            $.innerfade.last = $.innerfade.current;
            $.innerfade.current = $.innerfade.current - 1;
        }
        $.innerfade.doFade(elements, settings, $.innerfade.current, $.innerfade.last);
    };
})(jQuery);



// **** remove Opacity-Filter in ie ****
function removeFilter(element) {
	if(element.style.removeAttribute){
            element.style.removeAttribute('filter');
	}
}


