/* ---------------------------------
Made by: Nikolai Khilkovsky
E-mail: khilkovn@gmail[dot]com
URL: http://www.himself.pp.ua
--------------------------------- */
var el=new Array;
//		k=0,
//		from=0,
//		to=0,
//		step=0,
//		mask='',
//		From_in='',
//		To_in='';
$j(document).ready(function(){
	$j('.range').each(function(n){
		var	WrStr='',
				k=0,
				el=$j(this),
				from=Number(el.find('div.from > span').text().replace(',','')),
				to=Number(el.find('div.to > span').text().replace(',','')),
				step=Number(el.find('div.step').text()),
				mask=el.find('div.mask').text(),
				From_in=el.find('.input_block span:first').text(),
				To_in=el.find('.input_block span:last').text();
		if ($j.browser.msie && $j.browser.version < 8) {
			mask=mask.replace(/0/gi,'9')
			mask=mask.replace(',','')
			el.find('input').mask(mask,{placeholder:' '});
		}
		else {
			el.find('input').mask(mask,{placeholder:' '});
		};
		setRangeOnGraf(el,from,to,step,mask,From_in,To_in);
		el.find('input').change(function(){
			From_in=el.find('input:first').val();
			To_in=el.find('input:last').val();
			setRangeOnGraf(el,from,to,step,mask,From_in,To_in,n)
		});
		el.find('.range_graf_from').draggable({
			axis: 'x',
			refreshPositions: true,
			cursor: 'w-resize',
			drag: function(event, ui) {setRangeOnInput	(el,from,to,step,mask)},
			stop: function(event, ui) {setRangeOnInputDrop (el,from,to,step,mask)}
		});
		el.find('.range_graf_to').draggable({
			axis: 'x',
			refreshPositions: true,
			cursor: 'w-resize',
			drag: function(event, ui) {setRangeOnInput	(el,from,to,step,mask)},
			stop: function(event, ui) {setRangeOnInputDrop (el,from,to,step,mask)}
		});
	})
});
function setRangeOnGraf(el,from,to,step,mask,From_in,To_in){
	var	elW=el.find('.range_graf:first').width(),
			elS=elW/((to-from)/step),
			rangeP1=0,
			rangeP2=0,
			rangeW=elW;
	From_in=From_in+'';
	To_in=To_in+'';
	From_in=From_in.replace(/[ ,]/gi,"");
	To_in=To_in.replace(/[ ,]/gi,"");
	From_in=Number(From_in);
	To_in=Number(To_in);
	From_in=Math.floor(From_in/step)*step;
	To_in=Math.floor(To_in/step)*step;
	if (From_in<from) {
		From_in=from;
		getWrightString(From_in,mask);
	}
	else if (From_in>To_in) {
		if (From_in>to) {
			From_in=to
			rangeP1=elW
		}
		else {rangeP1=elS*(From_in-from)/step};
		To_in=From_in;
		rangeW=0;
	};
	if (To_in>to) {
		To_in=to;
		getWrightString(To_in,mask);
	};
	getWrightString(From_in,mask);
	el.find('input:first').val(WrStr);
	getWrightString(To_in,mask);
	el.find('input:last').val(WrStr);
	if (To_in<to) {rangeP2=elS*(to-To_in)/step};
	if (rangeW!=0) {
		if (From_in>from) {rangeP1=elS*(From_in-from)/step}
		rangeW=rangeW-rangeP2-rangeP1
	};
	rangeP2=rangeW+rangeP1;
	el.find('.range_graf > .range_graf_from').css('left',rangeP1+'px');
	el.find('.range_graf > .range_graf_to').css('left',rangeP2+'px');
	el.find('.range_graf > .range_selected').css({'left':rangeP1+'px','width':rangeW+'px'});
};
function setRangeOnInput(el,from,to,step,mask){
	var	elW=el.find('.range_graf:first').width(),
			elS=elW/((to-from)/step),
			rangeP1=el.find('.range_graf > .range_graf_from').css('left'),
			rangeP2=el.find('.range_graf > .range_graf_to').css('left'),
			rangeW=el.find('.range_graf > .range_selected').width();
	rangeP1=Number(rangeP1.replace('px',''));
	if (rangeP1<0)
		rangeP1=0;
	rangeP2=Number(rangeP2.replace('px',''));
	if (rangeP2>253)
		rangeP2=253;
	rangeP1=Math.floor(rangeP1/elS)*elS;
	rangeP2=Math.floor(rangeP2/elS)*elS;
	rangeW=rangeP2-rangeP1;
	el.find('.range_graf > .range_selected').css({'left':rangeP1+'px','width':rangeW+'px'})
	From_in=rangeP1/elS*step+from;
	To_in=rangeP2/elS*step+from;
	getWrightString(From_in,mask);
	el.find('input:first').val(WrStr);
	getWrightString(To_in,mask);
	el.find('input:last').val(WrStr)
};
function setRangeOnInputDrop(el,from,to,step,mask){
	var	elW=el.find('.range_graf:first').width(),
			elS=elW/((to-from)/step),
			rangeP1=el.find('.range_graf > .range_graf_from').css('left'),
			rangeP2=el.find('.range_graf > .range_graf_to').css('left'),
			rangeW=el.find('.range_graf > .range_selected').width();
	rangeP1=Number(rangeP1.replace('px',''));
	rangeP2=Number(rangeP2.replace('px',''));
	if (rangeP1<0) {
		rangeP1=0;
		From_in=from;
	}
	else if (rangeP1>rangeP2) {
		if (rangeP1>elW) {
			rangeP1=elW;
			From_in=to;
		};
		rangeP2=rangeP1;
	};
	if (rangeP2>elW) {
		rangeP2=elW;
		To_in=to;
	};
	rangeP1=Math.floor(rangeP1/elS)*elS;
	rangeP2=Math.floor(rangeP2/elS)*elS;
	rangeW=rangeP2-rangeP1;
	el.find('.range_graf > .range_graf_from').css('left',rangeP1+'px')
	el.find('.range_graf > .range_graf_to').css('left',rangeP2+'px')
	el.find('.range_graf > .range_selected').css({'left':rangeP1+'px','width':rangeW+'px'})
	if (rangeP1!=0 && rangeP1!=elW) {
		From_in=rangeP1/elS*step+from;
		To_in=rangeP2/elS*step+from
	};
	getWrightString(From_in,mask);
	el.find('input:first').val(WrStr);
	getWrightString(To_in,mask);
	el.find('input:last').val(WrStr)
};
function getWrightString(str,mask){
	str=Math.floor(str);
	WrStr='';
	str1=str.toString();
	var len_mask=mask.length-1,
			len_str=str1.length-1,
			str=new Array(),
			mask1=new Array();
	k=len_str;
	for (var i=0; i<len_str+1; i++) {str[i]=str1.substr(i,1)};
	for (var i=0; i<len_mask+1; i++) {mask1[i]=mask.substr(i,1)};
	for (var i=len_mask; i>-1; i--) {
		if (mask1[i]=='9' || mask1[i]=='0') {
			if (k>-1) {
				WrStr=str[k]+WrStr;
				k-=1
			}
			else {WrStr=WrStr+' '}
		}
		else {WrStr=mask1[i]+WrStr}
	}
};

