/*
* jQuery.fn.JSmoothChanger( options );
*
* USAGE:
* $('.element').JSmoothChanger( dataurl , { limit: [numeric] });
*
* Developed by cms-develop
* http://www.cms-develop.de
* (c) cms-develop.de
* Version 1
*/
;(function($){
	$.fn.JSmoothChanger = function( dataurl , options  ) {
            var myElem = this;
            var ImageData = new Array();
            var preData = new Array();
            var aktImg = null;
            var newImg = null;
            var newsrc = "";
            
            var defaultTemplates ={
                       nextTime           :   6000,
                       fadeDur            :   5000,
                       isrc               :   '/'
            };
            if( options.isrc == undefined ){options.isrc = defaultTemplates.isrc;}
            if( options.nextTime == undefined ){options.nextTime = defaultTemplates.nextTime;}
            if( options.fadeDur == undefined ){options.fadeDur = defaultTemplates.fadeDur;}

            var aKey =0;
            $(this).css('position','relative');
            $.getJSON( dataurl , function(data) {
                    $.each(data, function( key , value) {
                        ImageData.push(value);
                        // Preload Array...
                        preData.push(options.isrc+value);
                    });                    
                    setImage();
                    
            });
            function next(){
                aKey++;                
                if( aKey >= ImageData.length ){aKey = 0;}
                newsrc =  options.isrc+ImageData[aKey]
               
                newImg = $('<img src="'+newsrc+'" />');
                var cssElem= {position : 'absolute', top : 0,left : 0 , zindex : 99 ,opacity: 1}
                var cssElem2= {position : 'absolute', top : 0,left : 0 , zindex : 100, opacity: 1,display : 'none'}

                $(myElem).append(newImg);
                $(aktImg).css(cssElem);
                $(newImg).css(cssElem2);
                $(newImg).css(cssElem2);
                $(newImg).fadeIn(options.fadeDur);
                $(aktImg).fadeOut(options.fadeDur,function(){
                    $(aktImg).remove();
                    aktImg = newImg;
                    setTimeout( next ,options.nextTime );
                });               
               
            }
            function setImage(){
                  mysrc = options.isrc+ImageData[0];
                  aktImg = $('<img src="'+mysrc+'" />')
                  $(myElem).append(aktImg);
                  setTimeout( next , options.nextTime );
            }
        };
}(jQuery));

