// Live calendar source file copyright 2001 David Lawver
//Please do not remove the URL below, I request the link for my services
  var HotShift = "http://hotshift.tripod.com";
  var OTon = 0;
  var PDon = 0;
  var RTon = 0;
  var FTon = 0;
  var NTon = 0;
  var LONGheading = "Black Butte Ranch RFPD";
  var codes = "ABC";
  var sequence = "ACABABCBC";
  var SeqDateFloor = new Date("January 01, 1970");
  var Seqstartdate = new Date("April 15, 1986");
  var colors = "#FF0000#0033FF#00ff40";
  var OTOffset = 19;
  var OTcycle = 27;
  var Rotcycle = 28;
  var Rotdate = new Date("November 22, 1996");
  var Paycycle = 14;
  var PaydayOffset = 1;
  var PaydayType = 2;
  var PaydayCount = 2;
  var Payday1 = 5;
  var Payday2 = 20;
  var OTfootnote = "Underline = Work Period";
  var PDfootnote = "$ = Payday";
  var TagCode = "D";
  var TableBGColor = "#000000";
  var TodayBGColor = "#000000";
  var HeadingColor = "#ffffff";
  var numcodes = codes.length;
  var cycle = sequence.length;
  var curdate = new Date();
  var curmonth = curdate.getMonth();
  var curyear = curdate.getFullYear();

  var htmlarray = new Array();
  var Days_in_Month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  if (navigator.appName == 'Netscape')
  var selectedLanguage = navigator.language;
  else
  var selectedLanguage = navigator.browserLanguage;
  var code = selectedLanguage.substring(0, 2)
    // IF FRENCH
if (code == 'fr') {
  var Month_Label = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
  var Day_Label = new Array('Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa');
}
    // IF GERMAN
else if (code == 'de') {
  var Month_Label = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
  var Day_Label = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
}
    // IF SPANISH
else if (code == 'es') {
  var Month_Label = new Array('Enero', 'Febrero', 'Marcha', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
  var Day_Label = new Array('Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa');
}
    // IF ENGLISH
else {
  var Month_Label = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
  var Day_Label = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
}
  var Day_Num = new Array(1, 2, 3, 4, 5, 6, 7);

  var Today = curdate.getDate();
  var htmlstring = "";

  var ie4=document.all;
  var ns6=document.getElementById&&!document.all;
  var Selected_Month;
  var Selected_Year;
function Header(Year, Month) {

   if (Month == 1) {
      if ((Year % 400 == 0) || ((Year % 4 == 0) && (Year % 100 != 0))) {
         Days_in_Month[1] = 29;
      }
   }
   var Header_String = Month_Label[Month] + ' ' + Year;
   return Header_String;
}

function Make_Calendar(Year, Month) {
   var Seqkeyday;
   var Rotkey;
   var Paykey;
   var codestring=" ";
   var colorcode;
   var daycount = 1;
   var loopcounter = 1;
   var u="";
   var uu="";

   if (Year <= 1970) {
    Year = 1970;
   }

   if (Year >= 2029) {
    Year = 2029;
   }
   var First_Date = new Date(Year, Month, 1);

   var Heading = Header(Year, Month);
   var First_Day = First_Date.getDay() ;
   if (((Days_in_Month[Month] == 31) && (Day_Num[First_Day] >= 6)) ||
       ((Days_in_Month[Month] == 30) && (Day_Num[First_Day] == 7))) {
      var Rows = 6;
   }
   else if ((Days_in_Month[Month] == 28) && (Day_Num[First_Day] == 1)) {
      var Rows = 4;
   }
   else {
      var Rows = 5;
   }

   htmlstring = '<center><table width=100%><tr><td valign="top"><table BORDER=5 CELLSPACING=1 cellpadding=3 FRAME="box" BGCOLOR="'+TableBGColor+'" BORDERCOLORLIGHT="808080">';
    htmlstring += '<tr><th colspan=7 BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + LONGheading + '</FONT></th></tr>';

    htmlstring += '<tr><td align="center" BGCOLOR="'+TableBGColor+'" height="5%" colspan="7" width="100%" nowrap><strong>';

    //Print each shift code in color

        for(i=0; i<=(numcodes-1); i++){
            codestring=codes.substr(i,1);
            htmlarray[i]=codestring.fontcolor(colors.substr(i*7,7));
            htmlstring += htmlarray[i];
        }
        if (RTon==1){
          htmlstring += TagCode;
        }
        htmlstring += '</strong></td>';
        htmlstring += '</tr>';

       htmlstring += '<tr><th colspan=7 BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Heading + '</th></tr>';

   htmlstring += '<tr><th width=14% ALIGN="CENTER" BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Day_Label[0] + '</th><th width=14% ALIGN="CENTER" BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Day_Label[1] + '</th><th width=14% ALIGN="CENTER" BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Day_Label[2] + '</th><th width=14% ALIGN="CENTER" BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Day_Label[3] + '</th>';

   htmlstring += '<th width=14% ALIGN="CENTER" BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Day_Label[4] + '</th><th width=14% ALIGN="CENTER" BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Day_Label[5] + '</th><th width=14% ALIGN="CENTER" BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Day_Label[6] + '</th></tr>';

   for (var j = 1; j <= Rows; j++) {
     htmlstring += '<tr ALIGN="center" VALIGN="top">';

      for (var i = 1; i < 8; i++) {
         if ((loopcounter >= Day_Num[First_Day]) && (daycount <= Days_in_Month[Month])) {

      var Current = new Date(Year, Month, daycount);

      var SMPLdaysdiff = days_diff(SeqDateFloor,Current);
      var OTdaysdiff = days_diff(SeqDateFloor,Current)+ OTOffset;
      var Rotdaysdiff = days_diff(SeqDateFloor,Current) + 6;
      var Paydaysdiff = days_diff(SeqDateFloor,Current);

      Seqkeyday = SMPLdaysdiff % cycle;
      codestring=sequence.substr(Seqkeyday,1);
      colorcode=colors.substr(codes.indexOf(codestring.substr(0,1))*7,7);
      Rotkey = Math.floor(Rotdaysdiff / Rotcycle) % 3;
      Paykey = Paydaysdiff % Paycycle;

      var daystr = daycount.toString();

      if (SMPLdaysdiff > -1){

      if (RTon==1){
        if (Rotkey == codes.indexOf(codestring.substr(0,1))) {
          if ((Rotdaysdiff % Rotcycle) > 1) {
          daystr += TagCode;
          }
        }
      }

      if (PDon==1){
         if (PaydayType==1){
           if (Paykey == PaydayOffset) {
           daystr = daystr + "$";
           }
         }
         if (PaydayType==2){
           if (Payday1 == daycount) {
           daystr = daystr + "$";
           }
           if (PaydayCount == 2) {
              if (Payday2 == daycount) {
              daystr = daystr + "$";
              }
           }
         }
         if (PaydayType==3){
           if (daycount == Days_in_Month[Month]) {
           daystr = daystr + "$";
           }
         }
      }

      }

      dayStr=(SMPLdaysdiff>=0 ? daystr.fontcolor(colorcode) : daystr.fontcolor("black"));

      if (OTon==1){
         if (OTdaysdiff>=0){
            if(Math.floor(OTdaysdiff/OTcycle/2)*2==Math.floor(OTdaysdiff/OTcycle)){
                u="<u>";
                uu="</u>";
            }
            else{
                u="";
                uu="";
            }
         }
         else{
            u="";
            uu="";
        }
      }
      else{
        u="";
        uu="";
      }

               if ((daycount == Today) && (Year == curyear) && (Month == curmonth)) {
                 htmlstring += '<td BGCOLOR="'+TodayBGColor+'"  BORDERCOLOR="'+colorcode+'"><strong><I>' +u+ dayStr +uu+ '</I></strong></td>';
            }
            else {
                 htmlstring += '<td BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><strong>'+u+ dayStr +uu+ '</strong></td>';
            }

            daycount++;
         }
         else {
            htmlstring += '<td BORDERCOLOR="'+TableBGColor+'">&nbsp;</td>';
         }
         loopcounter++;
      }
      htmlstring += '</tr>';
   }
   htmlstring += '</table></td></tr></table></center>';
//<p><a href="http://www.firesafe.org/sdfd.html"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><img border="0" src="My%20Pictures/sdfd_home.gif" width="220" height="30"></p>

//document.all.Calendar.innerHTML = htmlstring;
   cross_el=ns6? document.getElementById("Calendar") : document.all.Calendar;
   cross_el.innerHTML = htmlstring;
}

function Check_Nums() {
   if ((event.keyCode < 48) || (event.keyCode > 57)) {
      return false;
   }
}

function On_Year() {
   var Year = document.when.year.value;
   if (Year.length == 4) {
      Selected_Month = document.when.month.selectedIndex;
      Selected_Year = Year;
      Make_Calendar(Selected_Year, Selected_Month);
   }
}

function On_Month() {
   var Year = document.when.year.value;
   if (Year.length == 4) {
      Selected_Month = document.when.month.selectedIndex;
      Selected_Year = Year;

   if (Selected_Year <= 1970) {
    Selected_Year = 1970;
   }

   if (Selected_Year >= 2029) {
    Selected_Year = 2029;
   }

      Make_Calendar(Selected_Year, Selected_Month);
   }
   else {
      alert('Please enter a valid year.');
      document.when.year.focus();
   }
}

function Defaults() {
   if (!document.all)
   return
   var Mid_Screen = Math.round(document.body.clientWidth / 2);
   document.when.month.selectedIndex = curmonth;
   document.when.year.value = curyear;
   Selected_Month = curmonth;
   Selected_Year = curyear;
   Make_Calendar(curyear, curmonth);
}

function Skip(Direction) {
   if (Direction == '+') {
      if (Selected_Month == 11) {
         Selected_Month = 0;
         Selected_Year++;
      }
      else {
         Selected_Month++;
      }
   }
   else {
      if (Selected_Month == 0) {
         Selected_Month = 11;
         Selected_Year--;
      }
      else {
         Selected_Month--;
      }
   }

   if (Selected_Year <= 1970) {
    Selected_Year = 1970;
   }

   if (Selected_Year >= 2029) {
    Selected_Year = 2029;
   }

   Make_Calendar(Selected_Year, Selected_Month);
   document.when.month.selectedIndex = Selected_Month;
   document.when.year.value = Selected_Year;
}

function Jump(Direction) {
   if (Direction == '+') {
         Selected_Year++;
   }
   else {
         Selected_Year--;
      }

   if (Selected_Year <= 1970) {
    Selected_Year = 1970;
   }

   if (Selected_Year >= 2029) {
    Selected_Year = 2029;
   }

   Make_Calendar(Selected_Year, Selected_Month);
   document.when.month.selectedIndex = Selected_Month;
   document.when.year.value = Selected_Year;
}

function On_Now(){
   Selected_Year = curdate.getYear();
   Selected_Month = curdate.getMonth();
   Make_Calendar(Selected_Year, Selected_Month);
   document.when.month.selectedIndex = Selected_Month;
   document.when.year.value = Selected_Year;
}

//Get number of days from start date to date on calendar
function days_diff(start,current){
    var currentdays = Math.floor(current.getTime() / (1000 * 60 * 60 * 24)*1);
    var startdays = Math.floor(start.getTime() / (1000 * 60 * 60 * 24)*1);
    var daysdiff = currentdays-startdays;
    return daysdiff;
}

// End of source file

