var CCERR0="There is a problem with your credit card number\n\n";
var CCERR1=CCERR0+"Your card number must contain digits only\n\nPlease amend and try again";
var CCERR2=CCERR0+"Please check it matches the number on your card and try again";
var CCERR3=CCERR2+"\n\nAlso check that you have selected the right card type";
var go=true;
function changePaymentInfoDisplay() {
var form=document.signupForm;
var CCType=form.elements.creditcardtype.value;
var paymentInfoDiv1=document.getElementById("paymentInfoDiv1");
var paymentInfoDiv2=document.getElementById("paymentInfoDiv2");
var paymentInfoDiv3=document.getElementById("paymentInfoDiv3");
if(CCType=="PayPal"||CCType.indexOf("blank")!=-1){	
paymentInfoDiv1.style.display='none';
paymentInfoDiv2.style.display='none';
paymentInfoDiv3.style.display='none';
document.getElementById("signupButton").value="Continue";
}else{
paymentInfoDiv1.style.display='';
if(CCType.indexOf("Solo")!=-1)paymentInfoDiv2.style.display='';
else paymentInfoDiv2.style.display='none';
paymentInfoDiv3.style.display='';
document.getElementById("signupButton").value="Pay Now";
}
}
function changeBillingName(){
var form=document.signupForm;
var firstname=form.elements.firstname.value;
var lastname=form.elements.lastname.value;
var fullname = firstname+" "+lastname;
var cardname=form.elements.cardname.value;
if(cardname==""||cardname!=fullname) {
form.elements.cardname.value=fullname;
}
}
function checkCountryCode(){
var form=document.signupForm;
var country=form.elements.country.value;
var isTax=checkTax(country);
if(isTax){
document.getElementById("taxDiv1").innerHTML=" plus VAT";
if(document.getElementById("promoText").innerHTML.indexOf("discounted")!=-1)document.getElementById("taxDiv2").innerHTML=" plus VAT";
}else{
document.getElementById("taxDiv1").innerHTML="";
if(document.getElementById("promoText").innerHTML.indexOf("discounted")!=-1)document.getElementById("taxDiv2").innerHTML="";
}
}
function checkTax(country){
var form=document.signupForm;
if(country=="GB")return true;
else if(checkEU(country)&&form.elements.accountType[0].checked)return true;
else return false;
}
function checkEU(country){
var euArray=["AT","BE","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","GB"];
if(euArray.inArray(country))return true;
else return false;
}
function handlesignupFormSubmit() {
var progressBox=document.getElementById('signupProgressDiv');
progressBox.innerHTML="";
var form=document.signupForm;
var requiredFieldsEmpty=false;
var cc=form.elements.creditcardtype.value;
if(cc=="PayPal"){
//objectcounter=8;
objectcounter=form.elements.length-11;
}else{
//objectcounter=15;
objectcounter=form.elements.length-4;
}
for (var i=0; i<objectcounter; i+=1) {
var terms = form.elements.termsandconditions.checked;
if(terms)document.getElementById(form.elements.termsandconditions.name + "TD").innerHTML = "&nbsp";
if (form.elements[i].name=="startdatemonth"||form.elements[i].name=="startdateyear" ){
TDName="start";
}else{
if (form.elements[i].name=="expdatemonth"||form.elements[i].name=="expdateyear"){
TDName="expiry";
}else{
TDName=form.elements[i].name;
}
}
startmonth="";
startyear="";
if(cc.indexOf("Solo")!=-1){
startmonth="StartMonth";
startyear="StartYear";
}
if(form.elements[i].value==''||form.elements[i].value==startmonth||form.elements[i].value==startyear||form.elements[i].value=="ExpireMonth"||form.elements[i].value=="ExpireYear"||form.elements[i].value=="blank"){
if(form.elements[i].name!='issueno'&&form.elements[i].name!='startdatemonth'&&form.elements[i].name!='startdateyear'){
requiredFieldsEmpty=true;
document.getElementById(TDName + "TD").innerHTML = "&nbsp;<span class='bodyrd'>Field Empty!</span>"; 
}
} else {
if (form.elements[i].value!="StartMonth"||form.elements[i].value!="StartYear"||form.elements[i].value!="ExpireMonth"||form.elements[i].value!="ExpireYear"||form.elements[i].value!="blank") {
if(form.elements[i].name=="expdateyear"){
if(form.expdatemonth.value!="ExpireMonth")document.getElementById(TDName+"TD").innerHTML="&nbsp;";
}else if(form.elements[i].name=="startdateyear"){
if(form.startdatemonth.value!="StartMonth")document.getElementById(TDName+"TD").innerHTML="&nbsp;";
}else{
document.getElementById(TDName + "TD").innerHTML="&nbsp;";
}
}
}
}
if(cc.indexOf("Solo")!=-1){
if(form.issueno.value==""&&(form.startdatemonth.value==startmonth||form.startdateyear.value==startyear)){
document.getElementById("startTD").innerHTML="&nbsp;<span class='bodyrd'>Field Empty!</span>";
requiredFieldsEmpty=true;
}else{
document.getElementById("startTD").innerHTML="&nbsp;";
}
}
atchecked=0;
for(j=0;j<form.elements.accountType.length;j++)if(form.elements.accountType[j].checked)atchecked=1;
if(atchecked==0){
requiredFieldsEmpty=true;
document.getElementById("accountTypeTD").innerHTML="&nbsp;<span class='bodyrd'>Field Empty!</span>";
}else document.getElementById("accountTypeTD").innerHTML="&nbsp;";
if(requiredFieldsEmpty) {
go=false;
alert(EMPTY_FORMFIELD_MSG);
return false;
}else{
checkCountryCode();
var email=form.elements.username.value;
var isEmailValidMessage=checkValidEmail(email);
if (isEmailValidMessage.indexOf("false") == -1) {
go=false;
alert(isEmailValidMessage);
return false;
}
var pw1=form.elements.password1.value;
var pw2=form.elements.password2.value;
if(!checkPwMatch(pw1,pw2)){
return false;
}else{
if(pw1.length<6){
go=false;
alert("Error: Your new " + PASSWORD_TOO_SHORT_MSG);
return false;
}else{
var terms=form.elements.termsandconditions.checked;
if(!terms){
go=false;
document.getElementById(form.elements.termsandconditions.name + "TD").innerHTML = "&nbsp;<span class='bodyrd'>Please check box to signup</span>";
alert(NO_TERMS_MSG);
return false;
}else{
go=true;
var firstname=form.elements.firstname.value;
var lastname=form.elements.lastname.value;
var creditcardtype=form.elements.creditcardtype.value;
var country=form.elements.country.value;
var promotionCode="noPromotionCode";
if(form.elements.promotionalcode.value != '') {
promotionCode=form.elements.promotionalcode.value;
}
if(go){
var accountType='';
if (creditcardtype=="PayPal"){
for (i=0;i<form.elements.accountType.length;i++) {
if (form.elements.accountType[i].checked) {
accountType=form.elements.accountType[i].value;
}
}
form.action="/cgi-bin/signup.pl"+'?'+planID+";"+firstname+";"+lastname+";"+email+";"+pw1+";"+pw2+";"+promotionCode+";"+accountType+";"+country;
}else{
ccnumber=form.elements.cardnumber.value;
ccnumber=ccnumber.replace(/\s+/g,"");
ccnumber=ccnumber.replace(/-/g,"");
form.elements.cardnumber.value=ccnumber;
v=ccnumber.isValidCCNumber(creditcardtype);
if(!v)return false;
else form.action = "/signup/payflow_process.php";
}
form.elements.signupButton.blur();
form.elements.signupButton.disabled=true;
form.target='signupFormTarget';
form.submit();
return true;
}
}
}
}
}
}
function submitPromoForm(){
PROMO_FORM_SCRIPT="/payment/validatePromo.php";
document.getElementById('signupProgressDiv').innerHTML="";
document.getElementById("promoDiv").innerHTML="";
document.getElementById("promoText").innerHTML="";
var promoForm=document.getElementById("promoForm");        
promoForm.action=PROMO_FORM_SCRIPT+"?p="+document.signupForm.promotionalcode.value+"&pi="+planID;
promoForm.target='promoFormTarget';
promoForm.submit();
}
function promogood(chargeAmt){
document.getElementById("promoDiv").innerHTML="&nbsp;&nbsp;&nbsp;<img src='/images/tick.gif' width='14' height='14'/>";
document.getElementById("promoText").innerHTML="Your first month will be discounted to $"+chargeAmt;
checkCountryCode();
document.getElementById("promoText2").innerHTML=".";
}
function promobad(){
document.getElementById("promoDiv").innerHTML="&nbsp;&nbsp;&nbsp;<img src='/images/cross.gif' width='14' height='14'/>";
document.getElementById("taxDiv2").innerHTML="";
document.getElementById("promoText2").innerHTML="";
document.getElementById("promoText").innerHTML="";
}

String.prototype.isValidCCNumber=function (cardType){
var isValid=false;
var ccCheckRegExp=/[^\d ]/;
isValid = !ccCheckRegExp.test(this);
cardType=cardType.toLowerCase();
if (isValid){
var cardNumberLength=this.length;
var lengthIsValid=false;
var prefixIsValid=false;
var prefixRegExp;
switch(cardType){
case "mastercard":
lengthIsValid=(cardNumberLength==16);
prefixRegExp=/^5[1-5]/;
break;
case "visa":
lengthIsValid=(cardNumberLength==16||cardNumberLength==13);
prefixRegExp=/^4/;
break;
case "amex":
lengthIsValid=(cardNumberLength==15);
prefixRegExp=/^3(4|7)/;
break;
default:
prefixRegExp=/^1|2|3|4|5|6|7|8|9|0/;
lengthIsValid=(cardNumberLength==13||cardNumberLength==14||cardNumberLength==15||cardNumberLength==16||cardNumberLength==17||cardNumberLength==18||cardNumberLength==19);
break;
}
prefixIsValid=prefixRegExp.test(this);
isValid=prefixIsValid && lengthIsValid;
}else{
alert(CCERR1);
return isValid;
}
if (isValid){
var numberProduct;
var numberProductDigitIndex;
var checkSumTotal=0;
for (digitCounter=cardNumberLength-1;digitCounter>=0;digitCounter--){
checkSumTotal+=parseInt(this.charAt(digitCounter));
digitCounter--;
numberProduct=String((this.charAt(digitCounter)*2));
for (var productDigitCounter=0;productDigitCounter<numberProduct.length;productDigitCounter++){
checkSumTotal+=parseInt(numberProduct.charAt(productDigitCounter));
}
}
isValid=(checkSumTotal%10==0);
}else{
alert(CCERR3);
return isValid;
}
if(!isValid)alert(CCERR2);
return isValid;
}