// Copyright 1996 - Tomer and Yehuda Shiran
// This example will appear in our forthcoming book on JavaScript.
// Feel free to "steal" this code provided that you leave this notice as is.
// Additional examples from the book can be found at http://www.geocities.com/SiliconValley/9000/
// For more information contact Tomer or Yehuda Shiran <yshiran@iil.intel.com>

// Heavily customised O. Manrique 2003

setCal()

//function checkBrowser() {
//	var texto = "" // just testing...
//	texto += 'Value for is_nav >>' 
//	if (is_nav) ? texto += texto + 'Positivo!' : texto += texto + 'Negativo!'
//    texto += texto + '<<'
//	alert(texto);
//}

function getTime() {
	// initialize time-related variables with current time settings
	var now = new Date()
	now = null
}

function getDays(month, year) {
	// create array to hold number of days in each month
	var ar = new Array(12)
	ar[0] = 31 // Enero
        ar[1] = (year % 4 == 0) ? 29 : 28 // Febrero
	ar[2] = 31 // Marzo
	ar[3] = 30 // Abril
	ar[4] = 31 // Mayo
	ar[5] = 30 // Junio
	ar[6] = 31 // Julio
	ar[7] = 31 // Agosto
	ar[8] = 30 // Septiembre
	ar[9] = 31 // Octubre
	ar[10] = 30 // Noviembre
	ar[11] = 31 // Deciembre

	// return number of days in the specified month (parameter)

	return ar[month]
}

function getMonthName(month) {
	// create array to hold name of each month
	var ar = new Array(12)
	ar[0] = "January"
	ar[1] = "February"
	ar[2] = "March"
	ar[3] = "April"
	ar[4] = "May"
	ar[5] = "June"
	ar[6] = "July"
	ar[7] = "August"
	ar[8] = "September"
	ar[9] = "October"
	ar[10] = "November"
	ar[11] = "December"

	// return name of specified month (parameter)
	return ar[month]
}

function setCal() {
	// standard time attributes
	var now = new Date()
        var year = (is_nav) ? now.getYear() + 1900 : now.getYear()
	var month = now.getMonth()
	var monthName = getMonthName(month)
	var date = now.getDate()
	now = null

	// create instance of first day of month, and extract the day on which it occurs
	var firstDayInstance = new Date(year, month, 1)
	var firstDay = firstDayInstance.getDay()
	firstDayInstance = null

	// number of days in current month
	var days = getDays(month, year)
    // call functioin to check browser
    
    //    checkBrowser()
	// call function to draw calendar
	drawCal(firstDay + 1, days, date, monthName, year)
}

function drawCal(firstDay, lastDate, date, monthName, year) {
	// constant table settings
	var headerHeight = 8 // height of the table's header cell
	var border = 0 // 3D height of table's border
	var cellspacing = 0 // width of table's border
	var headerColor = "#005A9C" // color of table's header
	var headerSize = 1 // size of tables header font
        var daySize = 1 // size of tables header font
	var colWidth = 16 // width of columns in table
	var dayCellHeight = 8 // height of cells containing days of the week
	var dayColor = "black" // color of font representing week days
	var cellHeight = 8 // height of cells representing dates in the calendar
	var todayColor = "red" // color specifying today's date in the calendar
        var dateColour = "black" // colour of font representing dates

	// create basic table structure
	var text = "" // initialize accumulative variable to empty string
	text += '<CENTER>'
	text += '<TABLE BORDER=' + border + ' CELLSPACING=' + cellspacing + '>' // table settings
	text += 	'<TH COLSPAN=7 HEIGHT=' + headerHeight + '>' // create table header cell
	text += 		'<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + ' WEIGHT=700>' // set font for table header
	text += 			monthName + ' ' + year 
	text += 		'</FONT>' // close table header's font settings
	text += 	'</TH>' // close header cell

	// variables to hold constant settings
	var openCol = '<TD WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
	openCol += '<FONT COLOR="' + dayColor + '" SIZE=' + daySize + '>'
	var closeCol = '</FONT></TD>'

	// create array of abbreviated day names
	var weekDay = new Array(7)
	weekDay[0] = "Sun"
	weekDay[1] = "Mon"
	weekDay[2] = "Tue"
	weekDay[3] = "Wed"
	weekDay[4] = "Thu"
	weekDay[5] = "Fri"
	weekDay[6] = "Sat"

	// create first row of table to set column width and specify week day
	text += '<TR ALIGN="center" VALIGN="center">'
	for (var dayNum = 0; dayNum < 7; ++dayNum) {
		text += openCol + weekDay[dayNum] + closeCol 
	}
	text += '</TR>'

	// declaration and initialization of two variables to help with tables
	var digit = 1
	var curCell = 1
	for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
		text += '<TR ALIGN="right" VALIGN="top">'
		for (var col = 1; col <= 7; ++col) {
			if (digit > lastDate)
				break
			if (curCell < firstDay) {
				text += '<TD></TD>';
				curCell++
			} else {
				if (digit == date) { // current cell represent today's date
					text += '<TD HEIGHT=' + cellHeight + '>'
					text += '<FONT COLOR="' + todayColor + '"SIZE=1>'
					text += digit
					text += '</FONT>'
					text += '</TD>'
				} else
					text += '<TD HEIGHT=' + cellHeight + '><FONT SIZE=1>' + digit + '</FONT></TD>'
				digit++
			}
		}
		text += '</TR>'
	}

	// close all basic table tags
	text += '</TABLE>'
	text += '</CENTER>'

	// print accumulative HTML string
	document.write(text) 
}
