// <!- specialoccasion Javascript source

/* This script, if placed above the <body> tag, will randomly select images related 
    to special occasions such as Christmas and Easter.  The images are selected from
    those detailed in the array below.  The images are displayed with only the width 
    attribute to avoid distortion.
     R Scott  7-Dec-2004
 */

	var SOMsgTag = "&nbsp;";
 
// Define 'random' numbers
var seed = .5;
function srand() 
  {  today = new Date();    
     seed = Math.abs(Math.sin(today.getTime())); }  
function rand()
  {  seed = seed + .3;  
     if (seed > 1.0) seed = seed - 1.0;    
	 return seed; }  
function randimg(rcnt)
  {  return Math.floor(rand() * rcnt); }
srand();

// ===========================================
//  Easter date calculation routines
// (C)opyright GM Arts 1997-1999
//   function ShowEasters(yr) is called, and sets the values wDay and wMonth


//  GLOBAL VARIABLES
//  ~~~~~~~~~~~~~~~~
   var jDay = 0;
   var jMonth = 0;
   var oDay = 0;
   var oMonth = 0;
   var wDay = 0;
   var wMonth = 0;
   var year = 0;
	
//  STARTUP CODE
//  ~~~~~~~~~~~~

// check browser is version 2 or more
//   if (parseFloat(navigator.appVersion) < 2)
//      alert ("You may need to upgrade your browser to reliably use the Easter Date calculator");

//  FUNCTIONS
//  ~~~~~~~~~
function ShowEasters(yr)
{
     	 year=yr
   if (isNaN(year))
      year = 0;

   // reset vars
   jDay = 0;
   jMonth = 0;
   wDay = 0;
   wMonth = 0;

   //get relevant Easter dates

      EasterJulian();	// used for all calculations
         EasterWestern ();

//            alert("Easter Sunday date for " + year + ": "
//               + GetMonth(wMonth) + " " + GetOrdinal(wDay) + ".\n\n")
;
   
}

function IntDiv (num, dvsr)
// performs integer division of num/dvsr - eg IntDiv(9,4)=2
{
   var negate = false;
   var result = 0;

   if (dvsr == 0)
      return null;
   else {
      if (num * dvsr < 0 )
         negate = true;
      if (num < 0)
         num = -num;
      if (dvsr < 0)
         dvsr = -dvsr;
      result = ((num - (num % dvsr)) / dvsr);
      if (negate)
         return -result;
      else
         return result;
   }
}
//92
function GetMonth(m)
{
   //switch is better, but not supported in JavaScript ver 1.0
   if (m==3)
      return ("March");
   if (m==4)
      return ("April");
   if (m==5)
      return ("May");
}

function GetOrdinal(d)
{
   var rmdr = 0;
   rmdr = d % 10;

   if (((d >= 4) && (d <= 20)) || (rmdr == 0) || (rmdr > 3))
      return (d + "th");
   else {
      //switch is better, but not supported in JavaScript ver 1.0
      if (rmdr==1)
         return (d + "st");
      if (rmdr==2)
         return (d + "nd");
      if (rmdr==3)
         return (d + "rd");
   }
}
//121
function EasterJulian()
{
   var g = 0;
   var i = 0;
   var j = 0;
   var p = 0;

   g = year % 19;
   i = (19 * g + 15) % 30;
   j = (year + IntDiv(year, 4) + i) % 7;
   p = i - j + 28;

   jDay = p;
   jMonth = 4;
   if (p > 31)
      jDay = p - 31;
   else
      jMonth = 3;
}

function EasterWestern()
{
   var g = 0;
   var c = 0;
   var h = 0;
   var i = 0;
   var j = 0;
   var p = 0;

   g = year % 19;
   c = IntDiv(year, 100);
   h = (c - IntDiv(c, 4) - IntDiv(8 * c + 13, 25) + 19 * g + 15) % 30;
   i = h - IntDiv(h, 28) * (1 - IntDiv(h, 28)
      * IntDiv(29, h + 1) * IntDiv(21 - g, 11));
   j = (year + IntDiv(year, 4) + i + 2 - c + IntDiv(c, 4)) % 7;
   p = i - j + 28;

   wDay = p;
   wMonth = 4;
   if (p > 31)
      wDay = p - 31;
   else
      wMonth = 3;
}
//  End of Easter date calculation routines
// ===========================================

     	    var CurrDate=new Date()
            var CurrDay=CurrDate.getDate()
            var CurrMth=CurrDate.getMonth()+1
     		var CurrYr=CurrDate.getYear()
     		if (CurrYr < 100)
       		CurrYr=CurrDate.getYear()+2000;
            ShowEasters(CurrYr);
//175

	// Create array of Special Occasion Images
	var SOImg = new Array(39)
	SOImg[0] = "xmas.gif"
	SOImg[1] = "xmasangel.gif"
	SOImg[2] = "xmasbells.gif"
	SOImg[3] = "xmasgift.GIF"
	SOImg[4] = "xmasholly.gif"
	SOImg[5] = "xmassanta.gif"
	SOImg[6] = "xmassanta2.gif"
	SOImg[7] = "xmassleigh.gif"
	SOImg[8] = "xmassnowman.gif"
	SOImg[9] = "xmasstocking.gif"
	SOImg[10] = "xmastree.GIF"
	SOImg[11] = "xmas.gif"
	SOImg[12] = "xmasangel.gif"
	SOImg[13] = "xmasbells.gif"
	SOImg[14] = "xmasgift.GIF"
	SOImg[15] = "xmasholly.gif"
	SOImg[16] = "xmassanta.gif"
	SOImg[17] = "xmassanta2.gif"
	SOImg[18] = "xmassleigh.gif"
	SOImg[19] = "xmassnowman.gif"
	SOImg[20] = "xmasstocking.gif"
	SOImg[21] = "xmastree.GIF"
	SOImg[22] = "austfedparlt.gif"
	SOImg[23] = "austflag.gif"
	SOImg[24] = "austflag2.gif"
	SOImg[25] = "austflagandmap.gif"
	SOImg[26] = "austkoala.gif"
	SOImg[27] = "austmap.gif"
	SOImg[28] = "austuluru.gif"
	SOImg[29] = "easterbunny.gif"
	SOImg[30] = "easterbunny2.gif"
	SOImg[31] = "easteregg.gif"
	SOImg[32] = "eastereggs.gif"
	SOImg[33] = "melbcup.gif"
	SOImg[34] = "melbcup2.gif"
	SOImg[35] = "toast.gif"
	SOImg[36] = "bell_color_72.jpg"
	SOImg[37] = "slc_logo_small.gif"
	SOImg[38] = "2007 Conference logo.jpg"
	var SODir = "images/"
	
//216
// Display Christmas greetings from 11th Nov to 25th Dec
	if ((CurrMth == 11 && CurrDay > 10) || (CurrMth == 12 && CurrDay < 26)) 
      	  { 
	   SOImgX1 = randimg(11.0)
           seed = Math.abs(Math.sin(today.getMilliseconds()+SOImgX1));
	   SOImgX2 = randimg(11.0)
	   if (SOImgX2 == SOImgX1) {SOImgX2 = SOImgX1 + 8}    //  Ensure that images are different
           SOMsgTag = '<img src="' + SODir + SOImg[SOImgX1] + '" width="50" border="0">'
	   SOMsgTag = SOMsgTag + "<b>Season's Greetings</b>"
	   SOMsgTag = SOMsgTag + '<img src="' + SODir + SOImg[SOImgX2] + '" width="50" border="0">'
			   }
// Display Australia Day message from 3rd Jan to 26th Jan
	if (CurrMth == 1 && CurrDay < 27) 
      	  { 
	   SOImgX1 = randimg(7.0) + 22
           SOMsgTag = '<img src="' + SODir + SOImg[SOImgX1] + '" width="70" border="0">'
	   SOMsgTag = SOMsgTag + "<b>Australia Day 26<sup>th</sup> Jan</b>"
			   }
// Display Rotary Centennial message from 27th Jan to 28th Feb (2005 only)
	if ((CurrMth == 1 && CurrDay > 26 && CurrYr == 2005) || (CurrMth == 2 && CurrYr == 2005))
      	  { 
	   SOImgX1 = randimg(1.0) + 36
           SOMsgTag = '<img src="' + SODir + SOImg[SOImgX1] + '" width="70" border="0">'
	   SOMsgTag = SOMsgTag + "<b><i><font color=red>Rotary Centennial<br>23-Feb-1905 "
	   SOMsgTag = SOMsgTag + "to 23-Feb-2005</font></i></b>"
			   }
// Display Rotary District 9800 Conference message from 27th Jan to 11th Mar (2007 only - adjust for later years)
	if ((CurrMth == 1 && CurrDay > 26 && CurrYr == 2007) || (CurrMth == 2 && CurrYr == 2007)
              || (CurrMth == 3 && CurrDay < 12 && CurrYr == 2007))
      	  { 
           SOMsgTag = '<img src="' + SODir + SOImg[38] + '" width="120" border="0">'
	   SOMsgTag = SOMsgTag + "<br><b><i><font color=red>RI District 9800<br>2007 Conference, Canberra<br>"
	   SOMsgTag = SOMsgTag + "9th to 11th March 2007</font></i></b>"
			   }
// Display RI Convention message from 1st to 20th Jun (2007 only) - adjust for later years
	if ((CurrMth == 6 && CurrDay < 21 && CurrYr == 2007))
      	  { 
	   
           SOMsgTag = '<a href="http://www.rotary.org/events/conventions/2007/index.html">'
           SOMsgTag = SOMsgTag + '<img src="' + SODir + SOImg[37] + '" width="120" border="0"></a>'
	   SOMsgTag = SOMsgTag + "<br><b><i><font color=red>98th annual RI Convention<br>Salt Lake City, "
	   SOMsgTag = SOMsgTag + "17-20 June 2007</font></i></b>"
			   }
// Display New Year message from 26th Dec to 2nd Jan
	if ((CurrMth == 12 && CurrDay > 29) || (CurrMth == 1 && CurrDay < 3)) 
      	  { 
	   SOImgX1 = randimg(1.0) + 35
           SOMsgTag = '<img src="' + SODir + SOImg[SOImgX1] + '" width="50" border="0">'
	   SOMsgTag = SOMsgTag + "<b>Happy New Year</b>"
	   SOMsgTag = SOMsgTag + '<img src="' + SODir + SOImg[SOImgX2] + '" width="50" border="0">'
			   }
// Display Easter message from 3 or 4 weeks before Easter to Easter Sunday
        if ((CurrMth == wMonth && CurrDay <= wDay) || (CurrMth == 3 && wMonth == 4 && CurrDay > wDay))
      	  { 
	   SOImgX1 = randimg(4.0) + 29
           SOMsgTag = '<img src="' + SODir + SOImg[SOImgX1] + '" width="70" border="0">'
	   SOMsgTag = SOMsgTag + "<b>Easter Greetings</b>"
			   }
// Display Cup Carnival message from 16 Oct to 6 Nov
	if ((CurrMth == 10 && CurrDay > 15) || (CurrMth == 11 && CurrDay < 7)) 
      	  { 
	   SOImgX1 = randimg(2.0) + 33
           SOMsgTag = '<img src="' + SODir + SOImg[SOImgX1] + '" width="70" border="0">'
	   SOMsgTag = SOMsgTag + "<b>Melbourne Cup carnival</b>"
	 		   }
//    SOMsgTag = SOMsgTag + "wMonth " + wMonth + " CurrMth " + CurrMth + " wDay " + wDay + " CurrDay " + CurrDay + " year " + year;

	//  End of specialoccasion Javascript source ->

