var gPicker = null;
var gTarget = null;
var gContainer = null;
var gPopup = null;

function dp_popupDatePicker(elPicker, elTarget, elContainer) 
{
  if(elTarget.disabled) return;
  
  gPicker = elPicker;
  gTarget = elTarget;
  gContainer = elContainer;

  var content =
    '<html xmlns:c><body scroll="no" style="border: none; margin: 0; padding: 0;">' +
    '<?import namespace="c" implementation="/_include/clientside/datepicker/datepicker.htc">' +
    '<c:datepicker onPickDate="parent.dp_onClosePicker(this.selectedDate)" selectedDate="' + 
      elTarget.value + ',' + elContainer.dp_dateFormat + ',' + elContainer.dp_dateSeparator + '" ';
      
  var calWidth = elContainer.dp_width;
  var calHeight = elContainer.dp_height;
  
  if(calWidth || calHeight)
  {
    var style = 'style="';
    
    if(calWidth) style += ' width: ' + calWidth + ';';
    if(calHeight) style += ' width: ' + calHeight + ';';
    
    style += '" ';
    content += style;
  }

  // Styles 
  if(elContainer.dp_calendarClass)
    content += "calendarClass=\"" + elContainer.dp_calendarClass + "\" ";
  else if(elContainer.dp_calendarStyle)
    content += "calendarStyle=\"" + elContainer.dp_calendarStyle + "\" ";
  if(elContainer.dp_titleClass)
    content += "titleClass=\"" + elContainer.dp_titleClass + "\" ";
  else if(elContainer.dp_titleStyle)
    content += "titleStyle=\"" + elContainer.dp_titleStyle + "\" ";
  if(elContainer.dp_dayHeaderClass)
    content += "dayHeaderClass=\"" + elContainer.dp_dayHeaderClass + "\" ";
  else if(elContainer.dp_dayHeaderStyle)
    content += "dayHeaderStyle=\"" + elContainer.dp_dayHeaderStyle + "\" ";
  if(elContainer.dp_dayClass)
    content += "dayClass=\"" + elContainer.dp_dayClass + "\" ";
  else if(elContainer.dp_dayStyle)
    content += "dayStyle=\"" + elContainer.dp_dayStyle + "\" ";
  if(elContainer.dp_otherMonthDayClass)
    content += "otherMonthDayClass=\"" + elContainer.dp_otherMonthDayClass + "\" ";
  else if(elContainer.dp_otherMonthDayStyle)
    content += "otherMonthDayStyle=\"" + elContainer.dp_otherMonthDayStyle + "\" ";
  if(elContainer.dp_todayDayClass)
    content += "todayDayClass=\"" + elContainer.dp_todayDayClass + "\" ";
  else if(elContainer.dp_todayDayStyle)
    content += "todayDayStyle=\"" + elContainer.dp_todayDayStyle + "\" ";
  if(elContainer.dp_selectedDayClass)
    content += "selectedDayClass=\"" + elContainer.dp_selectedDayClass + "\" ";
  else if(elContainer.dp_selectedDayStyle)
    content += "selectedDayStyle=\"" + elContainer.dp_selectedDayStyle + "\" ";

  content += " /><body></html>"

  var width = gPicker.style.clientWidth;
  var height = gPicker.style.clientHeight;
  var left = gPicker.offsetWidth;
  var top = gPicker.offsetHeight;

  gPopup = window.createPopup();
  gPopup.document.write(content);

  var popupBody = gPopup.document.body;
  gPopup.show(0, 0, width, height);

  width = popupBody.scrollWidth;
  height = popupBody.scrollHeight;
  left -= width;

  gPopup.hide();
  gPopup.show(left, top, width, height, elPicker);
}

function dp_onClosePicker(dtSel) 
{
  if(dtSel != null) 
  {
    var year = dtSel.getYear();
    if(year < 1900) year += 1900;
    
    var sep = gContainer.dp_dateSeparator;
    var result = '';
    
    switch(gContainer.dp_dateFormat)
    {
      case 'DMY': result = dtSel.getDate() + sep + (dtSel.getMonth() + 1) + sep + year; break;
      case 'MDY': result = (dtSel.getMonth() + 1) + sep + dtSel.getDate() + sep + year; break;
      case 'YMD': result = year + sep + (dtSel.getMonth() + 1) + sep + dtSel.getDate(); break;
      default: result = '';
    }
    
    gTarget.value = result;
    gTarget.focus();

    if(gContainer.dp_autoPostBack) __doPostBack(gTarget.name, '');


  }

  gTarget = null;
  gContainer = null;

  gPopup.hide();
  gPopup = null;
}

