var exchangeRates = null,
	baseCurrency  = 'uah'
;

function parsePricesTables() {
	var tables = document.getElementsByTagName( 'table');
	for (var i = 0, table; table = tables[i]; i++) {
		if (/\bpricecur\b/.test( table.className)) {
			pricecur( table);
		}
	}
};

function pricecur( table) {
	var container = table.parentNode,
		box = document.createElement( 'div'),
		nav = document.createElement( 'div')
	;
	box.appendChild( nav);
	box.appendChild( table.cloneNode( true));
	container.replaceChild( box, table);

	box.basePrices = [];
	box.startRow = parseInt( table.rows[0].cells[0].rowspan) || 1;
	for (var i = box.startRow, row; row = table.rows[i]; i++) {
		var pri = box.basePrices.length;
		box.basePrices[pri] = [];
		for (var ii = 1, cell; cell = row.cells[ii]; ii++) {
			box.basePrices[pri][box.basePrices[pri].length] = cell.innerHTML.replace( /<.*?>/g, '');
		}
	}

	nav.className = 'curnav';
	nav.innerHTML = 'Изменить валюту:&nbsp; <a title="Цены в гривнах" class="current" onclick="changeCurrency( this)" href="#uah">UAH</a> | <a title="Цены в рублях" onclick="changeCurrency(this)" href="#rub">RUB</a> | <a title="Цены в долларах США" onclick="changeCurrency(this)" href="#usd">USD</a> | <a title="Цены в евро" onclick="changeCurrency(this)" href="#eur">EUR</a>';
	nav.innerHTML += "&nbsp;&nbsp;&nbsp;<a href=\"javascript:showPopup('/exchange.php?act=show', 430, 290)\"><img align=\"absmiddle\" src=\"/images/help.gif\" title=\"Курсы валют\" alt=\"Курсы валют\" width=\"13\" border=\"0\" height=\"16\"></a>";

	var rc = document.location.href.replace( /^.*?(#\w{3})$/, '$1')
		ls = nav.getElementsByTagName( 'a');
	;
	for  (var i = 0, link; link = ls[i]; i++) {
		if ((new RegExp( rc + '$')).test( link.href)) {
			changeCurrency( link);
			break;
		}
	}
};

function showPopup( url, w, h) {
	window.open( url, '', 'width=' + w + ',height=' + h + ',top=' + parseInt(((screen.height || 600) / 2 - h / 2)) + ',left=' + parseInt(((screen.width || 800) / 2 - w / 2)));
};

function changeCurrency( link) {
	var links = link.parentNode.getElementsByTagName( 'a'),
		curr  = null, newp = link.href.replace( /^.*?#(.*?)$/, '$1'),
		table = link.parentNode.parentNode.getElementsByTagName( 'table')[0]
	;
	for (var i = 0, lnk; lnk = links[i]; i++) {
		if (lnk.className) {
			curr = lnk.href.replace( /^.*?#(.*?)$/, '$1');
			lnk.className = '';
			break;
		}
	}
	if (!exchangeRates) {
		$.ajax({
			url: '/exchange.php',
			dataType: 'json',
			success: function( data) {
				exchangeRates = data;
				changePrices( table, newp);
				link.className = 'current';
			},
			failure: function() {
				lnk.className = 'current';
				alert( 'Ошибка при подключении к серверу! Пожалуйста, попробуйте еще раз позже...');
			}
		});
	} else {
		changePrices( table, newp);
		link.className = 'current';
	}
};

function changePrices( table, to) {
	var base = table.parentNode.basePrices,
		rate = exchangeRates[to]
	;
	for (var i= 0, s = base.length; i < s; i++) {
		for (var ii = 0, ss = base[i].length; ii < ss; ii++) {
			var basePrice = base[i][ii],
				newPrice  = Math.ceil( basePrice * rate.nominal / rate.rate);
				cell      = table.rows[i + table.parentNode.startRow].cells[ii + 1]
			;
			cell.innerHTML = cell.innerHTML.replace( />\d+</, '>' + newPrice + '<');
		}
	}
};

parsePricesTables();

