﻿// Event Calendar
// copyright Stephen Chapman, 10th June 2006, 30th October 2006



var tb = 'b'; // top or bottom (t or b)
var headbg = '#143D55';  // table heading background colour
var todaybg = '#ff0000'; // current selected date background colour
var textclr = '#000000'; // text colour
var linkclr = '#ff0000'; // link text 
var noMessage = 'No event messages to display for today'; // message to display when no entry in array

var dA = new Array(); var x = 0;
// first 8 characters in ccyymmdd format for single date events
// first 8 characters in 0000mmdd format for every year events
dA[x++] = "20081017 6:15pm <br/>HKIE Headquarter<br/><br/><b>Technical seminar on high speed rail - fast track to future</b> <br/> ";
dA[x++] = "20081201 6:30pm <br/>The Hong Kong Central Library<br/><b><br/>The 5th Lumb Lecture on uncertainty, reliability and foundation engineering <b><br/> ";
dA[x++] = "20090417 9:30am <br/>Threater 1, The Hong Kong Convention and Exhibition Centre<br/><br/><b>The 29th Geotechnical Division Annual Seminar <b><br/> ";
dA[x++] = "20081105 6:30pm <br/>Lecture Theatre CYC-B,<br/> The University of Hong Kong<br/><br/><b>Technical seminar on applications of latest laboratory and field testing techniques in geotechnical works";
dA[x++] = "20081018 9:00am - 1:00pm <br/> Wei Hing Theatre<br/> City University<br/><br/>Technical seminar on development of high speed railway in the PRC, Taiwan and Hong Kong";
dA[x++] = "20081202 6:00pm <br/>G/F Seminar Room, Civil Engineering and Development Building<br/><br/><b>Technical seminar on Wenchuan earthquake as an example of extreme geo-disasters</b>";
dA[x++] = "20081206 9:30am <br/> Meet at the entrance door to Broadway Cinema at Cyberport<br/><br/><b>DSD Contract No. DC/2007/10 – Island West Drainage Tunnel";
dA[x++] = "20081213 9:30am <br/> 時間及地點稍後公佈<br/><br/><b>深圳廣州市生物島-大學城隧道工程建設</b>";
dA[x++] = "20090228 9:30am <br/> HKIE<br/><br/><b>Geotechnical Workshops for Young Engineers - Workshop I </b>";
dA[x++] = "20090314 9:30am <br/> HKIE<br/><br/><b>Geotechnical Workshops for Young Engineers - Workshop II </b>";
dA[x++] = "20090328 9:30am <br/> HKIE<br/><br/><b>Geotechnical Workshops for Young Engineers - Workshop III</b>";
dA[x++] = "20081129 9:00am <br/> <br/><br/><b>Technical site visit to top-down basement construction at San Po Kong, Kowloon </b>";
dA[x++] = "20090225 9:00am <br/>Room 401, HKCEC<br/><br/><b>Seminar on the state-of-the-art technology and experience on geotechnical engineering in Malaysia and Hong Kong </b>";
dA[x++] = "20090214 9:00am <br/>Gathering point to be advised<br/><br/><b>Technical Visit to Shenzhen Metro and reclamation sites </b>";
dA[x++] = "20090313 6:00pm <br/>Hong Kong Convention & Exhibition Center<br/><br/><b>Geotechnical Division Annual Dinner</b>";
dA[x++] = "20090221 9:00am <br/>Gathering point to be advised<br/><br/><b>Technical visit to a residential development site formation at Ma Liu Shiu</b>";
dA[x++] = "20090226 6:30pm <br/>HKIE HQ<br/><br/><b>The practice of reinforced soil wall design and construction in Malaysia</b>";
dA[x++] = "20090508 6:00pm <br/>HKPC Building, Kowloon<br/><br/><b>The 29th Geotechnical Division Annual General Meeting</b>";
dA[x++] = "20090509 9:00am - 12:00 noon <br/>HKPC Building, Kowloon<br/><br/><b>Technical visit to water re-provisioning at the Centennial Campus of HKU </b>";
dA[x++] = "20090515 6:00pm <br/>HKIE HQ<br/><br/><b>Technical seminar on construction of high speed rail in Taiwan </b>";
dA[x++] = "20090724 6:30pm <br/>HKIE HQ<br/><br/><b>Technical seminar on eco-friendly renewable energy biodiesel In Hong Kong  </b>";

dA[x++] = "20090916 6:30pm - 7:30pm <br/>HKIE HQ<br/><br/><b>Seminar on the new priority ranking systems for selection of man-made slopes  </b>";
dA[x++] = "20090916 7:00pm - 8:30pm <br/>Room 207-208, Etech Centre, Causeway Bay<br/><br/><b>Seminar on advanced leakage detection of buried water carrying services affecting slopes (BWCS) with safety work in Hong Kong </b>";
dA[x++] = "20100111 6:30pm - 7:30pm <br/>HKIE HQ<br/><br/><b>Seminar on state-of-the-art techniques for debris flow hazards mitigation  </b>";
dA[x++] = "20100117  <br/>Tokyo, Osaka<br/><br/><b>Technical visit to Japan</b>";
dA[x++] = "20100301 6:30pm - 7:30pm <br/>HKIE HQ<br/><br/><b>Technical seminar on observations from landslides triggered by the 7 June 2008 rainstorm  </b>";
dA[x++] = "20100319 7:00pm - 10:30pm <br/>HKCEC<br/><br/><b>The 16th Geotechnical Division Annual Dinner</b>";
dA[x++] = "20100313 9:30pm <br/>Assembly: Tung Chung Station<br/><br/><b>Technical visit to ground investigation works for the Hong Kong boundary crossing facilities, Hong Kong-Zhuhai-Macao Bridge</b>";
dA[x++] = "20100320 9:30pm <br/>Assembly place to be advised<br/><br/><b>Technical visit to MTR contract 708 WIL underground magazine </b>";
dA[x++] = "20100417 9:30pm<br/>Assembly place to be advised<br/><br/><b>Technical visit to Tuen Mun Road eastern section</b>";

dA[x++] = "20100421 6:30pm - 7:30pm <br/>HKIE HQ<br/><br/><b>Technical seminar on ground control for slurry TBM tunnelling</b>";

dA[x++] = "20100506 9:00am - 5:30pm <br/>HKCEC<br/><br/><b>The HKIE Geotechnical Division 30th Annual Seminar</b>";
dA[x++] = "20100605 8:45am - 12:30pm <br/>Room W703D, the PolyU<br/><br/><b>Workshop on excavation and lateral support </b>";
dA[x++] = "20100612 8:45am - 12:30pm <br/>Room W703D, the PolyU<br/><br/><b>Workshop on excavation and lateral support </b>";
dA[x++] = "20100614 6:30pm - 7:30pm <br/>HKIE HQ<br/><br/><b>Technical seminar on slope stability analysis benchmarking exercise </b>";
dA[x++] = "20100630 6:30pm - 7:30pm <br/>HKIE HQ<br/><br/><b>Technical seminar on the influence of geological interpretation on geotechnical engineering in the Northwest New Territories, Hong Kong </b>";


//holiday
dA[x++] = "20081224 <br/> <br><b>Christmas Eve</b>";
dA[x++] = "20081225 <br/> <br><b>Christmas Day</b>";
dA[x++] = "20081226 <br/> <br><b>Boxing Day</b>";
dA[x++] = "00000101 <br/> <br><b>New Year's Day</b>";
dA[x++] = "20090126 <br/> <br><b>Lunar New Year's Day</b>";
dA[x++] = "20090127 <br/> <br><b>Second day of Lunar New Year</b>";
dA[x++] = "20090404 <br/> <br><b>Ching Ming Festival</b>";
dA[x++] = "20090410 <br/> <br><b>Good Friday</b>";
dA[x++] = "20090411 <br/> <br><b>Day after Good Friday</b>";
dA[x++] = "20090413 <br/> <br><b>Easter Holiday</b>";
dA[x++] = "00000501 <br/> <br><b>Labour Day</b>";
dA[x++] = "20090528 <br/> <br><b>Tuen Ng Festival</b>";
dA[x++] = "20090502 <br/> <br><b>Buddha's Birthday</b>";
dA[x++] = "00000701 <br/> <br><b>HKSARG Establishment Day</b>";
dA[x++] = "00001001 <br/> <br><b>National Day</b>";
dA[x++] = "20091002 <br/> <br><b>Mid-Autmn Festival</b>";
dA[x++] = "20091026 <br/> <br><b>Chung Yeung Festival</b>";
dA[x++] = "20091224 <br/> <br><b>Christmas Eve</b>";
dA[x++] = "20091225 <br/> <br><b>Christmas Day</b>";

dA[x++] = "20100213 <br/> <br><b>The day before Chinese New Year's Day</b>";

dA[x++] = "20100214 <br/> <br><b>Chinese New Year</b>";
dA[x++] = "20100215 <br/> <br><b>The second day of Chinese New Year</b>";
dA[x++] = "20100216 <br/> <br><b>The third day of Chinese New Year</b>";
dA[x++] = "20100402 <br/> <br><b>Good Friday</b>";
dA[x++] = "20100403 <br/> <br><b>Day after Good Friday</b>";
dA[x++] = "20100405 <br/> <br><b>Easter Holiday</b>";
dA[x++] = "20100406 <br/> <br><b>The day after Ching Ming Festival</b>";
dA[x++] = "20100521 <br/> <br><b>Buddha's Birthday</b>";
dA[x++] = "20100616 <br/> <br><b>Tuen Ng Festival</b>";
dA[x++] = "00001001 <br/> <br><b>National Day</b>";
dA[x++] = "20100923 <br/> <br><b>Day after Mid-Autmn Festival</b>";
dA[x++] = "20101016 <br/> <br><b>Chung Yeung Festival</b>";
dA[x++] = "20101225 <br/> <br><b>Christmas Day</b>";
dA[x++] = "20101227 <br/> <br><b>The first weekday after Christmas Day</b>";


// dA[x++] = "20060610 New Event Calendar Started today";

/* Preload images script */
var myimages = new Array()

function preloadimages() {
    for (i = 0; i < preloadimages.arguments.length; i++) {
        myimages[i] = new Image();
        myimages[i].src = preloadimages.arguments[i];
    }
}


/* The path of images to be preloaded inside parenthesis: (Extend list as desired.) */
preloadimages("images/lastmonth.gif", "images/nextmonth.gif", "images/lastyear.gif", "images/nextyear.gif", "images/lastmonthhover.gif", "images/nextmonthhover.gif", "images/lastyearhover.gif", "images/nextyearhover.gif");



// permission is granted to use this javascript provided that the below code is not altered
var pageLoaded = 0; window.onload = function() { pageLoaded = 1; }
function loaded(i, f) {
    if (document.getElementById && document.getElementById(i) != null) f(); else if (!pageLoaded) setTimeout('loaded(\'' + i + '\',' + f + ')', 100);
}

function monthlength(month, year) { var dd = new Date(year, month, 0); return dd.getDate(); }
var moy = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var today = new Date();
var selDate = today.getFullYear() + getmmdd(today.getMonth() + 1, today.getDate());
function dispCal(yy, mm) {
    if (mm < 0 || mm > 12) { alert('month must be between 1 and 12'); return false; }
    if (yy != 0 && (yy < 1901 || yy > 2100)) { alert('year must be after 1900 and before 2101'); return false; }
    var dow = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    var calendar = new Date();
    var today = calendar.getDate(); calendar.setDate(1);
    if (yy > 1900) calendar.setFullYear(yy);
    if (mm > 0) calendar.setMonth(mm - 1);
    var yy = year = calendar.getFullYear();
    var month = calendar.getMonth(); calendar.setDate(today);
    var weekday = calendar.getDay();
    var daysInMonth = monthlength(month + 1, year);
    var hilite_start = '<td class="highlight" width="30px" ><b>';
    var td_start = '<td class="cellstyle" width="30" align="center">';
    var cal = '<div id="cal"><div style="width:238px">' +
    '<table id="evtcalendar" border="0" cellspacing="0" cellpadding="2" align="center"><tr>' +
    '<td class="monthcaption" colspan="7"  ><b>' + moy[month] + ' ' + year + '<\/b><\/td><\/tr><tr>';
    for (dex = 0; dex < 7; dex++) { cal += td_start + dow[dex] + '</td>'; } cal += '<\/tr><tr>';
    var day2 = today; for (dex = today; dex > 6; dex -= 7) day2 = dex; weekday -= day2 - 1;
    while (weekday < 0) weekday += 7;
    for (dex = 0; dex < weekday; dex++) cal += td_start + ' <\/td>';
    for (dex = 1; dex <= daysInMonth; dex++) {
        if (weekday == 7) { cal += '</tr><tr>'; weekday = 0; }
        if (selDate == year + getmmdd(month + 1, dex)) cal += hilite_start + '<span' + clickDate(dex, month, year) + '>'
        + dex + '<\/span><\/b><\/td>';
        else cal += td_start + '<span ' + clickDate(dex, month, year) + '>' + dex + '<\/span><\/td>'; weekday += 1;
    }
    for (dex = weekday; dex < 7; dex++) cal += td_start + ' <\/td>'; cal += '<\/tr><\/table><\/div>';
    if (document.getElementById) {
        var mmb = month; mm = month + 1;
        var yya = yyb = yy;
        if (mmb < 1) { mmb += 12; yyb--; }
        var mma = month + 2;
        if (mma > 12) { mma -= 12; yya++; }
        var yb = yy - 1; var ya = yy + 1; cal += '<table id="calendarnavi" >' +
        '<tr><td  align="center><a href="#" onMouseOver=\"document.PrevYr.src=\'images/lastyearhover.gif\';\" onMouseOut=\"document.PrevYr.src=\'images/lastyear.gif\';\" onclick="if (cala = dispCal(' + yb + ',' + mm + '))' +
        '{document.getElementById(\'cal\').innerHTML = cala; return false;}"><img name="PrevYr" src="images/lastyear.gif"  border="0" alt="Last Year"/></a></td>' +
        '<td align="center" ><a href="#" onMouseOver=\"document.PrevMo.src=\'images/lastmonthhover.gif\';\" onMouseOut=\"document.PrevMo.src=\'images\/lastmonth\.gif\';\"  onclick="if (cala = dispCal(' + yyb + ',' + mmb + '))' +
        '{document.getElementById(\'cal\').innerHTML = cala; return false;}"><img name="PrevMo" src="images/lastmonth.gif"  border="0" alt="Last Month"/></a></td>' +
        '<td class="todaylinkcap" colspan="3" ><a href=\"javascript:start(\'\')\">TODAY<\/a><\/td>' +
        '<td align="center"><a href="#" onMouseOver=\"document.NextMo.src=\'images/nextmonthhover.gif\';\" onMouseOut=\"document.NextMo.src=\'images/nextmonth.gif\';\" onclick="if (cala = dispCal(' + yya + ',' + mma + '))' +

        '{document.getElementById(\'cal\').innerHTML = cala; return false;}"><img name="NextMo" src="images/nextmonth.gif"  border="0" alt="Next Month"/></a></td>' +
        '<td align="center"><a href="#" onMouseOver=\"document.NextYr.src=\'images/nextyearhover.gif\';\" onMouseOut=\"document.NextYr.src=\'images/nextyear.gif\';\" onclick="if (cala = dispCal(' + ya + ',' + mm + '))' +
        '{document.getElementById(\'cal\').innerHTML = cala; return false;}"><img name="NextYr" src="images/nextyear.gif"  border="0" alt="Next Year"/></a></td></tr></table>';
    } else { cal += '<div> </div>'; } cal += '</div>'; return cal;
}

function start() {
    var x = '<div id="calDate" style="border:0pt solid #cccccc;width:280px"><\/div>';
    var y = '';
    cala = '';
    if (tb == 't') y = x + dispCal(0, 0);
    else y = dispCal(0, 0) + x; document.getElementById('calendar').innerHTML = y; ev();
}
loaded('calendar', start);
function clickDate(day, month, year) {
    var ct = nextDate(year + getmmdd(month + 1, day));
    if (ct == '') ct = nextDate('0000' + getmmdd(month + 1, day));
    if (ct == '')
        return 'style="color:' + textclr + '"';
    else return 'style="font-weight:bold;cursor:pointer;color:' + linkclr + '" onclick="selDate = ' + year + getmmdd(month + 1, day) +
 '; isDate(' + day + ',' + month + ',' + year + ');return false;"';
}
function isDate(dayVal, monthVal, yearVal) {
    var ct = nextDate(yearVal + getmmdd(monthVal + 1, dayVal));
    if (ct == '') ct = nextDate('0000' + getmmdd(monthVal + 1, dayVal));
    if (ct == '') ct = noMessage; document.getElementById('calDate').innerHTML = dayVal + ' ' + moy[monthVal] + ' ' + yearVal + '<br \/>' + ct;
    return false;
}
function nextDate(yymmdd) {
    var x = dA.length;
    for (var i = 0; i < x; i++) {
        if (dA[i].substr(0, 8) == yymmdd)
            return dA[i].substr(8);
    }
    return '';
}

function getmmdd(mm, dd) {
    return (mm > 9 ? '' + mm : '0' + mm) + (dd > 9 ? dd : '0' + dd);
}
function ev() {
    var ct = nextDate(selDate);
   
    if (ct == '') ct = nextDate('0000' + selDate.substr(4));
    if (ct == '') ct = noMessage; document.getElementById('calDate').innerHTML =   '';
}
 
 