 var Months = new Array();
 Months[0]  = 'January';
 Months[1]  = 'February';
 Months[2]  = 'March';
 Months[3]  = 'April';
 Months[4]  = 'May';
 Months[5]  = 'June';
 Months[6]  = 'July';
 Months[7]  = 'August';
 Months[8]  = 'September';
 Months[9]  = 'October';
 Months[10] = 'November';
 Months[11] = 'December';

var sb_cal_offset = 0;
var cal_field;
var cal_form;
var cal_field_name;

function sb_new_calendar(Form, Field) {
 cal_field_name = Field;
 cal_form  = Form;
 cal_field = document[Form][Field]; 
/* 
 Cal = document.getElementById('sb_cal');
 Pos = getPos(cal_field);
 Cal.style.display = 'block';
 Cal.style.top  = Pos.top + cal_field.offsetHeight+"px";
 Cal.style.left = Pos.left+"px";
*/

 sb_calendar(0);

// escapeNode(Cal);
}

function sb_calendar(offset) {
 if(offset == 0)
  sb_cal_offset = 0;
 else
  sb_cal_offset += offset;
 tBody = document.getElementById('sb_cal_tbody');
 while(tBody.firstChild) {
  tBody.removeChild(tBody.firstChild);
 }

 var now = sb_cal_default();
 var Year = now.getFullYear();
 var Month = now.getMonth();

 thisDate = new Date(Year, Month + sb_cal_offset, 1);
 thisDay   = thisDate.getDate();
 thisMonth = thisDate.getMonth();
 thisYear =  thisDate.getFullYear();


 document.getElementById('plus_year').innerHTML = thisYear;
 document.getElementById('plus_month').innerHTML = Months[thisMonth];

 var Day = 1;
 do {
  day_of_week  = thisDate.getDay();
  if(Day==1 || day_of_week == 0) {
   var row = document.createElement('tr');
   tBody.appendChild(row); 
  }

  if(Day == 1 && day_of_week > 0) {
   for(var i = 0; i < day_of_week; i++ ) {
    var td=document.createElement('td');
    td.innerHTML='&nbsp;';
    row.appendChild(td);
   }
  }

  var td = document.createElement('td');
  td.style.cursor = 'pointer';
  row.appendChild(td);
  td.innerHTML=Day;

  if(thisYear == now.getFullYear() && thisMonth == now.getMonth() && Day == now.getDate()) {
   td.className = 'sb_cal_on';
  }
  else {
  td['onmouseover']=sb_cal_over;
  td['onmouseout']=sb_cal_out;
  }
  td['onclick']=sb_cal_click;

  thisDate.setDate(++Day);
 }
 while(thisDate.getMonth()==thisMonth);

 if(day_of_week != 6) {
  for(var i = 6; i > day_of_week; i--) { 
   var td=document.createElement('td');
   td.innerHTML='&nbsp;';
   row.appendChild(td);
  }
 }
}

function sb_cal_over(evt) {
 if(evt) {
  thisId = evt.target;
 }
 else {
  thisId = event.srcElement;
 }
 thisId.className = 'sb_cal_on';
}
function sb_cal_out(evt) {
 if(evt) {
  thisId = evt.target;
 }
 else {
  thisId = event.srcElement;
 }
 thisId.className = '';
}

function sb_cal_click(evt) {
 if(evt) {
  thisId = evt.target;
 }
 else {
  thisId = event.srcElement;
 }

 var now = sb_cal_default();
 var Year =  now.getFullYear();
 var Month = now.getMonth();

 thisDate = new Date(Year, Month + sb_cal_offset, 1);

 var Year  =  thisDate.getFullYear();
 var Month =  number_pad(thisDate.getMonth() + 1, 2);
 var Day   =  number_pad(thisId.innerHTML, 2);

 cal_field.value = Year+'-'+Month+'-'+Day;
 escapeClear();
 clear_error(cal_field);
 cal_field.onchange();
}

function sb_cal_default() {
 var now = new Date();

 if (cal_field.value) {
  var date_str = cal_field.value.replace(/\-/g, '/');
  var default_date = new Date(date_str);
  if (default_date.toString() != 'Invalid Date') {
   now = default_date;
  }
 }
 return now;
}