--[[ /* * Baltisot * Copyright (C) 1999-2008 Nicolas "Pixel" Noble * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* $Id: ajaxlib.lua,v 1.2 2008-01-15 18:20:23 pixel Exp $ */ ]]-- local ajaxlib_javascript local ajax_replacements = { { "&", "&" }, { "|", "|" }, { "=", "=" }, } function ajax_escape(str) return generic_escape(str, ajax_replacements) end function ajax_dump_table(t, out) local k, v, vk, vv if type(t) ~= "table" then return end for k, v in pairs(t) do out:write(k) for vk, vv in pairs(v) do out:write("|" .. ajax_escape(vk) .. "=" .. ajax_escape(vv)) end out:write("\n") end end function write_ajax_javascript(out) out:write(ajaxlib_javascript) end ajaxlib_javascript = [[ var loading = 0; function ajax_loading(v) { var obj = getObjById("ajax_loader") if (obj) { obj.style.visibility = v ? "visible" : "hidden"; } } function ajax_unescape(str) { return str.replace(/&#(\d+);/g, function() { return String.fromCharCode(RegExp.$1); }); } function ajax_hub(ajax_request, callback) { if (ajax_request.readyState != 4) return; var res = ajax_request.responseText; ajax_request = null; callback(res); loading--; ajax_loading(loading != 0); } function ajax_create(url, callback) { var ajax_request; loading++; ajax_loading(true); ajax_request = new XMLHttpRequest(); ajax_request.onreadystatechange = function() { ajax_hub(ajax_request, callback) }; ajax_request.open("GET", url, true); ajax_request.send(null); } function ajax_do_get_data(res) { var lines; var t = new Array(); var c; var pair; var i, j, k, res; lines = res.split('\n'); for (i = 0, c = 0; i < lines.length; i++) { if (lines[i] == "") continue; if (lines[i][0] == "#") continue; t[c++] = lines[i].split('|'); } res = {} for (i = 0; i < t.length; i++) { k = t[i][0]; res[k] = {}; for (j = 1; j < t[i].length; j++) { pair = t[i][j].split("="); res[k][ajax_unescape(pair[0])] = ajax_unescape(pair[1]); } } return res; } ]]