/*********************************************************

    对prototype.js提供的Ajax.Request()进行简单的包装,
    当发起ajax请求时,会在页面右上角高亮显示一个提示.
    调用ajax函数时更简单

    使用该文件之前请包含prototype.js

    wanhua 20080918

 *********************************************************/

//在页面右上角定义一个高亮提示,当ajax执行远程请求时,将显示该提示
document.write('<div id="global_onloading">工作中...</div><style type="text/css">div#global_onloading{display:none;background:#fff3ad;position:fixed;top:5px;right:20px;padding-top:5px;width:150px;height:20px;text-align:center;font-weight:bold;font-size:10pt}* html div#global_onloading{position: absolute;top:expression(eval(document.compatMode&&document.compatMode=="CSS1Compat")?documentElement.scrollTop : document.body.scrollTop);}</style>');
//window.onload = function(){
    Ajax.Responders.register({
        onCreate: function(){
            $('global_onloading').style.display = 'block';
        },
        onComplete: function(){
            if(Ajax.activeRequestCount <= 0){
                $('global_onloading').style.display = 'none';
            }
        }
    });
//}


//--------- 以下函数与以上代码无关 --------------//

/**
 * 通用的ajax请求函数
 * 使用此前函数最好对prototype.js库作一下了解
 *
 * @param Object options 必须提供url, 可选params,method,onSuccess
 *                       url: string, 远程请求的地址
 *                       params: object,传递到服务器端的参数. 如{p1:'p1',p2:'p2'}
 *                       method: string, 'get' or 'post'
 *                       onSuccess: function, 接受服务器返回数据为参数
 * @param HTMLFormElement form 此参数使得该函数可作为表单的提交函数.
 *                             如果指定了form, 函数将把该表单的字段值提交到options.url指定的地址
 * @return bool false 使表单不按默认动作提交
 *
 * @code
<!-- 将以下代码保存到某个.html文件 -->
<script language="JavaScript" type="text/javascript" src="/ajax/prototype.js"></script>
<script language="JavaScript" type="text/javascript" src="/ajax/common_ajax.js"></script>
<div style="border:1px solid blue" id="msg"></div>
<form onsubmit="return ajaxRequest({url:'test1.php',params:{a:'b'},onSuccess:getUpdateEleFunc('msg')},this)">
<input type='text' name='param1' value='value1' />
<input type='submit' />

以下是test1.php代码:
sleep(1);
print_r($_REQUEST);
 * @endcode
 */
function ajaxRequest(options,form){   
    var params_str = $H(options.params||{}).toQueryString();
    if(form) params_str += '&'+Form.serialize(form);
    new Ajax.Request(options.url,{
        method:options.method||'post',
        parameters:params_str,
        onSuccess:function(req){
            (options.onSuccess||function(t){alert(t);})(req.responseText);
        }
    });
    return false;
}

/**
 * 得到一个回调函数,当从服务器返回的数据需要显示在页面上时使用
 * @param string|HTMLElement ele_id 欲用来显示结果的元素
 * @return function
 */
function getUpdateEleFunc(ele_id){
    return function(t){$(ele_id).innerHTML=t;};
}