var d = document;
var w = window;

// Generic code to focus a page on the first visible form
// element on a page - David Carter-Tod, wccartd@wcc.vccs.edu
function focusFirst() {
	var stopNow=false;
	for (var x=0; x < d.forms.length; x++){
		var currSet=d.forms[x].elements;
		for (var i = 0; i < currSet.length; i++) {
			if (currSet[i].type=='text'||currSet[i].type=='password'||currSet[i].type=='textarea'){
				currSet[i].focus();
				currSet[i].select();
				stopNow = true;
				break;
			}
		}
		if (stopNow) { break }
	}
}

// toggle display for debugging data
function toggle_display(myid) {
	if (d.getElementById(myid)) {
		var myEl = d.getElementById(myid);
		var onOff = 0;
		if (myEl.style.display != 'none') {
			myEl.style.display = 'none';
			onOff = 0;
		} else {
			myEl.style.display = '';
			onOff = 1;
			try {
				if (xmlhttp) {
					xmlhttp.open("GET","graph-log.cgi?graph=" + myid,true);
					xmlhttp.send(null);
				}
			}
			catch (e) {}
		}
		return onOff;
	}
}

// toggle display for without debugging data
function toggle_display_n(myid) {
	if (d.getElementById(myid)) {
		var myEl = d.getElementById(myid);
		var onOff = 0;
		if (myEl.style.display != 'none') {
			myEl.style.display = 'none';
			onOff = 0;
		} else {
			myEl.style.display = '';
			onOff = 1;
		}
		return onOff;
	}
}

function toggle_node(ao, i) {
	var myid = "cat_" + i;
	if (d.getElementById(myid)) {
		var onOff = toggle_display(myid);
		var icon = '';
		if (onOff) {
			icon = "\-";
		} else {
			icon = "\+";
		}
		ao.firstChild.nodeValue = icon;
	}
}

function hide_id(myid) {
	if (d.getElementById(myid))
		var myEl = d.getElementById(myid).style.display = 'none';
}

function show_id(myid) {
	if (d.getElementById(myid))
		var myEl = d.getElementById(myid).style.display = '';
}

// sethilight class
// set background color of matching rows on mouseover
function sethilight(myid,towhat) {
	var arr = new Array(6);
	arr[0] = ":1:0";
	arr[1] = ":1:1";
	arr[2] = ":2:0";
	arr[3] = ":2:1";
	arr[4] = ":3:0";
	arr[5] = ":3:1";

	var left = myid.id.slice(0,myid.id.indexOf(':',0));
	var col = myid.id.slice(myid.id.indexOf(':',0) + 1,myid.id.lastIndexOf(':',0) - 1);
	var orig = myid.id.slice(myid.id.length - 1);
	for(var x = 0; x < 6; x++){
		var myEl;
		if(myEl = d.getElementById(left + arr[x])){
			if(towhat == 0){
				myEl.className = 'flip' + x % 2;
			} else {
				myEl.className = 'hilight';
			}
		}	
	}	

}
// flip class
var hoverRe = new RegExp("hover", "gi");
function flip(tag) {
//	alert("class = "+ tag.className);
	if ((' '+ tag.className +' ').indexOf("hover") != -1) {
		tag.className = tag.className.replace(hoverRe, "");
	} else {
		tag.className = tag.className +" hover";
	}
}

// toggle checkboxes
function checkUncheckAll(oButton, boxgrp) {
	var box, i = 0, bWhich = (oButton.checked);
	while (box = boxgrp[i++])
		box.checked = bWhich;
	oButton.checked = (bWhich) ? 1 : 0;
}

function toggleCheckedAll(boxgrp) {
	var box, i = 0;
	while (box = boxgrp[i++])
		box.checked = box.checked ? 0 : 1;
}

function toggleChecked(myid) {
	if (d.getElementById(myid)) {
		var myEl = d.getElementById(myid);
		myEl.checked = myEl.checked ? 0 : 1;
	}
}

function toggleCheckboxes(frmID) {
	if (d.getElementById(frmID)) {
		var myEl = d.getElementById(frmID);
		for (var i = 0; i < myEl.elements.length; i++) {
			if (myEl.elements[i].type == 'checkbox'){
				myEl.elements[i].checked = !(myEl.elements[i].checked);
			}
		}
	}
}

function busyCursor(m) {
	var cs = (m) ? "wait" : 'default';
	d.body.style.cursor = cs;
	if (d.getElementById("progress")) {
		var myEl = d.getElementById("progress");
		var ypos = (isIE) ? window.document.body.scrollTop : window.pageYOffset;
		myEl.style.top = ypos;
		myEl.innerHTML = (m) ? 'Busy, please wait...' : '';
		if (m) { show_id('progress') } else { hide_id('progress') }
	}
}

var _POPUP_FEATURES = 'location=0,statusbar=0,scrollbars=1,menubar=0,width=340,height=400';

function raw_popup(url, target, features) {
	if (isUndefined(features)) features = _POPUP_FEATURES;
	if (isUndefined(target)) target = '_blank';
	var theWindow = window.open(url, target, features);
	theWindow.focus();
	return theWindow;
}

function popUp(src, features) {
	return raw_popup(
		src.getAttribute('href'),
		src.getAttribute('target') || '_blank',
		features
	);
}

function isUndefined(v) {
	var undef;
	return v===undef;
}