var conversione = "";

function NewWindow(mypage, w, h, scrollFlag) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	var winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left='
			+ winl + ',scrollbars=' + scrollFlag + ',resizable'
	var win = window.open(mypage, "", winprops)
	win.focus();
}


// Dati per il calcolo dell'ora legale nelle varie cittą del select
var dataZones = new Array(
                          /* +00 London   */ new Array(-1, 0, 2, 1, 0, 0, -1, 0, 9, 1, 0, 0, 1, 3600000),
                          /* +01 Roma     */ new Array(-1, 0, 2, 2, 0, 0, -1, 0, 9, 2, 0, 0, 1, 3600000),
                          /* -05 New York */ new Array(1, 0, 3, 2, 0, 0, -1, 0, 9, 1, 0, 0, 1, 3600000),
                          /* +09 Tokyo    */ new Array()
                         );
                         
function formatDateZone(dt) {
	var minutes = dt.getUTCMinutes();
	var seconds = dt.getUTCSeconds();
	var day = dt.getUTCDate();
	var month = dt.getUTCMonth() + 1;
	var year = dt.getUTCFullYear();

	var strTime = dt.getUTCHours();

	if (strTime < 10)
		strTime = "0" + strTime;
	strTime += ((minutes < 10) ? ":0" : ":") + minutes;
	/* strTime += ((seconds < 10) ? ":0" : ":") + seconds; */

	strDate = ((day < 10) ? "0" : "") + day + "/" + ((month < 10) ? "0" : "")
			+ month + "/" + year;

	strTimeDate = strTime + " " + strDate;

	return (strTimeDate);
}

function getDataTime(dtZone, currData, off) {
	var dt, dayWeek = currData[off + 1], d;
	var year = dtZone.getUTCFullYear();
	var month = currData[off + 2];
	var code = currData[off];

	if (code > 0) {
		dt = new Date(Date.UTC(year, month, 1));
		var ud = dt.getUTCDay();

		if (ud <= dayWeek)
			d = (dayWeek - ud) + 1;
		else
			d = 8 - (ud - dayWeek);

		for (n = 1; n < code; n++)
			d += 7;
	} else if (code == 0)
		d = dayWeek;
	else if (code == -1) {
		if (month == 1)
			d = (!(year % 4) && (year % 100 || !(year % 400))) ? 29 : 28;
		else
			d = (month == 3 || month == 5 || month == 8 || month == 10)
					? 30
					: 31;

		dt = new Date(Date.UTC(year, month, d));
		var ud = dt.getUTCDay();

		if (ud >= dayWeek)
			d -= (ud - dayWeek);
		else
			d -= (7 - (dayWeek - ud));
	}

	return (Date.UTC(year, month, d, currData[off + 3], currData[off + 4]) + currData[off
			+ 5]);
}

function getTimezoneTime(timeMS, timeSel) {
	// Membro dell'array data corrispondente alla selezione corrente del fuso
	// orario
	var currData = dataZones[timeSel];

	if (currData.length > 0) {
		var dtZone = new Date(timeMS);
		var dt1 = getDataTime(dtZone, currData, 0);
		var dt2 = getDataTime(dtZone, currData, 6);

		var dst = 1 - currData[12];
		if (timeMS >= dt1 && timeMS < dt2)
			dst = currData[12];

		if (dst) {
			timeMS += currData[13];
		}
	}

	return (new Date(timeMS));
}

function WorldClock(TimeZone, TimeZoneSel) {
	// Ora locale
	var localTime = new Date();

	var localMS = localTime.getTime() - (localTime.getTimezoneOffset() * 60000);

	// Ottieni il time UTC in millisecondi + il fuso orario della selezione
	// corrente
	var timeZoneMS = localTime.getTime() + parseFloat(TimeZone);
	var timeZoneTime = getTimezoneTime(timeZoneMS, TimeZoneSel);

	var strZone = formatDateZone(timeZoneTime);

	return strZone;
}

function TimeWorld() {
	TimeDataLondra = WorldClock(0, 0);
	document.getElementById('OraLondra').innerHTML = TimeDataLondra.substring(
			0, 5);
	document.getElementById('OraLondra').title = TimeDataLondra.substring(6);

	TimeDataMilano = WorldClock(3600000, 1);
	document.getElementById('OraMilano').innerHTML = TimeDataMilano.substring(
			0, 5);
	document.getElementById('OraMilano').title = TimeDataMilano.substring(6);

	TimeDataNewYork = WorldClock(-18000000, 2);
	document.getElementById('OraNewYork').innerHTML = TimeDataNewYork
			.substring(0, 5);
	document.getElementById('OraNewYork').title = TimeDataNewYork.substring(6);

	TimeDataTokyo = WorldClock(32400000, 3);
	document.getElementById('OraTokyo').innerHTML = TimeDataTokyo.substring(0,
			5);
	document.getElementById('OraTokyo').title = TimeDataTokyo.substring(6);

	setTimeout('TimeWorld()', 10000);
}

function ConvertiInEuro() {
	var numerico = document.getElementById('valuta').value
	if (isNaN(numerico)) {
		numerico = numerico.substring(0, (numerico.length - 1));
		document.getElementById('valuta').value = numerico;
	}
	conversione = "IN";
	document.getElementById('euro').value = document.getElementById('valuta').value
			/ document.getElementById('valutasel').value;
	if (document.getElementById('euro').value == 0)
		document.getElementById('euro').value = ''
	return true;
}

function ConvertiDaEuro() {
	var numerico = document.getElementById('euro').value
	if (isNaN(numerico)) {
		numerico = numerico.substring(0, (numerico.length - 1));
		document.getElementById('euro').value = numerico;
	}
	conversione = "DA";
	document.getElementById('valuta').value = formatvalue(document
			.getElementById('euro').value
			* document.getElementById('valutasel').value);
	if (document.getElementById('valuta').value == 0)
		document.getElementById('valuta').value = ''
	return true;
}

function Converti() {
	if (conversione == "DA") {
		ConvertiDaEuro();
	} else if (conversione == "IN") {
		ConvertiInEuro()
	} else
		clearvalute();
	return true;
}

function formatvalue(input) {
	var rsize = 12;
	var invalid = "**************************";
	var nines = "999999999999999999999999";
	var strin = "" + input;
	var fltin = parseFloat(strin);
	if (strin.length <= rsize)
		return strin;
	if (strin.indexOf("e") != -1
			|| fltin > parseFloat(nines.substring(0, rsize) + ".4"))
		return invalid.substring(0, rsize);
	var rounded = ""
			+ (fltin + (fltin - parseFloat(strin.substring(0, rsize))));
	return rounded.substring(0, rsize);
}

function clearvalute() {
	document.getElementById('euro').value = '';
	document.getElementById('valuta').value = ''
	return true;
}
