/******************************************
* Slider Bar Form Element Script
* 
* Original program copyright David Harrison
*   d_s_h2@hotmail.com
* Version 2 copyright Eric C. Davis
*   eric@10mar2001.com
* 
* Visit http://www.dynamicdrive.com for
*   loads of other scripts.
* 
* This notice MUST stay intact for use.
******************************************/

var x, lgap,
	pel = null;

function mousetracker (event) {
	if (!event) {
		event = window.event;
	}
	x = event.clientX;
	if (pel != null) {
		var width = pel.sliderWidth;
		pel.style.marginLeft = ( ( (lgap + x) > width) ? width : ( ( (lgap + x) < 0) ? 0 : lgap + x ) ) + "px"; //>
		pel.inputElement.value = pel.style.marginLeft.replace(/\D/g,"");
	}
}

function track () {
	pel = this;
	lgap = parseInt(pel.style.marginLeft.replace(/\D/g,""));
	if (isNaN(lgap)) {
		lgap = 0;
	}
	lgap -= x;
}

function stop() {
	pel = null;
}

function form_slider (el, width) {
	var wid = parseInt(width);
	var newEl = document.createElement("input");
	newEl.type = "hidden";
	var outDiv = document.createElement("div");
	outDiv.className = "move";
	outDiv.style.width = (wid+11) + "px";
	var inDiv = document.createElement("div");
	inDiv.className = "move2";
	var slider = document.createElement("div");
	slider.className = "slider";
	// convert original form element to new form element
	for (key in el) {
		try {
			newEl[key] = el[key];
		} catch (er) {
			// whoops! Can't assign that property.
		}
	}
	newEl.type = "hidden";
	newEl.className = "";
	newEl.name = el.name;
	newEl.id = el.id;
	// assign persistent properties to slider div
	slider.inputElement = newEl;
	slider.sliderWidth = wid;
	// assign events
	if (slider.addEventListener) {
		slider.addEventListener('mousedown', track, false);
		slider.addEventListener('mouseup', stop, false);
	} else {
		slider.onmousedown = track;
		slider.onmouseup = stop;
	}
	// put the new elements in the document
	outDiv.appendChild(inDiv);
	outDiv.appendChild(slider);
	el.parentNode.insertBefore(outDiv, el);
	// remove the old element before inserting the new element
	el.parentNode.removeChild(el);
	outDiv.parentNode.insertBefore(newEl, outDiv);
}

function initSliders () {
	var f = document.forms.length,
		els = 0,
		i, j, el, params, width, p;
	for (i = 0; f > i; i++) {
		els = document.forms[i].elements.length;
		for (j = 0; els > j; j++) {
			el = document.forms[i].elements[j];
			p = el.className.indexOf("slider");
			if (p >= 0) {
				width = 100
				params = el.className.substring(p + 6);
				if (params.length) {
					width = parseInt(params.match(/\d+/));
				}
				form_slider(el, width);
				initSliders();
				break;
			}
		}
	}
}

if (window.addEventListener) {
	window.addEventListener('load', initSliders, false);
	document.addEventListener('mousemove', mousetracker, false);
} else if (window.attachEvent) {
	window.attachEvent('onload', initSliders);
	document.attachEvent('onmousemove', mousetracker);
} else {
	window.onload = initSliders;
	document.onmousemove = mousetracker;
}
