var map = {
	'a': '4',
	'e': '3',
	'i': '1',
	'o': '0',
	'c': '¢', // cent
	'g': '6',
	's': '5',
	'z': '2',
	'G': '6',
	'O': '0',
	'S': '$',
	'u': 'µ', // u-uml
	'x': 'ks'
};

function intelli(t){
	var r = '';
	
	var wstart = 0;
	var posschg = new Array();
	var realalpha = 0;

	for(var i=0; i<t.length; i++){
		var c = t.charAt(i);
		if(c == ' ' || c == '\r' || c == '\n' || c == '\t'){
			r += intelli2(t.substring(wstart, i), posschg, realalpha)+c;
			wstart = i+1;
			posschg = new Array();
			realalpha = 0;
		}else if(typeof map[c] != 'undefined'){
			posschg.push(i-wstart);
		}
		c = c.toUpperCase().charCodeAt(0);
		if(c >= 65 && c <= 90)
			realalpha++;
	}
	r += intelli2(t.substring(wstart), posschg, realalpha);
	return r;
}

function intelli2(t, p, r){
	if(t.length < 4 || r*2 < t.length || t.substr(0,5) == 'http:' || t.substr(0,4) == 'www.')
		return t;
	if(p.length == 0){
		var pos = Math.floor(t.length / 2);
		return t.substring(0, pos)+'.'+t.substring(pos);
	}
	var x = Math.ceil(t.length / 7);
	while(x > 0 && p.length > 0){
		var ind = Math.floor(Math.random()*p.length);
		var pos = p[ind];
		t = t.substring(0, pos)+map[t.charAt(pos)]+t.substring(pos+1);
		p.splice(ind, 1);
		x--;
	}
	return t;
}
