String.prototype.trim = function()/*:String*/ {
	return this.replace(/^\s+/g, "").replace(/\s+$/g, "");
}

String.prototype.reverse = function ()/*:String*/ {
	var result = "";
	for (var i = this.length - 1; i >= 0; i--) {
		result += this.charAt(i);
	}
	return result;
}

String.prototype.isEmail = function ()/*:Boolean*/  {
	return this.search(/^[a-z0-9\._-]+@+[a-z0-9\._-]+\.[a-z]{2,4}$/i) != -1;
}

String.prototype.isPhone = function ()/*:Boolean*/  {
	//+7 ( 098 )  888 77 15
	return this.search(/^ *(\+ *\d{1,3} +)?(\( *\d{1,3} *\) +)?\d+( *-? *\d+)* *$/) != -1;
}

String.prototype.extention = function ()/*:String*/ {
	var result = this.match(/(?:\.)([^\.\\\/]+$)/);
	return result && result[1] ? result[1] : "";
}

String.prototype.isInteger = function ()/*:Boolean*/ {
	return this.trim().search(/^\d+$/) != -1;
}

String.prototype.isBlank = function ()/*:String*/ {
	return this.search(/^\s*$/) != -1;
}

String.prototype.format = function ()/*:String*/ {
	var result = this;
	for (var i = 0; i < arguments.length; i++)
		result = result.replace(new RegExp("%" + (i + 1)), arguments[i]);
	return result;
}

String.prototype.unixSeparator = function ()/*:String*/ {
	return this.replace(/\\/g, "/");
}

var STRING_JS = true;