(function($) {
    //console.log("Line 41 - " + this);
    $.fn.innerfade = function(options) {
        var settings;
        var elements;
        var elements_title;
        var curr_slide_id_number;
        var next_slide_id_number;
        return this.each(function() {
            $.innerfade(this, options);
        });
    };
    //control play and  pause functionality 
    jQuery.pause = function() {
        var elements = $("ul#" + settings.slide_ui_parent + " li");
        var isPlay = $("#" + settings.pause_button_id + " span").html();
        //console.log("Line 58" + isPlay)
        if (isPlay == "pause") {
            $("#" + settings.pause_button_id + " span").html("play");
            settings.slide_timer_on = 'no'
            $("#" + settings.pause_button_id).attr("class", "paused_button");
            //console.log("#"+settings.pause_button_id+" span")
        }
        else {
            $("#" + settings.pause_button_id + " span").html("pause");
            settings.slide_timer_on = 'yes'
            $("#" + settings.pause_button_id).attr("class", "pause_button");
            button_class = $("#button_selected").attr("class");
            split_button_class_string = button_class.split("_");
            button_class_string = split_button_class_string.pop();
            curr_slide_id_number = parseFloat(button_class_string);
            next_slide_id_number = curr_slide_id_number - 1; ;
            setTimeout(function() {
                $.innerfade.next(elements, settings, curr_slide_id_number, next_slide_id_number);
            }, 0);
        }

    }

    // next button
    jQuery.next = function() {
        //console.log("Line 86 - Function: Next & Pause" );
        var elements = $("ul#" + settings.slide_ui_parent + " li");
        $("#" + settings.pause_button_id + " span").html("play");
        $("#" + settings.pause_button_id).attr("class", "paused_button");
        button_class = $("#button_selected").attr("class");
        split_button_class_string = button_class.split("_");
        button_class_string = split_button_class_string.pop();
        curr_slide_id_number = parseFloat(button_class_string) + 1;
        next_slide_id_number = curr_slide_id_number - 1;
        settings.slide_timer_on = 'no'

        if ((curr_slide_id_number) == elements.length) {
            curr_slide_id_number = 0;
            //console.log("curr_slide_id_number next: " + curr_slide_id_number)
        }
        $.skip();
    }

    // prev button
    jQuery.prev = function() {
        //console.log("Line 105 - Function: Prev & Pause" );
        var elements = $("ul#" + settings.slide_ui_parent + " li");
        $("#" + settings.pause_button_id + " span").html("play");
        $("#" + settings.pause_button_id).attr("class", "paused_button");
        button_class = $("#button_selected").attr("class");
        split_button_class_string = button_class.split("_");
        button_class_string = split_button_class_string.pop();
        curr_slide_id_number = parseFloat(button_class_string) - 1;
        next_slide_id_number = curr_slide_id_number - 1;
        settings.slide_timer_on = 'no'
        if ((curr_slide_id_number) < 0) {
            curr_slide_id_number = elements.length - 1;
        }
        $.skip();
    }

    //first button
    jQuery.first = function() {
        $("#" + settings.pause_button_id + " span").html("play");
        $("#" + settings.pause_button_id).attr("class", "paused_button");
        curr_slide_id_number = 0;
        next_slide_id_number = curr_slide_id_number - 1;
        settings.slide_timer_on = 'no'
        $.skip();

    }

    //last button
    jQuery.last = function() {
        var elements = $("ul#" + settings.slide_ui_parent + " li");
        $("#" + settings.pause_button_id + " span").html("play");
        $("#" + settings.pause_button_id).attr("class", "paused_button");
        curr_slide_id_number = elements.length - 1;
        next_slide_id_number = curr_slide_id_number - 1;
        settings.slide_timer_on = 'no'
        $.skip();
        //console.log("skip " + curr_slide_id_number)

    }

    //set options button click event
    jQuery.setOptionsButtonEvent = function() {


        $("#" + settings.slide_nav_id + " li").each(function() {
            // add click functionality to buttons
            $(this).click(function() {
                //console.log("Line 151 " + this)
                $("#" + settings.pause_button_id + " span").html("play");
                $("#" + settings.pause_button_id).attr("class", "paused_button");
                //console.log("Line 154 " +"#"+settings.pause_button_id)
                button_class = $(this).attr("class");
                split_button_class_string = button_class.split("_");
                button_class_string = split_button_class_string.pop();
                //console.log("Line 159 " + button_class_string)
                curr_slide_id_number = parseFloat(button_class_string);
                next_slide_id_number = curr_slide_id_number - 1;
                settings.slide_timer_on = 'no'
                $.skip();
            }); // click
        }); //each
    }


    $.innerfade = function(container, options) {
        settings = {
            'animationtype': 'fade',
            'speed': 'normal',
            'type': 'sequence',
            'timeout': 5000,
            'containerheight': 'auto',
            'runningclass': 'innerfade',
            'children': null,
            'slide_timer_on': 'yes',
            'slide_ui_parent': null,
            'slide_ui_text': null,
            'pause_button_id': null,
            'slide_nav_id': null
        };
        var elements;
        var elements_title;
        if (options)
            $.extend(settings, options);
        if (settings.children === null)
            elements = $(container).children();
        else
            elements = $(container).children(settings.children);
        if (elements.length > 1) {
            if (settings.slide_ui_text != 'null') {
                elements_title = $("ul#" + settings.slide_ui_text + " li")
            }

            $(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();
                if (settings.slide_ui_text != 'null') {
                    $(elements_title[i]).css('z-index', String(elements_title.length - i)).css('position', 'absolute').hide();
                }
            };
            if (settings.type == "sequence") {
                setTimeout(function() {
                    $.innerfade.next(elements, settings, 1, 0);
                }, settings.timeout);
                $(elements[0]).show();
                if (settings.slide_ui_text != 'null') {
                    $(elements_title[0]).show();
                }
                if (settings.slide_nav_id != 'null') {
                    $("#" + settings.slide_nav_id + " li").removeAttr("id");
                    $("#" + settings.slide_nav_id + " .slide_0").attr("id", "button_selected");
                }

            }
            else if (settings.type == "random") {
                next_slide_id_number = Math.floor(Math.random() * (elements.length));
                setTimeout(function() {
                    do {
                        curr_slide_id_number = Math.floor(Math.random() * (elements.length));
                    } while (next_slide_id_number == curr_slide_id_number);
                    $.innerfade.next(elements, settings, curr_slide_id_number, next_slide_id_number);
                }, settings.timeout);
                $(elements[next_slide_id_number]).show();
                if (settings.slide_ui_text != 'null') {
                    $(elements_title[next_slide_id_number]).show();
                }
            }
            else if (settings.type == 'random_start') {
                settings.type = 'sequence';
                curr_slide_id_number = Math.floor(Math.random() * (elements.length));
                setTimeout(function() {
                    $.innerfade.next(elements, settings, (curr_slide_id_number + 1) % elements.length, curr_slide_id_number);
                }, settings.timeout);

                $(elements[curr_slide_id_number]).show();

                if (settings.slide_ui_text != 'null') {
                    $(elements_title[curr_slide_id_number]).show();
                }

            }
            else {
                alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');
            }
        }
    };


    $.skip = function() {


        var elements = $("ul#" + settings.slide_ui_parent + " li");
        if (settings.slide_ui_text != 'null') {
            var elements_title = $("ul#" + settings.slide_ui_text + " li")
        }
        for (var i = 0; i < elements.length; i++) {
            if (settings.animationtype == 'fade') {
                $(elements[i]).fadeOut(settings.speed);
                if (settings.slide_ui_text != 'null') {

                    $(elements_title[i]).fadeOut(settings.speed);
                }
            }
            else {
                $(elements[i]).slideUp(settings.speed);
                if (settings.slide_ui_text != 'null') {

                    $(elements_title[i]).slideUp(settings.speed);
                }
            }

        }
        if (settings.animationtype == 'fade') {
            $(elements[curr_slide_id_number]).fadeIn(settings.speed, function() {
                removeFilter($(this)[0]);
            });
            if (settings.slide_ui_text != 'null') {
                $(elements_title[curr_slide_id_number]).fadeIn(settings.speed, function() {
                    removeFilter($(this)[0]);
                });
            }
        }
        else {
            $(elements[curr_slide_id_number]).slideDown(settings.speed, function() {
                removeFilter($(this)[0]);
            });
            if (settings.slide_ui_text != 'null') {
                $(elements_title[curr_slide_id_number]).slideDown(settings.speed, function() {
                    removeFilter($(this)[0]);
                });
            }

        }
        if (settings.slide_nav_id != 'null') {
            $("#" + settings.slide_nav_id + " li").removeAttr("id");
            $("#" + settings.slide_nav_id + " .slide_" + curr_slide_id_number).attr("id", "button_selected");
        }


    } //skip


    $.innerfade.next = function(elements, settings, curr_slide_id_number, next_slide_id_number) {
        var elements_title;
        if (settings.slide_ui_text != 'null') {
            elements_title = $("ul#" + settings.slide_ui_text + " li");
        }

        if (settings.slide_timer_on == 'yes') {

            //alert(elements.length+"yes");
            if (settings.animationtype == 'slide') {
                $(elements[next_slide_id_number]).slideUp(settings.speed);
                $(elements[curr_slide_id_number]).slideDown(settings.speed);

                $(elements[next_slide_id_number]).slideUp(settings.speed);
                if (settings.slide_ui_text != 'null') {
                    $(elements_title[next_slide_id_number]).slideUp(settings.speed);
                }
                $(elements[curr_slide_id_number]).slideDown(settings.speed, function() {
                    removeFilter($(this)[0]);
                });
                if (settings.slide_ui_text != 'null') {
                    $(elements_title[curr_slide_id_number]).slideDown(settings.speed, function() {
                        removeFilter($(this)[0]);
                    });
                }
                if (settings.slide_nav_id != 'null') {
                    $("#" + settings.slide_nav_id + " li").removeAttr("id");
                    $("#" + settings.slide_nav_id + " .slide_" + curr_slide_id_number).attr("id", "button_selected");
                }
            }
            else if (settings.animationtype == 'fade') {
                $(elements[next_slide_id_number]).fadeOut(settings.speed);
                if (settings.slide_ui_text != 'null') {
                    $(elements_title[next_slide_id_number]).fadeOut(settings.speed);
                }
                $(elements[curr_slide_id_number]).fadeIn(settings.speed, function() {
                    removeFilter($(this)[0]);
                });
                if (settings.slide_ui_text != 'null') {
                    $(elements_title[curr_slide_id_number]).fadeIn(settings.speed, function() {
                        removeFilter($(this)[0]);
                    });
                }
                if (settings.slide_nav_id != 'null') {
                    $("#" + settings.slide_nav_id + " li").removeAttr("id");
                    $("#" + settings.slide_nav_id + " .slide_" + curr_slide_id_number).attr("id", "button_selected");
                }
            }
            else
                alert('Innerfade-animationtype must either be \'slide\' or \'fade\'');

            if (settings.type == "sequence") {

                //alert(curr_slide_id_number);
                if ((curr_slide_id_number + 1) < elements.length) {

                    //alert(curr_slide_id_number);
                    curr_slide_id_number = curr_slide_id_number + 1;
                    next_slide_id_number = curr_slide_id_number - 1;
                    //console.log("Line 408 - " + curr_slide_id_number);
                    //alert(curr_slide_id_number+"if");
                }
                else {
                    //alert(curr_slide_id_number+"else");
                    curr_slide_id_number = 0;
                    next_slide_id_number = elements.length - 1;
                    //console.log("Line 416 - " + curr_slide_id_number);
                }

            }
            else if (settings.type == "random") {
                next_slide_id_number = curr_slide_id_number;
                while (curr_slide_id_number == next_slide_id_number)
                    curr_slide_id_number = Math.floor(Math.random() * elements.length);
            }
            else
                alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');


            setTimeout((function() {
                $.innerfade.next(elements, settings, curr_slide_id_number, next_slide_id_number);
            }), settings.timeout);

            //	alert(curr_slide_id_number);
        };
    }




})(jQuery);

// **** remove Opacity-Filter in ie ****
function removeFilter(element) {
    if (element.style.removeAttribute) {
        element.style.removeAttribute('filter');
    }
}
