dojo.declare("mf_DateAndTime", null,
{
	getDateFromISO: function( date ) {
		var date_part = date.split(" ")[0].split("-");
		
		return new Date( date_part[0], date_part[1]-1, date_part[2], 0, 0, 0 );
	},

	getTimeFromISO: function( date ) {
		var time_part = date.split(" ")[1].split(":");
		
		return new Date( 1970, 1, 1, time_part[0], time_part[1], time_part[2]);
	},
	
	getDateAndTimeFromISO: function( date ) {
		var date_part = date.split(" ")[0].split("-");
		var time_part = date.split(" ")[1].split(":");
		
		return new Date( date_part[0], date_part[1]-1, date_part[2], time_part[0], time_part[1], time_part[2]);
	},
	
	getFormatedDateAndTimeFromISO: function( date ) {
		var date_part = date.split(" ")[0].split("-");
		var time_part = date.split(" ")[1].split(":");
		
		return dojo.date.locale.format( new Date( 
												date_part[0], date_part[1]-1, date_part[2], 
												time_part[0], time_part[1], time_part[2]) );
	},
	
	getNowAsISO: function() {
		var now=new Date();
		
		var y = now.getFullYear()+"";
		var m = (now.getMonth()+1)+"";
		var d = now.getDate()+"";
		
		var h = now.getHours()+"";
		var i = now.getMinutes()+"";
		var s = now.getSeconds()+"";
		
		if(m.length<2) m = "0"+m;
		if(d.length<2) d = "0"+d;
		if(h.length<2) h = "0"+h;
		if(i.length<2) i = "0"+i;
		if(s.length<2) s = "0"+s;
		
		return y+"-"+m+"-"+d+" "+h+":"+i+":"+s;
		
	},

	/**
	 * Returns date range according to week number and year
	 *
	 * @param {String|Integer} week
	 * @param {String|Integer} year
	 * @return {Object}
	 */
	getDateRangeOfWeek: function(week, year)
	{
		Date.prototype.getWeek = function(year)
		{
			if (!year)
				year = this.getFullYear();

			var oneJan = new Date(year, 0, 1);

			return Math.ceil((((this - oneJan) / 86400000) + oneJan.getDay()) / 7);
		};

		week = parseInt(week);
		year = parseInt(year);

		var d = new Date();
		var numOfDaysPastSinceLastMonday = eval(d.getDay() - 1);

		if (year)
			d.setFullYear(year);

		d.setDate(d.getDate() - numOfDaysPastSinceLastMonday);

		var weekToday = d.getWeek(year);
		var weeksInTheFuture = eval(week - weekToday);

		d.setDate(d.getDate() + eval(7 * weeksInTheFuture));

		var from = new Date();
		from.setMonth(d.getMonth());
		from.setDate(d.getDate());
		from.setFullYear(d.getFullYear());

		// var rangeIsFrom =  eval(d1.getMonth() + 1) + "/" + d1.getDate() + "/" + d1.getFullYear();

		d.setDate(d.getDate() + 6);

		var till = new Date();
		till.setMonth(d.getMonth());
		till.setDate(d.getDate());
		till.setFullYear(d.getFullYear());

		// var rangeIsTo = eval(d1.getMonth() + 1) + "/" + d1.getDate() + "/" + d1.getFullYear();

		return {
			from: from,
			till: till
		};
	}

});
mf_DateAndTime = new mf_DateAndTime();
