
(function( $ ){

    var methods = {
         init : function( options ) {
             var images = options['images'];

             $(this).attr('src', images[0]);
             $(this).data('position', 0);
             $(this).data('interval', options['interval']);
             $(this).data('images', images);

             var str = "$('#" + $(this).attr('id') + "').webisImageGallery('next')";

             var intervalId = setInterval(str, options['interval']);
             $(this).data('intervalId', intervalId);

             /*
              * Set Actions
              */
             $(this).data('options', options);
             var prefix = options['prefix'];
             $(this).data('prefix', prefix);

             var thisTmp = $(this);

             // Position
             for (var i = 1; i <= 4; i++) {
                 $('#' + prefix + '_' + i).click(function() {
                     var id = $(this).attr('id');
                     var position = id.replace(prefix + '_', "");
                     $(thisTmp).webisImageGallery('position', position);

                 });
             }

             $('#' + prefix + '_next').click(function() {
                 $(thisTmp).webisImageGallery('stop');
                 $(thisTmp).webisImageGallery('next');
             });

             $('#' + prefix + '_preview').click(function() {
                 $(thisTmp).webisImageGallery('preview');
             });

             $(this).click(function() {
                    document.location= options['links'][0];
                });
         },

        next : function () {

            var position = $(this).data('position');
            var options = $(this).data('options');
            var newPosition = position + 1;
            if (newPosition > 3 ) {
                newPosition = 0;
            }

            var images = $(this).data('images');


            //$(this).fadeOut("slow", function() {
                $(this).attr('src', images[newPosition]);

                $(this).click(function() {
                    document.location= options['links'][newPosition];
                });

              //  $(this).fadeIn("slow");
            //});


            $(this).data('position', newPosition);
            $(this).webisImageGallery('bold', position, newPosition);
        },

        stop : function () {
            var intervalId = $(this).data('intervalId');
            clearInterval(intervalId);
        },

        start : function () {
            $(this).webisImageGallery('next');
            var interval = $(this).data('interval');
            var str = "$('#" + $(this).attr('id') + "').webisImageGallery('next')";
            var intervalId = setInterval(str, interval);
            $(this).data('intervalId', intervalId);
        },

        position : function( position ) {
            $(this).webisImageGallery('stop');
            var options = $(this).data('options');
            var intervalId = $(this).data('intervalId');
            clearInterval(intervalId);
            var oldPosition = $(this).data('position');
            $(this).data('position', position - 1);

            var images = $(this).data('images');


            //$(this).fadeOut("slow", function() {
                $(this).attr('src', images[position - 1]);

                $(this).click(function() {
                    document.location= options['links'][position - 1];
                });



               // $(this).fadeIn("slow");
            //});




            $(this).webisImageGallery('bold', oldPosition, position - 1);

        },

        preview : function () {
            // Stop
            var intervalId = $(this).data('intervalId');
            var options = $(this).data('options');
            clearInterval(intervalId);

            var position = $(this).data('position');
            var newPosition = position - 1;
            if (newPosition < 0) {
                newPosition = 3;
            }

            $(this).fadeOut("slow", function() {
                var images = $(this).data('images');
                $(this).fadeIn("slow");
            });


            $(this).attr('src', images[newPosition]);
            $(this).click(function() {
                document.location= options['links'][newPosition];
            });



            $(this).data('position', newPosition);
            $(this).webisImageGallery('bold', position, newPosition);
        },

        bold : function (oldPosition, newPosition) {

            oldPosition = oldPosition + 1;
            newPosition = newPosition + 1;

            var prefix = $(this).data('prefix');

            var options = $(this).data('options');
            $("#" + prefix + '_' + newPosition).css("color", options['colorActive']);
            $("#" + prefix + '_' + oldPosition).css("color",options['color']);

        }


    };



    $.fn.webisImageGallery = function( method ) {


        if ( methods[method] ) {
          return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
          return methods.init.apply( this, arguments );
        } else {
          $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );
        }

    };
})( jQuery );


