function selectPlan(sPlan)
{
	if(plan != sPlan)
	{
		total = plans[sPlan];
		plan = sPlan;
		$('plan-price').innerHTML = "($"+_toMoney(total) +")";
		_updateTotal();
	}
}

function safeDisplay()
{
	if(navigator.userAgent.indexOf("MSIE")!=-1)
	{
		return 'block';
	}
	else
	{
		return 'table-row';
	}
}

function setPrice(el, price, dollar)
{
	switch($(el).checked)
	{
		case true:
			$(el+'-price').innerHTML = "+($"+price+")";
			$(el+'-price').style.weight = "bold";
			setTotal(dollar);
		break;
		case false:
		default:
			$(el+'-price').innerHTML = "&nbsp;($"+price+")";
			$(el+'-price').style.weight = "normal";
			setTotal(-dollar);
		break;
	}
}

function setTotal(price)
{
	total = total+price;
	_updateTotal();
}

function checkName()
{
	var nam = $('name').value;
	if( nam.length <= 0 )
	{
		$('nam_check').innerHTML = '<img src="images/delete.png">&nbsp;What is your name?';
		return false;
	}
	else
	{
		$('nam_check').innerHTML = "";
		return true;
	}
}

function checkEmail()
{
	var eml = $('email').value;
	
	if( eml.length > 0 )
	{
		apos = eml.indexOf("@");
		dotpos = eml.lastIndexOf(".");
		if( apos < 1 || (dotpos - apos) < 2 ) 
		{
			$('eml_check').innerHTML = '<img src="images/delete.png">&nbsp;Not a vaild email address.';
			return false;
		}
		else
		{
			$('eml_check').innerHTML = '<img src="images/accept.png">';
			return true;
		}
	}
	else
	{
		$('eml_check').innerHTML = '<img src="images/delete.png">&nbsp;You need to enter an email.';
		return false;
	}
}

function checkPassword()
{
	var pwd = $('password').value;
	confirmPassword(true);
	if( pwd.length > 0 )
	{
		if( pwd.length >= 5 )
		{
			$('pwd_check').innerHTML = '<img src="images/accept.png">';
			return true;
		}
		else
		{
			$('pwd_check').innerHTML = '<img src="images/delete.png">&nbsp;Your password is too short.';
			return false;
		}
	}
	else
	{
		$('pwd_check').innerHTML = '<img src="images/delete.png">&nbsp;You need to enter a password.';
		return false;
	}
}

function confirmPassword(outside)
{
	outside = (!outside) ? false : true;
	var pwd = $('password').value;
	var con = $('confirm_password').value;
	if( !outside )
	{
		if( con.length > 0 )
		{
			if( con == pwd )
			{
				$('pwd_confirm').innerHTML = '<img src="images/accept.png">';
				return true;
			}
			else
			{
				$('pwd_confirm').innerHTML = '<img src="images/delete.png">&nbsp;Your password does not match.';
				return false;
			}
		}
		else
		{
			$('pwd_confirm').innerHTML = '<img src="images/delete.png">&nbsp;You need to confirm your password';
			return false;
		}
	}
	else
	{
		if( con.length > 0 )
		{
			if( con == pwd )
			{
				$('pwd_confirm').innerHTML = '<img src="images/accept.png">';
				return true;
			}
			else
			{
				$('pwd_confirm').innerHTML = '<img src="images/delete.png">&nbsp;Your password does not match.';
				return false;
			}
		}
	}
}

function confirmDOB(el)
{
	var month = $('dob_month').value;
	var day = $('dob_day').value;
	var year = $('dob_year').value;
	
	if( thirteen > year+month+day )
	{
		$('dob_confirm').innerHTML = '<img src="images/accept.png">';
		return true;
	}
	else
	{
		$('dob_confirm').innerHTML = '<img src="images/delete.png">&nbsp;You must be 13 years or older.';
		return false;
	}
}

function _updateTotal()
{
	$('step'+stepnum+'-total').innerHTML = "$"+_toMoney(total);
	//alert(_toMoney(total));
}

function _toMoney(amount)
{
	amount -= 0;
	amount = (Math.round(amount*100))/100;
	return (amount == Math.floor(amount)) ? amount + '.00' : ( (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
}

function _setNew()
{
	isNewDomain = true;
	setTotal(9.50);
}

function _checkNew()
{
	if( isNewDomain )
	{
		setTotal(-9.50);
		isNewDomain = false;
	}
	else
	{
		isNewDomain = false;
	}
}

function step(number)
{
	switch(number)
	{
		case 1:
			$('step2').style.display = 'none';
			$('step1-status').innerHTML = '<img src="images/question.png">';
			stepnum = "1";
			_runStep(1);
		break;
		case 2:
			if(_validateOne())
			{
				$('step1').style.display = 'none';
				$('step1-status').innerHTML = '<img src="images/accept.png">';
				_runStep(2);
				stepnum = "2";
			}
			else
			{
				$('step1-status').innerHTML = '<img src="images/error.png">';
				stepnum = "1";
			}
		break;
		case 3:
			_validateTwo();
		break;
		case 4:
		default:
			_prepSubmit();
		break;
	}
			
}

function _runStep(number)
{
	switch(number)
	{
		case 1:
			$('step1').style.display = safeDisplay();
			total = plans[plan];
			_updateTotal();
		break;
		case 2:
			$('step2').style.display = safeDisplay();
			ajax_call('includes/plans.php?plan='+plan, 'step2-content', '<center><br><br><br><br><img src="images/dots-white.gif">&nbsp;Loading Step2!<br><br><br><br><br><br></center>', '<center><br><br><br>Failed!<br><br><br></center>');
		break;
		case 3:
			_validateThree();
		break;
		case 4:
		default:
			_prepSubmit();
		break;
	}
}
//
// Step Validations
//
function _validateOne()
{
	var oneValid = true;
	
	if(!checkName()){ oneValid = false; }
	if(!checkEmail()){ oneValid = false; }
	if(!checkPassword()){ oneValid = false; }
	if(!confirmPassword()){ oneValid = false; }
	if(!confirmDOB()){ oneValid = false; }
	
	return oneValid;
}


//
// Ajax Functions
//

/********************************************************************************************
 * ajax_call(url, output_id, loading_message, error_message, post_params, post_method);
 ********************************************************************************************/

function ajax_call(url, pageElement, callMessage, errorMessage, params, method)
{
	if(!method) { method = "GET"; }
	if(!params) { params = null; }
	document.getElementById(pageElement).innerHTML = callMessage;
	try
	{
		req = new XMLHttpRequest(); /* e.g. Firefox */
	}
	catch(e)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");  /* some versions IE */
		}
		catch (e)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");  /* some versions IE */
			}
			catch (E)
			{
				req = false;
			} 
		} 
	}
	
	req.onreadystatechange = function() {ajax_response(pageElement, errorMessage);};
	
	try
	{
		req.open('GET',url,true);
	}
	catch(e)
	{
		document.getElementById(pageElement).innerHTML = '<br><br><center>Unable to finish your request.<br>its complicated, but the way it breaks down is this:<br>Error: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.open]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: http://pgfu.grapefruitage.com/beta/jscripts/ahahLib.js :: ajax_call :: line 25"  data: no]<br><br>scary, I know. lets...just refresh!</center>';
		window.location.reload();
	}
	req.send(null);
}

function ajax_response(pageElement, errorMessage)
{
	var output = '';
	if(req.readyState == 4)
	{
		if(req.status == 200)
		{
			output = req.responseText;
			document.getElementById(pageElement).innerHTML = output;
			_updateTotal();
		}
		else
		{
			document.getElementById(pageElement).innerHTML = errorMessage+"\n"+output;
		}
	}
}
