function arraytostring(a)
{

var l = a.length;
var s = '';

for(c=0; c<l; c++)
   {

   s += a[c];

   }

return s;
}

function stringtoarray(s)
{

var l = s.length;
var a = new Array();

for(c=0; c<l; c++)
   {

   a[c] = s.charAt(c);

   }

return a;
}

function reverseString(s)
{

return arraytostring(stringtoarray(s).reverse());
}

function sortString(s)
{

return arraytostring(stringtoarray(s).sort());
}

function unspaceString(s)
{

var a = stringtoarray(s);

var l = a.length;
var s = '';

for(c=0; c<l; c++)
   {

   if (a[c].match(/\S/) != null)
      s += a[c];

   }

return s;
}

function reverseAlphaString(s)
{

var a = stringtoarray(s);

var l = a.length;
var s = '';

for(c=0; c<l; c++)
   {

   if (a[c].match(/[A-Z]/) != null)
      s += String.fromCharCode(26 - 1 + 'A'.charCodeAt(0) + 'A'.charCodeAt(0) - a[c].charCodeAt(0));
   else {
      if (a[c].match(/[a-z]/) != null)
         s += String.fromCharCode(26 - 1 + 'a'.charCodeAt(0) + 'a'.charCodeAt(0) - a[c].charCodeAt(0));
      else
         s += a[c];
   }

   }

return s;
}

function extractValueArray(p)
{

var l = p.length;
var a = new Array();

for(c=0; c<l; c++)
   {

   a[c] = p[c].value;

   }

return a;
}

function permuteAlphaString(s,p)
{

var a = stringtoarray(s);

var l = a.length;
var s = '';

for(c=0; c<l; c++)
   {

   s += permuteAlphaChar(a[c],p);
   }

return s;
}


function permuteAlphaChar(c,p)
{

   if (c.match(/[A-Z]/) != null)
      return String.fromCharCode(p[c.charCodeAt(0) - 'A'.charCodeAt(0)].charCodeAt(0));
   else {
      if (c.match(/[a-z]/) != null)
         return String.fromCharCode('a'.charCodeAt(0) - 'A'.charCodeAt(0) + p[c.charCodeAt(0) - 'a'.charCodeAt(0)].charCodeAt(0));
      else
         return c;
   }

}

function verifyPermutation(u,t)
{

l = u.length;
a = new Array(l);
t.length = l - 1;

for(c=0; c<l-1; c++)
   {

   d = 0;

   while (d < l)
      {

      if (a[d] == undefined && u[d] == t[c])
         {

         a[d] = true;

         d = l + 3;

         }

      d++;
      }

   if (d < l + 2)
      return null;

   }

d = 0;

while (d < l)
   {

   if (a[d] == undefined)
      return u[d];

   d++;
   }

return null;

}



function invertPermutation(u,t)
{

l = u.length;
a = new Array(l);
if (t.length != l) return null;

for(c=0; c<l; c++)
   {

   d = 0;

   while (d < l)
      {

      if (u[d] == t[c])
         {

         a[d] = u[c];

         d = l + 3;

         }

      d++;
      }

   if (d < l + 2)
      return null;

   }

return a;

}

function offsetArray(a)
{

l = a.length;
b = new Array(l);

b[l-1] = a[0];

for(c=1; c<l; c++)
   {

   b[c-1] = a[c];

   }

return b;

}

