/*
 * ndLazyLoad - a jQuery plugin
 * Require metadata plugin
 * Next Digital 2010
 *
 */

(function($){

	$.fn.ndLazyLoad = function(options) {
		
		var loadCount = 0, totalMediaItems;
		
		options = jQuery.extend({ 
			mediaType: "image", // available media types: image (to-do: flash)
			listener: ".ndlazyload-listerner"
		}, options);
		
		if (options.mediaType == "image")
			totalMediaItems = $(this).filter("img").size();

		return this.each(function(index, element) {
			var $thisMedia, thisImage, mediaUrl;
			
			if (options.mediaType == "image") {
				if (totalMediaItems > 0) {
					$thisMedia = $(this).filter("img");
					mediaUrl = $thisMedia.metadata({type: 'class'}).src;
					if (mediaUrl) {
						$thisMedia.attr("src", $thisMedia.metadata({type: 'class'}).src);
						$thisMedia.bind("load", function() {
							loadCount++;
							if (loadCount === totalMediaItems)
								$(options.listener).trigger("ndlazyload-finish");
						});
					} else { // this media doesn't need to be lazy loaded
						loadCount++;
					}
				}
			}
			
		});

	}

})(jQuery);
