if (!Bs_Objects)
	var Bs_Objects = []

function Bs_Slider(theFieldnamePrefix) {
	if (document.getElementById('disable_slider').value == 0)
		this._disabled = false
	else
		this._disabled = true
//-------------------------------------------------------------------------------------------------------------------------------
	this._constructor = function(theFieldnamePrefix)
	{
	    this._id = Bs_Objects.length
	    Bs_Objects[this._id] = this
	    this._objectId = "Bs_Slider_"+this._id
	    this.objectName = this._objectId
	    if (typeof(theFieldnamePrefix) == 'string')
		{
	      	this.fieldName  = theFieldnamePrefix + '_value'
	      	this.fieldName2 = theFieldnamePrefix + '2_value'
	      	this.objectName = theFieldnamePrefix
	    }
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.render = function(tagId)
	{
    	this._valueInternal = this.valueDefault
    	this._valueInternal2 = this.valueDefault2
	    this._containerId = 'co' + tagId
	    this._handleId = 'po' + tagId
	    this._slideBarId = 'bar'  + tagId
	    this._colorbarId = 'cb'   + tagId
    
    	var divWidth = this.width
    	var divHeight = this.height
   
    
    	var out = new Array()
    	var outI = 0
    	var localOffset = 5
    
    	//incepe creearea div-ului ce contine dlider-ul de pret
    	out[outI++] = '<div id="' + this._containerId + '" style="position:relative;">'
		out[outI++] = '<div style="position:absolute; left:' + this.moveX + '; top:' + this.moveY + ';">'
		
		//butonul din stanga
    	out[outI++] = '<div style="cursor:pointer; position:absolute; display:none; z-index:1010;" id="' + this._handleId + '">'
    	out[outI++] = '<img name="poImg' + tagId + '" src="' + this._sliderImgSrc + '" border=0 width=' + this._sliderImgWidth + ' height=' + this._sliderImgHeight + '>'
    	out[outI++] = '</div>'
    
		//butonul din dreapta
	    out[outI++] = '<div style="cursor:pointer; position:absolute; display:none; z-index:1009;" id="' + this._handleId + '2">'
  	  	out[outI++] = '<img name="poImg' + tagId + '2" src="' + this._sliderImgSrc2 + '" border=0 width=' + this._sliderImgWidth2 + ' height=' + this._sliderImgHeight2 + '>'
    	out[outI++] = '</div>';
		
    	//distanta colorata dintre cele doua butoane
      	out[outI++] = '<div id="' + this._colorbarId + '" style="position:absolute; z-index:1005; width:0; background-color:' + this.colorbar['color'] + ';'
		out[outI++] = ' left:' + (localOffset + this.colorbar['offsetLeft']) + '; margin-top:' + this.colorbar['offsetTop'] + 'px; height:' + this.colorbar['height'] + '; filter:alpha(opacity=50); opacity: 0.5; -moz-opacity: 0.5;    ">'
      	out[outI++] = '<span style="line-height:5px;">*</span></div>'
      	
		var tmpLeft =  localOffset;
    	//bara de pret
    	out[outI++] = '<div id="' + this._slideBarId + '" '
		out[outI++] = ' style="position:absolute; top:0; width:' + divWidth + 'px; height: ' + divHeight + 'px; clip:rect(0 ' + divWidth + '  ' + divHeight + ' 0);'
     	out[outI++] = ' background: transparent url(' + this._bgImgSrc + ') ' + this._bgImgRepeat + ';"></div>'
		out[outI++] = '</div>'
		
    	//terminare
    	out[outI++] = '</div>'

     	localOffset += this.width
    	
    	document.getElementById(tagId).innerHTML = out.join('')
		
	    this._containerObj = document.getElementById(this._containerId)
	    this._slideBarObj = document.getElementById(this._slideBarId)
	    this._handleObj = document.getElementById(this._handleId)
	    this._colorbarObj = document.getElementById(this._colorbarId)

	    this._posSlideStart = getDivLeft(this._slideBarObj)
	    this._slideWidth    = this.width - this._sliderImgWidth
	    this._posSlideEnd   = this._posSlideStart + this._slideWidth

	    this._currentRelSliderPosX = this._posSlideStart

		if (this.valueDefault > this.minVal)
		{
      		var hundertPercent = this.maxVal - this.minVal
      		var myPercent = (this.valueDefault-this.minVal) * 100 / hundertPercent
      		this._currentRelSliderPosX += (myPercent * this._slideWidth / 100)
    	}
	
		this._handleObj.style.left = this._currentRelSliderPosX
    	this._handleObj.style.display = 'block'
    
    	temp = attachMouseDrag(this._handleObj,this.slideStart,null,this.slideMove,null,this.slideEnd,null,null,null)
    	temp = temp.linkCtrl(getDivImage('', 'poImg' + tagId))
    	this.ctrl = temp
    	this.ctrl.sliderObj = this
		this.ctrl.knobId = 1
		
    	var x = getDivLeft(this._handleObj)
    	var y = getDivTop(this._handleObj)
    	y = 0
    	
      	this.ctrl.minX = this._posSlideStart
      	this.ctrl.maxX = this._posSlideEnd
      	this.ctrl.minY = y
		this.ctrl.maxY = y
		
	    this._handleObj2 = document.getElementById(this._handleId + '2')
	    

			
	    this._slideWidth2    =  this.width - this._sliderImgWidth2
	    this._posSlideEnd2   = this._posSlideStart + this._slideWidth2
	    
	    this._currentRelSliderPosX2 = this._posSlideStart
	    if (this.valueDefault2 > this.minVal2)
		{
	      	var hundertPercent = this.maxVal2 - this.minVal2
	      	var myPercent = (this.valueDefault2-this.minVal2) * 100 / hundertPercent
	      	this._currentRelSliderPosX2 += (myPercent * this._slideWidth2 / 100)
	    }
			
		this._handleObj2.style.left = this._currentRelSliderPosX2
	    this._handleObj2.style.display = 'block'
	    
	    temp2 = attachMouseDrag(this._handleObj2,this.slideStart,null,this.slideMove,null,this.slideEnd,null,null,null)
	    temp2 = temp2.linkCtrl(getDivImage('', 'poImg' + tagId + '2'))

		this.ctrl2 = temp2
	    this.ctrl2.sliderObj = this
		this.ctrl2.knobId = 2
			
	    var x = getDivLeft(this._handleObj2)
	    var y = getDivTop(this._handleObj2)
	    y = 0
	   
	    this.ctrl2.minX = this._posSlideStart
	    this.ctrl2.maxX = this._posSlideEnd2
	    this.ctrl2.minY = y
		this.ctrl2.maxY = y
		
    	this._updateColorbar(this._currentRelSliderPosX, 1)
    	this._updateColorbar(this._currentRelSliderPosX2, 2)
	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.drawInto = function(tagId)
  	{
    	this.render(tagId)
		if (this._disabled)
			this.setDisabled(true)
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.attachEvent = function(trigger, yourEvent)
  	{
    	if (typeof(this._attachedEvents) == 'undefined')
      		this._attachedEvents = new Array()
    
    	if (typeof(this._attachedEvents[trigger]) == 'undefined')
      		this._attachedEvents[trigger] = new Array(yourEvent)
     	else
      		this._attachedEvents[trigger][this._attachedEvents[trigger].length] = yourEvent
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.hasEventAttached = function(trigger)
	{
    	return (this._attachedEvents && this._attachedEvents[trigger]);
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.fireEvent = function(trigger)
	{
    	if (this._attachedEvents && this._attachedEvents[trigger])
		{
      		var e = this._attachedEvents[trigger];
      		if ((typeof(e) == 'string') || (typeof(e) == 'function'))
        		e = new Array(e)
      		for (var i=0; i<e.length; i++)
        		if (typeof(e[i]) == 'function')
          			e[i](this)
				else if (typeof(e[i]) == 'string')
          			eval(e[i])
    	}
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.attachOnChange = function(functionName)
	{
    	this.eventOnChange = functionName
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.setSliderIcon = function(imgName, width, height)
  	{
    	this._sliderImgSrc    = imgName
    	this._sliderImgWidth  = width
    	this._sliderImgHeight = height
  	}
//-------------------------------------------------------------------------------------------------------------------------------
	this.setSliderIcon2 = function(imgName, width, height)
	{
    	this._sliderImgSrc2    = imgName
    	this._sliderImgWidth2  = width
    	this._sliderImgHeight2 = height
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.setBackgroundImage = function(src, repeat, cssStyle)
  	{
		this._bgImgSrc        = src
    	this._bgImgRepeat     = repeat
		this._bgImgCssStyle   = cssStyle
	}
//-------------------------------------------------------------------------------------------------------------------------------
	this.setDisabled = function(b)
	{
		if (typeof(b) == 'undefined')
			b = !this._disabled

		if(b)
		{
			var filter = 'progid:DXImageTransform.Microsoft.BasicImage(grayScale=1); progid:DXImageTransform.Microsoft.BasicImage(opacity=0.5)'
			var cursor = 'default'
		}
		else
		{
			var filter = null;
			var cursor = 'hand'
		}

		var t = new Array(
			this._containerId,
			this._valueFieldId,
			this._slideBarId, this._colorbarId, this._handleId,
			this._valueFieldId + '2',
			this._colorbarId + '2',
			this._handleId + '2'
		);

		for (var i=0; i<t.length; i++)
		{
			var elm = document.getElementById(t[i])
			if (elm != null)
				elm.style.filter = filter
		}
		var elm = document.getElementById(this._valueFieldId)
		if (elm != null)
			elm.disabled = b

		this._disabled = b
	}
//-------------------------------------------------------------------------------------------------------------------------------
	this.getSliderPos = function(knobId)
	{
		if (typeof(knobId) == 'undefined') knobId = 1
		if (knobId == 1)
		{
	    	var absLeng = getDivLeft(this.ctrl.div) - this.ctrl.minX
  	  		var absRang = this.maxVal - this.minVal
  	  		return (absLeng * absRang/this._slideWidth) + this.minVal
		}
		else
		{
	    	var absLeng = getDivLeft(this.ctrl2.div) - this.ctrl2.minX
  	  		var absRang = this.maxVal2 - this.minVal2
  	  		return (absLeng * absRang/this._slideWidth) + this.minVal2
		}
  	}
//-------------------------------------------------------------------------------------------------------------------------------
	this.onChangeBySlide = function(ctrl)
	{
    	if (this._disabled) return
    	var newPos = this._getNewLocationFromCursor(ctrl)
    	var valByPos = this._getValueByPosition(newPos)
    	var val = this._roundToGrid(valByPos, ctrl.knobId)
		var valInternal = (ctrl.knobId == 1) ? this._valueInternal : this._valueInternal2
    	if (val != valInternal)
		{
			newPos = this._getPositionByValue(val, ctrl.knobId);
      		if (ctrl.knobId == 1)
				this._valueInternal = val
			else
				this._valueInternal2 = val
		
      		this.updateHandle(newPos, ctrl.knobId)
      		this.updateValueField(val, ctrl.knobId)
     		this.updateValueText(val, ctrl.knobId)
      		this._updateColorbar(newPos, ctrl.knobId)
      		if ('undefined' != typeof(this.eventOnChange))
				this.eventOnChange(this, val, newPos, ctrl.knobId)
      		this.fireEvent('onChange')
    	}
	}
//-------------------------------------------------------------------------------------------------------------------------------
  this.setValue = function(val, knobId) {
		if (typeof(knobId) == 'undefined')
			knobId = 1

		val = this._roundToGrid(val, knobId)
    	var newPos = this._getPositionByValue(val, knobId)
		var valInternal = (knobId == 1) ? this._valueInternal : this._valueInternal2

		if (val != valInternal)
		{
			if (knobId == 1)
				this._valueInternal = val
			else
				this._valueInternal2 = val
				
      		this.updateHandle(newPos, knobId)
      		this._updateColorbar(newPos, knobId)

			  if ('undefined' != typeof(this.eventOnChange))
				this.eventOnChange(this, val, newPos, knobId)

			  this.fireEvent('onChange')
      		this.updateValueField(val, knobId)
      		this.updateValueText(val, knobId)
    	}
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this._updateColorbar = function(newPos, knobId)
	{
		var k = ((typeof(knobId) == 'undefined') || (knobId == 1) || ((typeof(this.colorbar) != 'undefined') && ((typeof(this.colorbar.type) != 'undefined') || (this.colorbar.type == 'between')))) ? '' : '2'

		if (this['_colorbarObj'+k])
		{
			if ((typeof(this.colorbar.type) != 'undefined') && (this.colorbar.type == 'between'))
			{
				var left  = this._getPositionByValue(this._valueInternal,  1)
				var right = this._getPositionByValue(this._valueInternal2, 2)
	      		this['_colorbarObj'+k].style.left  = left + this.colorbar.offsetLeft
	      		this['_colorbarObj'+k].style.width = right - left
			}
			else
			{
	      		var newWidth = newPos + this['colorbar'+k]['widthDifference']
	      		if (newWidth < 0) newWidth = 0
				if (k == '2')
				{
					var invertedWidth = this.width - newWidth
					if (invertedWidth < 0) invertedWidth = 0
		      		this['_colorbarObj'+k].style.width = invertedWidth

					if (typeof(this.colorbar2['offsetLeft']) != 'undefined')
						newWidth += this.colorbar2['offsetLeft']

					this['_colorbarObj'+k].style.left  = newWidth
				}
				else
		      		this['_colorbarObj'+k].style.width = newWidth
			}

			if (typeof(this['colorbar'+k]['color2']) != 'undefined')
			{
				var percent  = this.getValueInPercent(knobId)
				var newColor = mixColor(this['colorbar'+k]['color'], this['colorbar'+k]['color2'], percent)
				document.getElementById(this._colorbarId+k).style.backgroundColor = newColor
			}
    	}
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this._getValueByPosition = function(pos)
	{
		pos -= this.ctrl.minX
		var hundertPercent = this.ctrl.maxX - this.ctrl.minX
    	var myPercent = pos / hundertPercent
    	var val = this.minVal + ((this.maxVal - this.minVal) * myPercent)
    	return val
	}
//-------------------------------------------------------------------------------------------------------------------------------
	this._getPositionByValue = function(val, knobId)
	{
		var k = ((typeof(knobId) == 'undefined') || (knobId == 1)) ? '' : '2'
    	val = val - this['minVal'+k];
    	var hundertPercent = this['maxVal'+k] - this['minVal'+k]
    	var myPercent = val / hundertPercent
	    var pos = this['ctrl'+k].minX + ((this['ctrl'+k].maxX - this['ctrl'+k].minX) * myPercent)
		if (pos < this['ctrl'+k].minX)
			pos = this['ctrl'+k].minX
		else if (pos > this['ctrl'+k].maxX)
			pos = this['ctrl'+k].maxX
    	return pos
  }
//-------------------------------------------------------------------------------------------------------------------------------
  	this._roundToGrid = function(val, knobId)
	{
    	val = parseFloat(val)
    	if (isNaN(val))
			return this.minVal

		val = Math.round(val / this.valueInterval) * this.valueInterval
    	val = Math.round(val*10000)/10000

		if (val < this.minVal) val = this.minVal
    	if (val > this.maxVal) val = this.maxVal

		if ((typeof(knobId) == 'undefined') || (knobId == 1))
		{
			if (val >= this._valueInternal2)
			{
				val = this._valueInternal2 - this.valueInterval
			    if (val < this.minVal)
					val = this.minVal
			}
		}
		else
		{
			if (val <= this._valueInternal)
			{
				val = this._valueInternal + this.valueInterval2
			    if (val > this.maxVal2)
					val = this.maxVal2
			}
		}
    	return val
	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this._getNewLocationFromCursor = function(ctrl)
	{
		if (ctrl.knobId == 1) {
	  	  	var ox = this._posEventSlideStartX
		    var oy = this._posEventSlideStartY
			var posObjSlideStartX = this._posObjSlideStartX
			var posObjSlideStartY = this._posObjSlideStartY
		}
		else
		{
  	  		var ox = this._posEventSlideStartX2
	    	var oy = this._posEventSlideStartY2
			var posObjSlideStartX = this._posObjSlideStartX2
			var posObjSlideStartY = this._posObjSlideStartY2
		}

        var t = ctrl.pageX - ox;
        var x = parseInt(posObjSlideStartX) + t
        if (x > ctrl.maxX) x = ctrl.maxX
        if (x < ctrl.minX) x = ctrl.minX
        return x
  	}
//-------------------------------------------------------------------------------------------------------------------------------
	this.updatePointer = function(newPos){
		this.updateHandle(newPos);
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.updateHandle = function(newPos, knobId)
	{
		if ((typeof(knobId) == 'undefined') || (knobId == 1))
		{
			this._currentRelSliderPosX = newPos
	  	  	this.ctrl.div.style.left   = newPos
		}
		else
		{ //2
			this._currentRelSliderPosX2 = newPos
	  	  	this.ctrl2.div.style.left   = newPos
		}
    	return
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.updateValueField = function(val, knobId)
	{
		var k = ((typeof(knobId) == 'undefined') || (knobId == 1)) ? '' : '2'
    	if (this['_valueFieldObj'+k])
      		this['_valueFieldObj'+k].value = val
	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.updateValueText = function(val, knobId)
	{
		var k = ((typeof(knobId) == 'undefined') || (knobId == 1)) ? '' : '2'
    	if (this['_valueTextObj'+k])
      		this['_valueTextObj'+k].innerHTML = val
	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.slideMove = function(ctrl, client)
	{
    	ctrl.sliderObj.onChangeBySlide(ctrl)
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.slideStart = function(ctrl, client)
	{
		if (ctrl.knobId == 1)
		{
			ctrl.sliderObj._handleObj.style.zIndex += 2
		    ctrl.sliderObj._posEventSlideStartX = ctrl.startX
		    ctrl.sliderObj._posEventSlideStartY = ctrl.startY
		    ctrl.sliderObj._posObjSlideStartX   = ctrl.sliderObj._handleObj.style.left
		    ctrl.sliderObj._posObjSlideStartY   = ctrl.sliderObj._handleObj.style.top
    	}
		else
		{
			ctrl.sliderObj._handleObj2.style.zIndex += 2
		    ctrl.sliderObj._posEventSlideStartX2 = ctrl.startX
		    ctrl.sliderObj._posEventSlideStartY2 = ctrl.startY
		    ctrl.sliderObj._posObjSlideStartX2   = ctrl.sliderObj._handleObj2.style.left
		    ctrl.sliderObj._posObjSlideStartY2   = ctrl.sliderObj._handleObj2.style.top
		}
    	var pos = ctrl.sliderObj.getSliderPos(ctrl.knobId)
    	ctrl.sliderObj.setValue(pos, ctrl.knobId)
    
    	if ('undefined' != typeof(ctrl.sliderObj.slideStartCB))
      		ctrl.sliderObj.slideStartCB(ctrl.sliderObj, ctrl.sliderObj.getValue(), pos)
  	}
//-------------------------------------------------------------------------------------------------------------------------------
  	this.slideEnd = function(ctrl, client)
	{
		if (this._disabled) return;
		if (ctrl.knobId == 1)
			ctrl.sliderObj._handleObj.style.zIndex -= 2
		else
			ctrl.sliderObj._handleObj2.style.zIndex -= 2
			
    	var pos = ctrl.sliderObj.getSliderPos();
	
    	if ('undefined' != typeof(ctrl.sliderObj.slideEndCB))
      		ctrl.sliderObj.slideEndCB(ctrl.sliderObj, ctrl.sliderObj.getValue(), pos)

		min_val = document.getElementById('slider1knob1').value.replace(" lei", "")
		max_val = document.getElementById('slider1knob2').value.replace(" lei", "")
		priceid = min_val + '-' + max_val;
		depid = document.getElementById('depid').value
		catid = document.getElementById('catid').value
		colid = document.getElementById('colid').value
		sizeid = document.getElementById('sizeid').value
		brdid = document.getElementById('brdid').value
		celid = document.getElementById('celid').value
		styid = document.getElementById('styid').value

		if (depid!=0) text = "?DepartmentID="+depid
		if (catid!=0) text += "&CategoryID="+catid
		if (colid!=0) text += "&ColorID="+colid
		if (sizeid!=0) text += "&SizeID="+sizeid
		if (brdid!=0) text += "&BrandID="+brdid
		if(parseInt(min_val) == parseInt(document.getElementById('slider_min_value').value) && parseInt(max_val) == parseInt(document.getElementById('slider_max_value').value))
			text += ""
		else
			text += "&PriceID="+priceid
		if (celid!=0) text += "&CelebrityID="+celid
		if (styid!=0) text += "&StyleID="+styid

		if(parseInt(min_val) != parseInt(document.getElementById('slider_selected_min_value').value) || parseInt(max_val) != parseInt(document.getElementById('slider_selected_max_value').value))
			document.location.href = document.location.pathname + text
	}
//-------------------------------------------------------------------------------------------------------------------------------
	this._constructor(theFieldnamePrefix)
}


