(function() {

jQuery.fn.editable = function(opts){

// 引数のデフォルト値を渡す {}内は、カンマ（,）で区切って複数可能
opts = jQuery.extend({
    load_url: "image_load.php",
    update_url: "image_update.php",
    onOpen: function(){},
    onClose: function(){},
    readonly: false
  },opts);

this.each( function() {

var target = $(this);

$.ajaxSetup({async:false});

// 画像をロード
var img = $("img", target);
load_image( img );
if(opts.readonly) return;

// targetの右下に「編集」ボタンを設置
img.wrap("<div></div>");
var container = img.parent().css({
  position:"relative",
  width:img.width()+"px",
  height:img.height()+"px"
}).append("<input type='button' value='編集する'/>");
var button = $("input[type='button']", container).css({
  position:"absolute",
  bottom:"3px",
  right:"3px"
});

// 「編集」ボタンを押したらダイアログが開く
button.click(function(){
  var container = $(this).parent().append('<form class="flora"></form>');
  var img = $("img", container);
  var w = 100;
  var h = img.height() * 100 / img.width();
  
  var form = $("form", container)
    .attr({action:root_path + '/admin/flash_upload.php', method:'post', enctype:'multipart/form-data'})
    .css({color:"black"})
    .append('<div style="margin-bottom:15px;font-weight:bold;">推奨サイズ ' + img.width() + '×' + img.height() + '</div>')
    .append(img.clone().width(w).height(h).css({display:'block',float:'left'}))
    .append('<div style="float:left;" class="upload_field"></div>')
    .append('<div style="clear:both;"></div>')
    .dialog({
      width: w + 40 + 365,
      height: ( h < 140 ? 140 : h ) + 120,
      modal:true,
      overlay:{ opacity:0.5, background:'#000000' },
      buttons: {
        閉じる: function(){
          $(this).dialog("close");
        }
      },
      open: function(){
        opts.onOpen.apply($(this)),
        $('.upload_field', this).jqUploader({
          width: 365,
          height: 140,
          background:'FFFFDF',
          barColor:'FFDD00',
          allowedExt: '*.gif; *.jpg; *.jpeg; *.png; *.bmp',
          allowedExtDescr:  'Images (*.gif; *.jpg; *.jpeg; *.png; *.bmp)',
          errorSizeMessage: 'ファイル容量は1MB(1024KB)まで使用できます。',
          validFileMessage: 'サーバーにファイルを転送してください。',
          startMessage: "ファイルを選択してください\n※日本語のファイル名はご利用いただけません。",
          endMessage: 'and don\'t you come back ;)',
          hideSubmit: false,
          afterScript: '',
          src: root_path + '/js/jqUploader.swf',
          onUpload: function(containerId,filename,varname){
            var id = img.attr("id");
            $.post( opts.update_url, $.param({id:id,filename:filename}), function(data){
              form.dialog("close");
              load_image( img );
            });
          }
        });
      },
      close: function(){
        opts.onClose.apply($(this));
        $(this).dialog("destroy").remove();
      }
    });
});

});

function load_image(img){
  var id = img.attr("id");
  img.attr("src", root_path + '/img/image.php?id=' + id );
}

};

})(jQuery);
