/* $Revision$ */

// pre-reqs: cookie, usgn
// auto-loads: tea, md5-min

var _init = false, df, cl, input_pass, key;
function init() {
	if (_init) {
		return;
	}

	_init = true;

	var log = USGN.util.log;
	df = document.form1;

	if (!df.input_pass) {
		if (!df.pass) {
			log('input_pass and pass are missing, I can not work here');
			alert('input_pass and pass are missing, I can not work here');
			df.action = '';
			df.onsubmit = function() { return false; };
			return false;
		}

		log('input_pass is missing, adding it over top of pass');

		var h = document.createElement('input');
		h.type = 'password';
		h.name = 'input_pass';
		df.pass.type = 'hidden';
		df.pass.parentNode.insertBefore(h, df.pass);
		input_pass = h;
	} else {
		input_pass = df.input_pass;
	}

	input_pass.onkeypress = keyz;
	input_pass.value = '';
	var usr = getCookie('_user');
	if (usr != null) {
		df.user.value = usr;
		input_pass.focus();
	} else if (df.user.value == '') {
		df.user.focus();
	}

	var r = (new QueryString).param('redir');
	if (r && !df.redir) {
		var h = document.createElement('input');
		h.type = 'hidden';
		h.name = 'redir';
		h.value = r;
		df.appendChild(h);
	}
	if (!window.hex_md5 && (!df.key || !df.key.value)) {
		var h = document.createElement('script');
		h.src = "/cgi/java-script/md5-min.js";
		document.body.appendChild(h);
		log('hex_md5 missing, make sure to include <script src="/cgi/java-script/md5-min.js"> I dynamically loaded it for now');
	}
	if (!window.encrypt) {
		var h = document.createElement('script');
		h.src = "/cgi/java-script/tea.js";
		document.body.appendChild(h);
		log('encrypt missing, make sure to include <script src="/cgi/java-script/tea.js I dynamically loaded it for now');
	}
	if (!window.jQuery) {
		var h = document.createElement('script');
		h.src = "/cgi/java-script/jquery-1.2.6.pack.js";
		document.body.appendChild(h);
		log('jquery missing, make sure to include <script src="/cgi/java-script/jquery-1.2.6.pack.js I dynamically loaded it for now');
	}
	if (!df.key) {
		var h = document.createElement('input');
		h.type = 'hidden';
		h.name = 'key';
		df.appendChild(h);
		key = h;
	} else {
		key = df.key;
	}
	cl = document.getElementById('caps');
	if (!cl) {
		var h = document.createElement('div');
		h.id = 'caps';
		var hs = h.style;
		hs.display = 'inline';
		hs.color = 'red';
		hs.fontWeight = 'bold';
		input_pass.parentNode.insertBefore(h, input_pass.nextSibling);
		cl = h;
	}
}

function auth() {
	if (df.user.value == "" || input_pass.value == "") {
		alert('Neither field can be blank!');
		if (df.user.value == '') df.user.focus();
		else input_pass.focus();
		return false;
	}

	setCookie('_user', df.user.value, 1);

	if (!key.value && window.hex_md5) {
		key.value = hex_md5(mkseed());
	}

	df.pass.value = window.encrypt ? encrypt(input_pass.value, key.value) : input_pass.value;

	// don't submit this to the server
	input_pass.value = '';

	df.submit();
	return true;
}

function keyz(e) {
	var k;
	if (e) {
		k = e.which;
	} else {
		k = event.keyCode;
		e = event;
	}

	if (k == 13) {
		e.returnValue = false;
		auth();
		return false
	}
	var sk = e.shiftKey
		? e.shiftKey
		: k == 16
			? true
			: false;

	if (!cl) {
		cl = document.getElementById('caps');
	}
	if ((k >= 65 && k <= 90 && !sk) || (k >= 97 && k <= 122 && sk)) {
		cl.innerHTML = 'Caps Lock is on';
	} else {
		cl.innerHTML = '';
	}
}
function reset(url) {
	if (df.user.value) {
		url += (url.indexOf('?') == -1 ? '?' : '&') + 'username=' + df.user.value;
	}
	window.location.href = url;
}
function mkseed() {
	var x = 30;
	var s = '';
	var abc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var abcl = abc.length - 1;
	while (x-- > 0) {
		s += abc.charAt(Math.round(abcl*Math.random()));
	}
	return s;
}

