jQuery.fn.selectToUISlider=function(settings){var selects=jQuery(this);var options=jQuery.extend({labels:3,tooltip:false,tooltipStatic:false,tooltipSrc:"text",labelSrc:"value",sliderOptions:null},settings);
var handleIds=(function(){var tempArr=[];selects.each(function(){tempArr.push("handle_"+jQuery(this).attr("id"))
});return tempArr})();var selectOptions=(function(){var opts=[];selects.eq(0).find("option").each(function(){opts.push({value:jQuery(this).attr("value"),text:jQuery(this).text()})
});return opts})();var groups=(function(){if(selects.eq(0).find("optgroup").size()>0){var groupedData=[];
selects.eq(0).find("optgroup").each(function(i){groupedData[i]={};groupedData[i].label=jQuery(this).attr("label");
groupedData[i].options=[];jQuery(this).find("option").each(function(){groupedData[i].options.push({text:jQuery(this).text(),value:jQuery(this).attr("value")})
})});return groupedData}else{return null}})();function isArray(obj){return obj.constructor==Array}function ttText(optIndex){return(options.tooltipSrc=="text")?selectOptions[optIndex].text:selectOptions[optIndex].value
}var sliderOptions={step:1,min:0,orientation:"horizontal",max:selectOptions.length-1,range:selects.length>1,slide:function(e,ui){var thisHandle=jQuery(ui.handle);
var textval=ttText(ui.value);if(options.tooltipStatic){thisHandle.attr("aria-valuetext",textval).attr("aria-valuenow",ui.value).next("span.ui-slider-tooltip").text(textval)
}else{thisHandle.attr("aria-valuetext",textval).attr("aria-valuenow",ui.value).find(".ui-slider-tooltip").text(textval)
}var currSelect=jQuery("#"+thisHandle.attr("id").split("handle_")[1]);currSelect.find("option").eq(ui.value).attr("selected","selected")
},values:(function(){var values=[];selects.each(function(){values.push(jQuery(this).get(0).selectedIndex)
});return values})()};options.sliderOptions=(settings)?jQuery.extend(sliderOptions,settings.sliderOptions):sliderOptions;
selects.bind("change keyup click",function(){var thisIndex=jQuery(this).get(0).selectedIndex;var thisHandle=jQuery("#handle_"+jQuery(this).attr("id"));
var handleIndex=thisHandle.data("handleNum");thisHandle.parents(".ui-slider:eq(0)").slider("values",handleIndex,thisIndex)
});var sliderComponent=jQuery("<div></div>");selects.each(function(i){var hidett="";var thisLabel=$("label[for="+$(this).attr("id")+"]");
var labelText=(thisLabel.size()>0)?"Slider control for "+thisLabel.text()+"":"";var thisLabelId=thisLabel.attr("id")||thisLabel.attr("id","label_"+handleIds[i]).attr("id");
if(options.tooltip==false){hidett=' style="display: none;"'}if(options.tooltipStatic){jQuery('<a href="#" tabindex="0" id="'+handleIds[i]+'" class="ui-slider-handle" role="slider" aria-labelledby="'+thisLabelId+'" aria-valuemin="'+options.sliderOptions.min+'" aria-valuemax="'+options.sliderOptions.max+'" aria-valuenow="'+options.sliderOptions.values[i]+'" aria-valuetext="'+ttText(options.sliderOptions.values[i])+'" ><span class="screenReaderContext">'+labelText+"</span></a>").data("handleNum",i).appendTo(sliderComponent);
sliderComponent.append('<span class="ui-slider-tooltip ui-widget-content ui-corner-all"'+hidett+"></span>")
}else{jQuery('<a href="#" tabindex="0" id="'+handleIds[i]+'" class="ui-slider-handle" role="slider" aria-labelledby="'+thisLabelId+'" aria-valuemin="'+options.sliderOptions.min+'" aria-valuemax="'+options.sliderOptions.max+'" aria-valuenow="'+options.sliderOptions.values[i]+'" aria-valuetext="'+ttText(options.sliderOptions.values[i])+'" ><span class="screenReaderContext">'+labelText+'</span><span class="ui-slider-tooltip ui-widget-content ui-corner-all"'+hidett+"></span></a>").data("handleNum",i).appendTo(sliderComponent)
}});if(groups){var inc=0;var scale=sliderComponent.append('<dl class="ui-slider-scale ui-helper-reset"></dl>').find(".ui-slider-scale:eq(0)");
jQuery(groups).each(function(h){scale.append('<dt style="width: '+(100/groups.length).toFixed(2)+"%; left:"+(h/(groups.length-1)*100).toFixed(2)+'%"><span>'+this.label+"</span></dt>");
var groupOpts=this.options;jQuery(this.options).each(function(i){var style=(inc==selectOptions.length-1||inc==0)?'style="display: none;"':"";
var labelText=(options.labelSrc=="text")?groupOpts[i].text:groupOpts[i].value;scale.append('<dd style="left:'+leftVal(inc)+'"><span class="ui-slider-label">'+labelText+'</span><span class="ui-slider-tic ui-widget-content"'+style+"></span></dd>");
inc++})})}else{var scale=sliderComponent.append('<ol class="ui-slider-scale ui-helper-reset"></ol>').find(".ui-slider-scale:eq(0)");
jQuery(selectOptions).each(function(i){var style=(i==selectOptions.length-1||i==0)?'style="display: none;"':"";
var labelText=(options.labelSrc=="text")?this.text:this.value;scale.append('<li style="left:'+leftVal(i)+'"><span class="ui-slider-label">'+labelText+'</span><span class="ui-slider-tic ui-widget-content"'+style+"></span></li>")
})}function leftVal(i){return(i/(selectOptions.length-1)*100).toFixed(2)+"%"}if(options.labels>1){sliderComponent.find(".ui-slider-scale li:last span.ui-slider-label, .ui-slider-scale dd:last span.ui-slider-label").addClass("ui-slider-label-show")
}var increm=Math.round(selectOptions.length/options.labels);for(var j=0;j<selectOptions.length;j+=increm){if((selectOptions.length-j)>increm){sliderComponent.find(".ui-slider-scale li:eq("+j+") span.ui-slider-label, .ui-slider-scale dd:eq("+j+") span.ui-slider-label").addClass("ui-slider-label-show")
}}sliderComponent.find(".ui-slider-scale dt").each(function(i){jQuery(this).css({left:((100/(groups.length))*i).toFixed(2)+"%"})
});sliderComponent.insertAfter(jQuery(this).eq(this.length-1)).slider(options.sliderOptions).find(".ui-slider-label").attr("role","application").each(function(){jQuery(this).css("marginLeft",-jQuery(this).width()/2)
});var values=sliderComponent.slider("values");if(isArray(values)){$(values).each(function(i){if(options.tooltipStatic){sliderComponent.next("span.ui-slider-tooltip").eq(i).html(ttText(this))
}else{sliderComponent.find(".ui-slider-tooltip").eq(i).html(ttText(this))}})}else{if(options.tooltipStatic){sliderComponent.fnext("span.ui-slider-tooltip").eq(i).html(ttText(this))
}else{sliderComponent.find(".ui-slider-tooltip").eq(0).html(ttText(values))}}return this};