// Batt CrossBrowser Dyn_Lib Global Routine Engine. last updated: 25052001
// **********************************************************************************************************************
// All the code, the GUI and the interactivity solutions are (C) 1999/2001 by Battini Digital Solutions.
// You are NOT ALLOWED to modify, copy, reuse, distribute or change this code and scripts without our written permission.
// All scripts src, work steps, GUI use type variables, and documentation are also (c) protected by 
// TM inc, doc. 1999.0602/2001 and by PTT. Assurance, Doc. 150100UI1999/2001.
// For more information you can contact our company,
// email contact to dbattin@tin.it.
// **********************************************************************************************************************
// Batt global js engine code, buffer block
var	dragged=null; var dragginGo=false;
var mox=0; var moy=0;
// menu hover start pos var x e y
//var ecX = 40; var ecY = -90;
var ecX = 0; 
var ecY = 0;
// master start X and Y pos menu coords
//var posXdef=100; var posYdef=90;
var posXdef=0; 
var posYdef=0;
var speedtimer = 50; var ID; var dragged;
var battMenuIsReadyforHoverFX=0; var windowScrollingIsOn=1;
	// 2nd vars block
var startslideFX = 0; var slideNewsOn = 0; var oneOnlyStartDoIt = 0;
var timerReentFXloop1; var refDynLyrDelay = "wait";
var xloop = 0; var newsarray = 8;          						
var refDynLyrXloop; var nav4bugifEvtLocFix;
var reenterFXloopNewsRun = 0; var stopAndHideNewsDisplay = 0;
	// scrolling e multi moverVeloxFX            
var topx=0; var otopx=0; var px=0; var opx=0;
var numItems=14; var contentW=0; var HW=0; var topx2=0;
var otopx2=0; var posLayX; // var posLayY;
var pixstep; var movlyrX; var widthImg; var restart;
	// browser usable area buffer, width and height
var win_w=0; var win_h=0;
var xscroll=false; var vxScroll=0;
	// infoBox increment to the text scrolling
var opxScroll=0; var lastsign=0;
	// orig speed and max infoBox scroll speed variable
var speed=40; // var speed=60;
	// min mouse move check for activate
var minmove=2; // var minmove=8;
	// batt bottom scroll stop, bound
var scrollbottomBoundEndForMouseMovePosCheckDoAction = 0;
	// vars for 'function hoverMasterFunctFX()'
var tickerBkgIsOn = 0; var slideFXpos1x;
var slideFXpos1y; var mousoverMoverBkg = 0;
var animatedSrollTextOn = 0; var AnimationMovDivbkgOn = 0;
	// for animateScroll_WinBy_To()
var animateDoitScrollingOn=0; var numstepUnif = 1;
var stepControlX = numstepUnif; var stepControlY = numstepUnif;
var animScrollCounterXX=0; var animScrollCounterYY=0;

var animScrollOnChecker = 0;
	// needed from 'function openNewWind()
var WidthScreenXX; var HeightScreenYY;
var omouseOverAction = 0;
	// for last bgk movmandHover test 
var ifscroolWinOn; var MouseifscroolWinOn; var doitScrollingOn=0;
	// B General Note: JS and CSS STYLE add setWIDTH and setHEIGHT values 
	// absolute needed for fix IE and N6 BAD DISPLAY BUG - Batt fix 16/1/01

function getNewDraggedMenuPos(evt) {
			// reset menu coords when released  
	if(dragged && dragged == "boxDiv9"){ mousemoveH(evt); 
			// get lyr X/Y, "boxDiv9";      
	    x=getStyleObject('boxDiv9', 'sty', 'valX', 0); 
	    y=getStyleObject('boxDiv9', 'sty', 'valY', 0);
		mox=mouseX-x; moy=mouseY-y; 
		ecX = getscrollX('top'); ecY = getscrollY('top');
		posXdef = mouseX-mox; posYdef = mouseY-moy; }
		// window.status="[mousX:" + mouseX + "]_[mousY:" + mouseY + "]_[moX:" + mox + "]_[moY:" + moy +"]_[scrX:" + ecX +"]_[scrY:" + ecY +"]_[pXdf:x" + posXdef +":"+x+"]_[pYdfy:" + posYdef +":"+y+"]";	
		}
		
var click_it_N4fixSwitchDoThisFunct = 0;
function mappingObjToDrag_test(evt) {
				// inspired from the big Seb work way
				dragged=null;
				slide=null;
		for (i=1; i<=10; i++){ ID='boxDiv'+i;
					////// alert(ID);
				x=getStyleObject(ID, 'sty', 'valX', 0); 
				y=getStyleObject(ID, 'sty', 'valY', 0);
				w=getStyleObject(ID, 'sty', 'valWd', 0); 
				h=getStyleObject(ID, 'sty', 'valHg', 0); 
			setObjZindex(ID,346);
		if(mouseX<x) continue; if (mouseX>x+w) continue; if (mouseY<y) continue; if (mouseY>y+h) continue; dragged=ID;
	   			(dragged != "boxDiv10") ? setObjZindex(dragged,352) : null;
	    		 mox=mouseX-x; moy=mouseY-y;
		if(isNav && dragged == "boxDiv9" && (click_it_N4fixSwitchDoThisFunct > 0 && click_it_N4fixSwitchDoThisFunct < 6)){
		
						//// alert("XXXXX ns 4 do funct mappingObjTodrag RUN");
					forN4_hrefJSfunctionDo(click_it_N4fixSwitchDoThisFunct);} 
					}
				if(ID == "boxDiv10") return;
				}
var targClickedObj; 
var applyVisibVal;
function forN4_hrefJSfunctionDo(click_it_N4fixSwitchDoThisFunct) {
		//alert("forN4_hrefJSfunctionDo(click_it_N4fixSwitchDoThisFunct) RUN");
			targClickedObj = "menu"+click_it_N4fixSwitchDoThisFunct+"sub"+1;
			getVisibVal = getStyleObject(targClickedObj, 'sty', 'valVis', 0);
	   		applyVisibVal = (getVisibVal == ('hide'||'hidden')) ? 'visible' : (getVisibVal == ('show'||'visible')) ? 'hidden' : 'inherit';
	  		}
function click_it(evt) {
		 	// for N4 fix generic clicks in doc body, not on dragged objects
	  	if(isNav && evt.target == document){ return null;
		 	} 
		 else {	
	  		//if (isNav){ 
	  		// hideAllMenus(); }
		 	(document.layers && nav4bugifEvtLocFix=="not_dragable") ? null : mappingObjToDrag_test();
	  	if (dragged){ 
	  		tickerBkgIsOn = 0; 
	  		slideNewsOn = 0; 
	  		} 	
	  	if (!dragged){ 	//reInit_Newsloop(); 
	  			mouseAnimated_Yes(); 
	  			//hideRollONButtImg(); 
	  			}
	  	if (dragged) return false;	// this make drags smooth and continuous 
	  	 	}
	       }
function release_it(evt) {
	  	if (dragged) { 
	  		tickerBkgIsOn = 1; 
	  		slideNewsOn = 1;
		  	getNewDraggedMenuPos(evt);	     
		 	refreshMMovCapturAndNewScrollObjZone('infoDiv', 'infoBoxDiv');
		if (isNav && dragged == "boxDiv9"){		
				// ns4 onclick bug_storm workaround02
			 if (click_it_N4fixSwitchDoThisFunct > 0 && click_it_N4fixSwitchDoThisFunct < 6){
	  				// if (isNav && dragged == 'boxDiv9'){
	  			hideallMsg(); 
	  			showMenu(click_it_N4fixSwitchDoThisFunct, targClickedObj, applyVisibVal, submenuLenforHideAll);
	  			}
	  		else if (click_it_N4fixSwitchDoThisFunct == 6 || click_it_N4fixSwitchDoThisFunct == 7){ 
	  				hideallMsg();
	  					// msgOnOffDisplay: a ns4 clikking bug workaround
	  			if (click_it_N4fixSwitchDoThisFunct == 6){
	  					msgOnOffDisplay('downlLyr','visible') 
	  				} else {
	  					resetdata(); 
	  					msgOnOffDisplay('resServices','visible');
	  					}
	  				  }
	  		        }
		  	//reInit_Newsloop(); 
		  	mouseAnimated_Yes();
		  	dragginGo = false; 
		  	dragged=null;
		  	return false;
		  	}
		  }
function move_it(evt) {
            mousemoveH(evt);
		if (dragged){ tickerBkgIsOn = 0; slideNewsOn = 0; mousoverMoverBkg = 0; dragginGo = true;
		    // hideCurrentPopup(); // for info caption msg only, if activated
		    hideAllMenus();
		    //cancel_Newsloop(1);
    	   if (dragged == 'boxDiv10'){
    	   		moveObject('infoBoxDiv',mouseX-mox,(mouseY-moy+30));
    	   		////// moveObject('boxDiv10bottom',mouseX-mox,eval(((mouseY-moy)+heightBox)+35));
    	   			////moveObject('boxDiv10bottom', pos4x, eval(((pos4y-30)+heightBox)+20), 0);
    	   		}
 			moveObject(dragged,mouseX-mox,mouseY-moy);
	        eval(dragged+'.x='+mouseX); eval(dragged+'.y='+mouseY);
  			// window.status="[mousX:" + mouseX + "]_[mousY:" + mouseY + "]_[moX:" + mox + "]_[moY:" + moy +"]_[scrX:" + ecX +"]_[scrY:" + ecY +"]_[pXdf:x" + posXdef +":"+x+"]_[pYdfy:" + posYdef +":"+y+"]";
	     	}
       	   if (isExp || isW3C) return false;
       	   }
function reInit_Newsloop(){    
     	if (reenterFXloopNewsRun == 0) { stopAndHideNewsDisplay = 0; ReenterFX_hoverFXmulti3();
		 	reenterFXloopNewsRun = 1; slideNewsOn = 1; startslideFX = 1; windowScrollingIsOn = 0;}
     	 	}
function cancel_Newsloop(stopAndHideNewsDisplay){
	 	if (reenterFXloopNewsRun == 1) { clearTimeout(timerReentFXloop1);
         	reenterFXloopNewsRun = 0; slideNewsOn = 0; startslideFX = 0; windowScrollingIsOn = 1; refDynLyrDelay = "wait";
         	// B the two checks switcher after will be separated
		   (stopAndHideNewsDisplay==1) ? hideAllOffNews() : null; 
		   (stopAndHideNewsDisplay==1) ? changeObjectVisibility(refDynLyrXloop, 'hidden') : null;}
        	}

var adjstLeft = 0;
var adjstTop = 0;
var panneltabX=0; var panneltabY=0;
var bgkMmoverHght = 0; var infoBoxDivX=0; var infoBoxDivY=0;
var lyrY_pos=0;								// ticker top wind based pos
function init_MusCaptShowLyreAnimated() {
			startMouseCapture();
			// init this vars before hoverFx starts for avoid IE cracks, else 
			// IE can return NaN if don't found this val Numb stored in global vars before
			hoverSrollWinX=getscrollX('top'); 
			hoverSrollWinY=getscrollY('top');
			win_w=getwindowWidth();
			win_h=getwindowHeight();
				// menu hover start pos var x e y
				ecX = 40; 
				ecY = -5;
				// master start X and Y pos menu coords
				posXdef=Math.round(win_w/15);  				// posXdef if Window Fractions based go Rounded else scrollInfo blockS
				//var posYdef=20;
				posYdef=Math.round(win_h/30);				// dyn top pos basrd on wind Hg
				TW=1482-win_w; animatedSrollTextOn = 1; 
	 		//panneltabValHg = getStyleObject('panneltab', 'sty', 'valHg', 0);
	 		//panneltabX = - 230; 
	 		//panneltabY = (390-(win_h/7));
	 		//panneltabY = 390;
	 		bgkMmoverHght=getStyleObject('acefbigbgk','sty','valHg',0);
	 			// B infoBox topY pos
			infoWidthX = getStyleObject('infoDiv', 'sty', 'valWd', 'infoBoxDiv');
			//scrollmaxY=win_h/2-200; // scrollc=scrollmaxY;
			
			////scrollmaxY=((win_h/2)-win_h/2.85);
			
			scrollmaxY=((win_h/2)-win_h/2.95);
				// B topNestY posY in nested divs and info leftX init										
			scrollc=1; 
			//scrollx=win_w/2+200;
			scrollx = eval((win_w-infoWidthX)+15);
			//infoWidthX = getStyleObject('infoDiv', 'sty', 'valWd', 'infoBoxDiv');
				// B obj left + div variable width automatic check			
 			scrollmaxX=scrollx+infoWidthX;
				// origZnset //zoneup=win_h*0.45; zonedown=win_h*0.75; zoneh=win_h*0.25;
				moveObject('infoBoxDiv', scrollx, scrollmaxY, 0); 
				moveObject('infoDiv', 1, 1, 'infoBoxDiv');
				//setObjBgImage('infoDiv', 'imgmenu/bl2trnsp.gif', 'infoBoxDiv');
				// alert coming soon lyr
				Alert_pannelWd = getStyleObject('infoDivInActivaction', 'sty', 'valWd', 0);
				Alert_pannelHg = getStyleObject('infoDivInActivaction', 'sty', 'valHg', 0);
				setObjBgImage('infoDivInActivaction', 'imgmenu/bl2trnsp.gif', 0);
				moveObject('infoDivInActivaction', ((win_w/2)-(Alert_pannelWd/2)), (30-(win_h/100)), 0);
			changeObjectVisibility('infoBoxDiv','visible'); 
			changeObjectVisibility('infoDiv','visible','infoBoxDiv');
			
								// ADDa on psw and 'CERTIFICATI' pdfs V. 291202
								
			var eTempXeObjP = getStyleObject('downlLyr', 0, 0, 0);
			
				eObjP = getStyleObject('downlLyr', 'sty', 0, 0);
				eAlert_pannelWd = getStyleObject('downlLyr', 'sty', 'valWd', 0);
				eAlert_pannelHg = getStyleObject('downlLyr', 'sty', 'valHg', 0);
				setObjBgImage('downlLyr', 'imgmenu/bl2trnsp.gif', 0);
				moveObject('downlLyr', parseInt(((win_w/2)-(eAlert_pannelWd/2))), (30-(win_h/100)), 0);
				//// changeObjectVisibility('downlLyr','visible');
					// eObjP.bgColor= "red";
					// eObjP.clip.width= eAlert_pannelWd+20;		// ok ns4 home mastro clipRight bugass
					// eObjP.left= "122";
					
			if (!document.layers){
					eObjP.border = "2px outset #09256E";	
						// ns4 don't apply dinamically border right, only class tag 
						// and rewriteln in objs seems to work for ns4 dynamics css
						// eObjP.border = "2px solid #09256E";
						// eObjP.borderWidth = "2";
						// eObjP.borderColor = "#09256E";
					} else { 
						// eTempXeObjP.document.bgColor = "tan";	// forcing a ns4 bug test
						eTempXeObjP.clip.top = "10";	// ns4 grr debug clip only in home full vers with add borders grr
						// eTempXeObjP.top = "10";
						}
						
			resThisWd = getStyleObject('infoBoxDiv', 'sty', 'valWd', 0);
			resThisHg = getStyleObject('infoBoxDiv', 'sty', 'valHg', 0);
				// dynamic obj resize for IE right setClip coords check
			resizeObjects('infoBoxDiv', (resThisWd-12), (resThisHg-250));
			topBox = getStyleObject('infoBoxDiv', 'sty', 'valY', 0);
			heightBox = getStyleObject('infoBoxDiv', 'sty', 'valHg', 0);
				// B top and bottom boundaries for dynamic startY and endY MMover capture area
			scrollbottomBoundEndForMouseMovePosCheckDoAction = (topBox+heightBox);
				// scrolminY will be set only in init, no refresh, 
				// return real end scroll bound for src content div heigth
			scrollminY=win_h-getStyleObject('infoDiv', 'sty', 'valHg','infoBoxDiv');
			boxClipBottomDiff = (win_h-scrollbottomBoundEndForMouseMovePosCheckDoAction);
			scrolMinBoxBottom = (scrollminY-(boxClipBottomDiff*1.65));
				// dynamic new scrollminY based on boxInfo posY e X
			scrollminY = Math.round(scrolMinBoxBottom);											
				// Init clip for infoBoxDiv and modify the active MMovCaptur Areas
			SetDynamicClipObj('infoBoxDiv', 0, (resThisWd-10), heightBox, 0, 0);
			zoneup=(topBox+(heightBox/2.65)); 
			zonedown=(scrollbottomBoundEndForMouseMovePosCheckDoAction-(heightBox/2.65));
				// zoneh val modify speed scrool, more lower more faster;
		    arrV=0; lastY=mouseY; zoneh=win_h*0.20;												
		         // def posinfoBoxDivX for hoverFX leftX and topY coords
		    infoBoxDivX=scrollx; infoBoxDivY=scrollmaxY;	
 	 			// window.status="[infWd="+getStyleObject('infoDiv', 'sty', 'valHg','infoBoxDiv')+":scmin:"+scrollminY+":scmax="+scrollmaxY+":scrx="+scrollx+":scrollc="+scrollc+"::scmaxX="+scrollmaxX+":-:win_h"+win_h+":zUP="+zoneup+":zDown="+zonedown+":zh="+zoneh+":boun:"+scrollbottomBoundEndForMouseMovePosCheckDoAction+":"+topBox+":"+heightBox+":"+heightBox+300+"]";
			changeObjectVisibility('aceflog','visible');
                // init visib objgroup 2 multiBattbkgCode
                // lyrY_pos = (win_h-(win_h/2.1));			// ticker top wind based pos
                lyrY_pos = (win_h-(win_h/5));			// ticker top wind based pos
            initTopObj1 = getStyleObject('Layer1', 'sty', 0, 0);
            initTopObj2 = getStyleObject('Layer2', 'sty', 0, 0);
            	initTopObj1.top = lyrY_pos; 
            	initTopObj2.top = lyrY_pos;
            copyRightstextObjWd = getStyleObject('copyRightstext', 'sty', 'valWd', 0); 
            moveObject('copyRightstext', ((win_w/2)), (win_h-28), 0);
            changeObjectVisibility('copyRightstext','visible');
            	changeObjectVisibility('Layer1','visible'); 							// IE 5 need display here
				changeObjectVisibility('Layer2','visible');
				}

// batt new funct for check and refresh active area pos dyn_coords for scroll obj
var hoverSrollWinX=0; var hoverSrollWinY=0;
var heightBox=0; var topBox=0;
var resThisWd=0; var resThisHg=0; var zoneh;
var zonedown; var zoneup; var arrV;
var scrollmaxX=0; var infoWidthX=0; var scrollc;
var scrollx=0; var scrollminY=0; var scrollminY=0;
var onlyOneifHoverFXeWinScrl0_refresh = 0;
var boxClipBottomDiff=0; var scrolMinBoxBottom=0;

function refreshMMovCapturAndNewScrollObjZone(refreshObj, nestBoxrefreshObj) {
			hoverSrollWinX=getscrollX('top'); hoverSrollWinY=getscrollY('top'); animatedSrollTextOn = 1;
				// Calculate layers positions based on objBox if nested lyr size
				// Calculate new obj scroll active area pos based on the boxobj coords
			//scrollminY=win_h-getStyleObject(refreshObj, 'sty', 'valHg',nestBoxrefreshObj);
				// check the new top, left, and width for info lyr coords refresh
			scrollmaxY=getStyleObject(nestBoxrefreshObj, 'sty', 'valY', 0); 
			scrollx=getStyleObject(nestBoxrefreshObj, 'sty', 'valX', 0);
			infoWidthX = getStyleObject(refreshObj, 'sty', 'valWd', nestBoxrefreshObj); 
			scrollmaxX=scrollx+infoWidthX; arrV=0;
				resThisWd = getStyleObject(nestBoxrefreshObj, 'sty', 'valWd', 0);
				resThisHg = getStyleObject(nestBoxrefreshObj, 'sty', 'valHg', 0);
				// dynamic obj resize for IE right setClip height coords check
				// resizeObjects(nestBoxrefreshObj, (resThisWd-12), (resThisHg-250));
			topBox = getStyleObject(nestBoxrefreshObj, 'sty', 'valY', 0);
			heightBox = getStyleObject(nestBoxrefreshObj, 'sty', 'valHg', 0);
				// add batt top and bottom end mouse do boundaries
			scrollbottomBoundEndForMouseMovePosCheckDoAction = (topBox+heightBox);
				zoneup=(topBox+(heightBox/2.65));
				// refresh active MMovCaptur active Area coords
				zonedown=(scrollbottomBoundEndForMouseMovePosCheckDoAction-(heightBox/2.65));
		    	zoneh=win_h*0.20; lastY=mouseY;
		    	// refresh posinfoBoxDivX for hoverFX left/top coords
				infoBoxDivX=scrollx;
				infoBoxDivY=scrollmaxY;																	
   				// window.status="[ REFRESH NOW SCROLLS nestBoxrefreshObj="+nestBoxrefreshObj+":refreshObj="+refreshObj+":infWd="+getStyleObject(refreshObj, 'sty', 'valHg',nestBoxrefreshObj)+":scmin:"+scrollminY+":scmax="+scrollmaxY+":scrx="+scrollx+":scrollc="+scrollc+"::scmaxX="+scrollmaxX+":-:win_h"+win_h+":zUP="+zoneup+":zDown="+zonedown+":zh="+zoneh+":boun:"+scrollbottomBoundEndForMouseMovePosCheckDoAction+":"+topBox+":"+heightBox+":"+heightBox+300+"]";
				}

function init_allObjects() {
	  if(isNav){document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP);} 
	       document.onmousemove=move_it;
		   document.onmousedown=click_it;
		   document.onmouseup=release_it;
		   winx=getwindowWidth(); winy=getwindowHeight();
		   	// Initialize dragging and newsLoop Objects
      for(i=1; i<=10; i++) { l='boxDiv'+i; if(i <= 8) {	
      			// Can Pick random start values
		   rx=Math.floor(Math.random()*winx); ry=Math.floor(Math.random()*winy);
		   vx=Math.floor(Math.random()*20)-10; vy=Math.floor(Math.random()*20)-10; }
		     	// batt checks this init objects for add Dynamic Hover or/and Drag FX
	  else if(i >= 9){ if(l == "boxDiv9") { rx=0; ry=-150; vx=0; vy=0;}
		   if(l == "boxDiv10") { rx=20; ry=350; vx=0; vy=0;} }
	  if(isNav || isW3C || isOpera) eval(l+'=new Object()'); 
	  		 eval(l+'.x='+rx); eval(l+'.y='+ry); eval(l+'.vx=0'); eval(l+'.vy=0');
		  if(l == "boxDiv9") { setObjZindex(l,352); moveObject(l,rx,ry); }
		     // attach box10lyr to info box for sync animat
	  else if(l == "boxDiv10") { 
	  			setObjZindex(l,348); 
	  			moveObject(l, getStyleObject('infoBoxDiv', 'sty', 'valX', 0), (getStyleObject('infoBoxDiv', 'sty', 'valY', 0)-30));
	  			changeObjectVisibility(l, 'visible');
	  			////// changeObjectVisibility('boxDiv10bottom', 'visible'); 
	  			}
	  else{ setObjZindex(l,98); moveObject(l, -100, 150); } 
	  		}
		   // set this same coords also in hideAllOffNews : moveObject(refDynLyr,100,300)
	      }

function hideAllOffNews() {
		for(counternw = 1; counternw <= newsarray; counternw++) {
			loopObjChangeSty = "boxDiv"+counternw; 
	 	   	//(dragginGo == true || windowScrollingIsOn == 1) ? changeObjectVisibility(refDynLyrXloop,'visible') : changeObjectVisibility(loopObjChangeSty,'hidden');
	 	    changeObjectVisibility(loopObjChangeSty,'hidden');
		 	moveObject(refDynLyr,-100,150); 
		 	setObjZindex(loopObjChangeSty, 349);} 	
		 	// NB set the same coords X/Y also in init_allObjects for 'moveObject(l, 100, 300)' func;
         	}
     
function ReenterFX_hoverFXmulti3() {  
			refDynLyrDelay = "wait";
		if(xloop==newsarray){ xloop = 0;}
			reenterFXloopNewsRun = 1;
		if(xloop<newsarray){ startslideFX = 0; xloop++; refDynLyrXloop = "boxDiv"+xloop;
    	if(windowScrollingIsOn == 0 && slideNewsOn == 1){ startslideFX=1; refDynLyrDelay='run'; 
      	   (xloop == 9 || xloop == 10) ? null : setObjZindex('boxDiv'+xloop,352);
      	   	changeObjectVisibility('boxDiv'+xloop, 'visible'); 
       	   }
       	   // master timeout for loop dyn news start/hiding
         timerReentFXloop1 = setTimeout("hideAllOffNews(); ReenterFX_hoverFXmulti3();", 3000);}
         }

var objInMov = 0;
var ticKerLyr1IsReady1 = 0; 	// lyr visibility on now only to 1
//// var initNewsBoxIsOn = 0;		// done trained top bottom news box images only one time
function hoverMasterFunctFX() {
			// Batt : the powered allinOne Timer ctrl-Center
		if(animatedSrollTextOn == 1){
			// track mouse speed and last moving direction above thresold for activate Yscroll objs
			dy=mouseY-lastY; lastY=mouseY;
		if (dy>0) { dysign=-1; if (dy>minmove) lastsign=-1; }
			else if (dy<0) { dysign=1; dy=-dy; if (dy>minmove) lastsign=1; }
			else dysign=0;
			// calc scroll speed, left and right virtual scrolls_zone boundaries
		if ((mouseX>scrollx) && (mouseX<scrollmaxX)) {
			// if scrolls DOWN
	    if (mouseY<zoneup && mouseY>topBox) {
				// (zoneup/2) lower zoneup more speed scroll down
				// now all based on zh only
			b=(zoneup-mouseY)/zoneh;
		if (lastsign==-1) vxScroll*=0.6
			else if (lastsign==1) vxScroll=b*speed;}
				// if scrolls UP
			else if (mouseY>zonedown && mouseY<scrollbottomBoundEndForMouseMovePosCheckDoAction){
				// more lower zoneh more speed scroll up and 'viceversa'
			b=(mouseY-zonedown)/zoneh;
		if (lastsign==1) vxScroll*=0.6;
				else if (lastsign==-1) vxScroll=-b*speed; }
				}
				// apply speed and friction
			scrollc+=vxScroll; vxScroll*=0.8;
				// bound check, down stop scroll, check div ends height
		if (scrollc<scrollminY) { scrollc=scrollminY; }
				// ok for orig not nested clipped lyr scroll
	 			//// if (scrollc>scrollmaxY) { scrollc=scrollmaxY; }
	 			// up scroll stop if check div top val
		if (scrollc>1) { scrollc=1; }
				// only move if necessary to save CPU 
        if (scrollc!=opxScroll && windowScrollingIsOn == 0)
             	// for nested and clipped layers
             moveObject('infoDiv', 1, scrollc, 'infoBoxDiv');
				// window.status="[infWd="+getStyleObject('infoDiv', 'sty', 'valHg','infoBoxDiv')+":scmin:"+scrollminY+":scmax="+scrollmaxY+":scrx="+scrollx+":scrollc="+scrollc+"::scmaxX="+scrollmaxX+":zUP="+zoneup+":zDown="+zonedown+":zh="+zoneh+":mX="+mouseX+":mY="+mouseY+":sBound="+scrollbottomBoundEndForMouseMovePosCheckDoAction+":"+topBox+":"+heightBox+":"+(heightBox+300)+":"+vxScroll+"]";
		  	 opxScroll=scrollc;
	     	 }
			 // Window val = top, self,frames, parent, etc.
	    	 // hover bigImg =aceflogb.gif" width="389" height="286"
		if(windowScrollingIsOn == 1){
				// move obj only if scroll wind or animt obj, cpu save
				// auto Objs center pos based on windows dims
			x1=getscrollX('top')+win_w/2-(389/2);
			y1=getscrollY('top')+win_h/2-(286/2);
				obj1x=getStyleObject('aceflog', 'sty', 'valX', 0);    
				obj1y=getStyleObject('aceflog', 'sty', 'valY', 0);
				// aceflog coords pos     
			pos1x = eval(obj1x+(x1-obj1x)/2);
			pos1y = eval(obj1y+(y1-obj1y)/2);
		 	moveObject('aceflog', pos1x, eval(pos1y-14));
			 			 // panneltab coords pos
		 		//pos3x=(obj1x+(x1-obj1x)/2+panneltabX);
				//pos3y=(obj1y+(y1-obj1y)/2+panneltabY);
		 	//moveObject('panneltab', pos3x, pos3y);
	  	if(!dragginGo){
	  			// auto Objs center pos based on windows dims
			x4=getscrollX('top')+infoBoxDivX-hoverSrollWinX;
			y4=getscrollY('top')+infoBoxDivY-hoverSrollWinY;
				// alert("hoverSrollWinX="+hoverSrollWinX+":nY="+hoverSrollWinY+":x4="+x4+":y4="+y4);
				// slideThisObjX = ((slideThisObjX *1)+ step);
			obj4x=getStyleObject('infoBoxDiv', 'sty', 'valX', 0);    
			obj4y=getStyleObject('infoBoxDiv', 'sty', 'valY', 0);     
				pos4x=obj4x+(x4-obj4x)/2;
				pos4y=obj4y+(y4-obj4y)/2;
				// barLike attached div 'boxDiv9'
		 	 	moveObject('infoBoxDiv', pos4x, pos4y, 0);
			 		////if(initNewsBoxIsOn==0){	// pos obj only one time - if not Hover FX on
			 	moveObject('boxDiv10', pos4x, (pos4y-30), 0);
			 	////// moveObject('boxDiv10bottom', pos4x, eval(((pos4y-30)+heightBox)+35), 0);
			 		////initNewsBoxIsOn=1;	// starts coords are done stop
			 		////}			 
		 	  		}
		   		}
			// moz8.0b return err js alert like 'useless expression' for same 'null' val return,
			// moz 0.8 is a beta vers, alerts code debugs can be not affidable, pre Moz0.8 brws like N6/601 works well
		 	// if (tickerBkgIsOn == 1){ // this is a workaround solution for moz0.8 'useless expression' alert
		 	// don't merge, this else/if can be separed.
		if (tickerBkgIsOn == 0){ tickerBkgIsOn = 0; 		// this for void 'null' for n6 console js advice of 'useless expression'
				} else { 
			if (mousoverMoverBkg == 1) {
				var ifscroolWinOn2=getscrollX('top');
				var noScrollmouseX = (windowScrollingIsOn == 0) ? mouseX-getscrollX('top') : mouseX-getscrollX('top'); 
					// only mouse ok for mousemovefx/or scrool hoverfx not both
					// for (i=1; i<=numItems; i++) moveObject('reobjarray'+i,px+(i-1)*270,220);  	// for a multi Objs group Mmover loop sync
					//var ImagHgBgk = 538;
			ttx2=(ifscroolWinOn2)+(noScrollmouseX/win_w * TW);
			topx2=(ifscroolWinOn2)+(otopx2-ttx2)/2;
			////moveObject('acefbigbgk',topx2, ((win_h/2)-(bgkMmoverHght/2)+15));
			(win_h > bgkMmoverHght) ? moveObject('acefbigbgk',topx2, 0) : moveObject('acefbigbgk',topx2, ((win_h/2)-(bgkMmoverHght/2)));
			 otopx2=topx2;	
				// opx=px;
				// window.status="[WINDOW SCROLL windowScrollingIsOn:" + windowScrollingIsOn +"]";
				}
		if(AnimationMovDivbkgOn == 1){	
				// start anim tickerbgk code
        		// pixstep = (isW3C) ? win_w/80 : win_w/120;
			pixstep = (isW3C) ? 140 : 100;
				// IMG/Lyr tickerScroll obj Wd and spacer
				// negatVal for reverse looping and crossImages with right space
			widthImg = 1599-20;
			restart = -1599+20;
				//movlyrRevX = -reVposLayX-pixstep;
				//movlyrRev2X = -reVposLay2X-pixstep;
		    var ImgWidth = widthImg; // alias 1599px and -1599
			var again = -ImgWidth;
	   	    	// fix val based speed don't change when resiz wind
	    	var pixval = ((900/30)/2);
	    		// for reverse FX here, add velocity /up
			var pixval2 = 890/250;
			var pixval3 = 890/200; 
			MutantlyrY_posRef = win_h/2-73/2;
				// unified lyrs topY pos
				lyrLeft1 = getStyleObject('Layer1', 'sty', 'valX', 0) - pixval;
				lyrLeft2 = getStyleObject('Layer2', 'sty', 'valX', 0) - pixval;
			ReversEnewpix1 = -lyrLeft1;
			ReversEnewpix2 = -lyrLeft2;
				// WOW ok multi fast velocity e co - WOW newpix1 "-2" (- val return more smooth animation ok)
            moveObject('Layer1', -ReversEnewpix1+22, lyrY_pos);
            moveObject('Layer2', -ReversEnewpix2+22, lyrY_pos);
                 // ok velocityFX wow muovo ogni lyrs a velocita' differenti
		if (lyrLeft1 >= (ImgWidth-20)){ moveObject('Layer1', -ImgWidth+10, lyrY_pos);}
		if (lyrLeft2 >= (ImgWidth-20)){ moveObject('Layer2', -ImgWidth+10, lyrY_pos);}
				 }
			    }
				// B better solution for multi anim_bkg, optimized for N6/6.01 slow MultianimSupport
		if(startslideFX == 1 && windowScrollingIsOn == 0 && slideNewsOn == 1){    							
			refDynLyr = 'boxDiv'+xloop; // alert("coordNews onOK="+refDynLyrDelay);
				// change the news end path posX and Y
				sx1=getscrollX('top')+(win_w-(win_w-69));						// win_w : win_h
				sy1=getscrollY('top')+(win_h/1.75); 							// dyn windows based ok
					sobj1x=getStyleObject(refDynLyr, 'sty', 'valX', 0);
					sobj1y=getStyleObject(refDynLyr, 'sty', 'valY', 0);     
				slideFXpos1x=sobj1x+(sx1-sobj1x)/2;
				slideFXpos1y=sobj1y+(sy1-sobj1y)/2;
			   (refDynLyrDelay == "wait") ? null : (refDynLyrDelay == "run") ? moveObject(refDynLyr, slideFXpos1x, slideFXpos1y) : null;
                }
	            // Batt: here the 2nd object, with realtime check Coords if dragged or hover
	            // ecx and ecy, in getnuwPos funct, are the variable that dyn_change X e y Lyr pos 
   			x2 = getscrollX('top')+posXdef-ecX; 
   			y2 = getscrollY('top')+posYdef-ecY;
   			obj2xComparedOnlyX=getStyleObject('boxDiv9', 'sty', 'valX', 0); 
   			obj2yComparedOnlyY=getStyleObject('boxDiv9', 'sty', 'valY', 0);
			pos2x=obj2xComparedOnlyX+(x2-obj2xComparedOnlyX)/2; pos2y=obj2yComparedOnlyY+(y2-obj2yComparedOnlyY)/2;
				// B if layer is dragged return 'null', else if not Movelayer_Hover_To Run 
		if (!dragginGo && battMenuIsReadyforHoverFX==1){
					// math_round/up values for a right realtime wind_scroll mov check, now can make very croossBrw eventsLike when the page scrolls
           		scrollCheckerX = (x2==0) ? 0 : Math.ceil(pos2x);
          		scrollCheckerY = (y2==0) ? 0 : Math.ceil(pos2y);
          			// adjustor range vars are now checked
         	adjustorscrollCheckerX = ((scrollCheckerX+1)==x2) ? (scrollCheckerX+1) :((scrollCheckerX-1)==x2) ? (scrollCheckerX-1) : ((scrollCheckerX-2)==x2) ? (scrollCheckerX-2) : ((scrollCheckerX+2)==x2) ? (scrollCheckerX+2) : ((scrollCheckerX-3)==x2) ? (scrollCheckerX-3) : ((scrollCheckerX+3)==x2) ? (scrollCheckerX+3) : (scrollCheckerX==x2) ? scrollCheckerX : 0;
         	adjustorscrollCheckerY = ((scrollCheckerY+1)==y2) ? (scrollCheckerY+1) :((scrollCheckerY-1)==y2) ? (scrollCheckerY-1) : ((scrollCheckerY-2)==y2) ? (scrollCheckerY-2) : ((scrollCheckerY+2)==y2) ? (scrollCheckerY+2) : ((scrollCheckerY-3)==y2) ? (scrollCheckerY-3) : ((scrollCheckerY+3)==y2) ? (scrollCheckerY+3) : (scrollCheckerY==y2) ? scrollCheckerY : 0;
     	if (adjustorscrollCheckerX == x2 && adjustorscrollCheckerY == y2){   
             	 windowScrollingIsOn = 0;
 		if (onlyOneifHoverFXeWinScrl0_refresh == 0){ refreshMMovCapturAndNewScrollObjZone('infoDiv', 'infoBoxDiv'); onlyOneifHoverFXeWinScrl0_refresh = 1;}    // scroll MM capture Active Area coords end hover fx ends; 
				 } else {
				 	// hideCurrentPopup();  // for caption msg, now is off
             	  onlyOneifHoverFXeWinScrl0_refresh = 0; 
             	  windowScrollingIsOn = 1; 
             	  hideAllMenus();
				  moveObject('boxDiv9', pos2x, pos2y);
				  }
                 // window.status="[X-1="+(obj2xComparedOnlyX-1)+":obj2Xonly="+obj2xComparedOnlyX+":obj2Yonly="+obj2yComparedOnlyY+"::A-->:"+adjustorscrollCheckerX+":"+adjustorscrollCheckerY+":B--->:"+x2+":"+y2+":->"+posXdef+":"+posYdef+":"+scrollCheckerX+"::"+scrollCheckerY+":po2x:"+pos2x+":po2y:"+pos2y+":XXYY="+x2+":"+y2+":::"+refDynLyrDelay+":stslidFX="+startslideFX+":winSCrlOn="+windowScrollingIsOn+":SlidNwsOn="+slideNewsOn+"]";
			     }
			   timerXY = setTimeout("hoverMasterFunctFX();", 50);
			   }

// On/Off functions group
function stops_allbgkMovs(){ tickerBkgIsOn = 0; mousoverMoverBkg =0; AnimationMovDivbkgOn = 0; }			// stop - all bgk mov Off
function start_allbgkMovs(){ tickerBkgIsOn = 1; mousoverMoverBkg = 1; AnimationMovDivbkgOn = 1; }    		// start - all bgk mov On
function tick_start(){ tickerBkgIsOn = 1; AnimationMovDivbkgOn = 1; }               						// tick bgk mov On
function tick_stop(){ tickerBkgIsOn = 0; AnimationMovDivbkgOn = 0; }										// tick bgk mov Off
function mouseAnimated_Yes(){ tickerBkgIsOn = 1; mousoverMoverBkg=1; }         								// mouse mover fx bgk mov On
function mouseAnimated_Not(){ tickerBkgIsOn = 1; mousoverMoverBkg=0; }         								// mouse mover fx bgk mov Off
function stop_animatedSrollText(){ (isW3C) ? tickerBkgIsOn = 1 : null; }									// stop animatedSrollText Off, stop only for slow N6
function start_animatedSrollText(){ (isW3C) ? tickerBkgIsOn = 0 : null; }									// start animatedSrollText mov On
// subMenuRolls		
var hideAllwaysIESubMenuOption = 0; // var option also for IE bug onclick can do a re_MMouseOver evt or funct.
var nowactiveOverButtonSubMenuRef;
var subMenuRoll=0;
var imgNameStored;
var imgDivIdStored;
// buttonMenuRolls
var buttonMenuRollImgName;
var buttonMenuRollImgDivId;
var buttonMenuRollImgnestBoxDivId;
var buttonRollOverSrc;
var imgDivIdsubSrc;
var buttonRestoreSrc;
var numbMenuvarrestore = 0;

function MMover(numbMenu, hideMenuOptionOver, swapImg, subMenuRoll){ // B unified funct. onMover
		if(swapImg && swapImg == "on"){
			// B Dyn_centralized rollover menuButton Swapping for a N4 fix bug, like a function switcher 
			numbMenuvarrestore=numbMenu;
			buttonMenuRollImgName = 'bpop0'+numbMenu;
			buttonMenuRollImgDivId = 'menuTitle'+numbMenu;
			buttonMenuRollImgnestBoxDivId = 'boxDiv9';
			buttonRollOverSrc = 'imgmenu/bpop0'+numbMenu+'up.gif';
			buttonRestoreSrc = 'imgmenu/bpop0'+numbMenu+'.gif'; 
			swapImage(buttonMenuRollImgName, buttonRollOverSrc, buttonMenuRollImgDivId, buttonMenuRollImgnestBoxDivId);
			click_it_N4fixSwitchDoThisFunct = numbMenu;
			}
	if(subMenuRoll && subMenuRoll != 0){
			//img name="m1sub1" src="imgmenu/fwm2up.gif" width="129" height="18" border="0"
			// div id="menu1sub1"
			imgNameStored = 'm'+numbMenu+'sub'+subMenuRoll;
			imgDivIdStored = 'menu'+numbMenu+'sub'+subMenuRoll;
			imgDivIdsubSrc = 'imgmenu/fwm2over.gif'; 
			swapImage(imgNameStored, imgDivIdsubSrc, imgDivIdStored);
			}
	if(document.layers){ nav4bugifEvtLocFix='dragable'; }    												
			// B fix no 'onclick' actionDoIt N4 evt check
			cancel_Newsloop(1); 
			mouseAnimated_Not();
			// block animated objs for MOZxto0.8/N6/601/IEmac for bad cross_dhtmlcode timeout performance Support
			// NB no block for windows OSyst when IE5 is more faster of IE5 on macOs
	if(isW3C || (isExp && isMac)) {tick_stop();}
			nowactiveOverButtonSubMenuRef = "menu"+numbMenu+"sub"+submenuLenforHideAll;
			menurefcurrentlyOn = (window.currentlyVisiblePopup) ? window.currentlyVisiblePopup : 'notMenu';
	if(hideAllwaysIESubMenuOption == 0 && hideMenuOptionOver == 1 && nowactiveOverButtonSubMenuRef != menurefcurrentlyOn){ hideAllMenus();
			//alert("hideAllwaysIESubMenuOption="+hideAllwaysIESubMenuOption+":hideMenuOptionOver="+hideMenuOptionOver+":nowactiveOverButtonSubMenuRef="+nowactiveOverButtonSubMenuRef+":menurefcurrentlyOn="+menurefcurrentlyOn);
				}
        	  hideAllwaysIESubMenuOption = 0; 		// reset allways
	    	 }

function MMout(hideAlwaysSubMenu, subMenuRoll){ // B unified funct. onMMout
                swapImage(buttonMenuRollImgName, buttonRestoreSrc, buttonMenuRollImgDivId, buttonMenuRollImgnestBoxDivId);
                reInit_Newsloop(); 
                mouseAnimated_Yes();
                msgInActMMOff();
			 if(subMenuRoll && subMenuRoll == "yes"){
                swapImage(imgNameStored,'imgmenu/subtrsp2.gif',imgDivIdStored);
                }
		         // var option for increase new Gen brws slow dhtml performance : like IE5mac/MOZxto0.8/N6/601
		         //// if (isW3C || (isExp && isMac)) {tick_start();}
			 if(isW3C || isExp) {tick_start();}
				}

function MMclick(varValforcaptionDyn){ // B unified funct. onMClick
			if(varValforcaptionDyn == 1){ 
				//randomMov(); 
				hideAllMenus(); 
				reInit_Newsloop(); 
				msgInActMMon();
				}
			   }
