Сделал чуток по проще, в функцию просто передаётся необходимая длина.
<script type="text/javascript">
function gen(l){
var arg = new Array(), l = l || 4;
for(var i = 0; i < Math.round((l / 3) + 0.49); i++) arg.push(rand(48,58), rand(65,91), rand(97,123))
for(var j, x, i = arg.length; i; j = parseInt(Math.random() * i), x = arg[--i], arg[i] = arg[j], arg[j] = x);
return String.fromCharCode.apply(this, arg).substr(0, l);
}
function rand(min, max){
return Math.floor(Math.random() * (max - min) + min);
}
</script>
<input id="pass" type="text" />
<input type="button" value="Генерировать 12" onclick="document.getElementById('pass').value = gen(12)" />