﻿// -----------------------------------------------------
// Copyright (c) 2008 CiderHouse. All Rights Reserved.
// ----------------------------------------------------- 
Encryptor = 
{
	///<summary>URL Hash encryptor/decryptor algorithm</summary>
	keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	Encrypt:function(input) 
	{
		///<summary>Encrypt a string</summary>
		///<param name="input" type="string">The input text as string.</param>
		///<returns type="string" />
		if(!input || input.toString().length <= 0) { return input; }
	   var output = "";
	   var chr1, chr2, chr3;
	   var enc1, enc2, enc3, enc4;
	   var i = 0;

	   do {
		  chr1 = input.charCodeAt(i++);
		  chr2 = input.charCodeAt(i++);
		  chr3 = input.charCodeAt(i++);

		  enc1 = chr1 >> 2;
		  enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		  enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		  enc4 = chr3 & 63;

		  if (isNaN(chr2)) {
			 enc3 = enc4 = 64;
		  } else if (isNaN(chr3)) {
			 enc4 = 64;
		  }

		  output = output + Encryptor.keyStr.charAt(enc1) + Encryptor.keyStr.charAt(enc2) + 
			 Encryptor.keyStr.charAt(enc3) + Encryptor.keyStr.charAt(enc4);
	   } while (i < input.length);
	   
	   return output;
	},
	//Decrypt an inputted string
	Decrypt:function(input)
	{
		///<summary>Decrypt a (encrypted) string</summary>
		///<param name="input" type="string">The input text as encrypted string.</param>
		///<returns type="string" />
	   if(input == null || input.toString().length <= 0) { return ""; }
	   
	   var output = "";
	   var chr1, chr2, chr3;
	   var enc1, enc2, enc3, enc4;
	   var i = 0;

	   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
	   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

	   do {
		  enc1 = Encryptor.keyStr.indexOf(input.charAt(i++));
		  enc2 = Encryptor.keyStr.indexOf(input.charAt(i++));
		  enc3 = Encryptor.keyStr.indexOf(input.charAt(i++));
		  enc4 = Encryptor.keyStr.indexOf(input.charAt(i++));

		  chr1 = (enc1 << 2) | (enc2 >> 4);
		  chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
		  chr3 = ((enc3 & 3) << 6) | enc4;

		  output = output + String.fromCharCode(chr1);

		  if (enc3 != 64) {
			 output = output + String.fromCharCode(chr2);
		  }
		  if (enc4 != 64) {
			 output = output + String.fromCharCode(chr3);
		  }
	   } while (i < input.length);
	   return output;
	}
}



function AEM(n,o) { Language.ErrorMessageArray[n] = o; }
function AT(n,o) { Language.TextArray[n] = o; }
function ED(t) { return Encryptor.Decrypt(t); }
Language = 
{
	///<summary>Language Holder</summary>
	ErrorMessageArray:new Array(),
	TextArray:new Array(),
	ErrorMessages :
	{
		GetMessage:function(messageCode)
		{
			///<summary>Get Error message</summary>
			///<param name="messageCode" type="string">The error message code</param>
			///<returns type="string" />
			var message = "ERROR IN MULTILANG SYSTEM, LANGUAGE FILES MISSING";		
			try { message = Language.ErrorMessageArray["FIND_ERROR_ERROR"] + " [" + messageCode + "]"; }catch (ex1) { }
			try { if(Language.ErrorMessageArray[messageCode]) { message = Language.ErrorMessageArray[messageCode]; } } catch(ex) { }
			return message;
		}
	},
	Texts : 
	{
		GetText:function(messageCode)
		{
			///<summary>Get Text message</summary>
			///<param name="messageCode" type="string">The message code</param>
			///<returns type="string" />
			var message = "ERROR IN MULTILANG SYSTEM, LANGUAGE FILES MISSING";		
			try { message = Language.ErrorMessageArray["FIND_TEXT_ERROR"] + " [" + messageCode + "]"; }catch (ex1) { }
			try { if(Language.TextArray[messageCode]) { message = Language.TextArray[messageCode]; } } catch(ex) { }
			return message;
		}
	}
}