function fix_margins() {
	var selector = 'DIV#content P + UL, DIV#content P + OL';
	var elements = cssQuery(selector);
	for(var i = 0; i < elements.length; i++) {
		elements[i].style.marginTop = '-15px';
	}


	selector = 'DIV#becoming-member P + UL';
	elements = cssQuery(selector);
	for(var i = 0; i < elements.length; i++) {
		elements[i].style.marginTop = '0px';
	}
}

function blur_links() {
	links = document.getElementsByTagName('a');
	formfields = document.getElementsByTagName('input');

	for(var i = 0; i < links.length; i++) {
		links[i].onfocus = new Function('this.blur();');
	}

	for(var i = 0; i < formfields.length; i++) {
		if(formfields[i].type == 'image') {
			formfields[i].onfocus = new Function('this.blur();');
		}
	}
}

function protect_images() {
	images = document.getElementsByTagName('img');

	for(var i = 0; i < images.length; i++) {
		images[i].oncontextmenu = new Function('return false;');
	}
}

function scroll_by(e, element, scroll_amount) {
	var key_code_page_up = 33;
	var key_code_page_down = 34;
	var key_code_home = 36;
	var key_code_end = 35;
	var key_code_cursor_up = 38;
	var key_code_cursor_down = 40;

	if (!e) {
		e = window.event;
	}

	var key_code = e.keyCode;

	if ((e.wheelDelta <= 0) || (e.detail > 0) || key_code == key_code_cursor_down) {
		element.scrollTop += scroll_amount;
	}
	else if ((e.wheelDelta > 0) || (e.detail < 0) || key_code == key_code_cursor_up) {
		element.scrollTop -= scroll_amount;
	}
	else if (key_code == key_code_page_down) {
		element.scrollTop += (5*scroll_amount);
	}
	else if (key_code == key_code_page_up) {
		element.scrollTop -= (5*scroll_amount);
	}
	else if (key_code == key_code_home) {
		element.scrollTop = 0;
	}
	else if (key_code == key_code_end) {
		element.scrollTop = 99999;
	}
}

function goto_top() {
	content_element.scrollTop = 0;
}

function add_event(obj, type, fn) { 
	if (obj.attachEvent) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	}
	else {
		obj.addEventListener(type, fn, false);
	}
}

function remove_event(obj, type, fn) {
	if (obj.detachEvent) {
		obj.detachEvent('on'+type, obj[type+fn]);
		obj[type+fn] = null;
	}
	else {
		obj.removeEventListener(type, fn, false);
	}
}


function switch_image(image_object, image_source) {
	if (!is_object(image_object)) {
		image_object = document.getElementById(image_object);
	}

	image_object.src = image_source;
}

function is_alien(a) {
	return is_object(a) && typeof a.constructor != 'function';
}

function is_array(a) {
	return is_object(a) && a.constructor == Array;
}

function is_boolean(a) {
	return typeof a == 'boolean';
}

function is_empty(o) {
	var i, v;

	if (is_object(o)) {
		for (i in o) {
			v = o[i];
			if (is_undefined(v) && is_function(v)) {
				return false;
			}
		}
	}
	else {
		if((!is_undefined(o)) && (o.length > 0)) {
			return false;
		}
	}

	return true;

}

function is_function(a) {
	return typeof a == 'function';
}

function is_null(a) {
	return typeof a == 'object' && !a;
}

function is_number(a) {
	return typeof a == 'number' && isFinite(a);
}

function is_object(a) {
	return (a && typeof a == 'object') || is_function(a);
}

function is_string(a) {
	return typeof a == 'string';
}

function is_undefined(a) {
	return typeof a == 'undefined';
}


function is_email(string) {
	var reg_exp = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var obj = new RegExp(reg_exp);

	return obj.test(string);
}

function test_for_object_by_id(id, tag) {
	var obj = document.getElementById(id);

	if(is_object(obj)) {
		if(!is_undefined(tag)) {
			if(obj.tagName.toLowerCase() == tag.toLowerCase()) {
				return obj;
			}
		}
		else {
			return obj;
		}
	}

	return null;
}

function bool(value) {
	if(value) {
		switch(value) {
			case false:
			case 'false':
			case '-1':
				return false;
			default:
				return true;
		}
	}

	return null;
}

function decrypt_mailto(s) {
	var n = 0;
	var r = 'mailto:';

	for (var i = 0; i < s.length; i++) {
		n = s.charCodeAt(i);
		if (n >= 8364) {
			n = 128;
		}
		r += String.fromCharCode(n - 1);
	}

	location.href = r;
}
