var Enc = 5381;
var Mod = 779;
var ByteLength = 3;


function ModFunction(Main,Modulus)
{
	var ModFunction = Main - (Math.floor((Main/Modulus)) * Modulus);
	return ModFunction;
}

function Mult(x,p,m)
{
	var y = 1;
	var i = 0;
	
	for (i = p; i > 0; i--)
	{
		while ( (i/2) == (Math.floor((i/2))) )
		{	
			x = ModFunction((x * x), m);
			i = (i/2);
		}
		y = ModFunction((x * y), m);
	}
	
	return y;
}

function pad(sIn)
{
	var pad_new = "";

	for (j = ByteLength; j > sIn.length; j--)
	{
		pad_new = pad_new + "0";
	}

	return pad_new;
}

function Encode(sVal)
{

	// define variables
	var sCipherText = "";
	var encoded_field = "";
	var original_field = sVal;
	
	// loop through all single letter of field
	for (i = 0; i <= original_field.length - 1; i++)
	{
		// charCodeAt gives the ASC value of character in position i
		sCipherText = '' + Mult( (original_field.charCodeAt(i)) , Enc , Mod );
		
		encoded_field = encoded_field + pad(sCipherText) + sCipherText;	
	}		
	
	return(encoded_field);
}
