// JsWorld 2.3.1 Demo
// Vladimir Dzhuvinov, 2010-05-17

function initDemo() {

	document.getElementById("jsworld-demo-number-in").value = "123456.789";
	document.getElementById("jsworld-demo-money-in").value = "1234567.89";
}


function doDemoFormat() {

	// get the selected locale
	var localeSelector = document.getElementById("jsworld-locale-selector");
	var locale = localeSelector.options[localeSelector.selectedIndex].value;

	formatNumber(locale);
	formatMoney(locale);
	formatDateTime(locale);
}


function formatNumber(locale) {
	
	// get input
	var number = parseFloat(document.getElementById("jsworld-demo-number-in").value);
	
	if (isNaN(number)) {
		alert("Please, enter a valid number, e.g. 123.45");
		number = 0;
		return;
	}
	
	// get options
	var optSelector = document.getElementById("jsworld-demo-number-options");
	var opt = optSelector.options[optSelector.selectedIndex].value;
	
	// create new number formatter
	try {
		var nf = new jsworld.NumericFormatter(new jsworld.Locale(POSIX_LC[locale]));
	} catch(error) {
		alert("Failed to create new numeric formatter: " + error);
		return;
	}
	
	// format number
	try {
		var formattedNumber = nf.format(number, opt);
	} catch(error) {
		alert("Failed to format number: " + error);
		return;
	}
	
	var outputElement = document.getElementById("jsworld-demo-number-out");
	
	// remove old result (if any)
	while (outputElement.firstChild)
		outputElement.removeChild(outputElement.firstChild);

	var outputText = document.createTextNode(formattedNumber);
	outputElement.appendChild(outputText);
}


function formatMoney(locale) {

	// get input
	var amount = parseFloat(document.getElementById("jsworld-demo-money-in").value);
	
	if (isNaN(amount)) {
		alert("Please, enter a valid currency amount, e.g. 1500");
		amount = 0;
	}
	
	// get options
	var optSelector = document.getElementById("jsworld-demo-money-options");
	var opt = optSelector.options[optSelector.selectedIndex].value;
	
	// create new number formatter
	try {
		var mf = new jsworld.MonetaryFormatter(new jsworld.Locale(POSIX_LC[locale]));
	} catch(error) {
		alert("Failed to create new monetary formatter: " + error);
	}
	
	// format number
	try {
		var formattedAmount = mf.format(amount, opt);
	} catch(error) {
		alert("Failed to format monetary amount: " + error);
	}
	
	var outputElement = document.getElementById("jsworld-demo-money-out");
	
	// remove old result (if any)
	while (outputElement.firstChild)
		outputElement.removeChild(outputElement.firstChild);

	var outputText = document.createTextNode(formattedAmount);
	outputElement.appendChild(outputText);
}


function formatDateTime(locale) {

	// create new date/time formatter
	try {
		var dtf = new jsworld.DateTimeFormatter(new jsworld.Locale(POSIX_LC[locale]));
	} catch(error) {
		alert("Failed to create new date/time formatter: " + error);
		return;
	}
	
	// format current time, date and datetime
	try {
		var now = new Date();
		var curTime = dtf.formatTime(now);
		var curDate = dtf.formatDate(now);
		var curDateTime = dtf.formatDateTime(now);
	} catch (error) {
		alert("Failed to format date/time: " + error);
		return;
	}
	
	var outputElement = document.getElementById("jsworld-demo-time-out");
	
	// remove old result (if any)
	while (outputElement.firstChild)
		outputElement.removeChild(outputElement.firstChild);

	var outputText = document.createTextNode(curTime);
	outputElement.appendChild(outputText);
	
	
	var outputElement = document.getElementById("jsworld-demo-date-out");
	
	// remove old result (if any)
	while (outputElement.firstChild)
		outputElement.removeChild(outputElement.firstChild);

	var outputText = document.createTextNode(curDate);
	outputElement.appendChild(outputText);
	
	
	var outputElement = document.getElementById("jsworld-demo-datetime-out");
	
	// remove old result (if any)
	while (outputElement.firstChild)
		outputElement.removeChild(outputElement.firstChild);

	var outputText = document.createTextNode(curDateTime);
	outputElement.appendChild(outputText);
}
