function formatjsdate(datestring) {
  a=formatdate(datestring);
  if (a!="") {
    ptemp=a.split('.');
    if (ptemp.length>1) { 
      d=new Date(ptemp[2],ptemp[1],ptemp[0]);
      return(d);
    };
  };
};



function isdate(datestring) {
  if (formatdate(datestring)!='') {return 1} else {return 0};  
};


function formatdate(datestring,endflag) {
  d=''+datestring
  var regex = /^(\s*)([\W\w]*)(\b\s*$)/;
  if (regex.test(d)) { d = d.replace(regex, '$2'); }

  var regex = /[^0-9][^0-9]/g;
  while (d.match(regex)) { d = d.replace(regex, "."); }

  var regex = /[^0123456789.]/g;
  while (d.match(regex)) { d = d.replace(regex, "."); }

  dat=new Array
  dat[0]=-1;
  dat[1]=-1;
  dat[2]=-1;

  var regex = /[^0-9]/g;
  if (d.length>0) {
    if (regex.test(d)) {

      ptemp=d.split('.');
      p=new Array;

      for (var i=0; i < ptemp.length; i++) {
        if (ptemp[i]!='') {p.push(ptemp[i])};
      };


      switch (p.length) {
        case 0 : break;
        case 1 : break;
        case 2 :
          if (p[0]>0 && p[0]<13 && p[1]>1900) {
            dat[1]=p[0];
            dat[2]=p[1];
            break;
          };
          if (p[0]>0 && p[0]<32 && p[1]>0 && p[1]<13) {
            dat[0]=p[0];
            dat[1]=p[1];
            break;
          };
          break;
        default :
          if (p[0]>0 && p[0]<32 && p[1]>0 && p[1]<13 && (p[2]>1900 || p[2]<100)) {
            dat[0]=p[0];
            dat[1]=p[1];
            dat[2]=p[2];
          };
          break;
      };
    }
    else {
      switch(d.length) {
        case 1: break;
        case 2: break;
        case 3:
          dat[0]=d.substr(0,1);
          dat[1]=d.substr(1,2);
          break;
        case 4:
          dat[0]=d.substr(0,2);
          dat[1]=d.substr(2,2);
          break;
        case 5:
          if (d.substr(1,2)>12) {
            dat[1]=d.substr(0,1);
            dat[2]=d.substr(1,4);
            break;
          }
          else {
            dat[0]=d.substr(0,1);
            dat[1]=d.substr(1,2);
            dat[2]=d.substr(3,2);
            break;
          };

        case 6:
          if (d.substr(2,2)>12) {
            dat[1]=d.substr(0,2);
            dat[2]=d.substr(2,4);
            break;
          }
          else {
            dat[0]=d.substr(0,2);
            dat[1]=d.substr(2,2);
            dat[2]=d.substr(4,2);
            break;
          };
        case 7:
          dat[0]=d.substr(0,1);
          dat[1]=d.substr(1,2);
          dat[2]=d.substr(3,4);
          break;
        case 8:
          dat[0]=d.substr(0,2);
          dat[1]=d.substr(2,2);
          dat[2]=d.substr(4,4);
          break;
        default:
          dat[0]=d.substr(0,2);
          dat[1]=d.substr(2,2);
          dat[2]=d.substr(4,4);
          break;
      };
    };
  };
  da='';
  if (dat[0]!=-1 || dat[1]!=-1 || dat[2]!=-1) {
    dat[0]=Number(dat[0]);
    dat[1]=Number(dat[1]);
    dat[2]=Number(dat[2]);

    if (dat[2]==-1) {
      dat[2]=new Date().getFullYear();
    };
    if (dat[2]<50) {
      dat[2]=dat[2]+2000;
    };
    if (dat[2]<100) {
      dat[2]=dat[2]+1900;
    };
    if (dat[2]<1900 || dat[2]>2050) {
      dat[2]=-1;
    };

    if (dat[1]<1 || dat[1]>12) {
      dat[1]=-1;
    };

    if (dat[0]==-1 && dat[1]!=-1 && dat[2]!=-1 ) {
      if (endflag!=1) {
        dat[0]=1;
      }
      else {
        dat[0]=getmonthdays(dat[1],dat[2]);
      };
    };
    if (dat[0]!=-1 && dat[1]!=-1 && dat[2]!=-1) {
      da=dat[0]+'.'+dat[1]+'.'+dat[2]
    };
  };
  return da;
};

function getmonthdays(m,y) {
  if (y%4==0) {
   md=new Array(31,29,31,30,31,30,31,31,30,31,30,31);
  }
  else {
   md=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  };
 return md[m-1];
};