var hr=false;
function ajax(req)
{
	if (window.XMLHttpRequest) hr = new XMLHttpRequest();//ff
	else if (window.ActiveXObject) //ie
	{
		try{hr = new ActiveXObject("Msxml2.XMLHTTP");}
		catch (e){try {hr = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}}
	}
	if (!hr) return false;
	hr.onreadystatechange = ajaxCallBack;
	hr.open('GET',req,true);
	hr.send(null);
	return true;
}
function ajaxCallBack()
{
	if ((hr.readyState!=4)||(hr.status!=200))return;
	if(hr.responseText=="err") {selected.value="";return err(true);}
	if(selected.id!="ny")selected.value=hr.responseText;
	else {selected.value=parseInt(hr.responseText/f);el("nm").value=(hr.responseText%f)*(12/f);}
	boldsel(true);
}

function el(id) {return document.getElementById(id);}
function err(s)
{
	if(s)
		el("er").innerHTML="This set of values are outside the acceptable range.";
	else 
		el("er").innerHTML="You may change your output selection, fill in values and run the calculation.";
	return false;
}

mode="i";
function cal()
{
	err(false);

	var eiy=el("iy");
	var ex0=el("x0");
	var em=el("m");
	var eny=el("ny");
	var enm=el("nm");
	var ex=el("x");

	var iy=Math.abs(parseFloat(eiy.value));
	var x0=Math.abs(parseFloat(ex0.value));
	var m=Math.abs(parseFloat(em.value));
	var year=Math.abs(parseInt(eny.value,10));
	var month=Math.abs(parseInt(enm.value,10));
	var x=Math.abs(parseFloat(ex.value));
	var rm="simp";
	f=el("f").value;

	if(isNaN(iy))iy=0;eiy.value=iy;
	if(isNaN(x0))x0=0;ex0.value=x0;
	if(isNaN(m))m=0;em.value=m;
	if(isNaN(year))year=0;eny.value=year;
	if(isNaN(month))month=0;
	if(month%(12/f))month=month-month%(12/f);
	var n=(year+month/12)*f;
	if(n<1) {month=12/f;n=1;}
	enm.value=month;
	if(isNaN(x))x=0;ex.value=x;

	if(selected.id!="iy")if(!check("iy",iy))return false;
	if(selected.id!="x0")if(!check("x0",x0))return false;
	if(selected.id!="m")if(!check("m",m))return false;
	if(selected.id!="ny")if(!check("n",n))return false;
	if(selected.id!="x")if(!check("x",x))return false;

	selected.value="processing...";

	ajax("calc.php?mode="+mode+"&id="+selected.id+"&iy="+iy+"&x0="+x0+"&m="+m+"&n="+n+"&x="+x+"&rm="+rm+"&f="+f);
}

function check(id,val)
{
	switch(id)
	{
		case "iy":
			if((val<0)||(val>100)) return err(true);
			break;
		case "x0":
			if(val<0) return err(true);
			break;
		case "m":
			if(val<0) return err(true);
			break;
		case "n":
			if(val<=0) return err(true);
			if(val>1000) return err(true);
			break;
		case "x":
			if(val<0) return err(true);
			break;
	}
	return true;
}

function begin(s)
{
	mode=s;
	el("tdi").style.color="#666666";
	el("tdl").style.color="#666666";
	el("tdp").style.color="#666666";
	el("td"+s).style.border="#333333 solid 1px";
	el("td"+s).style.borderBottom="0px";
	el("td"+s).style.color="#CC0000";
	switch(s)
	{
	  case "i":
		el("txtx").innerHTML="Future balance";
		el("txtm").innerHTML="Periodical addition";
		el("txtx0").innerHTML="Initial deposit";
		mode="i";
		el("tdl").style.border="0px";
		el("tdl").style.borderBottom="#333333 solid 1px";
		el("tdl").style.borderTop="#333333 dotted 1px";
		el("tdp").style.border="#333333 dotted 1px";
		el("tdp").style.borderBottom="#333333 solid 1px";
		break;
	  case "l":
		el("txtx").innerHTML="Downpayment";
		el("txtm").innerHTML="Periodical payment";
		el("txtx0").innerHTML="Loan amount";
		el("tdi").style.border="0px";
		el("tdi").style.borderBottom="#333333 solid 1px";
		el("tdi").style.borderTop="#333333 dotted 1px";
		el("tdi").style.borderLeft="#333333 dotted 1px";
		el("tdp").style.border="0px";
		el("tdp").style.borderBottom="#333333 solid 1px";
		el("tdp").style.borderTop="#333333 dotted 1px";
		el("tdp").style.borderRight="#333333 dotted 1px";
		break;
	  case "p":
		el("txtx").innerHTML="Final remainder";
		el("txtm").innerHTML="Periodical pension";
		el("txtx0").innerHTML="Available amount";
		el("tdl").style.border="0px";
		el("tdl").style.borderBottom="#333333 solid 1px";
		el("tdl").style.borderTop="#333333 dotted 1px";
		el("tdi").style.border="#333333 dotted 1px";
		el("tdi").style.borderBottom="#333333 solid 1px";
		break;
	}
	el("res").click();
	boldsel(false);
	selected=el("x");
}

function boldsel(on)
{
	if(on)selected.style.fontWeight="bold";
	else {selected.style.fontWeight="normal";err(false);}
	if(selected.id=="ny")
	{
		if(on)el("nm").style.fontWeight="bold";
		else el("nm").style.fontWeight="normal";
	}
}







