function dump(item) {
	var dump = '';
	for(x in item) {
		dump += x+': '+item[x]+'\n';
	}
	return dump;
}

function toggle_elements(name) {
	// Use input to control the state of the toggle
	var t_input = $('input[name='+name+']');
	// Check if input is registering as visible(1) or hidden(0)
	if(t_input.val() > 0) {
		// Visible... switch to hidden
		t_input.val(0);
	} else {
		// Hidden... switch to visible
		t_input.val(1);
	}
	sync_toggle_elements(name);
}

function sync_toggle_elements(name) {
	var t_input   = $('input[name='+name+']');
	var t_img     = $('a[name='+name+'] img');
	var t_content = $('div[name='+name+']');
	var t_img_src = t_img.attr('src');
	var t_img_alt, t_img_title;
	// Check if input is registering as visible(1) or hidden(0)
	if(t_input.val() > 0) {
		// Visible... show content and get image attributes
		t_content.show();
		t_img_src = t_img_src.replace(/(plus|minus|spacer)/, 'minus');
		t_img_alt = '-';
		t_img_title = 'hide'
	} else {
		// Hidden... hide content and get image attributes
		t_content.hide();
		t_img_src = t_img_src.replace(/(plus|minus|spacer)/, 'plus');
		t_img_alt = '+';
		t_img_title = 'show'
	}
	// Update image attributes
	t_img.attr('src', t_img_src);
	t_img.attr('alt', t_img_alt);
	t_img.attr('title', t_img_title);
}


function multi_update_master(checkbox_name, master_id, checked) {
	var master_checked = false;
	if(checked) {
		// Determine if all elements are checked
		var all_checked = true;
		$("input[name='"+checkbox_name+"']").each(function () {
			all_checked = all_checked && this.checked;
		});
		if(all_checked) {
			// Everything is checked, we can check the master checkbox
			master_checked = true;
		}
	}
	// Update master checkbox
	$('#'+master_id).attr('checked', master_checked);
}

function multi_select_all(checkbox_name, checked) {
	$("input[name='"+checkbox_name+"']").each(function () {
		this.checked = checked;
	});
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return { x: scrOfX, y: scrOfY };
}

// Find/Replace function for HTML text nodes
function do_findReplace(node, pattern, replace) {
	switch(node.nodeType) {
		case 3: // Text Node
			node.data = node.data.replace(pattern, replace);
		break;
		case 1: // Element Node
			for(var i = 0; i < node.childNodes.length; i++) {
				do_findReplace(node.childNodes[i], pattern, replace);
			}
		break;
	}
}

// Extend jQuery with Find/replace function
jQuery.fn.extend({
  findReplace: function(pattern, replace) {
    return this.each(function() { do_findReplace(this, pattern, replace) });
  }
});

