/***************************************************************************************************************
 * 作者：zengjun
 * 
 *   基于json , jquery 的RPC方案 
 * 
 *  示例：同步调用
 *  　　　 var  ret= $rpc( "wiseoa.Demo", "hello", p);
 *                      alert ( ret.success);
 * 
 * 　　异步调用
 *                      $rpc( "wiseoa.Demo", "hello", p , callback);
 *                      function callback(data)
 *                      {
 *                          var  ret=  JSON.parse(data);
 *                          alert ( ret.success);
 *                      }
 * 
 ***************************************************************************************************************/ 


function $E(id) { return document.getElementById(id); }



var $zrpc_inner_callback_data=null;

/*
 *  当不提供　callback参数时，表示是同步调用，$rpc 的返回值即rpc调用的返回值
 *  如果提供了 callback参数，那么$rpc 返回"", 数据将在回调函数里以参数形式提供
 */
function $rpc( className , method, jsonParamString, callback)
{
	var paramString=jsonParamString;
    if (jsonParamString==undefined )  paramString='{ }';  //可能没有参数
	if ( jsonParamString instanceof Object)  paramString= JSON.toString(jsonParamString);
	
	if ( callback===undefined) 
	{
	     $.ajaxSettings.async=false;//同步
	     $zrpc_inner_callback_data=null;
	     $.post("zrpc.jsp", { classname			: className, 
	                                          methodname	: method , 
	                                          parameter			: paramString 
	                                       }, 
	                                      $zrpc_inner_callback );
	     return $zrpc_inner_callback_data;
	}else
	{
		$.ajaxSettings.async=true; //异步
		$.post("zrpc.jsp", { classname		:className, 
		                                    methodname	:method , 
		                                    parameter		:paramString
		                                  }, 
		                                  callback );
		return ""; 
	}
 	
}

//同步调用使用本函数做回调函数，并把结果放到全局变量中，供$rpc函数做返回值
function $zrpc_inner_callback( data)
{ 	
	var  d=  JSON.parse(data);
	$zrpc_inner_callback_data =d;
}


/**
 * 把data中的数据复制record中 ,注意中复制一层数据，即data中的数据如果又是一个Object，那么不处理
 * @data 是一个js对象
 * @record 是一个　Ext.data.Record对象
 */
function CopyToExtRecord( data , record)
{
    // varName 是data中的变量名
     for (varName  in data) 
     {
           varValue = data[varName];
           if ( varValue instanceof Object) continue;
           if ( varValue instanceof Array)  continue;
           record.set ( varName , varValue);
     }
}



