// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function bind_dialog(elem) {
  Event.observe(window, 'load', function() {
    var dialog = new Control.Modal(elem, {
      fade: true,
      fadeDuration: 0.2,
      overlayOpacity: 0.25,
      className: 'modal',
      afterClose: function() {
        this.remoteContentLoaded = false;
        this.getRemoteContentInsertionTarget().update('');
      }
    });
  });
}

function search_by_asin() {
  var asin = $('media_asin').value;
  if (asin.length != 10 && asin.length != 13 || asin.length == 13 && !check_isbn13(asin)) {
    alert('ASIN / ISBN の値が正しくありません。');
    return;
  }
  $('media_form_indicator').show();
  $('media_search_by_asin_button').disabled = true;
  new Ajax.Request(
    '/media/search/asin/' + asin, {
      method: 'get',
      onSuccess: function(http, obj) {
        $('media_asin').value                 = obj['asin'];
        $('media_title').value                = obj['title'];
        $('media_authors').value              = obj['authors'];
        $('media_formatted_price').value      = obj['formatted_price'];
        $('media_publisher').value            = obj['publisher'];
        $('media_formatted_pub_date').value   = obj['formatted_pub_date'];
        ['year', 'month', 'day'].each(function(unit){
          var select = $('pub_date[' + unit +']');
          for (var i = 0; i < select.options.length; i++) {
            if (select.options[i].value == obj['pub_' + unit]) {
              select.selectedIndex = i;
              break;
            }
          }
        });
        $('media_description').value          = obj['description'];
        $('media_thumbnail_url_large').value  = obj['thumbnail_url_large'];
        $('media_thumbnail_url_medium').value = obj['thumbnail_url_medium'];
        $('media_thumbnail_url_small').value  = obj['thumbnail_url_small'];
      },
      onFailure: function(http, obj) {
        alert(obj['message']);
      },
      onComplete: function(http, obj) {
        $('media_form_indicator').hide();
        $('media_search_by_asin_button').disabled = false;
      },
      onException: function(http, e) {
        console.info(e);
        $('media_form_indicator').hide();
        $('media_search_by_asin_button').disabled = false;
      }
    }
  );
}

function thumbnail_preview(size) {
  window.open($('media_thumbnail_url_' + size).value);
}

function check_isbn13(isbn) {
  var odd  = 0;
  var even = 0;
  for (var i = 0; i < 12; i++) {
    if (i % 2 == 0) {
      odd  += parseInt(isbn.charAt(i), 10);
    } else {
      even += parseInt(isbn.charAt(i), 10);
    }
  }
  var cd = (10 - ((odd + even * 3) % 10)) + '';
  return (isbn.charAt(12) == cd.charAt(cd.length - 1));
}
