function tes_pwd_gen_numb(min, max){
	return (Math.floor(Math.random() * (max - min)) + min);
}

function tes_pwd_gen_chr(num, lwr, upr, oth, ext){
	var num_chr = "0123456789";
	var lwr_chr = "abcdefghijklmnopqrstuvwxyz";
	var upr_chr = lwr_chr.toUpperCase();
	var oth_chr = "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?";
	var sel_chr = ext;
	if(num == true)
		sel_chr += num_chr;
	if(lwr == true)
		sel_chr += lwr_chr;
	if(upr == true)
		sel_chr += upr_chr;
	if(oth == true)
		sel_chr += oth_chr;
	return sel_chr.charAt(tes_pwd_gen_numb(0, sel_chr.length));
}

function tes_pwd_gen_pass(len, ext, bgn_num, bgn_lwr, bgn_upr, bgn_oth,
	flw_num, flw_lwr, flw_upr, flw_oth){
	var res = "";
	if(len > 0){
			res += tes_pwd_gen_chr(bgn_num, bgn_lwr, bgn_upr, bgn_oth, ext);
		for(var i=1;i<len;i++)
			res += tes_pwd_gen_chr(flw_num, flw_lwr, flw_upr, flw_oth, ext);
		return res;
	}
}

function tes_pwd_process(){
	var mask 	= document.getElementById("mask").checked;
	var psw 	= (mask == true) ? "txt_password" : "txt_password";
	var pass 	= document.getElementById(psw);
	pass.value 	= tes_pwd_gen_pass(
		document.getElementById("tes_pwd_len").value,
		document.getElementById("tes_pwd_ext").value,
		document.getElementById("tes_pwd_bgn_num").checked,
		document.getElementById("tes_pwd_bgn_lwr").checked,
		document.getElementById("tes_pwd_bgn_upr").checked,
		document.getElementById("tes_pwd_bgn_oth").checked,
		document.getElementById("tes_pwd_flw_num").checked,
		document.getElementById("tes_pwd_flw_lwr").checked,
		document.getElementById("tes_pwd_flw_upr").checked,
		document.getElementById("tes_pwd_flw_oth").checked
	);
	chkPass(pass.value);
}
