
var ainsa = {
	init: function()
	{
		// png alpha allower
		// $$('style').appendText('img,#player a { behavior: url(../drupal/themes/ainsa/js/iepngfix.htc) }');
		
		// only at home
		if(!$('display')) return;
		
		// vars
		ainsa.num = -1; // remember random 1/4
		ainsa.ntx = -1; // remember last random index array phase
		ainsa.dir = -1; // remember last image random direction
		ainsa.tim = 'timer iterator';
		ainsa.frases = [];	// info array
		ainsa.ffx = []; // effects array
		ainsa.img = [];
		ainsa.divt = '';

		// create dom
		ainsa.createDom();
		
		// get all info
		ainsa.getInfoAndStart();
	},
	
	// dom needed
	createDom: function()
	{
		// Opacity IE-HACK
		$ES('h3 span','info').each(function(el){el.setOpacity(0.6)});
		if(!window.ie) $('inside').setOpacity(0.6);
		
		// background swap image fade
		new Element('span').setProperty('id','overlay').setOpacity(0).injectInside('display');

		// background opacity
		var divb = new Element('div').setProperty('class','back').setHTML('').setOpacity(0).injectInside('display');
		ainsa.ffx[0] = new Fx.Styles(divb,{duration: 2500, transition: Fx.Transitions.linear});

		// text+desc randomizable
		ainsa.divt = new Element('div').setProperty('class','t').setHTML('').setOpacity(0).injectBefore(divb);
		
		// text+desc fade effect
		ainsa.ffx[1] = new Fx.Style(ainsa.divt,'opacity',{duration: 2500, transition: Fx.Transitions.linear});
		
		// display background movement effect
		ainsa.ffx[2] = new Fx.Style('display','background-position',{fps:2000,unit:'px',duration:4500,onComplete:ainsa.displayComplete});
		
		// overlay background (swapper) fade effect
		ainsa.ffx[3] = new Fx.Style('overlay','opacity',{fps:2000,duration:500,onComplete:ainsa.overlayComplete});
	},
	
	// create player dom
	createPlayerDom:function()
	{
		// player interface
		var player = new Element('div',{'id':'player','events':{
			'mouseover':function(){this.setStyle('background-position','left bottom');},
			'mouseout':function(){this.setStyle('background-position','-53px 0');}
		}}).injectAfter(ainsa.divt);

		new Element('a',{'href':'#','class':'x-1 pause','events':{
			'click':function(e){new Event(e).stop();ainsa.stopForces();ainsa.play(-1);}
		}}).injectInside(player);
		new Element('a',{'href':'#','class':'x-2','events':{
			'click':function(e){
				new Event(e).stop();
				if(this.hasClass('play')){ this.removeClass('play'); ainsa.play(); }
				else{ this.addClass('play'); ainsa.stopForces(); }
			}
		}}).injectInside(player);
		new Element('a',{'href':'#','class':'x-3','events':{
			'click':function(e){new Event(e).stop();ainsa.stopForces();ainsa.play(1);return false;}
		}}).injectInside(player);	
	},
	
	// stop events
	stopForces:function()
	{
		$clear(ainsa.tim);
		ainsa.ffx.each(function(fx){fx.stop();});
	},
	
	// when we have only one <dl> ..
	onlyOne: function()
	{
		ainsa.num = ainsa.myRandom(ainsa.num,1,4);
		$ES('.back').setProperty('class','back p'+ainsa.num).setOpacity(0.5);
		$('overlay').setStyle('background',"url('"+ainsa.frases[0][2]+"')").setOpacity(1);
		$ES('.t').setProperty('class','t t'+ainsa.num).setHTML("&ldquo;"+ainsa.frases[0][0]+"&rdquo;<br /><span id=\"tspan\">"+ainsa.frases[0][1]+"</span>").setOpacity(0);
		ainsa.ffx[1].start(0,1);
		$('player').remove();
	},
	
	// get info from html
	// ex: <dl><dt>[TITLE]</dt><dd><img src="[IMAGE]" />[DESCRIPCTION]</dd></dl> <dl>..</dl>
	getInfoAndStart: function()
	{
		$$('dl','display').each( function( dl){
			var dt = $E('dt', dl);
			var dd = $E('dd', dl);
			var im = $E('img', dd);
			$E('img',dd).remove();
			ainsa.frases.push([dt.innerHTML.trim(),dd.innerHTML.trim(),im.src]);
			ainsa.img.push(im.src);//ainsa.img[im.src] = new Asset.image(im.src,{/*id:'myImage', title: 'myImage', onload: myFunction*/});
			dl.remove();
		});
		
		new Asset.images(ainsa.img,{
			onComplete: function()
			{
				// no preloading
				$('inside').removeClass('loading');

				// skip for only 1 or 0
				if(ainsa.frases.length==1){ ainsa.onlyOne(); return; }
				else if(ainsa.frases.length==0) return;

				//player
				ainsa.createPlayerDom();

				// start animation
				ainsa.play();
			}
		});
	},
	
	// start animation iteratively
	play: function(force)
	{
		if(!force){
			// custom randoms
			ainsa.num = ainsa.myRandom(ainsa.num,1,4);
			ainsa.ntx = ainsa.myRandom(ainsa.ntx,0,ainsa.frases.length-1);
		}
		else {
			// force pause class
			$$('.play').removeClass('play');
			
			// force display by player buttons
			var a, b;
			if((ainsa.num+force)>4) a = 1;
			else if((ainsa.num+force)<1) a = 4;
			else a = ainsa.num+force;
			ainsa.num = a;
			
			if((ainsa.ntx+force)>ainsa.frases.length-1) b = 0;
			else if((ainsa.ntx+force)<0) b = ainsa.frases.length-1;
			else b = ainsa.ntx+force;
			ainsa.ntx = b;
		}
		var txt = ainsa.frases[ainsa.ntx];

		$ES('.back').setProperty('class','back p'+ainsa.num).setOpacity(0);
		ainsa.ffx[0].start({'opacity':[0,0.5]});
		
		$ES('.t').setProperty('class','t t'+ainsa.num).setHTML("&ldquo;"+txt[0]+"&rdquo;<br /><span id=\"tspan\">"+txt[1]+"</span>").setOpacity(0);
		ainsa.ffx[1].start(0,1);
		
		// change photo
		$('overlay').setStyles({'background':"url('"+txt[2]+"')"});
		ainsa.ffx[3].start(1);
		
		// recall play
		ainsa.tim = ainsa.play.pass().delay(12000);
	},
	
	// endof movment
	displayComplete:function()
	{
		//alert($('display').getStyle('background'));
		$('overlay').setStyle('background',$('display').getStyle('background'));
	},
	
	// endof swapp effect
	overlayComplete: function(urlimg)
	{
		//alert($('overlay').getStyle('background'));
		$('display').setStyle('background',$('overlay').getStyle('background'));
		var calc = ainsa.xyMove(urlimg);
		ainsa.ffx[2].start('0 0','-'+calc.x+' -'+calc.y);
		$('overlay').setOpacity(0);
	},
	
	// random between min-max without val inside
	myRandom: function( val, min, max)
	{
		var limit = 0; // prevent infinite loop
		var one = $random(min,max);
		if(one==val){ while(one==val||limit<50){ one = $random(min,max); limit++; } }
		return one;
	},
	
	// get image width & height
	getImage: function(url)
	{
		var img = new Image();
		img.src = ainsa.frases[ainsa.ntx][2];
		return {'x':img.width.toInt(),'y':img.height.toInt()};
		//return {'x':ainsa.img[url].width.toInt(),'y':ainsa.img[url].height.toInt()};
	},
	
	// get x,y coordinates: moveTo background
	xyMove: function( urlimg)
	{
		var img = ainsa.getImage(urlimg);
		var x = Math.abs(450-img.x); 
		var y = Math.abs(300-img.y);
		ainsa.dir = ainsa.myRandom(ainsa.dir,1,3);
		switch(ainsa.dir){
			case 1: y = 0; break;	// right top
			case 2: break;			// right bottom
			case 3: x = 0; break;	// left bottom
			case 4: break;			// 0,0
		}
		
		if(x==450) x=0; // outoff x axis
		if(y==300) y=0; // outoff y axis

		return {'x':x,'y':y};
	}
};

document.addEvent('domready',ainsa.init);
//Window.onDomReady(ainsa.init);