/***
 * Delegate
 * (c)2008 Alban Creton, inspired by AS2 pixlib by F.Bourre
 * */
Delegate = {
  create: function (o, f)
          {
            var aa = [];
            if( arguments.length > 2 )
              for(var a=2; a<arguments.length; a++)
              {
                aa.push(arguments[a]);
              }
          
            var _f = function()
            { 
              var aaa = [];
              for(var a=0; a<arguments.length; a++)
              {
                aaa.push(arguments[a]);
              }
              
              return f.apply(o, aaa.concat(aa)); 
            }
            return _f;
          }
};

Array.prototype.inArray = function (value)
{
  var i;
  for (i=0; i < this.length; i++) 
  {
    if (this[i] === value) 
    {
      return true;
    }
  }
  return false;
};

Array.prototype.removeValue = function (value)
{
  var i;
  var key = "no";
  for (i=0; i < this.length; i++) 
  {
    if (this[i] === value) 
    {
      key = i;
    }
  }
  if(key=="no")
  {
    return false;
  }
  else
  {
    this.splice(key,1);
    return true;
  }
}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}