function updatePrint(changed) {
  var url = "/prints/prints_ajax.php?action=update";
  var media = $('media').options[$('media').selectedIndex].value;
  var width = $('width').value;
  var height = $('height').value;
  var size_preset = $('size_preset').value;
  var qty = $('qty').value;
  var id = $('id').value;
  var calc = $('calc').value;
  new Ajax(url, {
    method: 'post',
    data: 'id='+id+'&changed='+changed+'&media='+media+'&width='+width+'&height='+height+'&size_preset='+size_preset+'&qty='+qty+'&calc='+calc,
    evalScripts: true,
    update: $('print_status'),
    onRequest: function() {
      printStatusLoading(true);
    },
    onComplete: function() {
      printStatusLoading(false);
    },
    onFailure: function() {
      printStatusError('updatePrint('+changed+')');
    }
  }).request();
}

function applyAll() {
  // Apply these settings to all prints
  var approved;
  approved = confirm('Apply these settings to every print in your folder?');
  if (approved) {
    var url = "/prints/prints_ajax.php?action=apply_all";
    var id = $('id').value;
    new Ajax(url, {
      method: 'post',
      data: 'id='+id,
      evalScripts: true,
      update: $('print_status'),
      onRequest: function() {
        printStatusLoading(true);
      },
      onComplete: function() {
        printStatusLoading(false);
      },
      onFailure: function() {
        printStatusError('applyAll()');
      }
    }).request();
  }
}

function showPreview() {
  // Show a preview of this print's quality
  var id = $('id').value;
  var url = "/prints/popups/preview.php?id="+id;
  newwindow = window.open(url,'preview','height=500,width=600,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,status=yes');
}

function showHelp(topic) {
  // Show a page with context-sensitive help
  var media = $('media').value;
  var url = "/prints/popups/help.php?topic="+topic+"&media="+media;
  newwindow = window.open(url,'help','height=400,width=500,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,status=yes');
}

function printStatusLoading(val) {
  if (val) {
    $('print_status').innerHTML = '&nbsp;';
    $('print_status').addClass('ajax_loading');
  } else {
    $('print_status').removeClass('ajax_loading');
    bgFader($('print_status'), '#ccffcc', '#cccccc');
  }
}

function printStatusError(retryFunction) {
  $('print_status').removeClass('ajax_loading');
  $('print_status').innerHTML = 'Please wait a moment and <a href=\'javascript:'+retryFunction+';\'>try your request again</a> to update the page.';
  bgFader($('print_status'), '#ffcccc', '#cccccc');
}

function bgFader(obj, start, finish) {
  var fx = new Fx.Style(obj, 'background-color', {
    duration: 1500,
    transition: Fx.Transitions.Quad.easeOut
  }).start(start, finish);
}

// Initialization
window.addEvent('domready', function(){

  updatePrint('media');

  var mySlide = new Fx.Slide('printbox_advanced');
  $('toggle').addEvent('click', function(e){
    e = new Event(e);
    mySlide.toggle();
    e.stop();
  });
  mySlide.hide();

});
