String.extend({
	stripTags: function() {
    return this.replace(/<\/?[^>]+>/gi, '');
  },
	stripScripts: function() {
		return this.replace(/<script[^>]*?>.*?<\/script>/img, '');
	},
	evalScripts: function() {
		var scripts = this.match(/<script[^>]*?>.*?<\/script>/g);
		if(scripts) scripts.each(function(script){
				eval(script.replace(/^<script[^>]*?>/, '').replace(/<\/script>$/, ''));
			});
	},
	replaceAll: function(searchValue, replaceValue, regExOptions) {
		var re = new RegExp(searchValue, $pick(regExOptions,'gi'));
		return this.replace(re, replaceValue);
	},
	urlEncode: function() {
		if (this.indexOf('%') > -1) return this;
		else return escape(this);
	},
	parseQuery: function() {
    var pairs = this.match(/^\??(.*)$/)[1].split('&');
		var params = {};
		pairs.each(function(pair) {
      pair = pair.split('=');
      params[pair[0]] = pair[1];
    });
		return params;
	}
});
window.extend({
	isLoaded: window.loaded,
	getHost:function(url){
		url = $pick(url, window.location.href);
		var host = url;
		if(url.test('http://')){
			url = url.substring(url.indexOf('http://')+7,url.length);
			if(url.test(':')) url = url.substring(0, url.indexOf(":"));
			if(url.test('/')) return url.substring(0,url.indexOf('/'));
			return url;
		}
		return false;
	},
	getQueryStringValue: function(key, url) {
		try {
			return window.getQueryStringValues(url)[key];
		}catch(e){return null;}
	},

		getQueryStringValues: function(url){
			var qs = $pick(url, $pick(window.location.search, '')); //get the query string
			if(qs == "") return []; //if there isn't one, return null
			if(qs.indexOf("?") >= 0)qs = qs.substring(qs.indexOf("?")+1, qs.length); //remove the question mark
			return qs.parseQuery();
},


	getPort: function(url) {
		url = $pick(url, window.location.href);
		var re = new RegExp(':([0-9]{4})');
		var m = re.exec(url);
	  if (m == null) return false;
	  else {
			var port = false;
			m.each(function(val){
				if($type.isNumber(val)) port = val;
			});
	  }
		return port;
	},
	qs: {}
});
window.qs = window.getQueryStringValues();
var GetValue = window.getQueryStringValue;
