//  Calendar Popup
//  Written:  2003-02-20 by James Alarie <jalarie@umich.edu>
//    http://spruce.flint.umich.edu/~jalarie/
//
//  Within a form, create an input field and name it.  Create a link which
//  calls DatePop4 with the form number or name, the name of the input 
//  field, a format code, a beginning year, and an ending year.
//
//  Format code may be uppercase or lowercase.  Valid codes are:
//
//    yyyymmdd,                               for year, month, day; no separators (default)
//    mm-dd-yyyy, mm/dd/yyyy                  for month, day, year with specified separator
//    dd-mm-yyyy, dd/mm/yyyy                  for day, month, year with specified separator
//    mm-dd-yy, mm/dd/yy, dd-mm-yy, dd/mm/yy  for a two-digit year
//    dd-mon-yyyy, dd-mon-yy                  SQL
//    dd mon yyyy, dd mon yy                  SQL without dashes
//
//  Example:
//
//    <input type="text" name="Date1" id="Date1" />
//    <a href="javascript:void(0);" onclick="DatePop4('0','Date1','MM-DD-YYYY','1970','2069');">Get Date</a>
//
//  Works in frames.
//  Works in Firefox 1.0, Netscape 4.78 and 6.2, Internet Explorer 5.5, Opera 5.12.
//  Does not work in WebTV 2.6 nor Opera 5.11.
    
        function DatePop4(FNum,IName,Format,BYear,EYear) {
          if (FNum != -1) {                         // called from form
            GD_FNum=FNum;                           // the form number
            GD_IName=IName;                         // field name
            GD_Format=Format;                       // format specifier
            GD_Format=GD_Format.toLowerCase();
            GD_BYear=BYear;                         // beginning year
            GD_EYear=EYear;
            Now=new Date();
            Now_M=Now.getMonth()*1+1;               // Jan-Dec = 0-11
            Now_D=Now.getDate();                    // 1-31
            Now_Y=Now.getYear();
            if (Now_M < 10) { Now_M='0'+Now_M; }
            if (Now_Y < 70)   { Now_Y=Now_Y*1+2000; }
            if (Now_Y < 1000) { Now_Y=Now_Y*1+1900; }
            if (!GD_BYear) { GD_BYear=Now_Y-5; }
            if (!GD_EYear) { GD_EYear=Now_Y*1+5; }
            calendar_page4(Now_Y);
            return true;
          } else {                                  // callback from popup
            //  IName:
            //    -1 to set the date numbers
            //     0 to do the output
            //  output:
            //    document.forms[GD_FNum].GD_IName.value
            //
            var I0=PopUp1.document.forms[0].DatePop4_Sel0.selectedIndex;      // year
            var I0v=PopUp1.document.forms[0].DatePop4_Sel0.options[I0].value;
            var I1=PopUp1.document.forms[0].DatePop4_Sel1.selectedIndex;      // month
            var I2=PopUp1.document.forms[0].DatePop4_Sel2.selectedIndex;      // date
            var I2v=PopUp1.document.forms[0].DatePop4_Sel2.options[I2].value;
            if (I1 == 0) {                          // no month chosen
              alert('Please choose a month.');
              PopUp1.focus();
              PopUp1.document.forms[0].DatePop4_Sel1.focus();
              return false;
            }
            if (IName == -1) {                      // set the date numbers
              var DMax=31;
              if ((I1 == 4) || (I1 == 6) || (I1 == 9) || (I1 == 11)) { DMax=30; }
              if (I1 == 2) {                        // February
                if ((I0v%400 == 0)
                ||  ((I0v%100 != 0) && (I0v%4 == 0))) { // is a leap year
                  DMax=29;
                } else {
                  DMax=28;
                }
              }
              var Ab1=PopUp1.document.forms[0].DatePop4_Sel2;   // abbreviation
              for (DP4_ix1=1; DP4_ix1<=DMax; DP4_ix1++) {
                Ab1.options[DP4_ix1].value=DP4_ix1;
                Ab1.options[DP4_ix1].text=DP4_ix1;
              }
              for (DP4_ix1=DMax+1; DP4_ix1<=31; DP4_ix1++) {
                Ab1.options[DP4_ix1].value=0;
                Ab1.options[DP4_ix1].text='';
              }
              return true;
            }
            if ((I2 == 0) || (I2 != I2v)) {         // no date chosen
              alert('Please choose a date.');
              PopUp1.focus();
              PopUp1.document.forms[0].DatePop4_Sel2.focus();
              return false;
            }
            if (I1 < 10) { I1='0'+I1; }
            if (I2v < 10) { I2v='0'+I2v; }
            var Y2=I0v%100;                         // 2-digit year
            if (Y2 < 10) { Y2='0'+Y2; }
            var Months=new Array('January', 'February', 'March', 'April', 'May',
              'June', 'July', 'August', 'September', 'October', 'November', 'December');
            var Month=Months[I1-1];
            var Mabr=new Array('JAN','FEB','MAR','APR','MAY',
              'JUN','JUL','AUG','SEP','OCT','NOV','DEC');
            Out=''+Now_Y+I1+I2v;                    // default format is YYYYMMDD
            if (GD_Format == 'mm-dd-yyyy')  { Out=I1+'-'+I2v+'-'+I0v; }
            if (GD_Format == 'mm/dd/yyyy')  { Out=I1+'/'+I2v+'/'+I0v; }
            if (GD_Format == 'dd-mm-yyyy')  { Out=I2v+'-'+I1+'-'+I0v; }
            if (GD_Format == 'dd/mm/yyyy')  { Out=I2v+'/'+I1+'/'+I0v; }
            if (GD_Format == 'mm-dd-yy')    { Out=I1+'-'+I2v+'-'+Y2; }
            if (GD_Format == 'mm/dd/yy')    { Out=I1+'/'+I2v+'/'+Y2; }
            if (GD_Format == 'dd-mm-yy')    { Out=I2v+'-'+I1+'-'+Y2; }
            if (GD_Format == 'dd/mm/yy')    { Out=I2v+'/'+I1+'/'+Y2; }
            if (GD_Format == 'dd-mon-yyyy') { Out=I2v+'-'+Mabr[I1-1]+'-'+I0v; }
            if (GD_Format == 'dd-mon-yy')   { Out=I2v+'-'+Mabr[I1-1]+'-'+Y2; }
            if (GD_Format == 'dd mon yyyy') { Out=I2v+' '+Mabr[I1-1]+' '+I0v; }
            if (GD_Format == 'dd mon yy')   { Out=I2v+' '+Mabr[I1-1]+' '+Y2; }
            document.forms[GD_FNum][GD_IName].value=Out;
            PopUp1.window.close();
            return true;
          }
          return true;
        } // DatePop4
        
        
        function calendar_page4(yr4) {
          Opts='width=200,height=200,resizable,scrollbars';
          PopUp1=window.open('','DatePop',Opts);
          Out ='';
          Out+='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n';
          Out+='  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n';
          Out+='\n';
          Out+='<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">\n';
          Out+='  <head>\n    <title>Calendar Popup 4<\/title>\n';
          Out+='    <meta http-equiv="Content-Script-Type" content="text\/javascript" \/>\n';
          Out+='    <meta http-equiv="Content-Style-Type" content="text\/css" \/>\n';
          Out+='    <meta http-equiv="PICS-Label" content=\'(PICS-1.1 "http:\/\/www.classify.org\/safesurf\/" l gen true for "http:\/\/spruce.flint.umich.edu\/~jalarie\/" r (SS~~000 1))\' \/>\n';
          Out+='    <meta http-equiv="pics-Label" content=\'(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http://spruce.flint.umich.edu/~jalarie" r (n 0 s 0 v 0 l 0 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 0)  gen true for "http://www.spruce.flint.umich.edu/~jalarie" r (n 0 s 0 v 0 l 0 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 0))\' />\n';
          Out+='    <link rel="meta" href="http://spruce.flint.umich.edu/~jalarie/labels.rdf" type="application/rdf+xml" title="ICRA labels" />\n';
          Out+='    <link href="style1.css" rel="stylesheet" type="text\/css" \/>\n';
          Out+='  <\/head>\n';
          Out+='  <body class="body1">\n';
          Out+='   <div id="body">\n';
          Out+='    <div class="center">\n';
          Out+='      <form action="javascript:void(0);">\n';
            PopUp1.document.write(Out);          
          Out ='        <select name="DatePop4_Sel0" id="DatePop4_Sel0">\n';
          for (DP4_ix1=GD_BYear; DP4_ix1<=GD_EYear; DP4_ix1++) {
            if (DP4_ix1 == Now_Y) {                 // current year
              Out+='          <option value="'+DP4_ix1+'" selected="selected">'+DP4_ix1+'<\/option>\n';
            } else {
              Out+='          <option value="'+DP4_ix1+'">'+DP4_ix1+'<\/option>\n';
            }
          }
          Out+='        <\/select>\n';
          Out+='        <br \/><br \/>\n';
            PopUp1.document.write(Out);
          Out ='        <select name="DatePop4_Sel1" id="DatePop4_Sel1" onblur="self.opener.DatePop4(-1,-1);">\n';
          Out+='          <option selected="selected">- pick month -<\/option>\n';
          Out+='          <option>January<\/option>\n';
          Out+='          <option>February<\/option>\n';
          Out+='          <option>March<\/option>\n';
          Out+='          <option>April<\/option>\n';
          Out+='          <option>May<\/option>\n';
          Out+='          <option>June<\/option>\n';
          Out+='          <option>July<\/option>\n';
          Out+='          <option>August<\/option>\n';
          Out+='          <option>September<\/option>\n';
          Out+='          <option>October<\/option>\n';
          Out+='          <option>November<\/option>\n';
          Out+='          <option>December<\/option>\n';
          Out+='        <\/select>\n';
          Out+='        <br \/><br \/>\n';
            PopUp1.document.write(Out);
          Out ='        <select name="DatePop4_Sel2" id="DatePop4_Sel2">\n';
          Out+='          <option selected="selected">- pick date -<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option><option>-<\/option>\n';
          Out+='          <option>-<\/option>\n';
          Out+='        <\/select>\n';
          Out+='        <br \/><br \/>\n';
            PopUp1.document.write(Out);
          Out ='        <input type="button" value="Ready" alt="Ready" title="Ready" onclick="self.opener.DatePop4(-1,0);" \/>\n';
          Out+='      <\/form>\n';
          Out+='    <\/div><!\-\- center \-\->\n';
          Out+='   <\/div>\n';
          Out+='  <\/body>\n<\/html>\n';
            PopUp1.document.write(Out);
          PopUp1.document.close();
          PopUp1.focus();
          return true;
        } // calendar_page4
