/*******************************************************************************

Copyright Juan Trujillo Tarradas

Use freely if you want but please give me credit (Juan Trujillo) and a link to http://jtrujillo.net


********************************************************************************/

var units=new Array();		// Per cada idUnic conto imgs loaded

//------------------------------------
function Unit(id,ticksPhase){		// Aixo aguanta parella imatges blend

this.id=id;			// Id numeric unic durant tota la pagina		

this.nLoaded=0;			// cuantes de les imatges s'han acabat de carregar

this.opacity=0;

this.ticksPhase=18000;
if (ticksPhase>0)
    this.ticksPhase=ticksPhase;
    

this.variability=40;

this.dlOpac=.02;

this.currDlOpac=this.dlOpac;

this.ticksStep=1000/25;		// 1/fps

this.lastSpeedChange=0;



units[id+""]=this;

}
//------------------------------------
function iniTime(unit,firstTime){


var variable=unit.ticksPhase*unit.variability/100.*Math.random();
var sign=Math.random()<.5 ? 1: -1;


var ticks=unit.ticksPhase + (variable * sign);


unit.dlOpac=unit.ticksStep/ticks;

if (firstTime)
	unit.currDlOpac=unit.dlOpac * (Math.random() < .5 ? 1 : -1);

var dt=new Date();

unit.lastSpeedChange=dt.getTime();
}
//---------------------------------------------
function genBlendImages(width,height,img1, img2){

document.write('<div id="frameFading" style="display:block; position:relative; background:url(loadingImage.gif) no-repeat center;">abc<br>abd</div>');

document.write('<div class="fading" id="div_43014" style="opacity:.01; position:relative;');
document.write('width:' + width + 'px; height:' + height +'px;">');
document.write('<img alt="" id="img1_43014"  src="' + img1 + '"  style="position: absolute; top: 0pt; left: 0pt; z-index:0;" />');
document.write('<img alt="" id="img2_43014" src="' + img2 + '" style="position: absolute; top: 0pt; left: 0pt; z-index:1;" />');

document.write('</div></div>');

blendImages(43014,5000);
}

//----------------------------------------------
function blendImages(id,iTicksPhase){

var ticksPhase=0;

if (arguments.length>1)
    ticksPhase=iTicksPhase;
var unit=new Unit(id,ticksPhase);

iniTime(unit,1);


var dv=document.getElementById("div_"+id);
if (navigator.appVersion.indexOf("MSIE")>0){
    dv.style.display="none";
}

var img=document.getElementById("img1_"+id);
unit.img1=img;

img.onload=function(){imgLoaded(unit)};



var img2=document.getElementById("img2_"+id);
unit.img2=img2;

img2.onload=function(){imgLoaded(unit);}


var tm=function(){tick(unit);}

setTimeout(tm,unit.ticksStep);

}

//--------------------------------
function imgLoaded(unit){


unit.nLoaded++;
if (unit.nLoaded==2){

	unit.opacity=Math.random();
	setOpacity(unit.img2,unit.opacity);


	var dv=document.getElementById("div_"+unit.id);
	dv.style.display="block";
	dv.style.opacity=1;
	//setOpacity(dv,1);		//MSIE si un div transparent les imatges no ho son :O

	var dv2=document.getElementById("frameFading");
	dv2.style.backgroundImage="none";						// El gift animat que no corri (CPU?)
}
}
//----------------------------------------------------------------
function tick(unit){


var dt=new Date();
var ms=dt.getTime();
if (ms>unit.lastSpeedChange + 5000)			// Cambio el ritme una mica
	iniTime(unit);



unit.opacity+=unit.currDlOpac;

var extraDelay=0;					// Deixo un temps parat en imatges pures
if (unit.opacity>=1){
    unit.opacity=1;
    unit.currDlOpac=-unit.dlOpac;
    extraDelay=unit.ticksPhase/4;
}
if (unit.opacity<=0){
    unit.opacity=0;
    unit.currDlOpac=unit.dlOpac;
    extraDelay=unit.ticksPhase/4;
}


setOpacity(unit.img2,unit.opacity);

var tm=function(){tick(unit);}

setTimeout(tm,unit.ticksStep+extraDelay);
}
//---------------------------------------------------------------
function setOpacity(obj,opacity){

if(opacity>1) 
   opacity =1;

obj.style.opacity = opacity;
obj.style.MozOpacity = opacity;
obj.style.filter = "alpha(opacity=" + (opacity*100) + ")";
}

