// fixPosition() attaches the element named eltname
// to an image named eltname+'Pos'
//
function fixPosition(divname) {
     divstyle = getDivStyle(divname);
     positionerImgName = divname + 'Pos';
     // hint: try setting isPlacedUnder to false
     isPlacedUnder = false;
     if (isPlacedUnder) {
        setPosition(divstyle,positionerImgName,true);
     } else {
        setPosition(divstyle,positionerImgName)
     }
}

function toggleDatePicker(eltName,formElt) {
  var x = formElt.indexOf('.');
  var formName = formElt.substring(0,x);
  var formEltName = formElt.substring(x+1);
  newCalendar(eltName,document.forms[formName].elements[formEltName]);
  toggleVisible(eltName);
}

// fixPositions() puts everything back in the right place after a resize.
function fixPositions()
{
 // add a fixPosition call here for every element
 // you think might get stranded in a resize/reflow.
 fixPosition('daysOfMonth');
}

     // how reliable is this test?
     isIE = (document.all ? true : false);
	 isDOM = (document.getElementById ? true : false);

         // Initialize arrays.
         var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
	                            "Aug", "Sep", "Oct", "Nov", "Dec");
         var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,
            30, 31, 30, 31);
	 var displayMonth = new Date().getMonth();
	 var displayYear = new Date().getFullYear();
	 var displayDivName;
	 var displayElement;

         function getDays(month, year) {
            // Test for leap year when February is selected.
            if (1 == month)
               return ((0 == year % 4) && (0 != (year % 100))) ||
                       (0 == year % 400) ? 29 : 28;
            else
               return daysInMonth[month];
         }

         function getToday() {
            // Generate today's date.
            this.now = new Date();
            this.year = this.now.getFullYear();
            this.month = this.now.getMonth();
            this.day = this.now.getDate();
         }

         // Start with a calendar for today.
         today = new getToday();

         function newCalendar(eltName,attachedElement) {
	    if (attachedElement) {
	       if (displayDivName && displayDivName != eltName) hideElement(displayDivName);
	       displayElement = attachedElement;
	    }
	    displayDivName = eltName;
            today = new getToday();
            var parseYear = parseInt(displayYear + '');
            var newCal = new Date(parseYear,displayMonth,1);
            var day = -1;
            var startDayOfWeek = newCal.getDay();
            if ((today.year == newCal.getFullYear()) &&
                  (today.month == newCal.getMonth()))
	    {
               day = today.day;
            }
            var intDaysInMonth =
               getDays(newCal.getMonth(), newCal.getFullYear());
            var daysGrid = makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal,eltName)
	    if (isIE) {
	       var elt = document.all[eltName];
	       elt.innerHTML = daysGrid;
            } else if (isDOM) {
	       var elt = document.getElementById(eltName);
	       elt.innerHTML = daysGrid;
	    } else {
	       var elt = document.layers[eltName].document;
	       elt.open();
	       elt.write(daysGrid);
	       elt.close();
	    }
	 }

	 function incMonth(delta,eltName) {
	   displayMonth += delta;
	   if (displayMonth >= 12) {
	     displayMonth = 0;
	     incYear(1,eltName);
	   } else if (displayMonth <= -1) {
	     displayMonth = 11;
	     incYear(-1,eltName);
	   } else {
	     newCalendar(eltName);
	   }
	 }

	 function incYear(delta,eltName) {
	   displayYear = parseInt(displayYear + '') + delta;
	   newCalendar(eltName);
	 }

	 function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName) {
	    var daysGrid;
	    var month = newCal.getMonth();
	    var year = newCal.getFullYear();
	    var isThisYear  = (year == new Date().getFullYear());
	    var isThisMonth = (day > -1)
        var color;
        var dayColor    = "#333333";
        var todayColor  = "#cc0000";
        var selectColor = "#ffff99";
        var nextButton  = '<img src="/img_share/admin/calendrop_next.gif" border="0" hspace="4" class="inline">';
        var prevButton  = '<img src="/img_share/admin/calendrop_prev.gif" border="0" hspace="4" class="inline">';
        var closeButton = '<img src="/img_share/admin/calendrop_x.gif" border="0" hspace="4" vspace="1" class="inline">';
        var rollAttribs = 'style="cursor:pointer; cursor:hand;"'
                        + 'onMouseOver="this.style.backgroundColor=\'' + selectColor + '\';"'
                        + 'onMouseOut="this.style.backgroundColor=\'#ffffff\';" ';
        var mouseOff    = '';
        daysGrid = ''
             //titlebar
             + '<div class="calender_container"><table class="titlebar" width="156">'
             + '<tr><td align="center" class="calendrop">'
    	     + '<a href="javascript:incMonth(-1,\'' + eltName + '\')">' + prevButton + '</a>'
             + '<b>' + months[month] + '</b>'
             + '<a href="javascript:incMonth(1,\'' + eltName + '\')">' + nextButton + '</a>'
             + '&nbsp;'
             + '<a href="javascript:incYear(-1,\'' + eltName + '\')">' + prevButton + '</a>'
             + '<b>' + ''+year + '</b>'
             + '<a href="javascript:incYear(1,\'' + eltName + '\')">' +  nextButton + '</a>'
             + '</td><td align="right">'
             + '<a href="javascript:hideElement(\'' + eltName + '\')">' + closeButton + '</a>'
             + '</td></tr></table>'
             //weekdays (mo, tu, we...)
    		 + '<div style="border: 1px; background-color:#dddddd;">'
        	 + '<table cellpadding="2" cellspacing="1">'
        	 + '<tr align=\"center\" class="calendarHead">'
             + '<td width="17" class="calendarHead">Su</td>'
             + '<td width="17" class="calendarHead">Mo</td>'
             + '<td width="17" class="calendarHead">Tu</td>'
             + '<td width="17" class="calendarHead">We</td>'
             + '<td width="17" class="calendarHead">Th</td>'
             + '<td width="17" class="calendarHead">Fr</td>'
             + '<td width="17" class="calendarHead">Sa</td>'
             + '</tr><tr>';
		
	    var dayOfMonthOfFirstSunday = (7 - startDay + 1);
        //loop each week
	    for (var intWeek = 0; intWeek < 6; intWeek++) {
	       var dayOfMonth;
           //loop each day
	       for (var intDay = 0; intDay < 7; intDay++) {
	            dayOfMonth = (intWeek * 7) + intDay + dayOfMonthOfFirstSunday - 7;
		        //add space for days from the previous month
		        if (dayOfMonth <= 0) {
	                daysGrid += '<td class="calendarLink">&nbsp;</td> ';
		        } else if (dayOfMonth <= intDaysInMonth) {
        		   //choose color
                   color = dayColor;
        		   if (day > 0 && day == dayOfMonth) color = todayColor;
        		   //day cell
        		   daysGrid += '<td class="calendarLink" valign="bottom" align="center" ' 
                            + rollAttribs + ' onClick="javascript:setDay(' + dayOfMonth + ",'" + eltName + '\')">'
                            + '<a href="javascript:setDay(' + dayOfMonth + ',\'' + eltName + '\')" '
        		            + 'style="color:' + color + '">'
                    		+ dayOfMonth + '</a></td>';
        		   //if (dayString.length == 6) dayString = '0' + dayString;
		        }
                //daysGrid += "<td>" + dayOfMonth + "/" + intDaysInMonth + "</td>";
                if (dayOfMonth > intDaysInMonth && intDay <= 7){
                    daysGrid += "<td class=\"calendarLink\">&nbsp;</td>";
                }
	       }
		   // Restart if there's more
	       if (dayOfMonth < intDaysInMonth){
                daysGrid += "</tr><tr>";
           }else{
                break;
           }
	    }
	    return daysGrid + "</tr></table></div>";
	 }
        
	 function setDay(day,eltName) {
       displayYear = displayYear + '';
       
	   displayElement.value = padStr((displayMonth + 1)) + "/" + padStr(day) + "/" + displayYear.substring(2,4);
	   hideElement(eltName);
	 }

