/*
Homepage animation scripts
*/
/*
Constants
*/
var mouseoutMenuSlideDelay = 300;

/*
Variables
*/
var flashVideoPlayer;		
var fxMenuSlide;
var fxMenuControlSlide;
var objDivMenuWraper, objDivMenu, objDivLeftNav, objSlideIn;
var bolPauseVideo=true;

function initHomePage(){
	var bolIsIE;
	var objMenuTable;
	
	//1) find the flash dom object
	bolIsIE = navigator.appName.indexOf("Microsoft") != -1;
	flashVideoPlayer = (bolIsIE) ? window['homepageanimation'] : document['homepageanimation'];
	
	
	//2) setup the animation effects
	//2a) find the required dom objects
	objMenuTable=$('p-table-left');	
	objDivMenuWraper=$('far-menuwrapper');
	objDivMenu=$('far-menu');
	objDivLeftNav=$('p-leftnav');
	objSlideIn=$('slideIn');
	
	//alert($defined(objDivMenuWraper)+" - "+$defined(objSlideIn)+" - "+$defined(objMenuTable)+" - "+$defined(objDivLeftNav)+" - "+$defined(objDivMenu))
	
	if($defined(objDivMenuWraper)==false || $defined(objSlideIn)==false || $defined(objMenuTable)==false || $defined(objDivLeftNav)==false || $defined(objDivMenu)==false ){
		//alert('not found');
		//not all object can be found - retry
		initHomePage.delay(700);
		return false;		
	}else{
	
		//correct the height of the layers so that the menu always fits
		var intHeightTable=objMenuTable.getSize().size.y;
		
		if(intHeightTable>430){
			objDivMenuWraper.setStyle('height', intHeightTable);
			objDivMenu.setStyle('height', intHeightTable);
			objDivLeftNav.setStyle('height', intHeightTable);
		}
		
		//setup the effects
		//a) the menu
		fxMenuSlide = new Fx.Style('far-menu', 'left',{
			duration:600, 
			transition:Fx.Transitions.Sine.easeInOut,
			onStart: function(){
				//alert('in');			
			},
			onComplete: function(){
				var intStylePosLeft=objDivMenu.getStyle('left').toInt();
				if(intStylePosLeft < -180){
					//alert('done - resume video - '+intStylePosLeft);
					if(bolPauseVideo)callFlashPlayVideo();
					objDivMenuWraper.setStyle('width', '37px');
				}				
			}
		});
		//b) the arrows
		fxMenuControlSlide = new Fx.Style('far-openleftnav', 'left',{
			duration:200, 
			transition:Fx.Transitions.Sine.easeInOut
		});
		
		//add events
		objSlideIn.addEvent('mouseenter', farSlideMenuIn); // Add menuslide event 
		objDivMenu.addEvent('mouseleave', function(){ farSlideMenuOut.delay(mouseoutMenuSlideDelay, this); });	
		
		
		//3) start the stream (which in turn starts the menu animation)
		callFlashStartStream();
		//menuPreview()
	
		
	}
}


/*
Menu slide controls
*/
function farSlideMenuIn(){
	farSlideMenu('in')
};
function farSlideMenuOut(){
	farSlideMenu('out')
};
function farSlideMenu(mode) {
	var menu = objDivMenu;
	//alert(menu+" - "+$defined(menu));
  var posx = parseInt(menu.getStyle('left'));
  var w = parseInt(menu.getStyle('width'));
  var arrArgs=farSlideMenu.arguments
  var intArgs=arrArgs.length;
  
  if(intArgs==2){
  	bolPauseVideo=arrArgs[1];
  }
      
  if (mode == 'in') {
  	if(posx<-180){
  		if(bolPauseVideo)callFlashPauseVideo();
  		objDivMenuWraper.setStyle('width', '700px');
  	}
    if (posx < 10) {
      fxMenuSlide.stop().start(0);
      fxMenuControlSlide.stop().start(-37);
    }
  } else if (mode == 'out') {
  	//alert('pause video');
  	
      if ((posx + w) > 5) {      	
        fxMenuSlide.stop().start(0 - w);
        fxMenuControlSlide.stop().start.delay(500,fxMenuControlSlide,0); 			
      }
  }    
}

function menuPreview(){
	/* the preview menu effect when the homepage loads */
	farSlideMenuIn.delay(100);	
	farSlideMenuOut.delay(1400);	
}


/*
Communication with the flash
*/
function callFlashPauseVideo() {
	flashVideoPlayer.pauseVideo();
}
function callFlashPlayVideo() {
	flashVideoPlayer.resumeVideo();
}
function callFlashStartStream(){
	flashVideoPlayer.startStream();	
}
