function str_replace (search, replace, subject, count)
{
  var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
  f = [].concat(search),
  r = [].concat(replace),
  s = subject,
  ra = r instanceof Array, sa = s instanceof Array;
  s = [].concat(s);

  if (count)
  {
    this.window[count] = 0;
  }

  for (i=0, sl=s.length; i < sl; i++)
  {
    if (s[i] === '')
    {
      continue;
    }

    for (j=0, fl=f.length; j < fl; j++)
    {
      temp = s[i]+'';
      repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
      s[i] = (temp).split(f[j]).join(repl);

      if (count && s[i] !== temp)
      {
        this.window[count] += (temp.length - s[i].length) / f[j].length;
      }
    }
  }

  return sa ? s : s[0];
}
