var g_ratio = 2.0;
var size_scale = 0.0;
var xMax, yMax;
var sliderObj;
var sizeSliderVal = 50;
var ratioSliderVal = 120;
var sliderValue = 100;
var mouseover = false;

function sliderChanged(val)
{
  if(getContentElement().style.filter)
  {
    if(val == 100)
    {
      alphaFilter = ' none';
      getElement("vanishdiv").style.filter = getElement("modediv").style.filter = getElement("lockdiv").style.filter = greyFilter;
    }
    else
    {
      alphaFilter = ' alpha(opacity=' + val + ')';
      getContentElement().style.filter = alphaFilter + greyFilter;
      getElement("modediv").style.filter = alphaFilter;
      getElement("lockdiv").style.filter = alphaFilter;
    }
  }
  else
  {
/*
    if(val == 100)
      showElement('vanishbgdiv');
    else
      hideElement('vanishbgdiv');
*/
    getContentElement().style.opacity = val / 100;
    getElement("modediv").style.opacity = val / 100;
    getElement("lockdiv").style.opacity = val / 100;
  }
}

function moveSlider(evnt)
{
	var evnt = (!evnt) ? window.event : evnt; // The mousemove event
	if (mouseover) { // Only if slider is dragged
		x = pxLeft + evnt.screenX - xCoord // Horizontal mouse position relative to allowed slider positions
		if (x > xMax) x = xMax // Limit horizontal movement
		if (x < 0) x = 0 // Limit horizontal movement
		vanishLeft(sliderObj.id, x)  // move slider to new horizontal position
		sliderVal = x //+ y // pixel value of slider regardless of orientation
		sliderPos = (sliderObj.pxLen / sliderObj.valCount) * Math.round(sliderObj.valCount * sliderVal / sliderObj.pxLen)
		v = Math.round((sliderPos * sliderObj.scale + sliderObj.fromVal) * // calculate display value
			Math.pow(10, sliderDecimals)) / Math.pow(10, sliderDecimals)
		sliderValue = v // put the new value in the slider display element
sliderChanged(sliderValue);
		return false
	}
	return
}

function slide(evnt, orientation, length, from, to, count, decimals)
{
	if (!evnt) evnt = window.event;
  evnt.cancelBubble = true;
  if(evnt.stopPropagation) evnt.stopPropagation();
	sliderObj = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated slider element.
	sliderObj.pxLen = length // The allowed slider movement in pixels.
	sliderObj.valCount = count ? count - 1 : length // Allowed number of values in the interval.
	sliderDecimals = decimals // Number of decimals to be displayed.
	sliderObj.scale = (to - from) / length // Slider-display scale [value-change per pixel of movement].
	if (orientation == 'horizontal') { // Set limits for horizontal sliders.
		sliderObj.fromVal = from
		xMax = length
		yMax = 0
	}
	else if (orientation == 'vertical') { // Set limits and scale for vertical sliders.
		sliderObj.fromVal = to
		xMax = 0
		yMax = length
		sliderObj.scale = -sliderObj.scale // Invert scale for vertical sliders. "Higher is more."
	}
	pxLeft = vanishLeft(sliderObj.id) // Sliders horizontal position at start of slide.
	pxTop  = vanishTop(sliderObj.id) // Sliders vertical position at start of slide.
	xCoord = evnt.screenX // Horizontal mouse position at start of slide.
	yCoord = evnt.screenY // Vertical mouse position at start of slide.
	mouseover = true
	document.onmousemove = moveSlider // Start the action if the mouse is dragged.
	document.onmouseup = sliderMouseUp // Stop sliding.
}

function sliderMouseUp(evnt)
{
  if(!mouseover)
    return;
  if (!evnt) evnt = window.event;
  evnt.cancelBubble = true;
  if(evnt.stopPropagation) evnt.stopPropagation();
    mouseover = false // Stop the sliding.
  if(sliderObj)
  {
    v = (sliderValue) ? sliderValue : 0 // Find last display value.
    pos = (v - sliderObj.fromVal)/(sliderObj.scale) // Calculate slider position (regardless of orientation).
  }
  if (document.removeEventListener) { // Remove event listeners from 'document' (Moz&co).
    document.removeEventListener('mousemove', moveSlider, true)
    document.removeEventListener('mouseup', sliderMouseUp, true)
  }
  else if (document.detachEvent) { // Remove event listeners from 'document' (IE&co).
    document.detachEvent('onmousemove', moveSlider)
    document.detachEvent('onmouseup', sliderMouseUp)
  }
  contentFocus();
}

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    do {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
  }
  return [curleft,curtop];
}

function jumpSlider(evt)
{
  if (!evt) evt = window.event;
  if((evt.srcElement && evt.srcElement.id != "slidertrack" && evt.srcElement.id != "sliderslit") ||
     (evt.target && evt.target.id != "slidertrack" && evt.target.id != "sliderslit")) return;
  evt.cancelBubble = true;
  if(evt.stopPropagation) evt.stopPropagation();
  var x = evt.offsetX + (evt.target == getElement('sliderslit') ? 8 : -8);
  sliderObj = getElement('transparencysliderid');
  if (x > xMax) x = xMax // Limit horizontal movement
  if (x < 0) x = 0 // Limit horizontal movement
  vanishLeft(sliderObj.id, x)  // move slider to new horizontal position

  sliderValue = Math.round(x * 100 / 128);
  sliderChanged(sliderValue);

  return false;  
}
