/* variables and array definitions */

var todayDate=new Date();
var currentYear 		= getFullYear(todayDate);
var currentMonth 		= todayDate.getMonth();
var currentDate 		= todayDate.getDate();
var lastYear 			= currentYear;
	if (currentMonth < 13) {var lastMonth 			= currentMonth+12; lastYear = currentYear;}
		else {lastMonth = 1; lastYear = currentYear+1; }

var monthnames = new Array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' );
var monthdays = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

document.write( '<style type="text/css">#calendar { position:absolute; }</style>' );
window.snapLayer = snapLayer;

/*  functions follow  */

function snapLayer( imageName, layerName, offX, offY ) {
	var img = document.images[ imageName ];
    var x = findPos( img, 'Left' );
    var y = findPos( img, 'Top'  );
	if( document.getElementById ) {
	    var elm = document.getElementById( layerName );    
	} else if ( document.all ) {
	    var elm = document.all[ layerName ];
	} else if ( document.layers ) {
	    var elm = document.layers[ layerName ];
	}
	div = ( document.layers ) ? elm : elm.style;
	div.left = x + offX;
	div.top  = y + offY;
}

function findPos( el, val ) {
	if( document.layers ) {
		return ( val == 'Left' ? el.x : el.y );	
	} else {
	    var pos = eval( 'el.offset' + val );
	    while ( ( el.tagName != "BODY" ) && ( el.offsetParent.style.position != 'absolute' ) ) {
	        el = el.offsetParent;
	        pos += eval( 'el.offset' + val );
	    }
	    return pos;		
	}
}

function getFullYear( d ) {
    var y = d.getYear();
    if( y < 1000 ) y +=1900;
    return y;
}

function generateCalendar( yr, mth, PropertyCode ) {
 var propHigh     = eval( PropertyCode + '["highprice"]' ).split(/\|/);	
 var propLow     = eval( PropertyCode + '["lowprice"]' ).split(/\|/)
 var propDetails     = eval( PropertyCode + '["property"]' ).split(/\|/);
	var nextMonth       = mth + 1;
	var nextYear        = yr;
	var previousMonth   = mth-1;
	var previousYear    = yr;
	
	if( previousMonth == -1 ) {
		previousMonth = 11;
		previousYear = yr - 1;
	}
	if( nextMonth > 11 ) {
		nextMonth = 0;
		nextYear = yr + 1;
	}

	var myDate      = new Date(yr,mth);
	var thisDay     = myDate.getDay();
	var thisMonth   = myDate.getMonth();
	var thisdate    = myDate.getDate();
 var thisYear    = myDate.getYear();
	thisYear = thisYear % 100;
	thisYear = ( thisYear < 50 ? 2000 + thisYear : 1900 + thisYear );
	
monthdays[ 1 ] = 28;
	if( ( ( thisYear % 4 == 0 ) && !( thisYear % 100 == 0 ) ) || ( thisYear % 400 == 0) ) {
		monthdays[ 1 ] = 29; // 29 Feb in leap year
    }
	var thisMonthYear = monthnames[ thisMonth ] + thisYear;
	
	if ( eval( PropertyCode + '[thisMonthYear]' ) ) {
		available 	= eval( PropertyCode + '[thisMonthYear].split(",")');	
	} else {
		available = "";
	}
	startspaces=thisdate;
	while (startspaces > 7) startspaces-=7;
	startspaces = thisDay - startspaces;
	if( startspaces < 0 ) startspaces+=7;

	calendarHtml = 	'<table width="400" height="375" border="1" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF" BORDERCOLOR="#FFFFFF"><tr>';
	
	if( ( yr == currentYear ) && ( mth == currentMonth ) ) {
	calendarHtml += '<td align="center" colspan=2 class="month"><b>' + monthnames[ thisMonth ] + ' ' + thisYear + '</b></td>';
		calendarHtml += '<td width="10%" align="center" class="month"><a href="javascript:generateCalendar('+nextYear+','+nextMonth+',\''+PropertyCode+'\')"><img src="next.gif" border="0" alt=""></a></td>';
}

	else if( ( yr == lastYear ) && ( mth == lastMonth ) ) {
		calendarHtml += '<td width="10%" align="center" class="month"> <a href="javascript:generateCalendar('+previousYear+','+previousMonth+',\''+PropertyCode+'\')"><img src="prev.gif" border="0" alt=""></a></td>';
	calendarHtml += '<td align="center" colspan=2 class="month"><b>' + monthnames[ thisMonth ] + ' ' + thisYear + '</b></td>';
	}

 else {
		calendarHtml += '<td width="10%" align="center" class="month"><a href="javascript:generateCalendar('+previousYear+','+previousMonth+',\''+PropertyCode+'\')"><img src="prev.gif" border="0" alt=""></a></td>';
	calendarHtml += '<td align="center" class="month"><b>' + monthnames[ thisMonth ] + ' ' + thisYear + '</b></td>';
		calendarHtml += '<td width="10%" align="center" class="month"><a href="javascript:generateCalendar('+nextYear+','+nextMonth+',\''+PropertyCode+'\')"><img src="next.gif" border="0" alt=""></a></td>';
 }

	calendarHtml += ' </tr>' +
        ' <tr>' +
        '  <td colspan="3">' +
        '   <table width="100%" height="70%" cellpadding="0" cellspacing="1" border="0" bgcolor="#ffffff">' +
        '    <tr>' +
        '     <td class=WdAbb>Mon</td>' +
        '     <td class=WdAbb>Tue</td>' +
        '     <td class=WdAbb>Wed</td>' +
        '     <td class=WdAbb>Thu</td>' +
        '     <td class=WdAbb>Fri</td>' +
        '     <td class=WdAbb>Sat</td>' +
        '     <td class=WdAbb>Sun</td>' +
        '    </tr>' +
        '    <tr height=14%>';
        
	for( s = 0; s < startspaces; s++ ) {
//		calendarHtml += '<td class=booked>&nbsp;</td>';
		calendarHtml += '<td>&nbsp;</td>';
	}
	
	var count = 1;
	
	while( count <= monthdays[ thisMonth ] ) {

		for( b = startspaces; b < 7; b++ ) {

			var found = true;
			var tempDate = new Date( yr, mth, count );

			for( i = 0; i <= available.length; i++ ) {

				if( count == available[ i ] ) {				    
 					calendarHtml += '<td class=booked width=14%>' + count + '</td>';
					found = false;
				}
				
			}
			if( found == true ) {
				if( count <= monthdays[ thisMonth ] ) {
				    // unavailable
					calendarHtml += '<td class=available width=14%>' + count + '</td>';
				} else {
				    // spacer
					calendarHtml += '<td>&nbsp;</td>';
				}
			}
			count++;
		}
		calendarHtml += '</tr>';
		calendarHtml += '<tr height=14%>';
		startspaces = 0;
	}
	calendarHtml += '  </tr>' +
	    ' </table>' +
        '    <table>' +
	'     <tr height=10><td>&nbsp;</td></tr>' +
        '     <tr height=30>' +
        '      <td class=legendavail>Available</td>' +
        '      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>' +
        '      <td class=legendbooked>Booked</td>' +
        '      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>' +
        '     </tr>' +
        '</table>';
        
    // insert the calendar html into the div
    if( document.layers ) {
		var doc = document.layers[ 'calendar' ].document;
		doc.open();
		doc.write( calendarHtml );
		doc.close();
	} else {
	    if( document.getElementById ) {
	        var doc = document.getElementById( 'calendar' );
        }
	    if( document.all ) {
            var doc = document.all.calendar;
        }
        if( doc ) {
            doc.innerHTML = calendarHtml;    
        }
    }
}
