var xmlHttp = createXmlHttpObject();

function checkDSLAvailability(direction)
{
	if (direction == 'back') 
	{
		data = "sid=" + document.getElementById("sid").value + "&action=checkdslavailabilityback";
	}
	else
	{
		var phoneNumberPattern = /^\(?(\d{3})\)?[- \.]?(\d{3})[- \.]?(\d{4})$/;

		if (!phoneNumberPattern.test(document.getElementById("phonenumber").value))
		{
			document.getElementById("phonenumber").className = 'inputTextError';
			return;
		}
		else
		{
			data = "phonenumber=" + document.getElementById("phonenumber").value + "&action=checkdslavailability";
		}
	}

	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function DSLNotification()
{
	if (document.getElementById("name").value == '' || document.getElementById("email").value == '') {
		return;
	}
	data = "sid=" + document.getElementById("sid").value + "&name=" + document.getElementById("name").value;
	data = data + "&email=" + document.getElementById("email").value + "&action=dslnotification";

	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayContractForm(direction)
{
	if (direction == 'back')
	{
		data = "sid=" + document.getElementById("sid").value + "&action=displaycontractformback";
	}
	else
	{
		for (var i=0; i < document.DSLinfo.bandwidthoption.length; i++)
		{
			if (document.DSLinfo.bandwidthoption[i].checked)
			{
				var bandwidthoption = document.DSLinfo.bandwidthoption[i].value;
			}
		}
		data = "sid=" + document.getElementById("sid").value + "&bandwidthoption=" + bandwidthoption + "&action=displaycontractform";
	}


	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayInstallOptions(direction)
{
	if (direction == 'back')
	{
		data = "sid=" + document.getElementById("sid").value + "&action=displayinstalloptionsback";
	}
	else
	{
		for (var i=0; i < document.DSLinfo.contractoption.length; i++)
		{
			if (document.DSLinfo.contractoption[i].checked)
			{
				var contractoption = document.DSLinfo.contractoption[i].value;
			}
		}
		data = "sid=" + document.getElementById("sid").value + "&contractoption=" + contractoption + "&action=displayinstalloptions";
	}


	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayStaticIPInfo(direction)
{
	if (direction == 'back')
	{
		data = "sid=" + document.getElementById("sid").value + "&action=displaystaticipinfoback";
		
	}
	else
	{
		for (var i=0; i < document.DSLinfo.installoption.length; i++)
		{
			if (document.DSLinfo.installoption[i].checked)
			{
				var installoption = document.DSLinfo.installoption[i].value;
			}
		}

		data = "sid=" + document.getElementById("sid").value + "&installoption=" + installoption;

		if (document.DSLinfo.wirelessmodem.checked)
		{
			data = data + "&wirelessmodem=1";
		}

		data = data + "&numfilters=" + document.getElementById("numfilters").value + "&action=displaystaticipinfo";
	}



	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayWebhostingOffer(direction)
{
	if (direction == 'back')
	{

		data = "sid=" + document.getElementById("sid").value + "&action=displaywebhostingofferback";
	}
	else
	{
		data = "sid=" + document.getElementById("sid").value;
		if (document.DSLinfo.staticip.checked)
		{
			data = data + "&staticip=1";
		}
		data = data + "&action=displaywebhostingoffer";
	}

	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayCustomerInfo(direction)
{
	if (direction == 'back') 
	{
		data = "sid=" + document.getElementById("sid").value + "&action=displaycustomerinfoback";
	}
	else 
	{
		data = "sid=" + document.getElementById("sid").value;
		if (document.DSLinfo.webhosting.checked)
		{
			data = data + "&webhosting=1";
		}
		data = data + "&action=displaycustomerinfo";
	}

	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayBillingForm(direction)
{
	
	var phoneNumberPattern = /^\(?(\d{3})\)?[- \.]?(\d{3})[- \.]?(\d{4})$/;
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	var birthdatePattern = /^\(?(\d{2})\)?[\/ \.]?(\d{2})[\/ \.]?(\d{4})$/;  
	var returnval = 0;

	if (direction == 'back') 
	{
		data = "sid=" + document.getElementById("sid").value + "&action=displaybillingformback";
	}
	else
	{
	if (document.getElementById("name").value == '')
	{
		document.getElementById("nameleft").className = 'error';
		returnval = 1;
	} else {
		document.getElementById("nameleft").className = 'left';
		data = "sid=" + document.getElementById("sid").value + "&name=" + document.getElementById("name").value;
	}

	if (document.getElementById("company").value != '')
	{
		data = data + "&company=" + document.getElementById("company").value;
	}

	if (!phoneNumberPattern.test(document.getElementById("dayphone").value))
	{
		document.getElementById("dayphoneleft").className = 'error';
		returnval = 1;
	} else {
		document.getElementById("dayphoneleft").className = 'left';
		data = data + "&dayphone=" + document.getElementById("dayphone").value;
	}

	if (document.getElementById("eveningphone").value != '')
	{
		data = data + "&eveningphone=" + document.getElementById("eveningphone").value;
	}

	if (document.getElementById("email").value != '')
	{
		data = data + "&email=" + document.getElementById("email").value;
	}

	if (!birthdatePattern.test(document.getElementById("birthdate").value))
	{
		document.getElementById("birthdateleft").className = 'error';
		returnval = 1;
	} else {
		document.getElementById("birthdateleft").className = 'left';
		data = data + "&birthdate=" + document.getElementById("birthdate").value;
	}

	if (document.getElementById("address").value == '')
	{
		document.getElementById("addressleft").className = 'error';
		returnval = 1;
	} else {
		document.getElementById("addressleft").className = 'left';
		data = data + "&address=" + document.getElementById("address").value;
	}

	if (document.getElementById("address2").value != '')
	{
		data = data + "&address2=" + document.getElementById("address2").value;
	}

	if (document.getElementById("city").value == '')
	{
		document.getElementById("cityleft").className = 'error';
		returnval = 1;
	} else {
		document.getElementById("cityleft").className = 'left';
		data = data + "&city=" + document.getElementById("city").value;
	}

	if (document.getElementById("state").value == '')
	{
		document.getElementById("statefloat").className = 'floaterror';
		returnval = 1;
	} else {
		document.getElementById("statefloat").className = 'float';
		data = data + "&state=" + document.getElementById("state").value;
	}

	if (document.getElementById("zipcode").value == '')
	{
		document.getElementById("zipfloat").className = 'floaterror';
		returnval = 1;
	} else {
		document.getElementById("zipfloat").className = 'float';
		data = data + "&zipcode=" + document.getElementById("zipcode").value;
	}

	if (document.getElementById("installphone").value != '')
	{
		data = data + "&installphone=" + document.getElementById("installphone").value;
	}

	data = data + "&action=displaybillingform";
	}

	if (returnval) 
	{
		return;
	}

	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayUsernameSelection(direction)
{
	
	var returnval = 0;

	if (direction == 'back')
	{
		data = "sid=" + document.getElementById("sid").value + "&action=displayusernameselectionback";
	}
	else
	{
		creditcardtype = document.getElementById("creditcardtype").value;

		data = "sid=" + document.getElementById("sid").value + "&creditcardtype=" + creditcardtype;

		if (!cardval(document.getElementById("creditcardnumber").value))
		{
			document.getElementById("creditcardnumberleft").className = 'error';
			returnval = 1;
		} else {
			document.getElementById("creditcardnumberleft").className = 'left';
			data = data + "&creditcardnumber=" + document.getElementById("creditcardnumber").value;
		}

		ccmonth = document.getElementById("ccmonth").value;
		ccyear = document.getElementById("ccyear").value;

		if (ccmonth == 'Month...' || ccyear == 'Year...' || ccmonth == '' || ccyear == '')
		{
			document.getElementById("expirationleft").className = 'error';
			returnval = 1;
		}

		if (ccmonth != 'Month...' && ccyear != 'Year...' && ccmonth != '' && ccyear != '')
		{
			document.getElementById("expirationleft").className = 'left';
			data = data + "&ccmonth=" + ccmonth + "&ccyear=" + ccyear;
		}	

		if (document.getElementById("nameoncard").value == '')
		{
			document.getElementById("nameoncardleft").className = 'error';
			returnval = 1;
		}
		else
		{
			document.getElementById("nameoncardleft").className = 'left';
			data = data + "&nameoncard=" + document.getElementById("nameoncard").value;
		}

		if (document.getElementById("billaddress").value == '')
		{
			document.getElementById("billaddressleft").className = 'error';
			returnval = 1;
		}
		else
		{
			document.getElementById("billaddressleft").className = 'left';
			data = data + "&billaddress=" + document.getElementById("billaddress").value;
		}

		if (document.getElementById("billaddress2").value != '')
		{
			data = data + "&billaddress2=" + document.getElementById("billaddress2").value;
		}

		if (document.getElementById("billcity").value == '')
		{
			document.getElementById("billcityleft").className = 'error';
			returnval = 1;
		}
		else
		{
			document.getElementById("billcityleft").className = 'left';
			data = data + "&billcity=" + document.getElementById("billcity").value;
		}

		if (document.getElementById("billstate").value == '')
		{
			document.getElementById("billstatefloat").className = 'floaterror';
			returnval = 1;
		}
		else
		{
			document.getElementById("billstatefloat").className = 'float';
			data = data + "&billstate=" + document.getElementById("billstate").value;
		}

		if (document.getElementById("billzipcode").value == '')
		{
			document.getElementById("billzipfloat").className = 'floaterror';
			returnval = 1;
		}
		else
		{
			document.getElementById("billzipfloat").className = 'float';
			data = data + "&billzipcode=" + document.getElementById("billzipcode").value;
		}

		if (document.getElementById("previousisp").value != '')
		{
			data = data + "&previousisp=" + document.getElementById("previousisp").value;
		}

		if (document.getElementById("couponoffercode").value != '')
		{
			data = data + "&couponoffercode=" + document.getElementById("couponoffercode").value;
		}

		howdidyouhearaboutus = document.getElementById("howdidyouhearaboutus").value;

		if (howdidyouhearaboutus != 'Choose one...')
		{
			data = data + "&howdidyouhearaboutus=" + howdidyouhearaboutus;
		}

		if (document.getElementById("ref").value != '')
		{
			data = data + "&ref=" + document.getElementById("ref").value;
		}

		data = data + "&action=displayusernameselection";
	}


	if (returnval) 
	{
		return;
	}

	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function displayAUP(direction)
{
	returnval = 0;
	
	if (direction == 'back') 
	{
		data = "sid=" + document.getElementById("sid").value + "&action=displayaupback";
	}
	else 
	{
		data = "sid=" + document.getElementById("sid").value;

		if (document.getElementById("username").value == '')
		{
			document.getElementById("usernameleft").className = 'error';
			returnval = 1;
		}
		else
		{
			document.getElementById("usernameleft").className = 'left';
			data = data + "&username=" + document.getElementById("username").value;
		}

		if (document.getElementById("password").value == '')
		{
			document.getElementById("passwordleft").className = 'error';
			returnval = 1;
		}
		else
		{
			document.getElementById("passwordleft").className = 'left';
			data = data + "&password=" + document.getElementById("password").value;
		}

		if (document.getElementById("domain").value != '')
		{
			data = data + "&domain=" + document.getElementById("domain").value;
		}

		data = data + "&action=displayaup";
	}

	if (returnval) 
	{
		return;
	}


	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}

function placeOrder()
{
	data = "sid=" + document.getElementById("sid").value;

	if (!document.getElementById("acceptterms").checked)
	{
		document.getElementById("termserror").innerHTML = "<span><p style='color:#B81137;'>You must accept the Terms and Conditions.</p></span>";
		return;
	}
	else
	{
		document.getElementById("termserror").innerHTML = "";
		data = data + "&action=placeorder";
	}

	if (xmlHttp)
	{
		try
		{ 
			document.body.style.cursor = "wait";
			xmlHttp.open("POST", "/proc/dsl.php", true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = handleDSLGenResponse;
			xmlHttp.send(data);
		}
		catch(e)
		{
			alert("Failed to connect to server: " + e.toString());
		}
	}
}


function displayDSLGenResponse()
{
	document.body.style.cursor = "default";
	response = xmlHttp.responseText;
	target = document.getElementById("maincontent");

	if (response == 1) 
	{
                target.innerHTML = "<br><p style='color:#B81137;'>There has been an unknown error.</p>";		
	}
	else
	{	
		target.innerHTML = response;
	}
}

function handleDSLGenResponse()
{
        if (xmlHttp.readyState == 4)
        {
                if (xmlHttp.status == 200)
                {
                        try
                        {
                                displayDSLGenResponse();
                        }
                        catch(e)
                        {
                                alert("Error reading the response: " + e.toString());
                        }
                }
                else
                {
                        alert("There was a problem retrieving the data: " + xmlHttp.statusText);
                }
        }
}

function createXmlHttpObject()
{
	var xmlHttp;
	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		try
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
		}
		catch(e) { }
	}
	if (!xmlHttp)
		alert("Error creating the XMLHttpRequest object.");
	else
		return xmlHttp;
}


function cardval(s) {
	var v = "0123456789";
	var w = "";
	for (i=0; i < s.length; i++) 
	{
		x = s.charAt(i);
		if (v.indexOf(x,0) != -1)
		{
			w += x;
		}
	}

	// validate number

	j = w.length / 2;
	if (j < 6.5 || j > 8 || j == 7)
	{
		return false;
	}

	k = Math.floor(j);
	m = Math.ceil(j) - k;
	c = 0;
	for (i=0; i<k; i++) 
	{
		a = w.charAt(i*2+m) * 2;
		c += a > 9 ? Math.floor(a/10 + a%10) : a;
	}
	for (i=0; i<k+m; i++)
	{
		c += w.charAt(i*2+1-m) * 1;
	}
	return (c%10 == 0);
}


