function slider(elemId,info_id,sliderWidth, range1, range2, step) {
	var knobWidth = 27;				// ширина и высота бегунка
	var knobHeight = 41;			// изменяются в зависимости от используемых изображений
	var sliderHeight = 41;			// высота slider'а
	
	var offsX,tmp;					// вспомагательные переменные
	var d = document;
	var isIE = d.all || window.opera;	// определяем модель DOM
	var point = (sliderWidth-knobWidth-3)/(range2-range1);
	// point - количество пикселей на единицу значения
	
	var slider = d.createElement('DIV'); // создаем slider
	slider.id = elemId + '_slider';
	slider.className = 'slider';
	d.getElementById(elemId).appendChild(slider);	
	
	var knob = d.createElement('DIV');	// создаем ползунок
	knob.id = elemId + '_knob';
	knob.className = 'knob';
	knob.innerHTML = '<br><br>';
	slider.appendChild(knob); // добавляем его в документ
	
	knob.style.left = 0;			// бегунок в нулевое значение
	knob.style.width = knobWidth+'px';	
	knob.style.height = knobHeight+'px';
	slider.style.width = sliderWidth+'px';
	slider.style.height = sliderHeight+'px';
	
	var sliderOffset = slider.offsetLeft;			// sliderOffset - абсолютное смещение slider'а
	tmp = slider.offsetParent;		// от левого края в пикселях (в IE не работает)
	while(tmp.tagName != 'BODY') {
		sliderOffset += tmp.offsetLeft;		// тут его и находим
		tmp = tmp.offsetParent;
	}

	if(isIE)						// в зависимости от модели DOM
	{								// назначаем слушателей событий
		knob.onmousedown = startCoord;		
		slider.onclick = sliderClick;		
		knob.onmouseup = endCoord;				
		slider.onmouseup = endCoord;    
		document.onmouseup = endCoord;				
        d.getElementById('cost'+info_id).onchange = getvaluesl;		
		d.getElementById('rcost'+info_id).onchange = getvaluesl;		
		d.getElementById('m_c_'+info_id).onclick = getvaluesl;				
		d.getElementById('r_'+info_id).onclick = getvaluesl;		
		d.getElementById('b_'+info_id).onclick = getvaluesl;		
		d.getElementById('Amount'+info_id).onclick = getvaluesl;
	}
	else {
		knob.addEventListener("mousedown", startCoord, true);		
		slider.addEventListener("click", sliderClick, true);		
		knob.addEventListener("mouseup", endCoord, true);			
		slider.addEventListener("mouseup", endCoord, true);			
		document.addEventListener("mouseup", endCoord, true);			
		d.getElementById('cost'+info_id).addEventListener("change",getvaluesl,true);
		d.getElementById('rcost'+info_id).addEventListener("change",getvaluesl,true);		
		d.getElementById('m_c_'+info_id).addEventListener("click",getvaluesl,true);		
		d.getElementById('r_'+info_id).addEventListener("click",getvaluesl,true);		
		d.getElementById('b_'+info_id).addEventListener("click",getvaluesl,true);		
		d.getElementById('Amount'+info_id).addEventListener("click",getvaluesl,true);
	}


	function getvaluesl()
	{
		var z=parseFloat(d.getElementById('pay_order_'+info_id).value);		
		var ppcmarg=parseFloat(d.getElementById('ppcmarg_'+info_id).value);
		
		var scmarg=parseFloat(d.getElementById('scmarg_'+info_id).value);		
		var act_fee=(d.getElementById('m_c_'+info_id).checked)?1:0;				
		var amo=(d.getElementById('Amount'+info_id).checked)?1:0;
		var cost=parseFloat(d.getElementById('cost'+info_id).value);		
		if(z=='1'){		 
		 var trig=(cost==0)?0:1;
		 var r_cost=parseFloat((ppcmarg*cost/100)*act_fee+(scmarg*cost/100)+(2.5*cost/100)+0.16*trig);
		 var r_cost_net=parseFloat((ppcmarg*cost/100)*act_fee+(scmarg*cost/100));
		 d.getElementById('rcost'+info_id).value=parseFloat((r_cost*getValue()/100)+cost).toFixed(2);
		 d.getElementById('net_'+info_id).value=parseFloat((r_cost_net*getValue()/100)+cost-(scmarg*cost/100)-(1-getValue()/100)*((2.5*cost/100)+0.16*trig)).toFixed(2);
		 knob.style.background="url(/site/knob.gif) no-repeat";
		 $('#m_c_'+info_id).removeAttr('disabled');
		 $('#cost'+info_id).removeAttr('readonly');
		}
		if(z=='2'){
		 var trig=(cost==0)?0:1;
		 var cost=parseFloat(d.getElementById('rcost'+info_id).value);
		 var r_marg=parseFloat(((scmarg+2.5)*cost/100)+0.16*trig);
		 d.getElementById('cost'+info_id).value=parseFloat(cost-r_marg).toFixed(2);
		 d.getElementById('net_'+info_id).value=parseFloat(cost-r_marg).toFixed(2);		 
         knob.style.left = 0;
		 knob.style.background="url(/site/knob_grey.gif) no-repeat";
		 knob.innerHTML="<br><br>";
		 $('#m_c_'+info_id).attr('disabled','disabled');
		 		 $('#rcost'+info_id).removeAttr('readonly');
		}
		if(amo=='1'){
            knob.style.left = 0;
		 knob.style.background="url(/site/knob_grey.gif) no-repeat";
		 knob.innerHTML="<br><br>";
		 $('#rcost'+info_id).attr('readonly','readonly');
		 $('#cost'+info_id).attr('readonly','readonly');
		 $('#cost'+info_id).attr('value','0.00');
		 $('#rcost'+info_id).attr('value','0.00');
         $('#m_c_'+info_id).attr('disabled','disabled');	
         $('#net_'+info_id).attr('value','0.00');		 
		}
	}

// далее подробно не описываю, кто захочет - разберется
//////////////////// функции установки/получения значения //////////////////////////

	function setValue(x)	// установка по пикселям
	{
		if(x < 0) knob.style.left = 0; 
		else if(x > sliderWidth-knobWidth-3) knob.style.left = (sliderWidth-3-knobWidth)+'px';
		else {
			if(step == 0) knob.style.left = x+'px';			
			else knob.style.left = Math.round(x/(step*point))*step*point+'px';
		}
		d.getElementById('info_'+info_id).value = getValue();	// это вывод значения для примера
		knob.innerHTML="<br><br>"+getValue()+"%";
		var z=parseFloat(d.getElementById('pay_order_'+info_id).value);		
		var ppcmarg=parseFloat(d.getElementById('ppcmarg_'+info_id).value);
		var scmarg=parseFloat(d.getElementById('scmarg_'+info_id).value);		
		var act_fee=(d.getElementById('m_c_'+info_id).checked)?1:0;				
		var cost=parseFloat(d.getElementById('cost'+info_id).value);		
		var amo=(d.getElementById('Amount'+info_id).checked)?1:0;
		if(z=='1'){		 
		 var trig=(cost==0)?0:1;
		 var r_cost=parseFloat((ppcmarg*cost/100)*act_fee+(scmarg*cost/100)+(2.5*cost/100)+0.16*trig);		 
		 var r_cost_net=parseFloat((ppcmarg*cost/100)*act_fee+(scmarg*cost/100));
		 d.getElementById('rcost'+info_id).value=parseFloat((r_cost*getValue()/100)+cost).toFixed(2);
		 d.getElementById('net_'+info_id).value=parseFloat((r_cost_net*getValue()/100)+cost-(scmarg*cost/100)-(1-getValue()/100)*((2.5*cost/100)+0.16*trig)).toFixed(2);
		 knob.style.background="url(/site/knob.gif) no-repeat";
		 $('#m_c_'+info_id).removeAttr('disabled');
		 		 $('#cost'+info_id).removeAttr('readonly');
		}
		if(z=='2'){
		 var trig=(cost==0)?0:1;
		 var cost=parseFloat(d.getElementById('rcost'+info_id).value);
		 var r_marg=parseFloat(((scmarg+2.5)*cost/100)+0.16*trig);
		 d.getElementById('cost'+info_id).value=parseFloat(cost-r_marg).toFixed(2);
		 d.getElementById('net_'+info_id).value=parseFloat(cost-r_marg).toFixed(2);		 
         knob.style.left = 0;
		 		 knob.style.background="url(/site/knob_grey.gif) no-repeat";
		 knob.innerHTML="<br><br>";
		 $('#m_c_'+info_id).attr('disabled','disabled');
		 		 $('#rcost'+info_id).removeAttr('readonly');
		}
				if(amo=='1'){
            knob.style.left = 0;
		 knob.style.background="url(/site/knob_grey.gif) no-repeat";
		 knob.innerHTML="<br><br>";
		 $('#rcost'+info_id).attr('readonly','readonly');
		 $('#cost'+info_id).attr('readonly','readonly');
		 $('#cost'+info_id).attr('value','0.00');
		 $('#rcost'+info_id).attr('value','0.00');
		 $('#net_'+info_id).attr('value','0.00');
         $('#m_c_'+info_id).attr('disabled','disabled');		 
		}

	}
		function setValue1(x)	// установка по пикселям
	{
		if(x < 0) knob.style.left = 0; 
		else if(x > sliderWidth-knobWidth-3) knob.style.left = (sliderWidth-3-knobWidth)+'px';
		else {
			if(step == 0) knob.style.left = x+'px';			
			else knob.style.left = Math.round(x/(step*point))*step*point+'px';
		}
		d.getElementById('info_'+info_id).value = getValue();	// это вывод значения для примера
		knob.innerHTML="<br><br>"+getValue()+"%";
		

	}
	function setValue2(x)	// установка по значению
	{
		if(x < range1 || x > range2) alert('Value is not included into a slider range!');
		else setValue((x-range1)*point);

	}

	function getValue() 
	{return Math.round(parseInt(knob.style.left)/point)+range1;}

//////////////////////////////// слушатели событий ////////////////////////////////////

	function sliderClick(e) {	
		var x;
		if(isIE) {
			if(event.srcElement != slider) return; //IE onclick bug
			x = event.offsetX - Math.round(knobWidth/2);
		}	
		else x = e.pageX-sliderOffset-knobWidth/2;
		setValue(x);
		
	}

	function startCoord(e) {				
		if(isIE) {	
			offsX = event.clientX - parseInt(knob.style.left);
			slider.onmousemove = mov;
		}
		else {				
			slider.addEventListener("mousemove", mov, true);
		}
	}
	
	function mov(e)	{
		var x;	
		if(isIE) x = event.clientX-offsX;
		else x = e.pageX-sliderOffset-knobWidth/2;
		setValue(x);
		
	}

	function endCoord()	{
		if(isIE) slider.onmousemove = null;	
		else slider.removeEventListener("mousemove", mov, true);
				if(isIE) slider.onmousemove = null;	
		else slider.removeEventListener("mousemove", mov, true);
				if(isIE) document.onmousemove = null;	
		else document.removeEventListener("mousemove", mov, true);
	}

	// объявляем функции setValue2 и getValue как методы класса
	//this.setValue = setValue2;
	this.getValue = getValue;		
	this.setValue=setValue1(d.getElementById('info_'+info_id).value*3.3);	

	var amo=(d.getElementById('Amount'+info_id).checked)?1:0;
					if(amo=='1'){
            knob.style.left = 0;
		 knob.style.background="url(/site/knob_grey.gif) no-repeat";
		 knob.innerHTML="<br><br>";
		}
		
$(document).ready(function(){
 if(d.getElementById('selcost_'+info_id).value=='rcost'){
           knob.style.left = 0;
		 knob.style.background="url(/site/knob_grey.gif) no-repeat";
		 knob.innerHTML="<br><br>";
		 $('#rcost'+info_id).removeAttr('readonly');
		 $('#cost'+info_id).attr('readonly','readonly');
		 $('#pay_order_'+info_id).attr('value',2);
		 $('#m_c_'+info_id).attr('disabled','disabled');
 }
});	

} // конец класса



