function maskCreditCard(){
	if(document.getElementById("creditCardNumberTemp")!= null)
	{
		var maskedCreditCard = "";
		if('referenceFlag' == creditFlag)
		{
			maskedCreditCard= document.getElementById("firstReferenceCardNumber").value;
		}
		else
		{
			maskedCreditCard= document.getElementById("creditCardNumber").value;
		}
		if(maskedCreditCard != "")
		{
				maskedCreditCard = "************"+maskedCreditCard.substring(maskedCreditCard.length-4);
				document.getElementById("creditCardNumberTemp").value = maskedCreditCard;
		}
	}
}
	
	function clearCardNumber(){
			if(creditFlag =='registerIR'){
				isTokenized = 'no';
			}
			var cardNumber = document.getElementById("creditCardNumberTemp").value ;
			if(document.getElementById("creditCardNumberTemp").value != "") {
				if(cardNumber.charAt(0) == '*'){
					document.getElementById("creditCardNumberTemp").value = "";
					if('referenceFlag' == creditFlag) {
						document.getElementById("firstReferenceCardNumber").value = "";
					} else {
						document.getElementById("creditCardNumber").value = "";
					}
				}
			}
	}
	
function encryptCard(){
		if(('creditCard' == creditFlag || 'registerIR' == creditFlag )&& !(document.getElementById("permission").checked))
			{
				if('en' == sessionLanguage)
					alert("Before your registration can be completed, you must give Fido permission to validate your credit card information by clicking on the check box above.");
				else
					alert("Afin de pouvoir compl?ter votre inscription, vous devez permettre ? Fido de valider votre information de carte de cr?dit en cochant la case ci-dessus.");	
			}
			else if('referenceFlag' == creditFlag && checkPlan == 'success' && document.getElementById("prepaid").value == 'false' && !(document.getElementById('firstPermission').checked))
			{
				alert(check);
			}					
			else {
				if(document.getElementById("creditCardNumberTemp")!= null)
				{	
					if(creditFlag =='registerIR' && isTokenized == 'yes' && document.getElementById("creditCardNumberTemp").value != ''){
						if(document.getElementById("ccNumber").value != null && document.getElementById("ccNumber").value != '') {
							document.getElementById("creditCardNumber").value = document.getElementById("ccNumber").value;
						}
						formSubmit();
					}
					else {
					    var cardNumber= document.getElementById("creditCardNumberTemp").value;
						if(cardNumber != '' && cardNumber.charAt(0) != '*')
							{
								var rsa = new RSAKey();
								rsa.setPublic(document.getElementById('modulus').value,document.getElementById('exponent').value);
								var encriptCardNumber = rsa.encrypt(cardNumber);
								document.getElementById('encriptCardNoValue').value = hex2b64(encriptCardNumber);
								stringify();
							 }
						else {
								formSubmit();
							 }
						}
				}
				else
				{	
					formSubmit();
				}
				
			}
 }
		



	function stringify(){
		
		if('referenceFlag' == creditFlag)
		{	
			 var CCtype = document.getElementById("firstReferenceType").value;
		}
		else if('changePayment' == creditFlag || 'updatePayment' == creditFlag )
		{	
			 var CCtype = '';
			 if(document.getElementById("radio1").checked) {
			 	CCtype = document.getElementById("radio1").value
			 }if(document.getElementById("radio2").checked) {
			 	CCtype = document.getElementById("radio2").value
			 }if(document.getElementById("radio3").checked) {
			 	CCtype = document.getElementById("radio3").value
			 }
		}
		else
		{
			 var CCtype = document.getElementById("creditCardType").value;
		}
		     	var JSONData = {
		                   	 "pan"     : document.getElementById("encriptCardNoValue").value,
		                   	 "sig"     : document.getElementById("signature").value,
	                         "si"      : document.getElementById("systemIndicator").value,
	                         "type"    : CCtype.substr(0,1),
	                         "ts"      : document.getElementById("pciTime").value,
	                         "service" : document.getElementById("serviceVal").value
	                         };
		    document.getElementById("json").value = JSON.stringify(JSONData);
		    jsonCall();
	}

	function jsonCall(){
	   document.getElementById("tokenField").value = "";
	   document.getElementById("bin").value = "";
	   document.getElementById("result").value = "";
	   var cyberSourceLogServletUrl = document.getElementById('cyberSourceLogServletUrl').value;
	   jQuery.getJSON(cyberSourceLogServletUrl+"?merchantID="+document.getElementById("appId").value+"&jsonstring="+document.getElementById("json").value);
		$.jsonp({
        	"url": document.getElementById("cyberURL").value+"?merchantID="+document.getElementById("appId").value+"&jsonstring="+escape(document.getElementById("json").value)+"&callback=?",
	  		"timeout": 50000,
            "success": function(data, textStatus) {
						    document.getElementById("tokenField").value = data.token;
						    document.getElementById("bin").value = data.iin;
						    document.getElementById("result").value = data.rc;
						    document.getElementById("cardType").value = data.cardType;
						    updateResponse();
								}, 
			            "error": function(xOptions, textStatus) {
			            removeErrorMsg();
			            document.getElementById('error404').style.display = 'block';	
			            xOptions.abort();
			}
          });
	  }

		function updateResponse()
		{
		    var resultCode= document.getElementById("result").value;
		    var encryptedToken=document.getElementById("tokenField").value;
		    var alertStr="";
		    removeErrorMsg();
		    if(resultCode == '100')
		    {
		    var decryptCreditCardServletUrl = document.getElementById('decryptCreditCardServletUrl').value;
		   
			 	jQuery.getJSON(decryptCreditCardServletUrl+"?encryptedToken="+encryptedToken+"&bin="+document.getElementById("bin").value+"&result="+document.getElementById("result").value+"&creditCardType="+document.getElementById("cardType").value+"&callback=?",
				function(data) {
					if('referenceFlag' == creditFlag)
					{	
						document.getElementById("firstReferenceCardNumber").value = data.decrypt;
					}
					else
					{
						document.getElementById("creditCardNumber").value = data.decrypt;
						
					}
			   			formSubmit();
					
				});
		    } else {
						displayErrorMsg(resultCode);
			}
		}
		
		
	function formSubmit()
	{
		if('makePayment' == creditFlag){
   			document.onetimePayment.submit();
   		}   		
   		else if('changePayment'== creditFlag){
   			document.changeMonthlyPaymentMethodForm.submit();
   		}
   		else if('buyFlow' == creditFlag){
   			document.orderSummaryForm.submit();
   		}
   		else if ('creditCard' == creditFlag){
   			document.paymentForm.submit();
   		}
   		else if ('registerIR' == creditFlag){
   			document.paymentForm.submit();
   		}
   		else if ('referenceFlag' == creditFlag){
   			document.personalForm.submit();
   		}
   		else if('updatePayment' == creditFlag) {
   			document.creditCardForm.submit();
   		}
	}
	
	function displayErrorMsg(resultCode)
	{
		if(resultCode == '101')
	    {
	    	document.getElementById('error101').style.display = 'block';
	    }
	    else if(resultCode == '102')
	    {
	    	document.getElementById('error102').style.display = 'block';
	    }
	    else if(resultCode == '103')
	    {
	     	document.getElementById('error103').style.display = 'block';
	    }
	    else if(resultCode == '104')
	    {
	     	document.getElementById('error104').style.display = 'block';
	    }
	    else if(resultCode == '105')
	    {
	     	document.getElementById('error105').style.display = 'block';
	    }
	    else if(resultCode == '106')
	    {
	     	document.getElementById('error106').style.display = 'block';
	    }
	    else if(resultCode == '107')
	    {
	     	document.getElementById('error107').style.display = 'block';
	    }
	    else if(resultCode == '108')
	    {
	     	document.getElementById('error108').style.display = 'block';
	    }
	    else if(resultCode == '200')
	    {
	     	document.getElementById('error200').style.display = 'block';
	    }
	    else if(resultCode == '201')
	    {
	     	document.getElementById('error201').style.display = 'block';
	    }
	    else if(resultCode == '300')
	    {
	     	document.getElementById('error300').style.display = 'block';
	    }
	}

	
	function removeErrorMsg() {
		if(document.getElementById('error101') != null) {
			document.getElementById('error101').style.display = 'none';
		}
		if(document.getElementById('error102') != null) {
			document.getElementById('error102').style.display = 'none';
		}
		if(document.getElementById('error103') != null) {
			document.getElementById('error103').style.display = 'none';
		}
		if(document.getElementById('error104') != null) {
			document.getElementById('error104').style.display = 'none';
		}
		if(document.getElementById('error105') != null) {
			document.getElementById('error105').style.display = 'none';
		}
		if(document.getElementById('error106') != null) {
			document.getElementById('error106').style.display = 'none';
		}
		if(document.getElementById('error107') != null) {
			document.getElementById('error107').style.display = 'none';
		}
		if(document.getElementById('error108') != null) {
			document.getElementById('error108').style.display = 'none';
		}
		if(document.getElementById('error200') != null) {
			document.getElementById('error200').style.display = 'none';
		}
		if(document.getElementById('error201') != null) {
			document.getElementById('error201').style.display = 'none';
		}
		if(document.getElementById('error300') != null) {
			document.getElementById('error300').style.display = 'none';
		}
		if(document.getElementById('error404') != null) {
			document.getElementById('error404').style.display = 'none';
		}
		
		if('changePayment'== creditFlag || 'updatePayment'== creditFlag) {
			if(document.getElementById('error_trial2_1') != null) {
				document.getElementById('error_trial2_1').style.display = 'none';
			}
			if(document.getElementById('error_trial2_2') != null) {
				document.getElementById('error_trial2_2').style.display = 'none';
			}
			if(document.getElementById('error_trial2_3') != null) {
				document.getElementById('error_trial2_3').style.display = 'none';
			}
			if(document.getElementById('error_trial2_4') != null) {
				document.getElementById('error_trial2_4').style.display = 'none';
			}
		} else if('referenceFlag'== creditFlag) {
			for(var formElement = 0; formElement<=29; formElement++) {
				if(document.getElementById('clientSideErrorMessage'+formElement) != null) {
					document.getElementById('clientSideErrorMessage'+formElement).style.display = 'none';
				}
			}
			if(document.getElementById('firstRefCardNumberError') != null) {
				document.getElementById('firstRefCardNumberError').style.display = 'none';
			}
			if(document.getElementById('expiryDate1Error') != null) {
				document.getElementById('expiryDate1Error').style.display = 'none';
			}
			if(document.getElementById('firstVerificationNumError') != null) {
				document.getElementById('firstVerificationNumError').style.display = 'none';
			}
			if(document.getElementById('wouldYouLikeToUseError1') != null) {
				document.getElementById('wouldYouLikeToUseError1').style.display = 'none';
			}
			if(document.getElementById('secondReferenceCardHoldersFirstNameError') != null) {
				document.getElementById('secondReferenceCardHoldersFirstNameError').style.display = 'none';
			}
			if(document.getElementById('secondReferenceCardHoldersLastNameError') != null) {
				document.getElementById('secondReferenceCardHoldersLastNameError').style.display = 'none';
			}
			if(document.getElementById('secondRefCardNumberError') != null) {
				document.getElementById('secondRefCardNumberError').style.display = 'none';
			}
			if(document.getElementById('expiryDate2Error') != null) {
				document.getElementById('expiryDate2Error').style.display = 'none';
			}
			if(document.getElementById('secondVerificationNumError') != null) {
				document.getElementById('secondVerificationNumError').style.display = 'none';
			}
			if(document.getElementById('wouldYouLikeToUseError2') != null) {
				document.getElementById('wouldYouLikeToUseError2').style.display = 'none';
			}
		} else {
			if(document.getElementById('clientSideErrorMessage') != null) {
				document.getElementById('clientSideErrorMessage').style.display = 'none';
			}
		}
	}