/* Общие функции используемые гридами
 * 
 */

 
function getCurDate(days) {
	days = (days)?days:0;
	var date = new Date(3600*24*days*1000 + Date.parse(new Date))	
	return date.getFullYear()+'-'+((1+(date.getMonth()) < 10)?'0'+(1+date.getMonth()):(1+(date.getMonth())))+'-'+((date.getDate() < 10)?'0'+(date.getDate()):(date.getDate()));
}

function sortTypeFloat(s)
{
	var val = parseFloat(String(s).replace(/,/g, ""));
	if(isNaN(val)) val = 0;
	return val;
}

 
function formatNumber(v, thDelim, decDelim, zerosRight, nullValue, hasBrackets, prefix, suffix)
{
	//return ""+v;
	if(undefined == thDelim)	thDelim = ',';
	if(undefined == decDelim)	decDelim = '.';
	if(undefined == zerosRight)	zerosRight = 2;
	if(undefined == nullValue)	nullValue = '-';
	if(undefined == hasBrackets)	hasBrackets = 0;
	if(undefined == prefix)	prefix = '';
	if(undefined == suffix)	suffix = '';
	if(parseFloat(v) == v)
	{
		if(v==0)
			return prefix+v+suffix;//priceWithClass(nullValue, 'price-null');
		var minus = 0;
		if(v < 0)
			minus = 1;
	}else{
		if(v == "")
		{
			return v;
		}
		return nullValue;
	}

	rz = zerosRight;
	val = v
	while(rz>0)
	{
		val *= 10;
		rz--;
	}
	arr = (""+Math.abs(Math.round(val))).split('').reverse();
	
	while(arr.length <= zerosRight)
	{
		arr.push('0');
	}
	res = "";
	
	th = 0;
	for(i=0; i<arr.length; i++)
	{
		if(zerosRight==0 && i)
		{
			res = decDelim + res;
			th=0;
		}
		else if(zerosRight < 0)
		{
			th++;
			if(th > 2)
			{
				res = thDelim+res;
				th = 0;
			}
		}
		zerosRight--;

		res = arr[i] + res;
	}
	if(minus) {
		if(hasBrackets){
			res = '('+prefix+res+suffix+')';
		}else{
			res = prefix+'-'+res+suffix;
		}
	}
	else
	{
		res = prefix+res+suffix;
	}
	return res;//priceWithClass(res, 'price');
}
/* Параметры numberRenderer:
 * 1 - разделитель разрядов
 * 2 - разделитель дробных
 * 3 - добивать ли нули, чтобы было заданное кол-во знаков после ,
 * 4 - на что менять 0
 * 5 - будут ли отрицательные числа в скобках
 */
function numberRenderer(zerosRight, nullValue, hasBrackets)
{
	return function(v, format){return formatNumber(v, i18n_settings.thousands_divider, i18n_settings.decimal_divider, zerosRight, nullValue, i18n_settings.brackets, format.prefix, format.suffix)}
}
var formatFloatDec4 = numberRenderer(4, '&ndash;', 1);
var formatFloatDec3 = numberRenderer(3, '&ndash;', 1);
var formatFloatDec2 = numberRenderer(2, '&ndash;', 1);
var formatFloatDec1 = numberRenderer(1, '&ndash;', 1);
var formatInt = numberRenderer(0, '&ndash;', 1); 

function formatDate(v,format) {
	return (v)?(new Date(v)).format(format):'';
}
function dateRenderer(){
	return function(v){return formatDate(v, i18n_settings.date_format)}
}
var formaterDate = dateRenderer();

function getCustomNumberFormatter(className) {
	if (className.indexOf('grid_dec_4') != -1) //числа c 4 десятичными знаками
		return formatFloatDec4;
	else if (className.indexOf('grid_dec_3') != -1) //числа c 3 десятичными знаками
		return formatFloatDec3;
	else if (className.indexOf('grid_dec_2') != -1) //числа c 2 десятичными знаками
		return formatFloatDec2;
	else if (className.indexOf('grid_dec_1') != -1) //числа c 1 десятичным знаком
		return formatFloatDec1;
	else if (className.indexOf('grid_int') != -1) //целые числа - сортировка по дефолту
		return formatInt;
	return false;
}

function hasClass(el, className)
{
	return className && (' '+el.className+' ').indexOf(' '+className+' ') != -1;
}
