// pki.js
/*Start, Java script part of Applet Control do not change */   
   var appObj;
   
    function getAppletObject()
    {  
    	if(appObj == null || typeof(appObj) == "object"){
       	   appObj=document.applets['_enc_applet'];
        }
        return appObj;
    }
    
    function getEncryptionForm()
    {
        return document.forms['_PKIForm'];
    }    
   
   
   function clearCertSelection()
   {
        var appletObj=getAppletObject();
        return appletObj.clearCertSelection();
   }
   
   function generateMDHash(text)   
   {
        var appletObj=getAppletObject();
        return appletObj.generateMDHash(text);	
   }
   
   //Encryption Functions starts
   function encryptText(text)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptText(text);
   }
   
   function encryptTextEXK(text,pubKeyStr)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptTextEXK(text,pubKeyStr);
   }
   
   function encryptFile(fileName)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptFile(fileName);
   }
   
   function encryptFileEXK(fileName,pubKeyStr)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptFileEXK(fileName,pubKeyStr);
   }
   
   
   function encryptFileToFile(fileName)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptFileToFile(fileName);
   }
   
   function encryptFileToFileEXK(fileName,pubKeyStr)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptFileToFileEXK(fileName,pubKeyStr);
   }
   
   function encryptURLData(url)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptURLData(url);
   }
   
   function encryptURLDataEXK(url,pubKeyStr)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptURLDataEXK(url,pubKeyStr);
   }
   
   function encryptURLToFile(url)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptURLToFile(url);
   }
   
   function encryptURLToFileEXK(url,pubKeyStr)
   {
        var appletObj=getAppletObject();
        return appletObj.encryptURLToFileEXK(url,pubKeyStr);
   }
   //Encryption Functions ends
   
    
   
   //Decryption Functions starts
   function decryptText(text)
   {
	   selectCertForEncAndDec("DEC"); 
	   var appletObj=getAppletObject();
       return appletObj.decryptText(text);
	   //selectCertForEncAndDec(text);
   }
   
   function decryptLocalFileDataToLocalFile(localFilePath)
   {
        var appletObj=getAppletObject();
        return appletObj.decryptLocalFileDataToLocalFile(localFilePath);
   }
   
   //Signing functions starts     
   function signText(text)
   {
        var appletObj=getAppletObject();
        //alert("appletObj:"+appletObj);
        return appletObj.signText(text);
   }
   
   function decryptURLDataToLocalFile(url)
   {
        var appletObj=getAppletObject();
        return appletObj.decryptURLDataToLocalFile(url);
   }
   //Decryption Functions ends
   

   
   function signFile(fileName)
   {
        var appletObj=getAppletObject();
        return appletObj.signFile(fileName);
   }
   
   function signURLData(url)
   {
        var appletObj=getAppletObject();
        return appletObj.signURLData(url);
   }
   //Signing functions Ends
   
   
   //Verification functions starts
   function verifyText(text,hash,pubkeyString)
   {
        var result=false;
        var appletObj=getAppletObject();
        result = appletObj.verifyText(text,hash,pubkeyString);
        return result;
   }
   function verifyDataFromURL(url,hash,pubkeyString)
   {
        var result=false;
        var appletObj=getAppletObject();
        result = appletObj.verifyFormURL(url,hash,pubkeyString);
        return result;
   }
   
   function verifyFile(file,hash,pubkeyString)
   {
        var result=false;
        var appletObj=getAppletObject();
        result = appletObj.verifyFile(file,hash,pubkeyString);
        return result;
   }
   
   function verifyTextWithDialog(text,hash,certStr)
   {
        var result=false;
        var appletObj=getAppletObject();
        result = appletObj.verifyTextWithDialog(text,hash,certStr);
        return result;
   }
   function verifyURLWithDialog(url,hash,certStr)
   {
        var result=false;
        var appletObj=getAppletObject();
        result = appletObj.verifyURLWithDialog(url,hash,certStr);
        return result;
   }
   
   function verifyFileWithDialog(file,hash,certStr)
   {
	   
        var result=false;
        var appletObj=getAppletObject();
        result = appletObj.verifyFileWithDialog(file,hash,certStr);
        return result;
   }
   
   //Verification functions ends
   
   //Start ,To get Information for certificate Selected from POPUP.
   function getClientPublicKeyString()
   {
        var appletObj=getAppletObject();
        return appletObj.getClientPublicKeyString();
   }
   function getClientCertString()
   {
        var appletObj=getAppletObject();
        return appletObj.getClientCertString();
   }
   function getClientCertSrNo()
   {
        var appletObj=getAppletObject();
        return appletObj.getClientCertSrNo();
   }
   function getClientThumbPrint()
   {
        var appletObj=getAppletObject();
        return appletObj.getClientThumbPrint();
   }

   function getClientCertAlias()
   {
        var appletObj=getAppletObject();
        return appletObj.getClientCertAlias();	
   }
   //Ends ,To get Information for certificate Selected from POPUP.
   
   //Start ,To get Information from certificate string .
   function getSrNoFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getSrNoFromCertStr(certStr);	
   }
   
   function getThumbprintFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getThumbprintFromCertStr(certStr);	
   }
   
   function getSubjectDNFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getSubjectDNFromCertStr(certStr);	
   }
   
   function getIssuerDNFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getIssuerDNFromCertStr(certStr);	
   }
   
   function getExpiryDateFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getExpiryDateFromCertStr(certStr);	
   }
   
   function getAkiFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getAkiFromCertStr(certStr);	
   }
   
   function getSkiFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getSkiFromCertStr(certStr);	
   }
   
   function getClassFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getClassFromCertStr(certStr);	
   }
   
   function getPublicKeyStrFromCertStr(certStr)   
   {
        var appletObj=getAppletObject();
        return appletObj.getPublicKeyStrFromCertStr(certStr);	
   }
   function getKeyUsageFromCertStr(certStr){
        var appletObj=getAppletObject();
   	return appletObj.getKeyUsageFromCertStr(certStr);
   }
   function signDoc(){
    	//alert("Signing document.");
		var signData = signText("dummy");
   }
  function getFmtExpiryDateFromCertStr(certStr,format)   
  {
        var appletObj=getAppletObject();
        return appletObj.getFmtExpiryDateFromCertStr(certStr,format);	
  }
  function getKeyUsageFromCertStr(certStr){
        var appletObj=getAppletObject();
   	return appletObj.getKeyUsageFromCertStr(certStr);
  }
  function displayCertInfo(certStr)   
  {
        var appletObj=getAppletObject();
        return appletObj.displayCertInfo(certStr);	
  }
  function verifyDocument(text){
  	var hash = document.getElementById("digitalCert.signHash").value;
  	
	var certStr = document.getElementById("digitalCert.clientCertString").value;
	
	var pubKey = document.getElementById("digitalCert.publicKey").value;
	
	var userDigitalCertId = document.getElementById("userDigitalCertId").value;
	//alert("text:"+text+" hash:"+hash+" certStr:"+certStr);
	var result=true;
  	if(userDigitalCertId=='0'){
		showError("C");
	}else{
			result = verifyTextWithDialog(text,hash,certStr);
			
	}
	return result;
  }
  function verifyDocumentWithHash(text,hash){
		var pubKey = document.getElementById("digitalCert.publicKey").value;
		var certStr = document.getElementById("digitalCert.clientCertString").value;
		var userDigitalCertId = document.getElementById("userDigitalCertId").value;
		if(userDigitalCertId=='0'){
			showError("C");
		}else{
				result = verifyTextWithDialog(text,hash,certStr);
				
		}
		return result;
		
	  }
function showCert()
{
	
	var obj=document.getElementById("verifyImage");
	var left = findPosX(obj);
	var top = findPosY(obj);
	window.displayCertificate.style.left=findPosX(obj)-50;
	window.displayCertificate.style.top=findPosY(obj);
	window.displayCertificate.style.visibility="visible";
}

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (1) {
            curleft+=obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.x) {
        curleft+=obj.x;
    }
    return curleft;
}

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop+=obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.y) {
        curtop+=obj.y;
    }
    return curtop;
}



function hideCert()
{
	window.displayCertificate.style.visibility="hidden";
}
function showError(flag){
	var obj=document.getElementById("verifyImage");
	var left = findPosX(obj);
	var top = findPosY(obj);
	window.displayCertificateError.style.left=findPosX(obj)-110;
	window.displayCertificateError.style.top=findPosY(obj);
	window.displayVerificationError.style.left=findPosX(obj)-100;
	window.displayVerificationError.style.top=findPosY(obj);
	if(flag == "C")//invalid certificate
		window.displayCertificateError.style.visibility="visible";
	if(flag == "V")//invalid signature
		window.displayVerificationError.style.visibility="visible";
}
function hideError()
{
	window.displayCertificateError.style.visibility="hidden";
	window.displayVerificationError.style.visibility="hidden";
}
function signingQuotation(key,element)
{
	//alert("key.. : "+ key);	
	var valid = true;
	var enctext = signText(key);
	if(enctext==null || enctext==''){
		valid  = false;
		alert("Exception Signing the Quotation :-"  + valid);
		return valid;	  	  
	}
	if(getClientPublicKeyString() != null){
		//alert("11");
		var clientCertString = getClientCertString();
		
		document.getElementById("digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertString").value = clientCertString;
		document.getElementById("digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	//alert("key.. : "+key);
	document.getElementById("digitalCert.signHash").value = enctext;
	return valid;
}

function signingAllQuotation(signKeys, element, digitalCertPrefix){
	var valid = true;
	var signHash = "";
	
	var appletObj = getAppletObject();    
	for(var i = 0; i < signKeys.length; i++){
		signHash = appletObj.signText(signKeys[i]);
		
		if(signHash == null || signHash == ""){
			valid  = false;
			alert("Exception Signing the Quotation :-"  + valid);
			return valid;	  	  
		}		
		document.getElementById(element+"["+i+"]").value = signHash;
	}
    
	if(getClientPublicKeyString() != null){		
		var clientCertString = getClientCertString();
		
		document.getElementById(digitalCertPrefix + ".publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById(digitalCertPrefix + ".clientCertString").value = clientCertString;
		document.getElementById(digitalCertPrefix + ".certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById(digitalCertPrefix + ".expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById(digitalCertPrefix + ".thumbPrint").value = getThumbprintFromCertStr(clientCertString);
		document.getElementById(digitalCertPrefix + ".clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}
	
	return valid;
}


function signingQuotationForDiscussion(key,element)
{
	//alert("key.. : "+ key);	
	
	
	
	var valid = true;
	var enctext = signText(key);
	if(enctext==null || enctext==''){
		valid  = false;
		alert("Exception Signing the Quotation :-"  + valid);
		return valid;	  	  
	}
	if(getClientPublicKeyString() != null){
		//alert("11");
		var clientCertString = getClientCertString();
		
		document.getElementById("qtn.digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("qtn.digitalCert.clientCertString").value = clientCertString;
		document.getElementById("qtn.digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("qtn.digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("qtn.digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString);
		document.getElementById("qtn.digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	//alert("key.. : "+key);
	document.getElementById("qtn.digitalCert.signHash").value = enctext;
	return valid;
}


function signingQuotationForAttandance(key,element)
{
	//alert("key.. : "+ key);	
	var valid = true;
	var enctext = signText(key);
	if(enctext==null || enctext==''){
		valid  = false;
		alert("Exception Signing the Quotation :-"  + valid);
		return valid;	  	  
	}
	if(getClientPublicKeyString() != null){
		//alert("11");
		var clientCertString = getClientCertString();
		
		document.getElementById("attn.digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("attn.digitalCert.clientCertString").value = clientCertString;
		document.getElementById("attn.digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("attn.digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("attn.digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString);
		document.getElementById("attn.digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	//alert("key.. : "+key);
	document.getElementById("attn.digitalCert.signHash").value = enctext;
	return valid;
}


function signDocument(text){
	//alert("text1:"+text);
	var valid = true;
	var enctext = signText(text);
	if(enctext==null || enctext==''){
		valid  = false;
		alert("Exception Signing the document:-"  + valid);
		return valid;	  	  
	}
	//alert(enctext);
	if(getClientPublicKeyString() != null){
		var clientCertString = getClientCertString();
		
		document.getElementById("digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertString").value = clientCertString;
		document.getElementById("digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString)
		document.getElementById("digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	
	document.getElementById("digitalCert.signHash").value = enctext;
	return valid;
}
function signDocumentAndAsingnValue(text,element){
	var valid = true;
	var enctext = signText(text);
	if(enctext==null || enctext==''){
		valid  = false;
		return valid;	  	  
	}
	if(getClientPublicKeyString() != null){
		var clientCertString = getClientCertString();
		//alert("clientCertString:-" + clientCertString);
		//displayCertInfo(clientCertString);
		document.getElementById("digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertString").value = clientCertString;
		document.getElementById("digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString)
		document.getElementById("digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	document.getElementById(element).value = enctext;
	return valid;
}
function signAttachmentFile(fileName){
	var valid = true;
	//alert("warning");
	var signVal = signFile(fileName);
	if(signVal==null || signVal==''){
		valid  = false;
		return valid;	  	  
	}
	if(getClientPublicKeyString() != null){
		var clientCertString = getClientCertString();
		//alert("clientCertString:-" + clientCertString);
		//displayCertInfo(clientCertString);
		document.getElementById("digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertString").value = clientCertString;
		document.getElementById("digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	document.getElementById("digitalCert.signHash").value = signVal;
	return valid;
}
function signFileAndAssignValue(fileName,element){
	//alert("element "+element);
	var valid = true;
	if(navigator.userAgent.indexOf("Firefox") != -1 ) 
    {	
		jConfirm('<font color="red">Hi FireFox User,<br>Please keep the uploaded files manually in <b>"C:/Temp/"</b> directory for file signing. Otherwise file singing will not work.</font>', 'DONE', 'NOT DONE',
				function(r) {		   
		    if(r){
		    	fileName = "C:\\Temp\\" + fileName;
		    	valid = signFileAndAssignValueLogic(fileName,element);
		    }
		    else{
		    	   jAlert('Please add the uploaded files in <b>"C:/Temp/"</b> directory for file signing','OK');
		    	   valid = false;
				    return valid;
		    }
		});
		           
    }
	else{
		valid = signFileAndAssignValueLogic(fileName,element);
	}
	return valid;
}
function signFileAndAssignValueLogic(fileName,element){
	var valid = true;
	var signVal = signFile(fileName);
	//alert("signVal" +signVal);
	//alert("Before::"+$("input[name='work.currentFlow.attachments[0].fileName']").val());
	if(signVal==null || signVal==''){
		valid = false;
		alert("Exception Signing the file:-"  + valid);
		return valid;	  	  
	}
	if(getClientPublicKeyString() != null){
		var clientCertString = getClientCertString();
		//alert("clientCertString:-" + clientCertString);
		//displayCertInfo(clientCertString);
		document.getElementById("digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertString").value = clientCertString;
		document.getElementById("digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString);
		document.getElementById("digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	//alert("settingElement "+"document.getElementById("+element+").value");
	//alert("elementName "+element);
	document.getElementById(element).value = signVal;
	//alert("1233455567890125"+element);
	//alert("in pki3::"+$("#attachTab tr:eq(2)").html());
	//alert ($("input[name='attachments[0].digitalCert.signHash']").val());
	//alert($("input[name='work.currentFlow.attachments[0].fileName']").val());
	//alert("1234567:"+element);
	//alert($("input[name='"+element+"']").val());
	//var htmlVar=document.getElementById(element).parentNode.parentNode.innerHTML;
	//alert($(htmlVar).find("td:last-child").html());
	//alert("INNER HTMLLL12356:"+document.getElementById(element).parentNode.parentNode.lastChild.innerHTML);
	
	if(valid){
		if(document.getElementById(element).parentNode.parentNode.lastChild.innerHTML.indexOf("tickClass")<0){
			document.getElementById(element).parentNode.parentNode.lastChild.innerHTML=document.getElementById(element).parentNode.parentNode.lastChild.innerHTML+"<div class='tickClass'> &nbsp;</div>";
	}
	}
	return valid;
}
function signZipAndAssignValue(zipName,element){
	//alert("element "+element);
	var valid = true;
	var signVal = signText(zipName);
	//alert("signVal" +signVal);
	if(signVal==null || signVal==''){
		valid  = false;
		alert("Exception Signing the file:-"  + valid);
		return valid;	  	  
	}
	if(getClientPublicKeyString() != null){
		var clientCertString = getClientCertString();
		//alert("clientCertString:-" + clientCertString);
		displayCertInfo(clientCertString);
		document.getElementById("zipAttachment.digitalCert.publicKey").value = getPublicKeyStrFromCertStr(clientCertString);
		document.getElementById("zipAttachment.digitalCert.clientCertString").value = clientCertString;
		document.getElementById("zipAttachment.digitalCert.certSerialNo").value = getSrNoFromCertStr(clientCertString);
		document.getElementById("zipAttachment.digitalCert.expiryDate").value = getFmtExpiryDateFromCertStr(clientCertString,'yyyy-MM-dd HH:mm:ss');
		document.getElementById("zipAttachment.digitalCert.thumbPrint").value = getThumbprintFromCertStr(clientCertString)
		document.getElementById("zipAttachment.digitalCert.clientCertSubject").value = getSubjectDNFromCertStr(clientCertString);
	}else{
		valid  = false;
	}	  
	//alert("settingElement "+"document.getElementById("+element+").value");
	document.getElementById(element).value = signVal;
	//alert ("here 1");
	return valid;
}


function encryptFileAttachment(fileName,element,pubKey){
	var valid = true;
	//alert("fileNamee>>"+fileName+"<<element>>"+element);
	selEncryptionCert();
	var pubKeyStr = document.getElementById("encDigitalCert.publicKey").value;
	//alert("pubKeyStr>>"+pubKeyStr);
	var encFile = encryptFileToFileEXK(fileName,pubKeyStr);
	//alert("encFile>>"+encFile);
	if(encFile==null || encFile==''){
		//alert("encFile is null");
		valid  = false;
		return valid;	  	  
	}	  
	//alert("Target element "+document.getElementById(element).value);
	document.getElementById(element).value = encFile;
	//alert("Target element 2"+document.getElementById(element).value);
	return valid;
}
function decryptFileFromServerUrl(path){
	var valid = true;
	alert ("path "+path);
	var decryptedFilePath = decryptURLDataToLocalFile(path);
	if(decryptedFilePath==null || decryptedFilePath==''){
				alert("Exception occur in decrypting Element");
				valid = false;
				return valid;
			}

}
function encryptElement(element,pubKey){
	var valid = true;
	try {
		var elementVal = document.getElementById(element).value;
		var encElement = 'enc' + element.charAt(0).toUpperCase()+ element.substring(1,element.length);
		var encValue ='X';
		if(!(elementVal==null || elementVal=='')){
			 encValue = encryptTextEXK(elementVal,pubKey);
			if(encValue==null || encValue==''){
				alert("Exception occur Encrypting Element");
				valid = false;
				return valid;
			}
			document.getElementById(encElement).value = encValue;	
		}	
	}catch(e){
		alert("Exception Encripting Element Error:"+e.name + "<<elementVal>>" + elementVal +"<encElement>>" + encElement);	
		valid = false;
	}finally{
		return valid;
	}	
}
function encryptElementAndAsingnValue(element,encEle,pubKey){
	var valid = true;
	try {
		var elementVal = document.getElementById(element).value;
		var encElement = encEle;
		var encValue ='X';
		if(!(elementVal==null || elementVal=='')){
			 encValue = encryptTextEXK(elementVal,pubKey);
			if(encValue==null || encValue==''){
				alert("Exception occur Encripting Element");
				valid = false;
				return valid;
			}
			document.getElementById(encElement).value = encValue;
		}else{
			document.getElementById(encElement).value = "";	
		}		
	}catch(e){
		alert("Exception occur Encripting Element Error:" +e.name + "<<elementVal>>" + elementVal +"<encElement>>" + encElement);	
		valid = false;
	}finally{
		return valid;
	}	
}
function decryptElement(element){
	var valid = true;
	try {
		var elementVal = document.getElementById(element).value;
		var decElement = element.charAt(3).toLowerCase()+ element.substring(4,element.length);
		//alert("decElement:-"+decElement);
		var decValue ='X';
		if(!(elementVal==null || elementVal=='')){
			decValue = decryptText(elementVal);
			document.getElementById(decElement).value = decValue;	
		}	
	}catch(e){
		alert("Exception occur deccripting Element Error:" +e.name + "<<elementValue>>" + elementVal +"<<decEle>>" + decElement);	
		valid = false;
		valid = false;
	}finally{
		return valid;
	}
}
function decryptElementAndAsingnValue(element,decEle){
	var valid = true;
	try {
		var elementVal = document.getElementById(element).value;
		var decValue ='X';
		if(!(elementVal==null || elementVal=='')){
			decValue = decryptText(elementVal);
			//alert("element: " + decEle + "-" + decValue);
			document.getElementById(decEle).value = decValue;	
		}
		var spanEle = document.getElementById(decEle+"Span");
		if(null!=spanEle){
			spanEle.innerHTML = decValue;
		}
	}catch(e){
		alert("Exception occur deccripting Element Error:" +e.name + "<<element>>" + element +"<<decEle>>" + decEle);	
		valid = false;
	}finally{
		return valid;
	}
}
function getKeyUsageFromCertStr(certStr){
        var appletObj=getAppletObject();
   	return appletObj.getKeyUsageFromCertStr(certStr);
   }
//End ,To get Information from certificate string .
function verifyFile(imageName,isVerified,userDigitalCertId){
  	if(userDigitalCertId=='0'){
  		showErrorForFile("C",imageName);
	}else{
			if(isVerified=='true')
			{	
				showCertForFile(imageName);
			}else{
				showErrorForFile("V",imageName);				
			}
	}
	return isVerified;
}
function showCertForFile(imageName)
{
	var obj=document.getElementById(imageName);
	var left = findPosX(obj);
	var top = findPosY(obj);
	window.displayCertificate.style.left=findPosX(obj)-200;
	window.displayCertificate.style.top=findPosY(obj);
	window.displayCertificate.style.visibility="visible";
}
function showErrorForFile(flag,imageName){
	var obj=document.getElementById(imageName);
	var left = findPosX(obj);
	var top = findPosY(obj);
	window.displayCertificateError.style.left=findPosX(obj)-110;
	window.displayCertificateError.style.top=findPosY(obj);
	window.displayVerificationError.style.left=findPosX(obj)-100;
	window.displayVerificationError.style.top=findPosY(obj);
	if(flag == "C")//invalid certificate
		window.displayCertificateError.style.visibility="visible";
	if(flag == "V")//invalid signature
		window.displayVerificationError.style.visibility="visible";
}
function alertQTN(value,actualKey){
	
	//alert("Value:"+value+" actual key:"+actualKey);
}
function alertECN(value){
	//alert("Value:"+value);
}
function descryptRandomKey(text){
	appObj=null;
	decryptText(text);
}

function encryptTextByPubKey(txt,pubKey){
	var encValue ='X';
	try {
			 encValue = encryptTextEXK(txt,pubKey);
			if(encValue==null || encValue==''){
				alert("Exception occur Encripting Element");
				valid = false;
			}
			
			
	}catch(e){
		alert("Exception occur in encryptTextByPubKey Encripting Element Error:" +e.name + "<<elementVal>>" + elementVal +"<encElement>>" + encElement);	
		valid = false;
	}finally{
		return encValue;
	}
	
}
function clearAppObject(text){
	appObj=null;
}

function selectCertForEncAndDec(text)
   {
        var appletObj=getAppletObject();
        return appletObj.selectCertForEnc_Dec(text);
   }