
	function class_Ajax(scriptName)
	{
		var _scriptName = (scriptName != "") ? scriptName : SCRIPT_NAME;
		this.get = function(varsData, callback)
		{
			varsData += "&ajax=";
			$.get(_scriptName+"?"+varsData, function(msg)
			{
				if(callback)
					callback(msg);
			});
			return false;
		};
		this.post = function(varsData, callback)
		{
			varsData += "&ajax=";
			$.ajax({
				url: _scriptName,
				type: "POST",
				data: varsData,
				cashe: false,
				success: function(msg) {
					if(callback)
						callback(msg);
				}
			});
			return false;
		};
	}
	
	class_FormSubmit.prototype = new class_Ajax;
	function class_FormSubmit(outputDomId, formSource)
	{
		var _varsData = $(formSource).serialize();
		var _scriptName = $(formSource).attr("action");
		this.submitPost = function(customCallback, params)
		{
			var callback = function(msg) { 
				$("#"+outputDomId).html(msg);
				if(customCallback)
				    customCallback(params);
			};
			aj = new class_Ajax(_scriptName);
			return aj.post(_varsData, callback);
		}
	}
	
	function formPost(outputDomId, formSource, callback, params) 
	{ 
		var fs = new class_FormSubmit(outputDomId, formSource);
		return fs.submitPost(callback, params);
	}

	// note: [fr] frame name or object (this)
	function getFrameContent(fr, formIdReset)
	{
		var retval = "";
		if(!getFrameContent.loaded)
			getFrameContent.loaded = true; // this var blocks from reading frame content on page not frame load
		else
		{	
			var name = (typeof(fr) == "object") ? fr.name : fr;
			var content = "";
			if(window.frames[name].document)
				content = window.frames[name].document.body.innerHTML;
			if(formIdReset)	
				document.getElementById(formIdReset).reset();
			retval = content.replace(/&amp;/ig, "&");
		}
		return retval;
	}