//CLIENT SIDE ENCRYPTION WORK STARTS FROM HERE
	//############################################
	var CAPICOM_ENCODE_BASE64 = 0;
	var CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
	var CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE=1;
		
	
		var emessage=true;
		var errormessage="";
			function IsDSignInstalled()
			{
				if(typeof(C1Signer) == "object")
				{
					try
					{
						if((C1Signer.object != null) )
						{
     						return true;
						}
     					else
     					{
     						return false;
						}
     				}
     				catch(e)
     				{
     					return false;
     				}
				}
				else
					return false;
			}
	function SelectCertificate(strVal,tdate)
	{
		/*if(IsDSignInstalled()==false)
		{
			var strMessage="Secure Login failed.\nThe most likely reasons for the failure are:\n\t· Operating System other than WINNT, Windows-XP, Window-2000, and Windows-98.\n\t· IE Browser version is below 5.5\n\t· IE Browser security settings.\n\t·The user is a restricted user.\n For Additional information please click on PKI login help link."
			alert(strMessage);
			return false;
		}*/
	try{	
		var obj;
		var retval;
		obj=new ActiveXObject("C1Signer.Sign");
		obj.setCertClassCheck(1);
		obj.setCaption("Steel Authorities of India");
		retval=obj.SelectCertificate(strVal,tdate);
		if(obj.GetCertFound()==false)
		{
			obj = null;
			return false;
		}
		else
		{
			var strCA;
			strCA = obj.GetIssuerDetails();
			if (checkIssuer(strCA) == false) return false;
			obj = null;
			return retval;
		}
		}
		catch(e)
		{
			alert(e.message);
		}
	}
	//***************************************************************************
	function GetSignature_Login(strVal,tday)
	{
		try
		{
			var currdt;
			var retval;
			var obj;
			obj=new ActiveXObject("C1Signer.Sign");
			obj.setCaption("Steel Authorities of India");
			
			var retval=obj.GetSignature(strVal,"CCA INDIA",tday,2);
			
			if(obj.GetCertFound()==false)
			{
				if(retval=="false")
				{
				 alert(obj.GetErrorMessage());
				}
				obj = null;
				return false;
			}
			else
			{
				var keyarr;
				var retval1;
			
				var strRet;
			
				if(typeof(retval) == "object")
				{
		
					strRet = obj.ExpiryCheck(retval);
				
				
					if (strRet!="false")
					{
						var strArr;
						var validFrom,validTo;
						var retVal;
						strArr = strRet.split("~");
						validFrom = strArr[0];
						validTo = strArr[1];
					
						if (getTimeDiff(tday,validTo,30)==false)	
							return false;
					}
					else
					{
						alert(obj.GetErrorMessage());
						obj = null;
						return false;
					}
				}		
				else
				{	alert("in else")
					alert(obj.GetErrorMessage());
					obj = null;
					return false;
				}
			
				var strCA;
				strCA = obj.GetIssuerDetails();
				if (checkIssuer(strCA) == false) return false;

			
				retval1=obj.GetFullDetails(retval);
				keyarr=retval1.split("~");
				obj = null;
				return keyarr;
			}
			
		}
		catch(ex)
		{
			alert("There is some Problem."+" "+ ex.message);
			obj = null;
			return false;

		}
	}


	function GetSignature_Buyer(strVal,tday,tOpen)
	{
		try
		{
			var currdt;
			var retval;
			var obj;
			obj=new ActiveXObject("C1Signer.Sign");
			obj.setCaption("Steel Authorities of India");
		
			var retval=obj.GetSignature(strVal,"CCA INDIA",tday,2);
		
			if(obj.GetCertFound()==false)
			{
				if(retval=="false")
				{
				alert(obj.GetErrorMessage());
				}
				obj = null;
				return false;
			}
			else
			{
				var keyarr;
				var retval1;
				
		var strRet;
			
		if(typeof(retval) == "object")
		{
	
				strRet = obj.ExpiryCheck(retval);
				
				if (strRet!="false")
				{
					var strArr;
					var validFrom,validTo;
					var retVal;
					strArr = strRet.split("~");
					validFrom = strArr[0];
					validTo = strArr[1];
					
					var num;
					num=60;
					
					getTimeDiff(tday,validTo,num);//)==false)	
						//return false;

				}
				else
				{
					alert(obj.GetErrorMessage());
					obj = null;
					return false;
				}
		}		
		else
		{
			alert(obj.GetErrorMessage());
			obj = null;
			return false;
		}	
		
			var strCA;
			strCA = obj.GetIssuerDetails();
			if (checkIssuer(strCA) == false) return false;
				
				retval1=obj.GetFullDetails(retval);
				keyarr=retval1.split("~");
				obj = null;
				return keyarr;
			}
			
		}
		catch(ex)
		{
			alert("There is some Problem."+" "+ ex.message);
			obj = null;
			return false;

		}
	}	
		
	//*****************************************************************************
/*	function GetSignature(strVal,tday)
	{
		try
		{
			//var currdt;
			var retval;
			var obj;
			obj=new ActiveXObject("C1Signer.Sign");
			var x=obj.setCertClassCheck(1);
			
			obj.setCaption("Steel Authorities of India");
			var retval=obj.GetSignature(strVal,"CCA INDIA",tday,2);
			alert(retval)
			if(obj.GetCertFound()==false)
			{
				obj = null;
				return false;
			}
			else
			{
				var keyarr;
				var retval1;
				
				retval1=obj.GetFullDetails(retval);
				keyarr=retval1.split("~");
				obj = null;
				return keyarr;
			}
			
		}
		catch(ex)
		{
			alert("There is some Problem."+" "+ ex.message);
			obj = null;
			return false;

		}
	}
*/

	function GetSignature(strVal,tday)
	{
		try
		{
			var currdt;
			var retval;
			var obj;
			obj=new ActiveXObject("C1Signer.Sign");
			
			obj.setCertClassCheck(1);
			obj.setCaption("Steel Authorities of India");
			
			var retval=obj.GetSignature(strVal,"CCA INDIA",tday,2);
			
			if(obj.GetCertFound()==false)
			{
				if(retval=="false")
				{
				 alert(obj.GetErrorMessage());
				}
				obj = null;
				return false;
			}
			else
			{
				var keyarr;
				var retval1;
			
			var strRet;
			
		if(typeof(retval) == "object")
		{
		
				strRet = obj.ExpiryCheck(retval);
				
				if (strRet!="false")
				{
					var strArr;
					var validFrom,validTo;
					var retVal;
					strArr = strRet.split("~");
					validFrom = strArr[0];
					validTo = strArr[1];
					
					if (getTimeDiff(tday,validTo,30)==false)
						return false;
				}
				else
				{
					alert(obj.GetErrorMessage());
					obj = null;
					return false;
				}
			}		
			else
			{alert("in else")
				alert(obj.GetErrorMessage());
				obj = null;
				return false;
			}
			
			var strCA;
			strCA = obj.GetIssuerDetails();
			
			if (checkIssuer(strCA) == false) return false;
				retval1=obj.GetFullDetails(retval);
				keyarr=retval1.split("~");
				obj = null;
				return keyarr;
			}
			
		}
		catch(ex)
		{
			alert("There is some Problem."+" "+ ex.message);
			obj = null;
			return false;

		}
	}
	function getCertDetails(cert)
	{
		var retval;
		var obj;
		obj=new ActiveXobject("C1Signer.Sign");
		var retval=obj.GetFullDetails(cert);
		keyarr=retval.split("~");
		obj = null;
		return keyarr;
	}
	
	function VerifySignature(strVal,Signature,id)
	{
	var detach;
	var veri;
	var retarr;
	var cert1;
	retarr=new Array(5);
	if(id==1) 
			detach=false;
		else
			detach=true;
	try

		{
			veri=new ActiveXObject("CAPICOM.SignedData");
			veri.Content=strVal;
			veri.Verify(Signature,detach,CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE);
			cert1=veri.Signers(1).Certificate;
				cert1.display();
			retarr[0]=true;
			retarr[1]=cert1.SubjectName;
			retarr[2]=cert1.SerialNumber;
			retarr[3]=cert1.IssuerName;
		//	retarr[4]=veri.Signers(1).AuthenticatedAttributes.Item(1).value;
			veri=null;
			cert1=null;
			return retarr;
		}
		catch(ex)
		{
			alert("Signature Not Verified");
			alert(ex.message);
			retarr[0]=false;
			return retarr;
		}
	}		
	
	function VerifySignature1(strVal,Signature,id)
	{
	var retval;
		var obj;
		var retval;
		var keyarr;
		
		obj=new ActiveXObject("C1Signer.Sign");
		try
		{
			if(id==1) // Detach=false
			{
				retval=obj.VerifySignature(strVal,Signature,1);
			}
			else // Detach=true
			{
				retval=obj.VerifySignature(strVal,Signature,2);
			}
			
			if(retval!="false")
			{
				keyarr=retval.split("~");
				obj = null;
				return keyarr;
			}
			else
			{
				obj = null;
				return false;
			}
		}
		catch(e)
		{
			alert(e.message)
		}
	
	}
	function FileSign(strVal,cert,tdate)
	{
	try
	{
		var obj;
		obj=new ActiveXObject("C1Signer.Sign");
		retval=obj.FileSign(strVal,cert,2,tdate)
		if(obj.GetCertFound()==false)
		{
				obj = null;
				return false;
		}
		else
		{
				return retval;
		}
	}
		catch(ex)
		{
			alert("There is some Problem."+" "+ ex.message);
			obj = null;
			return false;

		}
	}

function FindCertificateByHash(szThumbprint)
  {
	   var obj;
		var retval;
		obj=new ActiveXObject("C1Signer.Sign");
		retval=obj.FindCertificateByHash(szThumbprint);
		obj = null;
	   return retval;
	}
	
function Encryptvalues(encrval,key)
	{
		var obj;
		obj=new ActiveXObject("C1Signer.Sign");
		var retval= obj.Encryptvalues(encrval,key);
		obj = null;
		return retval;
	}
//########################################################
	// ALL FUNCTIONS BEFOR THIS WILL BE INCLUDED IN A .JS FILE
	
function checkIssuer(strCA)	
{

	if (!((strCA == "(n)Code Solutions CA") ||(strCA == "TCS CA") || (strCA == "TCS - Certifying Authority Trust Network") || (strCA == "(n)Code Solutions Certifying Authority") ))

	{
		alert("Certificate cannot be used.")
		return false;
	}
	else
	{
		return true;
	}	
return true;

}
	
function getTimeDiff(now1,validTo,nodays) 
{

	var c1; c1=1;
	var c2; c2=2;
	var c3; c3=3;
	var c4; c4=4;
	var c5; c5=5;
	var c6; c6=6;
	var c7; c7=7;
	var c8; c8=8;
	var c9; c9=9;
	var c0; c0=0;
	var Cc; Cc=":";

	now = new Date(now1);
	
	
	//later = new Date('<%'=session("TN_DOC_SALE")%>');
	later = new Date(validTo);
	var temp="";
	var DispYear=later.getYear();
	var DispMonth=later.getMonth()+1;
	var DispDay=later.getDate();
	var DispHour=later.getHours();
	var DispMin=later.getMinutes();
	if (DispHour<=9)
	{
	DispHour="0"+DispHour
	}
	if (DispMin<=9) 
	{
	DispMin="0"+DispMin
	}
	
	temp=DispDay+"/"+DispMonth+"/"+DispYear+" "+DispHour+":"+DispMin;
		
	if (now>later)
	{
		//alert("The server time has exceeded the Valid To date time of the certificate.");
		alert("This certificate has expired on "+ later);
		return false;
	}

	days = (later - now) / 1000 / 60 / 60 / 24;
	daysRound = Math.floor(days);
	hours = (later - now) / 1000 / 60 / 60 - (24 * daysRound);
	hoursRound = Math.floor(hours);
	minutes = (later - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound);
	minutesRound = Math.floor(minutes);
	seconds = (later - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound);
	secondsRound = Math.round(seconds);



	if (secondsRound <= 9) 
	{
		sec0 = eval(c0);
		sec1 = eval("c"+secondsRound);
	}
	else 
	{
		sec0 = eval("c"+Math.floor(secondsRound/10));
		sec1 = eval("c"+(secondsRound%10));
	}

	if (minutesRound <= 9) 
	{
		min0 = eval(c0);
		min1 = eval("c"+minutesRound);
	}
	else 
	{
		min0= eval("c"+Math.floor(minutesRound/10));
		min1 = eval("c"+(minutesRound%10));
	}
	if (hoursRound <= 9) 
	{
		hr0 = eval(c0);
		hr1 = eval("c"+hoursRound);
	}
	else 
	{
		hr0 = eval("c"+Math.floor(hoursRound/10));
		hr1 = eval("c"+(hoursRound%10));
	}
	if (daysRound <= 9) 
	{
		day0 = eval(c0);
		day1 = eval(c0);
		day2 = eval("c"+daysRound);
	}
	if (daysRound <= 99) 
	{
		day0 = eval(c0);
		day1 = eval("c"+Math.floor((daysRound/10)%10));
		day2 = eval("c"+Math.floor(daysRound%10));
	}
	if (daysRound <= 999)
	{
		day0 = eval("c"+Math.floor(daysRound/100));
		day1 = eval("c"+Math.floor((daysRound/10)%10));
		day2 = eval("c"+Math.floor(daysRound%10));
	}
	
	if ((day0==0)&&(day1==0)&&(day2==0)&& (hr0==0)&& (hr1==0) && (min0==1)&&(min1==0) && (sec0==0)&&(sec1==0))
	{	//var msg="There is only " + min0+min1+":" +sec0+sec1+ " minutes left to submit your bid"		
		var msg=""+min0+min1+":" +sec0+sec1
		AlertTime(msg)
		flag=1;
	}	
	
	if ((day0==0)&&(day1==0)&&(day2==0)&& (hr0==0)&& (hr1==0) && (min0==0)&&(min1<=5)&& (sec0==0)&&(sec1==0))
	{	//var msg="There is only " + min0+min1+":" +sec0+sec1+ " minutes left to submit your bid"
		if ((day0==0)&&(day1==0)&&(day2==0)&& (hr0==0)&& (hr1==0) && (min0==0)&&(min1==0)&& (sec0==0)&&(sec1==0))
		{
		}
		else
		{
			var msg=""+min0+min1+":" +sec0+sec1			
			AlertTime(msg)
			flag=1;
		
		}
	}
	now2=now1+1000;
  		
  			if ((daysRound <= nodays) && (daysRound >= 0)) {
  			str="The Certificate will expire in the next "+day0+day1+day2+" Days "+hr0+hr1+" Hours "+min0+min1+" Minutes "+sec0+sec1+" Seconds";	
  			alert(str);
//  			newtime = window.setTimeout("getTime(now2);", 1000);
			return true;
  			
  		}

	
}
