var carpemouseover                = false;
var carpeDefaultSliderLength      = 300;
var carpeslider                   = {};
var carpedisplay                  = {};
var indicateurSlider			  = 0;
// indicateurSlider = :
// 0 si Conducteur Principal
// 1 si Conducteur Secondaire
function initSlider(indicateur)
{
 indicateurSlider=indicateur;
  if(indicateurSlider == 0)
  { 
	var bonusMalus=document.getElementById("controler:bonusMalus").value;
   majAffichage(bonusMalus);
   bonusMalus-=0.5;
   document.getElementById("slider4").style.left=(100*bonusMalus)+"px";
  }
  else
  if(indicateurSlider == 1)
  {
	var bonusMalusCS=document.getElementById("controler:bonusMalusCS").value;
	majAffichage(bonusMalusCS);
	bonusMalusCS-=0.5;
	document.getElementById("slider5").style.left=(100*bonusMalusCS)+"px";
  } 
 }
// carpeLeft: Cross-browser version of "element.style.left"
// Returns or sets the horizontal position of an element.
function carpeLeft(elmnt, pos)
{
	if (!(elmnt = document.getElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.left) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.left = pos + 'px';
		else {
			pos = parseInt(elmnt.style.left);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelLeft) {
		if (typeof(pos) == 'number') elmnt.style.pixelLeft = pos;
		else pos = elmnt.style.pixelLeft;
	}
	return pos;
}
// carpeTop: Cross-browser version of "element.style.top"
// Returns or sets the vertical position of an element.
function carpeTop(elmnt, pos)
{
	if (!(elmnt = document.getElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.top) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.top = pos + 'px';
		else {
			pos = parseInt(elmnt.style.top);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelTop) {
		if (typeof(pos) == 'number') elmnt.style.pixelTop = pos;
		else pos = elmnt.style.pixelTop;
	}
	return pos;
}
// moveSlider: Handles slider and display while dragging
function moveSlider(evnt)
{
	var evnt = (!evnt) ? window.event : evnt; // The mousemove event
	if (carpemouseover) { // Only if slider is dragged
		carpeslider.x = carpeslider.startOffsetX + evnt.screenX; // Horizontal mouse position relative to allowed slider positions
		carpeslider.y = carpeslider.startOffsetY + evnt.screenY; // Horizontal mouse position relative to allowed slider positions
		if (carpeslider.x > carpeslider.xMax) carpeslider.x = carpeslider.xMax; // Limit horizontal movement
		if (carpeslider.x < 0) carpeslider.x = 0; // Limit horizontal movement
		if (carpeslider.y > carpeslider.yMax) carpeslider.y = carpeslider.yMax; // Limit vertical movement
		if (carpeslider.y < 0) carpeslider.y = 0; // Limit vertical movement
		carpeLeft(carpeslider.id, carpeslider.x);  // move slider to new horizontal position
		carpeTop(carpeslider.id, carpeslider.y); // move slider to new vertical position
		var sliderVal = carpeslider.x + carpeslider.y; // pixel value of slider regardless of orientation
		var sliderPos = (carpeslider.distance / carpedisplay.valuecount) * 
			Math.round(carpedisplay.valuecount * sliderVal / carpeslider.distance);
		var v = Math.round((sliderPos * carpeslider.scale + carpeslider.from) * // calculate display value
			Math.pow(10, carpedisplay.decimals)) / Math.pow(10, carpedisplay.decimals);
		majAffichage(v);
		carpedisplay.value = v; // put the new value in the slider display element
		return false;
	}
	return
}
//
function majAffichage(v)
{   
	val=((""+v).split("."))[1] ;
	var champs;
    if(indicateurSlider == 0)
    {
     champs=document.getElementById("champs1");
     document.getElementById("controler:bonusMalus").value=v;
     document.getElementById("ans50Bonus").style.display="none";
    }
    else
    if(indicateurSlider == 1)
    { 
      champs=document.getElementById("champs2");
      document.getElementById("controler:bonusMalusCS").value=v;
      document.getElementById("ans50BonusCS").style.display="none";
    }
    
		if(v==1)
        champs.value = "1 soit ni bonus, ni malus";
		else
		if(v==2)
		champs.value = "2 soit 100% de malus";
		else
		if(v==3)
	    champs.value = "3 soit 200% de malus";
        else
		{
          if(v==0.5)
		  {
            champs.value = "0.50 soit 50% de bonus";
            if(indicateurSlider == 0)
		    document.getElementById("ans50Bonus").style.display="";
            else
            if(indicateurSlider == 1)
            document.getElementById("ans50BonusCS").style.display="";
		  }
          else
			{
        	 if(v<1)
			 { 
			   if( v == 0.6 || v == 0.7 || v == 0.8 || v == 0.9 )
			   {v+="0";
			    val+="0";
			   }
  			   champs.value = v+" soit "+(100-val)+"% de bonus"; 
			  }
		     else
		     {
		      if(v<2)
			  { 
			   if( v == 1.1 || v == 1.2 || v == 1.3 || v == 1.4 || v == 1.5 || v == 1.6 || v == 1.7 || v == 1.8 || v == 1.9 )
			   champs.value = v+" soit "+val+"0% de malus";
               else
			   champs.value = v+" soit "+(val-0)+"% de malus";
			  }
		      else
			   {
			      if(v<3)
				  { 
				   if( v == 2.1 || v == 2.2 || v == 2.3 || v == 2.4 || v == 2.5 || v == 2.6 || v == 2.7 || v == 2.8 || v == 2.9 )
				   champs.value = v+" soit 1"+val+"0% de malus";
	               else
	               if(val<10)
	               champs.value = v+" soit 10"+(val-0)+"% de malus";
	               else
				   champs.value = v+" soit 1"+(val-0)+"% de malus";
				  }
			      else
				  {
					if( v == 3.1 || v == 3.2 || v == 3.3 || v == 3.4 || v == 3.5)
				    champs.value = v+" soit 2"+val+"0% de malus";
		            else
		            if(val<10)
		 	        champs.value = v+" soit 20"+(val-0)+"% de malus";
		 	        else
					champs.value = v+" soit 2"+(val-0)+"% de malus";
				  } 
			      
			    }
		      
		     }
			}
		}
}

// slide: Handles the start of a slider move.
function slide(evnt)
{
	if (!evnt) evnt = window.event; // Get the mouse event causing the slider activation.
	carpeslider = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated slider element.
	var dist = parseInt(carpeslider.getAttribute('distance')); // The allowed slider movement in pixels.
	carpeslider.distance = dist ? dist : carpeDefaultSliderLength; // Deafault distance from global var.
	var displayId = carpeslider.getAttribute('display'); // ID of associated display element.
	carpedisplay = document.getElementById(displayId); // Get the associated display element.
	carpedisplay.sliderId = carpeslider.id; // Associate the display with the correct slider.
	var dec = parseInt(carpedisplay.getAttribute('decimals')); // Number of decimals to be displayed.
	carpedisplay.decimals = dec ? dec : 0; // Default number of decimals: 0.
	var val = parseInt(carpedisplay.getAttribute('valuecount'))  // Allowed number of values in the interval.
	carpedisplay.valuecount = val ? val : carpeslider.distance + 1 // Default number of values: the sliding distance.
	var from = parseFloat(carpedisplay.getAttribute('from')) // Min/start value for the display.
	from = from ? from : 0 // Default min/start value: 0.
	var to = parseFloat(carpedisplay.getAttribute('to')) // Max value for the display.
	to = to ? to : carpeslider.distance // Default number of values: the sliding distance.
	carpeslider.scale = (to - from) / carpeslider.distance // Slider-display scale [value-change per pixel of movement].
	carpeslider.from = from;
	carpeslider.xMax = carpeslider.distance;
	carpeslider.yMax = 0;
	carpeslider.startOffsetX = carpeLeft(carpeslider.id) - evnt.screenX; // Slider-mouse horizontal offset at start of slide.
	carpeslider.startOffsetY = carpeTop(carpeslider.id) - evnt.screenY; // Slider-mouse vertical offset at start of slide.
	carpemouseover = true;
	document.onmousemove = moveSlider; // Start the action if the mouse is dragged.
	document.onmouseup = sliderMouseUp; // Stop sliding.
	return false;
}
// sliderMouseUp: Handles the mouseup event after moving a slider.
// Snaps the slider position to allowed/displayed value. 



function sliderMouseUp()
{
	if (carpemouseover) {
		var v = (carpedisplay.value) ? carpedisplay.value : 0 // Find last display value.
		var pos = (v - carpeslider.from)/(carpeslider.scale) // Calculate slider position (regardless of orientation).
		if (carpeslider.yMax == 0) {
			pos = (pos > carpeslider.xMax) ? carpeslider.xMax : pos;
			pos = (pos < 0) ? 0 : pos;
			carpeLeft(carpeslider.id, pos); // Snap horizontal slider to corresponding display position.
		}
		if (carpeslider.xMax == 0) {
			pos = (pos > carpeslider.yMax) ? carpeslider.yMax : pos;
			pos = (pos < 0) ? 0 : pos;
			carpeTop(carpeslider.id, pos); // Snap vertical slider to corresponding display position.
		}
		if (document.removeEventListener) { // Remove event listeners from 'document' (W3C).
			document.removeEventListener('mousemove', moveSlider, false);
			document.removeEventListener('mouseup', sliderMouseUp, false);
		}
		else if (document.detachEvent) { // Remove event listeners from 'document' (IE).
			document.detachEvent('onmousemove', moveSlider);
			document.detachEvent('onmouseup', sliderMouseUp);
			document.releaseCapture();
		}
	}
	carpemouseover = false; // Stop the sliding.
}
