/*  bbbscroll, version 1.1
 *  (c) 2007 Marco Weesjes <mwe@bisc.nl>
'*<versioninfo>3.40.02 (2010-07-26)</versioninfo>
'*<componentinfo>CMS</componentinfo>
'*<change>3.40.02 (2010-07-26);scrollwheel implementatie</change>
'*<change>3.40.01 (2010-06-21);configureerbare scroll snelheden mogelijk gemaakt</change>
 *
/*--------------------------------------------------------------------------*/

var elemM2= new Array();
var elemC2= new Array();
var	elemP2= new Array();
var top2 = new Array();
var scrollheight2 = new Array() ;
var actualheight2 = new Array() ;
var offset2       = new Array() ;
var lefttime2= new Array();
var argofs=new Array();	//offset argument
var argtick=new Array();		//tick argument
var	SWon=new Array();				//scrollwheel on yes no
var	SWEntry=-1;							//scroll entry
var	SWMute=0;						//No mute

function initieer(entry,divM,divC,divP,ofs,tick)
{
//	alert("inxitieer:ja entry="+entry);

	elemM2[entry] = $(divM) ;	// master (view area)
	elemC2[entry] = $(divC) ;	// child (content area)
	elemP2[entry] = $(divP) ;	// pijltjes


	
	if( elemM2[entry]==null || elemC2[entry] == null || elemP2[entry]== null )
	{
		return;
	}
	
	if(arguments.length<5)
	{
		argofs[entry]=2;
		argtick[entry]=10;
	}
	else
	{
		argofs[entry]=ofs;
		argtick[entry]=tick;
	}	

	actualheight2[entry] = parseInt(elemC2[entry].offsetHeight) ;
	scrollheight2[entry] = parseInt(elemM2[entry].offsetHeight) ;
		
	elemC2[entry].style.top=0;
	top2[entry]=0;
	offset2[entry]=0;
	
//	alert("ah="+actualheight2[entry]+" sh="+scrollheight2[entry]);
	
	if ( actualheight2[entry] > scrollheight2[entry] )
	{
		elemP2[entry].style.visibility = "visible" ;
	}
	else
	{
		elemP2[entry].style.visibility = "hidden" ;		
	}
}

function doscroll(entry,dir)
{
//	alert("Scroll2 entry="+entry);
//	alert(elemC2[entry].style.top);
	
	if ( offset2[entry] == 0 )
	{
		offset2[entry]  = scrollheight2[entry] ;
	}
	y = offset2[entry] * ( dir == 'up' ? (+1) : (-1) ) ;
	
	if ( (top2[entry]+y) > 0 ) { top2[entry] = 0 ; y = 0 ; }
	if ( (top2[entry]+y) < (actualheight2[entry]-scrollheight2[entry])*(-1))
	{} else { top2[entry] += y ; elemC2[entry].style.top = top2[entry] + "px" ; }
}

function initScroll(entry,dir)
{
//	alert("Initscroll2 entry="+entry);

//	offset2[entry] = 2 ;
	offset2[entry] = argofs[entry] ;
//	lefttime2[entry] = setInterval("doscroll("+entry+",'"+dir+"')",10) ;
	lefttime2[entry] = setInterval("doscroll("+entry+",'"+dir+"')",argtick[entry]) ;
}
function stopScroll(entry)
{
//	alert("StopScroll2 entry="+entry);
	clearInterval(lefttime2[entry]);
	offset2[entry] = 0 ;
}

function TopBottom(entry,dir)
{
//	alert("TopBottom dir="+dir+" SH="+(actualheight2[entry]-scrollheight2[entry])*(-1));
	stopScroll(entry);
	top2[entry]= (dir=='up'? 0: (actualheight2[entry]-scrollheight2[entry])*(-1));
	elemC2[entry].style.top= top2[entry]+"px";
	
}

function AddScrollWheel(entry)
{
	if(SWon[entry]==1 || elemM2[entry]==null)
	{
		return;
	}	
	
	if(window.addEventListener)
	{
		elemM2[entry].addEventListener('DOMMouseScroll',scrollWheel,false);
	}
	else
	{
		elemM2[entry].attachEvent('onmousewheel',scrollWheel)
	}
	SWon[entry]=1;	
	SWEntry=entry;
	
//	window.onmousewheel=document.onmousewheel=scrollWheel;
}
function RemoveScrollWheel(entry)
{
	if(SWon[entry]==0 || elemM2[entry]==null)
		return;

	if(elemM2[entry].removeEventListener)
	{
		elemM2[entry].removeEventListener('DOMMouseScroll',scrollWheel,false);
	}	
	else
	{
			elemM2[entry].detachEvent('onmousewheel',scrollWheel);
	}
	SWon[entry]=0;
	SWEntry=-1;
	

//	window.onmousewheel=document.onmousewheel=scrollWheel;
}

function scrollWheel(e)
{
	if(SWEntry<0 || SWMute==1)
		return;

	E = e ? e : window.event;
  var wheelData = e.detail ? e.detail * -1 : e.wheelDelta / 40;
  		
//	alert(event.wheelDelta);

		offset2[SWEntry] = 2 ;
//		alert(wheelData);
		
		var dirx=wheelData>0 ? "up" : "down";
		
		for(i=0;i<20/offset2[SWEntry];i++)
			doscroll(SWEntry,dirx);
}
function	SetSWMute(Mute)
{
	SWMute=Mute;
}
