Ecco la funzione in oggetto:
(serve anche come upping, ovviamente  )
 )
	codice:
	String.prototype.setCase = function(pattern)
{
	if (typeof pattern != "string") return this;
	var a="a", _a="A", z="z", _z="Z", str="", i, j, pt, ch;
	String.prototype.__c = String.prototype.toString;
	for (i = 0, j = Math.min(this.length, pattern.length); i < j; i++)
	{
		ch = this.charAt(i);
		pt = pattern.charAt(i);
		String.prototype.__c = pt >= _a && pt <= _z ? 
		  String.prototype.toUpperCase : pt >= a && pt <= z ? 
		  String.prototype.toLowerCase : String.prototype.toString;
		str += ch.__c();
	}
	str += this.substring(i).__c();
	delete String.prototype.__c;
	return str;
}
 
Per motivi grafici ho inserito due invii a capo sulla riga dei ? perché era troppo lunga e "sbarellava" l'interfaccia del sito. Vanno tolti, altrimenti non funziona.