// non property specific


var One_Day_Ms = 1000*60*60*24;
var oJax;



var bLoadingRes = false;
var bLoadingGrid = false;

var arrCatStates = new Array();

function viewFullGrid()
{
	
	incRooms = '';
	chDate(0);
		
}


function chDate(iChange)
{
	
	
	var sQuery = 'sd='+jsDate_To_yyyymmdd(dStart);
	sQuery += '&ed='+jsDate_To_yyyymmdd(dEnd);
	sQuery += '&ch='+iChange;
	sQuery += '&pid='+propertyId;	
	sQuery += '&bkId='+bookingId;
	sQuery += '&rooms='+incRooms;
	
	writeLog(sQuery);
	
	if(!bLoadingGrid)
	{
		bLoadingGrid = true;
		document.getElementById('gridNavBL').innerHTML = sGridLoading + '<div style="width:120px;height:1px;"></div>';
		document.getElementById('gridNavBR').innerHTML = sGridLoading;
		document.getElementById('gridNavTL').innerHTML = sGridLoading;
		document.getElementById('gridNavTR').innerHTML = sGridLoading;	
		rwrPfp('/ajax/loadObs.asp',sQuery, rwrEvalResult);
	}else{
		alert('Please wait while your previous request completes.');
	}
	
}


function removeElement(elId)
{
	var killEl = document.getElementById(elId);	
 	killEl.parentNode.removeChild(killEl);
	rwr_validateTotalCost();
}

function addRoomNight(rtId,dateIxIn,dateIxOut,numAdult,numChild,numInfCot,iReqCot,blockId)
{
	// add another night..
	var sQuery = 'rtId='+rtId;
	sQuery += '&bkId='+bookingId;
	sQuery += '&dateIxIn='+dateIxIn;
	sQuery += '&dateIxOut='+dateIxOut;
	sQuery += '&numAdult='+numAdult;
	sQuery += '&numChild='+numChild;
	sQuery += '&numInfCot='+numInfCot;
	sQuery += '&iReqCot='+iReqCot;
	sQuery += '&blockId='+blockId;
	
	oJax = rwrPfp('/ajax/addRoomNight.asp',sQuery, rwrEvalResult);
	
}

function rwr_validateNumGuests(oControl,iMax,blkId)
{
	
	var oResBlk = new rwr_resValues(blkId)	
	oResBlk.getValues();
	
	var myNumAdult = oResBlk._numAdult;
	var myNumChild = oResBlk._numChild;
	
		
	var myVal = forceInt(oControl.value)
	switch(oControl.name)
	{
		case 'numAdult':
			
			if((myNumAdult+myNumChild) > oResBlk._maxBeds)
			{
			
				while((myNumAdult+myNumChild) > oResBlk._maxBeds && myNumAdult > 0)
				{
					myNumAdult -= 1;
				}
				alert('The maximum bedding capacity is '+oResBlk._maxBeds+'.');	
				oControl.value = myNumAdult;
				myVal = myNumAdult;
			}
			if((myNumAdult+myNumChild) <= 0)
			{
			
				alert('Specify at least one guest.');	
				oControl.value = 1;
				myNumAdult = 1;
				myVal = myNumAdult;
			}
			if(myVal > iMax)
			{
				alert('The maximum adults is '+iMax+'.');	
				myVal = iMax;
			}
			oControl.value = myVal;
			rwr_validateTotalCost();
			break;
		
		case 'numChild':
			if((myNumAdult+myNumChild) > oResBlk._maxBeds)
			{
			
				while((myNumAdult+myNumChild) > oResBlk._maxBeds && myNumChild > 0)
				{
					myNumChild -= 1;
				}
				alert('The maximum bedding capacity is '+oResBlk._maxBeds+'.');	
				oControl.value = myNumChild;
				myVal = myNumChild;
			}
			if((myNumAdult+myNumChild) <= 0)
			{
			
				alert('Specify at least one guest.');	
				oControl.value = 1;
				myNumChild = 1;
				myVal = myNumChild;
			}
			if(myVal > iMax)
			{
				alert('The maximum children is '+iMax+'.');	
				myVal = iMax;
			}
			oControl.value = myVal;
			rwr_validateTotalCost();
			break;	
				
		case 'numInfants':
			if(myVal > iMax)
			{
				alert('The maximum infants is '+iMax+'.');	
				myVal = iMax;
			}
			oControl.value = myVal;
			rwr_validateTotalCost();
			if(typeof(document.getElementById(blkId+'_NotOption')) != 'object')
			{
				if(myVal > 0 )
				{				
					document.getElementById(blkId+'_cotRow').style.display = 'table-row';			
				}else{
					document.getElementById(blkId+'_cotRow').style.display = 'none';
				}
			}
			break;	
	}
}

function rwr_resValues(blkId)
{ // provides an interface to access the various fields in a res block
	// and generates the thumbprint
	
	this._oBookingElement = document.getElementById(blkId);
	this._oFormElements = this._oBookingElement.getElementsByTagName('input');	
	this._bookingDivs = this._oBookingElement.getElementsByTagName('div');
	
	
  // -- SET DEFAULTS -- //
	this._iReqCot = 0;
  this._baseRate = 0; 
  this._baseRatePerNight = 0;
  this._bRateVaries = 0;
  this._maxMinStay = 0; 
  this._maxBeds = 0; 
  this._baseRateMaxGuests = 0; 
  this._inDateIx = 0; 
  this._outDateIx = 0; 
  this._roomTypeId = 0; 
  this._webroomsRoomTypeId = 0; 
  this._displayName = '';
  this._categoryName = '';
  this._rnd = '';
  this._numAdult = 0;
  this._numChild = 0; 
  this._numInfants = 0;
  this._maxGuestsRequiringBeds = 0;
  this._maxAdults = 0;
  this._maxChildren = 0; 
  this._maxInfants = 0;
  this._avgRateAdult = 0;
  this._avgRateChildren = 0;
  this._avgRateInfantsReqCot = 0;
  this._avgRateInfantsNotReqCot = 0;
  this._oRateAdults;
  this._oRateChildren;
  this._oRateInfants;
  this._oNumAdults;
  this._oNumChildren;
  this._oNumInfants;
  this._oTotalRate;
  this._oResLoading;
  this._thumbPrint; 
  
  var thisElement;  
  
  this.getValues = 
		function() 
		{
		  
		  for(var iFrm = 0;iFrm < this._bookingDivs.length;iFrm++)
			{		
				thisElement = this._bookingDivs[iFrm];
				
				switch(thisElement.className)
				{
					case 'cartItemLoading':
						this._oResLoading = thisElement;
						break;
				}
				
			}
		  
		  for(var iFrm = 0;iFrm < this._oFormElements.length;iFrm++)
			{		
				thisElement = this._oFormElements[iFrm];
				switch(thisElement.name)
				{
												
					case 'infReqCot':
						if(thisElement.id.indexOf('CotOn') > 0)
						{
							if(thisElement.checked)
							{
								this._iReqCot = 1;
							}
						}
						break;
					
					case 'roomTypeId':
						this._roomTypeId = parseInt(thisElement.value,10);
						break;
					
					case 'webroomsRoomTypeId':
						this._webroomsRoomTypeId = parseInt(thisElement.value,10);
						break;
					
					case 'rnd':
						this._rnd = thisElement.value;
						break;
					
					case 'categoryName':
						this._categoryName = thisElement.value;
						break;
					
					case 'displayName':
						this._displayName = thisElement.value;
						break;
							
					case 'baseRate':
						this._baseRate = parseFloat(thisElement.value);
						break;
					
					case 'baseRatePerNight':
						this._baseRatePerNight = parseFloat(thisElement.value);
						break;
						
					case 'bRateVaries':
						this._bRateVaries = parseInt(thisElement.value,10);
						break;
						
					case 'maxMinStay':
						this._maxMinStay = parseInt(thisElement.value,10);
						break;
					
					case 'minMaxStay':
						this._minMaxStay = parseInt(thisElement.value,10);
						break;
					
					case 'maxBeds':
						this._maxBeds = parseInt(thisElement.value,10);
						break;
					
					case 'minBrmg':
						this._baseRateMaxGuests = parseInt(thisElement.value,10);
						break;			
					
					case 'inDateIx':
						this._inDateIx = parseInt(thisElement.value,10);
						break;
						
					case 'outDateIx':
						this._outDateIx = parseInt(thisElement.value,10);
						break;
					
					case 'numAdult':
						this._numAdult = parseInt(thisElement.value,10);
						this._oNumAdults = thisElement;
						break;
					
					case 'numChild':
						this._numChild = parseInt(thisElement.value,10);
						this._oNumChildren = thisElement;
						break;
					
					case 'numInfants':
						this._numInfants = parseInt(thisElement.value,10);
						this._oNumInfants = thisElement;
						break;
					
					case 'maxGuestsRequiringBeds':
						this._maxGuestsRequiringBeds = parseInt(thisElement.value,10);
						break;
					
					case 'maxAdults':
						this._maxAdults = parseInt(thisElement.value,10);
						break;
					
					case 'maxChildren':
						this._maxChildren = parseInt(thisElement.value,10);
						break;
					
					case 'maxInfants':
						this._maxInfants = parseInt(thisElement.value,10);
						break;
					
					case 'avgRateAdult':
						this._avgRateAdult = parseFloat(thisElement.value);
						break;
					
					case 'avgRateChildren':
						this._avgRateChildren = parseFloat(thisElement.value);
						break;
					
					case 'avgRateInfantsReqCot':
						this._avgRateInfantsReqCot = parseFloat(thisElement.value);
						break;
					
					case 'avgRateInfantsNotReqCot':
						this._avgRateInfantsNotReqCot = parseFloat(thisElement.value);
						break;
						
					case 'rateAdults':
						this._oRateAdults = thisElement;
						break;
						
					case 'rateChildren':
						this._oRateChildren = thisElement;
						break;
						
					case 'rateInfants':
						this._oRateInfants = thisElement;
						break;
						
					case 'totalRate':
						this._oTotalRate = thisElement;
						break;
											
				}				
			}
  	
  		// thumbprint builder. this format is read by clsThumbprintReader
  		this._thumbPrint = 'displayName~'+this._displayName; 
  		this._thumbPrint += '|categoryName~'+this._categoryName; 
  		this._thumbPrint += '|rnd~'+this._rnd; 
  		this._thumbPrint += '|roomTypeId~'+this._roomTypeId; 
  		this._thumbPrint += '|webroomsRoomTypeId~'+this._webroomsRoomTypeId; 
  		this._thumbPrint += '|inDateIx~'+this._inDateIx; 
  		this._thumbPrint += '|outDateIx~'+this._outDateIx; 
  		this._thumbPrint += '|maxMinStay~'+this._maxMinStay; 
  		this._thumbPrint += '|baseRate~'+this._baseRate; 
  		this._thumbPrint += '|baseRateMaxGuests~'+this._baseRateMaxGuests; 
  		this._thumbPrint += '|baseRatePerNight~'+this._baseRatePerNight; 
  		this._thumbPrint += '|bRateVaries~'+this._bRateVaries; 
  		this._thumbPrint += '|numAdult~'+this._numAdult; 
  		this._thumbPrint += '|numChild~'+this._numChild; 
  		this._thumbPrint += '|numInfants~'+this._numInfants; 
  		this._thumbPrint += '|maxGuestsRequiringBeds~'+this._maxGuestsRequiringBeds; 
  		this._thumbPrint += '|maxAdults~'+this._maxAdults; 
  		this._thumbPrint += '|maxChildren~'+this._maxChildren; 
  		this._thumbPrint += '|maxInfants~'+this._maxInfants; 
  		this._thumbPrint += '|rateAdults~'+this._oRateAdults.value; 
  		this._thumbPrint += '|rateChildren~'+this._oRateChildren.value; 
  		this._thumbPrint += '|rateInfants~'+this._oRateInfants.value; 
  		this._thumbPrint += '|iReqCot~'+this._iReqCot; 
  		this._thumbPrint += '|totalRate~'+this._oTotalRate.value; 
  		
  		
  		
  	
  	}
  
}

function rwrInitCategories()
{ // executes the category state changes
		
	var thisCatId,thisState,thisCatObject;
	for(var ix=0;ix<arrCatStates.length;ix++)
	{
		thisCatId = arrCatStates[ix].split('-')[0];
		thisState = arrCatStates[ix].split('-')[1];
		try
		{
			thisCatObject = document.getElementById('gridBody_'+thisCatId);
			thisCollapsLabelObject  = document.getElementById('collapseLabel_'+thisCatId);
			switch(thisState)
			{
				case 'y':
					thisCatObject.style.display = 'table-row-group';
					thisCollapsLabelObject.innerHTML = 'hide category (-)';
					break;
					
				case 'n':
					thisCatObject.style.display = 'none';
					thisCollapsLabelObject.innerHTML = 'show category (-)';
					break;	
			}
		}catch(Err){}
			
	}
	
	
}

function setCatState(catId,state)
{// adds to the change list of category states

	arrCatStates.push(catId+'-'+state);
}



function toggleCatDisplay(categoryId)
{ // toggles a category change

	var oCat = document.getElementById('gridBody_'+categoryId);
	var oCollapseLabel = document.getElementById('collapseLabel_'+categoryId);
	var myState
	switch(oCat.style.display)
	{
		case 'table-row-group':
			oCat.style.display = 'none';
			oCollapseLabel.innerHTML = 'show category (+)';
			sState = 'n';
			break;
			
		default:
			oCat.style.display = 'table-row-group';
			oCollapseLabel.innerHTML = 'hide category (-)';
			sState = 'y';
			break;
	}
	setCatState(categoryId,sState)
}

function rwr_newResDates(blkId,sRtName)
{
	
	var oResBlk = new rwr_resValues(blkId)	
	oResBlk.getValues();
	
	var sQuery;
	sQuery = 'pid='+propertyId;
	sQuery += '&roomTypeId='+oResBlk._roomTypeId;
	sQuery += '&inDateIx='+oResBlk._inDateIx;
	sQuery += '&outDateIx='+oResBlk._outDateIx;
	sQuery += '&numAdult='+oResBlk._numAdult;
	sQuery += '&numChild='+oResBlk._numChild;
	sQuery += '&numInfant='+oResBlk._numInfants;
	sQuery += '&iReqCot='+oResBlk._iReqCot;	
	sQuery += '&blkId='+blkId;
	
	var oDatePop = showPopWin('/dialogue/selectResDates.asp?'+sQuery,
													sRtName,
													550,
													300,
													null,true)
	
}


function rwr_validateCost(blkId)
{ // validates the cost of a booking block and returns the total
	
	var oBookingElement = document.getElementById(blkId);
	var oFormElements = oBookingElement.getElementsByTagName('input');
	
	var numDays = 0;
	
	var totRateExtraAdults = 0;
	var rateAdults = 0;
	
	var totRateExtraChildren = 0;
	var rateChildren = 0;
	
	var totRateExtraInfantsReqCot = 0;
	var totRateExtraInfantsNotReqCot = 0;
	var rateInfants = 0;
		
	var totalRate = 0;
	
	var oResBlk = new rwr_resValues(blkId)	
	oResBlk.getValues();
	
	
	numDays = oResBlk._outDateIx - oResBlk._inDateIx;
	
	totRateExtraAdults = oResBlk._avgRateAdult * numDays;
	totRateExtraChildren = oResBlk._avgRateChildren * numDays;
	totRateExtraInfantsReqCot = oResBlk._avgRateInfantsReqCot * numDays;
	totRateExtraInfantsNotReqCot = oResBlk._avgRateInfantsNotReqCot * numDays;
	
	totalRate = oResBlk._baseRate;
	
	var unchargedAdults = oResBlk._numAdult;
	var unchargedChildren = oResBlk._numChild;
	var brmgToApply = oResBlk._baseRateMaxGuests;
	var preBrmgToApply;
	
	if(brmgToApply < (oResBlk._numAdult+oResBlk._numChild))
	{
		
		if(brmgToApply > 0)
		{
			preBrmgToApply = brmgToApply;
			brmgToApply = brmgToApply - unchargedAdults;
			unchargedAdults = unchargedAdults - preBrmgToApply
			
			if(unchargedAdults < 0)
			{
				unchargedAdults = 0;
			}
			if(brmgToApply < 0)
			{
				brmgToApply = 0;
			}
		}
		rateAdults = unchargedAdults*totRateExtraAdults;
		
		if(brmgToApply > 0)
		{
			preBrmgToApply = brmgToApply;
			brmgToApply = brmgToApply - unchargedChildren;
			unchargedChildren = unchargedChildren - preBrmgToApply
			
			if(unchargedChildren < 0)
			{
				unchargedChildren = 0;
			}
			if(brmgToApply < 0)
			{
				brmgToApply = 0;
			}
		}
	
		rateChildren = unchargedChildren*totRateExtraChildren;
		
	}
	
	if(oResBlk._iReqCot == 1)
	{
		rateInfants = totRateExtraInfantsReqCot*oResBlk._numInfants;
	}else{
		rateInfants = totRateExtraInfantsNotReqCot*oResBlk._numInfants;
	}
	
	totalRate += rateAdults;
	totalRate += rateChildren;
	totalRate += rateInfants;
	
	oResBlk._oRateAdults.value 	= formatMoney(rateAdults);
	oResBlk._oRateChildren.value = formatMoney(rateChildren);
	oResBlk._oRateInfants.value 	= formatMoney(rateInfants);
	oResBlk._oTotalRate.value 		= formatMoney(totalRate);
	
	return totalRate;
	
}

function rwr_validateTotalCost()
{
	var rowCount = 0;
	
	var oResBlkTotal, thisThumbprint;
	
	var sThumbSubmission = '';
	
	var oRwrRes = document.getElementById('rwrRes');
	var oBookingRows = oRwrRes.getElementsByTagName('div');
	var grandTotal = 0;
	
	for(var iRow = 0;iRow < oBookingRows.length;iRow++)
	{		
		if(oBookingRows[iRow].id.indexOf('rtb') == 0)
		{
			grandTotal += rwr_validateCost(oBookingRows[iRow].id);
			oResBlkTotal = new rwr_resValues(oBookingRows[iRow].id)	
			oResBlkTotal.getValues();			
			sThumbSubmission += '<input type="hidden" name="thumbPrint" value="'+oResBlkTotal._thumbPrint+'">';
			
			rowCount++;
		}
					
	}
		
	
	
	var lblGrandTotalResItems;
	
	if(rowCount > 0)
	{
		document.getElementById('rwrResInstruction2').style.display = 'none';
		document.getElementById('rwrResInstruction').style.display = 'none';
		document.getElementById('rwrResFormBlk').style.display = 'block';
		document.getElementById('rwrGrandTotal').style.display = 'block';
		if(rowCount == 1)
		{
			lblGrandTotalResItems = 'Total Reservation Value';
		}else{
			lblGrandTotalResItems = 'Total Value of '+rowCount+' Reservation Items';
		}
		document.getElementById('lblGrandTotalResItems').innerHTML = lblGrandTotalResItems;
		
		
	}else{
		document.getElementById('rwrGrandTotal').style.display = 'none';
		document.getElementById('rwrResInstruction').style.display = 'block';
		document.getElementById('rwrResInstruction2').style.display = 'block';
		document.getElementById('rwrResFormBlk').style.display = 'none';
	}
	
	document.getElementById('numCartRows').value = rowCount;
	document.getElementById('cartThumbprints').innerHTML = sThumbSubmission;	
	document.getElementById('grandTotal').value = formatMoney(grandTotal);

}

function formatMoney(dAmt)
{
	return dAmt.toFixed(2);
}

function forceInt(sVal)
{
	var iResult;
	if(isNaN(sVal) || sVal == '')
	{
		iResult = 0;
	}else{
		iResult = parseInt(sVal,10)
	}
	return iResult;
}

function checkdocspelling()
{
	return true;	
}

function dateToIx(myDate)
{ // returns the ix  represented by the given jsDate
	
		
	var iResult = myDate.getTime() -  rootDate.getTime();
	iResult = Math.ceil(iResult / One_Day_Ms,0);
//	iResult += 1;
	return iResult;
	
}

function ixToDate(ix)
{ // returns the jsDate represented by the given ix
	
	var dResult = new Date();
	dResult.setTime(rootDate.getTime() + (One_Day_Ms*ix))
	
	return dResult;
	
}

function grabElement(e)
{ // returns the element clicked on from a click event
	var targ;
	if (!e){
		var e = window.event;
	}
	if (e.target) {
		targ = e.target;
	}	else if (e.srcElement) {
		targ = e.srcElement;
	}
	if (targ.nodeType == 3)
	{
		targ = targ.parentNode;
	}
	return targ;
}

function writeLog(sLog)
{	
	document.getElementById('rwrDebug').innerHTML += sLog+'<br/>';
}

function idFromDayCell(oDayCell,idType)
{
	// gets an id of the specified type from the given day cell element
	// if the given element isnt a day cell element, assume child, traverse DOM upwards
	// until it finds one
	var iResult = false;
	var myId = oDayCell.id;
	
	while(myId.indexOf('rc',0) < 0)
	{
		oDayCell = oDayCell.parentNode;
		myId = oDayCell.id;
	}
	myId = myId.substr(2);
	switch(idType)
	{
		case 'dateIx':
			iResult = myId.split('_')[1];
			break;
		
		case 'rtId':
			iResult = myId.split('_')[0];
			break;
				
	}
	return parseInt(iResult,10);
	
}

function bookNowClick(roomTypeId,dateInIx,dateOutIx)
{
	var bLoadingGridAtClickTime = bLoadingGrid;
	
	if(!bLoadingRes && !bLoadingGridAtClickTime)
	{
		bLoadingRes = true;
		document.getElementById('resWait').innerHTML = sResLoading;
		window.location = '#yourRes';
		window.scrollBy(0,-100);
		addRoomNight(roomTypeId,dateInIx,dateOutIx,1,0,0,0,'');
	}else{
		alert('Please wait while your previous request completes.');
		if(!bLoadingGridAtClickTime)
		{			
			window.location = '#yourRes';
			window.scrollBy(0,-100);
		}
	}
}

function rwrDayClick(e)
{
	
	var oClick = grabElement(e)

	var myDateIx = idFromDayCell(oClick,'dateIx');
	var myRoomTypeIx = idFromDayCell(oClick,'rtId');
	
	var bLoadingGridAtClickTime = bLoadingGrid
	
	if(!bLoadingRes && !bLoadingGridAtClickTime)
	{
		bLoadingRes = true;
		document.getElementById('resWait').innerHTML = sResLoading;
		window.location = '#yourRes';
		window.scrollBy(0,-100);
		addRoomNight(myRoomTypeIx,myDateIx,myDateIx+1,1,0,0,0,'');
	}else{
		alert('Please wait while your previous request completes.');
		if(!bLoadingGridAtClickTime)
		{			
			window.location = '#yourRes';
			window.scrollBy(0,-100);
		}
	}
	
}

var prevClassName;
var tHover;

function rwrNoneOver(e)
{
	tHover = window.setTimeout('ShowContent(\'none_hov\')',1000);	
}
function rwrNoneOut(e)
{
	cancelHover();
	HideContent('none_hov');
}
function rwrCallOver(e)
{

	tHover = window.setTimeout('ShowContent(\'call_hov\')',0);	
}
function rwrCallOut(e)
{
	cancelHover();
	HideContent('call_hov');
}

function rwrDayOver(e)
{
	
	var oClick = grabElement(e)
	prevClassName = oClick.className;
	oClick.className = 'yOver';
	
	var myHovId = oClick.id+'_hov';	
	initHover(myHovId);
}

function rwrDayOut(e)
{
	
	var oClick = grabElement(e)
	oClick.className = prevClassName;
	cancelHover();
	var myHovId = oClick.id+'_hov';	
	HideContent(myHovId);
}

function addRoom(blockId)
{
	// add another [resItem] to your reservation.. with same values
	var oThisItem = new rwr_resValues(blockId);
	oThisItem.getValues();
	
	bLoadingRes = true;
	document.getElementById('resWait').innerHTML = sResLoading;
	window.location = '#yourRes';
	window.scrollBy(0,-100);
	
	addRoomNight(oThisItem._roomTypeId,
							oThisItem._inDateIx,
							oThisItem._outDateIx,
							oThisItem._numAdult,
							oThisItem._numChild,
							oThisItem._numInfants,
							oThisItem._iReqCot,
							'');
}


function addNight(blockId)
{
	var oThisItem = new rwr_resValues(blockId);
	oThisItem.getValues();
	
	var iNewOutDate = oThisItem._outDateIx+1;
	
	var sQuery;
	sQuery = 'propertyId='+propertyId;
	sQuery += '&roomTypeId='+oThisItem._roomTypeId;
	sQuery += '&inDateIx='+oThisItem._inDateIx;
	sQuery += '&outDateIx='+iNewOutDate;
	sQuery += '&numAdult='+oThisItem._numAdult;
	sQuery += '&numChild='+oThisItem._numChild;
	sQuery += '&numInfant='+oThisItem._numInfants;
	sQuery += '&iReqCot='+oThisItem._iReqCot;	
	sQuery += '&blockId='+blockId;
	sQuery += '&bDialogue='+0;
	
	rwrPfp('/proc/selectResDates_proc.asp',sQuery, rwrEvalResult);
	
}

function showDatePick(oSrcObj,blockId)
{
	//var srcPos = getElementPosition(oSrcObj);
	var srcPos = getElementPosition(document.getElementById(blockId+'_cical'));
	var oFr = document.getElementById('selDatePopFr');
	var oSelDateBlk = document.getElementById('rwrSelDateBlk');
	
	var oThisItem = new rwr_resValues(blockId);
	oThisItem.getValues();
	
	oFr.src = '/dialogue/selectResDates.asp?roomTypeId='+oThisItem._roomTypeId+
																						'&pid='+propertyId+
																						'&inDateIx='+oThisItem._inDateIx+
																						'&outDateIx='+oThisItem._outDateIx+
																						'&numAdult='+oThisItem._numAdult+
																						'&numChild='+oThisItem._numChild+
																						'&numInfCot='+oThisItem._numInfants+
																						'&iReqCot='+oThisItem._iReqCot+
																						'&blkId='+blockId+
																						'&bkId='+bookingId;
	
	oSelDateBlk.style.display = 'block';
	oSelDateBlk.style.left = (srcPos.x-155) +'px';
	oSelDateBlk.style.top = (srcPos.y-35) +'px';
	
	
	return false;
}
function hideDatePick()
{
	var oFr = document.getElementById('selDatePopFr');
	var oSelDateBlk = document.getElementById('rwrSelDateBlk').style.display = 'none';
	oFr.src = '/_Empty.html';

	return false;
}



function showDesc(oObj,bid,rtid,wide,high)
{
	// displays the desc box next to the given object
	// or as a popup if its too wide
	var oButtonPos = getElementPosition(oObj)
	var oDesc = document.getElementById('descrPopBlk');

	var frDesc = document.getElementById('descrPopFr');
	
	var myUrl = '/dialogue/roomDescription.asp?bkid='+bid+'&rtid='+rtid;
	
	var maxWidthForPopup = (iDateRange * 50) +200;

	if(wide > maxWidthForPopup)
	{
		
		var myDescWin = window.open(myUrl,'descWin','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no, width='+(wide+30)+', height='+(high+40));
		myDescWin.focus();
		
	}else{
		
		frDesc.src = myUrl;
		frDesc.style.width = wide+30+'px';
		frDesc.style.height = high+10+'px';
		oDesc.style.width = (wide+30)+'px';
		oDesc.style.height = (high+40)+'px';
		
		oDesc.style.display = 'block';
		oDesc.style.top = (oButtonPos.y-5) +'px';
		oDesc.style.left = (oButtonPos.x) +'px';
		
	}
	return false;
	
}
function hideDesc()
{
	var frDesc = document.getElementById('descrPopFr');
	frDesc.src = '/_Empty.html';
	document.getElementById('descrPopBlk').style.display = 'none';
	return false;
}

function hideLogin()
{
	document.getElementById('loginBlk').style.display = 'none';
	return false;
}
function showLogin(oLink)
{
	// displays the login box next to the given object
	
	var oLinkPos = getElementPosition(oLink)
	var oLogin = document.getElementById('loginBlk');
		
	oLogin.style.display = 'block';
	oLogin.style.top = (oLinkPos.y-5) +'px';
	oLogin.style.left = (oLinkPos.x-oLogin.offsetWidth+oLink.offsetWidth+5) +'px';
	
	 document.getElementById('loginEmail_control').focus()
	
}

function displayHover(hovId)
{
	ShowContent(hovId);
}

function initHover(hovId)
{
	tHover = window.setTimeout('displayHover(\''+hovId+'\')',0);	
}

function cancelHover()
{
	clearTimeout(tHover);	
}

function rwrTerms(oObj)
{

	var oButtonPos = getElementPosition(oObj)
	var oDesc = document.getElementById('descrPopBlk');

	var frDesc = document.getElementById('descrPopFr');
	
	var myUrl = '/dialogue/viewTerms.asp?pid='+propertyId;
	var wide=500;
	var high=400;
	var maxWidthForPopup = (iDateRange * 50) +200;

	if(wide > maxWidthForPopup)
	{
		
		var myDescWin = window.open(myUrl,'descWin','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no, width='+(wide+30)+', height='+(high+40));
		myDescWin.focus();
		
	}else{
		
		frDesc.src = myUrl;
		frDesc.style.width = wide+30+'px';
		frDesc.style.height = high+10+'px';
		oDesc.style.width = (wide+30)+'px';
		oDesc.style.height = (high+40)+'px';
		
		oDesc.style.display = 'block';
		oDesc.style.top = (oButtonPos.y-5) +'px';
		oDesc.style.left = (oButtonPos.x-100) +'px';
		
	}
	return false;
}

function rwrDescription(roomTypeId,sRtName,iWidth,iHeight)
{

	var oDatePop = showPopWin('/dialogue/roomDescription.asp?rtid='+roomTypeId+'&bkId='+bookingId,
												sRtName,
												iWidth+15,
												iHeight+15,
												null,true)
}





function rwrInitGrid()
{
	
	rwrInitCategories();
	
	var cGridTable = document.getElementById('gridTable');
	var cGrid = cGridTable.getElementsByTagName("td");

	for(var iGrid=0;iGrid<cGrid.length;iGrid++)
	{

		if(cGrid[iGrid].id.indexOf('rc') == 0)
		{
			//alert(cGrid[iGrid].className.substr(0,1));
			switch(cGrid[iGrid].className.substr(0,1)) // mouse behaviour based on first css char
			{
				case 'y':
					cGrid[iGrid].onclick = rwrDayClick;
					cGrid[iGrid].onmouseover = rwrDayOver;
					cGrid[iGrid].onmouseout = rwrDayOut;
					break;
					
				case 'c':
					cGrid[iGrid].onmouseover = rwrCallOver;
					cGrid[iGrid].onmouseout = rwrCallOut;		
					break;
					
				default:
					cGrid[iGrid].onmouseover = rwrNoneOver;
					cGrid[iGrid].onmouseout = rwrNoneOut;			
			}
			
			
		}
	}
}


function jsDate_To_yyyymmdd(jDate)
{
	
	var sResult = '';	
	var iMth = jDate.getMonth()+1;
	
	sResult = jDate.getFullYear()+'';
	if(iMth < 10)
	{
		sResult += '0'+'';
	}
	sResult += iMth+'';
	if(jDate.getDate() < 10)
	{
		sResult += '0'+'';
	}
	sResult += jDate.getDate()+'';
	
	return sResult;
	
}

function rwrPfp(url, parameters, postBackFunc) {
	
	var sUrl

	var http_request = false;
	
	this.http_request = false;
	
	var sendParams;
	sendParams = parameters;
	
  this.http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     this.http_request = new XMLHttpRequest();
     if (this.http_request.overrideMimeType)
     {
       this.http_request.overrideMimeType('text/plain');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) 
        {
        
        }
     }
  }
  if (!this.http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }
  
  this.http_request.onreadystatechange = postBackFunc;
  this.http_request.open('POST', url, true);
  this.http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
  this.http_request.setRequestHeader("Content-length", sendParams.length);
  this.http_request.setRequestHeader("Connection", "close");
  this.http_request.setRequestHeader("Connection", "close");
  this.http_request.send(sendParams);
}

function rwrEvalResult()
{
	
	if (http_request.readyState == 4)
	{		
		if (http_request.status == 200)
		{
			result = http_request.responseText;
			try
			{				
				eval(result);	
			}
			catch(e)
			{
				alert('Problem Evaluating:\n'+e+'\nIssue:\n\n'+result);
				resetAllLoadingIndicators();
			}			
			
		} else {
			
			result = http_request.responseText;
			alert('Issue:\n\n'+result)	
			resetAllLoadingIndicators();
		}
	}	
}


function resetAllLoadingIndicators()
{
	bLoadingGrid = false;
	bLoadingRes = false;
	document.getElementById('resWait').innerHTML = '';
	
}

// required for hover tips

 function getElementPosition(elem){  
    
   var posX = 0;  
  var posY = 0;  
                 
   while(elem!= null){  
     posX += elem.offsetLeft;  
     posY += elem.offsetTop;  
     elem = elem.offsetParent;  
   }  
                                 
  return { x : posX, y : posY };  
 }  

var cX = 0; var cY = 0; var rX = 0; var rY = 0;
function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;}
function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}

if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
else { document.onmousemove = UpdateCursorPosition; }
	
function AssignPosition(d) 
{
	if(self.pageYOffset) {
		rX = self.pageXOffset;
		rY = self.pageYOffset;
		}
	else if(document.documentElement && document.documentElement.scrollTop) {
		rX = document.documentElement.scrollLeft;
		rY = document.documentElement.scrollTop;
		}
	else if(document.body) {
		rX = document.body.scrollLeft;
		rY = document.body.scrollTop;
		}
	if(document.all) {
		cX += rX; 
		cY += rY;
		}
	d.style.left = (cX+10) + "px";
	d.style.top = (cY+10) + "px";
}
function HideContent(d) 
{
	if(d.length < 1) { return; }
	document.getElementById(d).style.display = "none";
}
function ShowContent(d) 
{
	if(d.length < 1) { return; }
	var dd = document.getElementById(d);
	AssignPosition(dd);
	dd.style.display = "block";
}
function ReverseContentDisplay(d) 
{
	if(d.length < 1) { return; }
	var dd = document.getElementById(d);
	AssignPosition(dd);
	if(dd.style.display == "none") { dd.style.display = "block"; }
	else { dd.style.display = "none"; }
}