var picwin;
function poppic (pic, cap, w, h) {
	w += 80;
	h += 108;

	if ((picwin) && (!picwin.closed)) {
		picwin.resizeTo (w, h + 30);
	}
	picwin = window.open ('poppic?p=' + pic + '&c=' + cap, 'picpop', 'scrollbars,resizable,width=' + w + ',height=' + h);
	picwin.focus();
}

function closepop() {
	if ((picwin) && (!picwin.closed)) {
		picwin.close();
	}
}


function noSpam() {
	var link = noSpam.arguments[0];
	var pre = noSpam.arguments[1];

	var myat = String.fromCharCode(64);
	var mydot = String.fromCharCode(46);
	var addr = '';
	var i;
	for (i = 2; i < noSpam.arguments.length; i++) {
		if (addr) {
			addr += (i == pre + 2) ? myat : mydot;
		}
		addr += noSpam.arguments[i];
	}
	
	var str = '';
	if (link) {
		str = '<a href="mailto:' + addr + '">';
		str += (link == 'addr') ? addr : link;
		str += '<\/a>';
	}
	else {
		str = addr;
	}
	
	document.write (str);
}


// check whether email address is valid
// argument: email address(es)
// returns: boolean
function isEmail (str) {
	// if the string's empty, no good
	if (!str) {
		return false;
	}
	
	// split on commas
	var addrs = str.split (/\s*,\s*/);
	
	for (var i = 0; i < addrs.length; i++) {
		// disallowed characters: if we find any of these, no good
		var iChars = ' *|"<:>[]{}`\';()&$#%';
		for (var j = 0; j < addrs[i].length; j++) {
			if (iChars.indexOf(addrs[i].charAt(j)) != -1) {
				return false;
			}
		}
		
		// position in string of @
		var iAt = addrs[i].indexOf('@');
		// position in string of second @ (if any)
		var jAt = addrs[i].indexOf('@', iAt + 1);
		// position in string of last .
		var iDot = addrs[i].lastIndexOf('.');
		// if @ is absent or first character, or there's more than one @
		// or the last . is too near the end or too close to @,
		// no good
		if (iAt < 1 || jAt != -1 || iDot > addrs[i].length - 3 || iDot - iAt < 2) {
			return false;
		}
	}

	// otherwise, fine!
	return true;
}

