/* ----------------- flyout animations -------------------- */

/* ----------- Config flyout animation ------------*/
var opacity = 0.3; //opacity infoteaser
var durationTime = 0.2; //Morph
var divHomeflyoutdetailHeight = 334;
/*---------------------------------*/

var Flyouts = new Array();
var FlyoutEffect = new Array();
var allFlyoutDetails = new Array();

Event.observe(window, 'load', function() {
	Flyouts = $$('div.hometeaser');
	allFlyoutDetails = $$('div.hometaserdetail');
});



// Shot teaser detail
function showFlyoutDetail(obj,detailId){
	$(detailId).addClassName('isactiv');
	
	//has this object already an effect running
	if(FlyoutEffect[detailId]!=undefined){
		//if closeeffect is running
		if(FlyoutEffect[detailId].currentFrame < (FlyoutEffect[detailId].durationTimeb*100) && FlyoutEffect[detailId].animMode=='hide'){
			//calculate new duration time for open effect
			var specialDurationTime = (FlyoutEffect[detailId].currentFrame/(durationTime*100))*durationTime;
			//stop closeffect
			FlyoutEffect[detailId].cancel();
		}
	}
	
	if(!$(detailId).visible()){
		// delete obj from array -> all non active obj
		inactiveFlyouts = Flyouts.without(obj);
		//set opaque for all inactive text-boxes...
		inactiveFlyouts.each(function(element,index){
			setElementOpacity(element,opacity);
		});
		setElementOpacity(obj,1);
		
		$(detailId+'-line').show();
		$(detailId).show();
		FlyoutEffect[detailId] = new Effect.Morph(detailId, {
		  style: 'top: -'+divHomeflyoutdetailHeight+'px; height:'+divHomeflyoutdetailHeight+'px;',
		  transition: Effect.Transitions.sinoidal,
		  duration: specialDurationTime ? specialDurationTime : durationTime
		});
		//save the durationTime for this effect
		FlyoutEffect[detailId].animMode = 'show';
		FlyoutEffect[detailId].durationTime = specialDurationTime ? specialDurationTime : durationTime;
	}
}

function hideFlyoutDetail(obj,detailId,mode){
	if(mode==1){
		if(!$(detailId).hasClassName('isactiv')){
			//if openeffect is running
			if(FlyoutEffect[detailId].currentFrame < (FlyoutEffect[detailId].durationTime*100) && FlyoutEffect[detailId].animMode=='show'){
				//calculate new duration time for close effect
				var specialDurationTime = (FlyoutEffect[detailId].currentFrame/(durationTime*100))*durationTime;
				//stop openeffect
				FlyoutEffect[detailId].cancel();
			}
			
			//close effect
			FlyoutEffect[detailId] = new Effect.Morph(detailId, {
			  style: 'top: 0px; height:1px;',
			  duration: specialDurationTime ? specialDurationTime : durationTime,
			  afterFinish: function(){
				$(detailId).hide();
				$(detailId+'-line').hide();
				
				var allHide = true;
				//set opaque for all inactive text-boxes...
				allFlyoutDetails.each(function(element,index){
					if(element.visible()==true){
						allHide = false;
					}
				});
				if(allHide){
					// delete obj from array -> all non active obj
					var inactiveFlyouts = Flyouts.without(obj);
					inactiveFlyouts.each(function(element,index){
						setElementOpacity(element,1);
					});
				}
			  }
			});
			//save the durationTime for this effect
			FlyoutEffect[detailId].animMode = 'hide';
			FlyoutEffect[detailId].durationTime = specialDurationTime ? specialDurationTime : durationTime;
		}
	}
	else{
		//callback to solve the flickering problem
		$(detailId).removeClassName('isactiv');
		
		window.setTimeout(function(){
			hideFlyoutDetail(obj,detailId,1)
		}, 10);
		//timeount hideFlyoutDetail(obj,detailId,1);
	}
}

function setElementOpacity(element,transparentValue){
	try {
		flyoutIDArray = element.identify();
		// only hometeaserinntercol should fade
		childElement = $(flyoutIDArray).down('div.hometeaserinnercol');
		childElement.setOpacity(transparentValue);
	} catch(err) {}
}

/* --------------------------------- Teaser Animation End---------------------------------- */
