
////////////
// DELETE //
////////////

var taskDeleteObserver = function(evt) {
  var taskEffectSettings = {
    duration: 0.3,
    queue : "taskDeleteConfirm"
  };
  var url = this.getAttribute("href");
  var confirmDialog = $("taskDeleteConfirmDialog");
  Position.clone(this, confirmDialog, {
    setWidth : false,
    setHeight : false,
    offsetLeft : 10,
    offsetTop : 20
  });

  new Ajax.Request(url, {
    method: "get",
    onSuccess: function(t) {
      confirmDialog.update(t.responseText);
      Effect.Appear(confirmDialog, taskEffectSettings);
      $("formCancel").onclick = function(evt) {
        Effect.Fade(confirmDialog, taskEffectSettings);
        Event.stop(evt);
      };
    }
  });

  Event.stop(evt);
};

// add event observer to all delete-buttons
function registerTaskDeleteObserver() {
  $$(".task-delete").each(function(item) {
    item.onclick = taskDeleteObserver.bindAsEventListener(item);
  });
}

Event.observe(window, "load", function() {
  // create confirm dialog div
  var pagebody = $("pagebody") || $("idBody");
  if (!pagebody) return;
  var taskDeleteConfirmDialog = document.createElement('div');
  taskDeleteConfirmDialog.setAttribute('className', 'adminpopup');
  taskDeleteConfirmDialog.setAttribute('class', 'adminpopup');
  taskDeleteConfirmDialog.setAttribute('id', 'taskDeleteConfirmDialog');
  Element.extend(taskDeleteConfirmDialog);
  taskDeleteConfirmDialog.hide();
  pagebody.appendChild(taskDeleteConfirmDialog);
  registerTaskDeleteObserver();
});

Ajax.Responders.register({
  onComplete: function(obj) {
    registerTaskDeleteObserver();
  }
});

/////////////////////
// CONTACT FRIENDS //
/////////////////////

var taskContactFriendsObserver = function(evt) {
  var taskEffectSettings = {
    duration: 0.3,
    queue : "taskContactConfirm"
  };
  var url = this.getAttribute("href");
  var confirmDialog = $("taskContactFriendsDialog");
  Position.clone(this, confirmDialog, {
    setWidth : false,
    setHeight : false,
    offsetLeft : 10,
    offsetTop : 20
  });

  if (confirmDialog.visible()) {
    confirmDialog.update('');
    Effect.Fade(confirmDialog, taskEffectSettings);
  } else {
    new Ajax.Request(url, {
      method: "get",
      onSuccess: function(t) {
        confirmDialog.update(t.responseText);
        Effect.Appear(confirmDialog, taskEffectSettings);
        $("formCancel").onclick = function(evt) {
          Effect.Fade(confirmDialog, taskEffectSettings);
          Event.stop(evt);
        };
      }
    });
  }
  Event.stop(evt);
};

// add event observer to all contact-buttons
function registerTaskContactFriendsObserver() {
  $$(".task-contact").each(function(item) {
    item.onclick = taskContactFriendsObserver.bindAsEventListener(item);
  });
}

Event.observe(window, "load", function() {
  // create confirm dialog div
  var pagebody = $("pagebody");
  if (!pagebody) return;
  var taskContactFriendsDialog = document.createElement('div');
  taskContactFriendsDialog.setAttribute('className', 'adminpopup');
  taskContactFriendsDialog.setAttribute('class', 'adminpopup');
  taskContactFriendsDialog.setAttribute('id', 'taskContactFriendsDialog');
  Element.extend(taskContactFriendsDialog);
  taskContactFriendsDialog.hide();
  pagebody.appendChild(taskContactFriendsDialog);
  registerTaskContactFriendsObserver();
});

Ajax.Responders.register({
  onComplete: function(obj) {
    registerTaskContactFriendsObserver();
  }
});

////////////////////
// INVITE FRIENDS //
////////////////////

var taskInviteFriendsObserver = function(evt) {
  var taskEffectSettings = {
    duration: 0.3,
    queue : "taskContactConfirm"
  };
  var url = this.getAttribute("href");
  var confirmDialog = $("taskInviteFriendsDialog");
  Position.clone(this, confirmDialog, {
    setWidth : false,
    setHeight : false,
    offsetLeft : 10,
    offsetTop : 20
  });

  if (confirmDialog.visible()) {
    confirmDialog.update('');
    Effect.Fade(confirmDialog, taskEffectSettings);
  } else {
    new Ajax.Request(url, {
      method: "get",
      onSuccess: function(t) {
        confirmDialog.update(t.responseText);
        Effect.Appear(confirmDialog, taskEffectSettings);
        $("formCancel").onclick = function(evt) {
          Effect.Fade(confirmDialog, taskEffectSettings);
          Event.stop(evt);
        };
      }
    });
  }
  Event.stop(evt);
};

// add event observer to all contact-buttons
function registertaskInviteFriendsObserver() {
  $$(".task-invite").each(function(item) {
    item.onclick = taskInviteFriendsObserver.bindAsEventListener(item);
  });
}

Event.observe(window, "load", function() {
  // create confirm dialog div
  var pagebody = $("pagebody");
  if (!pagebody) return;
  var taskInviteFriendsDialog = document.createElement('div');
  taskInviteFriendsDialog.setAttribute('className', 'adminpopup');
  taskInviteFriendsDialog.setAttribute('class', 'adminpopup');
  taskInviteFriendsDialog.setAttribute('id', 'taskInviteFriendsDialog');
  Element.extend(taskInviteFriendsDialog);
  taskInviteFriendsDialog.hide();
  pagebody.appendChild(taskInviteFriendsDialog);
  registertaskInviteFriendsObserver();
});

Ajax.Responders.register({
  onComplete: function(obj) {
    registertaskInviteFriendsObserver();
  }
});

////////////
// REPORT //
////////////

var taskReportObserver = function(evt) {
  var taskEffectSettings = {
    duration: 0.3,
    queue : "taskReportConfirm"
  };
  var url = this.getAttribute("href");
  var confirmDialog = $("taskReportConfirmDialog");
  Position.clone(this, confirmDialog, {
    setWidth : false,
    setHeight : false,
    offsetLeft : 10,
    offsetTop : 20
  });

  new Ajax.Request(url, {
    method: "get",
    onSuccess: function(t) {
      confirmDialog.update(t.responseText);
      Effect.Appear(confirmDialog, taskEffectSettings);
      $("reportFormCancel").onclick = function(evt) {
        Effect.Fade(confirmDialog, taskEffectSettings);
        Event.stop(evt);
      };
    }
  });

  Event.stop(evt);
};

// add event observer to all delete-buttons
function registerTaskReportObserver() {
  $$(".task-report").each(function(item) {
    item.onclick = taskReportObserver.bindAsEventListener(item);
  });
}

Event.observe(window, "load", function() {
  // create confirm dialog div
  var pagebody = $("pagebody") || $("idBody") || $("idPageWrap") || $$(".idPageWrap")[0];
  if (!pagebody) return;

  var taskReportConfirmDialog = document.createElement('div');
  taskReportConfirmDialog.setAttribute('className', 'adminpopup');
  taskReportConfirmDialog.setAttribute('class', 'adminpopup');
  taskReportConfirmDialog.setAttribute('id', 'taskReportConfirmDialog');
  Element.extend(taskReportConfirmDialog);
  taskReportConfirmDialog.hide();
  pagebody.appendChild(taskReportConfirmDialog);
  registerTaskReportObserver();
});

Ajax.Responders.register({
  onComplete: function(obj) {
    registerTaskReportObserver();
  }
});

/////////////////
// COMPETITION //
/////////////////

var taskCompetitionObserver = function(evt, url) {
  var taskEffectSettings = {
    duration: 0.3,
    queue : "taskCompetitionConfirm"
  };

  if (this.getAttribute) {
    url = this.getAttribute("href") || url;
  }

  var confirmDialog = $("taskCompetitionConfirmDialog");
  var placeholderElement = $("taskCompetitionConfirmDialogPlaceholder") || this;
  var videoDivs = $$('div.video');
  var dayDropdown = $('competitionItemsByDay');

  if (!confirmDialog.visible()) {
    if (videoDivs) {
      for (var i=0; i<videoDivs.length; i++) {
        videoDivs[i].hide();
      }
    }
    if (dayDropdown) {
      dayDropdown.hide();
    }
    Position.clone(placeholderElement, confirmDialog, {
       setWidth : false,
       setHeight : false,
       offsetLeft : 5,
       offsetTop : 5
     });
  }

  new Ajax.Request(url, {
    method: "get",
    onSuccess: function(t) {
      confirmDialog.update(t.responseText);
      Effect.Appear(confirmDialog, taskEffectSettings);
      $("competitionFormCancel").onclick = function(evt) {
        Effect.Fade(confirmDialog, taskEffectSettings);
        for (var i=0; i<videoDivs.length; i++) {
          videoDivs[i].show();
        }
        if (dayDropdown) {
          dayDropdown.show();
        }
        if (evt) {
          Event.stop(evt);
        }
      };
    }
  });

  document.location.hash = "taskCompetitionConfirmDialogAnchor";

  if (evt) {
    Event.stop(evt);
  }
};

// add event observer to all delete-buttons
function registerTaskCompetitionObserver() {
  if (taskCompetitionObserver) {
    $$(".task-competition").each(function(item) {
      item.onclick = taskCompetitionObserver.bindAsEventListener(item);
    });
  }
}

Event.observe(window, "load", function() {
  // create confirm dialog div
  var pagebody = $("pagebody");
  if (!pagebody) return;

  var taskCompetitionConfirmDialog = document.createElement('div');
  taskCompetitionConfirmDialog.setAttribute('className', 'competitionpopup');
  taskCompetitionConfirmDialog.setAttribute('class', 'competitionpopup');
  taskCompetitionConfirmDialog.setAttribute('id', 'taskCompetitionConfirmDialog');
  Element.extend(taskCompetitionConfirmDialog);
  taskCompetitionConfirmDialog.hide();
  pagebody.appendChild(taskCompetitionConfirmDialog);
  registerTaskCompetitionObserver();
});

Ajax.Responders.register({
  onComplete: function(obj) {
    registerTaskCompetitionObserver();
  }
});
