//---------------------------------+
//  CARPE  S l i d e r        1.3  |
//  2005 - 12 - 10                 |
//  By Tom Hermansson Snickars     |
//  Copyright CARPE Design         |
//  http://carpe.ambiprospect.com/ |
//---------------------------------+



function carpeGetElementById(element)
{
	if (document.getElementById) element = document.getElementById(element);
	else if (document.all) element = document.all[element];
	else element = null;
	return element;
}


function carpeLeft(elmnt, pos)
{
	if (!(elmnt = carpeGetElementById(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;
}


function carpeTop(elmnt, pos)
{
	if (!(elmnt = carpeGetElementById(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;
}


function moveSlider(evnt)
{
	var evnt = (!evnt) ? window.event : evnt;
	if (mouseover) {
		x = pxLeft + evnt.screenX - xCoord; 
		y = pxTop + evnt.screenY - yCoord; 
		if (x > xMax) x = xMax; 
		if (x < 0) x = 0;
		if (y > yMax) y = yMax;
		if (y < 0) y = 0;
		carpeLeft(sliderObj.id, x); 
		carpeTop(sliderObj.id, y);
		sliderVal = x + y;
		sliderPos = (sliderObj.pxLen / sliderObj.valCount) * Math.round(sliderObj.valCount * sliderVal / sliderObj.pxLen);
		v = Math.round((sliderPos * sliderObj.scale + sliderObj.fromVal) * 
			Math.pow(10, displayObj.dec)) / Math.pow(10, displayObj.dec);
		displayObj.value = v;
		return false;
	}
	return;
}


function slide(evnt, orientation, length, from, to, count, decimals, display)
{
	if (!evnt) evnt = window.event;
	sliderObj = (evnt.target) ? evnt.target : evnt.srcElement; 
	sliderObj.pxLen = length ;
	sliderObj.valCount = count ? count - 1 : length;
	displayObj = carpeGetElementById(display);
	displayObj.dec = decimals;
	sliderObj.scale = (to - from) / length;
	if (orientation == 'horizontal') { 
		sliderObj.fromVal = from;
		xMax = length;
		yMax = 0;
	}
	if (orientation == 'vertical') { 
		sliderObj.fromVal = to;
		xMax = 0;
		yMax = length;
		sliderObj.scale = -sliderObj.scale;
	}
	pxLeft = carpeLeft(sliderObj.id);
	pxTop  = carpeTop(sliderObj.id);
	xCoord = evnt.screenX;
	yCoord = evnt.screenY;
	mouseover = true;
	document.onmousemove = moveSlider;
	document.onmouseup = sliderMouseUp; 
}


function sliderMouseUp()
{
	mouseover = false;
	v = (displayObj.value) ? displayObj.value : 0;
	pos = (v - sliderObj.fromVal)/(sliderObj.scale);
	if (yMax == 0) carpeLeft(sliderObj.id, pos)
	if (xMax == 0) carpeTop(sliderObj.id, pos)
	if (document.removeEventListener) {
		document.removeEventListener('mousemove', moveSlider);
		document.removeEventListener('mouseup', sliderMouseUp);
	}
	else if (document.detachEvent) {
		document.detachEvent('onmousemove', moveSlider);
		document.detachEvent('onmouseup', sliderMouseUp);
	}
}