/* nécessite les scripts lib_core.js et lib_dhtml.js */

/* config début */

var scrollContainerElement = 'div';
var scrollContainerClass = 'detail';

var scrollElement = 'dl';
var scrollClass = 'offre-scroll';

var actionElement = 'p';
var actionClass = 'offre-action';

var upClass = 'haut';
var downClass = 'bas';

var defaultIncrement = 10;

var timerValue = 100;

/* config fin - ne pas éditer sous cette ligne */

var sC,timerS;

function ScrollCollection()
{
	this._coll = new Array();
	
	this.addScrollElement = function(scE)
	{
		if(testTypeOfObject(scE,ScrollElement) && scE.isInit())
		{
			this._coll[this._coll.length] = scE;
		}
	}
	
	this.getScrollByElement = function(elObj)
	{
		var retSc = null;
		
		for(var i=0; i<this._coll.length; i++)
		{
			if(this._coll[i].getScroll() == elObj)
			{
				retSc = this._coll[i];
				break;
			}
		}
		
		return retSc;
	}
}

function ScrollElement(sc,up,dn)
{
	this._scroll = null;
	this._up = 0;
	this._down = 0;
	this._max = 0;
	
	this._init = 0;
	
	if(isElement(sc))
	{
		this._scroll = sc;
		this._init++;
	}
	
	if(testTypeOfObject(up,'number'))
	{
		this._up = up;
		this._init++;
	}
	
	if(testTypeOfObject(dn,'number'))
	{
		this._down = dn;
		this._init++;
	}
	
	this.isInit = function()
	{
		var rtB = false;
		
		if(this._init == 3)
		{
			rtB = true;
		}
		
		return rtB;
	}
	
	this.getScroll = function()
	{
		return this._scroll;
	}
	
	this.getUpIncrement = function()
	{
		return this._up;
	}
	
	this.getDownIncrement = function()
	{
		return this._down;
	}
}

function _getScrollElement(obj)
{
	var retEl = null;
	
	var pE = getParentElement(obj);
	
	if(pE)
	{
		var scEl = getElementsByClassName(pE,scrollClass,scrollElement);
	
		if(scEl && scEl.length)
		{
			retEl = scEl[0];
		}
	}
	
	return retEl;
}

var currentTarget = null;

function startScroll()
{
	var sE,cObj;
	
	if(arguments.length == 0)
	{
		if(currentTarget != null)
		{
			cObj = currentTarget;
		}
		else
		{
			cObj = getObjectFromEvent();
		}
	}
	else if((arguments.length >= 1) && arguments[0].target)
	{
		cObj = getObjectFromEvent(arguments[0]);
	}
	
	if(cObj)
	{
		if(currentTarget == null)
		{
			currentTarget = cObj;
		}
			
		sE = _getScrollElement(cObj);
	}
	
	if(sE)
	{
		if(sC)
		{
			var cScE = sC.getScrollByElement(sE);
			
			if(cScE)
			{
				var scElem = cScE.getScroll();
				var oC = getObjectCoordinate(sE);

				var incS = 0;
				
				if(hasClassName(cObj,upClass))
				{
					incS = -cScE.getUpIncrement();
				}
				else if(hasClassName(cObj,downClass))
				{
					incS = cScE.getDownIncrement();
				}
				
				setObjectCoordinate(sE,oC.getCoordinateX(),oC.getCoordinateY()+incS);
			}
		}
		
		timerS = window.setTimeout('startScroll()',timerValue);
	}
}

function stopScroll()
{
	if(timerS)
	{
		window.clearTimeout(timerS);
		currentTarget = null;
	}
}

function initScroll()
{
	if(window.dhtmlLoad && document.getElementsByTagName)
	{
		var dS = getElementsByClassName(document,scrollContainerClass,scrollContainerElement);
		
		if(dS && dS.length)
		{
			sC = new ScrollCollection();
			
			for(var i=0; i<dS.length; i++)
			{
				var scObj = null;
				var upP = 0;
				var dnP = 0;
				
				var btn = getElementsByClassName(dS[i],actionClass,actionElement);
				
				if(btn && btn.length)
				{
					for(var j=0; j<btn.length; j++)
					{
						var tmNum = getAttributeNS(btn[j],'http://www.w3.org/2002/06/xhtml2','property','xh2');
						
						if(tmNum == null)
						{
							tmNum = defaultIncrement;
						}
						
						if(hasClassName(btn[j],upClass))
						{
							upP = tmNum;
						}
						else if(hasClassName(btn[j],downClass))
						{
							dnP = tmNum;
						}
						
						addEvent(btn[j],'mousedown',startScroll);
						addEvent(btn[j],'mouseup',stopScroll);
					}
				}
				
				var scZ = getElementsByClassName(dS[i],scrollClass,scrollElement);
				
				if(scZ && scZ.length)
				{
					scObj = scZ[0];
				}
				
				sC.addScrollElement(new ScrollElement(scObj,parseInt(upP),parseInt(dnP)));
			}
		}
	}
}