// TRIM PROTOTYPE
// USAGE: string.trim()
String.prototype.trim = function() {
  return this.replace(/^\s*|\s*$/g,'');
}

// IN_ARRAY PROTOTYPE
// USAGE: haystack.in_array("needle") = TRUE or FALSE
Array.prototype.in_array = function(obj) {
  for(var x=0; x<=this.length; x++) {
    if(this[x] == obj) return true;
  }
  return false;
}

// GET_POSITION PROTOTYPE
// USAGE: haystack.get_position("needle")
// NOTE: same as in_array, but returns index position (or FALSE)
Array.prototype.get_position = function(obj) {
  for(var x=0; x<this.length; x++) { 
    if(this[x] == obj) return x;
  }
  return false;
}

// UNIQUE PROTOTYPE
// USAGE: array.unique()
Array.prototype.unique = function() {
  var seen = {};
  var newarray = [];
  for(var x=0; x<this.length; x++) {
    if(!seen[this[x]]) {
      newarray.push(this[x]);
      seen[this[x]] = true;
    }
  }
  return newarray;
}

// DIFF PROTOTYPE
// USAGE: array.diff(array2)
// NOTE: returns items in array that are NOT in array2
// NOTE: requires in_array protoype!
Array.prototype.diff = function(obj) {
  var newarray = [];
  for(var x=0; x<this.length; x++) {
    if(!obj.in_array(this[x])) newarray.push(this[x]);
  }
  return newarray;
}

// ALLOWEDCHARS PROTOTYPE
// USAGE: string.allowedchars("abcdef...")
// NOTE: returns false if string contains other chars, otherwise true
String.prototype.allowedchars = function(chars) {
  for(var x=0; x<this.length; x++) { 
    if(chars.indexOf(this.charAt(x)) == -1) return false;
  }
  return true;
}

// STRIPTAGS PROTOTYPE
// USAGE string.striptags()
//String.prototype.striptags = function() {
//  return this.replace(/&lt;\/?[^&gt;]+&gt;/gi,'');
//}

// RANDOM NUMBER FUNCTION
function fsRand() {
  return Math.floor((Math.random() * (999999 - 100001)) + 100000);
}

// SCROLLBAR WIDTH FUNCTION
// NOTE: REQUIRES JQUERY!
// NOTE 2: DOESN'T SEEM TO WORK IN SAFARI (MAYBE OTHERS?)
function fsScrollWidth() {
  var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div></div>');
  $('body').append(div);
  var w1 = $('div',div).innerWidth();
  div.css('overflow-y','scroll');
  var w2 = $('div',div).innerWidth();
  $(div).remove();
  return (navigator.userAgent.match(/Safari/i)) ? 16 : (w1-w2);
  //return(w1-w2);
}

