/** * @author: Joel Miller * @date: 24/01/2008 * This Javascript file can be imported into webpages on the Brisbane Symphonic Band's website to provide dynamic content */ function BSBEvent (evDay, evDate, evMonth, evYear, evTime, evTitle, evLocation, evEnsemble) /** * Creates an Event Object * evDay: Day of Event (Sunday, Monday, ...) * evDate: Date (1,2,3...) * evMonth: Month (January, February,...) * evYear: Year (2008, 2009,...) * evTime: Time (6:00pm) * evTitle: The title of the event * evLocation: The location of the event * evEnsemble: The ensemble involved in the event */ { this.evDay = evDay; this.evDate = evDate; this.evMonth = evMonth; this.evYear = evYear; this.evTime = evTime; this.evTitle = evTitle; this.evLocation = evLocation; this.evEnsemble = evEnsemble; } function BSBCreateArray () /** * This function creates an array of BSB Events when it is called. The array is returned, once generated. * ADD NEW EVENTS TO THIS SECTION. The order is !irrelevant!. */ { var myArray = new Array(); myArray[0] = new BSBEvent('Wednesday','20','January','2010','7:30pm - 9:30pm','First BSB Swing Rehearsal for 2010','Trinity Wilston Uniting Church Hall','BSB Swing'); myArray[1] = new BSBEvent('Wednesday', '27', 'January', '2010', '7:30pm - 9:30pm','First BSB Rehearsal for 2010','Trinity Wilston Uniting Church Hall','Symphonic Band'); myArray[2] = new BSBEvent('Tuesday', '26', 'January', '2010', '1:00pm - 2:00pm','Australia Day Celebrations','Upper Moora Park, Shorncliffe','BSB Swing'); myArray[3] = new BSBEvent('Sunday', '7', 'February', '2010', '2:00pm - 3:00pm','Summertime Classics','Gregory Park, Baroona Road, Paddington','Symphonic Band'); myArray[4] = new BSBEvent('Sunday', '14', 'March', '2010', '2:00pm - 3:00pm','Swing City','City Botanic Gardens, Alice Street, Brisbane','BSB Swing'); myArray[5] = new BSBEvent('Saturday','13','March','2010','2:00pm - 3:00pm','Childrens Concert','Sandgate Uniting Church','Symphonic Band'); myArray[6] = new BSBEvent('Saturday','27','March','2010','1:00pm - 2:00pm','Childrens Concert','Trinity Wilston Uniting Church','Symphonic Band'); myArray[7] = new BSBEvent('Friday','2','April','2010','6:00pm - 7:00pm','Movie in the Park - Mamma Mia','Little Bayside Park, Manly Harbour Village, Manly','BSB Swing'); myArray[8] = new BSBEvent('Saturday','10','April','2010','Time TBA','Private Function - Wedding','','BSB Swing'); myArray[9] = new BSBEvent('Saturday','5','June','2010','Time TBA','Italian Week Festival','James Street','BSB Swing'); myArray[10] = new BSBEvent('Sunday','18','July','2010','Time TBA','Metro Bands - Battle of the Bands','','Symphonic Band'); myArray[11] = new BSBEvent('Friday','13','August','2010','Time TBA','Private Function','Noosa Waters','BSB Swing'); myArray[12] = new BSBEvent('Sunday', '14', 'February', '2010', '3:00pm - 4:00pm','Valentines Day Concert','King George Square, CBD','BSB Swing'); //returns array return myArray; } function BSBGetEvents (eventArray, currMonth) /** * This function returns an array of indexes for events in a particular month * eventArray: An array of BSB Events * currMonth: An integer from 0 to 11 representing a month of the year */ { var x; var evIndexes = new Array (); for (x in eventArray) { if (eventArray[x].evMonth == toFullMonth(currMonth)) { evIndexes.push(x); } } return evIndexes; } function isEven(value) /** * A simple function to test if a number is odd or even * value: An integer */ { if (value%2 == 0) return true; else return false; } function BSBWriteIndexEvents (eventArray) /** * This function writes the dynamic data to the Index Page * eventArray: an Array of BSB Events */ { var d = new Date (); var currYear = d.getFullYear(); var currMonth = d.getMonth(); var currDate = d.getDate(); var upcomingEvents = new Array (); var currMonthEvents = BSBGetEvents (eventArray, currMonth); for (s in currMonthEvents) { if (eventArray[currMonthEvents[s]].evDate >= currDate) { upcomingEvents.push(currMonthEvents[s]); } } //Get next month var nextMonth = currMonth+1%11; for (f=nextMonth;f<=11;f++) { var nextMonthEvents = BSBGetEvents (eventArray, f); for (w in nextMonthEvents) { upcomingEvents.push(nextMonthEvents[w]); } } upcomingEvents.length=3; for (u=0;u<=2;u++) { if (eventArray[upcomingEvents[u]].evDay!=null) { document.write('

' + eventArray[upcomingEvents[u]].evDay + ' ' + eventArray[upcomingEvents[u]].evDate + ' ' + eventArray[upcomingEvents[u]].evMonth + ' ' + eventArray[upcomingEvents[u]].evYear + '
' + eventArray[upcomingEvents[u]].evTime + '
'); document.write('' + eventArray[upcomingEvents[u]].evTitle + '
' + eventArray[upcomingEvents[u]].evLocation + '

'); } } document.write('

More Events »

'); } function BSBWriteYearEvents (eventArray) /** * This function writes the dynamic data to the Yearly Page * eventArray: an Array of BSB Events */ { var trClass; var currMonth; var currYear; var i=0; document.write(''); for (i=0;i<=11;i++) { currMonth = toFullMonth(i); var d = new Date (); var currYear = d.getFullYear(); if (isEven(i)) { trClass = "odd" } else { trClass = "even" } //output the heading... document.write(''); document.write(''); document.write(''); //find all events for each month in this year! var g; for (g in eventArray) { if (eventArray[g].evMonth == currMonth && eventArray[g].evYear == currYear) { document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); } } } document.write('

' + currMonth + '

 ' + eventArray[g].evDay + ' ' + formatDate(eventArray[g].evDate) + '' + eventArray[g].evTime + '     ' + eventArray[g].evTitle + ''); document.write(', ' + eventArray[g].evLocation + ' 
' + eventArray[g].evEnsemble + '
'); } function BSBWriteYearEventsPF (eventArray) /** * This function writes the dynamic data to the Yearly Page * eventArray: an Array of BSB Events */ { var trClass; var currMonth; var currYear; var i=0; document.write(''); for (i=0;i<=11;i++) { currMonth = toFullMonth(i); var d = new Date (); var currYear = d.getFullYear(); if (isEven(i)) { trClass = "odd" } else { trClass = "even" } //output the heading... document.write(''); document.write(''); document.write(''); //find all events for each month in this year! var g; for (g in eventArray) { if (eventArray[g].evMonth == currMonth && eventArray[g].evYear == currYear) { document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); } } } document.write('

' + currMonth + '

 ' + eventArray[g].evDay + ' ' + formatDate(eventArray[g].evDate) + '' + eventArray[g].evTime + '     ' + eventArray[g].evTitle + ''); document.write(', ' + eventArray[g].evLocation + ' 
' + eventArray[g].evEnsemble + '
'); } function formatDate (dateString) /** * This function appends the appropriate suffix to date numbers * dateString: an integer (1,2,3...) */ { switch (dateString) { case "1": return "1st"; break; case "2": return "2nd"; break; case "3": return "3rd"; break; case "21": return "21st"; break; case "22": return "22nd"; break; case "23": return "23rd"; break; case "31": return "31st"; break; default: return dateString + "th"; } } function toFullMonth (num) /** * a simple function which converts an integer to the Month name * num: an integer between 0 and 11 */ { var month=new Array(12); month[0]="January"; month[1]="February"; month[2]="March"; month[3]="April"; month[4]="May"; month[5]="June"; month[6]="July"; month[7]="August"; month[8]="September"; month[9]="October"; month[10]="November"; month[11]="December"; return month[num]; } function BSBWriteMonthlyEvents (eventArray) /** * This function writes dynamic content to the monthly page * eventArray: an Array of BSB Events */ { var d = new Date (); var currMonth = d.getMonth(); var BSBEventIndexes = BSBGetEvents (eventArray, currMonth); document.write('

Other events this month:

'); for (s in BSBEventIndexes) { document.write('

' + eventArray[BSBEventIndexes[s]].evDay + ' ' + eventArray[BSBEventIndexes[s]].evDate + ' ' + eventArray[BSBEventIndexes[s]].evMonth + ' ' + eventArray[BSBEventIndexes[s]].evYear + '
' + eventArray[BSBEventIndexes[s]].evTime + '
'); document.write('' + eventArray[BSBEventIndexes[s]].evTitle + '
' + eventArray[BSBEventIndexes[s]].evLocation + '

'); } } function sortArrayByDate (eventArray) /** * This function takes an unsorted array as input and returns a sorted array as ouput * eventArray: an Array of BSB Events */ { var sortedArray = new Array (); var i = 0; var j = 0; var k = 0; for (i=0;i<=11;i++) { for (j=0;j<=31;j++) { for (k in eventArray) { if (eventArray[k].evDate == j && eventArray[k].evMonth == toFullMonth(i)) { sortedArray.push(eventArray[k]); } } } } return sortedArray; } function BSBMain (pageName) /** * Main: Application controller * pageName: String - used to determine which page is calling the function */ { var BSBEventsRAW = BSBCreateArray (); var BSBEvents = sortArrayByDate (BSBEventsRAW); switch (pageName) { case "evYear": BSBWriteYearEvents (BSBEvents); break; case "evYearPF": BSBWriteYearEventsPF (BSBEvents); break; case "index": BSBWriteIndexEvents (BSBEvents); break; case "monthly": BSBWriteMonthlyEvents (BSBEvents); break; default: alert ("Error found"); } }