function parseDate(DateToCheck)
{
	if(DateToCheck=="")
	{
		return new Date(1901,00,01,12,00,00);
	}
	
	var m_strDate = FormatDate(DateToCheck, "mm/dd/yyyy");
	
	if(m_strDate=="")
	{
		return null;
	}
	
	var m_arrDate = m_strDate.split("/");
	var m_MONTH = m_arrDate[0];
	var m_DAY = m_arrDate[1];
	var m_YEAR = m_arrDate[2];
	
	if(m_YEAR.length > 4)
	{
		return null;
	}
	
	m_strDate = m_MONTH + "/" + m_DAY + "/" + m_YEAR;
	var testDate=new Date(m_strDate);
	
	if(testDate.getMonth()+1==m_MONTH)
	{		
		return testDate;
	} 
	else
	{
		return null;
	}
}

function FormatDate(DateToFormat,FormatAs)
{
	if(DateToFormat=="")
	{
		return"";
	}
	
	if(!FormatAs)
	{
		FormatAs="dd/mm/yyyy";
	}

	var strReturnDate;
	FormatAs = FormatAs.toLowerCase();
	DateToFormat = DateToFormat.toLowerCase();
	var arrDate
	var arrMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	var strMONTH;
	var Separator;

	while(DateToFormat.indexOf("st")>-1)
	{
		DateToFormat = DateToFormat.replace("st","");
	}

	while(DateToFormat.indexOf("nd")>-1)
	{
		DateToFormat = DateToFormat.replace("nd","");
	}

	while(DateToFormat.indexOf("rd")>-1)
	{
		DateToFormat = DateToFormat.replace("rd","");
	}

	while(DateToFormat.indexOf("th")>-1)
	{
		DateToFormat = DateToFormat.replace("th","");
	}

	if(DateToFormat.indexOf(".")>-1)
	{
		Separator = ".";
	}

	if(DateToFormat.indexOf("-")>-1)
	{
		Separator = "-";
	}

	if(DateToFormat.indexOf("/")>-1)
	{
		Separator = "/";
	}

	if(DateToFormat.indexOf(" ")>-1)
	{
		Separator = " ";
	}

	arrDate = DateToFormat.split(Separator);
	DateToFormat = "";
	for(var iSD = 0;iSD < arrDate.length;iSD++)
	{
		if(arrDate[iSD]!="")
		{
			DateToFormat += arrDate[iSD] + Separator;
		}
	}
	
	DateToFormat = DateToFormat.substring(0,DateToFormat.length-1);
	arrDate = DateToFormat.split(Separator);

	if(arrDate.length < 3)
	{
		return "";
	}

	var MONTH = arrDate[0];
	var DAY = arrDate[1];
	var YEAR = arrDate[2];

	for(var iSD = 0;iSD < arrMonths.length;iSD++)
	{
		var ShortMonth = arrMonths[iSD].substring(0,3).toLowerCase();
		var MonthPosition = DateToFormat.indexOf(ShortMonth);
		
		if(MonthPosition > -1)
		{
			MONTH = iSD + 1;
			if(MonthPosition == 0)
			{
				DAY = arrDate[1];
				YEAR = arrDate[2];
			}
			
			break;
		}
	}

	var strTemp = YEAR.toString();
	if(strTemp.length==2)
	{
		if(parseFloat(YEAR)>40)
		{
			YEAR = "19" + YEAR;
		}
		else
		{
			YEAR = "20" + YEAR;
		}
	}

	if(parseInt(MONTH)< 10 && MONTH.toString().length < 2)
	{
		MONTH = "0" + MONTH;
	}
	
	if(parseInt(DAY)< 10 && DAY.toString().length < 2)
	{
		DAY = "0" + DAY;
	}
	
	switch (FormatAs)
	{
		case "dd/mm/yyyy":
			return DAY + "/" + MONTH + "/" + YEAR;
		case "mm/dd/yyyy":
			return MONTH + "/" + DAY + "/" + YEAR;
		case "dd/mmm/yyyy":
			return DAY + " " + arrMonths[MONTH -1].substring(0,3) + " " + YEAR;
		case "mmm/dd/yyyy":
			return arrMonths[MONTH -1].substring(0,3) + " " + DAY + " " + YEAR;
		case "dd/mmmm/yyyy":
			return DAY + " " + arrMonths[MONTH -1] + " " + YEAR;	
		case "mmmm/dd/yyyy":
			return arrMonths[MONTH -1] + " " + DAY + " " + YEAR;
	}

	return DAY + "/" + strMONTH + "/" + YEAR;
}
