// Usage: lprintf('test', 'xxx');

var jsLocale = {    
	
	/* Common */
	'Quick search through the table' : 'Быстрый поиск по таблице',
    'BracketInterface add field' : 'Добавить еще одно поле для подсчета',
	'and'			: 'и',
	'in'			: 'в',
	'Mbit'			: 'Мбит',
	's'				: 'с',
	'day case 1'	: 'день',
	'day case 2'	: 'дня',
	'day case 3'	: 'дней',
	'Phone'			: 'Телефон',
	'Phones'		: 'Телефоны',
	'Fax'			: 'Факс',
	'Faxes'			: 'Факсы',
	'E-mail'		: 'Электронная почта',

    'rating 1'		: 'плохо',
    'rating 2'		: 'невнятно',
    'rating 3'		: 'хорошо',
    'rating 4'		: 'отлично',
    'rating 5'		: 'супер!',
    
    /* services/color */
	'Color info'	: 'Информация о цвете %s',
    'Similiar color' : 'Похожий цвет',
    'Similiar colors': 'Похожие цвета',
    'Name' 			: 'Имя',
    'Synonym' 		: 'Синоним',
    'Description'	: 'Описание',
    'Search colour by name or parameters': 'Поиск цвета по названию или параметрам',
    'Close to'		: 'Почти %s',
    'Unknown'		: 'Без названия',
    'colours'		: 'цвета',
    
    /* services/color-compare */
    'absent-he'		: 'отсутствует',
    'weak-he'		: 'слабый',
    'notable-he'	: 'заметный',
    'optimal-he'	: 'оптимальный',
    'high-he'		: 'высокий',
        
    'absent-she'	: 'отсутствует',
    'weak-she'		: 'слабая',
    'notable-she'	: 'заметная',
    'medium-she'	: 'средняя',
    'optimal-she'	: 'оптимальная',
    'high-she'		: 'высокая',
    'strong-she'	: 'сильная',
    
	/* services/dogs */
	'Search breed'	: 'Поиск породы по названию',
	'Alike breed' 	: 'Похожая порода',
	'Alike breeds'	: 'Похожие породы',

	/* services/clothes */
	'The table of sizes'	: 'Таблица размеров',

	/* services/converter */
	'on cross-rate'	: 'По кросс-курсу ',
	'on rate'		: 'По курсу %s на %s %s',

	/* services/measure */
	'wavelength with frequency'	: 'Длина волны с частотой %s %s в %s',
	
	/* services/etiquette */
	'serving'		: 'сервировка',
	'result-article-code': 'Код для вставки картинки и описания',
	'etiquette'     : 'Этикет за столом',
	
	/* services/women-calendar */
	'menstruation'	: 'менструация',
	'ovulation period' :'овуляция',
	'probable PMS'	: 'возможный ПМС',
	'projected'		: 'Прогнозируемая ',
	
	/* services/fitness */
	'exercise'      : 'Упражнение',
	'repeats'		: 'Повторов',
	'rest'			: 'Отдых ',
	'min'			: ' мин.',
	'sec'			: ' сек.',
	'hrs'			: ' ч',
	'training time'	: 'Время тренировки — ',
	'session case 1': ' подход',
	'session case 2': ' подхода',
	'session case 3': ' подходов',
	'times a day'   : ' по 2 раза в день',
	'mass index low'   : 'недостаток в весе',
	'mass index normal': 'норма',
	'mass index less'  : 'избыточный вес',
	'mass index fat 1' : 'ожирение I степени',
	'mass index fat 2' : 'ожирение II степени',
	'mass index fat 3' : 'ожирение III степени',
	
	/* services/clothes */
	'size-ru'       : 'в&nbsp;России<br/>и&nbsp;на&nbsp;Украине',
	'size-us'       : 'в&nbsp;США',
	'size-en'       : 'в&nbsp;Англии',
	'size-eu'       : 'в&nbsp;Европе',
	'size-de'       : 'в&nbsp;Германии',
	'size-fr'       : 'во&nbsp;Франции',
	'size-it'       : 'в&nbsp;Италии',
	'size-growth'    : 'рост (см)',
	'size-neck'     : 'обхват<br/>шеи (см)',
	'size-shoulders': 'ширина<br/>плеч (см)',
	'size-chest'    : 'обхват<br/>груди (см)',
	'size-waist'    : 'обхват<br/>талии (см)',
	'size-hip'      : 'обхват<br/>бедер (см)',
	'size-hand'     : 'длина руки (см)',
	'size-leg'      : 'длина ноги<br/>от талии (см)',
	'size-age'      : 'возраст',
	'size-head'     : 'обхват головы (см)',
	'size in cm'    : 'Мерки в <i>см</i>',
	'size'          : 'размер',
	
	/* services/alcohol */
	'less hour'     : 'менее часа',
	'hrs'           : 'ч',
	'right now'     : 'Только что',
    
	/* money/converterInterface */
	'rate info'		: 'Информация о курсе',

	/* money/vat */
	'vat % of x'	: 'НДС %s%% от %s руб.',

	/* net/net */
	'domain help'	: 'справка о домене',
	'ip help'		: 'справка об IP',
	'server error'	: 'Сервер не найден',
	'domain is free': 'Домен свободен',
	'domain is possibly free' : 'Информация о домене не найдена; возможно, он свободен',

	/* net/speed */
	'detect download speed'	: 'Определяется скорость приема',
	'detect upload speed'	: 'Определяется скорость отдачи',
	'wait a time'			: 'это может занять некоторое время',

	/* net/whoami */
	'flash not set'			: 'Flash плагин не установлен или отключен',

	/* place/ac */
	'plugs and sockets'		: 'Вилки и розетки %s',

	/* place/embassy */
	'Embassy'		: 'Посольство',
	'embassy'		: 'посольство',
	'of russia'		: 'России',
	'embassy-of'	: 'Посольство',
	'russia-embassy': 'Посольство России',
	'in-russia'		: 'в России',
	'embassy-office-consular':	'Консульский отдел',
	'embassy-office-embassy':	'Канцелярия посольства',
	'embassy-office-visas':		'Визовый центр',
	
	/* place/distance */
	'drive-distance': 'Путь по дорогам',
	'km'			: ' км',
    'distance'      : 'Это расстояние',
    'light'         : 'свет',
    'overcome'      : 'преодолеет за',
    'sound'         : 'звук',
    'aircraft'      : 'самолёт',
    'walk'          : 'пешком',
    'bicycle'       : 'на велосипеде',
    'sapsan'        : 'на «Сапсане»',
    'us'            : 'мкс',
    'ms'            : 'мс',
    's'             : 'сек',
    'min'           : 'мин.',
    'h'             : 'ч',

	/* time/calendar */
	'calendar'				: 'календарь',
	'Holidays'				: 'Праздники',
	'holiday in month'		: 'Праздник в этом месяце',
	'holidays in month'		: 'Праздники в этом месяце',
	'no holidays in month'	: 'Праздников в этом месяце нет',
	'no holidays'			: 'Праздников нет',
	'memorials'				: 'Памятные даты',
	'memorial in month'		: 'Памятная дата в этом месяце',
	'memorials in month'	: 'Памятные даты в этом месяце',
	'no memorials in month'	: 'Памятных дат в этом месяце нет',
	'no memorials'			: 'Памятных дат нет',
	'on calendar prep'		: 'по ',
	'on calendar after'		: ' календарю',
	'on calendar bahai prep'	: 'по календарю ',
	'on calendar bahai after'	: '',
	'calendar link text'	: '%s %s %s %s %s%s%s',
	
	/* time/days-count */
	'day after'	: '-й день после ',
	'comes'		: 'наступит ',
	'came'		: 'наступил ',
	'before'	: 'До',
	'passed'	 : 'прошел ',
	'passed-mult': 'прошло ',
	'day'		: ' день',
	'days-gen'	: ' дня',
	'days'		: ' дней',
	'remain'	 : 'остался ',
	'remain-mult': 'осталось ',
	'from'		: 'С ',
	'from-o'	: 'Со ',
	'year'		: ' года',
	'between'   : 'Между',
	
	/* measure/numbers */
	'digits'		: ' цифрами',
	'notation'		: ' системе счисления',
	'converter'		: 'Конвертер ',
	'numbers'		: ' чисел',
	
	/* blogs/personal */
	'my blog rating'    : 'Мой рейтинг блогов',
		
	/* place/distance */
	'elevation' : 'Высота (м)',
	
	/* measure/hex */
	'radix'        : '-чных',
	'radix system' : '-чной системе счисления',

    'dummy'	:''
};

var jsLocaleUnit = {
    day  : ['день', 'дня', 'дней'],
    year : ['год', 'года', 'лет'],
    month: ['месяц', 'месяца', 'месяцев'],
    week : ['неделя', 'недели', 'недель'],
    hour : ['час', 'часа', 'часов'],
    'hour ago': ['час назад', 'часа назад', 'часов назад'],
    horse: ['лошадь', 'лошади', 'лошадей'],
    rub  : ['рубль', 'рубля', 'рублей'],
    cigarette : ['сигарету', 'сигареты', 'сигарет'],
    
    dummy: ''
}

var locale_months_genitive = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
var locale_months_nominative = ['январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь']
var locale_months_full = locale_months_genitive;

function ordinal_number(i) {
    return i;
}

String.prototype.number = function (roundValue) 
{
    function num (n) { return n.replace('-','–').replace('.',',') }
    
    var n = typeof roundValue != 'undefined' && !isNaN(roundValue) 
        ? parseFloat(this).toFixed(roundValue).toString()
        : this;
    
    if (Math.abs(parseFloat(n)) < 10000) return num (n);
       
    if (n.substring(0,1) == '-')
    {
        var sign = '-';
        n = n.substr(1);
    }    
    
    var int_frac = n.split('.'),
        frac = int_frac[1];
        
    n = int_frac[0];
    
    var a = [];         
    while (n)
    {
        a.push(
            n.substr(n.length < 3 ? 0 : n.length - 3, 3)
        );
        n = n.substring(0, n.length - 3);        
    }
    
    return num ( 
        (sign ? sign : '') + a.reverse().join(' ') + (frac ? '.' + frac : '')
    );
}

Number.prototype.number = function (roundValue) {
    return this.toString().number(roundValue)
}

String.prototype.declansion = function (unit)
{
    return parseFloat(this).declansion (unit);
}
Number.prototype.declansion = function (unit)
{
    return UnitCase (unit, this);
}

function UnitCase (unitStr, num) //Array of word cases for count 1, 2, 5
{
    if (!jsLocaleUnit[unitStr]) return '';
    
    units = jsLocaleUnit[unitStr];
    num = Math.abs(num);
    
    if (num - Math.floor(num)) 
        return units[1];
    
	num %= 100;
	if ((11 <= num) && (num <= 19))
		return units[2];
	num %= 10;
	if (num == 1)
		return units[0];			
	if ((2 <= num) && (num <= 4))
		return units[1];
	return units[2];
}

