// GLOBAL VARS
// offset to base year so year used as 4-bit value to database
var cur_year = 0; // offset from base year
var cur_month = 0; // 0 to 11
var cur_day = 0; // 1 to 31
var day_interval = 0;
var previous_day = null;
var base_year = 2001;
var mon_str0 = "JAN";
var mon_str1 = "FEB";
var mon_str2 = "MAR";
var mon_str3 = "APR";
var mon_str4 = "MAY";
var mon_str5 = "JUN";
var mon_str6 = "JUL";
var mon_str7 = "AUG";
var mon_str8 = "SEP";
var mon_str9 = "OCT";
var mon_str10 = "NOV";
var mon_str11 = "DEC";
var font12p = "<FONT STYLE=\"font-size:\"12pt\"\;\">";
var font18p = "<FONT STYLE=\"font-size:\"18pt\"\;\">";

var stored_orig_month = 0;
var stored_orig_day = 0;
var stored_orig_year = 0;

var cal_element;
var store_cal_element;

function get_cal_date(cal_date_storage_element)
{
 var cal_date_string;
 var tmp_cur_month;
 var tmp_cur_day;
 var tmp_cur_year;

 tmp_cur_month = cur_month + 1;
 tmp_cur_day = cur_day;
 tmp_cur_year = cur_year + base_year;

 if ( tmp_cur_month < 10 )
  tmp_cur_month = "0" + tmp_cur_month;

 if ( tmp_cur_day < 10 )
  tmp_cur_day = "0" + tmp_cur_day;

 cal_date_string = "" + tmp_cur_month + "/" + tmp_cur_day + "/" + tmp_cur_year + "";

 document.getElementById(cal_date_storage_element).value = cal_date_string;

 return; 
}

//function to start the calendar
 function do_cal_load(theVar)
 {
    var i, theArray = document.all.tags("select");
	for(i=0; i<theArray.length; i++) {
		theArray[i].style.visibility = "hidden";
	}
  is_first_cal_run = 1; // set to one so it can be zero'd to void work and triggers
	output_calendar( document.getElementById("main_layer_top_cal"), theVar, event.x, event.y);
  day_main_ol(); // sets the calendar to current date
	
 }


function on_day_select() // START function to control day selection
{
 if ( is_first_cal_run == 1 )
 {
  stored_orig_month = cur_month;
  stored_orig_day = cur_day;
  stored_orig_year = cur_year;
  is_first_cal_run = 0;
  cur_day = 0;
 }
 else
 {
  cur_day = 0;
 }
 if ( (event.srcElement.className == "caltblent1") && (event.srcElement.innerText != "") )
 {
  cur_day = event.srcElement.innerText - 0; // 1 to 31

  get_cal_date(store_cal_element);
  kill_calendar(cal_element);
 }
 return;
} // END function to control day selection

function output_calendar(cal_storage_element, return_element, elem_x, elem_y)
{
 var cal_output_str = "<TABLE style=\"cursor:hand\" onmouseover=\"day_over_hl()\" onmouseout=\"day_over_dehl()\" ID=\"sbcalid\" class=\"caltbl1\"><TR><TD colspan=\"7\" class=\"calttl4\">Calendar</TD></TR>";
 cal_output_str = cal_output_str + "<TR><TD class=\"calttl1b\">S</TD><TD class=\"calttl2b\">M</TD><TD class=\"calttl3b\">T</TD><TD class=\"calttl4b\">W</TD><TD class=\"calttl5b\">T</TD><TD class=\"calttl6b\">F</TD><TD class=\"calttl7b\">S</TD></TR>";
 cal_output_str = cal_output_str + "<TR onclick=\"on_day_select()\"><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD></TR>";
 cal_output_str = cal_output_str + "<TR onclick=\"on_day_select()\"><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD></TR>";
 cal_output_str = cal_output_str + "<TR onclick=\"on_day_select()\"><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD></TR>";
 cal_output_str = cal_output_str + "<TR onclick=\"on_day_select()\"><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD></TR>";
 cal_output_str = cal_output_str + "<TR onclick=\"on_day_select()\"><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD></TR><TR onclick=\"on_day_select()\"><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD><TD class=\"caltblent1\"></TD></TR><TR id=\"temp_tr_work\"><TD class=\"calltblbot1\" colspan=\"3\" onclick=\"do_onprevmonth()\">&lt\;&lt\;</TD><TD class=\"calltblbot4\"></TD><TD class=\"calltblbot7\" colspan=\"3\" onclick=\"do_onnextmonth()\">&gt\;&gt\;</TD></TR></TABLE>";

 cal_storage_element.innerHTML = cal_output_str;

 cal_storage_element.style.pixelTop = elem_y+document.body.scrollTop;
 cal_storage_element.style.pixelLeft = elem_x+document.body.scrollLeft;
 cal_storage_element.style.visibility = "visible";

 cal_element = cal_storage_element
 store_cal_element = return_element;

 return; 
}

function kill_calendar(cal_storage_element)
{
 cal_storage_element.innerHTML = "";
 cal_storage_element.style.visibility = "hidden";
	var i, theArray = document.all.tags("select");
	for(i=0; i<theArray.length; i++) {
		theArray[i].style.visibility = "visible";
	}
 return; 
}

// START functions to shift value content
function integer(n) 
{
 return n%(0xffffffff+1); 
}

function shr(a,b) {
  a=integer(a);
  b=integer(b);
  if (a-0x80000000>=0) {
    a=a%0x80000000;
    a>>=b;
    a+=0x40000000>>(b-1);
  } else
    a>>=b;
  return a;
}

function shl1(a) {
  a=a%0x80000000;
  if (a&0x40000000==0x40000000)
  {
    a-=0x40000000;
    a*=2;
    a+=0x80000000;
  } else
    a*=2;
  return a;
}

function shl(a,b) {
  a=integer(a);
  b=integer(b);
  for (var i=0;i<b;i++) a=shl1(a);
  return a;
}
// END functions to shift value content

// START function to set days in calaendar specific to month
function set_calmonth ( start_day, max_day )
{
 var x = 1;
 var cur_day_color = "#CCCCCC";
 var cur_cell_node;

 var cal_table_hndl = document.getElementById("sbcalid");

 switch ( start_day ) {
  case 1 :
   cur_cell_node = cal_table_hndl.rows(2).cells(0);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
  case 2 :
   cur_cell_node = cal_table_hndl.rows(2).cells(1);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
  case 3 :
   cur_cell_node = cal_table_hndl.rows(2).cells(2);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
  case 4 :
   cur_cell_node = cal_table_hndl.rows(2).cells(3);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
  case 5 :
   cur_cell_node = cal_table_hndl.rows(2).cells(4);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
  case 6 :
   cur_cell_node = cal_table_hndl.rows(2).cells(5);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
  case 7 :
   cur_cell_node = cal_table_hndl.rows(2).cells(6);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
  default :
   break;
 }
 cur_cell_node = cal_table_hndl.rows(3).cells(0);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(3).cells(1);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(3).cells(2);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(3).cells(3);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(3).cells(4);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(3).cells(5);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(3).cells(6);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(4).cells(0);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(4).cells(1);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(4).cells(2);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(4).cells(3);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(4).cells(4);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(4).cells(5);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(4).cells(6);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(5).cells(0);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(5).cells(1);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(5).cells(2);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(5).cells(3);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(5).cells(4);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(5).cells(5);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 cur_cell_node = cal_table_hndl.rows(5).cells(6);
 if (x == cur_day )
  cur_cell_node.style.backgroundColor = cur_day_color;
 cur_cell_node.innerText = x;
 x += 1;
 if (x <= max_day)
 {
  cur_cell_node = cal_table_hndl.rows(6).cells(0);
  if (x == cur_day )
   cur_cell_node.style.backgroundColor = cur_day_color;
  cur_cell_node.innerText = x;
  x += 1;
  if (x <= max_day)
  {
   cur_cell_node = cal_table_hndl.rows(6).cells(1);
   if (x == cur_day )
    cur_cell_node.style.backgroundColor = cur_day_color;
   cur_cell_node.innerText = x;
   x += 1;
   if (x <= max_day)
   {
    cur_cell_node = cal_table_hndl.rows(6).cells(2);
    if (x == cur_day )
     cur_cell_node.style.backgroundColor = cur_day_color;
    cur_cell_node.innerText = x;
    x += 1;
    if (x <= max_day)
    {
     cur_cell_node = cal_table_hndl.rows(6).cells(3);
     if (x == cur_day )
      cur_cell_node.style.backgroundColor = cur_day_color;
     cur_cell_node.innerText = x;
     x += 1;
     if (x <= max_day)
     {
      cur_cell_node = cal_table_hndl.rows(6).cells(4);
      if (x == cur_day )
       cur_cell_node.style.backgroundColor = cur_day_color;
      cur_cell_node.innerText = x;
      x += 1;
      if (x <= max_day)
      {
       cur_cell_node = cal_table_hndl.rows(6).cells(5);
       if (x == cur_day )
        cur_cell_node.style.backgroundColor = cur_day_color;
       cur_cell_node.innerText = x;
       x += 1;
       if (x <= max_day)
       {
        cur_cell_node = cal_table_hndl.rows(6).cells(6);
        if (x == cur_day )
         cur_cell_node.style.backgroundColor = cur_day_color;
        cur_cell_node.innerText = x;
        x += 1;
        if (x <= max_day)
        {
         cur_cell_node = cal_table_hndl.rows(7).cells(0);
         if (x == cur_day )
          cur_cell_node.style.backgroundColor = cur_day_color;
         cur_cell_node.innerText = x;
         x += 1;
        }
        if (x <= max_day)
        {
         cur_cell_node = cal_table_hndl.rows(7).cells(1);
         if (x == cur_day )
          cur_cell_node.style.backgroundColor = cur_day_color;
         cur_cell_node.innerText = x;
         x += 1;
        }
       }
      }
     }
    }
   }
  }
 }
 return;
} // END function to set days in calaendar specific to month

function set_calblank ( ) // START function to blank calaendar with non-breaking spaces
{
 var cal_table_hndl = document.getElementById("sbcalid");
 var x, y;

 for ( y = 2 ; y <= 7 ; y++ )
 {
  for ( x = 0 ; x <= 6 ; x++ )
  {
   cal_table_hndl.rows(y).cells(x).innerText = "";
   cal_table_hndl.rows(y).cells(x).style.backgroundColor = "#FFFFFF";
  }
 }
 return;
} // END function to blank calaendar with non-breaking spaces

function set_caldate ( set_year, set_month ) // START function to setup days for calaendar
{
 var start_day_mon_offset = 0; // value is 1 to 7
 var max_days_month = 0; // value is 1 to 31

 var start_day_mon_temp = 1;
 var start_mon_temp = set_month;
 var start_year_temp = set_year;

 set_year = set_year + base_year;
 var work_date = new Date(set_year,set_month,01);

 var cal_table_hndl = document.getElementById("sbcalid");

 var temp_mon_str;

 if ( previous_day != null )
 {
  document.all[previous_day].style.background = "#FFFFFF";
  previous_day = null;
 }

 switch (set_month) {
  case 0:
   temp_mon_str = mon_str0+"";
   max_days_month = 31;
   break;
  case 1:
   temp_mon_str = mon_str1+"";
   if ((set_year-2000)%4 == 0) // check for leap year - leap year will be 0
   {
    max_days_month = 29;
   }
   else
   {
    max_days_month = 28;
   }
   break;
  case 2:
   temp_mon_str = mon_str2;
   max_days_month = 31;
   break;
  case 3:
   temp_mon_str = mon_str3;
   max_days_month = 30;
   break;
  case 4:
   temp_mon_str = mon_str4;
   max_days_month = 31;
   break;
  case 5:
   temp_mon_str = mon_str5;
   max_days_month = 30;
   break;
  case 6:
   temp_mon_str = mon_str6;
   max_days_month = 31;
   break;
  case 7:
   temp_mon_str = mon_str7;
   max_days_month = 31;
   break;
  case 8:
   temp_mon_str = mon_str8;
   max_days_month = 30;
   break;
  case 9:
   temp_mon_str = mon_str9;
   max_days_month = 31;
   break;
  case 10:
   temp_mon_str = mon_str10;
   max_days_month = 30;
   break;
  case 11:
   temp_mon_str = mon_str11;
   max_days_month = 31;
   break;
 }
 cal_table_hndl.rows(0).cells(0).innerText = temp_mon_str + " " + set_year;

 start_day_mon_offset = work_date.getDay(); // 0 is sunday
 start_day_mon_offset += 1;

 set_calblank();
 set_calmonth(start_day_mon_offset, max_days_month);
 return;
} // END function to setup days for calaendar

function do_onnextmonth() // START functions to handle next month selections
{
 if ( is_first_cal_run == 1 )
 {
  stored_orig_month = cur_month;
  stored_orig_day = cur_day;
  stored_orig_year = cur_year;
  is_first_cal_run = 0;
  cur_day = 0;
 }

 if ( cur_month == 11 )
 {
  cur_month = 0;
  cur_year = cur_year + 1;
 }
 else
 {
  cur_month += 1;
 }

 if ( ( stored_orig_month == cur_month ) && ( stored_orig_year == cur_year ) )
  cur_day = stored_orig_day;
 else
  cur_day = 0;

 set_caldate(cur_year,cur_month); // set month to current on load
 return;
} // END functions to handle next month selections

function do_onprevmonth() // START functions to handle previous month selections
{
 if ( is_first_cal_run == 1  )
 {
  stored_orig_month = cur_month;
  stored_orig_day = cur_day;
  stored_orig_year = cur_year;
  is_first_cal_run = 0;
  cur_day = 0;
 }

 if ( cur_month == 0 )
 {
  cur_month = 11;
  cur_year = cur_year - 1;
 }
 else
 {
  cur_month -= 1;
 }

 if ( ( stored_orig_month == cur_month ) && ( stored_orig_year == cur_year ) )
  cur_day = stored_orig_day;
 else
  cur_day = 0;

 set_caldate(cur_year,cur_month); // set month to current on load
 return;
}
// END functions to handle previous month selections

function day_over_hl()
{
 if ( (event.srcElement.className == "caltblent1")||(event.srcElement.className == "calltblbot1")||(event.srcElement.className == "calltblbot7") )
 {
  event.srcElement.old_bgcolor_value=event.srcElement.style.backgroundColor;event.srcElement.style.background="#002F5F";event.srcElement.old_color_value=event.srcElement.style.color;event.srcElement.style.color="#FFFFFF";
 }
}

function day_over_dehl()
{
 if ( (event.srcElement.className == "caltblent1")||(event.srcElement.className == "calltblbot1")||(event.srcElement.className == "calltblbot7") )
 {
  event.srcElement.style.backgroundColor=event.srcElement.old_bgcolor_value;event.srcElement.style.color=event.srcElement.old_color_value;
 }
}

function day_main_ol()
{
 var today = new Date();
 var today_month = today.getMonth(); // 0 to 11
 var today_year = today.getFullYear();
 var today_day = today.getDate();

 cur_year = today_year;
 cur_month = today_month;
 cur_day = today_day;
 cur_year = cur_year - base_year; // offset to base year so year used as 4-bit value to database

 set_caldate(cur_year,cur_month); // set month to current on load
 delete today;
 return;
}

function set_cur_date(year_val, mon_val, day_val)
{
 cur_year = year_val;
 cur_month = mon_val - 1;
 cur_day = day_val;
 cur_year = cur_year - base_year; // offset to base year so year used as 4-bit value to database

 set_caldate(cur_year,cur_month); // set month to current on load
 return;
}
