var operation = {
	rollovers     : assignRollovers,
	sliders       : buildSlides
}

//assignRollovers
//searched the DOM and assigned an imageswap even to images with a HVR attribute
	//SET IMAGESWAP ON ROLLOVER
	function assignRollovers(){
		var images = new Array();
		images = document.getElementsByTagName('img');
		for(var i=0; i<images.length; i++){
			var image = images[i];
			if( get.attribute(image,'hvr') ){
				var normal = get.attribute(image,'src');
				var hover = get.attribute(image,'hvr');
				set.attribute(image,'ori',normal);
				set.listener(image,'mouseover',function(){
					user.target().src = get.attribute(user.target(),'hvr');
					});
				set.listener(image,'mouseout',function(){
					user.target().src = get.attribute(user.target(),'ori');
					});
				browser.preload(hover);
			}
		}
	}

//buildSlides
//searches though DOM and replaces any inputs with a class of 'slider'.
	//SLIDER CREATION
	function buildSlides(){
		if(!isset('slider')) slider = null;
		var inputs = new Array();
		inputs = document.getElementsByTagName('input');
		for(var i=0; i<inputs.length; i++){
			var blueprint = inputs[i];
			if(get.attribute(blueprint,'class') == 'slider'){
				var build = {
					name      : get.attribute(blueprint,'name')   || "",
					id        : get.attribute(blueprint,'id')     || "",
					orient    : get.attribute(blueprint,'orient') || "horizontal",
					value     : get.attribute(blueprint,'value')  || 0,
					from      : get.attribute(blueprint,'from')   || 0,
					to        : get.attribute(blueprint,'to')     || 100,
					slider    : document.createElement('div'),
					toggle    : document.createElement('div'),
					track     : document.createElement('div'),
					readout   : document.createElement('var'),
					report    : document.createElement('input')
				}
				//slider
				set.attribute(build.slider,'id',build.id);
				set.attribute(build.slider,'class',build.orient);
				//toggle
				set.attribute(build.toggle,'class','toggle');
				set.attribute(build.toggle,'from',build.from);
				set.attribute(build.toggle,'to',build.to);
				build.toggle.style.position = "absolute";
				set.listener(build.toggle,'mousedown',startSlide);
				//track
				set.attribute(build.track,'class','track');
				set.attribute(build.track,'orient',build.orient);
				build.track.style.position = "relative";
				//readout
				set.attribute(build.readout,'class','readout');
				build.readout.innerHTML = build.value;
				//report
				set.attribute(build.report,'class','report');
				set.attribute(build.report,'type','hidden');
				set.attribute(build.report,'name',build.name);
				set.attribute(build.report,'value',build.value);
				//build
				build.slider.appendChild(build.track);
				build.track.appendChild(build.toggle);
				build.slider.appendChild(build.readout);
				build.slider.appendChild(build.report);
				blueprint.parentNode.replaceChild(build.slider,blueprint);
				//adjust display
				build.range = build.to - build.from;
				if(build.orient == "horizontal"){
					build.trackSize = get.width(build.track) - get.width(build.toggle);
					build.increment = build.trackSize / build.range;
					build.pos = (build.value - build.from) * build.increment;
					build.toggle.style.left = Math.round(build.pos) + 'px';
				}
				if(build.orient == "vertical"){
					build.trackSize = get.height(build.track) - get.height(build.toggle);
					build.increment = build.trackSize / build.range;
					build.pos = (build.value - build.from) * build.increment;
					build.toggle.style.bottom = Math.round(build.pos) + 'px';
				}
				build = null;
			}
		}
	}
	
	//SLIDER OPPERATION
	function startSlide(){
		if(slider) return false;
		slider = {
			toggle    : this,
			track     : this.parentNode,
			readout   : this.parentNode.parentNode.getElementsByTagName('var')[0],
			report    : this.parentNode.parentNode.getElementsByTagName('input')[0],
			value     : Number(get.attribute(this,'value')),
			from      : Number(get.attribute(this,'from')),
			to        : Number(get.attribute(this,'to')),
			x         : mouse.x(),
			y         : mouse.y()
		}
		
		
		slider.range = slider.to - slider.from;
		slider.orient = get.attribute(slider.track,'orient');
		
		if( slider.orient == "horizontal" ){
			slider.toggleSize = get.width(slider.toggle);
			slider.trackSize = get.width(slider.track) - slider.toggleSize;
			slider.pos = parseFloat(slider.toggle.style.left);
			slider.start = mouse.x();
			slider.setPos = function(pos){
				slider.toggle.style.left = pos+'px';
			}
		}
		if( slider.orient == "vertical" ){
			slider.toggleSize = get.height(slider.toggle);
			slider.trackSize = get.height(slider.track) - slider.toggleSize;
			slider.pos = parseFloat(slider.toggle.style.bottom);
			slider.start = mouse.y();
			slider.setPos = function(pos){
				slider.toggle.style.bottom = pos+'px';
			}
		}
		
		slider.increment =  slider.range / slider.trackSize;
	
		set.listener(html,'mousemove',doSlide);
		set.listener(html,'mouseup',stopSlide);
	}
	function doSlide(){
		var current = slider.pos;
		if(slider.orient == "horizontal") var change = mouse.x() - slider.start;
		if(slider.orient == "vertical") var change = slider.start - mouse.y();
		var updated = current + change;
		if (updated <= 0){
			slider.setPos(0);
			slider.readout.innerHTML = slider.from;
			slider.report.value = slider.from;
		}
		else if (updated >= slider.trackSize){
			slider.setPos(slider.trackSize);
			slider.readout.innerHTML = slider.to;
			slider.report.value = slider.to;
		}
		else {
			slider.setPos(updated);
			slider.readout.innerHTML = Math.round(updated*slider.increment) + slider.from;
			slider.report.value = Math.round(updated*slider.increment) + slider.from;
		}
	}
	function stopSlide(){
		remove.listener(html,'mousemove',doSlide);
		remove.listener(html,'mouseup',stopSlide);
		slider = null;
	}
