var menuwidth='141px' //default menu width
var menubgcolor='#EDF2F8'  //menu bgcolor
var disappeardelay=250  //menu disappear speed onMouseout (in miliseconds)
var hidemenu_onclick="yes" //hide menu when user clicks within menu?

/////No further editting needed

var ie4=document.all
var ns6=document.getElementById&&!document.all

if (ie4||ns6)
document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';background-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')

function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}


function showhide(obj, e, visible, hidden, menuwidth){
if (ie4||ns6)
dropmenuobj.style.left=dropmenuobj.style.top="-500px"
if (menuwidth!=""){
dropmenuobj.widthobj=dropmenuobj.style
dropmenuobj.widthobj.width=menuwidth
}
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
obj.visibility=visible
else if (e.type=="click")
obj.visibility=hidden
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
}
else{
var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
}
}
return edgeoffset
}

function populatemenu(what){
if (ie4||ns6)
dropmenuobj.innerHTML=what.join("")
}


function dropdownmenu(obj, e, menucontents, menuwidth){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
clearhidemenu()
dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
populatemenu(menucontents)

if (ie4||ns6){
showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)

dropmenuobj.x=getposOffset(obj, "left")
dropmenuobj.y=getposOffset(obj, "top")
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+141+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight-35+"px"
}

return clickreturnvalue()
}

function clickreturnvalue(){
if (ie4||ns6) return false
else return true
}

function contains_ns6(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function dynamichide(e){
if (ie4&&!dropmenuobj.contains(e.toElement))
delayhidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
delayhidemenu()
}

function hidemenu(e){
if (typeof dropmenuobj!="undefined"){
if (ie4||ns6)
dropmenuobj.style.visibility="hidden"
}
}

function delayhidemenu(){
if (ie4||ns6)
delayhide=setTimeout("hidemenu()",disappeardelay)
}

function clearhidemenu(){
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}

if (hidemenu_onclick=="yes")
document.onclick=hidemenu

/* Open window function */
function openWindow(url, width, height) {
  if (width == undefined)
    width = 400;
  if (height == undefined)
    height = 400;
  window.open(url,'subwin','width=' + width + ',height=' + height + ',scrollbars=1');
}
/* Josh's calendar functions */
var months = Array('January','February','March','April','May','June','July','August','September','October','November','December');
var date = new Date();
var date1;
var date2;
var cal;
var callback = false;

function showCalendar(e, d1, d2, cb) {
  callback = (cb != undefined);
  date1 = stringDateToNum(d1);
  date2 = stringDateToNum(d2);
  cal = document.getElementById('calendar');
  nextTo = whichElement(e);
  cal.style.top = getposOffset(nextTo, 'top') + 18 + 'px';
  cal.style.left = getposOffset(nextTo, 'left') + 'px';
  cal.style.display = (cal.style.display == 'block') ? 'none' : 'block';
  date.setFullYear(d1.substring(0,4));
  date.setMonth(d1.substring(5,7) - 1);
  date.setMonth(d1.substring(5,7) - 1);
  drawDays();
}
function drawDays() {
  date.setDate(1);
  month = document.getElementById('calendar_head');
  month_num = date.getMonth();
  month.innerHTML = months[month_num] + ' ' + date.getFullYear();
  day = date.getDay();
  day--;
  if (day<0) day+=7;
  tds = cal.getElementsByTagName('td');
  d = 1;
  tempdate = new Date();
  tempdate.setFullYear(date.getFullYear());
  tempdate.setMonth(date.getMonth());
  tempdate.setMonth(date.getMonth());
  tempdate.setDate(1);
 
  for (i=0 ; i<tds.length ; i++) {
    end = (i%7 == 5 || i%7 == 6);
    hl = 0;
    if (i < day)
      tds[i].innerHTML = '&nbsp;';
    else {
      tempdate.setDate(d);
      if (month_num == tempdate.getMonth()) {
        tds[i].innerHTML = d++;
        x = dateToNum(tempdate);
        hl = (date1 <= x && (date2 && x <= date2));
      } else
        tds[i].innerHTML = '&nbsp;';
    }
    if (hl && end)
      tds[i].className = 'hlend';
    else if (hl)
      tds[i].className = 'hl';
    else if (end)
      tds[i].className = 'end';
    else
      tds[i].className = '';
  }
}
function calendarClick(e) {
  el = whichElement(e);
  if (el.id == 'cal_right_btn')
    nextMonth();
  else if (el.id == 'cal_left_btn')
    prevMonth();
  else if (el.id == 'cal_close_btn')
    hideCalendar();
  else {
    if (el.tagName == 'TD' && el.innerHTML != '&nbsp;' && callback)
      changeDate(date.getFullYear(), date.getMonth() + 1, el.innerHTML);
    else
      hideCalendar();
  }
}
function hideCalendar() {
  cal.style.display = 'none';
}
function nextMonth() {
  month = date.getMonth();
  year = date.getFullYear();
  
  month++;
  if (month > 11) {
    month -= 12;
    year++;
  }
 
  date.setMonth(month);
  date.setYear(year);
  drawDays();
  
}
function prevMonth() {
  month = date.getMonth();
  year = date.getFullYear();
  month--;
  if (month < 0) {
    month += 12;
    year--;
  }
  //alert(month + ' ' + year);
  date.setMonth(month);
  date.setYear(year);
  drawDays();
}
function stringDateToNum(string) {
  return Number("" + string.substring(0,4) + string.substring(5,7) + string.substring(8,10));
}
function dateToNum(date) {
  year = date.getFullYear();
  month = "0" + (date.getMonth() + 1);
  if (month.length > 2)
    month = month.substr(1, 3);
  day = "0" + date.getDate();
  if (day.length > 2)
    day = day.substr(1, 3);
  return Number("" + year + month + day);
}
function whichElement(e)
{
var targ;
if (!e)
  {
  var e=window.event;
  }
if (e.target)
  {
  targ=e.target;
  }
else if (e.srcElement)
  {
  targ=e.srcElement;
  }
if (targ.nodeType==3) // defeat Safari bug
  {
  targ = targ.parentNode;
  }
return targ;
}