function addEvent(obj, evType, fn) {
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, true);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		return false;
	}
}
function addEventToId(id, evType, fn) {
	addEvent(document.getElementById(id), evType, fn);
}
function setStyleById(i, p, v) {
	var n = document.getElementById(i);
	n.style[p] = v;
}

//A generic show/hide function that can be effectively extended by other functions (see rule-edit.js)
//It is specifically for use with sebForms - any use outside of that would be coincidental
function toggleField(field,action) {
	if ( !document.getElementById ) {return false;}
	if ( !document.getElementById('lbl-' + field) ) {return false;}
	
	var lblOptions = document.getElementById('lbl-' + field);
	var inpOptions;
	var oOptions;
	var dispType;
	
	if ( document.getElementById(field + '_set') ) {
		inpOptions = document.getElementById(field + '_set');
	} else {
		inpOptions = document.getElementById(field);
	}
	
	if ( lblOptions.parentNode.nodeName == "DIV" ) {
		oOptions = lblOptions.parentNode;
		dispType = 'block';
	} else if ( lblOptions.parentNode.parentNode.nodeName == "TR" ) {
		oOptions = lblOptions.parentNode.parentNode;
		dispType = 'table-row';
	}
	
	if ( action == 'hide' ) {
		oOptions.style.display = "none";
		lblOptions.style.display = "none";
		inpOptions.style.display = "none";
	} else {
		try {
			oOptions.style.display = dispType;
		} catch (err) {
			oOptions.style.display = "block";
		}
		lblOptions.style.display = "block";
		inpOptions.style.display = "block";
	}
}
function showOptions(type) {
	if (!document.getElementById) {return false;}
	if ( arguments.length >= 2 ) {
		field = arguments[1];
	} else {
		field = arguments[0];
	}
	var allOptions = document.getElementById('all' + type + '_1');
	
	if ( allOptions.checked ) {
		toggleField(field,'hide')
	} else {
		toggleField(field,'show')
	}
}
function mailDecrypt(encEmail) {
	var arrMail = encEmail.split(",");
	var i;
	var addr = '';
	
	for ( i=0; i < arrMail.length; i++ ) {
		addr += String.fromCharCode(arrMail[i])
	}
	
	return addr;
}
function emailEncrypt(encEmail) {
	var links;
	var i;
	var addr = '';
	var arrMail = encEmail.split(",");
	for ( i=0; i < arrMail.length; i++ ) {
		addr += String.fromCharCode(arrMail[i])
	}
	if (document.getElementsByTagName) {
		links = document.getElementsByTagName('a');
		for ( i=0; i < links.length; i++ ) {
			if ( links[i].className == 'email' ) {
				links[i].href = 'mailto:' + addr;
				//links[i].innerHTML = addr;
			}
		}
	}
}
function loadEmail() {
	if ( typeof encEmail != 'undefined' ) {
		emailEncrypt(encEmail);
	}
}
addEvent(window,'load',loadEmail);
