(function($){
    $.fn.jqXmlSlider = function(options)
    {
        var defaults = {
            contentDiv          : '#xmlSlider',
            rightButton         : 'xmlSliderButton.right',
            leftButton          : 'xmlSliderButton.left',
            playButton          : '#headerSlider .sliderButton.play',
            itemWidth           : 229,
            slideSpeed          : 800,
            animation           : true,
            animationInterval   : 500,
            animationDirection  : "right"
            };

        var options = $.extend(defaults, options);
        var rotator;

        var setupSlideShow = function() 
        {
            $(options.contentDiv +' ul').css({'width' : ($(options.contentDiv +' ul li').size()+1) * options.itemWidth});
            $(options.rightButton).bind('click', function(){changeSlide("right")});
            $(options.leftButton).bind('click', function(){changeSlide("left")});

            $(options.playButton).toggle(
                function(){
                    $(this).css({'background-position':'-30px -28px'});
                    $(options.rightButton).css({"opacity":"0.4"});
                    $(options.leftButton).css({"opacity":"0.4"});
                    slideRotator(true);
                    $(options.rightButton).unbind('click');
                    $(options.leftButton).unbind('click');
                },
                function(){
                    $(this).css({'background-position':'0px -28px'});
                    $(options.rightButton).css({"opacity":"1"});
                    $(options.leftButton).css({"opacity":"1"});
                    $(options.rightButton).bind('click', function(){changeSlide("right")});
                    $(options.leftButton).bind('click', function(){changeSlide("left")});
                    slideRotator(false);}
            );

            if (options.animationInterval < options.slideSpeed) {options.animationInterval = options.slideSpeed+100;}
        }

        var changeSlide = function(direction) 
        {
            if (direction=='right') {
                $(options.contentDiv +' ul').stop().animate({"marginLeft" : -(options.itemWidth)}, 
                {
                    duration:options.slideSpeed, queue:true ,
                    complete:function(){
                        $(options.contentDiv +' ul').append('<li>'+$(options.contentDiv +' ul li:first').html()+'</li>');
                        $(options.contentDiv +' ul li:first').remove();
//                        $(this).css({"margin-left":-options.itemWidth+"px"});
                        $(this).css({"margin-left": "0px"});

                    }
                });
            }

            if (direction=='left') {
                $(options.contentDiv +' ul').stop().animate({"marginLeft" : (0)},
                {
                    duration:options.slideSpeed, queue:true ,
                    complete:function(){
                        $(options.contentDiv +' ul').prepend('<li>'+$(options.contentDiv +' ul li:last').html()+'</li>');
                        $(options.contentDiv +' ul li:last').remove();
//                        $(this).css({"margin-left":-options.itemWidth+"px"});
                    }
                });
            }
        }

        var slideRotator = function(param)
        {
            if (param == true) {
                rotator = setInterval(function(){
                    changeSlide(options.animationDirection);},
                    options.animationInterval);
            } else { clearInterval(rotator);}
        }

        var createSlide = function()
        {
            $(options.contentDiv +' ul').prepend($(options.contentDiv +' ul li:last'));
//            $(options.contentDiv +' ul').css({"marginLeft" : -(options.itemWidth)});
        }

        setupSlideShow();
        createSlide();
        slideRotator(options.animation);

        if (options.animation == true) {
            $(options.contentDiv)
              .mouseover(function(){slideRotator(false);})
              .mouseout(function(){if (options.animation==true) {slideRotator(true);}});
        }


    }
})(jQuery);
