  function isDateTime(DateTimeToCheck, DateFormatAs){
     var afield = DateTimeToCheck.split(' ');
     if (afield.length != 2) { 
        return false;
     }
     if (!(isDate(afield[0])) || !(isTime(afield[1]))) {
        return false;
     }
     return true;
  }


  function isTime(TimeToCheck) {
     var afield = TimeToCheck.split(':');
     if (afield.length != 2) { 
        return false;
     }
     if ((isNaN(afield[0])) || (isNaN(afield[1]))) {
        return false;
     }
     if ((parseFloat(afield[0]) < 0)) {
        return false;
     }
     if ((parseFloat(afield[1]) > 59) || (parseFloat(afield[1]) < 0)) {
        return false;
     }
     return true;
  }


  function isDate(DateToCheck, FormatAs){
    if(DateToCheck==""){return true;}
    var m_strDate = FormatDate(DateToCheck, FormatAs);
    if(m_strDate==""){
      return false;
    }
    var m_arrDate = m_strDate.split("/");
    var m_DAY = m_arrDate[0];
    var m_MONTH = m_arrDate[1];
    var m_YEAR = m_arrDate[2];
    if(m_YEAR.length > 4){return false;}
    m_strDate = m_MONTH + "/" + m_DAY + "/" + m_YEAR;
    var testDate=new Date(m_strDate);
    if((testDate.getMonth()+1==m_MONTH)&&((testDate.getYear()==m_YEAR)||(testDate.getYear()==m_YEAR-1900))){
      return true;
    } 
    else{
      return false;
    }
  } //end function


  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 DAY = arrDate[0];
    var MONTH = arrDate[1];
    var YEAR = arrDate[2];

    if(parseFloat(arrDate[1]) > 12){
      DAY = arrDate[1];
      MONTH = arrDate[0];
    }

    if(parseFloat(DAY) && DAY.toString().length==4){
      YEAR = arrDate[0];
      DAY = arrDate[2];
      MONTH = arrDate[1];
    }

    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;;
  } //End Function


function date_compare(date1,date2,FormatAs,message) {

      var date1str = FormatDate(date1, FormatAs);
      var date1arr = date1str.split("/");
      var m_DAY = date1arr[0];
      var m_MONTH = date1arr[1];
      var m_YEAR = date1arr[2];
      date1 = m_MONTH + "/" + m_DAY + "/" + m_YEAR;
      
            
      var date2str = FormatDate(date2, FormatAs);
      var date2arr = date2.split("/");
      var m_DAY = date2arr[0];
      var m_MONTH = date2arr[1];
      var m_YEAR = date2arr[2];
      date2 = m_MONTH + "/" + m_DAY + "/" + m_YEAR;


      auxfec1=Date.parse(date1)
      auxfec2=Date.parse(date2)
      aux = (auxfec1>auxfec2)
      if(aux && message!='') window.alert(message)
      return(aux)     
   }

