/**
 * @author bjarte
 */
jQuery.fn.extend({
	imageSlider: function(settings){
		var _settings = jQuery.extend({},settings);
		var _self = this;
		// create constructor
		var slider = new function(){};
		
		// internal functions	
		jQuery.extend(slider,{
			
			/**
			 * I init the slider
			 * @param {Object} settings
			 */
			init : function(settings){
				this.settings = settings;
				this.current = 0;
				this.count = settings.images.length;
				
				// randomize the images
				this._randomize(settings.images);

				
				this.first();
			}
			, first: function(){
				var __self = this;
				this.current++;
				var img = new Image();
				img.onload = function(){
					var width = this.width;
					var height = this.height;
					var ele = jQuery('<a />').addClass('si-image').attr({
						href : __self.settings.images[__self.current].link
						, target : '_blank'
					}).css({ display: 'block' });
					
					ele.css({
						width: width
						, height: height
					}).append(this);
				
					jQuery(_self).html(ele);
					
					window.setTimeout(function() {
						__self.next()
					},5000);
					jQuery(this).css({ border: 'none' });
				}
				img.src = __self.settings.folder + __self.settings.images[__self.current].img;
			}
			, next : function(){
				var __self = this;
				if (this.current+1 < this.count)
					this.current++;
					
				else
					this.current = 0;

				o = {
					easing: "easeOutQuint"
				};

				
				jQuery(_self).find("img").hide('puff',o,800, function(){
					___self = this;
					var img = new Image();
					img.onload = function(){
						var width = this.width;
						var height = this.height;
						var ele = jQuery('<a />').addClass('si-image').attr({
							href : __self.settings.images[__self.current].link
							, target : '_blank'
						}).css({ display: 'block' });

						ele.css({
							width: width
							, height: height
						}).append(this);
					
						jQuery(___self).parent().parent().html(ele);
						
						window.setTimeout(function() {
							__self.next()
						},5000);
						jQuery(this).css({ border: 'none' });
					}
					img.src = __self.settings.folder + __self.settings.images[__self.current].img;
				});
			}
			/**
			 * I randomize an array
			 * @param {Array} a 
			 */
			, _randomize : function(a){ 
			        for(var rnd, tmp, i=a.length; i; rnd=parseInt(Math.random()*i), tmp=a[--i], a[i]=a[rnd], a[rnd]=tmp);
			}

			
		});


		slider.init(_settings);

	}
})
