String.prototype.htmlspecialchars = function(){
	return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
}

String.prototype.htmlspecialchars_decode = function(){
    return this.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
}

Array.prototype.sortArrayOfObjects = function(property,type,order)
{	
	var a;
	var cmd;
	//stringI is case insensitive string
	if(type!=='string'&&type!=='string_case_sensitive'&&type!=='numeric')
	{
		throw(type+' is not valid type.');
	}
	if(order!=='asc'&&order!=='desc')
	{
		throw(order+' is not valid order');
	}
	if(type==='numeric')
	{
		
		this.sort(function(a, b){
			var itemA=Number(a[property]);
			var itemB=Number(b[property]);
			if(order==='asc')
			{
				if (itemA < itemB) return -1; //sort string ascending
				if (itemA > itemB) return 1;
			}
			else
			{
				if (itemA < itemB) return 1; //sort string descending
				if (itemA > itemB) return -1;
			}
			return 0; //default return value (no sorting)
		});
	}
	else
	{
		this.sort(function(a, b){
			var itemA=String(a[property]);
			var itemB=String(b[property]);
			if(type==='string')
			{
				itemA = itemA.toLowerCase();
				itemB = itemB.toLowerCase();
			}
			if(order==='asc')
			{
				if (itemA < itemB) return -1; //sort string ascending
				if (itemA > itemB) return 1;
			}
			else
			{
				if (itemA < itemB) return 1; //sort string descending
				if (itemA > itemB) return -1;
			}
			return 0; //default return value (no sorting)
		});
	}
	
	
}
