/* javascript created 05-06-2010 by Mel Knoyle */

/*global document, alert, confirm, open */

  function leapadj(yyyy) {		// leapyear test
      if (((yyyy % 4) === 0) && ((yyyy % 100) !== 0) || ((yyyy % 400) === 0)) { return 1; } else { return 0; }    
  }	                                                         // end of leapyear test

  function daysInMonth(month, year) {
      var leap = leapadj(year);
      if (month === 1) {                                        //Test for February
          return (leap + 28);
      }
      if (month === 3 || month === 5 || month === 8 || month === 10) {   //Test for April, June, September and November
          return (30);
      } 
      else { return (31);} 
  }	                                                          // end of days in month function

  function monthname(m) {
         var moname = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
         return moname[m];
  }

  function dayname(d) {
         var dyname = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; 
         return dyname[d];
  }


function monthTable(cal, mday, month, year, startday, maxdays, plannerdte) {
    var nextday = 1;                                                                // days in the month start with 1
    var inmonth = 0;                                                               // days prior to first = false (0), 1st and after is true (1)
    var i = 0;	
    cal += '<table class="calendar">\n';
    cal += ' <tr class="header"><th colspan = "7">' + month + '  ' + year + '<\/th><\/tr>';
    cal += '\n <tr class="cal"><th>Su<\/th><th>Mo<\/th><th>Tu<\/th><th>We<\/th><th>Th<\/th><th>Fr<\/th><th>Sa<\/th><\/tr>';
    while (nextday <= maxdays) {
        for (i = 0; (i < 7); i++) { 
            if (i === 0) {
                cal += '\n <tr>';
            }    
            inmonth += (i === startday);
            if ((nextday === mday) && !plannerdte && inmonth) { 
                cal += '<td class="today">';			// highlight current day of the month if default date
            } else {
                cal += '<td>';
            }
    
            if (((i < startday) && (nextday === 1)) || (nextday > maxdays)) {
                cal += ' ';					// before the 1st or after the last day of the month
            } else {
                cal += ' ' + nextday + ' ';
                nextday += 1;
            }
            cal += '<\/td>';
            if (i === 6) {
                cal += '<\/tr>';
            }
        }
    }
    cal += '\n <\/table>\n';
    return cal;
}

  function planner()  {
        var  d, i, k;
        var username = document.getElementById('who').value, ck = "&copy; 2010 by   Mel Knoyle", plannerdte= document.getElementById("dte").value, ndays= parseInt(document.getElementById("edte").value,10);
        if(plannerdte) {d = new Date(plannerdte);} else {d = new Date();}
        var md = parseInt(d.getDate(),10), n = 0;
        if(!md) {alert("Please enter the date in the format mm/dd/yyyy or \n leave the field blank to use the current date."); return; }
        var wd = d.getDay(), fy = d.getFullYear(), mm = d.getMonth(), dm = daysInMonth(mm,fy), days = dm, sd = new Date(fy, mm, 1);
        sd = sd.getDay();
        if(ndays) {
            if(ndays <= (dm-md+1)) {
                days = md + ndays - 1;
            } else {
                 var ans = confirm("There are only " + (dm-md+1) + " days remaining in " + monthname(mm) + " in " + fy + ".");
                 if(ans === false) { 
                     document.form.edte.focus();
                     return;
                 }
            }
        }
        var month = monthname(mm), pic = "picture1a.jpg", cal = "";
        cal = monthTable(cal, md, month, fy, sd, dm, plannerdte);
        var content='<!DOCTYPE HTML PUBLIC "-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN" "http:\/\/www.w3.org/TR/html4\/loose.dtd">\n';
        content+='<html>\n';
        content+='<head>\n';
        content+='<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">\n';
        content+='<title>Monthly Planner<\/title>\n';
        content+='<link rel="stylesheet" href="planner.css" type="text\/css">\n';
        content+='<\/head>\n';
        content+='<body>\n';
        content+='<div id="wrapper">\n';
        content+='<div id="title">';
        if(username) { content+=' ' + username + '\'s '; }
        content+=' Monthly&nbsp;Planner ';
        content+='<\/div> \n   ' + cal + '\n';
        content+='<div id="picture"><img src="' + pic + '" alt="" width="600" height="450"><\/div>\n'; 
        content+='<br class="pagebreak">\n';
        for(i=md; i<=days; i=i+1) { 
            d = new Date(month+" "+i+", "+fy); wd = d.getDay();
            content+='<table><tr class="header"><th colspan="4"  class="day' + n + '">' + month + ' ' + i + ', ' + fy + ' ToDo List<\/th><\/tr>\n';
            content+='<tr><th class="col1"></th><th class="col2 weekday' + n + '">' + dayname(wd) + '<\/th><th class="col3">Notes<\/th><th class="col4">Due by<\/th><\/tr>\n';
            for(k=1; k<=12; k=k+1) {
                 content +=' <tr><td style="text-align:right;">' + k + '</td><td> <\/td><td> <\/td><td><\/td><\/tr>';
            }
        content+='<\/table>\n';
        if((n===2)&&(i<days)) { 
                content+='<br class="pagebreak">\n'; n = 1;
        } else { n = 2;}
    }
    content+=ck+'\n  <\/div>\n<\/body>\n<\/html>';
                         // *********************** Write Planner Output ***************************
    var plannerwindow = open('','_self','top=80,left=28,scrollbars=yes,location=yes,status=yes,resizable=yes,toolbar=yes,menubar=yes');
    plannerwindow.document.write(content);
    plannerwindow.document.close();
  }


