﻿// ----------------------------------------------
// File:		Formatters.js
// Author:		Nathan Derksen
// Description:	Class to provide access to data formatting utilities
// Example:
// var price = Formatters.formatPrice("1200");
// ----------------------------------------------


// ----------------------------------------------
// Function:	Formatters()
// Author:		Nathan Derksen
// Description:	Base class
// Inputs:		<None>
// Returns:		<Nothing>
// ----------------------------------------------
function Formatters()
{
}

// ----------------------------------------------
// Function:	formatPrice()
// Author:		Nathan Derksen
// Description:	Take a string representation of a number and format it in a standard way, with dollar sign, comma, and no cents
// Inputs:		<String> price - Unformatted price
// Returns:		<String> - Formatted price
// ----------------------------------------------
Formatters.formatPrice = function(price, localeStr)
{
	if (price == "")
	{
		return "";
	}
	else if (localeStr.toLowerCase() == "intl")
	{
		return price;
	}
	else
	{
		price = price.split(",").join("").split("$").join("");
		
		if (localeStr == "" || localeStr == null || typeof(localeStr) == "undefined")
		{
			localeStr = "en-us";
		}
		
		var priceSymbols = {currency:"$", separator:","};
		var localeArray = localeStr.split("-");
		
		var splitPrice = price.split(".");
		var dollars = splitPrice[0];
		var cents = splitPrice[1];
		
		switch(localeArray[0].toLowerCase())
		{
			case "en":
				if (localeArray[1].toLowerCase() == "gb")
				{
					priceSymbols = {currency:"£", separator:","};
				}
				break;
			case "ja":
				priceSymbols = {currency:"¥", separator:","};
				break;
		}
		
		if (splitPrice.length == 1)
		{
			cents = "00";
		}

		var charArray = dollars.split("");
		var formattedPrice = "";
		var numChars = charArray.length;
		
		for (var i = 0; i < numChars; i++)
		{
			if ((numChars - i) % 3 == 0 && i != 0)
			{
				formattedPrice += priceSymbols.separator;
			}
			formattedPrice += charArray[i];
		}
		return priceSymbols.currency + formattedPrice;
	}
};

// ----------------------------------------------
// Function:	formatLabel()
// Author:		Nathan Derksen
// Description:	Take a label with insertion markers and replace the insertion markers with the appropriate string
//				e.g.:
//				var label = "%1 of %2";
//				alert(Formatters.formatPrice(label, "2", "10"); // Returns "2 of 10".
// Inputs:		<String> price - Unformatted price
// Returns:		<String> - Formatted price
// ----------------------------------------------
Formatters.formatLabel = function(label)
{
	for (var i = 0; i < arguments.length; i++)
	{
		label = label.split("%"+i).join(arguments[i]);
	}
	return label;
};

// ----------------------------------------------
Formatters.stringToDate = function(dateStr)
{
	var dateTime = new Date();
	var date = dateStr.split("T")[0];
	var time = dateStr.split("T")[1];
	var dateArr;
	var timeArr;
	
	if (typeof(date) != "undefined" && date != null)
	{
		dateArr = date.split("-");
		dateTime.setFullYear(Number(dateArr[0]));
		dateTime.setMonth(Number(dateArr[1])-1);
		dateTime.setDate(Number(dateArr[2]));
	}
	if (typeof(time) != "undefined" && time != null)
	{
		timeArr = time.split(":");
		dateTime.setHours(Number(timeArr[0]));
		dateTime.setMinutes(Number(timeArr[1]));
	}
	
	return dateTime;
}

Formatters.dateRangeToString = function(date1, date2, monthArray)
{
	var dateStr = "";
	var time1 = "";
	var time2 = "";
	
	if (typeof(monthArray) == "undefined" || monthArray == null || monthArray.length < 12)
	{
		
		
		if(locale == 'ja-JP'|| locale == 'zh-CN')
		{
		
			monthArray = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
		
		}
		else
		{
		
			monthArray = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
		}
	}
	
	var day1 = date1.getDate();
	var day2 = date2.getDate();
	
	if(day1 <10)
	{
	day1 = "0" + day1;
	}
	if(day2 <10)
	{
	day2 = "0" + day2;
	}
	day1 = day1+"日";
	day2 = day2+"日";
	if(locale == 'ja-JP' || locale == 'zh-CN')
	{
			if (date1.getMonth() == date2.getMonth() &&
				date1.getDate() == date2.getDate())
			{
				
				dateStr = monthArray[date1.getMonth()] + " " + day1;
								
			}
			else if (date1.getMonth() == date2.getMonth())
			{
				dateStr = monthArray[date1.getMonth()] + " " + day1 + "-" + day2;
			}
			else
			{
				dateStr = monthArray[date1.getMonth()] + " " + day1 + "-" + monthArray[date2.getMonth()] + " " + day2;
			}

	}
	else
	{
			if (date1.getMonth() == date2.getMonth() &&
				date1.getDate() == date2.getDate())
			{
			
				dateStr = monthArray[date1.getMonth()] + " " + date1.getDate();
				
			}
			else if (date1.getMonth() == date2.getMonth())
			{
				dateStr = monthArray[date1.getMonth()] + " " + date1.getDate() + "-" + date2.getDate();
			}
			else
			{
				dateStr = monthArray[date1.getMonth()] + " " + date1.getDate() + "-" + monthArray[date2.getMonth()] + " " + date2.getDate();
			}
	}
/*	time1 = String(date1.getHours());
	if (date1.getMinutes() > 0 && date1.getMinutes() < 10)
	{
		time1 += ":0" + date1.getMinutes();
	}
	else if (date1.getMinutes() >= 10)
	{
		time1 += ":" + date1.getMinutes();
	}
	
	time2 = String(date2.getHours());
	if (date2.getMinutes() > 0 && date2.getMinutes() < 10)
	{
		time2 += ":0" + date2.getMinutes();
	}
	else if (date2.getMinutes() >= 10)
	{
		time2 += ":" + date2.getMinutes();
	}
	
	if (time1 != time2)
	{
		dateStr += " " + time1 + "-" + time2;
	}*/
	
	return dateStr;
}