var PayPalForm = Class.extend({
	construct:function() {
		this.container=null;
		this.unsubscribedPhonesArray=null;
		this.mainPhone=null;
		this.mainPhoneValid=null;
		this.includeCharities=false;
		this.subscriptionForm=true;
		this.masterNumber=null;
		this.phoneType=null;
		this.intMasterPhone=null;
		this.oldNumber=null;
		this.validMonths=null;
	},

	renderForm:function() {
		hideMask();
		this.renderHeaders();
		this.renderContainer();
		this.renderTable();
		if(this.subscriptionForm==true) {
			this.calculateTotals();
		}else{
			this.calculateResend();
		}
	},

	calculateResend:function() {
		document.getElementById("totalPaypalCost").innerHTML="<strong style='color:#FF0000;'>&pound;"+resendPayment+"</strong>";
		document.getElementById("paypalNumbers").value=this.oldNumber;
		document.getElementById("paypalPhoneType").value=this.phoneType;
	},

	calculateTotals:function() {
		var payment=twelveMonthsPayment;
		var additionalPayment=additionalTwelveMonthsPayment;
		var interval="twelve";
		var donation=twelveMonthsDonation;
		var additionalDonation=additionalTwelveMonthsDonation;
		if(document.getElementById("payment1") !=null) {
			if(document.getElementById("payment1").checked==true) {
				payment=twelveMonthsPayment;
				additionalPayment=additionalTwelveMonthsPayment;
				donation=twelveMonthsDonation;
				additionalDonation=additionalTwelveMonthsDonation;
				interval="twelve";
			}else{
				payment=sixMonthsPayment;
				additionalPayment=additionalSixMonthsPayment;
				additionalDonation=additionalSixMonthsDonation;
				donation=sixMonthsDonation;
				interval="six";
			}
		}
		if(document.getElementById("paymentHidden")!=null) {
			if(document.getElementById("paymentHidden").value=="twelve") {
				payment=twelveMonthsPayment;
				additionalPayment=additionalTwelveMonthsPayment;
				additionalDonation=additionalTwelveMonthsDonation;
				donation=twelveMonthsDonation;
				interval="twelve";
			}else{
				payment=sixMonthsPayment;
				additionalPayment=additionalSixMonthsPayment;
				additionalDonation=additionalSixMonthsDonation;
				donation=sixMonthsDonation;
				interval="six";
			}
		}

		var mainPhones=getElementsByClassName("primaryPhone");
		var additionalPhones=getElementsByClassName("additionalPhone");

		for(var i=0 ; i < mainPhones.length;i++) {
			mainPhones[i].innerHTML="<strong style='color:#FF0000;'>&pound; "+payment.toFixed(2)+"</strong>";
		}

		for(var i=0 ; i < additionalPhones.length;i++) {
			additionalPhones[i].innerHTML="<strong style='color:#FF0000;'>&pound; "+additionalPayment.toFixed(2)+"</strong>";
		}

		var mainPhones=0;
		var additionalPhones=0;
		var selPhones=0;
		var paypalPhonesArray=new Array();
		for(var i=0; i < this.unsubscribedPhonesArray.length;i++) {
			if(document.getElementById("mobNum_"+this.unsubscribedPhonesArray[i].getAttribute("mobileNumber")).checked==true) {
				paypalPhonesArray.push(this.unsubscribedPhonesArray[i].getAttribute("intMobileNumber"));
				if(this.unsubscribedPhonesArray[i].getAttribute("primary")=="1") {
					mainPhones++;
				}else{
					additionalPhones++;
				}
				selPhones++;
			}
		}
		document.getElementById("paypalMasterNumber").value=this.masterPhone;
		document.getElementById("paypalIntMasterNumber").value=this.intMasterPhone;
		document.getElementById("paypalNumbers").value=paypalPhonesArray.join(",");
		document.getElementById("paypalSubscription").value=interval;
		document.getElementById("paypalCharity").value=document.getElementById("charitySelect").value;

		var totalCost=parseFloat((mainPhones*payment)+(additionalPhones*additionalPayment)).toFixed(2);
		document.getElementById("totalPaypalCost").innerHTML="<strong style='color:#FF0000;'>&pound;"+totalCost+"</strong>";
		document.getElementById("totalDonateCost").innerHTML="<strong style='color:#FF0000;'>&pound;"+parseFloat((mainPhones*donation)+(additionalPhones*additionalDonation)).toFixed(2)+"</strong>";
		document.getElementById("selectedCharity").innerHTML=document.getElementById("charitySelect").value;
		if(totalCost==0) {
			document.getElementById("submitPaypal").disabled=true;
		}else{
			document.getElementById("submitPaypal").disabled=false;
		}
	},

	togglePricing:function(val) {
		if(val=="payment1") {
			document.getElementById("payment1").checked=true;
			document.getElementById("payment2").checked=false;
		}else{
			document.getElementById("payment2").checked=true;
			document.getElementById("payment1").checked=false;
		}
		this.calculateTotals();
	},

	renderHeaders:function() {
		document.getElementById("instructionsHeader").style.display="block";
		document.getElementById("instructionsPanel").style.display="none";
		document.getElementById("formPanel").innerHTML="";
		document.getElementById("instructionsHeader").style.display="none";
	},

	renderContainer:function() {
		this.container=document.createElement("div");
		this.container.className="instructionsHeader";
		this.container.innerHTML="Subscription Options";
		document.getElementById("formPanel").appendChild(this.container);
	},

	renderTable:function() {
		var table=document.createElement("table");
		table.style.marginTop="10px";
		table.cellpadding="0";
		table.cellSpacing="0";
		table.width="100%";
		table.border="0";
		var tbody=document.createElement("tbody");

		var tr=document.createElement("tr");
		var td=document.createElement("td");
		td.className="instructionsHeader";
		td.style.fontSize="12px";
		td.colSpan="4";
		td.innerHTML="Payment Options";
		tr.appendChild(td);
		tbody.appendChild(tr);

		if(this.subscriptionForm==true) {
			if(this.mainPhoneValid==false) {
				//this.renderMainPhoneInvalid(tbody);
			}else{
				this.renderMainPhoneValid(tbody);
			}

			var tr=document.createElement("tr");

			var td=document.createElement("td");
			td.className="instructionsHeader";
			td.style.fontSize="12px";
			td.colSpan="4";
			td.innerHTML="Unsubscribed Phones";
			tr.appendChild(td);
			tbody.appendChild(tr);

			this.renderUnsubscribedPhones(tbody);

		}else{
			this.renderResendToPhone(tbody);
		}



		if(this.includeCharities==true) {
			this.renderCharities(tbody);

		}

		this.renderPaymentInfo(tbody);

		table.appendChild(tbody);
		document.getElementById("formPanel").appendChild(table);
		if(document.getElementById("payment1") !=null) {
			document.getElementById("payment1").checked=true;
		}
		if(this.unsubscribedPhonesArray !=null) {
			for(var i=0; i < this.unsubscribedPhonesArray.length;i++)
			{
				document.getElementById("mobNum_"+this.unsubscribedPhonesArray[i].getAttribute("mobileNumber")).checked=true;
			}
		}
		var br=document.createElement("br");
		document.getElementById("formPanel").appendChild(br);
		var br=document.createElement("br");
		document.getElementById("formPanel").appendChild(br);

	},

	renderCharities:function(tbody) {
		var tr=document.createElement("tr");
		tr.className="clsEven";
		var td=document.createElement("td");
		td.colSpan="4";
		td.innerHTML="&nbsp;";
		tr.appendChild(td);
		tbody.appendChild(tr);

		var tr=document.createElement("tr");
		tr.className="clsEven";
		var td=document.createElement("td");
		td.colSpan="4";
		td.innerHTML="<br />With every subscription we will donate 10% to one occupational charity of your choice.<br />&nbsp;";
		tr.appendChild(td);
		tbody.appendChild(tr);

		var tr=document.createElement("tr");
		tr.className="clsEven";
		var td=document.createElement("td");
		td.colSpan="4";
		td.innerHTML="&nbsp;";
		tr.appendChild(td);
		tbody.appendChild(tr)

		var tr=document.createElement("tr");
		tr.className="clsEven";

		var td=document.createElement("td");
		td.colSpan="2";
		td.style.fontWeight="bold";
		td.innerHTML="Please Select a Charity";
		tr.appendChild(td);
		tbody.appendChild(tr);

		var td=document.createElement("td");
		td.colSpan="2";
		var select=document.createElement("select");
		select.id="charitySelect";
		select.onchange=delegate(this,this.calculateTotals);
		var charitiesArray=new Array("Ambulance Services Benevolent Fund","The Firefighters Charity","Care of Police Survivors","The Association of Air Ambulances","Help For Heroes");
		var randomNum=Math.floor(Math.random()*charitiesArray.length);

		for(var c=0;c < charitiesArray.length;c++) {
			var option=document.createElement("option");
			option.innerHTML=charitiesArray[c];
			option.value=charitiesArray[c];
			if(c==randomNum) {
				option.selected=true;
			}
			select.appendChild(option);
		}

		td.appendChild(select);
		tr.appendChild(td);
		tbody.appendChild(tr);

	},

	renderPaymentInfo:function(tbody) {
		var tr=document.createElement("tr");
		tr.className="clsEven";
		var td=document.createElement("td");
		td.align="center";
		td.colSpan="4";
		td.innerHTML='<img src="images/logos/horizontal_solution_PP.gif" onclick="javascript:window.open(\'https://www.paypal.com/uk/cgi-bin/webscr?cmd=xpt/Marketing/popup/OLCWhatIsPayPal-outside\',\'olcwhatispaypal\',\'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=400, height=350\');" />';
		tr.appendChild(td);
		tbody.appendChild(tr);

		var tr=document.createElement("tr");
		var td=document.createElement("td");
		td.className="instructionsHeader";
		td.style.fontSize="12px";
		td.colSpan="4";
		td.innerHTML="Payment Information";
		tr.appendChild(td);
		tbody.appendChild(tr);

		var tr=document.createElement("tr");
		tr.className="clsEven";
		var td=document.createElement("td");
		td.colSpan="4";
		td.innerHTML="&nbsp;";
		tr.appendChild(td);
		tbody.appendChild(tr);

		var tr=document.createElement("tr");
		tr.className="clsEven";

		var td=document.createElement("td");
		td.colSpan="2";
		td.style.fontWeight="bold";
		td.innerHTML="Total Cost ";
		if(parseInt(vat) > 0) {
		td.innerHTML+="(inc VAT) ";
		}
		tr.appendChild(td);


		var td=document.createElement("td");
		td.id="totalPaypalCost";
		tr.appendChild(td);

		var td=document.createElement("td");
		td.style.width="300px";
//		var a=document.createElement("a");

		var paypalForm=document.createElement("form");
		paypalForm.method="POST";
		paypalForm.action="payPalPost.php";

		var act=document.createElement("input");
		act.id="paypalAction";
		act.name="paypalAction";
		act.type="hidden";
		if(this.subscriptionForm==true) {
			act.value="subscribe";
		}else{
			act.value="resend";
		}
		paypalForm.appendChild(act);

		var mNumber=document.createElement("input");
		mNumber.id="paypalMasterNumber";
		mNumber.name="paypalMasterNumber";
		mNumber.type="hidden";
		mNumber.value=this.masterPhone;
		paypalForm.appendChild(mNumber);

		var mintNumber=document.createElement("input");
		mintNumber.id="paypalIntMasterNumber";
		mintNumber.name="paypalIntMasterNumber";
		mintNumber.type="hidden";
		mintNumber.value=this.intMasterPhone;
		paypalForm.appendChild(mintNumber);


		var numbers=document.createElement("input");
		numbers.id="paypalNumbers";
		numbers.name="paypalNumbers";
		numbers.type="hidden";
		paypalForm.appendChild(numbers);

		var pType=document.createElement("input");
		pType.id="paypalPhoneType";
		pType.name="paypalPhoneType";
		pType.type="hidden";
		paypalForm.appendChild(pType);

		var subscr=document.createElement("input");
		subscr.id="paypalSubscription";
		subscr.name="paypalSubscription";
		subscr.type="hidden";
		paypalForm.appendChild(subscr);

		var subscr=document.createElement("input");
		subscr.id="paypalCharity";
		subscr.name="paypalCharity";
		subscr.type="hidden";
		paypalForm.appendChild(subscr);

		var submit=document.createElement("input");
		submit.type="submit";
		submit.id="submitPaypal";
		submit.value="Pay Now";
		paypalForm.appendChild(submit);

		td.appendChild(paypalForm);
		tr.appendChild(td);
		tbody.appendChild(tr);

		var tr=document.createElement("tr");
		tr.className="clsEven";
		var td=document.createElement("td");
		td.colSpan="4";
		td.innerHTML="&nbsp;";
		tr.appendChild(td);
		tbody.appendChild(tr)

		if(this.includeCharities==true) {
			var tr=document.createElement("tr");
			tr.className="clsEven";
			var td=document.createElement("td");
			td.colSpan="2";
			td.style.fontWeight="bold";
			td.innerHTML="We will donate ";
			tr.appendChild(td);
			tbody.appendChild(tr);

			var td=document.createElement("td");
			td.id="totalDonateCost";
			tr.appendChild(td);

			var td=document.createElement("td");
			td.style.fontWeight="bold";

			td.id="selectedCharity";
			tr.appendChild(td);

			tbody.appendChild(tr);
		}
	},

	renderMainPhoneInvalid:function(tbody) {
		var tr=document.createElement("tr");
			tr.className="clsEven";
			var td=document.createElement("td");
			td.colSpan="2";
			td.style.paddingLeft="20px";
			td.innerHTML="<strong></strong>";
			tr.appendChild(td);

			var td=document.createElement("td");
			td.style.width="200px";
			td.innerHTML="<strong>Price</strong>";
			tr.appendChild(td);

			var td=document.createElement("td");
			td.innerHTML="<strong>Select</strong>";
			td.colSpan="2";
			tr.appendChild(td);
			tbody.appendChild(tr);

			var tr=document.createElement("tr");
			tr.className="clsOdd";
			var td=document.createElement("td");
			td.colSpan="2";
			td.style.paddingLeft="20px";
			td.innerHTML="<strong>Full Version</strong>";
			tr.appendChild(td);
			var td=document.createElement("td");
			td.innerHTML="<strong style='color:#FF0000;'>&pound; "+twelveMonthsPayment.toFixed(2)+"</strong>";
			tr.appendChild(td);

			var td=document.createElement("td");
			td.style.width="68px";
			var td=document.createElement("td");
			var check=document.createElement("input");
			check.id="payment1";
			check.type="checkbox";
			check.checked=true;
			check.onclick=delegate(this,this.togglePricing,"payment1");
			td.appendChild(check);
			tr.appendChild(td);

			tbody.appendChild(tr);

			/*var tr=document.createElement("tr");
			tr.className="clsOdd";
			var td=document.createElement("td");
			td.colSpan="2";
			td.style.paddingLeft="20px";
			td.innerHTML=" <strong> 6 Months</strong>";
			tr.appendChild(td);
			var td=document.createElement("td");
			td.innerHTML="<strong style='color:#FF0000;'>&pound; "+sixMonthsPayment.toFixed(2)+"</strong>";
			tr.appendChild(td);

			var td=document.createElement("td");
			var check2=document.createElement("input");
			check2.type="checkbox";
			check2.id="payment2";
			check2.checked=false;
			check2.onclick=delegate(this,this.togglePricing,"payment2");
			td.appendChild(check2);
			tr.appendChild(td);
			tbody.appendChild(tr);
*/

			var tr=document.createElement("tr");
			tr.className="clsEven";
			var td=document.createElement("td");
			td.colSpan="4";
			td.innerHTML="&nbsp;";
			tr.appendChild(td);
			tbody.appendChild(tr);


	},

	renderMainPhoneValid:function(tbody) {
		var message="<p>You Currently have <strong style='color:#FF0000;'>"+this.validMonths+" months remaining </strong>on your subscription and therefore ";
			message+="because MobileRota is licensed on a per number basis, adding a new mobile number at this time will require payment of <strong style='color:#FF0000;'>&pound;";

			if(this.validMonths > 0 && this.validMonths < 7){
				message+=additionalSixMonthsPayment+" per additional phone </strong>for a six month subscription <input type='hidden' id='paymentHidden' value='six'/>";
			}

			if(this.validMonths > 6 && this.validMonths <= 12){
				message+=additionalTwelveMonthsPayment+" per additional phone </strong>for a twelve month subscription <input type='hidden' id='paymentHidden' value='twelve'/>";
			}
			var tr=document.createElement("tr");
			tr.className="clsOdd";
			var td=document.createElement("td");
			td.colSpan="4";
			td.innerHTML=message;
			tr.appendChild(td);
			tbody.appendChild(tr);


	},

	renderUnsubscribedPhones:function(tbody) {
		var tr=document.createElement("tr");
			tr.className="clsEven";
			var td=document.createElement("td");
			td.style.paddingLeft="20px";
			td.innerHTML="<strong>Phone</strong>";
			tr.appendChild(td);
			var td=document.createElement("td");
			td.style.paddingLeft="5px";
			td.innerHTML="<strong>Number</strong>";
			tr.appendChild(td);
			var td=document.createElement("td");
			td.style.paddingLeft="5px";
			td.innerHTML="<strong>Price</strong>";
			tr.appendChild(td);
			var td=document.createElement("td");
			td.style.paddingLeft="5px";
			td.innerHTML="<strong>Option</strong>";
			tr.appendChild(td);

		tbody.appendChild(tr);
		for(var i=0 ; i < this.unsubscribedPhonesArray.length;i++) {
			var expDate=convertStringToDate(this.unsubscribedPhonesArray[i].getAttribute("expires"));
			if(days_between(new Date(),expDate) <= 28) {
				var tr=document.createElement("tr");
					tr.className="clsOdd";
				var td=document.createElement("td");
				td.colspan="2";
				td.style.paddingLeft="20px";
				if(this.unsubscribedPhonesArray[i].getAttribute("primary")=="1") {
					td.innerHTML="<strong style='color:#FF0000'>"+this.unsubscribedPhonesArray[i].getAttribute("description")+"</strong>";
				}else{
					td.innerHTML="<strong>"+this.unsubscribedPhonesArray[i].getAttribute("description")+"</strong>";
				}
				tr.appendChild(td);

				var td=document.createElement("td");
					td.style.width="200px";
				td.colspan="2";
				td.innerHTML=this.unsubscribedPhonesArray[i].getAttribute("intMobileNumber");
				tr.appendChild(td);
				var td=document.createElement("td");
				if(this.unsubscribedPhonesArray[i].getAttribute("primary")=="1") {
					td.className="primaryPhone";
				}else{
					td.className="additionalPhone";
				}


				tr.appendChild(td);

				var td=document.createElement("td");


				var input=document.createElement("input");
				input.type="checkbox";
				input.id="mobNum_"+this.unsubscribedPhonesArray[i].getAttribute("mobileNumber");
				input.checked=true;
				input.disabled=true;
				if(this.unsubscribedPhonesArray[i].getAttribute("primary") !="1") {
					input.disabled=false;
					input.onclick=delegate(this,this.calculateTotals);
				}
				td.appendChild(input);

				tr.appendChild(td);
				tbody.appendChild(tr);
			}
		}
	},

	renderResendToPhone:function(tbody) {
		var message="<p>Once you have completed your Paypal payment, MobileRota will be sent to "+this.masterPhone+".";

			var tr=document.createElement("tr");
			tr.className="clsOdd";
			var td=document.createElement("td");
			td.colSpan="4";
			td.innerHTML=message;
			tr.appendChild(td);
			tbody.appendChild(tr);
	}

});
