if (!JS_NETLASH) { var JS_NETLASH = new Object(); }
JS_NETLASH.utils = new Object();
JS_NETLASH.utils.string = {
 	version : '20080618',
	trim : function(str) { return str.replace(/^\s+|\s+$/g,""); },
	ltrim : function(str) { return str.replace(/^\s+/,""); },
	rtrim : function(str) { return str.replace(/\s+$/,""); },
	replaceAll : function(str, needle, replacement) { return str.replace(new RegExp(needle, 'g'), replacement); },
	assignFromObject : function(str, object) { 
		for (index in object) { str = JS_NETLASH.utils.string.replaceAll(str, '{' + index + '}', object[index]); }
		return str;
	},
	html_entity_decode : function (str) {
		if (!str || (str == undefined))	return '';
		var ta = document.createElement("textarea");
		ta.innerHTML = str.replace(/</g,"<").replace(/>/g,">");
		toReturn = ta.value;
		ta = null;
		return toReturn;
	},
	htmlentities : function (str) {
		if (!str || (str == undefined))	return '';
		var i,carac,letra,novo='';
		for(i=0;i<str.length;i++){
			carac = str[i].charCodeAt(0);
			if( (carac > 47 && carac < 58) || (carac > 62 && carac < 127) || (carac == 32) || (carac == 45) || (carac == 46) ) { novo += str[i]; }
			else { novo += "&#" + carac + ";"; }
		}
		return novo;
	},
	ucfirst : function(str) {
		if (!str) return '';
		return str.charAt(0).toUpperCase() + str.substr(1, str.length-1);
	},
	urlise : function(str) {
		if (!str) return '';
		str = JS_NETLASH.utils.string.htmlentities(str);
		var aCharacters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', ' '];
		var aSearchA = ['&Agrave;', '&#192;', '&Aacute;', '&#193;', '&Acirc;', '&#194;', '&Atilde;', '&#195;', '&Auml;', '&#196;', '&Aring;', '&#197;', '&agrave;', '&#224;', '&aacute;', '&#225;', '&acirc;', '&#226;', '&atilde;', '&#227;', '&auml;', '&#228;', '&aring;', '&#229;'];
		var aReplaceA = 'a';
		var aSearchC = ['&Ccedil;', '&#199;', '&ccedil;', '&#231;'];
		var aReplaceC = 'c';
		var aSearchE = ['&Egrave;', '&#200;', '&Eacute;', '&#201;', '&Ecirc;', '&#202;', '&Euml;', '&#203;', '&egrave;', '&#232;', '&eacute;', '&#233;', '&ecirc;', '&#234;', '&euml;', '&#235;'];
		var aReplaceE = 'e';
		var aSearchI = ['&Igrave;', '&#204;', '&Iacute;', '&#205;', '&Icirc;', '&#206;', '&Iuml;', '&#207;', '&igrave;', '&#236;', '&iacute;', '&#237;', '&icirc;', '&#238;', '&iuml;', '&#239;'];
		var aReplaceI = 'i';
		var aSearchL = ['&lgrave;', '&#204;', '&lacute;', '&#205;', '&lcirc;', '&#206;', '&luml;', '&#207;'];
		var aReplaceL = 'l';
		var aSearchN = ['&Ntilde;', '&#209;', '&ntilde;', '&#241;'];
		var aReplaceN = 'n';
		var aSearchO = ['&Ograve;', '&#210;', '&Oacute;', '&#211;', '&Ocirc;', '&#212;', '&Otilde;', '&#213;', '&Ouml;', '&#214;', '&ograve;', '&#242;', '&oacute;', '&#243;', '&ocirc;', '&#244;', '&otilde;', '&#245;', '&ouml;', '&#246;'];
		var aReplaceO = 'o';
		var aSearchU = ['&micro;', '&#181;', '&Ugrave;', '&#217;', '&Uacute;', '&#218;', '&Ucirc;', '&#219;', '&Uuml;', '&#220;', '&ugrave;', '&#249;', '&uacute;', '&#250;', '&ucirc;', '&#251;', '&uuml;', '&#252;', '&mu;', '&#956;'];
		var aReplaceU = 'u';
		var aSearchY = ['&Yacute;', '&#221;', '&yacute;', '&#253;', '&yuml;', '&#255;', '&Yuml;', '&#376;'];
		var aReplaceY = 'y';
		var aSearchMisc = ['&trade;', '&euro;', '&copy', '@'];
		var aReplaceMisc = [' tm ', ' euro ', ' copyright ', ' at '];
		var replacements = [
			[aSearchA, aReplaceA],
			[aSearchC, aReplaceC],
			[aSearchE, aReplaceE],
			[aSearchI, aReplaceI],
			[aSearchL, aReplaceL],
			[aSearchN, aReplaceN],
			[aSearchO, aReplaceO],
			[aSearchU, aReplaceU],
			[aSearchY, aReplaceY],
			[aSearchMisc, aReplaceMisc]
		];
		for (snp in replacements) {
			var aSearch 	= replacements[snp][0];
			var sReplace 	= replacements[snp][1];
			for (srch in aSearch) { str	= JS_NETLASH.utils.string.replaceAll(str, aSearch[srch], sReplace); }
		}
		str = str.replace(/&[a-z0-9\#]{2,8};/ig, '');
		str = str.toLowerCase();
		str = JS_NETLASH.utils.string.replaceAll(str, '\\.', ' ');
		str = JS_NETLASH.utils.string.trim(str);
		var toReturn = '';
		for (var i = 0; i < str.length; i++)
		{
			if (jQuery.inArray(str.substr(i, 1), aCharacters) > -1)	toReturn += str.substr(i, 1);
		}
		toReturn = JS_NETLASH.utils.string.replaceAll(toReturn, ' ', '-');
		if(toReturn.length != 0) { toReturn = toReturn.replace(/\-+/ig,'-'); }
		toReturn = toReturn.replace(/^\-+/,"").replace(/\-+$/,"");
		return toReturn;
	},
	_eoo : true
}
JS_NETLASH.utils.form = {
 	version	: '20080618',
	isFilled : function(input) { return (JS_NETLASH.utils.string.trim(input.val()) != ''); },
	isNumber : function(input) { return (!isNaN(input.val()) && input.val() != ''); },
	isEmail	: function(input) {
		var regexp = /^[a-z0-9_\.-]+@([a-z0-9]+([\-]+[a-z0-9]+)*\.)+[a-z]{2,7}$/i;
		return regexp.test(input.val());
	},
	isUrl : function(input) {
		var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i;
		return regexp.test(input.val());
	},
	isDate : function(input) { return true; }, 
	isColor : function(input) {
		var regexp = /^\#?[0-9A-F]{6}$/i;
		return regexp.test(input.val().toUpperCase());
	},
	isChecked : function(input) { return ($("input[name='" + input.attr('name') + "']:checked").length >= 1); },
	isSelected : function(select) { return (select.get(0).selectedIndex !== 0); },
	_eoo : true
}
