﻿if(typeof(Sima)=="undefined") Sima={};
/***********************************
 * Namespace: Sima.Remote
 ***********************************/
if(typeof(Sima.Remote)=="undefined") Sima.Remote = {};
Sima.Remote.nextRemoteId=1;
Sima.Remote.remoteList={};

Sima.Remote.call=function(url, callback, timeout, charset) {
  var id=(Sima.Remote.nextRemoteId++);
  if(url.indexOf("?")==-1)
    url+="?";
  else
    url+="&";
  url+="callback=Sima.Remote.remoteList["+id+"].callback&"+(new Date()).getTime();
                                          
  var scriptId='SimaRemoteScript$'+id;
  var scriptObj=document.createElement("script");
  scriptObj.setAttribute("type", "text/javascript");
  scriptObj.setAttribute("charset", (charset)?charset:"utf-8");
  scriptObj.setAttribute("src", url);
  scriptObj.setAttribute("id", scriptId);
  var undef
  var remote={};
  Sima.Remote.remoteList[id]=remote;
  remote.callback = function(o) {
      var r = Sima.Remote.remoteList[id];
      if(r) {
        delete Sima.Remote.remoteList[id];
        if(r.timerId) clearTimeout(r.timerId);
        document.getElementsByTagName("head").item(0).removeChild(scriptObj);
        callback(o);
      }
    }
  remote.timerId = setTimeout(function() {
                       var r = Sima.Remote.remoteList[id];
                       if(r) {
                         delete Sima.Remote.remoteList[id];
                         document.getElementsByTagName("head").item(0).removeChild(scriptObj);
                         callback(null);
                       }
                     },
                     timeout);
  
  document.getElementsByTagName("head").item(0).appendChild(scriptObj);
};
