
var cal1;
var over_cal = false;
var cur_field = '';

function init() {
  cal1 = new YAHOO.widget.Calendar("cal1","cal1Container");
  cal1.selectEvent.subscribe(getDate, cal1, true);
  cal1.renderEvent.subscribe(setupListeners, cal1, true);
  cal1.render();
}

function setupListeners() {
  YAHOO.util.Event.addListener('cal1Container', 'mouseover', overCal);
  YAHOO.util.Event.addListener('cal1Container', 'mouseout', outCal);
}

function getDate() {
  var calDate = this.getSelectedDates()[0];
  var mon = calDate.getMonth() + 1;
  var day = calDate.getDate();
  if (mon < 10) {
    mon = '0' + mon;
  }
  if (day < 10) {
    day = '0' + day;
  }
  cur_field.value = mon + '/' + day + '/' + calDate.getFullYear();
  over_cal = false;
  hideCal();
}

function showCal(ev) {
  var tar = YAHOO.util.Event.getTarget(ev);
  cur_field = tar;
  var xy = YAHOO.util.Dom.getXY(tar);
  var date = YAHOO.util.Dom.get(tar).value;
  if (date) {
    cal1.cfg.setProperty('selected', date);
    cal1.cfg.setProperty('pagedate', new Date(date), true);
    cal1.render();
  } else {
    cal1.cfg.setProperty('selected', '');
    cal1.cfg.setProperty('pagedate', new Date(), true);
    cal1.render();
  }
  YAHOO.util.Dom.setStyle('cal1Container', 'display', 'block');
  xy[1] = xy[1] + 20;
  YAHOO.util.Dom.setXY('cal1Container', xy);
}

function hideCal() {
  if (!over_cal) {
    YAHOO.util.Dom.setStyle('cal1Container', 'display', 'none');
  }
}

function overCal() {
  over_cal = true;
}

function outCal() {
  over_cal = false;
}

YAHOO.util.Event.addListener(window, 'load', init);
