	function gvbc(classID, hide_empty) {
		var getstr = '';
		obj = getElementsByClass(classID);
		for (i=0; i<obj.length; i++) {
			if (obj[i].tagName == "INPUT" || obj[i].tagName == "TEXTAREA" || obj[i].tagName == "HIDDEN") {
				if (obj[i].type == "text" ||obj[i].type == "password" || obj[i].type == "submit" || obj[i].type == "textarea" || obj[i].type == "hidden") {
					getstr += obj[i].name + "=" + encodeURIComponent(obj[i].value) + "&";
				}
				if (obj[i].type == "checkbox") {
					if (obj[i].checked) {
						getstr += obj[i].name + "=" + encodeURIComponent(obj[i].value) + "&";
					} else {
						if(!hide_empty) getstr += obj[i].name + "=&";
					}
				}
				if (obj[i].type == "radio") {
					if (obj[i].checked) {
						getstr += obj[i].name + "=" + encodeURIComponent(obj[i].value) + "&";
					}
				}
			}
			if (obj[i].tagName == "SELECT") {
				var sel = obj[i];
				for (var is=0; is < sel.length; is++) {
					if(sel.options[is].selected) {
						getstr += sel.name + "=" + encodeURIComponent(sel.options[is].value) + "&";
					}
				}
			}
		}
		return getstr;
	}

	function getElementsByClass(searchClass,node,tag) {
		var classElements = new Array();
		if (node == null)
		node = document;
		if (tag == null)
		tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) {
			if (pattern.test(els[i].className) ) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	}

	function pfpi(url, str, f_id, pi_id) {
		jQuery('#'+pi_id).fadeIn(function() {
			var fi = jQuery('#'+f_id);
			jQuery.ajax({
				type: 'POST', async: false, url: url, data: str, dataType: 'html',
				success: function(data) {fi.html(data);},
				error: function() {fi.html('please try again');}
			});
		}).fadeOut('fast');
	}

