(function($) {
	$.fn.extend({
		weightedCycle : function(options) {
			var defaults = {
				fx: "scrollLeft", 
				pause: true, 
				speed: 750, 
				timeout: 5000
			};
			var options = $.extend(defaults, options);

			return this.each(function(index) {
				try {
					var slide_weights = new Array();
					$(".slide", this).each(function(index) {
						var weight = $(this).attr("weight");
						if( typeof(weight) !== "undefined") {
							var realWeight = parseInt(weight.replace(/%/g, ""));
							slide_weights[index] = realWeight;
						}
					});

					var startSlide = 0;

					var sumWeights = 0;
					for(i=0; i<slide_weights.length; i++) {
						sumWeights += slide_weights[i];
					}

					var rand=Math.floor(Math.random()*sumWeights);
					var low=0;

					for(i=0; i<slide_weights.length; i++) {
						if( low <= rand && rand < (slide_weights[i]+low) ) {
							startSlide = i;
						}
						low += slide_weights[i];
					}

					try {
						console.log("WeightedCycle: Weights[" + slide_weights + "], Sum[" + sumWeights + "] - RandNr: " + rand + " ==> StartSlide: " + startSlide);
					} catch( noConsole) { /* ignore */ }

					var realOptions = $.extend(options, { startingSlide : startSlide });
					$(this).cycle(realOptions);
				} catch( error ) {
					alert("Error while init weighted cycles: " + error);
				}
			});
		}
	});
})(jQuery);



