﻿/// <reference path="../jquery-1.3.2-vsdoc.js" />

/*
	Updates to this file must be run through the compressor at:
	http://javascriptcompressor.com/
	then the dsbo.string-extensions.min.js file must be updated
*/

/*global jQuery, RegExp */

jQuery.extend({
	format: function(source, params) {
		if (arguments.length === 1) {
			return function() {
				var args = jQuery.makeArray(arguments);
				args.unshift(source);
				return jQuery.format.apply(this, args);
			};
		}
		if (arguments.length > 2 && params.constructor !== Array) {
			params = jQuery.makeArray(arguments).slice(1);
		}
		if (params.constructor !== Array) {
			params = [params];
		}
		jQuery.each(params, function(i, n) {
			source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
		});
		return source;
	},
	startsWith: function(string, match, caseSensitive) {
		if (caseSensitive === false) {
			return (match === string.substring(0, match.length));
		} else {
			return (match.toLowerCase() === string.substring(0, match.length).toLowerCase());
		}
	},
	endsWith: function(string, match, caseSensitive) {
		if (caseSensitive === false) {
			return (match === string.substring(string.length - match.length));
		} else {
			return (match.toLowerCase() === string.substring(string.length - match.length).toLowerCase());
		}
	},
	stripSpecialCharacters: function(string) {
		var re = /[[A-Za-z0-9-\s]+/g;
		var match = $.trim(string).match(re);
		if (match !== null) {
			string = match.join("");
		}
		return string;
	},
	UrlEncode: function(url) {
		var re = /[[A-Za-z0-9-\s]+/g;
		var match = $.trim(url).match(re);
		if (match !== null) {
			url = match.join("").replace(/[\s]+/g, "-").toLowerCase();
		}
		return url;
	},
	UrlDecode: function(url) {
		return unescape(url);
	}
});