function createSlider(args) {
	var sliderPosition, sliderValue, values = null, minV, maxV;
	if (typeof(args.trackStep)!='undefined') {
		values = Array();
		if (typeof(args.minValue)!='undefined' && typeof(args.maxValue)!='undefined') {
			minV = args.minValue; maxV = args.maxValue;
		} else if (typeof(args.scalingArray)=='object' && args.scalingArray.length) {
			minV = 0; maxV = args.scalingArray.length;
		} else {
			alert('Wrong args to createSlider');
			return false;
		}
		for (var n = args.minValue; n <= args.maxValue; n += args.trackStep || 1)
			values.push(n);
	}
	if (parseInt(args.defaultValue) && typeof(args.defaultIndex)=='undefined')
		sliderValue = args.defaultValue;
	else if (typeof(args.defaultIndex)!='undefined') {
		sliderValue = args.scalingArray[args.defaultIndex]['min'][0];
		sliderPosition = args.defaultIndex;
	} else {
		sliderValue = args.minValue;
	}
	new Control.Slider(
		args.sliderHandle,
		args.sliderTrack,
		{
			range: $R(args.minValue,args.maxValue),
			values: values,
			sliderValue: sliderPosition ? sliderPosition : sliderValue,
			onChange:
				function(value) {
					if (args.scalingArray) {
						for (var i = 0; i < args.scalingArray.length; i++)
							if (value >= i && value <= (i + 1))
								value = args.scalingArray[i]['min'][0] + scaleValue(value,args.scalingArray[i]);
					}
					$(args.sliderInfo).value = (args.roundStep) ? round2step(value,args.roundStep) : value;
				},
			onSlide:
				function(value) {
					if (args.scalingArray) {
						for (var i = 0; i < args.scalingArray.length; i++)
							if (value >= i && value <= (i + 1))
								value = args.scalingArray[i]['min'][0] + scaleValue(value,args.scalingArray[i]);
					}
					$(args.sliderInfo).value = (args.roundStep) ? round2step(value,args.roundStep) : value;
				}
		}
	);
	$(args.sliderInfo).value = sliderValue;
}

function round2step (rnum,step) {
	tmp = Math.floor(rnum / step);
	return tmp * step;
}

function createScalingData (scale) {
	var scalingArray = new Array ();
	for (var k = 0; k < scale.length; k++) {
		scalingArray[k] = new Array('min', 'max');
		scalingArray[k]['min'] = new Array();
		scalingArray[k]['max'] = new Array();
		scalingArray[k]['min'][0] = scale[k];
		scalingArray[k]['max'][0] = scale[k+1];
	}
	return scalingArray;
}

function scaleValue (currentValue,scaleArray) {
	var floatPart	= currentValue - Math.floor(currentValue);
	var scaleLength	= scaleArray['max'][0] - scaleArray['min'][0];
	if (currentValue == 0)
		return 0;
	return floatPart == 0 ? scaleLength : Math.floor(floatPart * scaleLength);
}

