//---------------------------------+
//  CARPE  S l i d e r        1.3  |
//  2005 - 12 - 10                 |
//  By Tom Hermansson Snickars     |
//  Copyright CARPE Design         |
//  http://text.ambiprospect.com/ |
//---------------------------------+

// textGetElementByID: Cross-browser version of "document.getElementById()"
function textGetElementById(element)
{
	if (document.getElementById) element = document.getElementById(element);
	else if (document.all) element = document.all[element];
	else element = null;
	return element;
}
// textLeft: Cross-browser version of "element.style.left"
function textLeft(elmnt, pos)
{
	if (!(elmnt = textGetElementById(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;
}
// textTop: Cross-browser version of "element.style.top"
function textTop(elmnt, pos)
{
	if (!(elmnt = textGetElementById(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 movetext(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
		y = pxTop + evnt.screenY - yCoord // Horizontal mouse position relative to allowed slider positions
		if (x > xMax) x = xMax // Limit horizontal movement
		if (x < 0) x = 0 // Limit horizontal movement
		if (y > yMax) y = yMax // Limit vertical movement
		if (y < 0) y = 0 // Limit vertical movement
		textLeft(sliderObj.id, x)  // move slider to new horizontal position
		textTop(sliderObj.id, y) // move slider to new vertical 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, displayObj.dec)) / Math.pow(10, displayObj.dec)
		displayObj.value = v // put the new value in the slider display element
		textmove(textid2);
		return false
	}
	return
}
// moveSlider: Handles the start of a slider move.
function textslide(evnt, orientation, length, from, tovalue, count, decimals, display, textid)
{
	if (!evnt) evnt = window.event;
	textid2 = textid;
	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.
	displayObj = textGetElementById(display) // Get the associated display element.
	displayObj.dec = decimals // Number of decimals to be displayed.
	var to = document.getElementById(tovalue).value;
	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
	}
	if (orientation == 'vertical') { // Set limits and scale for vertical sliders.
		sliderObj.fromVal = from
		xMax = 0
		yMax = length
		//sliderObj.scale = -sliderObj.scale // Invert scale for vertical sliders. "Higher is more."
	}
	pxLeft = textLeft(sliderObj.id) // Sliders horizontal position at start of text.
	pxTop  = textTop(sliderObj.id) // Sliders vertical position at start of text.
	xCoord = evnt.screenX // Horizontal mouse position at start of text.
	yCoord = evnt.screenY // Vertical mouse position at start of text.
	mouseover = true
	document.onmousemove = movetext // Start the action if the mouse is dragged.
	document.onmouseup = textMouseUp // Stop sliding.
}
// sliderMouseup: Handles the mouseup event after moving a slider.
// Snaps the slider position to allowed/displayed value. 
function textMouseUp()
{
	mouseover = false // Stop the sliding.
	v = (displayObj.value) ? displayObj.value : 0 // Find last display value.
	pos = (v - sliderObj.fromVal)/(sliderObj.scale) // Calculate slider position (regardless of orientation).
	if (yMax == 0) textLeft(sliderObj.id, pos) // Snap horizontal slider to corresponding display position.
	if (xMax == 0) textTop(sliderObj.id, pos) // Snap vertical slider to corresponding display position.
	/*if (document.removeEventListener) { // Remove event listeners from 'document' (Moz&co).
		document.removeEventListener('mousemove', moveSlider)
		document.removeEventListener('mouseup', sliderMouseUp)
	}
	else if (document.detachEvent) { // Remove event listeners from 'document' (IE&co).
		document.detachEvent('onmousemove', moveSlider)
		document.detachEvent('onmouseup', sliderMouseUp)
	}*/
}


function textOndim(text2, display2, textid, orientation2, length2, from2, tovalue, count2)
{
	sliderObj2 = textGetElementById(text2)
	displayObj2 = textGetElementById(display2)
	sliderObj2.pxLen = length2 // The allowed slider movement in pixels.
	sliderObj2.valCount = count2 ? count2 - 1 : length2
	displayObj2.dec = 0;
	var to2 = document.getElementById(tovalue).value;
	//var newpos = Math.round((oldtovalue-to2)/2);
	sliderObj2.scale = (to2 - from2) / length2
	if (orientation2 == 'horizontal') { // Set limits for horizontal sliders.
		sliderObj2.fromVal = from2
		xMax2 = length2
		yMax2 = 0
	}
	if (orientation2 == 'vertical') { // Set limits and scale for vertical sliders.
		sliderObj2.fromVal = from2
		xMax2 = 0
		yMax2 = length2
		//sliderObj.scale = -sliderObj.scale // Invert scale for vertical sliders. "Higher is more."
	}
	v2 = (displayObj2.value) ? displayObj2.value : 0 // Find last display value.
	if (parseInt(v2) > parseInt(to2)) v2 = displayObj2.value = to2
	pos2 = (v2 - sliderObj2.fromVal)/(sliderObj2.scale) // Calculate slider position (regardless of orientation).
	if (yMax2 == 0) textLeft(sliderObj2.id, pos2) // Snap horizontal slider to corresponding display position.
	if (xMax2 == 0) textTop(sliderObj2.id, pos2) // Snap vertical slider to corresponding display position.
	textmove(textid);
}

function textOnvaluechange(text, display, idtext, orientation, length, from, tovalue, count)
{
	sliderObj = textGetElementById(text)
	displayObj = textGetElementById(display)
	sliderObj.pxLen = length // The allowed slider movement in pixels.
	sliderObj.valCount = count ? count - 1 : length
	var to = document.getElementById(tovalue).value;
	sliderObj.scale = (to - from) / length
	if (orientation == 'horizontal') { // Set limits for horizontal sliders.
		sliderObj.fromVal = from
		xMax = length
		yMax = 0
	}
	if (orientation == 'vertical') { // Set limits and scale for vertical sliders.
		sliderObj.fromVal = from
		xMax = 0
		yMax = length
		//sliderObj.scale = -sliderObj.scale // Invert scale for vertical sliders. "Higher is more."
	}
	v = (displayObj.value) ? displayObj.value : 0 // Find last display value.
	if (parseInt(v) > parseInt(to)) v = displayObj.value = to
	pos = (v - sliderObj.fromVal)/(sliderObj.scale) // Calculate slider position (regardless of orientation).
	if (yMax == 0) textLeft(sliderObj.id, pos) // Snap horizontal slider to corresponding display position.
	if (xMax == 0) textTop(sliderObj.id, pos) // Snap vertical slider to corresponding display position.
}

/*function Oncolorchange(text, display, orientation, from, to, length, count)
{
	for (var i = 0;i < text.length;i++)
	{
		displayObj = textGetElementById(display[i])
		sliderObj = textGetElementById(text[i])
		sliderObj.pxLen = length[i]
		sliderObj.valCount = count[i] ? count[i] - 1 : length[i]
		sliderObj.scale = (to[i] - from[i]) / length[i]
		if (orientation == 'horizontal') {
			sliderObj.fromVal = from[i]
			xMax = length[i]
			yMax = 0
		}
		if (orientation == 'vertical') {
			sliderObj.fromVal = from[i]
			xMax = 0
			yMax = length[i]
			//sliderObj.scale = -sliderObj.scale
		}
		v = (displayObj.value) ? displayObj.value : 0
		pos = (v - sliderObj.fromVal)/(sliderObj.scale)
		if (yMax == 0) textLeft(sliderObj.id, pos)
		if (xMax == 0) textTop(sliderObj.id, pos)
	}
}*/