function enhanceDate(input) {
	try {
		var tmp = input.value;
		var len = tmp.length;
		var dat = "";
		var sep = 0;
		var abc = 0;

		if (verboseDate(input) == -1) {
			for (var i = 0; i < tmp.length; i++) {
				var c = tmp.substr(i, 1);
				if (c == "-") {
					sep++;
					dat += "-";
				} else if (c == "-") {
					sep++;
					dat += "-";
				} else if (c == ".") {
					sep++;
					dat += "-";
				} else if (c == " ") {
					sep++;
					dat += "-";
				} else if (c < "0") {
					abc++;
				} else if (c > "9") {
					abc++;
				} else {
					dat += c;
				}
			}
			if (abc == 0) {
				len = dat.length;
				var year = new Date().getFullYear();
				if ((len == 4) && (sep == 0)) {
					// Suppose DDMM
					dat = year.toString() + "-" +  dat.substr(2, 2) + "-" + dat.substr(0, 2);
				} else if ((len == 5) && (sep == 1)) {
					// Suppose DD/MM
					dat = year.toString() + "-" +  dat.substr(3, 2) + "-" + dat.substr(0, 2);
				} else if ((len == 6) && (sep == 0)) {
					// Suppose DDMMYY
					if (dat.substr(4, 2) >= "20") {
						year = year - 100;
					}
					dat = year.toString().substr(0, 2) + dat.substr(4, 2) + "-" +  dat.substr(2, 2) + "-" + dat.substr(0, 2);
				} else if ((len == 8) && (sep == 2)) {
					// Suppose DD/MM/YY
					if (dat.substr(6, 2) >= "20") {
						year = year - 100;
					}
					dat = year.toString().substr(0, 2) + dat.substr(6, 2) + "-" +  dat.substr(3, 2) + "-" + dat.substr(0, 2);
				} else if ((len == 8) && (sep == 0)) {
					// Suppose DDMMCCYY
					dat =dat.substr(4, 4) + "-" + dat.substr(2, 2) + "-" + dat.substr(0, 2);
				}
				input.value = dat;
			}
		}
	}
	catch (e) {}
}

function verboseDate(input) {
	var tmp = input.value.toLowerCase();
	var ret = 0;

	if (tmp.indexOf("dem") != -1) {
		input.value = formatDate(addDay(new Date(),1));
	} else if (tmp.indexOf("hier") != -1) {
		input.value = formatDate(addDay(new Date(),-1));
	} else if (tmp.indexOf("auj") != -1) {
		input.value = formatDate(new Date());
	} else {
		var re = new RegExp("(dim|lun|mar|mer|jeu|ven|sam)([a-z]{0,})($|\\+{1,3}|-{1,3})");
		var rs = re.exec(tmp);

		if (rs != null) {
			var dt = new Date();
			var day = -1;

			switch(rs[1].substr(0,3)) {
				case "lun": day = 1; break;
				case "mar": day = 2; break;	
				case "mer": day = 3; break;	
				case "jeu": day = 4; break;	
				case "ven": day = 5; break;	
				case "sam": day = 6; break;	
				case "dim": day = 7; break;
			}
			if(rs[3].indexOf("+") != -1) {
				day = day + 7 * rs[3].length;
			} else if (rs[3].indexOf("-") != -1) {
				day = day - 7 * rs[3].length;
			}
			input.value = formatDate(addDay(dt, day - dt.getDay()));
		} else {
			ret = -1;
		}
	}
	return ret;
}

function formatDate(obj) {
  var dt = leftPad(obj.getDate().toString(), 2, "0");
	dt += "-" + leftPad((obj.getMonth()+1).toString(), 2, "0");
  dt += "-" + obj.getFullYear().toString();
	return dt;
}

function addDay(objDate, jour) {
	objDate.setTime(objDate.getTime() + (jour * 86400000));
	return objDate;
}

function leftPad(str, len, car) {
	while(str.length < len) {
		str = car + str;
	}
	return str;
}


