(function($){
	$.format = (function(){
	
		var parseMonth = function(value){
		
			switch (value) {
				case "Jan":
					return "01";
					break;
				case "Feb":
					return "02";
					break;
				case "Mar":
					return "03";
					break;
				case "Apr":
					return "04";
					break;
				case "May":
					return "05";
					break;
				case "Jun":
					return "06";
					break;
				case "Jul":
					return "07";
					break;
				case "Aug":
					return "08";
					break;
				case "Sep":
					return "09";
					break;
				case "Oct":
					return "10";
					break;
				case "Nov":
					return "11";
					break;
				case "Dec":
					return "12";
					break;
				default:
					return value;
			}
		};
		
		var parseTime = function(value){
			var retValue = value;
			if (retValue.indexOf(".") != -1) {
				retValue = retValue.substring(0, retValue.indexOf("."));
			}
			
			var values3 = retValue.split(":");
			
			if (values3.length == 3) {
				hour = values3[0];
				minute = values3[1];
				second = values3[2];
				
				return {
					time: retValue,
					hour: hour,
					minute: minute,
					second: second
				};
			} else {
				return {
					time: "",
					hour: "",
					minute: "",
					second: ""
				};
			}
		};
		
		return {
			date: function(value, format){
				//value = new java.util.Date()
				//2009-12-18 10:54:50.546
				try {
					var values = value.split(" ");
					var year = null;
					var month = null;
					var dayOfMonth = null;
					var time = null; //json, time, hour, minute, second
					switch (values.length) {
						case 6://Wed Jan 13 10:43:41 CET 2010
							year = values[5];
							month = parseMonth(values[1]);
							dayOfMonth = values[2];
							time = parseTime(values[3]);
							break;
						case 2://2009-12-18 10:54:50.546
							var values2 = values[0].split("-");
							year = values2[0];
							month = values2[1];
							dayOfMonth = values2[2];
							time = parseTime(values[1]);
							break;
						default:
							return value;
					}
					
					
					var pattern = "";
					var retValue = "";
					
					for (i = 0; i < format.length; i++) {
						var currentPattern = format.charAt(i);
						pattern += currentPattern;
						switch (pattern) {
							case "dd":
								retValue += dayOfMonth;
								pattern = "";
								break;
							case "MM":
								retValue += month;
								pattern = "";
								break;
							case "YY":
								retValue += year.substring(2,4);
								pattern = "";
								break;
							case "yyyy":
								retValue += year;
								pattern = "";
								break;
							case "HH":
								retValue += time.hour;
								pattern = "";
								break;
							case "hh":
								retValue += time.hour;
								pattern = "";
								break;
							case "mm":
								retValue += time.minute;
								pattern = "";
								break;
							case "ss":
								retValue += time.second;
								pattern = "";
								break;
							case " ":
								retValue += currentPattern;
								pattern = "";
								break;
							case "/":
								retValue += currentPattern;
								pattern = "";
								break;
							case ":":
								retValue += currentPattern;
								pattern = "";
								break;
							default:
								if (pattern.length == 2 && pattern.indexOf("y") != 0) {
									retValue += pattern.substring(0, 1);
									pattern = pattern.substring(1, 2);
								} else if ((pattern.length == 3 && pattern.indexOf("yyy") == -1)) {
									pattern = "";
								}
						}
					}
					return retValue;
				} catch (e) {
					return value;
				}
			}
		};
	})();
}(jQuery));


$(document).ready(function(){
	$(".shortDateFormat").each(function(idx, elem){
		if ($(elem).is(":input")) {
			$(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy'));
		} else {
			$(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy'));
		}
	});
	$(".longDateFormat").each(function(idx, elem){
		if ($(elem).is(":input")) {
			$(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy hh:mm:ss'));
		} else {
			$(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy hh:mm:ss'));
		}
	});
});

