// JavaScript Document

/********************************
	Code Scrolling
*********************************/
function intVal( value ){
	var v = parseInt(value, 10);
	if (isNaN(v))
		v = 0;
	return v;
}



var intervalID = 0;

var limit_top_cursor = 0;
var limit_bottom_cursor = 0;
var v_top_cursor;

function handle(delta) {
	var margin_top = intVal(document.getElementById("nouvelles_content").style.marginTop.replace("px","")) 
	var new_margin = margin_top+delta;
	
	var cursor_move = delta * (limit_bottom_cursor-limit_top_cursor) / (intVal(document.getElementById("nouvelles_content").offsetHeight-document.getElementById("scrolling_area").offsetHeight))
	
	v_top_cursor -=  cursor_move
	var cursor_top = intVal(v_top_cursor)
	
	if (delta < 0){
		var limit = document.getElementById("scrolling_area").offsetHeight - document.getElementById("nouvelles_content").offsetHeight;
		if (new_margin < limit){
			new_margin = limit;
			cursor_top = limit_bottom_cursor
			v_top_cursor = cursor_top;
		}
	}else{
		if (new_margin > 0){
			new_margin = 0;
			cursor_top = limit_top_cursor
			v_top_cursor = cursor_top;
		}
	}
	document.getElementById("nouvelles_content").style.marginTop = new_margin+"px"
	document.getElementById("scrolling_cursor").style.top = cursor_top+"px"
}

/** Event handler for mouse wheel event.
 */
function wheel(event){
	
	var delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/120;
	/** In Opera 9, delta differs in sign as compared to IE.
	*/
	if (window.opera)
		delta = -delta;
	} else if (event.detail) { /** Mozilla case. */
		/** In Mozilla, sign of delta is different than in IE.
		* Also, delta is multiple of 3.
		*/
		delta = -event.detail/3;
	}
	/** If delta is nonzero, handle it.
	* Basically, delta is now positive if wheel was scrolled up,
	* and negative, if wheel was scrolled down.
	*/
	if (delta)
		handle(delta*10);
	/** Prevent default actions caused by mouse wheel.
	* That might be ugly, but we handle scrolls somehow
	* anyway, so don't bother here..
	*/
	if (event.preventDefault)
		event.preventDefault();
	event.returnValue = false;
}

function onrolloverUpArrow(evt){
	intervalID = setInterval("handle(10)", 50);
}

function onrolloutArrow(evt){
	clearInterval(intervalID);
}

function onrolloverDownArrow(evt){
	intervalID = setInterval("handle(-10)", 50);
}

function onmouseupCursor(evt){
	
}

function onmousedownCursor(evt){	
	//swapZIndex(this.parentNode)
	if(!evt) evt=window.event;
	drag(this, evt);
}


function drag(elementToDrag, event){
	var startY = event.clientY;

	var origY = elementToDrag.offsetTop;
	
	var deltaY = startY - origY;

	if (document.addEventListener){
		document.addEventListener("mousemove", moveHandler, true);
		document.addEventListener("mouseup", stopDrag, true);
	}else if (document.attachEvent){
		elementToDrag.setCapture();
		elementToDrag.attachEvent("onmousemove", moveHandler);
		elementToDrag.attachEvent("onmouseup", stopDrag);
		elementToDrag.attachEvent("onlosecapture", stopDrag);
	}
	if(event.stopPropagation) event.stopPropagation();
	else event.cancelBubble = true;
	if(event.preventDefault) event.preventDefault();
	else event.returnValue = false;
	
	
	function moveHandler(e){
		if(!e) e=window.event;
		
		//elementToDrag.style.left = (e.clientX - deltaX)+"px";
		//elementToDrag.style.top = (e.clientY - deltaY)+"px";
		
		deplacement = e.clientY - deltaY - intVal(elementToDrag.style.top.substr(0, elementToDrag.style.top.length-2))
		
		limit_bottom_cursor-limit_top_cursor
		
		dep_texte = -1 * intVal((intVal(document.getElementById("nouvelles_content").offsetHeight) * deplacement) / (limit_bottom_cursor-limit_top_cursor))

		handle(dep_texte);
		
		if(event.stopPropagation) event.stopPropagation();
		else event.cancelBubble = true;
	}
	
	function stopDrag(e){
		if(!e) e=window.event;
		
		if (document.removeEventListener){
			document.removeEventListener("mousemove", moveHandler, true);
			document.removeEventListener("mouseup", stopDrag, true);
		}else if (document.detachEvent){
			elementToDrag.detachEvent("onlosecapture", stopDrag);
			elementToDrag.detachEvent("onmouseup", stopDrag);
			elementToDrag.detachEvent("onmousemove", moveHandler);
			elementToDrag.releaseCapture();
		}
		
		if(event.stopPropagation) event.stopPropagation();
		else event.cancelBubble = true;
		
	}
}





/** Initialization code. 
 * If you use your own event management code, change it as required.
 */
window.onload = function() {
	if(document.getElementById("nouvelles_content") && document.getElementById("scrolling_area")){
		if(document.getElementById("nouvelles_content").offsetHeight > document.getElementById("scrolling_area").offsetHeight){
			
			
			
			document.getElementById("scrolling_up_elem").style.display = "block";
			document.getElementById("scrolling_down_elem").style.display = "block";
			document.getElementById("scrolling_cursor").style.display = "block";
			
			limit_top_cursor = (document.getElementById("scrolling_up_elem").offsetTop + document.getElementById("scrolling_up_elem").offsetHeight + 2);
			limit_bottom_cursor = (document.getElementById("scrolling_down_elem").offsetTop - 2 - document.getElementById("scrolling_cursor").offsetHeight);
			v_top_cursor = limit_top_cursor;

			document.getElementById("scrolling_cursor").style.top = limit_top_cursor+"px"
			
			
			document.getElementById("scrolling_up_elem").onmousedown = onrolloverUpArrow;
			document.getElementById("scrolling_up_elem").onmouseup = onrolloutArrow;
			
			document.getElementById("scrolling_down_elem").onmousedown = onrolloverDownArrow;
			document.getElementById("scrolling_down_elem").onmouseup = onrolloutArrow;
			
			document.getElementById("scrolling_cursor").onmousedown = onmousedownCursor;
			document.getElementById("scrolling_cursor").onmouseup = onmouseupCursor;
		
			if (window.addEventListener)
				/** DOMMouseScroll is for mozilla. */
				document.getElementById("nouvelles").addEventListener('DOMMouseScroll', wheel, false);
				//window.addEventListener('DOMMouseScroll', wheel, false);
			/** IE/Opera. */
			//window.onmousewheel = document.onmousewheel = wheel;
			document.getElementById("nouvelles").onmousewheel = wheel;
		}
	}
}

/********************************
	FIN Code Scrolling
*********************************/
