// JavaScript Document

var gX = 0;
var gY = 0;
var gDifX = 0;
var gDifY = 0;

var moveElement = null;
var valuePlus = '';

function mousePosition(e) {
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY){
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY){
		posx = e.clientX + document.body.scrollLeft	+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	gX = posx;
	gY = posy;
	//document.getElementById('MouseCoor').innerHTML = "X:"+gX+" / Y:"+gY;
	doMousePosition();
}

function doMousePosition(){
	if(moveElement != null){
		if(typeof moveElement.onselectstart!="undefined"){
		  moveElement.onselectstart=no;
		}
		var limitMin = getLimitMin(moveElement.id);
		var limitMax = getLimitMax(moveElement.id);
		var newX = (gX - gDifX);
		if( newX>=limitMin && newX<=limitMax ){
			moveElement.style.left = newX+'px';
 		    updateBkgDiv(moveElement.id);
			updateValues(moveElement.id,newX);
		}
	}
}

function getLimitMax(idElement){
	var limitMax;
	var Element = document.getElementById(idElement);
	var moveElementWitdh = getStyleValue(Element,'width');
	var parentWidth = getStyleValue(Element.parentNode,'width');
	var isLeft = getIsLeft(idElement);
	if(isLeft){
		var idTwinElement = getIdTwinElement(idElement);
		var twinElement = document.getElementById(idTwinElement);
		var deltaElements = getStyleValue(twinElement,"left")-moveElementWitdh;
		limitMax =  Math.min(parentWidth-2*moveElementWitdh,deltaElements);
	}else{
		limitMax = parentWidth-moveElementWitdh;
	}
	return limitMax;
}

function getLimitMin(idElement){
	var limitMin;
	var Element = document.getElementById(idElement);
	var moveElementWitdh = getStyleValue(Element,'width');
	var parentWidth = getStyleValue(Element.parentNode,'width');
	var isLeft = getIsLeft(idElement);
	if(isLeft){
		limitMin = 0;
	}else{
		var idTwinElement = getIdTwinElement(idElement);
		var twinElement = document.getElementById(idTwinElement);
		var deltaElements = getStyleValue(twinElement,"left") + moveElementWitdh;
		limitMin = Math.min(parentWidth-moveElementWitdh,deltaElements);
	}
	return limitMin;
}

function getIdTwinElement(idElement){
	if( idElement.substr(idElement.length-5,5)== '_left' ){
		var idTwinElement = idElement.substr(0,idElement.length-5) + '_right';
	}else{
		var idTwinElement = idElement.substr(0,idElement.length-6) + '_left';
	}
	return idTwinElement;
}

function getIsLeft(idElement){
	if( idElement.substr(idElement.length-5,5) == '_left' ){
		return true;
	}else{
		return false;
	}
}

function updateBkgDiv(idElement){
	var isLeft = getIsLeft(idElement);
	if(isLeft){
		var leftElement = document.getElementById(idElement);
		var rightElement = document.getElementById(getIdTwinElement(idElement));
	}else{
		var leftElement = document.getElementById(getIdTwinElement(idElement));
		var rightElement = document.getElementById(idElement);
	}
	
	var widthBkg = getStyleValue(rightElement,'left') - eval(getStyleValue(leftElement,'left') + getStyleValue(leftElement,'width')) + 20 ;
	var leftBkg = getStyleValue(leftElement,'left') + getStyleValue(leftElement,'width') - 13;
	
	var idBkg = getIdBkg(idElement);
	var bkgElement = document.getElementById(idBkg);
	
	bkgElement.style.width = widthBkg+'px';
	bkgElement.style.left = leftBkg+'px';
}

function getIdBkg(idElement){
	var index = getIdCursor(idElement);
	var IdBkg = 'bkgscroll_'+index;
	return IdBkg;
}

function getIdCursor(idElement){
	if( idElement.substr(idElement.length-5,5)== '_left' ){
		var index = idElement.substr(6,idElement.length-11);
	}else{
		var index = idElement.substr(6,idElement.length-12);
	}
	return index;
}

function updateValues(idElement,newX){
	var index = getIdCursor(idElement);
	var pas = getPasCursor(index);
	if(pas!=0){
		var isLeft = getIsLeft(idElement);
		if(isLeft){
			var el = document.getElementById('cursor'+index+'_left');
			var idInput = 'valuecursor'+index+'_left';
		}else{
			var el = document.getElementById('cursor'+index+'_right');
			var idInput = 'valuecursor'+index+'_right';
		}
		var myValue = getValueUpdated(newX,index);
		el.innerHTML = myValue[1];
		setValueInputCursor(idInput,myValue[0]);
	}
}

function getPasCursor(index){
	var el = document.getElementById('cursorpas_'+index);
	if(el)
		return eval(el.value);
	else
		return 0;
}

function setValueInputCursor(idInput,myValue){
	var el = document.getElementById(idInput);
	if(el){
		el.value = myValue;
	}
}

function getValueInputCursor(idInput){
	var el = document.getElementById(idInput);
	var myValue = 0;
	if(el)
		myValue = el.value;
	return eval(myValue);
}

function getValueUpdated(newX,index){
	var Element = document.getElementById('cursor'+index+'_left');
	var moveElementWitdh = getStyleValue(Element,'width');
	var parentWidth = getStyleValue(Element.parentNode,'width');
	parentWidth = parentWidth-(moveElementWitdh-15);
	
	var maxInputValue = getValueInputCursor('maxvaluecursor'+index);
	var minInputValue = getValueInputCursor('minvaluecursor'+index);
	
	var quotient = eval( (maxInputValue-minInputValue) / (parentWidth-0) );
	var pas = getPasCursor(index);
	
	var myValue = Array();
	myValue[0] = quotient*newX + minInputValue;
	myValue[0] = Math.ceil(myValue[0]/pas)*pas;
		
	if(myValue[0]<=minInputValue)
		myValue[0] = minInputValue;
	if(myValue[0]>=maxInputValue)
		myValue[0] = maxInputValue;
	myValue[1] = format(myValue[0],0,' ')+' '+valuePlus;
	return myValue;
}

// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
function format(valeur,decimal,separateur) {
	var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; 
	var val=Math.floor(Math.abs(valeur));
	if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
	var val_format=val+"";
	var nb=val_format.length;
	for (var i=1;i<4;i++) {
		if (val>=Math.pow(10,(3*i))) {
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
		}
	}
	if (decimal>0) {
		var decim=""; 
		for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
		deci=decim+deci.toString();
		val_format=val_format+"."+deci;
	}
	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
	return val_format;
}

function applyDCurseur(idScrollBar){
	var myscrollbar = document.getElementById(idScrollBar);
	if(myscrollbar){
		myscrollbar.onmousedown=function(){return false;};
		if(typeof myscrollbar.onselectstart!="undefined"){
		  myscrollbar.onselectstart=no;
		}
	}
}
									


//***************************************************//

function startMoving(element,MyvaluePlus){
	element.selection = (navigator.appName == "Microsoft Internet Explorer") ? 'selectstart' : 'mousedown';
	gDifX = getStyleValue(element,'left');
	gDifX = gX - ( isNaN(gDifX) ? 0 : gDifX);
	gDifY = getStyleValue(element,'top');
	gDifY = gY - ( isNaN(gDifY) ? 0 : gDifY);
	moveElement = element;
	valuePlus = MyvaluePlus;
	return false;
}

function stopMoving() {
	moveElement = null;
	valuePlus = '';
}

window.onmousemove = mousePosition;
window.onclick = stopMoving;