
PW_SUCCESS       = 0;
PW_GENERAL_ERROR = 1;
GATEWAY_ERROR    = 26;

PW_NETSCAPE_BROWSER_VERSION = 50;
PW_EXPLORER_BROWSER_VERSION = 51;
PW_BROWSER_NOT_SUPPORTED = 52;
PW_BROWSER_JAVA = 53;
PW_APPLET_NOT_READY = 54;
PW_SMART_NOT_INIT = 55;


// due to problems in the defining two dimentional array in js
// the two following arrays are used.


// create 2x100 two dimensional array
var StrArray1 = new Array(2);
for ( var i=0; i < StrArray1.length; i++ )
  StrArray1[i] = new Array(100);

// access first element

StrArray1[0][0] =       "Sucesso";                                           				//Success                  = 0;
StrArray1[0][1] =       "Erro Genérico";                                     				//KXEUnsupportedKXType     = 1;
StrArray1[0][2] =       "Troca de chaves falhou.";                              			//KeyExchangeFailed        = 2;
StrArray1[0][3] =       "Cliente não suporta o mesmo algoritmo de troca de chaves que o Gateway.";	//KXNoAgreementOnKX
StrArray1[0][4] =       "Cliente não suporta o mesmo tamanho de chaves que o Gateway.";			//KXNoAgreementOnKeySize   = 4
StrArray1[0][5] =       "Certificado do Gateway Inapropriado.";                     			//KXCPKMismatch            = 5;
StrArray1[0][6] =       "Mensagem de troca de chaves está incorreta.";                			//KXMessagesErr            = 6;
StrArray1[0][7] =       "Falha ao enviar mensagem de troca de chaves ao Gateway.";   			//KXMessageSendingErr      = 7;
StrArray1[0][8] =       "Falha ao receber mensagem de troca de chaves do Gateway.";			//KXMessageReceivingErr    = 8;
StrArray1[0][9] =       "Mensagem de troca de chaves é muito curta.";          			       	//KXMessageToShortErr      = 9;
StrArray1[0][10] =      "Tipo de mensagem de troca de chaves não suportada.";       		    	//KXMessageUnsupportedTypeExc  = 10;
StrArray1[0][11] =      "Erro de tamanho de mensagem de troca de chaves.";              		//KXMessageSizeErr             = 11;
StrArray1[0][12] =      "Protocolo de troca de chaves não suportado.";    		            	//KXMessageUnsupportedProtcol  = 12;
StrArray1[0][13] =      "Dado público de criptografia para troca de chaves não suportado.";		//KXMessageUnsupportedCPK      = 13;
StrArray1[0][14] =      "Engano na capacidade do servidor.";                				//KXMessageSrvCapMismatch      = 14;
StrArray1[0][15] =      "Erro interno ao criar chave de sessão.";     		         		//sessionKeyExc                = 15;
StrArray1[0][16] =      "Engano no tamanho da chave de sessão.";                		     	//sessionKeyExcNotInSize       = 16;
StrArray1[0][17] =      "Falha na verificação do certificado.";   		                      	//KXCPKVerifyFailed            = 17;
StrArray1[0][18] =      "Erro interno ao encriptar.";                     				//PWEncryptFailed              = 18;
StrArray1[0][19] =      "Erro interno ao decriptar.";              		          		//PWDecryptFailed              = 19;
StrArray1[0][20] =      "Problema ao ler a Media. Por favor verifique se a media existe!!!";		//PWMediaReadException
StrArray1[0][21] =      "Problema ao escreve na Media. Por favor verifique se a media existe!!!";	//PWMediaWriteException
StrArray1[0][22] =      "Chave não existe. Por favor insira sua chave.";   				//PWMediaNotFound              = 22;
StrArray1[0][23] =      "Não é possível acessar a media, media não está em estado de login.";   	//PWMediaNotLogged             = 23;
StrArray1[0][24] =      "Senha incorreta, digite-a novamente!";    					//PWIncorrectPassword          = 24;
StrArray1[0][25] =      "Falha ao criar assinatura digital.";                				//PWSignFailed                 = 25;
StrArray1[0][26] =      "Gateway negou seu acesso.";                      		   		//PWGatewayException           = 26;
StrArray1[0][27] =      "Gateway de autenticação falhou.";                      			//PWAuthenticateGWFailed       = 27;
StrArray1[0][28] =      "Acesso ao certificado falhou! Por favor, confira a sua senha.";		//PWloginToMediaFailed         = 28; tr(Lang,ErrCode)
StrArray1[0][29] =      "Troca de Senha falhou! Por favor verifique sua senha.";			//PWChangePasswordFailed      = 29;
StrArray1[0][30] =      "Midia não possui um certificado!";                 				//PWMediaNoCertificate        = 30;
StrArray1[0][31] =		"Erro durante o armazenamento do certificado";				//PWErrorStoreCert			= 31;
StrArray1[0][32] =		"Não implementado para essa midia";					//PWCKITNotImplemented        = 32;
StrArray1[0][33] =		"Não houve resposta do HTTP Proxy";					//PWHttpProxyNoResponse       =33;
StrArray1[0][34] =		"HTTP Proxy: falha na conexão";						//PWHttpProxyConFailed        =34;
StrArray1[0][35] =		"Http Proxy não definido";						//PWHttpProxyNotDefined       =35;
StrArray1[0][36] =		"File handler failed to set value";					//PWFILEHANDLER_SETVALUEFAILED = 36;	
StrArray1[0][37] =		"File handler failed to find file";					//PWFILEHANDLER_FOUNDFILEFAILED = 37;
StrArray1[0][38] =		"Registro não encontrado no arquivo";					//PWFILEHANDLER_RECORDNOTFOUND = 38;
StrArray1[0][39] =		"Erro de escrita no arquivo";						//PWFILEHANDLER_WRITEFILEFAILED = 39;
StrArray1[0][40] =		"Erro de leitura no arquivo";						//PWFILEHANDLER_READFILEFAILED = 40;
StrArray1[0][41] =		"Falha na autenticação da midia";					//PWMediaLoginGeneral          = 41;
StrArray1[0][42] =		"A midia esta bloqueada";						//PWMediaLocked                = 42;
StrArray1[0][43] =		"Senha da midia expirou";						//PWMediaPasswordExpired       = 43;
StrArray1[0][44] =		"Senha da midia muito curta";						//PWMediaPasswordMinimalErr	 = 44;

StrArray1[0][PW_NETSCAPE_BROWSER_VERSION] =      "Netscape Browser version problem";
StrArray1[0][PW_EXPLORER_BROWSER_VERSION] =      "Explorer Browser version problem";
StrArray1[0][PW_BROWSER_NOT_SUPPORTED] =         "Browser Not Supported!";
StrArray1[0][PW_BROWSER_JAVA] =                  "Browser does not support java";
StrArray1[0][PW_APPLET_NOT_READY] =              "Applet is not ready!";
StrArray1[0][PW_SMART_NOT_INIT] =                "SmartUpdate is not enabled!";

         // The following array can be input with any other language text.

StrArray1[1][0] =       "XSuccess";                                           //Success                  = 0;
StrArray1[1][1] =       "XGeneral Error";                                     //KXEUnsupportedKXType     = 1;
StrArray1[1][2] =       "XKey Exchange failed.";                              //KeyExchangeFailed        = 2;
StrArray1[1][3] =       "XClient don't support the same Key Exchange Algorithm as the Gateway.";//KXNoAgreementOnKX
StrArray1[1][4] =       "XClient don't support the same Key lengths as the Gateway.";//KXNoAgreementOnKeySize   = 4
StrArray1[1][5] =       "XImproper Gateway certificate.";                     //KXCPKMismatch            = 5;
StrArray1[1][6] =       "XKey Exchange Message is incorrect.";                //KXMessagesErr            = 6;
StrArray1[1][7] =       "XFailed to send Key Exchange Message to Gateway.";   //KXMessageSendingErr      = 7;
StrArray1[1][8] =       "XFailed to receive Key Exchange Message from the Gateway.";//KXMessageReceivingErr    = 8;
StrArray1[1][9] =       "XKey Exchange Message is to short.";                 //KXMessageToShortErr      = 9;
StrArray1[1][10] =      "XUnsupported Key-Exchange Message type.";            //KXMessageUnsupportedTypeExc  = 10;
StrArray1[1][11] =      "XKey Exchange Message size error.";                  //KXMessageSizeErr             = 11;
StrArray1[1][12] =      "XUnsupported Key-Exchange Protocol.";                //KXMessageUnsupportedProtcol  = 12;
StrArray1[1][13] =      "XUnsupported Key-Exchange Cryptographic Public data.";//KXMessageUnsupportedCPK      = 13;
StrArray1[1][14] =      "XMismatch with Server Capabilities.";                //KXMessageSrvCapMismatch      = 14;
StrArray1[1][15] =      "XInternal Error creating Session Key.";              //sessionKeyExc                = 15;
StrArray1[1][16] =      "XMismatch in Session Key Size.";                     //sessionKeyExcNotInSize       = 16;
StrArray1[1][17] =      "XVerify Certifcate Failed.";                         //KXCPKVerifyFailed            = 17;
StrArray1[1][18] =      "XInternal Error in Encryption.";                     //PWEncryptFailed              = 18;
StrArray1[1][19] =      "XInternal Error in Decrypt.";                        //PWDecryptFailed              = 19;
StrArray1[1][20] =      "XProblem in reading Media. Please check if media exist!!!";//PWMediaReadException
StrArray1[1][21] =      "XProblem in writing Media. Please check if media exist!!!";//PWMediaWriteException
StrArray1[1][22] =      "XMedia is not exist, please insert your media!!!";		//PWMediaNotFound              = 22;
StrArray1[1][23] =      "XCan not access media, media not in login state.";		//PWMediaNotLogged             = 23;
StrArray1[1][24] =      "XPassword is incorrect please enter it again!!!";		//PWIncorrectPassword          = 24;
StrArray1[1][25] =      "XCreating Digital-Signature failed.";					//PWSignFailed                 = 25;
StrArray1[1][26] =      "XGateway deny your access.";							//PWGatewayException           = 26;
StrArray1[1][27] =      "XAuthenticate Gateway failed.";						//PWAuthenticateGWFailed       = 27;
StrArray1[1][28] =      "XLogin to media failed! please check your password.";	//PWloginToMediaFailed         = 28; tr(Lang,ErrCode)
StrArray1[1][29] =      "XChange Password failed! please check your password.";	//PWChangePasswordFailed      = 29;
StrArray1[1][30] =      "XMedia does not have a certificate!";					//PWMediaNoCertificate        = 30;
StrArray1[1][31] =		"XError storing certificate";							//PWErrorStoreCert			= 31;
StrArray1[1][32] =		"XNot Implemeneted for this media";						//PWCKITNotImplemented        = 32;
StrArray1[1][33] =		"XNo Response from Http Proxy";							//PWHttpProxyNoResponse       =33;
StrArray1[1][34] =		"XHTTP Proxy: Connection failed";						//PWHttpProxyConFailed        =34;
StrArray1[1][35] =		"XHttp Proxy Not Defined";								//PWHttpProxyNotDefined       =35;
StrArray1[1][36] =		"XFile handler failed to set value";					//PWFILEHANDLER_SETVALUEFAILED = 36;	
StrArray1[1][37] =		"XFile handler failed to find file";					//PWFILEHANDLER_FOUNDFILEFAILED = 37;
StrArray1[1][38] =		"XRecord not found in file";							//PWFILEHANDLER_RECORDNOTFOUND = 38;
StrArray1[1][39] =		"XError in writing file";								//PWFILEHANDLER_WRITEFILEFAILED = 39;
StrArray1[1][40] =		"XError in reading file";								//PWFILEHANDLER_READFILEFAILED = 40;
StrArray1[1][41] =		"XLogin to media failed";								//PWMediaLoginGeneral          = 41;
StrArray1[1][42] =		"XMedia is locked";										//PWMediaLocked                = 42;
StrArray1[1][43] =		"XMedia's password expired";							//PWMediaPasswordExpired       = 43;
StrArray1[1][44] =		"XMedia's password is too small";						//PWMediaPasswordMinimalErr	 = 44;

StrArray1[1][PW_NETSCAPE_BROWSER_VERSION] =      "XNetscape Browser version problem";
StrArray1[1][PW_EXPLORER_BROWSER_VERSION] =      "XExplorer Browser version problem";
StrArray1[1][PW_BROWSER_NOT_SUPPORTED] =         "XBrowser Not Supported!";
StrArray1[1][PW_BROWSER_JAVA] =                  "XBrowser does not support java";
StrArray1[1][PW_APPLET_NOT_READY] =              "XApplet is not ready!";
StrArray1[1][PW_SMART_NOT_INIT] =                "XSmartUpdate is not enabled!";

function PWLErrC2Str(Lang,ErrC)
{

        return StrArray1[Lang-1][ErrC];
//        if (Lang==1)
//        {
//                return StrArray1[ErrC];
//        }
//        else
//        {
//                return StrArray2[ErrC];
//        }

}

// This intermediate function is for cases when we are called from java and
// the java does not send proper length.
function PWErrC2Str(Lang,ErrC)
{
        var Code;

        x=ErrC.indexOf(' ');

        if (x==-1)
        {
                return "Error Fetching Error String";
        }

        CodeStr = ErrC.substring(0,x);

        IntCode = eval(CodeStr);

        if (IntCode == GATEWAY_ERROR) //Gateway-Error
        {

                // dirty fetch of length of gateway error
                TheLen = parseInt(ErrC.substring(x+1,x+3),10);
                TheStr = ErrC.substring(x+4,TheLen+x+4);
                return TheStr;

        }
        else
        {
                return PWLErrC2Str(Lang,IntCode);
        }

}

function PWGetCode(ErrC)
{

        var Code;

        x=ErrC.indexOf(' ');

        if (x==-1)
        {
                return "Error Fetching Error String";
        }

        return parseInt(ErrC.substring(0,x));

}

function PWIsSuccess(ErrC)
{

        CodeNum = PWGetCode(ErrC);

        if (CodeNum == 0)
        {
                return true;
        }
        else
        {
                return false;
        }

}

function PWIsGatewayErr(ErrC)
{

        CodeStr = GetCodeStr(ErrC);

        if (CodeStr == GATEWAY_ERROR)
        {
                return true;
        }
        else
        {
                return false;
        }

}

function PWBuildErrStr(ErrC)
{

        return ErrC.toString() + " " + PWLErrC2Str(1,ErrC);
}

function PWGetSuccessMsg(ErrC)
{
        // gussing where the space is after the length
        x = 5;
        if (ErrC.substring(4,5)==" ")
        {
                x = 4;
        }

        TheLen = parseInt(ErrC.substring(2,x),10);

        return ErrC.substring(x+1,x+1+TheLen);
}
