var JSON={ fn: {} // callbacks ,req: function(url,callback){ var cb=JSON.temp_fn(callback); url=url.replace(/%cb/g,cb); var sc=document.createElement("script"); sc.src=url; sc.addEventListener("load",function(e){ document.body.removeChild(this); window[cb]=null; },false); document.body.appendChild(sc); var ret=next(function(){ if(!!window[cb]) return next(arguments.callee); return ; }).next(function(){ var ret=JSON.fn[cb].arg; JSON.fn[cb]=null; delete JSON.fn[cb]; return ret; }); return ret; } ,temp_fn: function(fn){ do { var name="jsonp_"+(""+Math.random()).replace(/[^0-9]/g,""); } while(typeof window[name] != "undefined"); var args=arguments; JSON.fn[name]={fn: fn}; window[name]=function(json){ JSON.fn[name]["arg"]=JSON.fn[name].fn(json); } return name; } }