var http_request = false;
function init_http_request()
{
	http_request=false;
	if (window.XMLHttpRequest)
	{
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType)
		{
			http_request.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try 
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
			}
		}
	}
}

function post_data(service, param, proc)
{
	init_http_request();
	if(!http_request)
	{
		alert('JavaScript/XMLHTTP is either disabled or not supported by your browser.');
		return false;
	}
	http_request.onreadystatechange = proc;
	http_request.open('POST', '/merchant/' + service + '.php', true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.send(param);
	return false;
}

function set_param(p, n, v)
{
	if(p=='')
	{
		return n + '=' + escape(v) . replace(/\+/g, '%2B') . replace(/\"/g,'%22') . replace(/\'/g, '%27') . replace(/\//g,'%2F');
	}
	else
	{
		return p + '&' + n + '=' + escape(v) . replace(/\+/g, '%2B') . replace(/\"/g,'%22') . replace(/\'/g, '%27') . replace(/\//g,'%2F');
	}
}

function g(id)
{
	return document.getElementById(id);
}

function continue_signup(amount, charge, deposit)
{
	var frm = g('signupfrm');
	for(var i=0; i<frm.amount.length; i++)
	{
		if(frm.amount.options[i].value == amount)
		{
			frm.amount.selectedIndex = i;
			break;
		}
	}
	var name = frm.fname.value + ' ' + frm.lname.value;
	var email = frm.email.value;
	var account = frm.account.value;
	var passcode = frm.redeem.value;
	var html = '<h4>' + name + ', please review the details</h4>';
	html = html + '<p><strong>Account:</strong> ' + account + '</p>';
	html = html + '<p><strong>E-mail:</strong> ' + email + '</p>';
	if(passcode != '')
	{
		var saved = parseInt(deposit) - parseInt(charge);
		html = html + '<p><strong>Coupon or Discount:</strong> <span>Passcode &quot;' + passcode + '&quot applied, you saved $' + saved + ' (USD)</span></p>';
	}
	html = html + '<p><strong>Deposit amount:</strong> $' + deposit + ' (USD)</p>';
	html = html + '<p><strong>Amount to charge:</strong> $' + charge + ' (USD)</p>';
	html = html + '<p>Please review the details and then click on the Make Deposit button to complete your signup.';
	html = html + '<input type="hidden" name="charge" value="' + charge + '" /><input type="hidden" name="deposit" value="' + deposit + '" /></p>';
	html = html + '<h4>Payment Method</h4><p><input type="radio" id="paypal" name="payment" value="pp" checked="checked" /> PayPal <input type="radio" name="payment" value="cc" /> Credit Card</p>';
	html = html + '<p class="c"><span id="waiting" style="color:#000000; display:none">Submitting your application...</span><input id="edit" class="btn" type="button" value="Edit Again" onclick="editagain(4)" /> <input id="makedeposit" class="btn" type="submit" value="Make Deposit" /></p>';
	frm.step.value = '4';
	g('sum').innerHTML = html;
	hide('wait');
	hide('form');
	show('sum');
}

function hide(id)
{
	g(id).style.display = 'none';
}

function show(id)
{
	g(id).style.display = 'block';
}

function clear_err(l)
{
	for(var i=0; i<=l; i++)
	{
		g('err' + i).innerHTML = '';
	}
}

function softppd_signup(frm)
{
	//check form
	var account = frm.account.value;
	var fname = frm.fname.value;
	var lname = frm.lname.value;
	var email = frm.email.value;
	var cmail = frm.cmail.value;
	var company = frm.company.value;
	var budget = frm.budget.value;
	var url = frm.url.value;
	var tel = frm.tel.value;
	var name = frm.name.value;
	var price = frm.price.value;
	var ratio = frm.ratio.value;
	var amount = frm.amount.value;
	var redeem = frm.redeem.value;
	var param = '';
	var i = 0;
	var step = frm.step.value;
	if(step == '1' || step =='3')
	{
		clear_err(12);
		var err = false;
		if(account == '')
		{
			err = true;
			g('err0').innerHTML = 'Required field cannot be left blank';
		}
		if(fname == '')
		{
			err = true;
			g('err1').innerHTML = 'Required field cannot be left blank';
		}
		if(lname == '')
		{
			err = true;
			g('err2').innerHTML = 'Required field cannot be left blank';
		}
		if(email == '')
		{
			err = true;
			g('err3').innerHTML = 'Required field cannot be left blank';
		}
		else if(/^.+@.+\..{2,4}$/.test(email)==false)
		{
			err = true;
			g('err3').innerHTML = 'Please enter a valid email address';
		}
		if(cmail == '')
		{
			err = true;
			g('err4').innerHTML = 'Required field cannot be left blank';
		}
		else if(email != cmail)
		{
			err = true;
			g('err4').innerHTML = 'The two email addresses do not match';
		}
		if(company == '')
		{
			err = true;
			g('err5').innerHTML = 'Required field cannot be left blank';
		}
		if(budget == '')
		{
			err = true;
			g('err6').innerHTML = 'Required field cannot be left blank';
		}
		if(url == '')
		{
			err = true;
			g('err7').innerHTML = 'Required field cannot be left blank';
		}
		if(tel == '')
		{
			err = true;
			g('err8').innerHTML = 'Required field cannot be left blank';
		}
		if(name == '')
		{
			err = true;
			g('err9').innerHTML = 'Required field cannot be left blank';
		}
		var cat = false;
		for(i=0; i<4; i++)
		{
			if(g('cat' + i).checked)
			{
				cat = true;
				break;
			}
		}
		if(cat == false)
		{
			err = true;
			g('err10').innerHTML = 'Please select at least one category';
		}
		if(price == '')
		{
			err = true;
			g('err11').innerHTML = 'Required field cannot be left blank';
		}
		if(ratio == '')
		{
			err = true;
			g('err12').innerHTML = 'Required field cannot be left blank';
		}
		if(err)
		{
			location.href = '#';
			return false;
		}
		//check account and email address
		hide('submit');
		show('wait');
		param = set_param('', 'email', email);
		param = set_param(param, 'account', account);
		param = set_param(param, 'redeem', redeem);
		param = set_param(param, 'amount', amount);
		if(step == 1)
		{
			post_data('signup-1', param, proc_signup1);
		}
		else
		{
			param = set_param(param, 'id', frm.id.value);
			post_data('signup-3', param, proc_signup3);
		}
	}
	else if(step == '2' || step == '4')
	{
		hide('makedeposit');
		hide('edit');
		show('waiting');
		var network = '';
		for(i=0; i<4; i++)
		{
			if(g('cat' + i).checked)
			{
				network = network + '1,';
			}
			else
			{
				network = network + '0,';
			}
		}

		param = set_param('', 'account', account);
		param = set_param(param, 'fname', fname);
		param = set_param(param, 'lname', lname);
		param = set_param(param, 'email', email);
		param = set_param(param, 'company', company); 
		param = set_param(param, 'budget', budget); 
		param = set_param(param, 'url', url); 
		param = set_param(param, 'tel', tel); 
		param = set_param(param, 'name', name); 
		param = set_param(param, 'price', price); 
		param = set_param(param, 'cat', network); 
		param = set_param(param, 'ratio', ratio); 
		param = set_param(param, 'amount', amount); 
		param = set_param(param, 'deposit', frm.deposit.value); 
		param = set_param(param, 'charge', frm.charge.value); 
		param = set_param(param, 'redeem', redeem); 
		param = set_param(param, 'paypal', g('paypal').checked); 
		if(step == 2)
		{
			post_data('signup-2', param, proc_signup2);
		}
		else
		{
			param = set_param(param, 'id', frm.id.value); 
			post_data('signup-4', param, proc_signup4);
		}
	}
	return false;
}

function proc_signup2()
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			var xmldoc = http_request.responseXML;
			var code = xmldoc.getElementsByTagName('code').item(0).firstChild.nodeValue;
			if(code == '0')
			{
				g('waiting').innerHTML = 'Loading order form...'
				g('payfrm').innerHTML = xmldoc.getElementsByTagName('form').item(0).firstChild.nodeValue;
				g('pay').submit();
			}
			else
			{
				alert('There were problems with your form submission. Please try again.');
				editagain(4);
			}
		}
		else
		{
			alert('Service Not Available');
		}
	}
}

function proc_signup4()
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			var xmldoc = http_request.responseXML;
			var code = xmldoc.getElementsByTagName('code').item(0).firstChild.nodeValue;
			if(code == '0')
			{
				g('waiting').innerHTML = 'Loading order form...'
				g('payfrm').innerHTML = xmldoc.getElementsByTagName('form').item(0).firstChild.nodeValue;
				g('pay').submit();
			}
			else
			{
				alert('There were problems with your form submission. Please try again.');
				editagain(2);
			}
		}
		else
		{
			alert('Service Not Available' + http_request.status);
		}
	}
}

function proc_signup1()
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			var xmldoc = http_request.responseXML;
			var code = xmldoc.getElementsByTagName('code').item(0).firstChild.nodeValue;
			if(code == '0')
			{
				review_signup(xmldoc, 2);
			}
			else if(code == '1')
			{
				g('err0').innerHTML = 'This account name has already been taken';
				hide('wait');
				show('submit');
				location.href = '#';
			}
			else if(code == '2')
			{
				g('err3').innerHTML = 'The email is associated with an existing account';
				hide('wait');
				show('submit');
				location.href = '#';
			}
		}
		else
		{
			alert('Service Not Available');
		}
	}
}

function review_signup(xmldoc, stp)
{
	var frm = g('signupfrm');
	var name = frm.fname.value + ' ' + frm.lname.value;
	var email = frm.email.value;
	var account = frm.account.value;
	var passcode = frm.redeem.value;
	var charge = xmldoc.getElementsByTagName('charge').item(0).firstChild.nodeValue;
	var deposit = xmldoc.getElementsByTagName('deposit').item(0).firstChild.nodeValue;
	var redeem = xmldoc.getElementsByTagName('redeem').item(0).firstChild.nodeValue;
	var html = '<h4>' + name + ', please review the details</h4>';
	html = html + '<p><strong>Account:</strong> ' + account + '</p>';
	html = html + '<p><strong>E-mail:</strong> ' + email + '</p>';
	if(redeem == 1)
	{
		html = html + '<p><strong>Offer or Discount:</strong> <span>The passcode you input is invalid. No discount applied.</span></p>';
		frm.redeem.value = '';
	}
	else if(redeem == 2)
	{
		var saved = parseInt(deposit) - parseInt(charge);
		html = html + '<p><strong>Coupon or Discount:</strong> <span>Passcode &quot;' + passcode + '&quot applied, you saved $' + saved + ' (USD)</span></p>';
	}
	html = html + '<p><strong>Deposit amount:</strong> $' + deposit + ' (USD)</p>';
	html = html + '<p><strong>Amount to charge:</strong> $' + charge + ' (USD)</p>';
	html = html + '<p>Please review the details and then click on the Make Deposit button to complete your signup.';
	html = html + '<input type="hidden" name="charge" value="' + charge + '" /><input type="hidden" name="deposit" value="' + deposit + '" /></p>';
	html = html + '<h4>Payment Method</h4><p><input type="radio" id="paypal" name="payment" value="pp" checked="checked" /> PayPal <input type="radio" name="payment" value="cc" /> Credit Card</p>';
	html = html + '<p class="c"><span id="waiting" style="color:#000000; display:none">Submitting your application...</span><input id="edit" class="btn" type="button" value="Edit Again" onclick="editagain(' + stp + ')" /> <input id="makedeposit" class="btn" type="submit" value="Make Deposit" /></p>';
	frm.step.value = stp;
	g('sum').innerHTML = html;
	hide('wait');
	hide('form');
	show('sum');
}

function editagain(stp)
{
	g('signupfrm').step.value = parseInt(stp) - 1;
	g('sum').innerHTML = '';
	hide('sum');
	show('form');
	show('submit');
}


function proc_signup3()
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			var xmldoc = http_request.responseXML;
			var code = xmldoc.getElementsByTagName('code').item(0).firstChild.nodeValue;
			if(code == '0')
			{
				review_signup(xmldoc, 4);
			}
			else if(code == '1')
			{
				g('err0').innerHTML = 'This account name has already been taken';
				hide('wait');
				show('submit');
				location.href = '#';
			}
			else if(code == '2')
			{
				g('err3').innerHTML = 'The email is associated with an existing account';
				hide('wait');
				show('submit');
				location.href = '#';
			}
		}
		else
		{
			alert('Service Not Available');
		}
	}
}
