// width 200 height 160

function Browser() {
  this.version = navigator.appVersion;
  this.agent = navigator.userAgent;
  this.dom = document.getElementById;

  this.ie5 = this.version.indexOf("MSIE 5")>-1;
  this.ie6 = this.version.indexOf("MSIE 6")>-1;
  this.ie4 = document.all && !this.dom;
  this.ie = this.ie4 || this.ie5 || this.ie6;

  this.ns6 = this.dom && this.agent.indexOf("Netscape6")>-1;
  this.ns4 = document.layers && !this.dom;
}

browser = new Browser();

var calendarMonth;
var calendarYear;
var dateObj;
var callback;

var SMONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

var DOMONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var LDOMONTH =  [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];


function getDaysOfMonth() {
	if ((calendarYear % 4) == 0) {
		if ((calendarYear % 100) == 0 && (calendarYear % 400) != 0)
			return DOMONTH[calendarMonth];
		return LDOMONTH[calendarMonth];
	} else return DOMONTH[calendarMonth];
}

function calShow(obj, oName, cbf) {
  callback = cbf;
  if(cbf==null) callback = '';
  var curDate = new Date();
  dateObj = eval("document."+oName);
  var dateValue = dateObj.value;
  if(dateValue.length <11 || dateValue.length>12) {
    calendarMonth = curDate.getMonth();
    calendarYear = curDate.getUTCFullYear();
  } else {
    var strMonth = dateValue.substring(0,3);
    for(var i=0;i<SMONTHS.length;i++)
      if(strMonth == SMONTHS[i]) {
        calendarMonth = i;
        break;
      }
    // var strDay = dateValue.substring(5,7);
    calendarYear = eval(dateValue.substring(7));
  }

  var objCalDiv = document.getElementById("the_calendar");
  var x=0;y=obj.offsetHeight;
  for(var i=0;i<15 && obj!=null;i++) {
    x+=obj.offsetLeft;
    y+=obj.offsetTop;
    obj=obj.offsetParent;
  }
  var oleft = x - 64;
  var otop = y + 3;

  // alert(otop + " " + document.body.offsetHeight);
  if(otop + 180 > document.body.offsetHeight) otop = y - 174;
  if(oleft + 220 > document.body.offsetWidth) oleft = x + dateObj.offsetWidth - 200;
  if(oleft < 0) oleft = 10;
  if(otop < 0) otop = 10;

  objCalDiv.style.left = oleft;
  objCalDiv.style.top = otop;

  calBuild();

  if(browser.ie) objCalDiv.filters[0].Apply();
  objCalDiv.style.visibility="visible";
  if(browser.ie) objCalDiv.filters[0].Play();
}

function calYdec() {
  calendarYear--;
  calBuild();
}

function calYinc() {
  calendarYear++;
  calBuild();
}

function calMdec() {
  calendarMonth--;
  if(calendarMonth<0) {
    calendarYear--;
    calendarMonth=11;
  }
  calBuild();
}

function calMinc() {
  calendarMonth++;
  if(calendarMonth>11) {
    calendarYear++;
    calendarMonth=0;
  }
  calBuild();
}

function calBuild() {
  var curDate = new Date();
  var curDay = 0;
  if(calendarYear == curDate.getUTCFullYear() && calendarMonth == curDate.getMonth()) curDay=curDate.getDate();

  var cDate = new Date(calendarYear,calendarMonth,1);
  var tdMonth = document.getElementById("month");
  tdMonth.innerHTML = MONTHS[calendarMonth] + " " + calendarYear;

  var ds = cDate.getDay();
  if(ds==0) ds=7;

  var dom = getDaysOfMonth();
  for(var i=1;i<=35;i++) {
    var tday = document.getElementById("day"+i);
    if(i>=ds && i<ds+dom) {
      tday.day = i-ds+1;
      if(tday.day==curDay) tday.innerHTML="<b><font color='FF8000'>"+tday.day+"</font></b>";
      else tday.innerHTML = tday.day;
      tday.className="calhand";
    } else {
      tday.day=null;
      tday.innerHTML="&nbsp;";
      tday.className="";
    }
  }
}

function dayon(obj) {
  if(!obj.day) return;
  obj.className="calhandl";
}

function dayoff(obj) {
  if(!obj.day) return;
  obj.className="calhand";
}

function daysel(obj) {
  if(!obj.day) return;
  var saveval = dateObj.value;
  dateObj.value=SMONTHS[calendarMonth] + " " + obj.day + ", " +calendarYear;
  if(saveval != dateObj.value && callback.length>0) eval(callback);
  calHide();
}

function calClear() {
  dateObj.value="-";
  calHide();
}

function calHide() {
  var objCalDiv = document.getElementById("the_calendar");
  if(browser.ie) objCalDiv.filters[0].Apply();
  objCalDiv.style.visibility="hidden";
  if(browser.ie) objCalDiv.filters[0].Play();
}
