if(!JS_NETLASH) {var JS_NETLASH = new Object();}
JS_NETLASH.utils = new Object();
JS_NETLASH.utils.string = {
	// datamembers
	version: '20091203',
	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 = {
	// datamembers
	version: '20081210',
	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());
	},
	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
}
JS_NETLASH.utils.input = {
	parameters_to_object: function(strParams) {
		if (typeof strParams !== 'string') throw new Error('classes must be string of strings separated by spaces');
		var aParams = strParams.split(' ');
		var oParams = {};
		jQuery.each(aParams, function() {
			var p = this.split('_');
			if(p.length === 3 && p[0] === 'js') oParams[p[1]] = p[2];
		});
		return oParams;
	},
	_eoo: true
}
