//##############################################
/*
* @desc js rpc lib. using jsHttpRequest object.
*/
//##############################################
var _RPC_INCLUDED = 1;

/*
* @desc remote load function
* @param string: handler function name. default - 'rpc_defaultHandler'
* @param string: hadler function params. example: '"id","some other value"'
* @param string: requested url
* @param mixed:  data to send. if string implemented as GET string. if object - parsing to structure like POST 
*/
							
function rpcGet( _handler, _handler_params,_url, _post ) 
{
    var req = new JsHttpRequest();
    req.onreadystatechange = function() 
    {
        if ( req.readyState == 4 ) 
        {
			//req.responseJS	//js Response
			//req.responseText	//textresponse
			if(_handler=='') 
			{
				_handler = 'rpc_defaultHandler';
			}
			eval(_handler+'(req,_handler_params);');
			if(req.responseJS && req.responseJS.___eval)
			{
			 eval(req.responseJS.___eval);
			}
        }
    }
    // Prepare request object (automatically choose GET or POST).
    req.open( null, _url, true );
    if ( typeof( _post )=='string' )
    {
    	req.send( {q:_post} );
    }
    else
    {//if typeof(_post)=='object' or 'array'
    	req.send( {q:_post} );
    }
}
/*
* @desc default handler for innerHTML method
*/
function rpc_innerHTMLhandler( _req, _parent )
{
	_parent = getRawObject(_parent);
	_parent.innerHTML = _req.responseText;
}
/*
*@desc default rpc handler
*/
function rpc_defaultHandler(_req)
{
	alert(_req.responseText);
}

function rpc_formSubmitMethod( _handler, _handlerParams, _url, _post)
{
	params = _handler;
	if(_handlerParams)
	{
		params += "," + _handlerParams;
	}
	rpcGet( _handler, _handlerParams, _url, _post );
}

function rpc_formSubmitHandler( _req,  _handler )
{
	alert(_req.responseText);
}

