//v=16062010
var ajaxServerURL;
// **************************************************** //
//					CREATE XML HTTP OBJECT				//
// **************************************************** //
function CreateXMLHttpObject(data, returnXML, useGET, callBackFunc) {
	var XMLHttpRequestObject;
	var mozillaFlag = false;

	try {
		XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHTTP");
	} catch (ex1) {
		try {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (ex2) {
			XMLHttpRequestObject = false;
		}
	}
	if (!XMLHttpRequestObject && window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
		mozillaFlag = true;
	}
	
	if(XMLHttpRequestObject) {
		var asyncFlag = (typeof(callBackFunc) == "function");
		
		if (asyncFlag) {
			XMLHttpRequestObject.onreadystatechange = function() {
				if (XMLHttpRequestObject.readyState == 4) {
					if (XMLHttpRequestObject.status == 200) {
						if (!returnXML) {
							callBackFunc(XMLHttpRequestObject.responseText);
						} else if (!mozillaFlag) {
							callBackFunc(XMLHttpRequestObject.responseXML);
						} else {
							callBackFunc(removeWhiteSpaces(XMLHttpRequestObject.responseXML));
						}
					} else {
						callBackFunc(XMLHttpRequestObject.statusText);
					}
				}
			};
		}
		
		if (!ajaxServerURL) {
			ajaxServerURL = window.location.protocol + '//' + window.location.hostname;
			
			if(ajaxServerURL.toLowerCase().indexOf('.biz') < 0)
				ajaxServerURL += '/DubaiApartments';
			
			ajaxServerURL += '/AjaxServer.aspx';
		}

		if(useGET) {
			if(data.indexOf("?", 0) < 0)
				data = "?" + data;
			
			XMLHttpRequestObject.open("GET", ajaxServerURL + data, asyncFlag);
			XMLHttpRequestObject.send(null);
		} else {
			if(data.indexOf("?", 0) == 0)
				data = data.substr(1, data.length - 1);
			
			XMLHttpRequestObject.open("POST", ajaxServerURL, asyncFlag);
			XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			XMLHttpRequestObject.send(data);
		}
		
		if (!asyncFlag) {
			if (!returnXML) {
				return XMLHttpRequestObject.responseText;
			} else if (!mozillaFlag) {
				return XMLHttpRequestObject.responseXML;
			} else {
				return removeWhiteSpaces(XMLHttpRequestObject.responseXML);
			}
		}	
	}
	
	return false;
}

// **************************************************** //
//		REMOVE WHITE SPACES FROM XML (for mozilla)		//
// **************************************************** //
function removeWhiteSpaces(xml) {
	if(xml && xml.childNodes) {
		for (var loopIndex = 0; loopIndex < xml.childNodes.length; loopIndex++) {
			var currentNode = xml.childNodes[loopIndex];

			if (currentNode.nodeType == 1) {
				currentNode = removeWhiteSpaces(currentNode);
			}
			if (((/^\s+$/.test(currentNode.nodeValue))) && (currentNode.nodeType == 3)) {
				xml.removeChild(xml.childNodes[loopIndex--]);
			}
		}
		return xml;
	}
	return null;
}

// **************************************************** //
//			GET NODE VALUE OF XML HTTP OBJECT			//
// **************************************************** //
function getNodeValue(node) {
	var value = (node.text || node.textContent);

	if ( typeof(value) == 'undefined' ) {
		return "";
	}

	return value;
}
function getChildNodeValue(parentNode, child) {
	var childNode;

	if ( typeof(child) == "string" ) {
		childNode = parentNode.getElementsByTagName(child);
		if(childNode.length > 0) {
			childNode = childNode[0];
		} else {
			childNode = null;
		}
	} else if ( typeof(child) == "number" ) {
		childNode = parentNode.childNodes[child];
	}

	return (childNode) ? (childNode.text || childNode.textContent || "") : "";
}

// **************************************************** //
//			ADD REMOVE ROWS / CELLS IN TABLE			//
// **************************************************** //
function removeRowsFromTable(table)
{
	if(table)
	{
		var lastRow = table.rows.length - 1;
		
		for( i = lastRow; i > 0; i-- )
			table.deleteRow(i);
	}	
	return false;
}
function addRowToTable(table, className)
{
	var row = table.insertRow(table.rows.length);
	row.className = className;
	return row;
}
function insertRowToTable(table, rowIndex, className)
{
	if(rowIndex < -1 || rowIndex > table.rows.length)
		rowIndex = table.rows.length;

	var row = table.insertRow(rowIndex);
	row.className = className;
	return row;
}

function addCellToRow(row, text, align)
{
	var cell = row.insertCell(row.cells.length);
	cell.innerHTML = text;
	cell.align = align;
	return cell;
}
function insertCellToRow(row, cellIndex, text, align)
{
	if(cellIndex < -1 || cellIndex > row.cells.length)
		cellIndex = row.cells.length;

	var cell = row.insertCell(cellIndex);
	cell.innerHTML = text;
	cell.align = align;
	return cell;
}
function removeLastRowFromTable(table)
{
	if(table)
	{
		var lastRow = table.rows.length - 1;
		table.deleteRow(lastRow);
	}	
	return false;
}

// **************************************************** //
//					USER FUNCTIONS						//
// **************************************************** //
function ClearInnerText ( controlId )
{
	var control = document.getElementById ( controlId ) ;
	
	if ( control )
		control.innerHTML = '';
		
	return false;
}

function HideControl ( controlId )
{
	var control = document.getElementById ( controlId ) ;
	
	if ( control )
		control.style.display = "none";

	return false;
}
function ShowControl ( controlId )
{
	var control = document.getElementById ( controlId ) ;
	
	if ( control )
		control.style.display = "inline";
		
	return false;
}

// **************************************************** //
//					GET ENCRYPTED VALUE					//
// **************************************************** //
function getEncrypted(originalValue)
{
	var data = "?func=getEncrypted&orgValue=" + originalValue;

	var responseText = CreateXMLHttpObject(data, false, true, null);
	if (responseText) {
		return responseText;
	}

	return "";
}

// **************************************************** //
//			GET BOOKED / UNAVAIABLE DATES				//
// **************************************************** //
function getBookedDates(ddlPropertyNoId, txtDatesId)
{
	var ddlPropertyNo = document.getElementById(ddlPropertyNoId);
	var txtDates = document.getElementById(txtDatesId);
	txtDates.value = "";

	if(ddlPropertyNo.value != "0" || ddlPropertyNo.value != "") {
		var data = "?func=getBookedDates&propId=" + ddlPropertyNo.value;

		var responseText = CreateXMLHttpObject(data, false, true, null);
		if (responseText) {
			txtDates.value = responseText;
		}
	}

	return false;
}
// **************************************************** //
//			GET RENT FOR CALCULATE RENT POPUP			//
// **************************************************** //
function popup_getRent(ddlPropertyNoId, calStartDateId, calEndDateId, ddlCurrencyId, lblRentCaptionId, lblRentValueId, lblActualRentValueId, lblInclusiveId, divBookNowId)
{
	var calStartDate = document.getElementById(calStartDateId);
	var calEndDate = document.getElementById(calEndDateId);
	var lblRentCaption = document.getElementById(lblRentCaptionId);
	var lblRentValue = document.getElementById(lblRentValueId);
	var lblActualRentValue = document.getElementById(lblActualRentValueId);
	var lblInclusive = document.getElementById(lblInclusiveId);
	var divBookNow = document.getElementById(divBookNowId);
	
	if (calStartDate.value == "" || calEndDate.value == "") {
		lblRentCaption.innerHTML = "";
		lblRentValue.innerHTML = "" ;
		lblActualRentValue.innerHTML = "" ;
		lblInclusive.style.display = "none";

		if(divBookNow) {
			divBookNow.style.display = "none";
		}
	} else {
		var ddlPropertyNo = document.getElementById(ddlPropertyNoId);
		var data = "?func=checkBookingDates&sDate=" + calStartDate.value + "&eDate=" + calEndDate.value 
				+ "&propId=" + ddlPropertyNo.value;

		var responseText = CreateXMLHttpObject(data, false, true, null);
		if (responseText) {
			lblRentCaption.innerHTML = "";
			lblRentValue.innerHTML = "" ;
			lblActualRentValue.innerHTML = "" ;
			lblInclusive.style.display = "none";

			alert(responseText);
		} else {
			var ddlCurrency = document.getElementById(ddlCurrencyId);
			var data = "?func=getRent&sDate=" + calStartDate.value + "&eDate=" + calEndDate.value 
				+ "&propId=" + ddlPropertyNo.value + "&currId=" + ddlCurrency.value;

			var responseXML = CreateXMLHttpObject(data, true, true, false);
			if (responseXML) {
				var node = responseXML.documentElement;
				if (node) {
					var firstChild = node.firstChild;

					lblRentCaption.innerHTML = "Total Cost:";
					lblRentValue.innerHTML = getNodeValue(firstChild.childNodes[1]);
					lblActualRentValue.innerHTML = getNodeValue(firstChild.childNodes[8]);

					if(lblActualRentValue.innerHTML != lblRentValue.innerHTML)
					{
						lblRentValue.style.display = "inline";
						lblActualRentValue.className = "redBoldStrk";
					}
					else
					{
						lblRentValue.style.display = "none";
						lblActualRentValue.className = "redBold";
					}
					
					lblInclusive.style.display = "";

					if(divBookNow) {
						divBookNow.style.display = "inline";
					}
				}
			}
		}
	}

	return false;
}
function popup_changeCurrency(ddlPropertyNoId, calStartDateId, calEndDateId, ddlCurrencyId, lblRentCaptionId, lblRentValueId, lblActualRentValueId, lblInclusiveId, divBookNowId)
{
	var lblRentCaption = document.getElementById(lblRentCaptionId);
	var lblActualRentValue = document.getElementById(lblActualRentValueId);
	
	if(lblRentCaption && lblActualRentValue && lblRentCaption.innerHTML != "" && lblActualRentValue.innerHTML != "")
		popup_getRent(ddlPropertyNoId, calStartDateId, calEndDateId, ddlCurrencyId, lblRentCaptionId, lblRentValueId, lblActualRentValueId, lblInclusiveId, divBookNowId);

	return false;
}

function popup_requestBooking(ibtnBookNowId, calStartDateId, calEndDateId, bookingURL)
{
	var calStartDate = document.getElementById(calStartDateId);
	var calEndDate = document.getElementById(calEndDateId);
	var ibtnBookNow = document.getElementById(ibtnBookNowId);
	
	var URL = bookingURL;
	
	if (calStartDate.value != "" && calEndDate.value != "")
	{
		var startDate = getEncrypted(calStartDate.value);
		var endDate = getEncrypted(calEndDate.value);	
		
		URL +=  '&sd=' + startDate + '&ed=' + endDate;
	}
	
	window.open(URL,'RequestBooking','location=yes,toolbar=yes,menubar=yes,status=yes,resizable=yes,scrollbars=yes');
	
	return false;
}

