$(document).ready(function(){
	$("body").append("<div id='jqajax_interaction'></div>");
})

function jqajax() {
	var parameters = {};
	for (var i = 0; i < arguments[2].length; i++) {
		parameters[i] = arguments[2][i];
	}
	$jqinteract = $("#jqajax_interaction");
	
	if( $jqinteract.length != 1) {
		$jqinteract.hide();
	}
	
	$.ajax({
		type : "POST",
		url : arguments[0],
		data : { 
			"jqajax_callscript": arguments[1],
			jqajax_params : parameters
		},
		success : function (d) {
			$jqinteract.html(d);
		},
		beforeSend : arguments[3]
	});
	return false;
}


function jqajax_getFormVals( formId) {
	var checkboxes = $("#"+formId).find("input[type=checkbox]");
	var selects = $("#"+formId).find("select");
	var texts = $("#"+formId).find("input[type=text], input[type=hidden], input[type=password], textarea");
	var radios = $("#"+formId).find("input[type=radio]");

	var returnvalue = [];

	function in_array(stack, needle) {
		for ( var i= 0; i < stack.length; i++){
			if(stack[i] == needle){
				return true;
			}
		}
		return false;
	}

	function Selects(objset) {
		$(objset).each(function(){
			var attrname = $(this).attr("name");
			if(attrname != "") {
				if($(this).attr("multiple")) {
					var results = $(this).val();
					if( results != null) {
						returnvalue[attrname] = results;
					} else {
						returnvalue[attrname] = [];
					}
				} else {
					returnvalue[attrname] = $(this).val();
				}
			}
		});
	}

	function Radios(objset){
		var uniques = [];
		$(objset).each(function(){
			var attrname = $(this).attr("name");
			if (attrname != "" )
			if(!in_array(uniques, attrname)){
				uniques.push(attrname);
			}
		});
		$.each( uniques, function( index, value){
			var $result = $(objset).filter("[name="+value+"]:checked");
			if ( $result.length > 0 ) {
				returnvalue[value] = $result.val();
			} else {
				returnvalue[value] = "";
			}
		});
	}

	function Texts(objset) {

		$(objset).each(function(){
			var attrname = $(this).attr("name");
			if ( attrname != "" ) {
				returnvalue[attrname] = $(this).val();
			} else {
				returnvalue[attrname] = "";
			}
		});
		return returnvalue;
		//alert(returnvalue);
	}

	function Checkboxes(objset) {
		var uniques = [];
		var multi = [];

		objset.each(function(){
			var attrname = $(this).attr("name");
			if( attrname != ""){
				if ( !in_array( uniques, attrname)){
					uniques.push(attrname);
				} else {
					multi.push(attrname);
				}
			}
		});

		for( var i = 0; i < uniques.length; i++) {
			if( in_array(multi, uniques[i])) {
				// falls multicheckbox
				var multiresults = [];
				$(objset).filter("[name="+uniques[i]+"]").each(function(){
					if( $(this).attr("name") == uniques[i]){
						if( $(this).attr("checked") ) {
							multiresults.push($(this).val());
						}
					}
				})
				returnvalue[uniques[i]] = multiresults;
			} else {
				// falls single checkbox
				returnvalue[uniques[i]] = $(objset).filter("[name="+uniques[i]+"]").attr("checked");
			}

		}
	}

	Selects(selects);
	Checkboxes(checkboxes);
	Radios(radios);
	Texts(texts);

	newreturn = {};
	for( obj in returnvalue) {
		newreturn[obj] = returnvalue[obj];
	}

	return newreturn;
}
