String.prototype.trim = function(){
	return this.replace(/^\s+|\s+$/g, '');
}

String.prototype.padLeft = function(str, length){
	result = this;
	while(result.length < length){
		result = str + result;
	}
	return result;
}

String.prototype.decodeEntitys = function(){
	var entities = {'&amp;':'&','&lt;':'<','&gt;':'>'};
	var result = this;
	
	for(entity in entities) result = result.replace(entity, entities[entity]);
	
	return result; 	
}

String.prototype.endsWith = function(str){
	var escape = ['\\', '[', '^', '$', '.', '|', '?', '*', '+', '(', ')'];
	
	for(var i = 0; i < escape.length; i++)
		str = str.replace(escape[i], '\\' + escape[i]);
	
	var r = new RegExp(str+'$'); 
	return r.test(this);
}

String.prototype.leftStr = function(length){
	if(length >= 0) return this.substr(0, length);
	else return this.substr(0, this.length + length);
}

Date.prototype.toUKDate = function(){
	var day = String(this.getDate()).padLeft('0',2);
	var month = String(this.getMonth() + 1).padLeft('0',2);
	
	return day + '/' + month + '/' + this.getUTCFullYear();
}

Date.prototype.fromUKDate = function(str){
	this.setTime(0);
	this.setDate(str.substr(0,2));
	this.setMonth(str.substr(3,2) - 1);
	this.setFullYear(str.substr(6,4));
	
	return this;
}

Date.prototype.incDay = function(){
	this.setDate(this.getDate() + 1);
	
	return this;
}

Array.prototype.contains = function(val){
	for(var i = 0; i < this.length; i++){
		if((this[i].valueOf != undefined) && (val.valueOf != undefined) && (this[i].valueOf() == val.valueOf())) return true;
		else if(this[i] == val) return true;	
	}
	return false;
}

if(Array.prototype.push == undefined){
	Array.prototype.push = function(val){
		this[this.length] = val;
	}	
}
