(function(jQuery) {
jQuery.fn.OptimalFadeImage=function(option)
{
	var defaults = {
				array_image		 : new Array(),
				width 		 	 : jQuery(this)[0].style.width,
				height			 : jQuery(this)[0].style.height,
				fade_intervall	 : 'medium',
				fade_step        : 'medium',
				pause_change	 : 'medium'
			};		
	jQuery(this)[0].VariabiliObject = jQuery.extend(defaults,option);	
	 switch(jQuery(this)[0].VariabiliObject.pause_change)
    {
        case 'slow' :
                        jQuery(this)[0].VariabiliObject.pause_change = 5000 ;
                        break;
        case 'medium' : 
                        jQuery(this)[0].VariabiliObject.pause_change = 2000 ;
                        break;
        case 'fast' : 
                        jQuery(this)[0].VariabiliObject.pause_change = 1000 ;
                        break;
        default:
                        break;                    
    }
    switch(jQuery(this)[0].VariabiliObject.fade_intervall)
    {
        case 'slow' :
                        jQuery(this)[0].VariabiliObject.fade_intervall = 100 ;
                        break;
        case 'medium' : 
                        jQuery(this)[0].VariabiliObject.fade_intervall = 80 ;
                        break;
        case 'fast' : 
                        jQuery(this)[0].VariabiliObject.fade_intervall = 30 ;
                        break;
        default:
                        break;                     
    }
    switch(jQuery(this)[0].VariabiliObject.fade_step)
    {
        case 'slow' :
                        jQuery(this)[0].VariabiliObject.fade_step = 1 ;
                        break;
        case 'medium' : 
                        jQuery(this)[0].VariabiliObject.fade_step = 5 ;
                        break;
        case 'fast' : 
                        jQuery(this)[0].VariabiliObject.fade_step = 10 ;
                        break;
        default:
                        break;                    
    }
	jQuery(this)[0].currentOpacity = new Array();	
	
	jQuery(this)[0].currentOpacity[0]=99;
	for(i=1;i<jQuery(this)[0].VariabiliObject.array_image.length;i++)jQuery(this)[0].currentOpacity[i]=0;
	jQuery(this).append("<div id=\""+this[0].id+"_div\"></div>");
	jQuery("#"+this[0].id+"_div").attr("style",'width:' + jQuery(this)[0].VariabiliObject.width+'; height: '+ jQuery(this)[0].VariabiliObject.height+'');
	jQuery("#"+this[0].id+"_div").append("<img name=\""+this[0].id+"_img_uno\" id=\""+this[0].id+"_img_uno\" style='position:absolute; z-index: 0'  src=\""+jQuery(this)[0].VariabiliObject.array_image[0]+"\"  />");
	jQuery("#"+this[0].id+"_div").append("<img name=\""+this[0].id+"_img_due\" id=\""+this[0].id+"_img_due\" style='position:absolute; z-index: 0' src=\""+jQuery(this)[0].VariabiliObject.array_image[1]+"\"  />");
	jQuery("#"+this[0].id+"_img_uno").attr("width",parseInt(jQuery(this)[0].VariabiliObject.width));
	jQuery("#"+this[0].id+"_img_due").attr("width",parseInt(jQuery(this)[0].VariabiliObject.width));
	if (jQuery(this)[0].VariabiliObject.array_image.length <= 1 )
	{
		return; 	
	}
	setTimeout('jQuery(this).OptimalFadeImage.Fade({ id: \''+this[0].id+'\', elemento_attuale : 0, elemento_sucessivo : 1 , cambio : 0}) ' , jQuery(this)[0].VariabiliObject.pause_change);
}
jQuery.fn.OptimalFadeImage.Fade= function(oggetto){	
if (oggetto.cambio == 0)
{
    jQuery("#"+oggetto.id)[0].img_uno=jQuery('#'+oggetto.id+'_img_uno');
    jQuery("#"+oggetto.id)[0].img_due=jQuery('#'+oggetto.id+'_img_due');
}
else
{
    jQuery("#"+oggetto.id)[0].img_uno=jQuery('#'+oggetto.id+'_img_due');
    jQuery("#"+oggetto.id)[0].img_due=jQuery('#'+oggetto.id+'_img_uno');
}
jQuery("#"+oggetto.id)[0].i = setInterval(function() {
           if (jQuery("#"+oggetto.id)[0].currentOpacity[oggetto.elemento_attuale] <= 0) 
            {
                clearInterval(jQuery("#"+oggetto.id)[0].i);
                jQuery.fn.OptimalFadeImage.CambioImmagine({ id: oggetto.id, array_image : jQuery("#"+oggetto.id)[0].VariabiliObject.array_image, attuale : oggetto.elemento_sucessivo, cambio : oggetto.cambio});
				return;
            }
			else
			{
                jQuery("#"+oggetto.id)[0].currentOpacity[oggetto.elemento_attuale]-=jQuery("#"+oggetto.id)[0].VariabiliObject.fade_step;
                jQuery("#"+oggetto.id)[0].currentOpacity[oggetto.elemento_sucessivo] += jQuery("#"+oggetto.id)[0].VariabiliObject.fade_step;
                if(document.all) {
		            jQuery("#"+oggetto.id)[0].img_uno[0].style.filter = "alpha(opacity=" +  jQuery("#"+oggetto.id)[0].currentOpacity[oggetto.elemento_attuale] + ")";
		            jQuery("#"+oggetto.id)[0].img_due[0].style.filter = "alpha(opacity=" + jQuery("#"+oggetto.id)[0].currentOpacity[oggetto.elemento_sucessivo] + ")";
	            } else {
		            jQuery("#"+oggetto.id)[0].img_uno[0].style.MozOpacity = jQuery("#"+oggetto.id)[0].currentOpacity[oggetto.elemento_attuale]/100;
		            jQuery("#"+oggetto.id)[0].img_due[0].style.MozOpacity =jQuery("#"+oggetto.id)[0].currentOpacity[oggetto.elemento_sucessivo]/100;
	            }
			}
            },   jQuery("#"+oggetto.id)[0].VariabiliObject.fade_intervall )

}
jQuery.fn.OptimalFadeImage.CambioImmagine= function(oggetto){
   if (parseInt(parseInt(oggetto.attuale) + parseInt(1)) == parseInt(oggetto.array_image.length))
   {
    jQuery("#"+oggetto.id)[0].prossima_immagine=0;
    jQuery("#"+oggetto.id)[0].attuale=parseInt(oggetto.array_image.length)-parseInt(1);
   }
   else
   {
   jQuery("#"+oggetto.id)[0].prossima_immagine = parseInt(parseInt(oggetto.attuale) + parseInt(1));
   jQuery("#"+oggetto.id)[0].attuale = parseInt(parseInt(oggetto.attuale) );
   } 	 
    if (oggetto.cambio==0)
    {
        jQuery('#'+oggetto.id+'_img_uno').attr("src",oggetto.array_image[jQuery("#"+oggetto.id)[0].prossima_immagine]);
		setTimeout('jQuery("#'+oggetto.id+'").OptimalFadeImage.Fade({ id: \''+oggetto.id+'\',elemento_attuale : '+jQuery("#"+oggetto.id)[0].attuale+',elemento_sucessivo : '+jQuery("#"+oggetto.id)[0].prossima_immagine +', cambio : 1}) ',jQuery("#"+oggetto.id)[0].VariabiliObject.pause_change);
		return;			
    }
    else
    {
        jQuery('#'+oggetto.id+'_img_due').attr("src",oggetto.array_image[jQuery("#"+oggetto.id)[0].prossima_immagine]); 
		setTimeout('jQuery("#'+oggetto.id+'").OptimalFadeImage.Fade({ id: \''+oggetto.id+'\',elemento_attuale : '+jQuery("#"+oggetto.id)[0].attuale+',elemento_sucessivo : '+jQuery("#"+oggetto.id)[0].prossima_immagine +', cambio : 0}) ',jQuery("#"+oggetto.id)[0].VariabiliObject.pause_change);
		return;
    }
}
	})(jQuery); 