function getTax(array, value)
{
	var min = 0;
	for (var q = 0; q < array.length; q++)
	{
		if ((min < value) && (value <= array[q][0]))
			return array[q][1];
		min = array[q][0];
	}
	if (value > min)
		return array[array.length-1][1];
	else
		return array[0][1];
}

function getTax4cash(wmInfo, cashCours)
{
	var cashTaxArray = [];
	for (var q = 0; q < wmInfo.proc.length - 1; q++)
	{
		var item = wmInfo.proc[q];
		var tax = proc(item[0], wmInfo.proc[q + 1][1]);
		cashTaxArray.push([(item[0] + tax) * wmInfo.cours / cashCours, item[1]]);
	}
	cashTaxArray.push(wmInfo.proc[q])
	return cashTaxArray;
}

function getTax4cash2(wmInfo, cashCours)
{
	var cashTaxArray = [];
	for (var q = 0; q < wmInfo.proc.length - 1; q++)
	{
		var item = wmInfo.proc[q];
		var tax = proc(item[0], wmInfo.proc[q + 1][1]);
		cashTaxArray.push([(item[0] - tax) * wmInfo.cours / cashCours, item[1]]);
	}
	cashTaxArray.push(wmInfo.proc[q])
	return cashTaxArray;
}

function buyWm(value, wmId, cashId)
{
	value = value.toFloat();
	if (isNaN(value))
		value = 0;
	var taxProc = getTax(wmConfig.sell[wmId].proc, value);
	var tax = proc(value, taxProc);
	document.getElementById('buy_proc').innerHTML = taxProc;
	if (wmConfig.buy[wmId].mid == cashId)
		var c = cashConfig[cashId].sellCours;
	else
		var c = cashConfig[cashId].buyCours;
	return round((value + tax) * wmConfig.sell[wmId].cours / c);
}

function buyWmFromCash(cashValue, cashId, wmId)
{
	value = cashValue.toFloat();
	if (isNaN(value))
		value = 0;
	var taxProc = getTax(getTax4cash(wmConfig.sell[wmId], cashConfig[cashId].sellCours), value);
	document.getElementById('buy_proc').innerHTML = taxProc;
	var i = 1 + taxProc * 0.01;
	var tax = proc(value, taxProc) / i;
	return round((value - tax) / wmConfig.sell[wmId].cours * cashConfig[cashId].sellCours);
}

function sellWm(value, wmId, cashId)
{
	value = value.toFloat();
	if (isNaN(value))
		value = 0;
	var taxProc = getTax(wmConfig.buy[wmId].proc, value);
	var tax = proc(value, taxProc);
	document.getElementById('sell_proc').innerHTML = taxProc;
	if (wmConfig.buy[wmId].mid == cashId)
		var c = wmConfig.sell[wmId].cours;
	else
		var c = wmConfig.buy[wmId].cours;
	return round((value - tax) * c / cashConfig[cashId].sellCours);
}

function sellWmFromCash(cashValue, cashId, wmId)
{
	value = cashValue.toFloat()
	if (isNaN(value))
		value = 0;
	var taxProc = getTax(getTax4cash2(wmConfig.buy[wmId], cashConfig[cashId].buyCours), value);
	document.getElementById('sell_proc').innerHTML = taxProc;
//	$('out').innerHTML = getTax4cash2(wmConfig.buy[wmId], cashConfig[cashId].buyCours);
	var i = 1 - taxProc * 0.01;
	var tax = proc(value, taxProc) / i;
	return round((value + tax) / wmConfig.buy[wmId].cours * cashConfig[cashId].buyCours);
}

function round(num)
{	return Math.round((num) * 100) / 100; }

function proc(sum, proc)
{ return sum / 100 * proc; }

function initCalc()
{
	var form = document.buy;
	var elSelect = form.sell_cur;
	for (var wmId in wmConfig.money)
	{
		var elOption = new Element('option');
		elOption.value = wmId;
		elOption.innerHTML = wmConfig.money[wmId];
		elSelect.appendChild(elOption);
	}
	elSelect.onchange = function()
	{
		document.buy.sell.onkeyup();
		//$('pursename').innerHTML = wmConfig.acname[this.value];
	}
	var elSelect = form.buy_cur;
	for (var cashId in cashConfig)
	{
		var elOption = new Element('option');
		elOption.value = cashId;
		elOption.innerHTML = cashConfig[cashId].name;
		elSelect.appendChild(elOption);
	}	
	elSelect.onchange = function()
	{ document.buy.sell.onkeyup(); }
	form.sell.onkeyup = function()
	{
		var val = buyWm(this.value, document.buy.sell_cur.value, document.buy.buy_cur.value);
		document.buy.buy.value =  val.round();
	}
	form.buy.onkeyup = function()
	{
		var val = buyWmFromCash(this.value, document.buy.buy_cur.value, document.buy.sell_cur.value);
		document.buy.sell.value = val.round();
	}
	form.onsubmit = function()
	{
		var sell = this.sell.value.toInt();

/*		if (pageid == 32 && this.buy_cur.value == '1')
		{
			alert("обмен временно недоступен, свяжитесь с администратором");
			return false;
		}
*/

		if (isNaN(sell)) sell = 0;
		if (sell == 0)
		{
			alert('Введите сумму');
			this.sell.focus();
			return false;
		}
		var units = wmConfig.money[this.sell_cur.value];
		var min = wmConfig.sell[this.sell_cur.value].min;
		if (sell < min)
		{
			alert('Сумма не должна быть меньше ' + min + ' ' + units);
			this.sell.focus();
			return false;
		}
		var max = wmConfig.sell[this.sell_cur.value].max;
		if (sell > max)
		{
			alert('Сумма не должна быть больше ' + max + ' ' + units);
			this.sell.focus();
			return false;
		}
		/*
		var sName = wmConfig.acname[this.sell_cur.value];
		if (this.pursenum.value == '')
		{
			alert('Укажите ' + sName);
			this.pursenum.focus();
			return false;
		}
		*/
		return true;
	}
	//$('pursename').innerHTML = wmConfig.acname[form.sell_cur.value];
	////////////////////////////////////////////
	var form = document.sell;
	var select = form.buy_cur;
	for (var wmId in wmConfig.money)
	{
		var option = new Element('option');
		option.value = wmId;
		option.innerHTML = wmConfig.money[wmId];
		select.appendChild(option)
	}
	select.onchange = function() { document.sell.buy.onkeyup(); }
	var select = form.sell_cur;
	for (var cashId in cashConfig)
	{
		var option = new Element('option');
		option.value = cashId;
		option.innerHTML = cashConfig[cashId].name;
		select.appendChild(option)
	}
	select.onchange = function() { document.sell.buy.onkeyup(); }
	form.sell.onkeyup = function()
	{
		var val = sellWmFromCash(this.value, document.sell.sell_cur.value, document.sell.buy_cur.value);
		val = val.round();
		document.sell.buy.value = val == this.value.toFloat().round() ? val + 1 : val;
	}
	form.buy.onkeyup = function()
	{
		var val = sellWm(this.value, document.sell.buy_cur.value, document.sell.sell_cur.value);
		val = val.round();
		document.sell.sell.value = val == this.value.toFloat().round() ? val - 1 : val;
	}
	form.onsubmit = function()
	{
		var buy = this.buy.value.toInt();
		if (isNaN(buy)) buy = 0;
		if (buy == 0)
		{
			alert('Введите сумму');
			this.buy.focus();
			return false;
		}
		var units = wmConfig.money[this.buy_cur.value];
		var min = wmConfig.buy[this.buy_cur.value].min;
		if (buy < min)
		{
			alert('Сумма не должна быть меньше ' + min + ' ' + units);
			this.buy.focus();
			return false;
		}
		var max = wmConfig.buy[this.buy_cur.value].max;
		if (buy > max)
		{
			alert('Сумма не должна быть больше ' + max + ' ' + units);
			this.buy.focus();
			return false;
		}
		/*
		if (!this.ok.checked)
		{
			alert('Подтвердите что вы ознакомились с правилами, установите флажок')
			this.ok.focus();
			return false;
		}
		*/
		return true;
	}
	///
}