var TrackBar_class=new Class({_inputLeft:null,_inputRight:null,_elem:null,_elemLeft:null,_elemRight:null,_elemRange:null,_labelLeft:null,_labelRight:null,_limitLeft:null,_limitRight:null,_sliderLeft:null,_sliderRight:null,options:{name:'',inputLeftName:'',inputRightName:'',limitLeft:0,limitRight:10,valueLeft:null,valueRight:null,value:null,sliderLeftSrc:'imgtrackbar/b_l.gif',sliderRightSrc:'imgtrackbar/b_r.gif',dual:1,createHiddenInputs:1,extremumValueToNull:0,decimals:2,step:null,values:[]},initialize:function(options){this.setOptions(options);this._bound={'start':this._start.bindWithEvent(this),'drag':this._drag.bindWithEvent(this),'stop':this._stop.bind(this),'resize':this.update.bind(this)};this.prototype=TrackBar_class;this.prototype.items.push(this)},init:function(){this._createControlElem();this._createHiddenInputs();with(this.options){this._setLabelValue(this._limitLeft,limitLeft);this._setLabelValue(this._limitRight,limitRight);this.update()}window.addListener('resize',this._bound.resize);return this},update:function(){with(this.options){var v=!dual&&value?value:valueLeft;this._setValueRight(dual?valueRight:v);this._setValueLeft(v)}},_createControlElem:function(){document.write('<div id="trackbar'+this.options.name+'"></div>');this._elem=$('trackbar'+this.options.name);var row=new Element('tr').inject(new Element('tbody').inject(new Element('table').inject(this._elem)));this._elemLeft=new Element('td',{'class':'lb'}).inject(row);this._elemRange=new Element('td',{'class':'cb'}).inject(row).setOpacity('.75');this._elemRight=new Element('td',{'class':'rb'}).inject(row);var el=new Element('div').setStyles({position:'relative',width:'100%','text-align':'right','white-space':'nowrap'}).inject(this._elemLeft);this._labelLeft=new Element('span').inject(el).setStyles({position:'absolute','z-index':10});this._limitLeft=new Element('span',{'class':'limit'}).setStyles({'text-align':'left',position:'absolute','z-index':10}).inject(el);this._sliderLeft=new Element('img',{'class':'left-slider',src:this.options.sliderLeftSrc}).inject(el);this._sliderLeft.addEvent('mousedown',this._bound.start);el=new Element('div').setStyles({position:'relative',width:'100%','white-space':'nowrap'}).inject(this._elemRight);this._labelRight=new Element('span').inject(el).setStyles({position:'absolute','z-index':10});this._limitRight=new Element('span',{'class':'limit'}).setStyles({position:'absolute','z-index':10}).inject(el);this._sliderRight=new Element('img',{'class':'right-slider',src:this.options.sliderRightSrc}).inject(el);this._sliderRight.addEvent('mousedown',this._bound.start)},_createHiddenInputs:function(){with(this.options)if(createHiddenInputs){this._inputLeft=new Element('input',{type:'hidden',name:inputLeftName?inputLeftName:dual?name+'[min]':name,value:valueLeft}).injectBefore(this._elem);if(dual)this._inputRight=new Element('input',{type:'hidden',name:inputRightName?inputRightName:name+'[max]',value:valueRight}).injectBefore(this._elem)}},_start:function(event){this.slider=event.target;if(this.slider===this._sliderRight){this.sliderShift=event.page.x-event.target.getLeft()}else if(this.slider===this._sliderLeft){this.sliderShift=event.page.x-event.target.getLeft()-event.target.offsetWidth}this.values={l:this.options.valueLeft,r:this.options.valueRight,v:this.options.value};document.addListener('mousemove',this._bound.drag);document.addListener('mouseup',this._bound.stop);event.stop()},_drag:function(event){var v=(event.page.x-this._elem.getLeft()-this.sliderShift-this._sliderLeft.offsetWidth)/(this._elem.offsetWidth-this._sliderLeft.offsetWidth-this._sliderRight.offsetWidth);v=(this.options.limitRight-this.options.limitLeft)*v+this.options.limitLeft;v=v.toFixed(this.options.decimals).toFloat();if($defined(this.options.step)){v=v/this.options.step;v=Math.round(v)*this.options.step}if(!this.options.dual){this._setValueLeft(v);this._setValueRight(v)}else if(this.slider===this._sliderRight){this._setValueRight(v)}else if(this.slider===this._sliderLeft){this._setValueLeft(v)}event.stop()},_stop:function(){document.removeListener('mousemove',this._bound.drag);document.removeListener('mouseup',this._bound.stop);if(this.values.l!=this.options.valueLeft||this.values.r!=this.options.valueRight||this.values.v!=this.options.value){this.fireEvent('change')}this.slider=null;this.sliderShift=null;this.values=null},_setValueLeft:function(v){with(this.options){this.options.valueLeft=this._checkValue(v,limitLeft,valueRight,limitLeft);if(this._inputLeft)this._inputLeft.value=valueLeft!=null?valueLeft:'';this._setLabelValue(this._labelLeft,valueLeft!=null?valueLeft:limitLeft);this._elemLeft.setStyle('width',this._width(valueLeft==null?limitLeft:valueLeft)+this._sliderLeft.offsetWidth+'px');this._updateRangeWidth()}return this.options.valueLeft},_setValueRight:function(v){with(this.options){this.options.valueRight=this._checkValue(v,valueLeft,limitRight,limitRight);if(this.options.dual){if(this._inputRight)this._inputRight.value=valueRight!=null?valueRight:'';this._setLabelValue(this._labelRight,valueRight!=null?valueRight:limitRight)}this._elemRight.setStyle('width',this._elem.offsetWidth-this._width(valueRight==null?limitRight:valueRight)-this._sliderRight.offsetWidth+'px');this._updateRangeWidth()}return this.options.valueRight},_checkValue:function(v,l,r,e){l=l||this.options.limitLeft;r=r||this.options.limitRight;v=(v==null?null:(v<l?l:(v>r?r:v)));return v==e&&this.options.extremumValueToNull?null:v},_setLabelValue:function(l,v){l.setText($chk(this.options.values[v])?this.options.values[v]:v)},_width:function(value){var pl=(value-this.options.limitLeft)/(this.options.limitRight-this.options.limitLeft);var px=this._elem.offsetWidth-(this._sliderLeft.offsetWidth+this._sliderRight.offsetWidth);return Math.round(pl*px)},_updateRangeWidth:function(){var w=this.options.dual?this._elem.offsetWidth-this._elemRight.getStyle('width').toFloat()-this._elemLeft.getStyle('width').toFloat():0;this._elemRange.setStyle('width',w+'px')}});TrackBar_class.implement(new Events,new Options);TrackBar_class.items=[];var RozetkaTrackBar_class=TrackBar_class.extend({options:{name:'',inputLeftName:'',inputRightName:'',limitLeft:0,limitRight:10,valueLeft:null,valueRight:null,value:null,sliderLeftSrc:'imgtrackbar/b_l.gif',sliderRightSrc:'imgtrackbar/b_r.gif',dual:1,createHiddenInputs:1,extremumValueToNull:0,decimals:2,values:[]},initialize:function(options){this.setOptions(options);this._bound={'start':this._start.bindWithEvent(this),'drag':this._drag.bindWithEvent(this),'stop':this._stop.bind(this),'resize':this.update.bind(this),'set':this._set.bindWithEvent(this),'submit':this._submit.bindWithEvent(this)};this.prototype=TrackBar_class;this.prototype.items.push(this)},_createHiddenInputs:function(){with(this.options)if(createHiddenInputs){this._inputLeft=new Element('input',{type:'hidden',name:inputLeftName?inputLeftName:dual?name+'[min]':name,value:valueLeft}).injectBefore(this._elem);if(dual)this._inputRight=new Element('input',{type:'hidden',name:inputRightName?inputRightName:name+'[max]',value:valueRight}).injectBefore(this._elem)}else if(inputLeftName){this._inputLeft=$(inputLeftName);this._inputLeft.addListener('change',this._bound.set);if(dual){this._inputRight=$(inputRightName);this._inputRight.addListener('change',this._bound.set)}}},_createControlElem:function(){this._elem=$('trackbar'+this.options.name);var row=new Element('tr').inject(new Element('tbody').inject(new Element('table').inject(this._elem)));this._elemLeft=new Element('td',{'class':'lb'}).inject(row);this._elemRange=new Element('td',{'class':'cb'}).inject(row).setOpacity('.75');this._elemRight=new Element('td',{'class':'rb'}).inject(row);var el=new Element('div').setStyles({position:'relative',width:'100%','text-align':'right','white-space':'nowrap'}).inject(this._elemLeft);this._labelLeft=new Element('span').inject(el).setStyles({position:'absolute','z-index':10});this._limitLeft=new Element('span',{'class':'limit'}).setStyles({'text-align':'left',position:'absolute','z-index':10}).inject(el);this._sliderLeft=new Element('img',{'class':'left-slider',src:this.options.sliderLeftSrc}).inject(el);this._sliderLeft.addEvent('mousedown',this._bound.start);el=new Element('div').setStyles({position:'relative',width:'100%','white-space':'nowrap'}).inject(this._elemRight);this._labelRight=new Element('span').inject(el).setStyles({position:'absolute','z-index':10});this._limitRight=new Element('span',{'class':'limit'}).setStyles({position:'absolute','z-index':10}).inject(el);this._sliderRight=new Element('img',{'class':'right-slider',src:this.options.sliderRightSrc}).inject(el);this._sliderRight.addEvent('mousedown',this._bound.start)},_set:function(event){var v=this._inputLeft.value.toFloat();var w=this._inputRight.value.toFloat();if(v){this._setValueLeft(this.roundFloat(v,this.options.decimals))}else{this._setValueLeft(this.options.limitLeft)}if(w){this._setValueRight(this.roundFloat(w,this.options.decimals))}else{this._setValueRight(this.options.limitRight)}},_submit:function(event){with(this.options){this._inputLeft.value=valueLeft==null?'':valueLeft;this._inputRight.value=valueRight==null?'':valueRight}},_setValueLeft:function(v){with(this.options){valueLeft=this._checkValue(v,limitLeft,valueRight,limitLeft);if(this._inputLeft&&valueLeft){this._inputLeft.value=valueLeft}this._elemLeft.setStyle('width',this._width(valueLeft==null?limitLeft:valueLeft)+this._sliderLeft.offsetWidth+'px');this._updateRangeWidth()}return this.options.valueLeft},_setValueRight:function(v){with(this.options){valueRight=this._checkValue(v,valueLeft,limitRight,limitRight);if(this.options.dual){if(this._inputRight&&valueRight)this._inputRight.value=valueRight}this._elemRight.setStyle('width',this._elem.offsetWidth-this._width(valueRight==null?limitRight:valueRight)-this._sliderRight.offsetWidth+'px');this._updateRangeWidth()}return this.options.valueRight},roundFloat:function(num,dec){if(!dec){dec=0}var result=Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);return result}});RozetkaTrackBar_class.implement(new Events,new Options);RozetkaTrackBar_class.items=[];RozetkaTrackBar_class.prototype.options.sliderLeftSrc="http://i.rozetka.ua/design/catalog/filter/trackbar-slider-left.png";RozetkaTrackBar_class.prototype.options.sliderRightSrc="http://i.rozetka.ua/design/catalog/filter/trackbar-slider-right.png";RozetkaTrackBar_class.prototype.options.extremumValueToNull=1;
