/* 	Development:	ARTware-Software.com
	Project:		Amsterdam Writing Workshop website
	File: 		AWW_cal_js.js
	Version: 		1.0 (fixed for month spanning)
	Description:	Javascript support page for calendar page
*/


wsprogram = "http://www.amsterdamwriting.com/cgi-bin/AWW_ws.pl?code="
evprogram = "http://www.amsterdamwriting.com/cgi-bin/AWW_ev.pl?code="

var Month = new Array("MONTH","JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER")

var WeekDay = new Array("DAY","M","T","W","T","F","S","S")

function daysInMonth(month,year) {
	var m = [31,28,31,30,31,30,31,31,30,31,30,31];
	if (month != 2) return m[month - 1];
	if (year%4 != 0) return m[1];
	if (year%100 == 0 && year%400 != 0) return m[1];
	return m[1] + 1;
} 

function dayOfWeek(year,mon,day) {
	var dtIn   = new Date(year,mon-1,day-1);
	var dtWeek = dtIn.getDay();
	return(dtWeek + 1)
}

function currMonth() {
    var currentTime = new Date()
    var month = currentTime.getMonth() + 1
    return(month)
}

function currYear() {
    var currentTime = new Date()
    var year = currentTime.getFullYear()
    return(year)
}

function disp_calendar() {
    mon = currMonth()
    year = currYear()
    var cal = ''
    var calmon = ''
    for(m=0;m<=5;m++){ 
	mm = mon + m
	yy = year
	if(mm > 12) { mm = mon + m - 12; yy = year + 1 }
								// Month Title
	cal += '<td width=214><SPAN class=calemon><B>'
	cal += Month[mm] + '</B><br><br></td>'
								// Month
	calmon += '</td><td><SCRIPT language="JavaScript">dispMonth('
	calmon += mm + ',' + yy
	calmon += ')</SCRIPT></td>'
	if(m == 2) {					// 3 Month divider
    	    cal += '</tr><tr valign=top>' + calmon
    	    cal += '</tr><tr valign=top><td colspan=3>&nbsp;</td></tr><tr valign=top>'
    	    var calmon = ''
	}
    }								// End of Calendar
    cal += '</tr><tr valign=top>' + calmon 
    document.write(cal);
}

function disp_cal_events() {
    var num_lnk = LinkList.length-1
    var lst = 'Workshops<br>'
    var type = 'ws'
    var lne  = ''
    for(k=0;k<=num_lnk;k++){
	var txt  = LinkList[k];
      	var val  = txt.split('|');
	wsev = val[9]			// ws_ev field
	if( (wsev != 'ws')&&(wsev != 'ev')) { continue }
	if(wsev != type) { 
	    lst += "<br>Events<br>"
	    type = 'ev'
	}
	titl = val[12] + ": "
	date = val[6]  + ", "
	time = val[8]
	txt = titl + date + time

	cal_date = val[3] + "," + val[4] + "," + val[5]
	if(type == 'ws') {
	    lnk = "<a class=work HREF=" + wsprogram + val[0] 
	    lnk += " onmouseover=Javascript:showColor(" + cal_date   
	    lnk += ",'worklight') onmouseout=Javascript:showColor("
	    lnk += cal_date +",'caleland') >"
	}
	else {
	    lnk = "<a class=evnt HREF=" + evprogram + val[0] 
	    lnk += " onmouseover=Javascript:showColor(" + cal_date   
	    lnk += ",'evntlight') onmouseout=Javascript:showColor("
	    lnk += cal_date +",'caleland') >"
	}
	lst += lnk + txt + "</a><br>"
    }
    document.write(lst);
}

ActMatrix = new Array(13)
for (i=0; i <=12; i++)
ActMatrix[i]=new Array(32) 

function fillActMatrix(fill) {
    for(i=0;i<=12;i++) {
	// Month
	for(j=0;j<=31;j++) {
	    // Days
	    ActMatrix[i][j] = fill
	}
    }
}

function setActMatrix(fill) {
    fillActMatrix(0)

    for (var i in Activities){
    	line = Activities[i]
    	info = line.split('|')
    	mon = info[3]
    	day = info[4]
    	len = info[5]
      thisYear = currYear()
    	daysInthisMonth  = daysInMonth(mon,thisYear)
    	for(i=1;i<=len;i++) {

	    if(day >daysInthisMonth) { 
		day=1; mon++ 
		if(mon>12) { mon =1 }
	    }
    	    ActMatrix[mon][day] = fill
	    day++
	}
    }
} 

setActMatrix(1)

function dispMonth(mon,year) {
    var d = 0
    start = dayOfWeek(year,mon,1) 
    days  = daysInMonth(mon,year)
    var txt = '<table border=0 cellspacing=0 cellpadding=0><tr valign=top height=20>'

    txt += '<td width=18 align=right><SPAN class=cale>'
    txt += '&nbsp;&nbsp;&nbsp;' + WeekDay[1] + '&nbsp;&nbsp;</td>'
    for(i=2;i<=7;i++) {		// M T W T F S S
	txt += '<td>&nbsp;</td><td width=18 align=right><SPAN class=cale>'
	txt += '&nbsp;&nbsp;&nbsp;' + WeekDay[i] + '&nbsp;&nbsp</td>'
    }					// Days
    txt += '<td>&nbsp;</td></tr><tr valign=top>'
    for(i=1;i<=42;i++) {
	txt += '<td  align=right  height=20>'
	if((i >= start)&(d < days)) { 
	    d += 1
	    id = 'we' + mon + '_' + d
	    txt += '<DIV id="' + id + '">'
					// Mark active days
	    if(ActMatrix[mon][d] == 0) { txt += '<SPAN class=cale>' }
	    else { txt += '<SPAN class=caleland>' }
					// Correct width for days < 10
	    if(d < 10) { txt += '&nbsp;' }
	    txt += '&nbsp;&nbsp;&nbsp;' + d + '&nbsp;&nbsp;&nbsp;</SPAN></DIV>'
	}
	txt += '</td><td>&nbsp;</td>'
					// Next week
	if((i%7)==0) {txt += '</tr><tr valign=top height=20>'}
    }
    txt += '</td></tr></table>'
    document.write(txt)
}

function showColor(mon,date,len,css) {
    days  = daysInMonth(mon,year)
    for(i=0;i<len;i++) {
	dt = date + i				
	if(dt > days) { 		// Spanning Month - Spanning Year should not happen!!!!
		dt = 1;
		mon = mon + 1
		date = 1 - i;
	}
	var dayhighlight = '<SPAN class=' + css + '>&nbsp;&nbsp;&nbsp;' 
	if(dt < 10) { dayhighlight += '&nbsp;' }

	var elem = 'we' + mon + '_' + dt
	dayhighlight += dt + '&nbsp;&nbsp;&nbsp;</SPAN>'
	var TXTday = document.getElementById(elem);
	TXTday.innerHTML =  dayhighlight;
    }
}
