// ОБЩИЕ ФУНКЦИИ И ОБЪЕКТЫ

// Получить int из контрола
function getInt(obj) { return toInt($(obj).attr("value")); }
// Получить float из контрола
function getFloat(obj) { return toFloat($(obj).attr("value").replace(/,/g,".")); }
// Конвертировать всё в int
function toInt(value) { return isNaN(parseInt(value)) ? 0 : parseInt(value); }
// Конвертировать всё в float
function toFloat(value) { return isNaN(parseFloat(value)) ? 0 : parseFloat(value); }
// Минимум
function Мин(a,b) { return (a<b)?a:b; }
// Максимум
function Макс(a,b) { return (a>b)?a:b; }
// Замена в строке
function ReplaceString(s,f,r) { return s.replace(new RegExp(f,"g"),r); }
// Удалить все пробелы
function removeSpaces(s) { return s.replace(/\s+/g, ""); }
// Удалить левые пробелы
function trimLeft(s)  { return s.replace(/^\s+/, "");  }
// Удалить правые пробелы
function trimRight(s) { return s.replace(/\s+$/, "");  }
// Удалить крайние пробелы
function trim(s)      { return trimLeft(trimRight(s)); }
// Округление до указанного кол-ва знаков после запятой
function RN(value, digits) { var k=Math.pow(10,digits); return Math.round(value*k)/k; }

function ТекстДней(value)     { return Падеж(0,value) };
function ТекстМесяцев(value)  { return Падеж(1,value) };
function ТекстЛет(value)      { return Падеж(2,value) };
function ТекстРублей(value)   { return Падеж(3,value) };
function ТекстДолларов(value) { return Падеж(4,value) };
function ТекстЕвро(value)     { return Падеж(5,value) };
function ТекстГЗ(value)       { return Падеж(6,value) };
function ТекстГС(value)       { return Падеж(7,value) };

function Падеж(id,value)
{
//					[*0], [*1], [*2-*4], [*5-*9], [11-14]
	var p = [
						["дней","день","дня","дней","дней"],
						["месяцев","месяц","месяца","месяцев","месяцев",],
						["лет","год","года","лет","лет"],
						["рублей","рубль","рубля","рублей","рублей"],
						["долларов","доллар","доллара","долларов","долларов"],
						["евро","евро","евро","евро","евро"],
						["граммов золота","грамм золота","грамма золота","граммов золота","граммов золота"],
						["граммов серебра","грамм серебра","грамма серебра","граммов серебра","граммов серебра"]
					];
	var val = parseInt(value);
	if (10<val && val<15) { // 11...14
		return p[id][4];
	} else {
		var last = val % 10;
		if (last==0) { // *0
			return p[id][0];
		}
		if (last==1) { // *1
			return p[id][1];
		}
		if (1<last && last<5) { // *2...*4
			return p[id][2];
		}
		if (4<last && last<10) { // *5...*9
			return p[id][3];
		}
	}
	return p[id][0];
}


// ОБЪЕКТЫ ДЛЯ РАБОТЫ С ДЕНЬГАМИ

_НазваниеВалютыRUR = "руб";
_НазваниеВалютыUSD = "долл";
_НазваниеВалютыEUR = "евро";
_НазваниеВалюты1GZ = "гр. золота";
_НазваниеВалюты1GS = "гр. серебра";
_КурсДоллара = CurrencyExchange.usd;
_КурсЕвро    = CurrencyExchange.eur;
_КурсЗолота  = 1;
_КурсСеребра = 1;

function Деньги(КодВалюты, Сумма) // Конструктор объекта ДЕНЬГИ
{
	this.rur = 0;
	this.usd = 0;
	this.eur = 0;
	this.gz  = 0;
	this.gs  = 0;
	this.КурсДоллара = _КурсДоллара;
	this.КурсЕвро    = _КурсЕвро;
	this.КурсЗолота  = _КурсЗолота;
	this.КурсСеребра = _КурсСеребра;
	this.Точность    = 0;
	this.set  = _Деньги_УстановитьЗначение;
	this.get  = _Деньги_КакЧисло;
	this.text = _Деньги_КакТекст;
	this.curr = _Деньги_КакНазвание;
	this.add  = _Деньги_Сложить;
	this.sub  = _Деньги_Вычесть;
	this.mult = _Деньги_Умножить;
	this.div  = _Деньги_Разделить;
	this.set(КодВалюты, Сумма);
}

function _Деньги_КакЧисло(cc) // Числовое значение объекта ДЕНЬГИ
{
	if (cc == "RUR") return this.rur;
	if (cc == "USD") return this.usd;
	if (cc == "EUR") return this.eur;
	if (cc == "1GZ") return this.gz;
	if (cc == "1GS") return this.gs;
}

function _Деньги_КакТекст(cc) // Текстовое значение объекта ДЕНЬГИ
{
	return RN(this.get(cc),this.Точность) + " " + this.curr(cc);
}

function _Деньги_КакНазвание(cc) // Название валюты по коду
{
/*
	if (cc == "RUR") return ТекстРублей(RN(this.rur,0));
	if (cc == "USD") return ТекстДолларов(RN(this.usd,0));
	if (cc == "EUR") return ТекстЕвро(RN(this.eur,0));
	if (cc == "1GZ") return ТекстГЗ(RN(this.gz,0));
	if (cc == "1GS") return ТекстГС(RN(this.gs,0));
*/
	if (cc == "RUR") return _НазваниеВалютыRUR;
	if (cc == "USD") return _НазваниеВалютыUSD;
	if (cc == "EUR") return _НазваниеВалютыEUR;
	if (cc == "1GZ") return _НазваниеВалюты1GZ;
	if (cc == "1GS") return _НазваниеВалюты1GS;
}

function _Деньги_УстановитьЗначение(Код, Сумма)
{
	var cc = "";
	var cv = 0;
	var curr = (""+Сумма).split(" ");
	if (curr.length>1) {
		cv = toFloat(curr[0]);
		cc  = curr[1];
	} else {
		cv = toFloat(curr[0]);
		cc = Код;
	}
	if (cc == "RUR")
	{
		this.rur = cv;
		this.usd = cv / this.КурсДоллара;
		this.eur = cv / this.КурсЕвро;
		this.gz  = cv / this.КурсЗолота;
		this.gs  = cv / this.КурсСеребра;
	}
	if (cc == "USD")
	{
		this.rur = cv * this.КурсДоллара;
		this.usd = cv;
		this.eur = cv * this.КурсДоллара / this.КурсЕвро;
		this.gz  = cv * this.КурсДоллара / this.КурсЗолота;
		this.gs  = cv * this.КурсДоллара / this.КурсСеребра;
	}
	if (cc == "EUR")
	{
		this.rur = cv * this.КурсЕвро;
		this.usd = cv * this.КурсЕвро / this.КурсДоллара;
		this.eur = cv;
		this.gz  = cv * this.КурсЕвро / this.КурсЗолота;
		this.gs  = cv * this.КурсЕвро / this.КурсСеребра;
	}
	if (cc == "1GZ")
	{
		this.rur = cv * this.КурсЗолота;
		this.usd = cv * this.КурсЗолота / this.КурсДоллара;
		this.eur = cv * this.КурсЗолота / this.КурсЕвро;
		this.gz  = cv;
		this.gs  = cv * this.КурсЗолота / this.КурсСеребра;
	}
	if (cc == "1GS")
	{
		this.rur = cv * this.КурсСеребра;
		this.usd = cv * this.КурсСеребра / this.КурсДоллара;
		this.eur = cv * this.КурсСеребра / this.КурсЕвро;
		this.gz  = cv * this.КурсСеребра / this.КурсЗолота;
		this.gs  = cv;
	}
}

function _Деньги_Сложить(curr)
{
	this.rur += curr.rur;
	this.usd += curr.usd;
	this.eur += curr.eur;
	this.gz  += curr.gz;
	this.gs  += curr.gs;
}

function _Деньги_Вычесть(curr)
{
	this.rur -= curr.rur;
	this.usd -= curr.usd;
	this.eur -= curr.eur;
	this.gz  -= curr.gz;
	this.gs  -= curr.gs;
}

function _Деньги_Умножить(curr)
{
	this.rur *= curr.rur;
	this.usd *= curr.usd;
	this.eur *= curr.eur;
	this.gz  *= curr.gz;
	this.gs  *= curr.gs;
}

function _Деньги_Разделить(curr)
{
	this.rur /= curr.rur;
	this.usd /= curr.usd;
	this.eur /= curr.eur;
	this.gz  /= curr.gz;
	this.gs  /= curr.gs;
}


