var sms_response = {};
function send_sms(sms, params, func, nocache){
  nocache = nocache || true;
  var is_sms=true;
  if (sms.test(/[\w_]+/)) var url = location.href.updateUrlValues({'sms':sms, 'sms_enable':1});
  else {var url=sms; is_sms=false;}
  JsHttpRequest.query(
    url,                           // the path to backend
    params,                        // the JavaScript array with data you want to pass
    function(result, errors){
      if ("function" == typeof(func)) {
        if (is_sms) var res = func(result[sms], errors);
        else var res = func(result, errors);
      } else sms_response[sms] = result[sms];
      var js = function(){
        if (result["js"]) try {
          $exec(result["js"]);
          //eval(result["js"]);
        } catch (e) {}
      }
      if ((result["load_js"]||[]).length>0) {
        var jss = $splat(result["load_js"]);
        var counter = 0;
        jss.each(function(src, index){
          var myScript = new Asset.javascript(src, {id: 'load_js_'+index,
            'onload': function(){
              counter++;
              if (counter == jss.length) js();
            }
          });
        });
      } else js();


    }, // the function is called when an answer is ready
    nocache                      // if set to TRUE, caching will be disabled
  );
}

var popups={};

function popupsms(sms, params, func, nocache){
  nocache = nocache || false;
  send_sms(sms, params, function(result, errors){
    if (!result || !result["html"]) return;
    var html = result["html"].stripStyles(true);
    var p = $merge({width: 600, title:''}, result["params"]||{});
    var stickywin = $merge({
        //relativeTo: 'left',
        //position: 'center',
        allowMultiple: false,
        draggable: true
      }, result["stickywin"]||{});

    var stickywinui = $merge({
        width: p["width"],
        cornerHandle: true
      }, result["stickywin.ui"]||{});
    popups["_last_"] = popups[sms] = new StickyWinFxModal($merge(stickywin, {
      content: StickyWin.ui(p["title"], html, stickywinui)
    }));
    popups["_last_"].show();
    if (typeof func == "function") func(result, errors);
 }, nocache);
}
