var Now = new Date();

function dateDiff(date1, date2) {

  if (typeof date1 == 'object') date1 = new Date(date1.valueOf()); 
  else if (typeof date1 == 'string') { var d1 = date1.split(' '), date1 = new Date(d1[0]*1, (d1[1]-1)*1, d1[2]*1); }

  if (typeof date2 == 'object') date2 = new Date(date2.valueOf());
  else if (typeof date2 == 'string') { var d1 = date2.split(' '), date2 = new Date(d1[0]*1, (d1[1]-1)*1, d1[2]*1); }

  var d = date1.valueOf() - date2.valueOf();

  var a = Math.ceil(d/1000); 
  a = Math.ceil(a/60);
  a = Math.ceil(a/60);
  a = Math.ceil(a/24);

  return a;

}

var DateDiff = dateDiff;

function dateAdd(timeU, byMany, dateObj) {

  if (typeof dateObj == 'object') dateObj = new Date(dateObj.valueOf()); 
  else if (typeof dateObj == 'string') { var d1 = dateObj.split(' '), dateObj = new Date(d1[0]*1, (d1[1]-1)*1, d1[2]*1); }

  var millisecond=1;
  var second=millisecond*1000;
  var minute=second*60;
  var hour=minute*60;
  var day=hour*24;
  var year=day*365;

  var newDate, dVal=dateObj.valueOf();
  switch(timeU) {
    case "ms": newDate=new Date(dVal+millisecond*byMany); break;
    case "s":  newDate=new Date(dVal+second*byMany); break;
    case "mi": newDate=new Date(dVal+minute*byMany); break;
    case "h":  newDate=new Date(dVal+hour*byMany); break;
    case "d":  newDate=new Date(dVal+day*byMany); break;
    case "y":  newDate=new Date(dVal+year*byMany); break;
  }

  return newDate;

}

    var dateParser = {
        ddmmyyyy: function(dateStr, splitter){
            var dt = new Date();
            var splt = splitter || '/';
            var arr = dateStr.split(splt);
            dt.setFullYear(arr[2]*1);
            dt.setMonth(arr[1]*1-1, arr[0]*1);
            return dt;
        }
        ,ddMMMMyyyy: function(dateStr){
            var dt = new Date();
            var arr = dateStr.split(' ');
            dt.setFullYear(arr[2]*1);
            dt.setMonth({January:0, February:1, March:2, April:3, May:4, June:5, July:6, August:7, September:8, October:9, November:10, December:11}[arr[1]], arr[0]*1);
            return dt;
        }
    };

    var dateFormatter = {
        dmyyyy: function(dateObj, splitter) {
            return dateObj.getDate() + splitter + (dateObj.getMonth() + 1) + splitter + dateObj.getFullYear();
        }

       , ddmmyyyy: function(dateObj, splitter) {
           var day = dateObj.getDate(); if (day.length == 1) day = '0' + day;
           var month = dateObj.getMonth() + 1; if (month.length == 1) month = '0' + month;
           return day + splitter + month + splitter + dateObj.getFullYear();
       }

       , mdyyyy: function(dateObj, splitter) {
           return (dateObj.getMonth() + 1) + splitter + dateObj.getDate() + splitter + dateObj.getFullYear();
       }

       , mmddyyyy: function(dateObj, splitter) {
           var day = dateObj.getDate(); if (day.length == 1) day = '0' + day;
           var month = dateObj.getMonth() + 1; if (month.length == 1) month = '0' + month;
           return month + splitter + day + splitter + dateObj.getFullYear();
       }
       

    };