// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
function confirmDelete(href, message) {
  if (message == null) message = "Are you sure you want to delete this tab?";
  if (confirm(message)) {
    document.location.href = href;
  }
}

function saving() {
  show();
  $('console').innerHTML = 'Processing...';
}

function deleting() {
  show();
  $('console').innerHTML = 'Deleting...';
}

function deleted() {
  show();
  $('console').innerHTML = 'Deleted';
  setTimeout(_resetConsole, 800);
}

function loading() {
  show();
  $('console').innerHTML = 'Loading...';
}

function loaded() {
  show();
  $('console').innerHTML = 'Loaded';
  blank();
}

function saved() {
  show();
  $('console').innerHTML = 'Done';
}

function blank() {
  setTimeout(_resetConsole, 800);
}

function _resetConsole() {
  hide();
  $('console').innerHTML = '';
}

function message(msg) {
  $('console').innerHTML = msg;
}

function hide() {
  $('console').setStyle({'visibility':'hidden'});
}

function show() {
  $('console').setStyle({
    'visibility':'visible'
  });
}

function failed() {
  $('console').innerHTML = 'Oooops... problem in saving.';
  setTimeout(blank, 5000);
}

function updateStartDate(taskid, url) {
  new Ajax.Updater({}, url,
  { asynchronous:true, evalScripts:true, onFailure:failed, onLoaded:saved, onLoading:saving, onSuccess:blank,
    parameters :{"task[start_date]" : $("cds_start_value_" + taskid).innerHTML}
  });
}

function updateEndDate(taskid, url) {
  new Ajax.Updater({}, url,
  { asynchronous:true, evalScripts:true, onFailure:failed, onLoaded:saved, onLoading:saving, onSuccess:blank,
    parameters :{"task[end_date]" : $("cds_end_value_" + taskid).innerHTML}
  });
}

function toggleDetails(task_id) {
  Element.toggle('task_comments_expand_' + task_id);
  Element.toggle('task_comments_collapse_' + task_id);
  Element.toggle('task_form_expand_' + task_id);
  Element.toggle('task_form_collapse_' + task_id);
  Element.toggle('task_item_details_' + task_id);
  return false;
}

function externalLinks() {
  if (!document.getElementsByTagName) return;
  var anchors = document.getElementsByTagName("a");
  for (var i = 0; i < anchors.length; i++) {
    var anchor = anchors[i];
    if (anchor.getAttribute("href") &&
        anchor.getAttribute("rel") == "external")
      anchor.target = "_blank";
  }
}
window.onload = externalLinks;

//function callInProgress(xmlhttp) {
//  switch (xmlhttp.readyState) {
//    case 1: case 2: case 3:
//    return true;
//    break;
//    // Case 4 and 0
//    default:
//      return false;
//      break;
//  }
//}
//
//function showFailureMessage() {
//  alert('Network seems to be down. Please refresh the page and try again.');
//}
//
//// Register global responders that will occur on all <acronym title="Asynchronous Javascript And XML">AJAX</acronym> requests
//Ajax.Responders.register({
//  onCreate: function(request) {
//    request['timeoutId'] = window.setTimeout(
//    function() {
//      // If we have hit the timeout and the <acronym title="Asynchronous Javascript And XML">AJAX</acronym> request is active, abort it and let the user know
//          if (callInProgress(request.transport)) {
//            request.transport.abort();
//            showFailureMessage();
//            // Run the onFailure method if we set one up when creating the <acronym title="Asynchronous Javascript And XML">AJAX</acronym> object
//            if (request.options['onFailure']) {
//              request.options['onFailure'](request.transport, request.json);
//            }
//          }
//        },
//        10000 // Five seconds
//        );
//  },
//
//  onComplete: function(request) {
//    // Clear the timeout, the request completed ok
//    saved();
//    window.clearTimeout(request['timeoutId']);
//  }
//});
