// JavaScript Document
var currentStep = 1
var nextStep = 2
function moveToNextStep() {
	document.getElementById("step"+currentStep).style.display = "none"
	document.getElementById("step"+nextStep).style.display = "block"
	currentStep++
	nextStep++
}

function moveToPreviousStep() {
	currentStep--
	nextStep--
	document.getElementById("step"+currentStep).style.display = "block"
	document.getElementById("step"+nextStep).style.display = "none"
}

function validateEmail(address) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(address) == false) {
	  return false;
   }

   return true
}

function inputReceived() {
	form = document.getElementById("paymentFormBegin")
	form.Next.disabled = !validatePayee()
}

function amountReceived() {
	form = document.getElementById("paymentForm1")
	form.Next.disabled = !validateAmount()
}

function validateAmount() {
	form = document.getElementById("paymentForm1")
	var inpVal = parseInt(form.amount.value, 10);
	if(isNaN(inpVal)) {
		return false
	}
	
	return true
}

function paymentInfoReceived() {
	form = document.getElementById("paymentForm2")
	form.Process.disabled = !validatePaymentInfo()
}

function validatePaymentInfo() {
	form = document.getElementById("paymentForm2")
	if( (form.cardHolder.value != "") &&
		(form.cardNum.value != "") &&
		(form.cvv2.value != "") ) {
		
		if( (form.billSameAsMail.checked == false) &&
			((form.street.value == "") ||
			(form.city.value == "") ||
			(form.state.value == "") ||
			(form.zip.value == "")) ) {
			return false
		}
		
		return true
	}
	
	return false
}

function validatePayee() {
	form = document.getElementById("paymentFormBegin")
	if( (form.fname.value != "") &&
		(form.lname.value != "") &&
		(!validateEmail()) &&
		(form.street.value != "") &&
		(form.city.value != "") &&
		(form.state.value != "") &&
		(form.zip.value != "") &&
		(form.phone.value != "") ) {
		
		return true
	}
		
	return false
}

function setupPayee() {
	form = document.getElementById("paymentFormBegin")
	if(validatePayee()) {
		parameters = "type=3&fname="+form.fname.value+"&lname="+form.lname.value + "&email="+form.email.value
		parameters = parameters + "&street="+form.street.value+"&city="+form.city.value
		parameters = parameters + "&state="+form.state.value+"&zip="+form.zip.value+"&phone="+form.phone.value
		submitRequest(parameters)
	}
}

function disableAddress() {
	form = document.getElementById("paymentForm2")	
	
	disabled = false
	if(form.billSameAsMail.checked)
		disabled = true
	form.street.disabled = disabled
	form.city.disabled = disabled
	form.state.disabled = disabled
	form.zip.disabled = disabled
	
}
function clearFields() {
	form = document.getElementById("paymentForm1")
	
}

function sendAmountAndDescription() {
	if(validateAmount()) {
		form = document.getElementById("paymentForm1")
		description = form.description.value
		amount = form.amount.value
		
		parameters = "type=2&amount="+amount+"&description="+description
		submitRequest(parameters)
	}
}

function sendQuantityAmountAndDescription() {
	if(validateAmount()) {
		form = document.getElementById("paymentForm1")
		description = form.description.value
		amount = form.amount.value
		quantity = form.quantity.value
		
		parameters = "type=5&amount="+amount+"&description="+description+"&quantity="+quantity
		submitRequest(parameters)
	}
}


function processPayment() {
	form = document.getElementById("paymentForm2")
	cardHolder = form.cardHolder.value
	cardNum = form.cardNum.value
	cvv2 = form.cvv2.value
	street = form.street.value
	city = form.city.value
	state = form.state.value
	zip = form.zip.value
	expire = form.expireM.value+form.expireY.value
	billSame = form.billSameAsMail.value
	
	cardNum = maskNumber(cardNum)
	cvv2 = maskNumber(cvv2)
	expire = maskNumber(expire)
	
	parameters = "type=1&cardHolder="+cardHolder+"&cardNum="+cardNum+"&cvv2="+cvv2+"&street="+street+"&expire="+expire
	parameters = parameters + "&zip=" + zip + "&city="+city+"&state="+state+"&billSame="+billSame
	submitRequest(parameters)
}

function maskNumber(number) {
	
	number = number.replace(/0/g,"QwE")
	number = number.replace(/1/g,"YtR")
	number = number.replace(/2/g,"UOI")
	number = number.replace(/3/g,"Plk")
	number = number.replace(/4/g,"jhG")
	number = number.replace(/5/g,"Fsd")
	number = number.replace(/6/g,"AZM")
	number = number.replace(/7/g,"HEw")
	number = number.replace(/8/g,"XvC")
	number = number.replace(/9/g,"bn")
	
	return number
}

function submitRequest(parameters) {	
  http_request = false;
  url = "lib/paymentHandler.php"
  
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		//http_request.overrideMimeType('text/xml');
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  
  http_request.onreadystatechange = handleResponse;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function handleResponse() {
	if (http_request.readyState==4 || http_request.readyState=="complete") { 
		moveToNextStep()
		if(currentStep == 4)
			document.getElementById('step4').innerHTML = http_request.responseText
	}
}

