
var zoom = (function (zoom) {
	zoom.util = {};
	
	// Remove accents
	var accents =   ['á', 'à', 'ã', 'â', 'ä', 'å', 'Á', 'À', 'Ã', 'Â', 'Ä', 'Å', 'é', 'è', 'ê', 'ë', 'É', 'È', 'Ê', 'Ë', 'í', 'ì', 'î', 'ï', 'Í', 'Ì', 'Î', 'Ï', 'ó', 'ò', 'õ', 'ô', 'ö', 'Ó', 'Ò', 'Õ', 'Ô', 'Ö', 'ú', 'ù', 'û', 'ü', 'Ú', 'Ù', 'Û', 'Ü', 'ç', 'Ç', 'ñ', 'Ñ'];
	var noaccents = ['a', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'A', 'e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'i', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'o', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'O', 'u', 'u', 'u', 'u', 'U', 'U', 'U', 'U', 'c', 'C', 'n', 'N'];
	
	var reLetterOrDigit = /^([a-zA-Z]|\d)$/;
	
	// Same as flatten string but it also removes non alpha numeric and removes extra spacing
	zoom.util.flattenStringAndClean = function (str) {
		if (str == null) {
			return "";
		}
		
		var sb = "";
		var ind = 0;
		
		var lastCh = ' ';
		var m = str.length;
		for (var i = 0; i < m; i++) {
			var ch = str.charAt(i);
			
			if ((ch.charCodeAt(0)) >= 128) {		// Fast shortcut.  Chars below 128 (ascii) should stay unmodified
				for (ind = 0; ind < accents.length; ind++) {
					if (ch == accents[ind]) {
						break;
					}
				}
				if (ind < accents.length) {
					ch = noaccents[ind];
				}
			}
			
			if (!reLetterOrDigit.test(ch)) {
				ch = ' ';
			}
			
			if (ch == ' ' && lastCh == ' ') {
				continue;
			}
			
			sb = sb.concat(ch.toLowerCase());
			lastCh = ch;
		}
		
		return $.trim(sb);
	}
	
	return zoom;
}(zoom || {}));


