// select deselect rows in table data lists
function toggle(element) {
	rowclass = element.className;
	expr = new RegExp("selected", "i");
	result = rowclass.match(expr);
	if(result) {
		element.className = element.className.replace('selected', '');
	} else {
		element.className += ' selected';	
	}
}

// show/hide any div by swaping the display property
function toggle_dis(obj) {
	var el = document.getElementById(obj);
	el.style.display = (el.style.display!="none")?"none":"block";
}

// show/hide advanced options table
function toggle_advtable(obj) {
	if (document.getElementById(obj).style.display == 'none') {
		document.getElementById('shadowmenu1').className = 'hiddenRow';
		document.getElementById(obj).style.display = 'inline';
	} else {
		document.getElementById('shadowmenu1').className = '';
		document.getElementById(obj).style.display = 'none';
	}
}

function toggle_menu(obj) {
	var parent = obj.parentNode;
	parent.className = (parent.className!="panel-visible")?"panel-visible":"panel-hidden"
}

function toggle_pane(obj) {
	var pane = document.getElementById(obj);
	pane.className = (pane.className!="tablepane")?"tablepane":"tablepane tablepane-hidden"
}

// url change
function go_to(href) {
	document.location = href;
}

/* ---------------------------------------------------------------------------------------------------- */
// check all/uncheck all
function checkAll(formobj, groupobj) {
	for (i=0,n=formobj.elements.length;i<n;i++)
	if (formobj.elements[i].name && formobj.elements[i].name.indexOf(groupobj) !=-1)
		formobj.elements[i].checked = true;
}
function uncheckAll(formobj, groupobj) {
	for (i=0,n=formobj.elements.length;i<n;i++)
		if (formobj.elements[i].name && formobj.elements[i].name.indexOf(groupobj) !=-1)
			formobj.elements[i].checked = false;

}
function toggle_checkboxes(chkboxobj, formobj, groupobj) {
	if (chkboxobj.checked) {
		checkAll(formobj, groupobj);
	} else {
		uncheckAll(formobj, groupobj);
	}
}

function checkboxesform(formobj, formaction) {
	var form = document.getElementById(formobj);
	if (!AnySelected(form)) {
		window.alert('You must select at least one entry first.');
		return;
	}
	if (formaction.indexOf('multidelete') !=-1) {
		if (!window.confirm('Are you sure you wish to delete these entries?')) {
			return;
		}
	}
	form.setAttribute("action", formaction);
	form.submit();
}
function AnySelected(formobj) {
	for (i = 0; i < formobj.elements.length; i++) {
		if (formobj.elements[i].checked) return true;
	}
	return false;
}
/* ---------------------------------------------------------------------------------------------------- */

function toggle_chkbox_all(obj) {
	var form = document.getElementById("hiddencheckboxes");
	var masterbox = document.getElementById(obj);

	if(!form || !masterbox) {
		return;
	}

	if(masterbox.getAttribute("src") == "themes/default/images/checkbox_off.gif") {
		newchkboxstate = true;
		newimgsrc = "themes/default/images/checkbox_on.gif";
	} else if(masterbox.getAttribute("src") == "themes/default/images/checkbox_on.gif") {
		newchkboxstate = false;
		newimgsrc = "themes/default/images/checkbox_off.gif";
	}

	// traverse form and apply new state
	var inputs = form.getElementsByTagName("input");
	for (var i = 0, el; el = inputs[i]; i++) {
		if (el.type == "checkbox") {
			// get image id from checkbox id
			chkid = el.id;
			imgid = chkid.replace(/formchk/i, "imgchk");

			// apply new states
			var fake_checkbox = document.getElementById(imgid);
			fake_checkbox.setAttribute("src",newimgsrc);
			el.checked = newchkboxstate;
		}
	}

	masterbox.setAttribute("src",newimgsrc);
}

function toggle_chkbox(obj) {
	var form = document.getElementById("hiddencheckboxes");

	if(!form) {
		return;
	}

	var real_checkbox = document.getElementById("formchk"+obj);
	var fake_checkbox = document.getElementById("imgchk"+obj);

	if(real_checkbox && fake_checkbox) {
		if(real_checkbox.checked == true) {
			real_checkbox.checked = false;
			fake_checkbox.setAttribute("src","themes/default/images/checkbox_off.gif");
		} else if(real_checkbox.checked == false) {
			real_checkbox.checked = true;
			fake_checkbox.setAttribute("src","themes/default/images/checkbox_on.gif");
		}
	}
}

// append debug messages to the console div
function append_system_message(type, mesg, file, line) {
	var element = document.createElement("span");
	element.setAttribute("class",type);
	element.appendChild(document.createTextNode("["+type+"] "+file+" line "+line+": "+mesg));

	if (document.getElementById('console')) {
		document.getElementById('console').appendChild(element);

		if (document.getElementById('console').style.display != 'block') {
			document.getElementById('console').style.display = 'block';
		}
	}
}

function popup(JumpPoint,WinName,x,y) {
	remote = window.open(JumpPoint,WinName,"status=no,toolbar=no,scrollbars=no,width="+x+",height="+y+"");
	if (window.focus) {remote.focus()}
}

function hi(text){var count=0, text, dv;if(text==null || text.length==0) return;
dv=document.defaultView;function searchWithinNode(node, te, len){var pos, skip, spannode, middlebit, endbit, middleclone;skip=0;if( node.nodeType==3 ) {
pos=node.data.toUpperCase().indexOf(te);
if(pos>=0){spannode=document.createElement("SPAN");spannode.style.backgroundColor="#bb0000";spannode.style.color="white";
spannode.style.border="1px dashed #052684";middlebit=node.splitText(pos);
endbit=middlebit.splitText(len);middleclone=middlebit.cloneNode(true);
spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;
skip=1;}}else if(node.nodeType==1&& node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){for (var child=0; child < node.childNodes.length; ++child){
child=child+searchWithinNode(node.childNodes[child], te, len);}}return skip;}searchWithinNode(document.body, text.toUpperCase(), text.length);z=(count==1?"":"s");}

function swap_letter(id, subdir) {
	jQuery('#'+id+' .content p:first').each(function(index) {
		var paragraph = this;
		var node = paragraph;
		while (node.childNodes.length) {
			node = node.firstChild;
		}
		var text = node.nodeValue;
		var first_letter = text.substr(0,1);
		var match = /[a-zA-Z]/.test(first_letter);
		if ( match ) {
			node.nodeValue = text.slice(1);
			$('<img />')
			.attr('src','themes/'+subdir+'/images/alphabet/' + first_letter.toLowerCase() + '.png')
			.attr('alt',first_letter)
			.addClass('fancy-letter')
			.prependTo( paragraph );
			first_letter = "";
		}
	});
}

