var rgx = /^(.*)([^\d\.])(.*)$/;

function calculate(isValid) {
	var reg;
	var p = $('p').value;
	var pval;
	switch($('pType').value)
	{
		case 'Odds':
			pval = p;
			break;
		case 'Percent':
			pval = parseFloat(p) / 100;
			break;
		default:
		case 'Ratio':
			parts = p.split(":");
			pval = parts[0] / parts[1];
			break;
	}
	if(isValid)
	{
		if(pval > 1 || pval < 0)
			return false;
		return true;
	}

	if(!checkB() || !checkP())
		return;

	var b = parseFloat($('b').value);
	var p = parseFloat($('p').value);
	var l = Math.round($('b').value/Math.sqrt(pval),-3);
	$('l').value = addCommas(l.toPrecision(4));
}

function checkB()
{
	$('b').value = $('b').value.replace(/[^0-9:\.\-]/g,'');
	var b = $('b').value;

	if(b > 100 || b < -100)
	{
		$('bT').innerHTML = 'Benefit out of range';
		return false;
	}

	if(calculate(true))
	   $('bT').innerHTML = '';
	return true;
}

function pType()
{
	switch($('pType').value)
	{
		case 'Odds':
			$('pRange').innerHTML = '0 to 1';
			$('p').value='0.0';
			rgx = /^(.*)([^\d\.])(.*)$/;
			break;
		case 'Percent':
			$('pRange').innerHTML = '0% to 100%';
			$('p').value='0%';
			rgx = /^(.*)([^\d\.%])(.*)$/;
			break;
		default:
		case 'Ratio':
			$('pRange').innerHTML = '0:1 to 1:1';
			$('p').value='0:1';
			rgx = /^(.*)([^\d:])(.*)$/;
			break;
	}
}

function checkP()
{
	$('p').value = $('p').value.replace(/[^0-9:%\.]/g,'');
	var p = $('p').value;
	if(!calculate(true)) {
		$('pT').innerHTML = 'Probability out of range';
		return false;
	} else {
	   $('pT').innerHTML = '';
	}
	return true;
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}
