
// wizard control scripts

var verifyLendCalledFromZip = null;
var wizHiddenZipId = '';

function checkRadioButtonSelection(radios)
{
	var selIdx = -1;

	for (var i = 0; i < radios.length; i++)
	{
		if (radios[i].checked == true)
		{
			selIdx = i;
			break;
		}
	}

	return selIdx;
}

var unqValId = null;

function userNameUnique(id, valId)
{	
	var obj = document.getElementById(id);
	
	if (obj != null)
	{
		unqValId = valId;
		
		var txt = obj.value;
		
		if (txt != null && txt != '')
			PageMethods.IsUserNameUnique(txt, userNameUniqueComplete);
	}
}

function userNameUniqueComplete(result)
{
	var valObj = document.getElementById(unqValId);
	
	if (result == false)
	{
		valObj.isvalid = false;
		ValidatorUpdateDisplay(valObj);
	}
	else
	{
		valObj.isvalid = true;
		ValidatorUpdateDisplay(valObj);
	}
		
	unqValId = null;
}

function verifyLendingState(id)
{
	var obj = document.getElementById(id);
	
	if (obj != null)
	{
		var val = obj.value;
		
		if (val != null && val != '')
			PageMethods.VerifyLendingState(id, val, verifyLendingStateComplete);
	}
}

function verifyLendingStateComplete(resJSON)
{
	var result = mcwJSON.parse(resJSON);
	
	if (result.status == false)
	{
		var tmp = mcwJSON.parse(mcwJSON.stringify(wizNotLendInStateMsg));

		tmp.body = tmp.body.replace(/\{0\}/, result.name);	
		wizFocusedControlId = null;
		
		showWizardPopup2(tmp);
		
		if (verifyLendCalledFromZip != null)
		{
			var o = verifyLendCalledFromZip;
			
			if (o.zipId != '') document.getElementById(o.zipId).value = '';
			if (o.cityId != '') document.getElementById(o.cityId).value = '';
			if (o.stateId != '') document.getElementById(o.stateId).value = '';
			if (o.countyId != '') document.getElementById(o.countyId).value = '';
		}
		else
		{
			var obj = document.getElementById(result.id);
			obj.value = '';
		}
		
		verifyLendCalledFromZip = null;	
	}
	else if (verifyLendCalledFromZip != null)
	{
		var o = verifyLendCalledFromZip;
		getZipInfo(o.cityId, o.stateId, o.zipId, o.countyId, true);
	}
}

function getZipInfo(cityId, stateId, zipId, countyId, isPropAddr)
{
	var zip = document.getElementById(zipId).value;
	
	if (zip != null && zip != '')
	{
		if (stateId == null) stateId = '';
		if (zipId == null) zipId = '';
		if (countyId == null) countyId = '';
		
		PageMethods.GetZipCodeInformation(zip, cityId, stateId, zipId, countyId, isPropAddr, getZipInfoCompleted);
	}
}

function getZipInfoCompleted(result)
{
	var obj = mcwJSON.parse(result);
			
	if (typeof(obj.list) != 'undefined' && obj.list.length > 0)
	{
		var isPropAddr = obj.isPropAddr;
		
		if (verifyLendCalledFromZip == null && isPropAddr == true)
		{
			verifyLendCalledFromZip = obj;
			document.getElementById(obj.stateId).value = obj.list[0].state;
			verifyLendingState(obj.stateId);
			return;
		}
		
		verifyLendCalledFromZip = null;
		
		var list = obj.list[0];
						
		if (obj.list.length > 1)
		{
			window.setTimeout("__doPostBack('" + wizHiddenZipId + "', '" + obj.zipCode + "')", 0);
			wizFocusedControlId = null;
			return;
		}
		
		if (list.countyOK == "false")
		{
			var tmp = mcwJSON.parse(mcwJSON.stringify(wizCountyNotSupportedMsg));
			tmp.body = tmp.body.replace(/\{0\}/, list.county);
			showWizardPopup2(tmp);
			document.getElementById(obj.zipId).value = '';
			document.getElementById(obj.zipId).focus();
			return;
		}
			
		if (list.city && obj.cityId) document.getElementById(obj.cityId).value = list.city;
		if (list.state && obj.stateId) document.getElementById(obj.stateId).value = list.state;
		if (list.zip && obj.zipId) document.getElementById(obj.zipId).value = list.zip;
		if (list.county && obj.countyId) document.getElementById(obj.countyId).value = list.county;
	}
	else
	{
		showWizardPopup('wizInvalidZipMsg');
		document.getElementById(obj.zipId).value = '';
		document.getElementById(obj.zipId).focus();
	}
}

function calculateDown(ppId, laId, dnId, pcId, which)
{
	var pp = document.getElementById(ppId);
	var la = document.getElementById(laId);
	var dn = document.getElementById(dnId);
	var pc = document.getElementById(pcId);

	var currSep = Sys.CultureInfo.CurrentCulture.numberFormat.CurrencyDecimalSeparator;
	var numSep = Sys.CultureInfo.CurrentCulture.numberFormat.NumberDecimalSeparator;

	var ppAmt = $mcaCommon.stripForNumeric(pp.value, 2, currSep);
	var laAmt = $mcaCommon.stripForNumeric(la.value, 2, currSep);
	var dnAmt = $mcaCommon.stripForNumeric(dn.value, 2, currSep);
	var pcAmt = $mcaCommon.stripForNumeric(pc.value, 3, numSep);

	switch (which)
	{
		case 'la':
			dnAmt = (ppAmt - laAmt);
			pcAmt = (dnAmt / ppAmt) * 100;
			pc.value = $mcaCommon.formatNumeric(pcAmt.toString(), 3, numSep);
			dn.value = $mcaCommon.formatCurrency(dnAmt.toString());
			break;
		case 'dn':
			pcAmt = (dnAmt / ppAmt) * 100;
			laAmt = (ppAmt - dnAmt);
			pc.value = $mcaCommon.formatNumeric(pcAmt.toString(), 3, numSep);
			la.value = $mcaCommon.formatCurrency(laAmt.toString());
			break;
		case 'pc':
			dnAmt = (ppAmt * (pcAmt / 100));
			laAmt = (ppAmt - dnAmt);
			dn.value = $mcaCommon.formatCurrency(dnAmt.toString());
			la.value = $mcaCommon.formatCurrency(laAmt.toString());
			break;
	}
}

function customValidatorForRadios(val, args)
{
	if (val.controltovalidate)
	{
		var obj = document.getElementById(val.controltovalidate);
		var radios = obj.getElementsByTagName('input');

		args.IsValid = checkRadioButtonSelection(radios) > -1;
	}
}

function customValidatorMultiChecks(val, args)
{
	if (val.checkObjects)
	{
		var obj = eval('(' + val.checkObjects + ')');
		var singleObj = document.getElementById(obj.id);
		var list = obj.list;
		var selCount = 1;

		if (!singleObj.checked || singleObj.checked == false)
		{
			selCount = 0;

			for (var i = 0; i < obj.count; i++)
			{
				var checkObj = document.getElementById(list[i]);

				if (checkObj != null)
				{
					var allInp = checkObj.getElementsByTagName('input');

					if (allInp == null || allInp.length == 0)
					{
						if (checkObj.checked && checkObj.checked == true)
							selCount++;
					}
					else
					{
						for (var j = 0; j < allInp.length; j++)
						{
							var item = allInp[j];

							if (item.checked && item.checked == true)
								selCount++;
						}
					}
				}
			}
		}

		args.IsValid = (selCount > 0);
	}
}

function setFieldsSingle(ctlId, whatToDo, disableOnCheck, fldIdArray, valIdArray)
{
	var obj = document.getElementById(ctlId);

	if (obj != null)
	{
		var needDisable = (disableOnCheck ? obj.checked : !obj.checked);

		for (var i = 0; i < fldIdArray.length; i++)
		{
			var fldObj = document.getElementById(fldIdArray[i]);

			if (fldObj != null)
			{
				var radios = fldObj.getElementsByTagName('input');
				var spans = fldObj.getElementsByTagName('span');

				if (radios == null || radios.length == 0)
					radios = [fldObj];

				if (spans != null && spans.length > 0)
				{
					for (var k = 0; k < spans.length; k++)
					{
						var item = spans[k];

						if (whatToDo == 'disable')
						{
							if (item.disabled != needDisable)
								item.disabled = needDisable;
						}
						else if (whatToDo == 'hide')
							item.style.visibility = (needDisable ? "hidden" : "visible");
					}
				}

				for (var j = 0; j < radios.length; j++)
				{
					var radItem = radios[j];

					if (whatToDo == 'disable')
					{
						if (radItem.disabled != needDisable)
							radItem.disabled = needDisable;
					}
					else if (whatToDo == 'hide')
						radItem.style.visibility = (needDisable ? "hidden" : "visible");

					if (needDisable == true)
					{
						if (radItem.checked)
							radItem.checked = false;
						else if (radItem.value && radItem.tagName.toLowerCase() == 'input')
							radItem.value = '';
					}
				}
			}
		}

		for (var i = 0; i < valIdArray.length; i++)
		{
			var valObj = document.getElementById(valIdArray[i]);

			if (valObj != null)
			{
				if (needDisable == true && typeof(ValidatorEnable) != 'undefined')
					ValidatorEnable(valObj, !needDisable);

				valObj.enabled = !needDisable;
			}
		}
	}
}

function setFieldsMulti(ctlId, whatToDo, disableOnCheck, selectArray, fldIdArray, valIdArray)
{
	var obj = document.getElementById(ctlId);

	if (obj != null)
	{
		var radios = obj.getElementsByTagName('input');
		var idx = checkRadioButtonSelection(radios);
		var idxStr = -1;
		
		if (idx >= 0)
			idxStr = radios[idx].value;

		var needDisable;

		if (selectArray == null || selectArray.length == 0)
			needDisable = !disableOnCheck;
		else
			needDisable = (Array.contains(selectArray, idxStr) == (disableOnCheck ? false : true));

		for (var i = 0; i < fldIdArray.length; i++)
		{
			var fldObj = document.getElementById(fldIdArray[i]);

			if (fldObj != null)
			{
				var radios = fldObj.getElementsByTagName('input');
				var spans = fldObj.getElementsByTagName('span');

				if (radios == null || radios.length == 0)
					radios = [fldObj];

				if (spans != null && spans.length > 0)
				{
					for (var k = 0; k < spans.length; k++)
					{
						var item = spans[k];

						if (whatToDo == 'disable')
						{
							if (item.disabled != needDisable)
								item.disabled = needDisable;
						}
						else if (whatToDo == 'hide')
							item.style.visibility = (needDisable ? "hidden" : "visible");
					}
				}

				for (var j = 0; j < radios.length; j++)
				{
					var item = radios[j];

					if (whatToDo == 'disable')
					{
						if (item.disabled != needDisable)
							item.disabled = needDisable;
					}
					else if (whatToDo == 'hide')
						item.style.visibility = (needDisable ? "hidden" : "visible");

					if (needDisable == true)
					{
						if (item.checked)
							item.checked = false;
						else if (item.value && item.tagName.toLowerCase() == 'input')
							item.value = '';
					}
				}
			}
		}

		for (var i = 0; i < valIdArray.length; i++)
		{
			var valObj = document.getElementById(valIdArray[i]);

			if (valObj != null)
			{
				if (needDisable == true && typeof(ValidatorEnable) != 'undefined')
					ValidatorEnable(valObj, !needDisable);

				valObj.enabled = !needDisable;
			}
		}
	}
}

function wizRefiCalc(pmtId, rateId, yearsId, amtId)
{
	var pmt = document.getElementById(pmtId);
	var rate = document.getElementById(rateId);
	var years = document.getElementById(yearsId);
	var amt = document.getElementById(amtId);
	
	var currSep = Sys.CultureInfo.CurrentCulture.numberFormat.CurrencyDecimalSeparator;
	var numSep = Sys.CultureInfo.CurrentCulture.numberFormat.NumberDecimalSeparator;

	var a = $mcaCommon.stripForNumeric(pmt.value, 2, currSep);
	var i = $mcaCommon.stripForNumeric(rate.value,3, numSep) / 1200;
	var n = years.value * 12;
	var p = (a*(Math.pow(1+i,n)-1))/(i*Math.pow(1+i,n));
	
	amt.value = $mcaCommon.formatCurrency(p, 0);
}

// --------------------------------------------
	// maintain focus on partial postbacks
	// --------------------------------------------
	var wizFocusedControlId = "";

	function wizFocusHandler(e)
	{
		try
		{
			document.activeElement = e.originalTarget;
		}
		catch (e) { }
	}

	function wizAppInit()
	{
		if (typeof (window.addEventListener) !== "undefined")
			window.addEventListener("focus", wizFocusHandler, true);

		var prm = Sys.WebForms.PageRequestManager.getInstance();
		prm.add_pageLoading(wizLoadingHandler);
		prm.add_pageLoaded(wizLoadedHandler);
		
		prm.add_endRequest(wizEndHandler);
	}
	
	function wizSetCheckRadioList(id, isDisabled)
	{
		var fldObj = document.getElementById(id);

		if (fldObj != null)
		{
			var radios = fldObj.getElementsByTagName('input');
			var spans = fldObj.getElementsByTagName('span');

			if (radios == null || radios.length == 0)
				radios = [fldObj];

			if (spans != null && spans.length > 0)
			{
				for (var k = 0; k < spans.length; k++)
				{
					var item = spans[k];
					
					if (item.disabled != isDisabled)
						item.disabled = isDisabled;
				}
			}

			for (var j = 0; j < radios.length; j++)
			{
				var radItem = radios[j];
				
				if (radItem.disabled != isDisabled)
					radItem.disabled = isDisabled;
			}
		}
	}
	
	function wizSetHideCheckRadioList(id, isHidden)
	{
		var fldObj = document.getElementById(id);

		if (fldObj != null)
		{
			var radios = fldObj.getElementsByTagName('input');

			if (radios == null || radios.length == 0)
				radios = [fldObj];

			for (var j = 0; j < radios.length; j++)
			{
				var radItem = radios[j];

				radItem.style.visibility = (isHidden ? "hidden" : "visible");
			}
		}
	}
	
	function wizDisabler(data)
	{
		var dataObject = null;
		
		try
		{
			dataObject = mcwJSON.parse(data);
			
			if (dataObject != null && dataObject.items)
			{
				for (var i=0; i < dataObject.items.length; i++)
				{
					var item = dataObject.items[i];
					
					if (typeof(item.list) != 'undefined')				
						for (var k=0; k < item.list.length; k++)
							wizSetCheckRadioList(item.list[k], item.disable);
						
					if (typeof(item.hidelist) != 'undefined')
						for (var j=0; j < item.hidelist.length; j++)
							wizSetHideCheckRadioList(item.hidelist[j], item.hide);
				}
			}
		}
		catch(e)
		{
			//alert(data);
		}
	}
	
	function wizEndHandler(sender, args)
	{
		var items = args.get_dataItems();
		
		for (var key in items)
		{
			var data = items[key];
			var dataObject = null;
			
			try
			{
				dataObject = mcwJSON.parse(data);
				
				if (dataObject != null && dataObject.items)
				{
					for (var i=0; i < dataObject.items.length; i++)
					{
						var item = dataObject.items[i];
						
						if (typeof(item.list) != 'undefined')
							for (var k=0; k < item.list.length; k++)
								wizSetCheckRadioList(item.list[k], item.disable);
						
						if (typeof(item.hidelist) != 'undefined')
							for (var j=0; j < item.hidelist.length; j++)
								wizSetHideCheckRadioList(item.hidelist[j], item.hide);
					}
				}
			}
			catch(e)
			{
				//alert(data);
			}
		}
	}

	function wizLoadingHandler(sender, args)
	{
		wizFocusedControlId = typeof (document.activeElement) === "undefined" ? "" : document.activeElement.id;
	}

	function wizFocusControl(targetControl)
	{
		if (Sys.Browser.agent === Sys.Browser.InternetExplorer)
		{
			var focusTarget = targetControl;

			if (focusTarget && (typeof (focusTarget.contentEditable) !== "undefined"))
			{
				oldContentEditableSetting = focusTarget.contentEditable;
				focusTarget.contentEditable = false;
			}
			else
				focusTarget = null;

			try
			{
				targetControl.focus();
			}
			catch (err) { }

			if (focusTarget)
				focusTarget.contentEditable = oldContentEditableSetting;
		}
		else
		{
			targetControl.focus();
		}
	}

	function wizLoadedHandler(sender, args)
	{
		if (typeof (wizFocusedControlId) !== "undefined" && wizFocusedControlId != "")
		{
			var lastFocusCtl = document.getElementById(wizFocusedControlId);

			if (lastFocusCtl)
				wizFocusControl(lastFocusCtl);
		}
	}
