(function($) {

	var optiontg		= new Array;
	var obj_img			= new Array;
	var theClass		= new Array;
	var imageposition	= new Array;
	var preloadInterval = new Array;
	var imgLength;
	
	$.fn.webinpixelsPreload= $.fn.webinpixelsPreload = function(options){
		
		init = function(tgp){
			optiontg[tgp.id] = $.extend({}, $.fn.webinpixelsPreload.defaults, options);
			 
					obj_img[tgp.id]			= new Array();
					theClass[tgp.id]		= new Array();
					imageposition[tgp.id]	= -1;
					
					
					$.each($('#'+tgp.id+' .' + optiontg[tgp.id].childClass + ''), function(i,item){
						theClass[tgp.id][i] = $(item);
						obj_img[tgp.id][i] = $(item).find('img');

						obj_img[tgp.id][i].css({'display': 'block', 'opacity' : '0'});
					});
				
			$.LoadAllImages(tgp);
				
		};
		
		// transitions
		$.transitionpreload = function(tgp){
			preloadInterval[tgp.id] = setInterval(function() { $.ownanimate(tgp) }, optiontg[tgp.id].speed);
		};
		
		$.LoadAllImages = function(tgp){

			imgLength = obj_img[tgp.id].length;
			
			
				$('#'+tgp.id+' .' + optiontg[tgp.id].childClass + '').each(function(i){
					var img = new Image();
					var imgSrc = obj_img[tgp.id][i].attr('src');
					
					$(img).css('display', 'none').load(function(){
						$(img).addClass('semi_img').addClass('image_ke'+i).appendTo($('body'));

						if( $('.semi_img').length == imgLength ){
							
							for(k=0;k<imgLength;k++){
							
								var topo = $('.image_ke'+k);
								
								topo.remove(); //once load, it just need 0 second to load it again - so let's remove the clones
								
							}
							
							$.transitionpreload(tgp); //let's begin the show!!!!	
						}
						
					}).attr('src', imgSrc);
	
				});
		};
		
		$.ownanimate = function(tgp){
				imageposition[tgp.id]++;


				$(obj_img[tgp.id][imageposition[tgp.id]]).animate({opacity: 1.00}, optiontg[tgp.id].animateSpeed,
					function(){
						$(obj_img[tgp.id][imageposition[tgp.id]]).parent().parent().removeClass('wiploading');
					}
				);
				
				if  (imageposition[tgp.id] == obj_img[tgp.id].length) {
					clearInterval(preloadInterval[tgp.id]);
						$('.wiploading').removeClass('wiploading');
						optiontg[tgp.id].afterLoad.call(this);
						$.additionalHover(tgp);

					return;
				}
				
		};
		
		$.additionalHover = function(tgp){
			
			$('.uselightbox').each(function(){
				$(this).css('backgroundColor', '#000000');
				$(this).hover(function(){
					$(this).find('img').stop().animate({opacity : 0.4}, 400 );
				}, function () {
				
					$(this).find('img').stop().animate({opacity : 1.0}, 400 );
				
				});
			
			});

		};

		this.each (
			function(){ init(this); }
		);


	};
	
	// default values
	$.fn.webinpixelsPreload.defaults = {	
		speed : 300,
		animateSpeed : 700,
		childClass : "",
		afterLoad : function(){}
	};	
	
})(jQuery);
	
