/*
 * 	Easy Slider - jQuery plugin
 *	written by Alen Grakalic	
 *	http://cssglobe.com/post/3783/jquery-plugin-easy-image-or-content-slider
 *
 *	Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	Built for jQuery library
 *	http://jquery.com
 *
 */
 
/*
 *	markup example for $("#images").easySlider();
 *	
 * 	<div id="images">
 *		<ul>
 *			<li><img src="images/01.jpg" alt="" /></li>
 *			<li><img src="images/02.jpg" alt="" /></li>
 *			<li><img src="images/03.jpg" alt="" /></li>
 *			<li><img src="images/04.jpg" alt="" /></li>
 *			<li><img src="images/05.jpg" alt="" /></li>
 *		</ul>
 *	</div>
 *
 */

(function($) {

	$.fn.slider = function(options)
    {
        var width = $(this).parent().width();
        var length = this.length;
        var interval;
        var c = 0;
        var objs = $(this);
	  
		// default configuration properties
		var defaults =
        {
			onChange: function(element, index){},
			speed: 			5000
		};

        var options = $.extend(defaults, options); 

        objs.hide();
        objs.css('position', 'absolute');

        this.move = function()
        {            
            objs.fadeOut();
            var element = $(objs[c]);

            element.css('margin-left', width);
            element.show();
            element.fadeTo(0, 0);
            
            element.animate(
            {
                marginLeft: 0,
                opacity: 1
            }, 800);

            options.onChange(element, c);

            c = (c+1 == length) ? 0 : c + 1;
        };

        this.goTo = function(n)
        {
            if(n >= 0 && n <= length-1 && n != c-1)
            {
                clearInterval(interval);
                c = n;
                this.move();
                interval = setInterval(this.move, options.speed);
            }
        };

        this.move();
        interval = setInterval(this.move, options.speed);

        return this;
	};

})(jQuery);