dojo.require("dojo.parser");
dojo.require("dijit.form.DropDownButton");
dojo.require("dijit.form.Form");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.form.CurrencyTextBox");
dojo.require("dijit.form.DateTextBox");
dojo.require("dijit.form.Select");
dojo.require("dijit.form.NumberSpinner");
dojo.require("dijit.form.RadioButton");
dojo.require("dijit.form.CheckBox");
dojo.require("dijit.form.ToggleButton");
dojo.require("dijit.form.Textarea");
dojo.require("dijit.layout.StackContainer");
dojo.require("dijit.layout.StackController");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.layout.AccordionContainer");
dojo.require("dijit.layout.AccordionPane");
dojo.require("dijit.Dialog");
dojo.require("dijit.TooltipDialog");
dojo.require("dijit.TitlePane");
dojo.require("dijit.Menu");
dojo.require("dijit.MenuItem");
dojo.require("dojo.cookie");

dojo.ready(function(){
    if(dojo.byId("wait-a-sec")) dojo.byId("wait-a-sec").innerHTML = "";
});

var processingContent = "<div style='white-space:nowrap'><img align='left' src='/static/spinner.gif'/>&nbsp;Por favor, espera mientras se procesa la solicitud.</div>";

function openRemote(title, width, height, url) {

  var msgDialog = dijit.byId("msgDialog");
  msgDialog.set("title", "Por Favor Espere...");
  msgDialog.set("content", processingContent);
  msgDialog.show();

  var remoteFrame = dojo.byId("remoteFrame");
  var remoteDialog = dijit.byId("remoteDialog");

  remoteDialog.set("title", title);

  dojo.style(remoteFrame, "width", width);
  dojo.style(remoteFrame, "height", height);

  if (url != undefined) {
    remoteFrame.contentWindow.location = url;
  }
}

function iFrameLoaded() {
  // handle early very first load by bailing out.
  if (dijit == undefined) return;
  if (dijit.byId == undefined) return;

  var msgDialog = dijit.byId("msgDialog");
  var remoteDialog = dijit.byId("remoteDialog");

  var remoteFrame = dojo.byId("remoteFrame");
  if (remoteFrame == undefined) return;

  var hiddenFrame = remoteFrame.contentWindow.frames["hiddenFrame"];
  if (hiddenFrame == undefined) return;

  var args = parseArgs(hiddenFrame.location.href);

  if (msgDialog.open) {
    msgDialog.hide();
  }

  if (remoteDialog.open == false) {
    remoteDialog.show();
  }

  var orderId = args["orderId"];

  if (orderId != undefined) {
    dojo.cookie("orderId", orderId, {expires: 3});
    dijit.byId("cart-contents").set("href", "/cart_contents.jsp?"+whenEver());

    var nodeList = dojo.query(".orderIdNode");
    nodeList.forEach(function(node, index, arr){
      node.value=orderId;
    });
  }
}

function parseArgs(text) {
  if (text == undefined) return {};

  var pos = text.lastIndexOf("?");
  if (pos < 0) return {};

  var args = {};
  var data = text.substring(pos+1);
  var list = data.split("&");

  for (var i =0; i < list.length; i++) {
    var parts = list[i].split("=");
    var key = parts[0];
    args[key] = parts[1];
  }

  return args;
}

function processError(error) {
  var msgDialog = dijit.byId("msgDialog");
  msgDialog.set("title", "Error al Procesar");
  msgDialog.set("content", "<"+"div style='white-space:pre'>"+error+"<"+"/div>");
}

function processErrorMessages(messages, title, url) {
  var content = "<"+"div style='white-space:pre'>Hubo un problema al procesar su solicitud.<"+"ul>";
  for (var i=0; i < messages.length; i++) {
    content += "<"+"li>"+messages[i]+"<"+"/li>"
  }
  content += "<"+"/ul><"+"/div>";

  var msgDialog = dijit.byId("msgDialog");
  msgDialog.set("title", "Error al Procesar");
  msgDialog.set("content", content);

  if (url != null) {
    var handle = dojo.connect(msgDialog, "onCancel", function(event){
      dojo.disconnect(handle);
      setTimeout(function(){
        msgDialog.set("title", title);
        msgDialog.set("href", url);
        msgDialog.show();
      }, 250);
    });
  }
}

function whenEver() {
  return "whenEver="+new Date().getMilliseconds();
}

