/*
 * --------------------------------------------------------------------
 * jQuery-Plugin - selectToUISlider - creates a UI slider component from a select element(s)
 * by Scott Jehl, scott@filamentgroup.com
 * http://www.filamentgroup.com
 * reference article: http://www.filamentgroup.com/lab/update_jquery_ui_16_slider_from_a_select_element/
 * demo page: http://www.filamentgroup.com/examples/slider_v2/index.html
 * 
 * Copyright (c) 2008 Filament Group, Inc
 * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
 *
 * Usage Notes: please refer to our article above for documentation
 *  
 * --------------------------------------------------------------------
 */

jQuery.fn.selectToUISlider=function(f){var k=jQuery(this);var q=jQuery.extend({labels:3,tooltip:true,tooltipSrc:"text",labelSrc:"value",sliderOptions:null},f);var h=(function(){var j=[];k.each(function(){j.push("handle_"+jQuery(this).attr("id"));});return j;})();var a=(function(){var j=[];k.eq(0).find("option").each(function(){j.push({value:jQuery(this).attr("value"),text:jQuery(this).text()});});return j;})();var b=(function(){if(k.eq(0).find("optgroup").size()>0){var j=[];k.eq(0).find("optgroup").each(function(r){j[r]={};j[r].label=jQuery(this).attr("label");j[r].options=[];jQuery(this).find("option").each(function(){j[r].options.push({text:jQuery(this).text(),value:jQuery(this).attr("value")});});});return j;}else{return null;}})();function i(j){return j.constructor==Array;}function m(j){return(q.tooltipSrc=="text")?a[j].text:a[j].value;}var p={step:1,min:0,orientation:"horizontal",max:a.length-1,range:k.length>1,slide:function(u,t){var s=jQuery(t.handle);var r=m(t.value);s.attr("aria-valuetext",r).attr("aria-valuenow",t.value).find(".ui-slider-tooltip .ttContent").text(r);var j=jQuery("#"+s.attr("id").split("handle_")[1]);j.find("option").eq(t.value).attr("selected","selected");},values:(function(){var j=[];k.each(function(){j.push(jQuery(this).get(0).selectedIndex);});return j;})()};q.sliderOptions=(f)?jQuery.extend(p,f.sliderOptions):p;k.bind("change keyup click",function(){var r=jQuery(this).get(0).selectedIndex;var j=jQuery("#handle_"+jQuery(this).attr("id"));var s=j.data("handleNum");j.parents(".ui-slider:eq(0)").slider("values",s,r);});var d=jQuery("<div></div>");k.each(function(r){var s="";var u=jQuery("label[for="+jQuery(this).attr("id")+"]");var t=(u.size()>0)?"Slider control for "+u.text()+"":"";var j=u.attr("id")||u.attr("id","label_"+h[r]).attr("id");if(q.tooltip==false){s=' style="display: none;"';}jQuery('<a href="#" tabindex="0" id="'+h[r]+'" class="ui-slider-handle" role="slider" aria-labelledby="'+j+'" aria-valuemin="'+q.sliderOptions.min+'" aria-valuemax="'+q.sliderOptions.max+'" aria-valuenow="'+q.sliderOptions.values[r]+'" aria-valuetext="'+m(q.sliderOptions.values[r])+'" ><span class="screenReaderContext">'+t+'</span><span class="ui-slider-tooltip ui-widget-content ui-corner-all"'+s+'><span class="ttContent"></span><span class="ui-tooltip-pointer-down ui-widget-content"><span class="ui-tooltip-pointer-down-inner"></span></span></span></a>').data("handleNum",r).appendTo(d);});if(b){var c=0;var e=d.append('<dl class="ui-slider-scale ui-helper-reset" role="presentation"></dl>').find(".ui-slider-scale:eq(0)");jQuery(b).each(function(r){e.append('<dt style="width: '+(100/b.length).toFixed(2)+"%; left:"+(r/(b.length-1)*100).toFixed(2)+'%"><span>'+this.label+"</span></dt>");var j=this.options;jQuery(this.options).each(function(s){var t=(c==a.length-1||c==0)?'style="display: none;"':"";var u=(q.labelSrc=="text")?j[s].text:j[s].value;e.append('<dd style="left:'+n(c)+'"><span class="ui-slider-label">'+u+'</span><span class="ui-slider-tic ui-widget-content"'+t+"></span></dd>");c++;});});}else{var e=d.append('<ol class="ui-slider-scale ui-helper-reset" role="presentation"></ol>').find(".ui-slider-scale:eq(0)");jQuery(a).each(function(j){var r=(j==a.length-1||j==0)?'style="display: none;"':"";var s=(q.labelSrc=="text")?this.text:this.value;e.append('<li style="left:'+n(j)+'"><span class="ui-slider-label">'+s+'</span><span class="ui-slider-tic ui-widget-content"'+r+"></span></li>");});}function n(j){return(j/(a.length-1)*100).toFixed(2)+"%";}if(q.labels>1){d.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 l=Math.max(1,Math.round(a.length/q.labels));for(var g=0;g<a.length;g+=l){if((a.length-g)>l){d.find(".ui-slider-scale li:eq("+g+") span.ui-slider-label, .ui-slider-scale dd:eq("+g+") span.ui-slider-label").addClass("ui-slider-label-show");}}d.find(".ui-slider-scale dt").each(function(j){jQuery(this).css({left:((100/(b.length))*j).toFixed(2)+"%"});});d.insertAfter(jQuery(this).eq(this.length-1)).slider(q.sliderOptions).attr("role","application").find(".ui-slider-label").each(function(){jQuery(this).css("marginLeft",-jQuery(this).width()/2);});d.find(".ui-tooltip-pointer-down-inner").each(function(){var r=jQuery(".ui-tooltip-pointer-down-inner").css("borderTopWidth");var j=jQuery(this).parents(".ui-slider-tooltip").css("backgroundColor");jQuery(this).css("border-top",r+" solid "+j);});var o=d.slider("values");if(i(o)){jQuery(o).each(function(j){d.find(".ui-slider-tooltip .ttContent").eq(j).text(m(this));});}else{d.find(".ui-slider-tooltip .ttContent").eq(0).text(m(o));}return this;};
