// JavaScript Document

var cdate = new Date(sdate)
var timediff = (cdate.getTimezoneOffset() -300) * 60 * 1000
var iday = 60*60*24*1000
var ntax = 0.07
var ccaldays = "31,28,31,30,31,30,31,31,30,31,30,31,"
var acaldays = ccaldays.split(",")
var ccalday = "Su,Mo,Tu,We,Th,Fr,Sa,"
var acalday = ccalday.split(",")
var cfulldays = "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,"
var afulldays = cfulldays.split(",")
var ccalmonth = "January,February,March,April,May,June,July,August,September,October,November,December,"
var acalmonth = ccalmonth.split(",")

function compdates(date1,date2) 
{
	var d1 = new Date(date1.getFullYear(),date1.getMonth(),date1.getDate())
	var d2 = new Date(date2.getFullYear(),date2.getMonth(),date2.getDate())
//	var n1 = parseInt(String(d1.getTime()/iday))
//	var n2 = parseInt(String(d2.getTime()/iday))
	var n1 = parseInt(String( (d1.getTime()+timediff)/iday))
	var n2 = parseInt(String( (d2.getTime()+timediff)/iday))
	return n2 - n1
}
	
function makedate(j)
{cdate.setTime(sdate.getTime() + (j*iday) ) 
return bdsdate(cdate) }

function bdsdate(vdate)
{ 
  if (vdate==null) {return ""}
  var nday = vdate.getDate()
  var ndow = vdate.getDay()
  var nmonth = vdate.getMonth()
  var nyear = vdate.getFullYear()
  var cRetVal = afulldays[ndow] + ", " 
  cRetVal = cRetVal + acalmonth[nmonth] + " "
  cRetVal = cRetVal + nday.toString() + ", "
  cRetVal = cRetVal + nyear.toString()
  return cRetVal
 }    
  

function maketable(ddate,cid)
	{
		numdays = parseInt(acaldays[ddate.getMonth()])
		if (numdays == 28 && (ddate.getYear()%4 == 0) ) {numdays = 29}
		var mdate = new Date(ddate)
		var ctxt = ""
		arm = crm.split(",")
		armn = crmn.split("-")
		ctxt = ctxt + '<table id="' + cid + '" border ="1" width = "100%" >'
		ctxt = ctxt + "<tr>"
		ctxt = ctxt + "<th align='left' title='Click to Expand-Collapse' width='160' <a class='month' href='javascript:void(0);' " +
				" onclick='toggleRows(" + '"' + cid + '"' + ")' return false;>" + 
				 acalmonth[ddate.getMonth()] + " " + 
				String(ddate.getFullYear()) + "</a></th>"
		for (var i=0;i<numdays;i++) 
			{
			ctxt = ctxt + "<th align='center'>"  + String(i+1) + "</th>"
			mdate.setTime(mdate.getTime() + iday)
			}
		ctxt = ctxt + "</tr>"
		for (var m=0;m<arm.length-1;m++)
			{
			ctxt = ctxt + '<tr><td bgcolor="#FFFFCC">' + armn[m] + '</td>'
			var adt = cdt[m].split(",")
			var afr = cfr.split(",")
			var art = crt.split(",")
			var mdate = new Date(ddate)
			cstart = bdsdate(mdate)
			cstart = cstart.replace(/, /g,".")
			cstart = cstart.replace(/ /g,".")
			for (var i=0;i<numdays;i++) 
				{
				nref = compdates(sdate,mdate)
				if (adt[nref] == "X")
					{
					ctxt = ctxt + "<td width='20' align='center' class='occupied'>" + 
								'<Font Color = "#999999"><a Title="' + bdsdate(mdate) + '" >X</a></Font>' + "</td>" 
					}
				else
					{
					cstart = bdsdate(mdate)
					cstart = cstart.replace(/, /g,".")
					cstart = cstart.replace(/ /g,".")
					ctxt = ctxt + '<td width="20" align="center" class="vacant"><a Title="' +  
							bdsdate(mdate) + 
							'" href="rsv.php?&room=' + crmn + 
							'&days=' + afr[nref] + 
							'&start=' + cstart + 
							'&rate=' + art[nref] + 
							'" >V</a></td>' ;
					
					}
					mdate.setDate(mdate.getDate()+1)
					//mdate.setTime(mdate.getTime() + iday)
				}
			ctxt = ctxt + "</tr>"
			}		
		ctxt = ctxt + "</table>"
		return ctxt 
	}
		
function formatCurrency(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
     num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
      cents = "0" + cents;
  return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function reformat(val, len) {
 
        var padding = len - val.length;
 
        for (i = 0; i < padding; i++) {
                val = " " + val;
        }
        return val
  }
function calcu(obj) 
{
	var nval = parseInt(obj.value) 
	var nelement = parseInt(obj.id.substr(6))
	var art = crt.split(",")
	var nrefdays = parseInt(document.getElementById("nDaysIntoYear").value)
	var cthisnum = ""
	var amyrate = new Array
	amyrate[0] = arate[nelement]
	amyrate[1] = arate[nelement]
	var amydays = new Array
	amydays[0] = nval
	amydays[1] = 0
	if (nval > 1)
		{ for (var n = 0; n < nval; n++)
			{ 	athisrate = art[nrefdays + n].split("-")
				amyrate[1] = athisrate[nelement] 
				if ( amyrate[1] != amyrate[0] ) {if (amydays[0] == nval) {amydays[0] = n }}
			}
		amydays[1] = nval - amydays[0]
		if ( amyrate[1] != amyrate[0] ) 
			{  	var cmsg = "Reservation spans two seasonal rates \n"
				cmsg = cmsg + "   " + amydays[0] + " night(s) at " + amyrate[0] + " subtotal: " + (amyrate[0]*amydays[0]) + "\n"
				cmsg = cmsg + "   " + amydays[1] + " night(s) at " + amyrate[1] + " subtotal: " + (amyrate[1]*amydays[1]) + "\n"
				cmsg = cmsg + "Total reflects mixed rates"
				alert(cmsg)
				document.getElementById("rate" + nelement).value = "Mixed rate: " + 
						amyrate[0] + " for " + amydays[0] + " nights/" + 
						amyrate[1] + " for " + amydays[1] + " nights"
			}
	
		}
	
	var nplace = obj.name.substr(4)
	var mygrand = 0
	var mytax = 0
	if (nval == 0) { var mytotal = 0}
	else 
		{ var mytotal = (amyrate[0] * amydays[0]) + (amyrate[1] * amydays[1]) }
	document.getElementById('total' + nplace).value = reformat(formatCurrency(mytotal),10)
	for (var h=0;h<atotal.length;h++) 
		{
		cthisnum = document.getElementById('total'+atotal[h]).value
		mygrand = mygrand + parseInt(cthisnum.replace("$",""))
		 }
		var mytax = mygrand*ntax
		document.getElementById('totaltax').value = reformat(formatCurrency(mytax),10)
		document.getElementById('totalroom').value = reformat(formatCurrency(mygrand),10)
		document.getElementById('totalcharges').value = reformat(formatCurrency(mygrand + mytax),10)

		//return mytotal
	}
			

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) { 
	elm.addEventListener(evType, fn, useCapture); 
	return true; 
	}
	else if (elm.attachEvent) { 
	var r = elm.attachEvent('on' + evType, fn); 
	EventCache.add(elm, evType, fn);
	return r; 
	}
	else {
	elm['on' + evType] = fn;
	}
}
function getEventSrc(e) {
	if (!e) e = window.event;

	if (e.originalTarget)
	return e.originalTarget;
	else if (e.srcElement)
	return e.srcElement;
}
function addLoadEvent(func) {
var oldonload = window.onload;
	if (typeof window.onload != 'function') {
	window.onload = func;
	} else {
	window.onload = 
		function() {
		oldonload();
		func();
		}
	}
}
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
	
		add : function(node, sEventName, fHandler, bCapture){
			listEvents.push(arguments);
		},
	
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				
				/* From this point on we need the event names to be prefixed with 'on" */
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				
				item[0][item[1]] = null;
			};
		}
	};
}();


addEvent(window,'unload',EventCache.flush, false);
