
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;
		}
	}
	
		
	if(document.getElementById("secondaryCCNumberTemp") != null){
		var maskedCreditCard = "";
		if('referenceFlag' == creditFlag)
		{
			maskedCreditCard= document.getElementById("secondaryReferenceCCNumber").value;
		}
		if(maskedCreditCard != "")
		{
			maskedCreditCard = "************"+maskedCreditCard.substring(maskedCreditCard.length-4);
			document.getElementById("secondaryCCNumberTemp").value = maskedCreditCard;
		}
	}
	
}


function onLoadMaskCreditCard(){
	if(document.getElementById("creditCardNumberTemp")!= null) {
		if((document.getElementById("creditCardNumberTemp").value == "") && (document.getElementById("firstReferenceCardNumber").value!= ""))
		{
			var maskedCreditCard = "";
			maskedCreditCard= document.getElementById("firstReferenceCardNumber").value;
			if(maskedCreditCard != "")
			{
					maskedCreditCard = "************"+maskedCreditCard.substring(maskedCreditCard.length-4);
					document.getElementById("creditCardNumberTemp").value = maskedCreditCard;
			}
		}
	}
	
	if(document.getElementById("secondaryCCNumberTemp")!= null) {
		if((document.getElementById("secondaryCCNumberTemp").value == "") && (document.getElementById("secondaryReferenceCCNumber").value!= ""))
		{
			var maskedCreditCard = "";
			maskedCreditCard= document.getElementById("secondaryReferenceCCNumber").value;
			if(maskedCreditCard != "")
			{
				maskedCreditCard = "************"+maskedCreditCard.substring(maskedCreditCard.length-4);
				document.getElementById("secondaryCCNumberTemp").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 clearCardNumber2(){
	if(document.getElementById("secondaryCCNumberTemp") != null){
		var cardNumber = document.getElementById("secondaryCCNumberTemp").value ;
		if(document.getElementById("secondaryCCNumberTemp").value != "") {
			if(cardNumber.charAt(0) == '*'){
				document.getElementById("secondaryCCNumberTemp").value = "";
				if('referenceFlag' == creditFlag) {
					document.getElementById("secondaryReferenceCCNumber").value = "";
				}
			}
		}
	}
}
	
function encryptCard(){
			var pciCC = '';
			var orginalCardNumber = '';
			var originalccType = '';
			var ccType ='';
		    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('userPermission').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;
						//added for R1011
						//added this condition to avert null object java script exception in prepaid activation flow
						if('creditCard' == creditFlag){
						if(document.getElementById("CCNumber").value!=null){
							orginalCardNumber = document.getElementById("CCNumber").value;
						}
						if(document.getElementById("ccType").value!=null){
							originalccType = document.getElementById("ccType").value;
						}
						if(document.getElementById("creditCardType").value!=null){
							ccType = document.getElementById("creditCardType").value;
						}
						pciCC= document.getElementById('creditCardNumber').value;
						if(cardNumber!=orginalCardNumber || ccType!= originalccType){
							document.getElementById("isCreditCardChanged").value = "true";
						}else{
							document.getElementById("isCreditCardChanged").value = "false";
						}
						}
						/*code change for R1011 ends here */
						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 if(pciCC != '') {
								document.getElementById('creditCardNumber').value;
								formSubmit();
							 }else if(pciCC == '' && document.getElementById('removeCCnumber')!=null ){
							 		document.getElementById('creditCardNumber').value = document.getElementById('removeCCnumber').value;
							 		formSubmit();
							 }
							 else{
								formSubmit();
							}
						}
				}
				else
				{	
					formSubmit();
				}
				
			}
 }


function encryptCard2(){
	/* Added for secondary credit card - start */
	if(document.getElementById("useSecondCCForCreditCheck") != null	&& document.getElementById("useSecondCCForCreditCheck").checked){
		var cardNumber2 = document.getElementById("secondaryCCNumberTemp").value;
		if(cardNumber2 != '' && cardNumber2.charAt(0) != '*'){
			var rsa = new RSAKey();
			rsa.setPublic(document.getElementById('modulus').value,document.getElementById('exponent').value);
			var encriptCardNumber2 = rsa.encrypt(cardNumber2);
			document.getElementById('encriptCardNoValue2').value = hex2b64(encriptCardNumber2);
			stringify2();
		}else{
			encryptCard();
		}
	}
	/* Added for secondary credit card - end */					
 }		

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 stringify2(){
	if('referenceFlag' == creditFlag)
	{	
		 var CCtype2 = document.getElementById("secondaryCCReferenceType").value;
	}

    var JSONData2 = {
                   	 "pan"     : document.getElementById("encriptCardNoValue2").value,
                   	 "sig"     : document.getElementById("signature").value,
                     "si"      : document.getElementById("systemIndicator").value,
                     "type"    : CCtype2.substr(0,1),
                     "ts"      : document.getElementById("pciTime").value,
                     "service" : document.getElementById("serviceVal").value
                   };
	document.getElementById("json2").value = JSON.stringify(JSONData2);
	jsonCall2();
}


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('firstCC');
							}, 
		            "error": function(xOptions, textStatus) {
		            removeErrorMsg('firstCC');
		            document.getElementById('error404').style.display = 'block';	
		            xOptions.abort();
		}
      });
}


function jsonCall2(){
	   document.getElementById("tokenField2").value = "";
	   document.getElementById("bin2").value = "";
	   document.getElementById("result2").value = "";
	   var cyberSourceLogServletUrl = document.getElementById('cyberSourceLogServletUrl').value;
	   jQuery.getJSON(cyberSourceLogServletUrl+"?merchantID="+document.getElementById("appId").value+"&jsonstring="+document.getElementById("json2").value);
		$.jsonp({
        	"url": document.getElementById("cyberURL").value+"?merchantID="+document.getElementById("appId").value+"&jsonstring="+escape(document.getElementById("json2").value)+"&callback=?",
	  		"timeout": 50000,
            "success": function(data, textStatus) {
						    document.getElementById("tokenField2").value = data.token;
						    document.getElementById("bin2").value = data.iin;
						    document.getElementById("result2").value = data.rc;
						    document.getElementById("cardType2").value = data.cardType;
						    updateResponse2('secondCC');
								}, 
			            "error": function(xOptions, textStatus) {
			            removeErrorMsg('secondCC');
			            document.getElementById('secondCCerror404').style.display = 'block';	
			            xOptions.abort();
			}
          });
}

function updateResponse(creditCard)
	{
		var resultCode;
	    var encryptedToken;
	    
		resultCode= document.getElementById("result").value;
		encryptedToken=document.getElementById("tokenField").value;
	    var alertStr="";
	    removeErrorMsg(creditCard);
	    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,creditCard);
		}
	}

function updateResponse2(creditCard)
{
	var resultCode2;
    var encryptedToken2;
    
	resultCode2= document.getElementById("result2").value;
	encryptedToken2=document.getElementById("tokenField2").value;
	
    var alertStr="";
    removeErrorMsg(creditCard);
    if(resultCode2 == '100')
    {
    	var decryptCreditCardServletUrl = document.getElementById('decryptCreditCardServletUrl').value;
   
	 	jQuery.getJSON(decryptCreditCardServletUrl+"?encryptedToken="+encryptedToken2+"&bin="+document.getElementById("bin2").value+"&result="+document.getElementById("result2").value+"&creditCardType="+document.getElementById("cardType2").value+"&callback=?",
		function(data2) {
			if('referenceFlag' == creditFlag)
			{
				document.getElementById("secondaryReferenceCCNumber").value = data2.decrypt;
				encryptCard();
			}
		});
		
    } else {
				displayErrorMsg(resultCode2,creditCard);
				encryptCard();
	}
}	
		

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){
   			showLightBox1();
   		}
   		else if('updatePayment' == creditFlag) {
   			document.creditCardForm.submit();
   		}
	}
	
	function displayErrorMsg(resultCode,creditCard)
	{
		if(creditCard != null && creditCard == 'firstCC'){
			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';
		    }
		}else if(creditCard != null && creditCard == 'secondCC'){
			if(resultCode == '101')
		    {
		    	document.getElementById('secondCCerror101').style.display = 'block';
		    }
		    else if(resultCode == '102')
		    {
		    	document.getElementById('secondCCerror102').style.display = 'block';
		    }
		    else if(resultCode == '103')
		    {
		     	document.getElementById('secondCCerror103').style.display = 'block';
		    }
		    else if(resultCode == '104')
		    {
		     	document.getElementById('secondCCerror104').style.display = 'block';
		    }
		    else if(resultCode == '105')
		    {
		     	document.getElementById('secondCCerror105').style.display = 'block';
		    }
		    else if(resultCode == '106')
		    {
		     	document.getElementById('secondCCerror106').style.display = 'block';
		    }
		    else if(resultCode == '107')
		    {
		     	document.getElementById('secondCCerror107').style.display = 'block';
		    }
		    else if(resultCode == '108')
		    {
		     	document.getElementById('secondCCerror108').style.display = 'block';
		    }
		    else if(resultCode == '200')
		    {
		     	document.getElementById('secondCCerror200').style.display = 'block';
		    }
		    else if(resultCode == '201')
		    {
		     	document.getElementById('secondCCerror201').style.display = 'block';
		    }
		    else if(resultCode == '300')
		    {
		     	document.getElementById('secondCCerror300').style.display = 'block';
		    }
		}
	
	    if('referenceFlag'== creditFlag) {
		    formatCreditCardErrorMessages(creditCard);
	    }
	}

	
	function removeErrorMsg(creditCard) {
		if(creditCard != null && creditCard == 'firstCC'){
			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';
			}
		}else if(creditCard != null && creditCard == 'secondCC'){
			if(document.getElementById('secondCCerror101') != null) {
				document.getElementById('secondCCerror101').style.display = 'none';
			}
			if(document.getElementById('secondCCerror102') != null) {
				document.getElementById('secondCCerror102').style.display = 'none';
			}
			if(document.getElementById('secondCCerror103') != null) {
				document.getElementById('secondCCerror103').style.display = 'none';
			}
			if(document.getElementById('secondCCerror104') != null) {
				document.getElementById('secondCCerror104').style.display = 'none';
			}
			if(document.getElementById('secondCCerror105') != null) {
				document.getElementById('secondCCerror105').style.display = 'none';
			}
			if(document.getElementById('secondCCerror106') != null) {
				document.getElementById('secondCCerror106').style.display = 'none';
			}
			if(document.getElementById('secondCCerror107') != null) {
				document.getElementById('secondCCerror107').style.display = 'none';
			}
			if(document.getElementById('secondCCerror108') != null) {
				document.getElementById('secondCCerror108').style.display = 'none';
			}
			if(document.getElementById('secondCCerror200') != null) {
				document.getElementById('secondCCerror200').style.display = 'none';
			}
			if(document.getElementById('secondCCerror201') != null) {
				document.getElementById('secondCCerror201').style.display = 'none';
			}
			if(document.getElementById('secondCCerror300') != null) {
				document.getElementById('secondCCerror300').style.display = 'none';
			}
			if(document.getElementById('secondCCerror404') != null) {
				document.getElementById('secondCCerror404').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(creditCard != null && creditCard == 'firstCC'){
				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';
				}
				if(document.getElementById('dobError') != null) {
					document.getElementById('dobError').style.display = 'none';
				}
				if(document.getElementById('referalCodeErrorSpan') != null) {
					document.getElementById('referalCodeErrorSpan').style.display = 'none';
				}
			}
			formatCreditCardErrorMessages(creditCard);
		} else {
			if(document.getElementById('clientSideErrorMessage') != null) {
				document.getElementById('clientSideErrorMessage').style.display = 'none';
			}
		}
	}
