/**
* prototype ajax library
* @author tayu
*/
var ajaxObj = new function() {
this.frmID = '';
this.showID = '';
this.showResponse = null;
}
/**
* form を解析し、送信する
*
* @param {Object} frmid form id
* @param {Object} showid 表示先 ID
* @param {Object} url 宛先 URL
* @param {Object} method POST or GET
* @param {Object} callback 呼び出す関数
*/
function loadRecord( frmid, showid, url, method, callback )
{
ajaxObj.frmID = frmid;
ajaxObj.showID = showid;
ajaxObj.showResponse = callback;
var form = $( frmid );
var opt = "";
for( var i = 0; i < form.length; ++i )
{
opt += opt == "" ? "" : "&";
var elm = form.elements[i];
var elmval = $F( elm );
if( elm.name && elmval )
{
opt += elm.name + "=" + encodeURIComponent( elmval );
}
}
sendRequest( url, method, opt );
}
/**
* 送信する
*
* @param {Object} url 宛先 URL
* @param {Object} method POST or GET
* @param {Object} opt 渡すデータ
*/
function sendRequest( url, method, opt )
{
myAjax = new Ajax.Request(
url,
{
method: method,
parameters: opt,
onComplete: showComplete,
onFailure: showError,
onException: showError
}
);
showLoading();
}
/**
* Loading 表示
*/
function showLoading()
{
var div = $( ajaxObj.showID );
div.innerHTML = "Loading ...";
}
/**
* エラー表示
*
* @param {Object} req
*/
function showError( req )
{
var err = $( ajaxObj.showID );
var status = req.statusText == null ? "" : req.statusText;
err.innerHTML = "internal error. " + status;
}
/**
* 取得したデータを表示する
*
* @param {Object} req
*/
function showComplete( req )
{
ajaxObj.showResponse( req );
}
/**
* 取得したデータを表示する
*
* @param {Object} req
*/
function showResponse( req )
{
var xml = req.responseXML;
var obj = $( ajaxObj.showID );
obj.innerHTML = "<br />";
var dataList = xml.getElementsByTagName( 'data' );
for( var i = 0; i < dataList.length; ++i )
{
obj.innerHTML += ntoBr( dataList[i].childNodes[0].nodeValue.escapeHTML() ) + "<br />";
}
}
/**
* \n → <br /> に変換する
* @param {Object} str
*/
function ntoBr( str )
{
var reg = /\n/g;
return str.replace( reg, "<br />" );
}