/**
 * Date/time utility library
 *
 * @author Andrejs Semovs, "ALT RD" SIA <andrejs@alt.lv>
 * @copyright Copyright &copy; 2004-2006, Andrejs Semovs, "ALT RD" SIA
 *
 * Depends on: utils.js
 */

function splitDate(str, s) {
   if(!s) s = "-";
   return str.split(s);
}

function splitDateTime(str, sd, st, sm) {
   if(!sd) sd = "-";
   if(!st) st = ":";
   if(!sm) sm = ".";

   var i = str.indexOf(" ");

   if(i <= 0) {
      return str.split(sd);

   } else {
      var d = str.substring(0, i).split(sd);
      var t = str.substring(i + 1).split(st);

      if(t.length < 3) {
         if(typeof(t.length) != "number" || !t.length) t = [];
         for(j = 0; j < 5 - t.length; j++) {
            t[t.length] = "00";
         }

      } else {
         if(t[2].indexOf(sm) > 0) {
            var m = t[2].split(".");
            t[2] = m[0];
            t[3] = m[1];
         } else t[3] = "00";
      }
      return d.concat(t);
   }
}

function checkDate(myYear, myMonth, myDay) {
   /* If the first parameter is date string like '2005-03-09', then get it's
      components. */
   if(myYear.length >= 8) {
      var dateArr = splitDate(myYear, '-');
      if(dateArr.length != 3) dateArr = splitDate(myYear, '.');
      myYear = dateArr[0];
      myMonth = dateArr[1];
      myDay = dateArr[2];
   }

   /* Decrease month value by 1, because Date object count months from 0. */
   myMonth--;

   /* Create myDate object with given date */
   var myDate = new Date(myYear, myMonth, myDay);
   /* Create other Date object for comparison of dates */
   var compDate = new Date(myDate.getTime());

   /* Compare given date's month to calculated month by compDate */
   if(myMonth == compDate.getMonth()) return true;
   else return false;
}

function joinDate(fo, prefix, s) {
   var result = "";
   var tmp = "";
   var isset = false;

   if(!prefix) prefix = "date";
   if(!s) s = "-";

   var fields = [prefix + "_year", prefix + "_month", prefix + "_day"];

   for(var i = 0; i < fields.length; i++) {
      if(typeof(fo.elements[fields[i]]) != "undefined") {
         if(i) tmp = leadZero(fo.elements[fields[i]].value);
         else tmp = fo.elements[fields[i]].value;
         isset = true;

      } else {
         if(i) tmp = "00";
         else tmp = "0000";
      }

      if(result.length) result += s;
      result += tmp;
   }

   return isset ? result : false;
}

function compareDateTime(src_date1, src_date2) {
   var sd1 = splitDateTime(src_date1, "-");
   var sd2 = splitDateTime(src_date2, "-");

   var date1 = sd1.length > 3 ? new Date(sd1[0], sd1[1], sd1[2], sd1[3], sd1[4], sd1[5], sd1[6]) :
                                new Date(sd1[0], sd1[1], sd1[2]);

   var date2 = sd2.length > 3 ? new Date(sd2[0], sd2[1], sd2[2], sd2[3], sd2[4], sd2[5], sd2[6]) :
                                new Date(sd2[0], sd2[1], sd2[2]);

   return date1.getTime() - date2.getTime();
}

