// **************************************************** //
//					AJAX RELATED						//
// **************************************************** //
function isUsernameExists(sender, args)
{
	if(args.Value.length > 0) {
		var data = "?func=isUsernameExists&un=" + args.Value;

		var responseText = CreateXMLHttpObject(data, false, true, null);
		if (responseText) {
			args.IsValid = false;
		}
	}

	return;
}
function isEmailExists(sender, args)
{
	var vals = args.Value.split(',');
	var txtEmail = document.getElementById(vals[1]);

	if(txtEmail.value.length > 0) {
		var data = "?func=isEmailExists&mid=" + vals[0] + "&em=" + txtEmail.value + "&time=" + (new Date()).getTime();

		var responseText = CreateXMLHttpObject(data, false, true, null);
		if (responseText) {
			args.IsValid = false;
		}
	}

	return;
}
function isClientEmailExists(sender, args)
{
	if(args.Value.length > 0) {
		var data = "?func=isEmailExists&mt=client&em=" + args.Value + "&time=" + (new Date()).getTime();

		var responseText = CreateXMLHttpObject(data, false, true, null);
		if (responseText) {
			args.IsValid = false;
		}
	}

	return;
}
function validateClientPassword(sender, args)
{
	var data = "?func=validatePassword&mt=client&pw=" + args.Value + "&time=" + (new Date()).getTime();

	var responseText = CreateXMLHttpObject(data, false, true, null);
	if (! responseText) {
		args.IsValid = false;
	}

	return;
}
function validateAgentPassword(sender, args)
{
	var data = "?func=validatePassword&mt=agent&pw=" + args.Value + "&time=" + (new Date()).getTime();

	var responseText = CreateXMLHttpObject(data, false, true, null);
	if (! responseText) {
		args.IsValid = false;
	}

	return;
}
function isAdvertiserEmailExists(sender, args)
{
	if(args.Value.length > 0) {
		var data = "?func=isEmailExists&mt=advertiser&em=" + args.Value + "&time=" + (new Date()).getTime();

		var responseText = CreateXMLHttpObject(data, false, true, null);
		if (responseText) {
			args.IsValid = false;
		}
	}

	return;
}

function isManagerEmailExists(sender, args)
{
	if(args.Value.length > 0) {
		var data = "?func=isEmailExists&mt=manager&em=" + args.Value + "&time=" + (new Date()).getTime();

		var responseText = CreateXMLHttpObject(data, false, true, null);
		if (responseText) {
			args.IsValid = false;
		}
	}

	return;
}

function validateAdvertiserPassword(sender, args)
{
	var data = "?func=validatePassword&mt=advertiser&pw=" + args.Value + "&time=" + (new Date()).getTime();

	var responseText = CreateXMLHttpObject(data, false, true, null);
	if (! responseText) {
		args.IsValid = false;
	}

	return;
}
// **************************************************** //
//					OTHER FUNCTIONS						//
// **************************************************** //

function getPosition(el, x, y) {
	return (getPosX(el) + (x ? x : 0)) + ',' + (getPosY(el) + (y ? y : 0));
}
function getPosX(el) {
	if(!el) {
		return 0;
	}
	
	return el.offsetLeft + getPosX(el.offsetParent);
}
function getPosY(el) {
	if(!el) {
		return 0;
	}
	
	return el.offsetTop + getPosY(el.offsetParent);
}
function SetFocus(control)
{
	var mControl = document.getElementById(control);
	
	if(mControl && !mControl.disabled)
		mControl.focus();
}

function KeyDownHandler(btnSubmit)
{
	if(event.keyCode == 13)
	{
		var mBtn = document.getElementById(btnSubmit);
		if(mBtn)
		{		
			event.returnValue = false;
			event.cancel = true;
			mBtn.click();
		}
	}
}
function ValidatePropertyNo(txtPropertyNo)
{
	txtPropertyNo = document.getElementById(txtPropertyNo);
	
	if(txtPropertyNo.value == "" || isNaN(txtPropertyNo.value))
	{
		return false;
	}
	
	return true;
}

function SetComboValueToSpan(combo, span)
{
	var mCombo = document.getElementById(combo);
	var mSpan = document.getElementById(span);
	
	if(mCombo && mSpan)
		mSpan.innerText = mCombo.value;
}

function CheckMultipleAction(hiddenTextBox, allowMultiple)
{
	var mTextBox = document.getElementById(hiddenTextBox);
	
	if(mTextBox)
	{
		if(mTextBox.value == '')
		{
			alert('You must select a record to perform this action.');
			return false;
		}
		else if(!allowMultiple && (mTextBox.value.indexOf(',', mTextBox.value.indexOf(',', 0)+1) > 0))
		{
			alert('You can select only one record to perform this action.');
			return false;
		}
		else
			return true;
	}
	else
		return false;
}

function ConfirmDelete(hiddenTextBox)
{
	if(hiddenTextBox != '')
	{
		var mTextBox = document.getElementById(hiddenTextBox);
		
		if(mTextBox)
		{
			if(mTextBox.value == '')
			{
				alert('You must select a record to perform this action.');
				return false;
			}
			else if(mTextBox.value.indexOf(',', mTextBox.value.indexOf(',', 0)+1) > 0)
			{
				return confirm('Are you sure you want to delete all selected records?');
			}
			else
				return confirm('Are you sure you want to delete the selected record?');
		}
		else
			return false;
	}
	else
		return confirm('Are you sure you want to delete this record?');
}
function ConfirmTop6(hiddenTextBox, allowMultiple)
{
	if(hiddenTextBox != '')
	{
		var mTextBox = document.getElementById(hiddenTextBox);
		
		if(mTextBox)
		{
			var length = 0;
			var string = mTextBox.value;
			length = string.split(',');
						
			
			if(mTextBox.value == '')
			{
				alert('You must select a record to perform this action.');
				return false;
			}
			else if( (length.length - 1) > 9)
			{
				alert('You cannot select more than 9 records');
				return false;
			}
			else
				return confirm('Are you sure you want to make selected Properties as Top9?');
		}
		else
			return false;
	}
}
function ConfirmReceiptEdit()
{
	return confirm('Are you sure you want to Edit this Receipt?');	
}

/* ==================================================
START FOR CHECK UNCHECK FUNCTION OF CHECK BOX IN GRID
================================================== */
function AddRemoveSelection(checkBox, hiddenTextBox, selectAllCheckBox, otherCheckBox)
{
	var mTextBox = document.getElementById(hiddenTextBox);
	
	if(mTextBox)
	{
		var mSelectAll = document.getElementById(selectAllCheckBox);
		var val = true;
		var name;
		var parentElement =	checkBox.parentElement;
		
		if(parentElement && parentElement.tagName.toUpperCase() == "SPAN" && parentElement.name != "")
			name = parentElement.name;
		else
			name = checkBox.name;

		if(checkBox.checked)
		{
			mTextBox.value = mTextBox.value + name + ',';

			var e, i, ename;;
			
			for(i=0; i < document.forms[0].length; i++)
			{
				e = document.forms[0].elements[i];
				
				if(e.type == 'checkbox')
				{
					parentElement = e.parentElement;
				
					if(parentElement && parentElement.tagName.toUpperCase() == "SPAN" && parentElement.name != "")
						ename = parentElement.name;
					else
						ename = e.name;
			
					if(mSelectAll && ename != name && e.id.indexOf(otherCheckBox) != -1 && e.id != mSelectAll.id)
					{
						val = e.checked;
						if(!val)
							break;					
					}
					else if(ename != name && e.id.indexOf(otherCheckBox) != -1)
					{
						val = e.checked;
						if(!val)
							break;					
					}
				}
			}
		}
		else
		{
			mTextBox.value = RemoveFromString(',', mTextBox.value, name);
			val = false;
		}
		
		if(mSelectAll)
			mSelectAll.checked = val;
	}
}

function CheckUncheckAll(selectAllCheckBox, otherCheckBox, hiddenTextBox)
{
	var mTextBox = document.getElementById(hiddenTextBox);
		
	if(mTextBox)
	{
		var val = selectAllCheckBox.checked;
		var e, i, ename, parentElement;
		
		for(i=0; i < document.forms[0].length; i++)
		{
			e = document.forms[0].elements[i];
			
			if(e.type == 'checkbox' && e.id.indexOf(otherCheckBox) != -1 && e.id != selectAllCheckBox.id)
			{
				parentElement = e.parentElement;
				
				if(parentElement && parentElement.tagName.toUpperCase() == "SPAN" && parentElement.name != "")
					ename = parentElement.name;
				else
					ename = e.name;
			
				if(!val)
					mTextBox.value = RemoveFromString(',', mTextBox.value, ename);
				else if(!e.checked)
					mTextBox.value = mTextBox.value + ename + ',';

				e.checked = val;
			}
		}
	}
}

function CheckSelected(hiddenTextBox, selectAllCheckBox, otherCheckBox)
{
	var mTextBox = document.getElementById(hiddenTextBox);
	
	if(mTextBox)
	{
		var aString = mTextBox.value.split(',');		
		var val = true;
		var e, i, j, ename, parentElement;
		var mSelectAll = document.getElementById(selectAllCheckBox);
		
		for(i=0; i < document.forms[0].length; i++)
		{
			e = document.forms[0].elements[i];
			
			if(mSelectAll && e.type == 'checkbox' && e.id.indexOf(otherCheckBox) != -1 && e.id != mSelectAll.id)
			{
				parentElement = e.parentElement;
				
				if(parentElement && parentElement.tagName.toUpperCase() == "SPAN" && parentElement.name != "")
					ename = parentElement.name;
				else
					ename = e.name;

				for(j=0; j < aString.length; j++)
				{
					if(aString[j] == ename)
					{
						e.checked = true;
						break;
					}
				}
				val = (val && e.checked);
			}
			else if(e.type == 'checkbox' && e.id.indexOf(otherCheckBox) != -1)
			{
				parentElement = e.parentElement;
				
				if(parentElement && parentElement.tagName.toUpperCase() == "SPAN" && parentElement.name != "")
					ename = parentElement.name;
				else
					ename = e.name;

				for(j=0; j < aString.length; j++)
				{
					if(aString[j] == ename)
					{
						e.checked = true;
						break;
					}
				}
				val = (val && e.checked);
			}
		}
		if(mSelectAll)
			mSelectAll.checked = val;
	}
}

function RemoveFromString(delimiter, valString, valRemove)
{
	var valReturn = '';
	
	if(delimiter != '')
	{
		var aString = aString = valString.split(delimiter);
		var i;
		
		for(i=0; i < aString.length; i++)
		{
			if(aString[i] != '' && aString[i] != valRemove)
				valReturn = valReturn + aString[i] + delimiter;
		}
	}
	
	return valReturn;
}
function CheckUncheckSibling(caller)
{
	sibling = caller.nextSibling.nextSibling;
	
	sibling.checked = caller.checked;
	sibling.onclick();
}
/* ================================================
END FOR CHECK UNCHECK FUNCTION OF CHECK BOX IN GRID
================================================ */
function validateCheckBox(chkBox, hiddenTextBox)
{
	var mTextBox = document.getElementById(hiddenTextBox);
	
	if(chkBox && mTextBox)
	{
		if(chkBox.checked)
			mTextBox.value = 'CHECKED';
		else
			mTextBox.value = '';
	}
}

/* Add GridText in Text Box */
function CopyPasteObject(val,ControlName)
{
	clipboardData.setData("Text",val);
	document.getElementById(ControlName).innerText += clipboardData.getData("Text");
}

/* ======================================================
	TextBox Validation Methods 
=========================================================*/
function ValidateWholeNumbers()
{
	var txt = document.getElementById(event.srcElement.id);
	if(event.keyCode < 48 || event.keyCode > 57 || (txt.value == "" && event.keyCode == 48))
	{
		event.returnValue = false;
		event.cancel = true;
	}
}

function ValidateWholeNumbersBooking()
{
	var txt = document.getElementById(event.srcElement.id);
	if(event.keyCode < 48 || event.keyCode > 57 || (txt.value == "" && event.keyCode == 48))
	{
		event.returnValue = false;
		event.cancel = true;
	}
}

function ValidateNaturalNumbers()
{
	if(event.keyCode < 49 || event.keyCode > 57)
	{
		event.returnValue = false;
		event.cancel = true;
	}
}
function ValidateIntegers()
{
	var txt = document.getElementById(event.srcElement.id);
	if(event.keyCode == 45)
	{
		if(txt.value.indexOf("-") != -1)
		{
			event.returnValue = false;
			event.cancel = true;
		}
	}
	else if(event.keyCode < 49 || event.keyCode > 57)
	{
		event.returnValue = false;
		event.cancel = true;
	}
}
function ValidateDouble()
{
	var txt = document.getElementById(event.srcElement.id);
	if(event.keyCode == 46)
	{
		if(txt.value.indexOf('.') != -1)
		{
			event.returnValue = false;
			event.cancel = true;
		}
		else
		{
			event.returnValue = true;
			event.cancel = false;
		}
	}
	else if(event.keyCode < 48 || event.keyCode > 57)
	{
		event.returnValue = false;
		event.cancel = true;
	}
}
function Validate(txt,isDecimalAllowed)
{
	var txt = document.getElementById(txt);
	
	if(txt && isDecimalAllowed)
	{
		if(event.keyCode == 46 && txt.value.indexOf('.') != -1)
		{
			event.returnValue = false;
			event.cancel = true;
		}
		else if(event.keyCode == 46)
		{
			event.returnValue = true;
			event.cancel = false;
		}
		else if(event.keyCode < 48 || event.keyCode > 57)
		{
			event.returnValue = false;
			event.cancel = true;
		}
		
	}
	else if(event.keyCode < 48 || event.keyCode > 57)
	{
		event.returnValue = false;
		event.cancel = true;
	}
}
function ValidateDiscount(txtDiscount,isPercent)
{
	var txtDiscount = document.getElementById(txtDiscount);
	
	if(txtDiscount)
		if(isPercent && txtDiscount.value > 100)
			txtDiscount.value = 100;
}
function LimitMultilineTextBox(maxLength, txtToLimit, txtCounter)
{
	var txt = document.getElementById(txtToLimit);
	var txtCount = document.getElementById(txtCounter);
	
	if(txt)
	{
		var currentLength = maxLength - txt.value.length;
		
		if(txtCount)
			txtCount.value = currentLength;
			
		if(currentLength < 0)
		{
			//if(txt.value.length != maxLength)
				//event.returnValue = false;
			txt.value = txt.value.substring(0,maxLength);
			
			if(txtCount)
				txtCount.value = 0;
		}
	}
}

//*********************************************************
//		PARSE TEXTBOX VALUE TO EQUIVALENT NUMBER
//*********************************************************
function parseValue(val)
{
	var value = new Number();

	try{
		value = parseFloat(val);
		value = (isNaN(value)) ? 0 : value;
	}
	catch(e){
		value = 0;
	}
	
	return value;
}

//*********************************************************
//		RESTRICT AMOUNT GREATER THAN PROVIDED AMOUNT
//*********************************************************
function isGreater(txtValue, txtAmount)
{
	var txtboxValue = document.getElementById(txtValue);
	var txtboxAmount = document.getElementById(txtAmount);
	
	if(txtboxValue && parseValue(txtboxValue.value) > parseValue(txtboxAmount.value))
	{
		alert('Value exceeded!');
		txtboxValue.value = txtboxAmount.value;
	}
}
//*********************************************************
//				SUM OF TEXTBOXES IN GRID
//*********************************************************
function SumAll(textBox, sumTextBox)	// USE ON KEY UP FUNCTION OF TEXT BOX
{
	var mSumTextBox = document.getElementById(sumTextBox);
		
	if(mSumTextBox)
	{
		var sum = 0;
		
		for(i=0; i < document.forms[0].length; i++)
		{
			var e = document.forms[0].elements[i];
			
			if(e.type == 'text' && e.id.indexOf(textBox) != -1)
				sum = sum + parseValue(e.value);
		}
		
		mSumTextBox.value = sum.toString();
	}
}
//*********************************************************
/*function Sum()	// USE ON KEY UP FUNCTION OF TEXT BOX
{
	var sum = 0;
	
	for(i=0; i < document.forms[0].length; i++)
	{
		var e = document.forms[0].elements[i];
		
		if(e.type == 'text' && e.id.indexOf(textBox) != -1)
		{
			var value = new Number();
			
			try{
				value = parseFloat(e.value);
				value = (isNaN(value)) ? 0 : value;
			}
			catch(e){
				value = 0;
			}
			sum = sum + value;
		}
	}

}*/
//*********************************************************
//*********************************************************
function HideShow(control)
{
	var newVar = document.getElementById(control);
	if(newVar)
		newVar.style.display = (newVar.style.display == 'none') ? '' : 'none';
}
function HideMe()
{
	this.style.display = "none";
}
function ShowMe()
{
	this.style.display = "inline";
}
function Hide(control)
{
	document.getElementById(control).style.display = "none";
}
function Show(control)
{
	document.getElementById(control).style.display = "inline";
}
//*********************************************************
function SetValue(controlId, value)
{
	var mControl = document.getElementById(controlId);
	
	if ( typeof(mControl.value) != 'undefined' )
		mControl.value = value;
	else if ( typeof(mControl.innerHTML) != 'undefined' )
		mControl.innerHTML = value;
	else if ( typeof(mControl.innerText) != 'undefined' )
		mControl.innerText = value;
}

function toggle(idString) 
{
	var element = document.getElementById(idString);
	if(element.style.display=="none") 
		element.style.display="block";
	else element.style.display="none";
}

function getDepositAndBalance(txtGrossRent, txtDepositPercent, txtBookingDeposit, txtBalance)
{
	var GrossRent		= document.getElementById(txtGrossRent);
	var DepositPercent	= document.getElementById(txtDepositPercent);
	var BookingDeposit	= document.getElementById(txtBookingDeposit);
	var Balance			= document.getElementById(txtBalance);
	
	if(GrossRent && DepositPercent && BookingDeposit, Balance)
	{
		var GrossRentVal = GrossRent.value
		if(GrossRent.value == "")
			GrossRentVal = 0;
			
		var DepositPercentVal = DepositPercent.value
		if(DepositPercent.value == "")
			DepositPercentVal = 0;
			
		var BookingDepositVal = BookingDeposit.value
		if(BookingDeposit.value == "")
			BookingDepositVal = 0;
			
		var BalanceVal = Balance.value
		if(Balance.value == "")
			BalanceVal = 0;
			
		var depositAmount = GrossRentVal * DepositPercentVal / 100;
		var balanceAmount = GrossRentVal - Math.round(depositAmount);
		
		BookingDeposit.value = Math.round(depositAmount);
		Balance.value = Math.round(balanceAmount);
	}	
}

function CheckAdvertiser(rdbAdvertiserSms, rdbClientSms)
{
	var AdvertiserSms	= document.getElementById(rdbAdvertiserSms);
	var ClientSms		= document.getElementById(rdbClientSms);
	
	if(!AdvertiserSms.checked && !ClientSms.checked)
	{
		alert('Please select either Client or Advertiser');
		return false;
	}
	return true;
}

function textCounter(txtMessage,txtCounter,maxlimit) 
{
	var field		= document.getElementById(txtMessage);
	var cntfield	= document.getElementById(txtCounter);
	
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	else
		cntfield.value = maxlimit - field.value.length;
}

function showHideAddress(hypAlert, lblAddress)
{
	var Alert	= document.getElementById(hypAlert);
	var Address	= document.getElementById(lblAddress);
	
	alert('Do not give the Address to the Client before the booking is Fully Paid');
	
	Alert.style.display = "none";
	Address.style.display = "inline";
}

// **************************************************** //
//				REFER/ENQUIRY TEMPLATE CHANGE			//
// **************************************************** //

function changeTemplate(ddlDefaultText, txtTemplate, txtTemplate2, txtTemplate3, txtMessage)
{
	var DefaultText	= document.getElementById(ddlDefaultText);
	var Template	= document.getElementById(txtTemplate);
	var Template2	= document.getElementById(txtTemplate2);
	var Template3	= document.getElementById(txtTemplate3);
	var Message	= document.getElementById(txtMessage + '_Div');
	if(!Message)
		Message	= document.getElementById(txtMessage.replace('_', ':') + '_Div');
	
	if(DefaultText && Template && Message)
	{	
		if(DefaultText.value == "0")
		{	
			//Message.lastChild.lastChild.lastChild.firstChild.firstChild.nextSibling.innerHTML = "";
			Message.innerHTML = "&nbsp;";
		}
		else if(DefaultText.value == "1")
		{
			//Message.lastChild.lastChild.lastChild.firstChild.firstChild.nextSibling.innerHTML = Template.value;
			Message.innerHTML = Template.value;
		}
		else if(DefaultText.value == "2")
		{
			//Message.lastChild.lastChild.lastChild.firstChild.firstChild.nextSibling.innerHTML = Template2.value;
			Message.innerHTML = Template2.value;
		}
		else if(DefaultText.value == "3")
		{
			//Message.lastChild.lastChild.lastChild.firstChild.firstChild.nextSibling.innerHTML = Template3.value;
			Message.innerHTML = Template3.value;
		}
	}
}

// **************************************************** //
//				MAKE PAYMENT - PAYMENT OPTIONS			//
// **************************************************** //

function CheckArrivalDate(rblstPaymentMode, lblDaysLeft)
{
	var PaymentMode	= document.getElementById(rblstPaymentMode);
	var DaysLeft	= document.getElementById(lblDaysLeft);
	
	var text = PaymentMode;
	var daysLeft = DaysLeft.innerHTML;	
	
	var CC = text.firstChild.value;
	var CCchecked = text.firstChild.checked;
	
	var TT = text.firstChild.nextSibling.nextSibling.nextSibling.value;
	var TTchecked = text.firstChild.nextSibling.nextSibling.nextSibling.checked;

	var MC = text.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.value;
	var MCchecked = text.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.checked;
	
	if(TTchecked || MCchecked)
	{
		if(daysLeft <= 7)
		{
			alert('The Booking Arrival date is too close, kindly pay through Credit Card.');
			return false;
		}		
	}	
	return true;	
}

// **************************************************** //
//					Agent Commission					//
// **************************************************** //

function TotalCommission(txtCommissionByDA, txtCommissionByAdvertiser, lblCommissionByAdmin, txtTotalCommission)
{
	var CommissionByDA	= document.getElementById(txtCommissionByDA);
	var CommissionByAdvertiser	= document.getElementById(txtCommissionByAdvertiser);
	var CommissionByAdmin	= document.getElementById(lblCommissionByAdmin);
	var TotalCommission	= document.getElementById(txtTotalCommission);
	
	if(CommissionByDA && CommissionByAdvertiser && CommissionByAdmin && TotalCommission)
	{
		var CommissionByDAVal = CommissionByDA.value
		if(CommissionByDA.value == "")
			CommissionByDAVal = 0;
			
		var CommissionByAdvertiserVal = CommissionByAdvertiser.value
		if(CommissionByAdvertiser.value == "")
			CommissionByAdvertiserVal = 0;
			
		var CommissionByAdminVal = CommissionByAdmin.innerHTML
		if(CommissionByAdmin.innerHTML == "")
			CommissionByAdminVal = 0;
			
		var TotalCommissionVal = TotalCommission.value
		if(TotalCommission.value == "")
			TotalCommissionVal = 0;
			
		var totalCommission = parseFloat(CommissionByDAVal) + parseFloat(CommissionByAdvertiserVal) + parseFloat(CommissionByAdminVal);
		
		TotalCommission.value = Math.round(totalCommission * 10)/10;
	}	
	
	return true;	
}
