/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
(function($){

        $.fn.interface = function(options) {

            var collection = [];
            var elCpt = 0;
            var defaults = {
                    onStart : null,
                    onComplete : null
            };

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

            var blocksToAnimate = $(this).find("*[class*='interface_']");
            blocksToAnimate.hide();

            blocksToAnimate.each(function(){
                var key = collection.length;
                // Récupère la classe interface_
                var classSpecs = "";
                var objClassesArr = $(this).attr("class").split(" ");
                for (var i=0; i < objClassesArr.length; i++) {
                    if (objClassesArr[i].indexOf("interface_") > -1) {
                       classSpecs = objClassesArr[i];
                       break;
                    }
                }
                // Récupère les données (ordre et pause)
                var objSpecs = classSpecs.split("_");
                collection[key] = {order:parseInt(objSpecs[1]), animate: parseInt(objSpecs[2]), pause: parseInt(objSpecs[3]), element: $(this)};
            });

            // On sort le Array selon l'ordre
            collection.sort(sortElements);

            // Callback : onStart
            if (options.onStart!=null) options.onStart();

            animate( collection[0] );

            function animate(el) {

                var obj = el.element;
                obj.fadeIn(el.animate, function(){
                    if(elCpt < collection.length) {
                        if (el.pause==0 || isNaN(el.pause)) {
                            animate(collection[elCpt]);
                        } else {
                            var timeoutID = window.setTimeout(animate, el.pause, collection[elCpt]);
                        }
                    } else {
                        finish();
                    }
                    elCpt++;
                });
            }

            function finish() {
                // Callback : onComplete
                if (options.onComplete!=null) options.onComplete();
            }

            function sortElements(a,b) {
                if(a.order > b.order) return 1;
                else if (a.order < b.order) return -1;
                else return 0;
            }
            elCpt++;
        }
})(jQuery);
