
var Passwords = {

	/* Password/phrase generator class
		(c) 2010 CopySense.co.uk ~ Martin Latter */

	loader: function() {

		document.getElementById("passform").onsubmit = function() {return false;};
		document.getElementById("passwordbutton").onclick = Passwords.generateWord;
		document.getElementById("passphrasebutton").onclick = Passwords.generatePhrase;
	},

	generateWord: function() {

		var iSeed = 0;
		var iNumSorts = 4;
		var sOs = "";

		var aLCchars = ["g","y","l","x","s","f","p","c","u","n","o","m","z","i","q","h","b","w","t","e","d","r","j","a","v","k"];
		var aUCchars = ["S","V","I","W","Q","O","M","P","J","R","B","Z","U","H","X","C","L","A","E","D","Y","K","F","N","G","T"];
		var aNchars = ["0","8","7","1","2","4","6","3","5","9"];
		var aExtchars = ["$","*","~","#","^","+","@"];

		function sorter(x, y) {
			var aRret = [-1, 1, 0];
			var iRnum = Math.floor(Math.random() * 3);
			return aRret[iRnum];
		}

		function rnd(iN) {
			return parseInt(Math.random() * iN, 10);
		}

		while (iNumSorts) { // jumble character arrays
			aLCchars.sort(sorter);
			aUCchars.sort(sorter);
			aNchars.sort(sorter);
			aExtchars.sort(sorter);
			iNumSorts--;
		}

		var oPWChars = document.getElementById("num");
		var iNumChars = oPWChars.options[oPWChars.selectedIndex].value;
		var bScf = (document.getElementById("ec").checked)? 1 : 0;

		for (var i = 0; i < iNumChars; i++) {
			iSeed = (bScf)? rnd(40) : rnd(30);
			if (iSeed < 10) {sOs += aLCchars[rnd(26)];}
			else if (iSeed > 9 && iSeed < 20) {sOs += aUCchars[rnd(26)];}
			else if (iSeed > 19 && iSeed < 30) {sOs += aNchars[rnd(10)];}
			else if (bScf) {sOs += aExtchars [rnd(aExtchars.length)];}
		}

		document.getElementById("passwordcont").innerHTML = sOs;
	},

	generatePhrase: function() {
			// concept from PHP Cookbook
		var aWords = ["dish","mother","hound","sudden","fellow","logged","wock","blade","earth","remove","dustbin","snails","direct","serves","daring","greek","chirp","reward","snakes","silly","uphold","wiring","grave","nurses","regent","ornate","dogmatic","burnt","mend","hinge","latent","verbal","dirt","ritual","drying","hobby","chest","sour","jabber","german"];
		var iWordsLen = (aWords.length - 1);
		var sOs = "";
		sOs = aWords[Math.round(Math.random() * iWordsLen)] + Math.floor((Math.random() * 98) + 1) + aWords[Math.round(Math.random() * iWordsLen)];
		sOs = sOs.charAt(0).toUpperCase() + sOs.slice(1);
		document.getElementById("passphrasecont").innerHTML = sOs;
	}
};


window.onload = Passwords.loader;
window.onunload = function() {Passwords = null;};
