
//	alert('Commoin.js loaded');

	/*
		usage:
			<form ... onsubmit="return formAjaxPost('_response', this)">
			<div id="_response">
				<!-- server response will be here -->
			</div>
	*/
	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 formAjaxPost(outputDomId, formSource, callback, params) 
	{ 
		var fs = new class_FormSubmit(outputDomId, formSource);
		return fs.submitPost(callback, params);
	}
	
	function ajaxPost(scriptName, varsData, outputDomId, callback, params)
	{
	    var ap = new class_Ajax(scriptName);
	    var callb = function(msg)
	    {
	        $("#"+outputDomId).html(msg);
	        if(callback)
	           callback(params);
	    }
	    return ap.post(varsData, callb);
	}
	
	function formSubmit(elAddress, value, noAjax)
	{
		var frm = elObj(elAddress);
		if(!frm.is('form'))
		{
			val(frm, value);
			frm = frm.parents().find('form');
		}
        var frmId = frm.attr('id');
        
//        alert(frm.html()); return false;
//        alert(frmId); return false;        

		if(noAjax) $("#" + frmId).submit();
		else document.getElementById(frmId).onsubmit();
		return false;
	}
	
	// Returns an object of jquery by "id", "class" or "this" of the element
	function elObj(elAddr)
	{
		var type = typeof(elAddr);
		if(type == "object")
			return $(elAddr);
		if($("#"+elAddr).html() !== null)
			return $("#"+elAddr);
		if($("."+elAddr).html() !== null)
			return $("."+elAddr);
		throw new Error("No such DOM element with address ["+elAddr+"].");
	}
	// Wrappers
	function slideDown(el) { elObj(el).slideDown(); return false; }
	function slideUp(el) { elObj(el).slideUp(); return false; }
	function back() { history.go(-1); return false; }
	function html(el) { return elObj(el).html(); }
	function val(el, value) { 
		if(value == undefined) return elObj(el).val(); elObj(el).val(value);
	}
	function hide(el) { elObj(el).hide(); return false; }
	function show(el) { elObj(el).show(); return false; }