var WI = {};

WI.DateTime = { }
WI.DateTime.parseDate = function(pattern, value) {
	numbers = value.match(/(\d+)/g);
	if (numbers == null) return Number.NaN;
	var day, month, year;
	arrayPos = 0;
	for (i = 0; i < pattern.length; i++) {
		c = pattern.charAt(i);
		while ((pattern.charAt(i) == c) && (i < pattern.length)) {
			i++;
		}
		if (c == 'y') {
			year = numbers[arrayPos++];
		} else if (c == 'M') {
			month = numbers[arrayPos++];
		} else if (c == 'd') {
			day = numbers[arrayPos++];
		}
		if (arrayPos > 2) break;
	}
	if (year < 100) {
		if (year < 70) {
			year = year * 1 + 2000;
		} else {
			year = year * 1 + 1900;
		}
	}
	var date = new Date();
	date.setFullYear(year, (month - 1), day);
	return date;
}

WI.DateTime.padDateFragment = function(value) {
	return (value < 10 ? "0" : "") + value;
}

WI.DateTime.substituteDate = function(datePattern, date) {
	day = date.getDate();
	month = date.getMonth()+1;
	year = date.getFullYear();
	if(datePattern.match(/\bdd\b/)) day = WI.DateTime.padDateFragment(day);
	if(datePattern.match(/\bMM\b/)) month = WI.DateTime.padDateFragment(month);
	if(datePattern.match(/\byy\b/)) year = WI.DateTime.padDateFragment(year % 100);
	return datePattern.replace(/d+/, day).replace(/M+/, month).replace(/y+/, year);
}
