//Windows Internet Explorer (KeyCrypt 5.0)
var npkv5_codebase = "http://update.nprotect.net/keycrypt/spo/npkcx_1110051.cab";
var npkv5_cab = '2011,10,5,1';
var npkv5_svc = '2011,5,4,1';

//Windows Internet Explorer (KeyCrypt V6.0)
var npkv6_codebase = "http://report1.inca.co.kr/npkfx_br/2011/1111141/npkfxx_1111011.cab";
var npkv6_cab = '2011,11,1,1';
var npkv6_prm06 = '5VCCTd1lSyaFIxqHPBsAWlGKg/RtsEKXDNrBiANc7EM54WlwYUPSXG5w6o0wDu5e';
var npkv6_prm22 = 'vDmNRhZEWX8JzQkOORVqM5yIZVlfstrw2zv9Aau4imxWrx8kzHbmLa+uhbplUzEKIwlAdCkJhh4bN3AlvOg9slm7kE6heidHh/+uxeSJF3tQvMf7xlwJDf9BLshWdu2b';

//Windows Internet Explorer (Multi-browser)
var npkv6_mt_bro = 'http://update.nprotect.net/keycrypt/spo/npkfx6_moz.exe';

var DefNPK = {
  ie : navigator.appName == 'Microsoft Internet Explorer',
  ff : (navigator.userAgent.indexOf('Mozilla')==0) && (navigator.appName=='Netscape') && (navigator.userAgent.indexOf('Navigator') > -1)==false && (navigator.userAgent.lastIndexOf('Firefox') > -1),
  ns : (navigator.userAgent.lastIndexOf('Gecko') > -1) && (navigator.userAgent.indexOf('Navigator') > -1),
  sf : (navigator.userAgent.lastIndexOf('Safari') != -1) && (navigator.userAgent.lastIndexOf('Chrome') != -1)==false,
  op : (navigator.userAgent.lastIndexOf('Opera') != -1),
  cr : (navigator.userAgent.match('Chrome') == 'Chrome') && (navigator.userAgent.match('Safari')=='Safari'),
  win : (navigator.platform.toLowerCase().indexOf('win32') != -1),
  win9x : (navigator.userAgent.indexOf('Windows 98')!=-1) || (navigator.userAgent.indexOf('Win98') != -1) || (navigator.userAgent.indexOf('Windows ME') != -1) || (navigator.userAgent.indexOf('Windows NT 4.0') != -1),
  mac : (navigator.userAgent.indexOf('Mac') != -1),
  lnx : (navigator.userAgent.indexOf('Linux') != -1),
  lnx32 : ((navigator.userAgent.indexOf('Linux') != -1) && ((navigator.userAgent.toLowerCase().indexOf('i386') != -1) || (navigator.userAgent.toLowerCase().indexOf('i686') != -1))),
  and : (navigator.userAgent.match('Android')=='Android'),
  iph : (navigator.userAgent.match('iPhone')=='iPhone'),
  mob : (navigator.platform == 'Windows Mobile')
}

var npkSupportType = {
  npWin : ((DefNPK.win)&&(DefNPK.ie||DefNPK.ff||DefNPK.ns||DefNPK.sf)),
  npW9x : ((DefNPK.win9x) && (DefNPK.ie))
}

function verCmpKeyCrypt( strOrgVer, strVer ){
	if( strOrgVer == null || typeof strOrgVer == "undefined" )		    return false;
	if( strVer == null || typeof strVer == "undefined" )              return false;

	var orgVerArr = strOrgVer.split(".");
	var orgVerArrLen = orgVerArr.length;

	var verArr = strVer.split(".");

	for( var i=0; i < orgVerArrLen; i++ ){
		var ovA=0, vA=0;

		if( typeof verArr[i] == "undefined" )     verArr[i] = 0;
		ovA = orgVerArr[i];
		vA = verArr[i];

		if( Number(ovA) == Number(vA) )           {}
		else if( Number(ovA) > Number(vA) )       return true;
		else if( Number(ovA) < Number(vA) )       return false;
	}
	if( orgVerArr.toString() == verArr.toString() )		return true;

	return false;
}

function supOsCheck_KeyCrypt(){
	if( npkSupportType.npWin ){		return true;	}
	return false;
}

function getBrowserVersion_KeyCrypt() {
	if( DefNPK.ff )       var reSF = new RegExp(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent));
	else if( DefNPK.ns )  var reSF = new RegExp(/Navigator[\/\s](\d+\.\d+.\d+)/.test(navigator.userAgent));
	else if( DefNPK.cr )  var reSF = new RegExp(/Chrome[\/\s](\d+\.\d+.\d+.\d+)/.test(navigator.userAgent));
	else if( DefNPK.op )  var reSF = new RegExp(/Version[\/\s](\d+\.\d+)/.test(navigator.userAgent));
  else if( DefNPK.sf )  var reSF = new RegExp(/Version[\/\s](\d+\.\d+)/.test(navigator.userAgent));
	var bwVer = RegExp["$1"];
	return bwVer
}

function supBrowserVerCheck_KeyCrypty() {
	var strBrowserVer = getBrowserVersion_KeyCrypt();

	if( npkSupportType.npWin ){
		if( DefNPK.ie )			return true;
		else if( DefNPK.ff ){
			var strSupportVer = "2.0"
			if ( navigator.userAgent.indexOf('Windows NT 5.0') != -1 ) {   return false;   }
			return verCmpKeyCrypt( strBrowserVer, strSupportVer );
		}
		else if( DefNPK.ns ){
			var strSupportVer = "9.0"
			return verCmpKeyCrypt( strBrowserVer, strSupportVer );
		}
		else if( DefNPK.sf ){
			var strSupportVer = "5.0"
			return verCmpKeyCrypt( strBrowserVer, strSupportVer );
		}
		else if( DefNPK.cr ){
			var strSupportVer = "4.0"
			return verCmpKeyCrypt( strBrowserVer, strSupportVer );
		}
		else if( DefNPK.op ){
			var strSupportVer = "9.0"
			return verCmpKeyCrypt( strBrowserVer, strSupportVer );
		}
	}
	return false;
}

function checkInstallKeyCryptPlugin() {
	if( npkSupportType.npWin && DefNPK.ie)	{
//    if( npkSupportType.npW9x ){
		  document.write("<OBJECT classid='CLSID:D6FCA8ED-4715-43DE-9BD2-2789778A5B09' width='0' height='0' id='NPKXSite'></OBJECT>");
		  if(document.NPKXSite.object !=null )    return true;
/*    } else{
  		document.write("<OBJECT classid='CLSID:1CBDCD5A-18EE-4CCA-9AEA-93D5D27E310B' width='0' height='0' id='NPKFXX' name='npKeyCryptV6'></OBJECT>");
			if(document.NPKFXX.object !=null )    return true;
		}     */
  }
	else if( npkSupportType.npWin && !DefNPK.ie ){
    for ( var i=0; i<navigator.mimeTypes.length; i++){ 
			var plugin = navigator.mimeTypes[i];
			
			if( DefNPK.win )     {if(plugin.type.substring(0,19) == "application/npkfxmp")                 return true;}
		}
	}
	return false;
}

function installKeyCryptPlugin(os_dis) {
	if( npkSupportType.npWin ){
		if( (DefNPK.win) && (DefNPK.ie) ){   createKeyCryptEmbedTag();   }
		else{   window.setTimeout("location.href = npkv6_mt_bro", 500);    }
	}
}

function createKeyCryptEmbedTag() {
	var bReturn = false;

	if( npkSupportType.npWin ){
		if( DefNPK.ie ){
//    	if( npkSupportType.npW9x ){
   	  document.write("<OBJECT classid='clsid:D6FCA8ED-4715-43DE-9BD2-2789778A5B09' width=0 height=0 id='NPKXSite' codebase='"+npkv5_codebase+"#version="+npkv5_cab+"'>");
      document.write("<PARAM NAME='HookType' Value=3>");
      document.write("<PARAM NAME='ShowTray' Value=1>");
      document.write("<PARAM NAME='TrayMsg' Value='nProtect KeyCrypt'>");
      document.write("<PARAM NAME='LogoType' Value='2'>");
      document.write("<PARAM NAME='LogoURL' Value='spo_key.bmp'>");
      document.write("<PARAM NAME='SVCVersion' Value='"+npkv5_svc+"'>");
/*
     document.write("<OBJECT classid='CLSID:1CBDCD5A-18EE-4CCA-9AEA-93D5D27E310B' width=0 height=0 id='NPKFXX' codebase='"+npkv6_codebase+"#Version="+npkv6_cab+"'>");
     	document.write("<PARAM NAME='Param1' Value='cCPKxtTbocVScHZydKo9I/ZX/jrc5xXSjE4Ob1zu7K8A'>");
     	document.write("<PARAM NAME='Param2' Value='oCCex/xnwOUo52c+48tdTZilR+I9TZrz+hD65wwVi78A'>");
     	document.write("<PARAM NAME='Param3' Value='6+chjWX43NsyMaaAVCcyla4vG0UoTAYs6x2Di4p/x1Oah+HHoZwe1gHryvosTvl05JDpqKibVN5TjMQkr8XxPQAA'>");
     	document.write("<PARAM NAME='Param4' Value='7p3bYUSDZOYgD1ILcNM3OwQzAR9ZocV2t145RtNdOKEA'>");
      document.write("<PARAM NAME='Param5' Value='1KinNxZLDh6bVsLXTv/p/D7xK918BnXWzd32OAksB10WY231mokZ3Zr+WN30fb7piQns/bKi1USZOPF8PX5C1QAA'>");
     	document.write("<PARAM NAME='Param6' Value='"+npkv6_svc+"'>");

     	document.write("<PARAM NAME='Param7' Value='roNH6qJAzvE11FCPjZwGJiVBKW+oT/JusdYAe1sEvNA/St4l5XQ9NJ1b6zs11/LNmqzF7LZ0lmf0BQIPYY09JAAA'>");
*/
        document.write("</OBJECT>");
        

       bReturn = true;
	  }
		else{
			if( checkInstallKeyCryptPlugin() )	{
        var cmd = "";
      	cmd += '<embed id="NPKFXX" type="application/npkfxmp" width=0 height=0 ';
      	cmd += 'param1 = "dQhrAAuQuaUAnPgTp1PGXffOLtWLw5bAOh0ohzGaTcIAAAAA" ';
      	cmd += 'param2 = "CbFFYS2QwYt/Z6om7qkHqPSBWTc67MzJ2iCjRBM03L8AAAAA" ';
      	cmd += 'param3 = "E3XTzFWApI/a+BOI0xdjyXiLZ+JpXwp0AWB1YwgTXUAzI0/gGZZZQSxLG6702ThBmN2zeW4EQcc5p8ebrwdHAQAA" ';
      	cmd += 'param4 = "hwNoaeIqWlxkPzU2p5MH18jSf4eKlv0FT+1A9m7BdX4omam+a74r/LuYzhvBnV8g" ';
      	cmd += 'param5 = "aFAW56Mll7BSd90OOx01Fe6EHkqVhhc/lelYbh/kYy1AVKilstVRXMhZ8rTprXnTy8RNoQacOV3T+dtIoNzT4QAA" ';
        cmd += 'param6 = "'; cmd += npkv6_prm06; cmd += '" ';

      	cmd += 'param21 = "rTritBzjiOKEFFH6fM+8mBhDMKhBuT1IZ5YzzHFCO+cA" ';
        cmd += 'param22 = "'; cmd += npkv6_prm22; cmd += '" ';
      	cmd += 'param23 = "Hs13V0BMFXzcX9QVsaen+Q9yA7AgwqnUUSgPuSUIAFgwWicv/LO0QQgQM/E5GKI2" ';
      	cmd += 'param24 = "xnR53Sx5Y/pAZZMk2tdgnCCCsFPxI3ATtFrlGI08P+bjGTPpRk6gPCiMZQLYueq6ad2idf3gJpzIWmHQnn9yswAA" ';
      	cmd += 'param25 = "x+GZdYKhJw8+sUSWFVvgc82LMYutn50cmfat55WZct4A" ';
        cmd += '>';
        cmd += '</embed>';

        document.write(cmd);

       bReturn = true;
			}
		}
	}	
	return bReturn;
}

function startKeyCrypt() {
	if( supOsCheck_KeyCrypt() == false || supBrowserVerCheck_KeyCrypty() == false ){
		alert("Does not support system.");
		return false;
	}
	else if( npkSupportType.npWin ){
		if( DefNPK.ie ){
			createKeyCryptEmbedTag();
		}
		else{
			if( createKeyCryptEmbedTag() == false )		installKeyCryptPlugin();
			else RegisterSecurityFields();
		}
	}
	return true;
}

function OnFocusIn(eventObject){
	var orgEvent;
	var inputObject;
	if (eventObject.type == "text" || eventObject.type == "password")	{
		 inputObject = eventObject;
	}
	else 	{
	 	orgEvent = eventObject ? eventObject : window.event;
		inputObject = orgEvent.target ? orgEvent.target : orgEvent.srcElement;
	}

	try	{
	  if (inputObject.type == "text" || inputObject.type == "password")
	  {
   	    document.getElementById('NPKFXX').OnFocusIn(inputObject);
	  }

	}
	catch(e){
		alert("OnFocusIn error : " + e.message + "  code : " + e.code);
	}
}

function OnFocusOut(eventObject){
	var orgEvent;
	var inputObject;
	if (eventObject.type == "text" || eventObject.type == "password")	{
		inputObject = eventObject;
	}
	else {
		orgEvent = eventObject ? eventObject : window.event;
		inputObject = orgEvent.target ? orgEvent.target : orgEvent.srcElement;
	}

	try	{
		if (inputObject.type == "text" || inputObject.type == "password")
	  {
	    document.getElementById('NPKFXX').OnFocusOut(inputObject);
	  }
	}
	catch(e){
		alert("OnFocusOut error : " + e.message + "  code : " + e.code);
	}
}

function OnKeyDown(eventObject){
	var orgEvent;
	var inputObject;
  
	if (eventObject.type == "text" || eventObject.type == "password")	{
		 inputObject = eventObject;
	}
	else	{
		orgEvent = eventObject ? eventObject : window.event;
		inputObject = orgEvent.target ? orgEvent.target : orgEvent.srcElement;
	}
	

	try	{		
		var code = eventObject.keyCode;
	  if(inputObject.type == "text" || inputObject.type == "password") {

  	   if(eventObject.charCode == null ) {
  	       // º¸È£ µÇ¾ß µÇ´Â °ª
  	       OnFocusIn(inputObject);
    	     document.getElementById('NPKFXX').OnKeyDown(inputObject);
  	     
  	   }
	     else if(code == 64 ) {
	         OnFocusIn(inputObject);
    	     document.getElementById('NPKFXX').OnKeyDown(inputObject);
  	     
	     }
    }
  }
	catch (e) {
      OnFocusIn(eventObject);
	    document.getElementById('NPKFXX').OnKeyDown(inputObject);
	}	
}

function RegisterSecurityFields(){
	try	{
		window.onfocus = OnFocusIn;
		window.onblur  = OnFocusOut;
		for(var i=0; i < document.forms.length; i++) {
			for (var j=0; j < document.forms[i].elements.length; j++)	{
				if (document.forms[i].elements[j].tagName == "INPUT" 
				   &&(document.forms[i].elements[j].type == "text" 
				   ||  document.forms[i].elements[j].type == "password") )	{
					if(document.forms[i].elements[j].addEventListener){
					     document.forms[i].elements[j].addEventListener("focus", OnFocusIn, false);
					     document.forms[i].elements[j].addEventListener("blur", OnFocusOut, false);
					     document.forms[i].elements[j].addEventListener("keydown", OnKeyDown, false);
					}
				}
			} 
		}
	}
	catch(e)	{
		alert("Failed to RegisterSecurityFields()");	
	}
}

startKeyCrypt();
