/**
 * Simple slideshow.
 * @author NOSE
 *
 * @example jQuery("#slideshow").slideshow({slWidth:510,slHeight:430,slInterval:5000});
 * @code
   <div id="slideshow">
      	<img src="../../img/slide_01.jpg" alt="alt text" />
        <img src="../../img/slide_02.jpg" alt="alt text" />
        <img src="../../img/slide_03.jpg" alt="alt text" />  
   </div>
 *
 * @requires jquery.js 
 * 
 * @version 1.0.0	initial version			
 */
jQuery.fn.slideshow = function(op) {	
	// defaults
	var defaults =  {
			slWidth: 510,
			slHeight: 340,
			slInterval:5000
	};
	jQuery.extend(defaults, op);
	
	// params
	var current = 0; 
	
	// prepare
	jQuery(this).css({ width:defaults.slWidth+"px", height:defaults.slHeight+"px", position:"relative" });
	
	
	// slideshow
	var imgs = jQuery('img',this);
	for(i=1;i<imgs.length;i++) { 
		// position
		jQuery(imgs[i]).css({display:"none",position:"absolute",top:0,left:0});
	
		// opacity
		imgs[i].xOpacity = 0;
	}
	jQuery(imgs[current]).css({display:"block"});
	imgs[current].xOpacity = .99;
	
	// xface
	setTimeout(xfade,defaults.slInterval);
	
	
	/**
	* XFade image.
	* @author Image Cross Fade Redux
	*/
	function xfade() {
		
		// opacity
		cOpacity = imgs[current].xOpacity;
		nIndex = imgs[current+1]?current+1:0;
		nOpacity = imgs[nIndex].xOpacity;
	
		cOpacity-=.05; 
		nOpacity+=.05;
	
		// image
		imgs[nIndex].style.display = "block";
		imgs[current].xOpacity = cOpacity;
		imgs[nIndex].xOpacity = nOpacity;
	
		// set
		setOpacity(imgs[current]); 
		setOpacity(imgs[nIndex]);
	
		if(cOpacity<=0) {
			imgs[current].style.display = "none";
			current = nIndex;
			setTimeout(xfade,defaults.slInterval);
		} 
		else {
			setTimeout(xfade,defaults.slInterval/50);
		}
	
		/*
		* Sets the opacity.
		*/
		function setOpacity(obj) {
			if(obj.xOpacity>.99) {
				obj.xOpacity = .99;
				return;
			}
			obj.style.opacity = obj.xOpacity;
			obj.style.MozOpacity = obj.xOpacity;
			obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
		}
	
	}
  
  
    // return
    return this;
};