Object.extend(String.prototype, {

  upcase: function() {
    return this.toUpperCase();
  },

  downcase: function() {
    return this.toLowerCase();
  },
  
  strip: function() {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
  },
  
  /* Convert non-ASCII characters to their ASCII equivalent.
     simplified version of lib/translforms.rb::String.tildes()
     (eFaber)
  */
  tildes: function() {
    s = this.replace(/[ñ|Ñ]/g, "n");
    s = s.replace(/[Á|À|Ä|á|à|ä]/g, "a");
    s = s.replace(/[É|È|Ë|é|è|ë]/g, "e");
    s = s.replace(/[Í|Ì|Ï|í|ì|ï]/g,"i");
    s = s.replace(/[Ò|Ó|Ö|ó|ò|ö]/g,"o");
    s = s.replace(/[Ú|Ù|Ü|ú|ù|ü]/g,"u");
    return s;
  }, 

  toInteger: function() {
    return parseInt(this);
  },
  
  toSlug: function() {
   return this.strip().tildes().downcase().replace(/[^-a-z0-9~\s\.:;+=_]/g, '').replace(/[\s\.:;=+]+/g, '-').substr(0,80);
  }

});

