var DualSlider = function(id, options) {
    options = options || {};
    var hidden_field_id = id;
    var Dom = YAHOO.util.Dom;
    var fixed_size = 150;
    // Slider has a range of 300 pixels
    var range = options.max || 150;
    var start_of_range = options.min || 0;
    var low_value = options.low || start_of_range;
    var high_value = options.high || range;
    if(high_value > range){
    	high_value = range;
    }
    if(low_value < start_of_range){
    	low_value = start_of_range;
    }
    
    var minThumbDistance = options.min_gap || 0;
    var scale = (range - start_of_range)/fixed_size;
    
    var multiplier = fixed_size / (range - start_of_range);
    var initValues = [((low_value - start_of_range) * multiplier), ((high_value - start_of_range) * multiplier)]; 
    
    // Set up 12 pixel ticks
    var tickSize = 0;//Math.floor(fixed_size/(range - start_of_range));

 		document.write('\n<div class ="dual_slider_bg" id="' + hidden_field_id + '_demo_bg" title="Range slider">\n');
				document.write('<span id=' + hidden_field_id + '"_demo_highlight">\n');
				document.write('</span>\n');
			 	document.write('<div id="' + hidden_field_id + '_demo_min_thumb">\n');
			 		document.write('<img src="/images/form_slider.gif" />\n');
			 	document.write('</div>\n');
			 	document.write('<div id="' + hidden_field_id + '_demo_max_thumb">\n');
			 		document.write('<img src="/images/form_slider.gif" />\n');
			 	document.write('</div>\n');
		document.write('</div>\n');
		document.write('\n<span id="' + hidden_field_id + '_demo_range">');
		document.write(low_value + "-" + high_value);
		document.write('</span>\n');
		document.write('<input type="hidden" value="' + low_value + '" id= "' + hidden_field_id + '_low" name="' + hidden_field_id + '_low"></input>');
		document.write('<input type="hidden" value="' + high_value + '" id= "' + hidden_field_id + '_high" name="' + hidden_field_id + '_high"></input>');			

     var reportSpan  = Dom.get(hidden_field_id + "_demo_range");
     // Create the DualSlider
     
     var slider = YAHOO.widget.Slider.getHorizDualSlider(hidden_field_id + "_demo_bg", hidden_field_id + "_demo_min_thumb", hidden_field_id+ "_demo_max_thumb", fixed_size, tickSize, initValues);
     slider.minRange = minThumbDistance; 
     
     // Create an event callback to update some display fields
     var report = function () {
         reportSpan.innerHTML = getLowValue() + ' - ' + getHighValue();
         
         // set the hidden fields so that they are dumped along with the get request of the form
         document.getElementById(hidden_field_id + "_low").value = getLowValue();
         document.getElementById(hidden_field_id + "_high").value = getHighValue();
     };
     
     var reset = function(){
	         slider.setValues(0,fixed_size);
     };
     
     // Subscribe to the slider's change event to report the status.
     slider.subscribe('change',report);
 
	  // Create getter to read the values:
	  var getMinValue = function () {
         return start_of_range;
     };
     
     var getMaxValue = function () {
	      return range;
     };
     
     var getLowValue = function () {
	      return Math.floor(slider.minVal*scale) + start_of_range;
     };
     
     var getHighValue = function () {
	      return Math.floor(slider.maxVal*scale) + start_of_range;
     };
     
     return {
			getmin: getMinValue,
			getmax: getMaxValue,
			getlow: getLowValue,
			gethigh: getHighValue,
			reset: reset,
	  };
};

