var mainUrl;
var httpReq;
var debtId;

var txtPrice;
var txtLoanToVl;
var txtMtgFees;
var txtMtgFeesPerc;
var txtValFees;
var txtSrvFees;
var txtSolFees;
var txtFture;
var txtRemCost;
var txtOthrFees;
var txtRentPWeek;
var txtRentPMonth;
var txtRentPYear;
var txtRentVcy;
var txtLeaseholdCharge;
var txtLeaseholdGrowth;
var txtInsurance;
var txtManagementPerc;
var txtMaintenance;
var txtMaintenanceGrowth;
var txtCptGrowth;
var txtDiscRate;
var rentPWeek = 0;
var rentPMonth = 0;
var rentPYear = 0;
var rentTotal = 0;
var txtCurrDebt;
var txtAsmdRate;
var txtAsmdPeriod;
var txtTtlCost;


function changeTab (refId)
{
	document.getElementById ("divTab" + refId).className = "cTabVisible";
	document.getElementById ("spanChooser" + refId).className = "cSpanChoserFront";
	document.getElementById ("divTab" + (1 - refId)).className = "cTabInvisible";
	document.getElementById ("spanChooser" + (1 - refId)).className = "cSpanChoserBack";
}

function toolTip (obj, text)
{
	var divTooltip = document.getElementById ("divTooltip");
	var x = findX (obj);
	var y = findY (obj);
	divTooltip.style.left = -(-x - 70) + "px";
	divTooltip.style.top = y + "px";
	divTooltip.innerHTML = text;
	divTooltip.style.display = "block";
}

function toolTipHide ()
{
	var divTooltip = document.getElementById ("divTooltip");
	divTooltip.style.display = "none";
}

function getVals ()
{
	var txtVals = document.getElementsByTagName ("INPUT");
	for (var i = 0;i < txtVals.length;i++)
	{
		if (txtVals[i].type == "text" && (txtVals[i].className != "cLockedTxt" || txtVals[i].id == "txtTtlCost"))
		{
			try
			{
				eval (txtVals[i].id + '= document.getElementById ("' + txtVals[i].id + '").value.replace (/[-|,]/g, "");');
				eval (txtVals[i].id + ' = Math.max (' + txtVals[i].id + ', -' + txtVals[i].id + ');');
				eval ('var vNum = checkValidNum ("' + txtVals[i].id + '", false);');
				if (vNum === false) return;
			}
			catch (e) {}
		}
	}
}

function calcMtg ()
{
	getVals ();

	var mortgage = txtPrice * txtLoanToVl / 100;
	var deposit = txtPrice - mortgage;
	switch (true)
	{
		case txtPrice <= 125000:
			var stampDutyRate = 0;
			break;
		case txtPrice > 125000 && txtPrice <= 250000:
			var stampDutyRate = 1;
			break;
		case txtPrice > 250000 && txtPrice <= 500000:
			var stampDutyRate = 3;
			break;
		case txtPrice > 500000:
			var stampDutyRate = 4;
			break;
	}
	
	var stampDutyPayable = txtPrice * stampDutyRate / 100;
	var mtgFeesTotal = - (-mortgage * txtMtgFeesPerc / 100 - txtMtgFees);
	var totalCost = - (-deposit - stampDutyPayable - txtMtgFees - mtgFeesTotal - txtValFees - txtSrvFees - txtSolFees - txtFture - txtRemCost - txtOthrFees);
	//alert (mtgFeesTotal);
	try {document.getElementById ("txtPrice").value = formatNum (txtPrice, "-")} catch (e) {};
	try {document.getElementById ("txtPrice2").value = formatNum (txtPrice, "-")} catch (e) {};
	try {document.getElementById ("txtLoanToVl").value = formatNum2 (txtLoanToVl)} catch (e) {};
	try {document.getElementById ("txtMtg").value = formatNum (mortgage, "-")} catch (e) {};
	try {document.getElementById ("txtMtg2").value = formatNum (mortgage, "-")} catch (e) {};
	try {document.getElementById ("txtMtgDeposit").value = formatNum (deposit, "-")} catch (e) {};
	try {document.getElementById ("txtStDtyRate").value = formatNum2 (stampDutyRate, "+")} catch (e) {};
	try {document.getElementById ("txtStDtyPayable").value = formatNum (stampDutyPayable, "-")} catch (e) {};
	try {document.getElementById ("txtMtgFees").value = formatNum (txtMtgFees, "-")} catch (e) {};
	try {document.getElementById ("txtMtgFeesPerc").value = formatNum2 (txtMtgFeesPerc, "+")} catch (e) {};
	try {document.getElementById ("txtMtgFeesTotal").value = formatNum (mtgFeesTotal, "-")} catch (e) {};
	try {document.getElementById ("txtTtlCost").value = formatNum (totalCost, "-")} catch (e) {};
	try {document.getElementById ("txtTtlCost2").value = formatNum (totalCost, "-")} catch (e) {};
	try {document.getElementById ("txtValFees").value = formatNum (txtValFees, "-")} catch (e) {};
	try {document.getElementById ("txtSrvFees").value = formatNum (txtSrvFees, "-")} catch (e) {};
	try {document.getElementById ("txtSolFees").value = formatNum (txtSolFees, "-")} catch (e) {};
	try {document.getElementById ("txtFture").value = formatNum (txtFture, "-")} catch (e) {};
	try {document.getElementById ("txtRemCost").value = formatNum (txtRemCost, "-")} catch (e) {};
	try {document.getElementById ("txtOthrFees").value = formatNum (txtOthrFees, "-")} catch (e) {};

	toolTipHide ();
}

function calcRent ()
{
	getVals ();

	if (Math.abs (rentPWeek - txtRentPWeek) > 0.5)
	{
		rentPMonth = txtRentPWeek * 52 / 12;
		rentPYear = rentPMonth * 12;
	
		try {document.getElementById ("txtRentPWeek").value = formatNum (txtRentPWeek, "+")} catch (e) {};
		try {document.getElementById ("txtRentPMonth").value = formatNum (rentPMonth, "+")} catch (e) {};
		try {document.getElementById ("txtRentPYear").value = formatNum (rentPYear, "+")} catch (e) {};
	}
	rentTotal = txtRentPWeek * (52 - txtRentVcy);
	try {document.getElementById ("txtTtlRent").value = formatNum (rentTotal, "+")} catch (e) {};

	toolTipHide ();
}

function calcRent2 ()
{
	getVals ();

	if (Math.abs (txtRentPMonth - rentPMonth) > 1)
	{
		rentPWeek = txtRentPMonth * 12 / 52;
		rentPYear = rentPWeek * 52;
	
		try {document.getElementById ("txtRentPWeek").value = formatNum (txtRentPWeek, "+")} catch (e) {};
		try {document.getElementById ("txtRentPMonth").value = formatNum (rentPMonth, "+")} catch (e) {};
		try {document.getElementById ("txtRentPYear").value = formatNum (rentPYear, "+")} catch (e) {};
	}
	rentTotal = txtRentPWeek * (52 - txtRentVcy);
	try {document.getElementById ("txtTtlRent").value = formatNum (rentTotal, "+")} catch (e) {};
	
	toolTipHide ();
}

function calcRent3 ()
{
	getVals ();

	if (Math.abs (txtRentPYear - rentPYear) > 1)
	{
		rentPWeek = txtRentPYear / 52;
		rentPMonth = rentPWeek * 52 / 12;
	
		try {document.getElementById ("txtRentPWeek").value = formatNum (txtRentPWeek, "+")} catch (e) {};
		try {document.getElementById ("txtRentPMonth").value = formatNum (rentPMonth, "+")} catch (e) {};
		try {document.getElementById ("txtRentPYear").value = formatNum (rentPYear, "+")} catch (e) {};
	}
	rentTotal = txtRentPWeek * (52 - txtRentVcy);
	try {document.getElementById ("txtTtlRent").value = formatNum (rentTotal, "+")} catch (e) {};
	
	toolTipHide ();
}

function calcCosts ()
{
	getVals ();
	//alert (rentTotal);
	document.getElementById ("txtTtlOtherCosts").value = formatNum (txtLeaseholdCharge + txtInsurance + txtMaintenance + rentTotal * txtManagementPerc / 100, "-");
}

function reset ()
{
	var inputs = document.getElementsByTagName ("INPUT");
	for (var i = 0;i < inputs.length;i++)
	{
		inputs[i].value = "";
	}
}

function runPlan ()
{
	getVals ();
	var chckPayOff = document.getElementById ("chckPayOff1").checked;

	if (!txtMtgRate > 0)
	{
		alert ("Please fill in the Mortgage interest rate");
		return;
	}
	if (!txtMtgTerm > 0)
	{
		alert ("Please fill in the Mortgage term");
		return;
	}
	
	document.getElementById ("imgWait").className = "cImgVisible";

	fixAjax ();
	if (!httpReq)
	{
		httpReq = createRequestObject ();
	}

	httpReq.open ("GET", mainUrl
								+ "receiver.php?req=mortgage&price=" + txtPrice
								+ "&ltv=" + txtLoanToVl
								+ "&mtg_fees=" + txtMtgFees
								+ "&mtg_fees_perc=" + txtMtgFeesPerc
								+ "&val_fees=" + txtValFees
								+ "&srv_fees=" + txtSrvFees
								+ "&sol_fees=" + txtSolFees
								+ "&furniture=" + txtFture
								+ "&rem_cost=" + txtRemCost
								+ "&other_fees=" + txtOthrFees
								+ "&total_cost=" + txtTtlCost
								+ "&mtg_rate=" + ((typeof (txtMtgRate) == "object") ? (txtMtgRate.value.toString ()) : (txtMtgRate))
								+ "&rent=" + txtRentPWeek
								+ "&rent_gr=" + ((typeof (txtRentGRate) == "object") ? (txtRentGRate.value.toString ()) : (txtRentGRate))
								+ "&vacancy=" + txtRentVcy
								+ "&lshold=" + txtLeaseholdCharge
								+ "&lshold_gr=" + txtLeaseholdGrowth
								+ "&insurance=" + txtInsurance
								+ "&mgmt=" + txtManagementPerc
								+ "&maintenance="+ txtMaintenance
								+ "&maintenance_gr=" + txtMaintenanceGrowth
								+ "&capital_gr=" + txtCptGrowth
								+ "&disc_rate=" + txtDiscRate
								+ "&term=" + ((typeof (txtMtgTerm) == "object") ? (txtMtgTerm.value.toString ()) : (txtMtgTerm))
								+ "&payoff=" + chckPayOff
								, true);
	httpReq.onreadystatechange = drawPlan;
	httpReq.send (null);
}

function drawPlan ()
{
	if (checkReadyState (httpReq))
	{
		if (httpReq.responseText)
		{
			document.getElementById ("imgWait").className = "cImgHidden";
			
			var rowData = httpReq.responseText.split ('<||>');
			//alert (httpReq.responseText);
			var cellData;
			var tblResult = document.getElementById ("tblResult");
			while (tblResult.rows.length > 2)
			{
				tblResult.deleteRow (2);
			}
			for (var i = 0;i < rowData.length - 1;i++)
			{
				cellData = rowData[i].split ('<|>');
				if (i == 0)
				{
					document.getElementById ("txtInterestPA").value = "-" + cellData[1];
					document.getElementById ("txtCapitalPA").value = "-" + cellData[2];
					document.getElementById ("txtMortgagePA").value = formatNum (-(-cellData[1].replace (/[-|,]/g, "") - cellData[2].replace (/[-|,]/g, "")), "-");
					document.getElementById ("txtInterestPM").value = "-" + cellData[3];
					document.getElementById ("txtCapitalPM").value = "-" + cellData[4];
					document.getElementById ("txtMortgagePM").value = formatNum (-(-cellData[3].replace (/[-|,]/g, "") - cellData[4].replace (/[-|,]/g, "")), "-");
					document.getElementById ("txtNetProfit").value = cellData[13];
					document.getElementById ("txtFYearYield").value = cellData[14].replace (/[% ]/g, "");
				}
				if (i == rowData.length - 2)
				{
					document.getElementById ("txtCapitalValue").value = cellData[15];
				}
				var newRow = tblResult.insertRow (i + 2);
				for (var j = 0;j < cellData.length;j++)
				{
					var newCell = newRow.insertCell (j);
					newCell.innerHTML = cellData[j];
					newCell.className = "cColumn" + j;
				}
			}
			cellData = rowData[i].split ('<|>');
			document.getElementById ("txtNPV").value = cellData[0];
			/*
			document.getElementById ("divNPV").innerHTML = cellData[0];
			var divEquity = document.getElementById ("divEquity");
			if (cellData[1].substring (0, 1) == "-")
			{
				divEquity.className = "cNEquity";
			}
			else
			{
				divEquity.className = "cPEquity";
			}
			divEquity.innerHTML = cellData[1];
			
			var txtEquity = document.getElementById ("txtEquity");
			if (cellData[1].substring (0, 1) == "-")
			{
				txtEquity.className = "cNEquity";
			}
			else
			{
				txtEquity.className = "cPEquity";
			}
			txtEquity.value = cellData[1];
			
			document.getElementById ("txtNetProfit").value = cellData[2];
			document.getElementById ("txtFYearYield").value = cellData[3];
			//document.getElementById ("txtVarPrice").value = cellData[4];
			document.getElementById ("txtNetCashFlow").value = cellData[5];
			*/
		}
	}
}

function printPlan ()
{
	getVals ();
	var chckPayOff = document.getElementById ("chckPayOff1").checked;

	fixAjax ();
	window.open (mainUrl
								+ "receiver.php?req=print_plan&price=" + txtPrice
								+ "&ltv=" + txtLoanToVl
								+ "&mtg_fees=" + txtMtgFees
								+ "&mtg_fees_perc=" + txtMtgFeesPerc
								+ "&val_fees=" + txtValFees
								+ "&srv_fees=" + txtSrvFees
								+ "&sol_fees=" + txtSolFees
								+ "&furniture=" + txtFture
								+ "&rem_cost=" + txtRemCost
								+ "&other_fees=" + txtOthrFees
								+ "&mtg_rate=" + ((typeof (txtMtgRate) == "object") ? (txtMtgRate.value.toString ()) : (txtMtgRate))
								+ "&rent=" + txtRentPWeek
								+ "&rent_gr=" + ((typeof (txtRentGRate) == "object") ? (txtRentGRate.value.toString ()) : (txtRentGRate))
								+ "&vacancy=" + txtRentVcy
								+ "&lshold=" + txtLeaseholdCharge
								+ "&lshold_gr=" + txtLeaseholdGrowth
								+ "&insurance=" + txtInsurance
								+ "&mgmt=" + txtManagementPerc
								+ "&maintenance="+ txtMaintenance
								+ "&maintenance_gr=" + txtMaintenanceGrowth
								+ "&capital_gr=" + txtCptGrowth
								+ "&disc_rate=" + txtDiscRate
								+ "&term=" + ((typeof (txtMtgTerm) == "object") ? (txtMtgTerm.value.toString ()) : (txtMtgTerm))
								+ "&payoff=" + chckPayOff
								, true);
}

function calcPmt (refId)
{
	document.getElementById ("imgWait2").className = "cImgVisible";
	
	var txtDebt = document.getElementById ("txtDebt" + refId).value.replace (/[-|,]/g, "");
	if (checkValidNum ("txtDebt" + refId, false) === false) return;
	var txtDebtRate = document.getElementById ("txtDebtRate" + refId).value.replace (/[-|,]/g, "");
	if (checkValidNum ("txtDebtRate" + refId, false) === false) return;
	var txtDebtTerm = document.getElementById ("txtDebtTerm" + refId).value.replace (/[-|,]/g, "");
	if (checkValidNum ("txtDebtTerm" + refId, false) === false) return;

	var txtTotalDebt = 0;
	var txtTotalRate = 0;
	var txtTotalTerm = 0;
	var tmpRate = 0;
	var tmpTerm = 0;
	var rateCter = 0;
	var termCter = 0;

	for (var i = 1;i < 14;i++)
	{
		txtTotalDebt -= document.getElementById ("txtDebt" + i).value.replace (/[-|,]/g, "");
		tmpRate = document.getElementById ("txtDebtRate" + i).value.replace (/[-|,]/g, "");
		if (tmpRate > 0)
		{
			rateCter++;
			txtTotalRate -= tmpRate;
		}
		tmpTerm = document.getElementById ("txtDebtTerm" + i).value.replace (/[-|,]/g, "");
		if (tmpTerm > 0)
		{
			termCter++;
			txtTotalTerm -= tmpTerm;
		}
	}
	document.getElementById ("txtTotalDebt").value = formatNum (-txtTotalDebt);
	document.getElementById ("txtCurrDebt").value = formatNum (-txtTotalDebt);
	if (rateCter > 0)
	{
		document.getElementById ("txtAveRate").value = formatNum2 (Math.round (-txtTotalRate * 100 / rateCter) / 100);
	}
	if (termCter > 0)
	{
		document.getElementById ("txtAveTerm").value = formatNum2 (Math.round (-txtTotalTerm * 10 / termCter) / 10);
	}

	debtId = refId;
	fixAjax ();
	if (!httpReq)
	{
		httpReq = createRequestObject ();
	}
	
	httpReq.open ("GET", mainUrl + "receiver.php?req=pmt&npv=" + txtDebt + "&rate=" + txtDebtRate + "&periods=" + txtDebtTerm, true);
	httpReq.onreadystatechange = drawPmt;
	httpReq.send (null);

	toolTipHide ();
}

function drawPmt ()
{
	if (checkReadyState (httpReq))
	{
		if (httpReq.responseText)
		{
			//alert (httpReq.responseText);
			var respParts = httpReq.responseText.split ('//');
			document.getElementById ("txtDebtPayments" + debtId).value = respParts[0];
			document.getElementById ("txtDebtTotal" + debtId).value = respParts[1];

			var txtTotalPmts = 0;
			var txtDebtTotal = 0;
			for (var i = 1;i < 14;i++)
			{
				txtTotalPmts -= document.getElementById ("txtDebtPayments" + i).value.replace (/[-|,]/g, "");
				txtDebtTotal -= document.getElementById ("txtDebtTotal" + i).value.replace (/[-|,]/g, "");
			}
			document.getElementById ("txtTotalPmt").value = formatNum (-txtTotalPmts);
			document.getElementById ("txtTotalTtl").value = formatNum (-txtDebtTotal);
			
			document.getElementById ("imgWait2").className = "cImgHidden";
		}
	}
}

function calcPmt2 ()
{
	document.getElementById ("imgWait2").className = "cImgVisible";
	//getVals ();
	
	var txtCurrDebt = document.getElementById ("txtCurrDebt").value.replace (/[-|,]/g, "");
	var txtAsmdRate = document.getElementById ("txtAsmdPeriod").value.replace (/[-|,]/g, "");
	var txtAsmdPeriod = document.getElementById ("txtAsmdPeriod").value.replace (/[-|,]/g, "");

	fixAjax ();
	if (!httpReq)
	{
		httpReq = createRequestObject ();
	}

	//inId = null;
	httpReq.open ("GET", mainUrl + "receiver.php?req=pmt2&npv=" + txtCurrDebt + "&rate=" + txtAsmdRate + "&periods=" + txtAsmdPeriod, true);
	httpReq.onreadystatechange = drawPmt2;
	httpReq.send (null);
}

function drawPmt2 ()
{
	if (checkReadyState (httpReq))
	{
		if (httpReq.responseText)
		{
			//alert (httpReq.responseText);
			var respParts = httpReq.responseText.split ('//');
			var txtTotalPmt = document.getElementById ("txtTotalPmt").value.replace (/[-|,]/g, "");
			var txtAsmdPeriod = document.getElementById ("txtAsmdPeriod").value.replace (/[-|,]/g, "");
			var mnthSavings = txtTotalPmt - respParts[0];
			var ttlSavings = mnthSavings * txtAsmdPeriod * 12;

			document.getElementById ("txtMnthPayments").value = formatNum (respParts[0]);
			document.getElementById ("txtTtlPayments").value = formatNum (respParts[1]);
			document.getElementById ("txtMnthSavings").value = formatNum (mnthSavings);
			document.getElementById ("txtTtlSavings").value = formatNum (ttlSavings);
			
			document.getElementById ("imgWait2").className = "cImgHidden";
		}
	}
}

function printCons ()
{
	var request = "";
	var texts = document.getElementsByTagName ("INPUT");
	for (var i = 0;i < texts.length;i++)
	{
		request += texts[i].id + "=" + texts[i].value.replace (/[-|,]/g, "") + "&";
	}

	fixAjax ();
	window.open (mainUrl + "receiver.php?req=print_cons&" + request);
}

function downloadComponent ()
{
	fixAjax ();
	window.open (mainUrl + "receiver.php?req=component");
}

function PMT (rate, periods, npv)
{
	if (periods == 0)
	{
		alert (0);
	}
	else
	{
		annuity_factor = (Math.pow (1 + rate, periods + 1) - 1) / Math.pow (1 + rate, periods) / rate - 1;
		pmt = npv / annuity_factor;
		alert (pmt);
	}
}

function checkValidNum (refId, strict)
{
	var refNum = document.getElementById (refId).value;
	if (validNum (refNum, strict) === true)
	{
		if (refId != "txtTtlCost")
		{
			document.getElementById (refId).parentNode.className = "cUnlocked";
		}
		return true;
	}
	else
	{
		if (document.getElementById (refId).parentNode.className != "cInvalidNum")
		{
			document.getElementById (refId).parentNode.className = "cInvalidNum";
			alert ("Please enter a valid number");
		}
		return false;
	}
}

function validNum (refNum, strict)
{
	var numChars = "0123456789.";
	var pointsCnt = 0;
	var numsCnt = 0;
	var flagValid = true;

	var refNumber = refNum.toString().replace (/,/g, "");
	if (refNumber.length > 0)
	{
		if (refNumber.substr (0, 1) == "-")
		{
			refNumber = refNumber.substr (1, refNumber.length);
		}
		for (var i = 0;i < refNumber.length;i++)
		{
			switch (numChars.indexOf(refNumber.substr (i, 1)))
			{
				case -1:
					flagValid = false;
					break;
				case 10:
					pointsCnt++;
					break;
				default:
					numsCnt++;
			}
		}
	}
	if (strict == true)
	{
		if (flagValid == true && pointsCnt < 2 && numsCnt > 0)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		if (flagValid == true && pointsCnt < 2)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}

function formatNum (refNum, refSign)
{
	var result = "";

	var refNumber = refNum.toString().replace (/[-|,]/g, "");
	refNumber = Math.round (refNumber).toString ();
	for (i = 0;i < refNumber.length;i++)
	{
		if (i % 3 == refNumber.length % 3 && i != 0)
		{
			result += "," + refNumber.substr (i, 1);
		}
		else
		{
			result += refNumber.substr (i, 1);
		}
	}
	if (refSign == "-" && refNumber > 0)
	{
		return "-" + result;
	}
	else
	{
		return result;
	}
}

function formatNum2 (valNum, refSign)
{
	var lPart = "";
	var rPart = "";
	var valueNum = valNum.toString().replace (/[-|,]/g, "");
	var numParts = valueNum.toString().split (".");
	for (var i = 0;i < numParts[0].length;i++)
	{
		if (i % 3 == numParts[0].length % 3 && i != 0)
		{
			lPart += "," + numParts[0].substr (i, 1);
		}
		else
		{
			lPart += numParts[0].substr (i, 1);
		}
	}
	if (lPart == "")
	{
		lPart = 0;
	}
	if (numParts[1])
	{
		switch (numParts[1].length)
		{
			case 1:
				rPart = numParts[1] + "0";
				break;
			case 2:
				rPart = numParts[1];
				break;
			default:
				rPart = Math.round (numParts[1].substr (0, 3) / 10);
		}
	}
	else
	{
		rPart = "00";
	}
	if (refSign == "-" && valNum > 0)
	{
		return "-" + lPart + "." + rPart;
	}
	else
	{
		return lPart + "." + rPart;
	}
}

function fixAjax ()
{
	var tmpUrl = location.toString ();
	var tmpUrlParts = tmpUrl.split ("/");
	mainUrl = "http://";
	for (var i = 2;i < tmpUrlParts.length - 1;i++)
	{
		mainUrl += tmpUrlParts[i] + "/";
	}
}

function createRequestObject ()
{
	var refHttp;

	if (window.XMLHttpRequest)
	{
		refHttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
  {
		refHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
	return refHttp;
}

function checkReadyState (refReq)
{
	if (refReq.readyState == 4)
  {
	  if (refReq.status == 200)
    {
    	return true;
    }
  }
}

function findX (obj)
{
	var x = 0;
	while (obj)
	{
		x += obj.offsetLeft;
		obj = obj.offsetParent;
	}

	return x;
}

function findY (obj)
{
	var y = 0;
	while (obj)
	{
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}

	return y;
}

