var VnDate = require ('./date');

module.exports =
{
	 regexpNumber: /%\.([0-9]+)d/g
	,regexpString: /%s/g

	,compare: function (a, b)
	{
		if (a === b)
			return true;
		if (typeof a === typeof b && a instanceof Date)
			return a.getTime () === b.getTime ();
			
		return false;		
	}
	
	,format: function (value, format)
	{
		if (value === null || value === undefined)
			return '';
	
		if (format)
		switch (typeof value)
		{
			case 'number':
				return format.replace (this.regexpNumber,
					this.replaceNumber.bind (null, value));
			case 'string':
				return format.replace (this.regexpString,
					this.replaceString.bind (null, value));
			case 'object':
			if (value instanceof Date)
				return VnDate.strftime (value, format);
		}
		
		return value;
	}
	
	,replaceNumber: function (value, token, digits)
	{
		return new Number (value).toFixed (parseInt (digits));
	}
	
	,replaceString: function (value)
	{
		return value;
	}
};

window.sprintf = function (formatString)
{
	var args = arguments;

	if (args.length <= 1)
		return formatString;
	
	var i = 1;
	return formatString.replace (/%[s|d]/g, function ()
	{
		return args[i++];
	});
}