window.onload = init;
var xmlUrl = "http://www.cbr.ru/scripts/XML_daily.asp";
var xslUrl = "../currency/json.xsl";
var json, cur1, cur2, info1, info2, icon1, icon2, amount, result, gadget;
var icons = "aud, byr, cad, chf, cny, ddk, eur, gbp, isk, jpy, kzt, nok, rur, sek, sgd, try, uah, usd";
var prefs;
var gadgetUtils = new GadgetUtils();
var list = [];
list['RUR'] = {name:'Российский рубль', rate:1};
list['AUD'] = {name:'Австралийский доллар', rate:1};
list['BYR'] = {name:'Белорусский рубль', rate:1};
list['DKK'] = {name:'Датская крона', rate:1};
list['USD'] = {name:'Доллар США', rate:1};
list['EUR'] = {name:'Евро', rate:1};
list['ISK'] = {name:'Исландская крона', rate:1};
list['KZT'] = {name:'Казахский тенге', rate:1};
list['CAD'] = {name:'Канадский доллар', rate:1};
list['CNY'] = {name:'Китайских юань (Жэньминьби)', rate:1};
list['TRY'] = {name:'Новая турецкая лира', rate:1};
list['NOK'] = {name:'Норвежская крона', rate:1};
list['XDR'] = {name:'СДР', rate:1};
list['SGD'] = {name:'Сингапурский доллар', rate:1};
list['UAH'] = {name:'Украинская гривна', rate:1};
list['GBP'] = {name:'Фунт стерлингов Соединенного королевства', rate:1};
list['SEK'] = {name:'Шведская крона', rate:1};
list['CHF'] = {name:'Швейцарский франк', rate:1};
list['JPY'] = {name:'Японская йена', rate:1};

function init()
{
	var url = "../utils/xslt.php?xml=" + xmlUrl + "&xsl=" + xslUrl;
	new Ajax.Request(url, {onSuccess: loadJSON});

	//Additional features of the canvas view
	if(window.location.href.indexOf('canvas') > 0)
	{
		document.body.innerHTML = '<div id="rates">Загрузка списка валют...</div>'+document.body.innerHTML;
		gadget = document.getElementsByClassName('GadgetContainer')[0];
		gadget.addClassName('Canvas');
		//window.onresize = gadgetResized;
	}
	else
	{
		gadgetUtils.resizeGadget(document.getElementsByClassName('GadgetContainer')[0].getHeight());
	}

	try {prefs = new _IG_Prefs();} catch(e) {};
	cur1 = $("cur1");
	cur2 = $("cur2");
	info1 = $("info1");
	info2 = $("info2");
	icon1 = $("icon1");
	icon2 = $("icon2");
	amount = $("amount");
	try{amount.value = prefs.getString('amount');} catch(e) {}
	result = $("result");
}

function loadJSON(result)
{
	if(result == null)
	{
		$("msg").innerHTML = "Информация временно недоступна";
		return;
	}

	var text = result.responseText.substr(result.responseText.indexOf("{"));
	json = text.evalJSON();

	for(i=0; i<json.rate.items.length; i++)
	{
		var item = json.rate.items[i];
		if(list[item.code] == null) list[item.code] = {name:item.name, rate:1};
		var opt1 = document.createElement("OPTION");
		var opt2 = document.createElement("OPTION");
		opt1.value = item.code;
		opt1.innerHTML = list[item.code].name;
		opt2.value = item.code;
		opt2.innerHTML = list[item.code].name;
		try {if(item.code == prefs.getString('cur1')) opt1.selected = true;}
		catch(e) {if(item.code == "USD") opt1.selected = true;}
		try {if(item.code == prefs.getString('cur2')) opt2.selected = true;}
		catch(e) {if(item.code == "RUR") opt2.selected = true;}
		cur1.appendChild(opt1);
		cur2.appendChild(opt2);
		list[item.code].rate = round(item.value/item.nominal);
	}

	// Show rates for canvas view
	if(window.location.href.indexOf('canvas') > 0) showRates();

	formChanged();
}

function showRates()
{
	var html = '<table>';
	var i = 0;
	for(var code in list)
	{
		if(code == 'RUR' || list[code].rate == null) continue;
		var cl = 'RateOdd';
		if(i % 2 == 0) cl = 'RateEven';
		html += '<tr class="'+cl+'"><td>'+list[code].name+'</td><td>'+code+'</td><td>'+list[code].rate+'</td></tr>';
		i++;
	}
	html += '<table>';
	$('rates').innerHTML = html;
	//gadgetResized();
}

function gadgetResized()
{
	if(document.body.getWidth() < 570)
	{
		gadget.setStyle({top:$('rates').getHeight()+'px', left:'0', margin:'0'});
		$('rates').setStyle({width:'100%'});
	}
	else
	{
		gadget.setStyle({top:'0', left:'100%', margin:'0 0 0 -300px'});
		var w = document.body.getWidth() - 320;
		if(w > 500) w = 500;
		$('rates').setStyle({width:(w+'px')});
	}
}

function formChanged()
{
	var sum = parseFloat(amount.value.replace(",", "."));
	if(isNaN(sum))
	{
		result.innerHTML = "";
		return;
	}
	try{prefs.set('amount', amount.value);} catch(e) {}
	var code1 = cur1.value;
	try{prefs.set('cur1', cur1.value);} catch(e) {}
	var code2 = cur2.value;
	try{prefs.set('cur2', cur2.value);} catch(e) {}
	if(code1 == "RUR") info1.style.visibility = "hidden";
	else  info1.style.visibility = "visible";
	if(code2 == "RUR") info2.style.visibility = "hidden";
	else  info2.style.visibility = "visible";

	if(icons.indexOf(code1.toLowerCase()) != -1)
	{
		icon1.src = "http://sterno-gadgets.googlecode.com/svn/trunk/currency/img/cur_" + code1.toLowerCase() + ".gif";
		icon1.alt = code1;
	}
	else
	{
		icon1.src = "http://sterno-gadgets.googlecode.com/svn/trunk/currency/b.gif";
		icon1.alt = "";
	}
	if(icons.indexOf(code2.toLowerCase()) != -1)
	{
		icon2.src = "http://sterno-gadgets.googlecode.com/svn/trunk/currency/img/cur_" + code2.toLowerCase() + ".gif";
		icon2.alt = code2;
	}
	else
	{
		icon2.src = "http://sterno-gadgets.googlecode.com/svn/trunk/currency/b.gif";
		icon2.alt = "";
	}

	calculate(code1, code2, sum);
}

function calculate(code1, code2, sum)
{
	var item1, item2;
	json.rate.items.each(function(item){
		if(item.code == code1) item1 = item;
		if(item.code == code2) item2 = item;
	});

	var sum1 = (item2.nominal * item1.value * sum) / (item2.value * item1.nominal);
	var sum2 = (item1.nominal * item2.value * sum) / (item1.value * item2.nominal);
	result.innerHTML = '<div>' + round(sum) + ' ' + item1.code + ' = ' + round(sum1) + ' ' + item2.code + '</div>';
	result.innerHTML += '<div>' + round(sum) + ' ' + item2.code + ' = ' + round(sum2) + ' ' + item1.code + '</div>';
}

function round(sum)
{
	sum = sum.toString();
	if(sum.include("."))
	{
		var arr = sum.split(".");
		sum = arr[0] + "." + arr[1].substr(0, 2);
	}
	return sum;
}

function showImage(event)
{
	if(!Event) return;
	var evt;
	if(window.event) evt = window.event;
	else evt = event;
	var elem = Event.element(evt);
	var x = Position.cumulativeOffset(elem)[0];
	var y = Position.cumulativeOffset(elem)[1];
	var num = elem.id.substr(elem.id.length -1);
	var div = $("img" + num);
	if(div.style.display == "block")
	{
		div.style.display = "none";
	}
	else
	{
		div.innerHTML = "загрузка...";
		div.style.left = (x-90) + "px";
		div.style.display = "block";
		var list = $("cur" + num);
		var cur;
		json.rate.items.each(function(item){
			if(item.code == list.value) cur = item;
		});
		var src = "usd.php?code=" + cur.id + "&name=" + cur.code;
		div.innerHTML = '<img src="' + src + '" alt="' + cur.code + '" />';
	}
}