var oDatePicker;

var month_abbrevs = [
    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
    ];

var month_abbrev_months;

var DATE_SEPERATOR = '-'

window.onload = initDateControls;

function showDP(e)
{
    if ( !document.getElementById ) return;
    
    if( !e )
    {
        e = window.event;
    }
    var oTxt = (e.target) ? e.target : e.srcElement;
    var oTxtPos = getEltPos(oTxt);

    // since we control the text format in callback(), getting the date is easy
    var aDt = oTxt.value.split(DATE_SEPERATOR);
    var dt = null;
    if ( aDt && (aDt.length == 3) ) {
        dt = new Date(aDt[2], month_abbrev_months[aDt[1]], aDt[0]);
    }
 
    var callback =
        function(dt)
        {
            if (dt)
            {
                oTxt.value =
                    dt.getDate() + DATE_SEPERATOR
                    + month_abbrevs[dt.getMonth()] + DATE_SEPERATOR
                    + dt.getFullYear();
            }
            else
            {
                oTxt.value = '';
            }
        };

    oDatePicker.show(dt, oTxtPos.x, oTxtPos.y, callback);
}

// return a Date object based on the value of an <input> tag.
// The format of the tag's value must by "yyyy-mm-dd".
function getDateFromInput(id)
{
    var dateText = document.getElementById(id).value;
    var dateArr = dateText.split('-');
    
    if(dateText == '')
        return null;

    return new Date(dateArr[0], dateArr[1]-1, dateArr[2]);
}

function getEltPos(elt) {
   var tmpPos = { x: 0, y: 0 };

   if (elt.offsetParent)
   {
      while (elt.offsetParent)
      {
         tmpPos.x += elt.offsetLeft;
         tmpPos.y += elt.offsetTop;
         elt = elt.offsetParent;
      }
   }
   else if (elt.x || elt.y)
   {
      tmpPos.x += obj.x;
      tmpPos.y += obj.y;
   }

   return tmpPos;   
}

function initDateControls()
{
    month_abbrev_months = new Array();
    for (var i in month_abbrevs) {
        month_abbrev_months[month_abbrevs[i]] = i;
    }
    
    oDatePicker = new DatePicker('theDatePicker', new Date(1990,1,1), new Date(2100,12,31));

    var els = document.getElementsByTagName('input');
    
    for (var i = 0; i < els.length; i++)
    {
        var el = els[i];
        if( el.type == 'text' && el.name.match(/date/ig) )
        {
            el.onfocus = showDP;
            el.setAttribute("autocomplete","off");
        }
    }
}

