// Check all elem checkboxes according to checked value
function checkAll(name, checked) {
	e = document.getElementsByName(name);
	if (e != null) {
		for(i=0;i<e.length;i++) {
			e[i].checked = checked;
		}
	}
}

// Open help popup window
function openHelp(ref) {
	var hwnd = window.open('/help.asp?ref='+ref, 'helpwin', 'width=400,height=300');
}

// Submit main form
function submitMainForm(v) {
	var mainform = document.getElementById("mainform");
	if (mainform != null) {
		if (v != null) {
			var action = mainform.action;
			if (action != null) {
				action.value = v;
			}
		}
		mainform.submit();
		return(false);
	}
}

// Submit main form
function submitForm(v) {
	var mainform = document.getElementById(v);
	if (mainform != null) {
		if (v != null) {
			var action = mainform.action;
			if (action != null) {
				action.value = v;
			}
		}
		mainform.submit();
		return(false);
	}
}

// Set mode
function setMode(v) {
	var mainform = document.getElementById("mainform");
	if (mainform != null) {
		if (v != null) {
			var mode = mainform.mode;
			if (mode != null) {
				mode.value = v;
			}
		}
	}
}

// Throw a confirm popup
function confirmChoice(question, href) {
	if (confirm(question)) {
		document.location = href
	}
}

// Show filter controls and change filter button
function showFilterControls() {
	var btn = document.getElementById('filterbutton');
	var control = document.getElementById('filtercontrols');
	
	if (btn != null && control != null) {
		control.style.display = "block";
		btn.src = "img/filtersearch_tab.gif";
	}
}

// Hide filter controls and change filter button
function hideFilterControls() {
	var btn = document.getElementById('filterbutton');
	var control = document.getElementById('filtercontrols');
	
	if (btn != null && control != null) {
		control.style.display = "none";
		btn.src = "img/btn_w_filterresults.gif";
	}
}

// Toggle account sections on account page
function toggleAccountSection(s, force) {
	var section = document.getElementById(s);
	var button = document.getElementById(s + '_button');
	if (section != null) {
		if (section.style.display == "none" || force == 1) {
			section.style.display = "block";
			if (button != null) {
				button.src = 'img/btn_g_expand_down.gif';
			}
		} else {
			section.style.display = "none";
			if (button != null) {
				button.src = 'img/btn_g_expand_right.gif';
			}
		}
	}
}

// Unhide an element
function show(id, layout) {
	var e = document.getElementById(id);
	if (e != null) {
		if (layout == null) {
			e.style.display = "block";
		} else {
			e.style.display = layout;
		}
	}
}

// Hide an element
function hide(id) {
	var e = document.getElementById(id);
	if (e != null) {
		e.style.display = "none";
	}
}

// Move messages to the container with id=messagebox
// This is called in the footer on every page so you can
// customize the location of any messages that appear on
// the page by simply adding a <div id="messagebox"></div>
// wherever you'd like them to show. If javascript is
// disabled or there is no messagebox container, then
// nothing happens and the messages will appear in their
// default location at the top of the page.
function moveMessages() {
	var m = document.getElementById('message');
	var mb = document.getElementById('messagebox');
	if (m == null) return;
	if (mb == null) return;
	
	var html = m.parentNode.innerHTML;
	var newmessage = document.createElement('DIV');
	newmessage.innerHTML = html;
	
	m.parentNode.removeChild(m);
	mb.appendChild(newmessage);
	mb.style.display = "block";
}

// Opens and closes the multi-select popup boxes on the resume search and posting pages
function toggleMultiSelectPopup(id, v) {
	var e = document.getElementById(id + 'div');
	if (e != null) {
		if (e.style.display == "none" || v == 1) {
			var field = document.getElementById(id);
			var boxes = e.contentWindow.document.getElementsByTagName("INPUT");
			for(j=0;j<boxes.length;j++) {
				if (boxes[j].type.toLowerCase() == 'checkbox') {
					boxes[j].checked = false;
				}
			}
			for (i=0;i<field.length;i++) {
				if (field.options[i].selected) {
					// Iterate checkboxes in iframe
					for(j=0;j<boxes.length;j++) {
						if (boxes[j].type.toLowerCase() == 'checkbox') {
							if (boxes[j].value == field.options[i].value) {
								boxes[j].checked = true;
							}
						}
					}
					// If checkbox value = field.options[i].value then set checked
				}
			}
			
			e.style.display = "block";
		} else {
			var field = document.getElementById(id);
			var boxes = e.contentWindow.document.getElementsByTagName("INPUT");
			for(j=0;j<field.length;j++) {
				field[j].selected = false;
			}
			for (i=0;i<boxes.length;i++) {
				for(j=0;j<field.length;j++) {
					if (boxes[i].type.toLowerCase() == 'checkbox') {
						if (boxes[i].checked && boxes[i].value == field.options[j].value) {
							field.options[j].selected = true;
						}
					}
				}
			}
			
			e.style.display = "none";
		}
	}
}

// Does nothing (wink wink, nudge nudge)
function nop() {
}

// Add asterisks to the inner HTML of all elements tagged with the CSS
// class "labelrequired". It would be cleaner to do this in CSS with
// content:before but IE doesn't support it. :| jdw
function addAsterisks(n) {
	var i;
	var nodes = n.childNodes;
	for(i=0;i<nodes.length;i++) {
		if (nodes[i].nodeType == 1) {
			addAsterisks(nodes[i]);
			if (nodes[i].className != null) {
				if (nodes[i].className.indexOf('labelrequired') >= 0) {
					if (nodes[i].innerHTML.indexOf('asterisk') < 0) {
						nodes[i].innerHTML = '<span class="asterisk">*</span>&nbsp;' + nodes[i].innerHTML;
					}
				}
			}
		}
	}
}

// Called after every page is loaded. Here you can put whatever javascript
// hooks you want into any page.
function bodyLoaded() {
	// Move error messages
	moveMessages();
	show('messageparentinnerhtmlhack');
	
	// Add asterisks to elements with the class "labelrequired"
	addAsterisks(document);
}

