// MZ 2ROQS 2007
// requires jquery

function rqGetObjByClassName(className,d)
{
	if( !d)
		d=document;
	var i,elts;
	if( elts = d.getElementsByTagName("div"))
	{	for( i=0; i<elts.length; i++)
			if( elts[i].className == className)
				return elts[i];
	}
	return 0;
}
// RQSlideshow
// constructor should be passed a DOM element of class rqSlideshow
function RQSlideshow(domElement)
{
	this.m_state	= 0;
	this.m_obj		= domElement;
	this.m_time		= 0;
	this.m_delay	= 8000;	// delay between images in ms
	this.m_opacity	= 1;
	this.c	= null;			// curr
	this.m_previous	= null;
	this.m_zIndex	= 10;
	this.m_paused	= false;
	this.M_init=function()
	{
		
		$(this.m_obj).css({position:"relative",top:0,left:0});
		// hide elements and get a pointer on first one
		this.c = $(this.m_obj).find(".imageElement").get(0);
		this.M_prepareCurrent();
		this.m_time	= this.m_delay;
		//$(this.c).css({opacity:1}).show();

		// active zone
		slide.M_init('#slideOver');
		$(this.m_obj).find(".activeZone").data('parent',this).css({display:"block",background:"transparent",zIndex:this.m_zIndex+20,position:"absolute",top:0,left:0}).mouseover(function(){slide.sM_over($(this).data('parent'));}).mouseout(slide.sM_out);

		$('#nextProj a').css({cursor:"pointer",opacity:0.01}).mouseover(slide.sM_keepUp).click(RQDelegate(this,this.M_nextProject));
		
	}
	this.M_nextProject = function()
	{	if(this.m_state==0)
			this.M_setState(1);

	}
	this.M_prepareCurrent=function()
	{	if(this.c)
		{	
			if( this.m_previous) $(this.c).css({opacity:0.01});
			if(!g.isIE6)$(this.c).css({position:"absolute",top:"0",left:"0"});
			$(this.c).css({zIndex:this.m_zIndex+5}).find("h3,p,a").hide();
			
			var a,v;
			if( a=$(this.c).find('a').get(0))
			{	$(this.c).css({cursor:"pointer"}).click(function(){ self.location.href=$(this).find('a').attr('href'); } );
				
			}
			$(this.c).find('img.full').css({position:"absolute",top:0,left:0,opacity:1,zIndex:this.m_zIndex+8}).show();
			var canPlay=false;				
			if( v=$(this.c).find('video').get(0))
			{	// find if a source a least can be played
				$(v).find('source').each(function(){
					if( g.hasVideo)
					{	var rep;var vid=$(this).parent().get(0);
						if(vid&&vid.canPlayType)
							rep=vid.canPlayType($(this).attr('type') );
						if( rep &&(rep=='maybe' || rep=='probably')) canPlay=true;
					}
					else
					{	if( g.videoPlayer && $(this).attr('type')=='video/flv') canPlay=true;
					}
				});
				if(g.hasVideo && canPlay)
				{	v.addEventListener("ended", function(e) { slide.M_videoEnded(); }, false);
					v.addEventListener("error", function(e) { RQDebug('EVENT error'); }, false);
					v.addEventListener("play", function(e) { RQDebug('EVENT play'); }, false);
					v.addEventListener("canplay", function(e) { RQDebug('EVENT canplay'); }, false);
					$(v).show();					
					$(v).css({position:"absolute",top:0,left:0,zIndex: this.m_zIndex+6});
				}
				else if(g.videoPlayer && canPlay)
				{	$('#headerFlashPlayer').prependTo($(this.c)).css({position:"absolute",left:0,top:0,zIndex:this.m_zIndex+6}).show();
				}
				else
				{	$(v).hide();
				}
						
			}
			$(this.c).data('playVideo',canPlay);
			if( !canPlay)
				$('#headerFlashPlayer').hide();

		}
	}
	this.M_pause = function(m)
	{	this.m_paused=m;
		if( m && this.m_state==0)			// init the delay to avoid the slideshow fading right after we rollout
		{	this.m_time	= this.m_delay/2;
		}
	}
	this.M_nextState=function()
	{	this.M_setState(this.m_state+1);
	}
	this.M_setState=function(state)
	{
		this.m_state = state;
	}
	this.M_animate = function(stepMs)
	{	if( this.m_state == 0)
		{	if( !this.m_paused)
			{	this.m_time-=stepMs;
				if( this.m_time<=0)
					this.M_nextState();
			}
		}
		// fade out
		else if( this.m_state ==1)
		{	this.M_nextState();
		}
		// switch to next image
		else if( this.m_state == 2)
		{				
			this.M_nextImage();
			this.m_opacity = 0.01;
			$(this.c).css("opacity",this.m_opacity);
			slide.M_open(this.c);
			this.M_nextState();
		}
		// fade in
		else if( this.m_state ==3)
		{
			this.m_opacity += stepMs/1000;
			$(this.c).css("opacity",this.m_opacity);
			if( this.m_opacity>1)
			{	this.m_opacity = 1;
				$(this.c).css("opacity",this.m_opacity);
				if( this.m_previous)
				{	$(this.m_previous).hide();
					// stop video
					$(this.m_previous).find('video').vdStop();
					$(this.m_previous).find('img.full').css({opacity:1.0}).show();
					this.m_previous=null;
				}
				// reset state
				this.M_setState(0);
				this.m_time	= this.m_delay;

			}


		}
	}
	this.M_nextImage = function()
	{	if(this.c)
		{	var next = $(this.c).next(".imageElement").get(0);
		
			if( !next)
			{	next=$(this.m_obj).find(".imageElement").get(0);
			}
			if( $(next).is(".imageElement"))
			{

				// swap elements
				this.m_previous=this.c;
				this.c =next;
				$(this.m_previous).css({zIndex:this.m_zIndex+2});				
				this.M_prepareCurrent();
				$(this.c).show();
			}
		}
	}

	// call Init
	if(this.m_obj) this.M_init();
}



var sRQSlideshows=null;
var sRQSlideshowsStep=30;
function RQSlideshowInit()
{	
	if( !sRQSlideshows)
	{
		sRQSlideshows=Array();
		$(".rqSlideshow").map(function (index) {if($(this).find('.imageElement').get(0)) sRQSlideshows.push(new RQSlideshow($(this).get(0)));});
		RQSlideShowsRun();
	}
}
function RQSlideShowsRun()
{	for( var i=0; i<sRQSlideshows.length; i++)
	{	sRQSlideshows[i].M_animate(sRQSlideshowsStep);
	}
	slide.M_animate(sRQSlideshowsStep);

	self.setTimeout("RQSlideShowsRun();",sRQSlideshowsStep);

}


/* ----- slideover, slideout ----- */
var slide =
{	
	me:null
	,c:null
	,n:null
	,ss:null
	,m_state:0
	,m_opacity:0
	,m_opaTxt:0
	,mOutTimer:null
	,mOverTimer:null
	,mCanHide:true
	,mHideDelay:200
	,mVid:null
	,mVidState:0
	,M_init:function(id)
	{	this.me=$(id);
		this.me.mouseover(function(){slide.M_keepUp();}).mouseout(slide.sM_out);
	}
	,M_setState:function(i)
	{	this.m_state=i;
	}
	,M_animate:function(stepMs)
	{	if(!this.me)return;
		
		if( this.m_state==1)		// showing
		{	this.m_opacity += stepMs/500;
			if( this.m_opacity>=1)
			{	this.m_opacity=1;
				this.M_setState(2);
			}
			this.M_setPositions();
		}else if( this.m_state==2)		// visible
		{	if(this.n)	this.M_setState(5);

		}else if( this.m_state==3)		// fading out
		{	this.m_opacity -= stepMs/300;
			if( this.m_opacity<=0)
			{	this.m_opacity=0.01;
				this.me.css("display","none");
				this.M_setState(0);
				this.c = null;
			}
			this.M_setPositions();
		}else if( this.m_state==4)		// closing current
		{	this.m_opaTxt-=stepMs/400;
			if(this.m_opaTxt<=0)
			{	this.m_opaTxt=0.01;
				if(this.mVid)
				{	this.mVid.vdPause();
					this.mVid=null;
					this.c.find('img.full').fadeIn();

				}	
				this.c=0;
				if(this.n) this.M_setState(5);
				else this.M_setState(3);
			}
			this.M_setContentPositions();
		}else if( this.m_state==5)		// showing next
		{	if(this.n)
			{	this.M_makeContent(this.n);
				this.c=this.n;this.n=0;
				this.m_opaTxt=0.01;
				this.me.find('.content').css('opacity',this.m_opaTxt);
			}
			this.m_opaTxt+=stepMs/1000;
			if( this.m_opaTxt>=1)
			{	this.M_setState(2);
				if(this.mVid)
				{	
					this.mVid.vdPlay();
					this.c.find('img.full').fadeOut();
				}

			}
			this.M_setContentPositions();
		}
		
		
	}
	,M_videoEnded:function()
	{	if(this.c) this.c.find('img.full').fadeIn();	
	}
	,M_setPositions:function()
	{	if(this.me)
		{	this.me.css({display:"block",opacity:0.66*this.m_opacity});
			var t=(this.m_opacity<0.5? 0.5-this.m_opacity : 0)/0.5;
			$('#logoName,#logoBaseline').css({opacity:t})
			$('#logoIcon').css({left:0+t*51});
		}
	}
	,M_setContentPositions:function()
	{	// use this.m_opaTxt
		var t=(this.m_opaTxt<0.5? this.m_opaTxt : 0.5)/0.5;
		this.me.find('.content').css({opacity:t});
		$('#nextProj a').css({opacity:this.m_opaTxt});
	}

	,sM_over:function(s){slide.M_over(s);}
	,M_over:function(s)
	{	if( s.c)
		{	this.ss=s;
			this.M_open(s.c);
			this.M_show();
			
			slide.M_keepUp();
		}
	}
	,sM_out:function()
	{	if(slide.mCanHide)
		{	if( slide.mOutTimer) self.clearTimeout(slide.mOutTimer);
			slide.mOutTimer = self.setTimeout("slideHide();",slide.mHideDelay);
		}	else RQDebug("(can't hide)");
	}
	,M_show:function()
	{	
		if( this.m_state==0)
		{	this.M_setState(1);
		}else if (this.m_state==3)
		{	this.M_setState(1);
		}else if (this.m_state==4)
		{	this.M_setState(5);
		}
		
		if( this.ss) this.ss.M_pause(true);

	
	}
	,M_open:function(c)
	{	if( this.c && this.c.get(0)==c)
			return;
		if(c)
		{	this.n = $(c);
			if( this.m_state==2)
				this.M_setState(4);
		}
	}
	,M_makeContent:function(o)
	{	if( o)
		{	var s="";
			var p=o.find('p').get(0);
			var t=o.find('h3').get(0);
			var a=o.find('a.open').get(0);
			var im=o.find('img.full').get(0);
			var v=o.find('video').get(0);
			// video 
			if(this.mVid) {this.mVid.vdStop();this.mVid=null;}
			if( v && $(o).data('playVideo'))
			{	this.mVid=$(v);
			}
			if( t)	s+="<h2>"+$(t).text()+"</h2>";
			if( p)	s+="<p>"+$(p).html()+"</p>";
			if( a)	s+="<div class=\"goto\"><a href=\""+$(a).attr('href')+"\">"+g.strSeeProj+"</a></div>";
			this.me.find('.content').html(s);				
		}
	
	}
	,M_out:function()
	{	this.n=null;
		if( this.m_state==1)
		{	this.M_setState(3);
		}
		else if( this.m_state==2 || this.m_state==5)
		{	this.M_setState(4);

		}	
		if( this.ss) this.ss.M_pause(false);
	
	}
	,sM_keepUp:function(){slide.M_keepUp();}
	,M_keepUp:function()
	{
		this.mCanHide = false;
		if( this.mOutTimer)
		{
			self.clearTimeout(this.mOutTimer);
			this.mOutTimer = null;
		}
		if( this.mOverTimer)
			self.clearTimeout(this.mOverTimer);
		this.mOverTimer = self.setTimeout("slideCanHide();",10);

	}
	,M_mCanHide:function()
	{
		this.mOverTimer = null;
		this.mCanHide = true;
	}
};
function slideCanHide()
{	slide.M_mCanHide();
}
function slideHide()
{	slide.M_out();
}

jQuery.fn.rqFade = function (v,d)
{	return this.each(function(){$(this).animate({opacity:v},{queue:false,duration:d});});
}



/* ----- Video tag wrapper using jQuery ----- */
jQuery.fn.vdPlay = function (opts)
{
	return this.each(function(){
		if( $(this).is('video'))
		{	if( g.hasVideo)
			{	this.play();
			}
			else	// load the clip intro flash 
			{	
				var src="";
				$(this).find("source").each(function(){ src=$(this).attr('src'); })
				//$('#headerFlashPlayer').css({display:src?"block":"none"});					
				if( src && g.videoPlayer)
				{	g.videoPlayer.sendEvent("LOAD",src);
					g.videoPlayer.sendEvent("PLAY",true);
					g.videoPlayer.addControllerListener("STOP", "jwPlayerStop");
				}

			}
		
		}
	});
}
function jwPlayerStop(obj){slide.M_videoEnded();}

jQuery.fn.vdPause = function (opts)
{	return this.each(function(){
		if( $(this).is('video'))
		{	if( g.hasVideo)
			{	this.pause();
			}
			else
			{	if(g.videoPlayer)
					g.videoPlayer.sendEvent("PLAY",false);
			}
		}
	});
}
jQuery.fn.vdStop = function (opts)
{	return this.each(function(){
		if( $(this).is('video'))
		{	if( g.hasVideo)
			{	this.pause();
			}
			else
			{	if(g.videoPlayer && g.videoPlayer.sendEvent)
					g.videoPlayer.sendEvent("STOP");
				//$('#headerFlashPlayer').hide();				
			}
		}
	});
}