
function showAlert()
{
    alert("adsads");
}
function SignDataForm(signOnClient,dataToSign, dataSigned)
{ 
  //alert(dataToSign.value);
     
    
	dataToSign.value = trimStr(dataToSign.value);
	
	  
	if (dataToSign.value != "") {
		var signed_data = [""];
		var signResult = -1;
		var dataToSign_text = normalizeNewLines(dataToSign.value);
		
	 dataToSign.value = encodeStr(dataToSign_text);
		 
		 dataSigned.value = "";
		 
		 if(signOnClient==false) 
                 return false;
      
		 
  

		var dataSigned_text = "";
		
		

      	CAPICOM_DETACHED_SIGNATURE=true;

		if (window.crypto && window.crypto.signText) {
			signResult = SignDataCrypto(dataToSign_text, signed_data);
		} else {
			signResult = SignDataCAPICOM(dataToSign_text, signed_data);
		}
		
		switch (signResult) {
		case 0:  //OK
			dataSigned_text = PKCS7_BASE64_HEADER + "\r\n" + signed_data[0];
			if (dataSigned_text.charAt(dataSigned_text.length - 1) != '\n') {
				dataSigned_text += "\r\n";
			}
			dataSigned.value = dataSigned_text + PKCS7_BASE64_FOOTER;
			break;
			
		case 1:
			alert(msg_sign_error_capicom_notFound);
			break;
			
		case 2:
			alert(msg_sign_error_capicom_notLoad);
			break;
			
		case 3: //no cert selected
			break;
			
		case 4:
			alert(msg_sign_error_capicom_internalError + ' ' + msg_sign_error_capicom_additionalInfo + ' ' + signed_data[0]);
			break;
			
		case 10: //error:noMatchingCert
			alert(msg_sign_error_crypto_noMatchingCert);
			break;
			
		case 11: //error:userCancel
			break;
			
		case 12: //error:internalError
			alert(msg_sign_error_crypto_internalError);
			break;
		}
	}
	
	return false;
}

function CoSignDataForm(dataSigned, dataCoSigned)
{
	dataSigned = trimStr(dataSigned.value);
	
	if (dataSigned != "") {
		if (dataSigned.length > PKCS7_BASE64_HEADER.length + PKCS7_BASE64_FOOTER.length) {
			if ((dataSigned.substr(0, PKCS7_BASE64_HEADER.length) == PKCS7_BASE64_HEADER) && 
				(dataSigned.substr(dataSigned.length - PKCS7_BASE64_FOOTER.length) == PKCS7_BASE64_FOOTER)) {
				var pkcs7data_base64 = trimStr(dataSigned.substr(PKCS7_BASE64_HEADER.length, dataSigned.length - (PKCS7_BASE64_HEADER.length + PKCS7_BASE64_FOOTER.length)));
				
				var coSigned_data = [""];
				var coSignResult = -1;
				
				var dataCoSigned_text = "";
				dataCoSigned.value = dataCoSigned_text;
				
				if (window.crypto && window.crypto.signText) {
				} else {
					coSignResult = CoSignDataCAPICOM(pkcs7data_base64, coSigned_data);
				}
				
				switch (coSignResult) {
				case 0:  //OK
					dataCoSigned_text = PKCS7_BASE64_HEADER + "\r\n" + coSigned_data[0];
					if (dataCoSigned_text.charAt(dataCoSigned_text.length - 1) != '\n') {
						dataCoSigned_text += "\r\n";
					}
					dataCoSigned.value = dataCoSigned_text + PKCS7_BASE64_FOOTER;
					break;
					
				case 1:
					alert(msg_sign_error_capicom_notFound);
					break;
					
				case 2:
					alert(msg_sign_error_capicom_notLoad);
					break;
					
				case 3: //no cert selected
					break;
					
				case 4:
					alert(msg_sign_error_capicom_internalError + ' ' + msg_sign_error_capicom_additionalInfo + ' ' + coSigned_data[0]);
					break;
					
				case 10: //error:noMatchingCert
					alert(msg_sign_error_crypto_noMatchingCert);
					break;
					
				case 11: //error:userCancel
					break;
					
				case 12: //error:internalError
					alert(msg_sign_error_crypto_internalError);
					break;
				}
			}
		}
	}
	
	return false;
}

function normalizeNewLines(s) {
	var ws_cr = String.fromCharCode(13);
	
	var v_length = s.length;
	
	if (v_length > 0) {
		var iTemp = v_length - 1;
		
		while (iTemp > -1) {
			if (s.charAt(iTemp) == ws_cr) {
				s = s.substring(0, iTemp) + s.substring(iTemp + 1);
			}
			
			iTemp = iTemp - 1;
		}
	}
	
	return s;
}

function trimStr(s) {
	if (s.length < 1) {
		return "";
	}
	
	s = rightTrimStr(s);
	s = leftTrimStr(s);
	if (s == "") {
		return "";
	} else {
		return s;
	}
} //End Function

function rightTrimStr(s) {
	var ws_space = String.fromCharCode(32);
	var ws_cr = String.fromCharCode(13);
	var ws_lf = String.fromCharCode(10);
	var ws_tab = String.fromCharCode(9);
	
	var v_length = s.length;
	var strTemp = "";
	if (v_length < 0) {
		return "";
	}
	var iTemp = v_length - 1;
	
	while (iTemp > -1) {
		if ((s.charAt(iTemp) == ws_space) || (s.charAt(iTemp) == ws_cr) || (s.charAt(iTemp) == ws_lf) || (s.charAt(iTemp) == ws_tab)) {
		} else {
			strTemp = s.substring(0, iTemp + 1);
			break;
		}
		iTemp = iTemp - 1;
	} //End While

	return strTemp;
} //End Function

function leftTrimStr(s) {
	var ws_space = String.fromCharCode(32);
	var ws_cr = String.fromCharCode(13);
	var ws_lf = String.fromCharCode(10);
	var ws_tab = String.fromCharCode(9);
	if (v_length < 1) {
		return "";
	}
	var v_length = s.length;
	var strTemp = "";

	var iTemp = 0;

	while (iTemp < v_length) {
		if ((s.charAt(iTemp) == ws_space) || (s.charAt(iTemp) == ws_cr) || (s.charAt(iTemp) == ws_lf) || (s.charAt(iTemp) == ws_tab)) {
		} else {
			strTemp = s.substring(iTemp, v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
	
	return strTemp;
} //End Function

function encodeStr(s) {
 
 
    s1=s;
    do
    {   s=s1;
        s1 = s.replace("<","&lt;");
    }while(s!=s1);
    
     s1 = s;    
    do
    {   s=s1;
        s1 = s.replace(">","&gt;");
    }while(s!=s1);
    	
 return s;
} //End Function

	function prepareValues( merchantId,clientId,amount,currencyCode,grounds, signOnClient, dataToSign, dataSigned, date, deadline)
  	{
		paymentRequestXml(signOnClient,dataToSign, dataSigned,merchantId,clientId,amount,currencyCode,date, deadline, grounds);
  	}
   
function paymentRequestXml(signOnClient,dataToSign, dataSigned,merchantId,clientId,amount,currencyCode,date,deadline,grounds )
{
   dataToSign.value=
   "<?xml version='1.0' encoding='utf-8'?><onlineShoppingPaymentRequest><merchantId>"+merchantId+"</merchantId><clientId>"+clientId+"</clientId><amount>"+amount+"</amount><currencyCode>"+currencyCode+"</currencyCode><date>"+date+"</date><onGroundsOf>"+grounds+"</onGroundsOf><deadline>"+deadline+"</deadline></onlineShoppingPaymentRequest>";
   
     SignDataForm(signOnClient,dataToSign, dataSigned);
     
  
}
 
function InformationRequestXml(signOnClient,dataToSign, dataSigned,merchantId,paymentId )
{

   dataToSign.value= "<?xml version='1.0' encoding='utf-8'?><paymentInformationRequest><merchantId>"+merchantId+"</merchantId><paymentId>"+paymentId+"</paymentId></paymentInformationRequest>";
    SignDataForm(signOnClient,dataToSign, dataSigned,signOnClientInput);
}

function SearchRequestXml(signOnClient,dataToSign, dataSigned, merchantId,paymentId )
{
        
  var xml = "<?xml version='1.0' encoding='utf-8'?><paymentSearchRequest><merchantId>"+merchantId+"</merchantId>";
   
   if(paymentId>0)
    xml +=   "<paymentId>"+paymentId+"</paymentId>";
    
   xml +="</paymentSearchRequest>";
   
    dataToSign.value = xml;
    
   SignDataForm(signOnClient,dataToSign, dataSigned); 
}
