 /*
  * Description  : Date and Time Object Constructor
  * Version      : 1.0
  * Date         : October 04, 2006
  * Developed by : Cris del Rosario
  *
  */

 dtocGet = function()  // create a custom date and time object
 {
    this.cTime = null;
    dtocGet.prototype.month = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    dtocGet.prototype.dayofweek = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
    dtocGet.prototype.yyyy = 0;
    dtocGet.prototype.mm = 0;
    dtocGet.prototype.dd = 0;
    dtocGet.prototype.hh = 0;
    dtocGet.prototype.ii = 0;
    dtocGet.prototype.ss = 0;
    dtocGet.prototype.ampm = "AM";
    dtocGet.prototype.args = arguments;

    dtocGet_init(dtocGet.prototype.args);

    function dtocGet_init(args)
    {
       try
       {
          var _yy = args[0];
          var _mm = args[1];
          var _dd = args[2];
          var _hh = args[3];
          var _ii = args[4];
          var _ss = args[5];
          var _syncServerTime = args[6];
       }
       catch(e) {
          _syncServerTime = false;
       }

       if (_syncServerTime) // sync client time with server time
           cTime = new Date(_yy,_mm,_dd,_hh,_ii,_ss);
       else
           cTime = new Date();
    }

    function getDate(dateFormat)
    {
       var textDate = "";
       var dateObj = dtocGet.prototype;

       dateObj.yyyy = cTime.getFullYear();
       dateObj.mm = cTime.getMonth();
       dateObj.dd = cTime.getDate();
       dateObj.hh = cTime.getHours();
       dateObj.ii = cTime.getMinutes();
       dateObj.ss = cTime.getSeconds();
       dateObj.ww = cTime.getDay();

       this.getDateFormat = function()
       {
          if ((dateObj.hh >= 12) && (dateObj.mm >= 1) || (dateObj.hh >= 13)) {
              dateObj.ampm = "PM";
              dateObj.hh = dateObj.hh - 12;
          }
          if (dateObj.hh == 0) {
              dateObj.hh = 12;
          }

          dateObj.nn = dateObj.nn < 10 ? "0" + dateObj.nn : dateObj.nn;
          dateObj.ss = dateObj.ss < 10 ? "0" + dateObj.ss : dateObj.ss;
          dateObj.ii = dateObj.ii < 10 ? "0" + dateObj.ii : dateObj.ii;

          var i = 0;
          while (i < dateFormat.length)
          {
                var n = dateFormat.charAt(i);
                if (n == "%") // parse date format
                {
                    if (i >= dateFormat.length)
                    {
                       // you gotta be kiddin me
                       textDate = textDate + n;
                       continue;
                    }
                    i++;
                    var f = dateFormat.charAt(i);
                    if (f == "y")
                        textDate = textDate + dateObj.yyyy;
                    else if (f == "m")
                        textDate = textDate + dateObj.mm;
                    else if (f == "M")
                        textDate = textDate + dtocGet.prototype.month[dateObj.mm];
                    else if (f == "d")
                        textDate = textDate + dateObj.dd;
                    else if (f == "h")
                        textDate = textDate + dateObj.hh;
                    else if (f == "i")
                        textDate = textDate + dateObj.ii;
                    else if (f == "s")
                        textDate = textDate + dateObj.ss;
                    else if (f == "a")
                        textDate = textDate + dateObj.ampm;
                    else if (f == "w")
                        textDate = textDate + dtocGet.prototype.dayofweek[dateObj.ww];
                    else 
                        textDate = textDate + f; // unrecognized
                }
                else { 
                    textDate = textDate + n; // allow literals
                }
                i++; // next character please
          }
          return textDate;
       }
    }

    this.show = function(parent,elementId,outputType,dateFormat,runnable)
    {       
       try
       {          
          var obj = document.getElementById(elementId);
          var cDate = new getDate(dateFormat);

          if (outputType == "form") {
              obj.value = cDate.getDateFormat();
          }
          else {
              obj.innerHTML = cDate.getDateFormat();
          }

          if (runnable) {
              setTimeout(parent + ".show(\"" + elementId + "\",\"" + outputType + "\",\"" + dateFormat + "\"," + runnable + ")",1000);
          }
       }
       catch (e) {
           // we do nothing
       }
    }

    function debug(text)
    {
       document.writeln("dbg: " + text);
    }

    return this;
 }
