function CVDate()
{
	function Init(oDate)
	{
		oDate.m_aMonth =
		["Январь","Февраль","Март",	"Апрель","Май",	"Июнь",	"Июль",	"Август","Сентябрь","Октябрь","Ноябрь","Декабрь",];
		oDate.FormatWidth = function(nNum, nWidth)
		{
			var str = nNum.toString(10);
			var strAdd = "";
			for(var i = 0; i < nWidth - str.length; i++)
				strAdd += "0";
			return (strAdd + str);
		}
		oDate.FormatOne = function(strTpl, ch, val)
		{
			var str = '%' + ch;
			var strVal = val.toString();
			var nIndex = 0;
			while((nIndex < strTpl.length) && ((nIndex = strTpl.indexOf(str, nIndex)) > -1))
			{
				if(!nIndex || (strTpl.charAt(nIndex - 1) != '%'))
				{
					strTpl = strTpl.substring(0, nIndex) + strVal + strTpl.substring(nIndex + str.length, strTpl.length);
					nIndex += strVal.length;
				}
				else
					nIndex += str.length;
			}
			return strTpl;
		}
		oDate.Format = function(strFormat)
		{
			var str = '';
			if(typeof(strFormat) != "undefined")
			{
				str = strFormat.toString();
				str = this.FormatOne(str, "Y", this.getFullYear());
				str = this.FormatOne(str, "B", this.m_aMonth[this.getMonth()]);
				str = this.FormatOne(str, "d", this.FormatWidth(this.getDate(), 2));
				str = str.replace(/%%/mg, "%");
			}
			else
				str = Date().toString();
			return str;
		}
		return oDate;
	}
	var oDate = null;
	if(!arguments.length)
		oDate = new Date();
	else if(arguments.length == 1)
		oDate = new Date(arguments[0]);
	else
	{
		var arg = new Array();
		for(var i = 0; i < 7; i++)
			arg[i] = (typeof(arguments[i]) != "undefined") ? arguments[i] : 0;
		oDate = new Date(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]);
	}
	Init(oDate);
	return oDate;
}