dojo.require("dijit.Tooltip");

function submitname(name) {
  divs = dojo.query("#friends .uid");
  text = "";

  var givenName = name.toUpperCase();
  var counter = 0;
  for (var i = 0; i < divs.length; i++){
    var rn = dojo.attr(divs[i], "value");
    var uid = dojo.attr(divs[i], "id"); 
    var realName = rn.toUpperCase();
    if (realName.indexOf(givenName) != -1) {
      friend_text = "";
      friend_text += "<div>";
      friend_text += "<span>" + rn + "</span>";
      //friend_text += "<span><img src=\"http://graph.facebook.com/" + uid + "/picture\"/></span>";
      friend_text += "</div>";
      text += friend_text;

      counter += 1;
      if (counter > 10) {
         break;
      }
 
    }
   }
  dojo.byId("friends_choice").innerHTML = text;
}

function getNewPayment() {
  payment_buyer = dojo.byId("invite_id").value;
  payment_title = dojo.byId("title").value;
  payment_sum = dojo.byId("sum").value;
  var data = {};
  data["buyer"] = payment_buyer;
  data["title"] = payment_title;
  data["sum"] = payment_sum;
  data["action"] = "add";
  return dojo.toJson(data);
}

function getPermission() {
  //if (dojo.attr("perm0", "checked")) {
  //  return 0;
  //}
  if (dojo.attr("perm1", "checked")) {
    return 1;
  }
  else if (dojo.attr("perm2", "checked")) {
    return 2;
  }
  else {
    return -1;
  }
}

function getInvitedParticipant() {
  participant_id = dojo.byId("invite_id").value;
  participant_email = dojo.byId("invite_email").value;
  participant_event = dojo.byId("event_id").value;
  var data = {}
  data["action"] = "invite";
  data["invite"] = participant_id;
  data["email"] = participant_email;
  data["event"] = participant_event;
  data["permission"] = getPermission();
  return dojo.toJson(data);
}

function getNewParticipant() {
  participant_name = dojo.byId("invite_name").value;
  var data = {}
  data["action"] = "add";
  data["name"] = participant_name;
  return dojo.toJson(data);
}

function getInviteEmail() {
  participant_email = dojo.byId('participant_email').value;
  var data = {}
  data["action"] = "email";
  data["email"] = participant_email;
  data["invite"] = dojo.byId('email_invite_id').value;
  return dojo.toJson(data);
}

function getSorting(sortBy, direction) {
  var data = {}
  data["by"] = sortBy;
  data["action"] = "sort";
  data["direction"] = direction;
  return dojo.toJson(data);
}

function getUpdate(updateVal) {
  var data = {}
  data["action"] = "update"
  data["value"] = updateVal;
  return dojo.toJson(data);
}

function addTooltips() {
  divs = dojo.query(".costdiv")
  for (var i = 0; i < divs.length; i++){
    id = dojo.attr(divs[i], "id");
    tip_id = id + "_tip";
    tip_text = dojo.byId(tip_id).innerHTML;
    new dijit.Tooltip({
      connectId: id,
      label: tip_text
     });
  }
}

function reloadTable(params) {
    var targetNode = dojo.byId("holder");
    var eventId = dojo.byId("event_id").value;
    var fullUrl = "/event/table/" + eventId;
    var xhrArgs = {
          url: fullUrl,
          handleAs: "text",
          postData: "data=" + params,
          load: function(data) {
            targetNode.innerHTML = data;
            addTooltips();
          },

          error: function(error, ioArgs) {
            targetNode.innerHTML = "An unexpected error occurred: " + error + ioArgs.toString();
          }
        }
    var deferred = dojo.xhrPost(xhrArgs);
}

function reloadParticipants(params) {
    var targetNode = dojo.byId("participants_container");
    var eventId = dojo.byId("event_id").value;
    var fullUrl = "/event/participants/" + eventId;
    var xhrArgs = {
          url: fullUrl,
          handleAs: "text",
          postData: "data=" + params,
          load: function(data) {
            targetNode.innerHTML = data;
	    reloadTable("");
          },
          error: function(error) {
            targetNode.innerHTML = "An unexpected error occurred: " + error;
          }
        }
    var deferred = dojo.xhrPost(xhrArgs);
}

function reloadInvites(params) {
    var targetNode = dojo.byId("invite_status");
    var fullUrl = "/invite/permission";
    var xhrArgs = {
          url: fullUrl,
          handleAs: "text",
          postData: "data=" + params,
          load: function(data) {
            targetNode.innerHTML = data;
          },
          error: function(error) {
            targetNode.innerHTML = "An unexpected error occurred: " + error;
          }
        }
    var deferred = dojo.xhrPost(xhrArgs);
}

function reloadSheet(inviteId) {
    var targetNode = dojo.byId("sheet");
    var eventId = dojo.byId("event_id").value;
    var params = "?event=" + eventId + "&invite=" + inviteId;
    var xhrArgs = {
          url: "/invite/sheet" + params, // + eventId + "/" + inviteId,
          handleAs: "text",
          load: function(data) {
            targetNode.innerHTML = data;
          },
          error: function(error) {
            targetNode.innerHTML = "An unexpected error occurred: " + error;
          }
        }
    var deferred = dojo.xhrPost(xhrArgs);
}

function reloadObserveLink(inviteId) {
    var targetNode = dojo.byId("link_observe");
    var eventId = dojo.byId("event_id").value;
    var xhrArgs = {
          url: "/event/observe/" + eventId, 
          handleAs: "text",
          load: function(data) {
            targetNode.innerHTML = data;
          },
          error: function(error) {
            targetNode.innerHTML = "An unexpected error occurred: " + error;
          }
        }
    var deferred = dojo.xhrPost(xhrArgs);
}

function reloadCurrency(holder, from, to, sum) {
    var targetNode = dojo.byId(holder);
    var paramFrom = "from=" + from;
    var paramTo = "to=" + to;
    var paramSum = "sum=" + sum;
    var params = paramFrom + "&" + paramTo + "&" + paramSum;
    var xhrArgs = {
          url: "/currency/change?" + params, 
          handleAs: "text",
          load: function(data) {
            targetNode.innerHTML = data;
          },
          error: function(error) {
            targetNode.innerHTML = "An unexpected error occurred: " + error;
          }
        }
    var deferred = dojo.xhrPost(xhrArgs);
}


function resortTable(sortBy, direction) {
  var sorting = getSorting(sortBy, direction);
  reloadTable(sorting);
}

function submitPayment() {
  var newPayment = getNewPayment();
  reloadTable(newPayment);
}

function submitParticipant() {
  var participant = getNewParticipant();
  reloadParticipants(participant);
}

function submitEmail() {
  var email = getInviteEmail();
  reloadParticipants(email);
  reloadTable("");
}


function deletePayment(id) {
  params = {}
  params["action"] = "delete";
  params["id"] = id;
  reloadTable(dojo.toJson(params));
}

function updateUsage(td) {
  field_id = dojo.attr(td, "id")
  updateParam = getUpdate(field_id);
  reloadTable(updateParam);
}

function inviteParticipant() {
  invited = getInvitedParticipant();
  reloadInvites(invited);
}

function submitSum(sum) {
   var eventId = dojo.byId("event_id").value;
   var fullUrl = "/event/sum/" + eventId;
   var targetNode = dojo.byId("sheet");
   var xhrArgs = {
          url: fullUrl, 
          handleAs: "text",
	  postData: "sum=" + sum,
          load: function(data) {
            //targetNode.innerHTML = data;
	    if (data == "") {
              // Data parsed
              dojo.attr("sum_td", "class", "used_unknown");
            }
            else {
              dojo.attr("sum_td", "class", "used_false");
             // Parse error
	    }
          }
        }
    var deferred = dojo.xhrPost(xhrArgs);
}

function getObserveLink() {
  reloadObserveLink();
}

function init() {
  reloadTable("");
  reloadParticipants("");
}

function updateTitle(field) {
  var data = {}
  data["action"] = "title";
  data["param"] = dojo.attr(field, "id");
  data["value"] = dojo.attr(field, "value");
  var res = dojo.toJson(data);
  reloadTable(res);
}

function updateBuyer(field) {
  var data = {}
  parent = dojo.attr(field.parentNode, "id") + "_f";
  data["action"] = "buyer";
  data["param"] = parent;
  data["value"] = dojo.attr(field, "value");
  var res = dojo.toJson(data);
  reloadTable(res);
}

function addFieldTitle(container) {
  text = container.innerHTML;
  new_id = dojo.attr(container, "id") + "_f";

  new_content = "<input class='textfield' type='text' onBlur='js:updateTitle(this);' id='" + new_id + "' value='" + text + "' />";
  container.innerHTML = new_content;
  container.onclick = null;
  dojo.byId(new_id).focus();
}

function addFieldBuyer(container) {
  selected_id = dojo.attr(container.children[0], "id");
  new_content = dojo.byId("invite_container").innerHTML;
  container.innerHTML = new_content;
 
  foo = dojo.byId("users");
  //alert(foo.options[1].text);

  items = dojo.query("." + selected_id)
  for (var i = 0; i < items.length; i++){
    dojo.attr(items[i], "selected", "selected");
  }

  container.onclick = null;
}

function changeCurrency(field) {
  var row = dojo.attr(field, "id");
  var containerId  = row + "_v";
  var sumId = row + "_s";
  var sumValue = dojo.attr(sumId, "value");
  var toCur = dojo.attr("currency_id", "value");
  var fromCur = dojo.attr(field, "value");
  reloadCurrency(containerId, toCur, fromCur, sumValue);
}


function reloadPart() {
  reloadParticipants('');
}

function inviteBox(id) {
  invbox = "invbox_" + id; 

  dojo.byId('email_invite_id').value = id;
  def_email = dojo.byId('email_' + id).value;
  input_email = "<input type='text' value='" + def_email + "' id='participant_email' value='email' size='10' onBlur='js:reloadPart();' />";
  input_submit = "<input type='submit' value='invite!' onClick='js:submitEmail();'/>";
  
  content = input_email + input_submit;
  text_email = content; //dojo.byId('invite_content').innerHTML;
  dojo.byId(invbox).innerHTML = text_email;
}

dojo.addOnLoad(init);


