/*
 * togglePassword
 * creates a link next to each password field on the page; clicking a link toggles all passwords
 * include this file at the end of your <body>
 * (if you include it earlier in the document, make sure that the pwToggler.init function isn't called until all forms are loaded)
 *
 * http://jaron.nl/blog/2009/how-to-unhide-passwords-on-your-site-and-everywhere-else/
*/
pwToggler = {
	//create separate object to avoid conflicts; create it in window to avoid doubles with greasemonkey script
	fields: Array(),
	showlink: "show passwords",//change this if you want another link text for showing passwords
	hidelink: "hide passwords",//change this if you want another link text for hiding passwords
	
	toggle: function() {
		var i;
		var fields = pwToggler.fields;
		for (i=0; i<fields.length; i++) {
			var newf = (fields[i].pf.style.display == "none") ? fields[i].pf : fields[i].tf;
			var oldf = (newf == fields[i].pf) ? fields[i].tf : fields[i].pf;
			var linktext = (newf == fields[i].pf) ? pwToggler.showlink : pwToggler.hidelink;
			newf.value = oldf.value;
			newf.name = oldf.name;
			oldf.name += "Dummy";
			newf.style.display = oldf.style.display;
			oldf.style.display = "none";
			fields[i].pf.nextSibling.innerHTML = linktext;
		}
	},

	addToggleLink: function(afterEl) {
		var a = document.createElement("a");
		a.href = "#";
		a.title = "Show/Hide all Passwords";
		a.onclick = function() {
			pwToggler.toggle();
			return false;
		};
		a.className = "pwToggler";
		//a.innerHTML = "&#x25CF; T";
		a.innerHTML = pwToggler.showlink;
		pwToggler.insertAfter(a,afterEl);
	},
	
	insertAfter: function(newElement,targetElement) {
		var parent = targetElement.parentNode;
		if(parent.lastchild == targetElement) {
			parent.appendChild(newElement);
		} else {
			parent.insertBefore(newElement, targetElement.nextSibling);
		}
	},
	
	init: function() {
		var i;
		var fields = pwToggler.fields;
		var inputs = document.getElementsByTagName("input");
		for (i=(inputs.length-1); i>0; i--) {
			var curr = inputs[i];
			if (curr.type.toLowerCase()=="password") {
				var tfield = document.createElement("input");
				tfield.type = "text";
				tfield.style.display = "none";
				var parent = curr.parentNode;
				parent.insertBefore(tfield, curr);
				pwToggler.fields.push({pf:curr,tf:tfield});
				pwToggler.addToggleLink(curr);
				//set field back to password when submitting to prevent browser from storing textfield value
				if (curr.form.attachEvent) {
					//ie - sigh -
					curr.form.attachEvent("onsubmit", function(){
						if (pwToggler.fields[0].pf.style.display == "none") {
							pwToggler.toggle();
						}
					});
				} else if (curr.form.addEventListener) {
					curr.form.addEventListener("submit",function(e) {
						if (pwToggler.fields[0].pf.style.display == "none") {
							pwToggler.toggle();
						}
					},false);
				}
			}
		}
	}
	
}
pwToggler.init();

