axsh/wakame-vdc

View on GitHub
frontend/dcmgr_gui/public/javascripts/dcmgr_gui/resource_manage_panel.js

Summary

Maintainability
F
1 mo
Test Coverage
DcmgrGUI.prototype.resourceManagePanel = function(){
  // ボタン名
  var create_button_name = $.i18n.prop('create_button');
  var close_button_name = $.i18n.prop('close_button');
  var update_button_name = $.i18n.prop('update_button');
  var delete_button_name = $.i18n.prop('delete_button');

  // ---------------------------------ホストノード作成ダイアログ------------------------------------
  // ダイアログ内の閉じるボタン押下
  var create_resource_hn_buttons = {};
  create_resource_hn_buttons[close_button_name] = function() {
    $(this).dialog("destroy");
        $(this).remove(); 
  }

  // ダイアログ内の作成ボタン押下
  create_resource_hn_buttons[create_button_name] = function() {
    // フォーム全部をバリデーション
    var f = $('#fm');
    var valid = f.validate().form();
    if(valid) {
        // 値を取り込んで、リクエスト送信
        var account_id = $(this).find('#selaccount_account').val();
        var cpu_cores = $(this).find('#cpu_cores').val();
        var memory_size = $(this).find('#memory_size').val();
        var arch = $(this).find('#arch').val();
        var hypervisor = $(this).find('#hypervisor').val();
        var hostid = $(this).find('#hostid').val();
        var name = $(this).find('#name').val();
        var data ='account_id=' + account_id 
          +'&cpu_cores=' + cpu_cores
                  +'&memory_size='  + memory_size 
                  +'&arch=' + arch
                  +'&hypervisor=' + hypervisor
                  +'&hostid=' + hostid
                  +'&name=' + name;
        var request = new DcmgrGUI.Request;
        // 送信中はマスキング
        $("#create_hostnode_dialog").mask($.i18n.prop('waiting_communicate'));
        request.post({
            "url": '/dialog/create_hn_exec',
            "data": data,
            success: function(json,status) {
                    // メッセージボックスにて結果表示
                    if (json.result.exitcode == 0) {
                        Sexy.messageBox('info',$.i18n.prop(json.result.message,[json.result.detail]));
                        bt_create_resource_hn.content.dialog("destroy");
                        bt_create_resource_hn.content.remove();
                    } else {
                        Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                                 "<p>exit code =" + json.result.exitcode  + "</p>" +
                                 "<p>" + json.result.detail + "</p>");
                    }
            },
                complete: function(xhr,status) {
                        $("#create_hostnode_dialog").unmask();
                }
        });
    }
  }
  
  // ホストノード作成ダイアログ定義
  var bt_create_resource_hn = new DcmgrGUI.Dialog({
    target:'.create_resource_hostnode',
    width:600,
    height:325,
    title:$.i18n.prop('create_resource_hn_header'),
    path:'/create_hn',
    callback: function(){
        // バリデーション定義
    var f = $('#fm');
    f.validate({
            errorClass : 'valid-error',
            rules: {
            'hostid' : {    
                required : true,
                            AN : true,
                                maxlength : 8
            },
            'cpu_cores' : {    
                required : true,
                            digits : true,
                          min : 1
            },
            'memory_size' : {    
                required : true,
                            digits : true,
                          min : 1
            }
            },
            messages: {
            'hostid' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_hostid')]),
                            AN: $.i18n.prop('validate_errmsg_AN'),
                maxlength: $.validator.format($.i18n.prop('validate_errmsg_maxlength'))
            },
            'cpu_cores' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_cpu_cores')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            },
            'memory_size' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_memory_size')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            }
            },
            onkeyup: false    
       });
    },
    button: create_resource_hn_buttons
  });

  // メイン画面で作成ボタン押下時、ダイアログ表示
  bt_create_resource_hn.target.bind('click', function(){
    bt_create_resource_hn.open();
  });

  // ---------------------------------ホストノード編集&削除ダイアログ------------------------------------
  // ダイアログ内の閉じるボタン押下
  var edit_and_delete_resource_hn_buttons = {};
  edit_and_delete_resource_hn_buttons[close_button_name] = function() { 
      $(this).dialog("destroy");
        $(this).remove(); 
  };

  // ダイアログ内の削除ボタン押下
  edit_and_delete_resource_hn_buttons[delete_button_name] = function() { 
   // 値を取り込んでリクエスト送信 
    var hostid = $(this).find('#hostid').val();
    var request = new DcmgrGUI.Request;
    // 送信中はマスキング
    $("#edit_and_delete_hostnode_dialog").mask($.i18n.prop('waiting_communicate'));
    request.post({
      "url": '/dialog/delete_hn_exec/' + hostid,
      success: function(json, status){
         // メッセージボックス表示にて結果表示
         if (json.result.exitcode == 0) {
            Sexy.messageBox('info',$.i18n.prop(json.result.message));
            bt_edit_and_delete_resource_hn.content.dialog("destroy");
            bt_edit_and_delete_resource_hn.content.remove();

         } else {
            Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                            "<p>exit code =" + json.result.exitcode  + "</p>" +
                            "<p>" + json.result.detail + "</p>");
         }
      },
      complete: function(xhr,status) {
          $("#edit_and_delete_hostnode_dialog").unmask();
      }
    });
  }

  // ダイアログ内の更新ボタン押下
  edit_and_delete_resource_hn_buttons[update_button_name] = function() {
    // フォーム全部をバリデーション
    var f = $('#fm');
    var valid = f.validate().form();
    if(valid) {
        // 値を取り込んで、リクエスト送信
        var account_id = $(this).find('#selaccount_account').val();
        var cpu_cores = $(this).find('#cpu_cores').val();
        var memory_size = $(this).find('#memory_size').val();
           var id = $(this).find('#hostid').val();
        var name = $(this).find('#name').val();
        var data ='uuid=' + id 
                  +'&account_id=' + account_id 
          +'&cpu_cores=' + cpu_cores
                  +'&memory_size='  + memory_size 
                  +'&name=' + name;
        var request = new DcmgrGUI.Request;
        // 送信中はマスキング
        $("#edit_and_delete_hostnode_dialog").mask($.i18n.prop('waiting_communicate'));
       request.post({
            "url": '/dialog/edit_hn_exec',
            "data": data,
            success: function(json,status) {
                    // メッセージボックスにて結果表示
                    if (json.result.exitcode == 0) {
                        Sexy.messageBox('info',$.i18n.prop(json.result.message));
                        bt_edit_and_delete_resource_hn.content.dialog("destroy");
                        bt_edit_and_delete_resource_hn.content.remove();

                    } else {
                        Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                                 "<p>exit code =" + json.result.exitcode  + "</p>" +
                                 "<p>" + json.result.detail + "</p>");
                    }
            },
                complete: function(xhr,status) {
                        $("#edit_and_delete_hostnode_dialog").unmask();
                }
        });
    }
  }
  
  // ホストノード編集&削除ダイアログ定義
  var bt_edit_and_delete_resource_hn = new DcmgrGUI.Dialog({
    target: '.edit_and_delete_resource_hostnode',
    width: 590,
    height: 380,
    title: $.i18n.prop('edit_and_delete_resource_hn_header'),
    path: '/edit_and_delete_hn',
    button: edit_and_delete_resource_hn_buttons,
    callback: function(){      
    var f = $('#fm');
    f.validate({
                // バリデーション定義
            errorClass : 'valid-error',
            rules: {
            'cpu_cores' : {    
                required : true,
                            digits : true,
                          min : 1
            },
            'memory_size' : {    
                required : true,
                            digits : true,
                          min : 1
            }
            },
            messages: {
            'cpu_cores' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_cpu_cores')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            },
            'memory_size' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_memory_size')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            }
            },
            onkeyup: false    
       });
        // グループ選択時、全ホストノード情報をajaxで取得
        $('#selaccount_account').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var account_id = $('#selaccount_account').val();
            var request = new DcmgrGUI.Request;
                var data = 'account_id=' + account_id;
            request.post({
                "url": '/dialog/get_hn_list',
                "data": data,
                success: function(json,status) {
                             // 一覧情報をセーブ、ホストノードIDの一覧セレクトを作成
                 var sel = $('#hostid');
                             $.data(acc,'host_nodes',json.host_node);
                             sel.children().remove();
                             if (json.host_node.total > 0) {
                                for(var i = 0;i < json.host_node.total;i++)
                                {
                                    var rec = json.host_node.results[i].result;
                                    var html = '<option value="' + rec.uuid + '">' + rec.id +'</option>';
                                    sel.append(html);  
                                }
                                // ホストノード選択イベント処理を呼出
                                $('#hostid').change();
                             } 
                             else
                             {
                                // ホストノードがない場合、選択不可にして、画面項目内容クリア
                                var html = '<option value="">' + f.find('#hostnode_nothing').val()  + '</option>';
                                sel.append(html);
                                f.find('#cpu_cores').val("");
                                f.find(':text').attr("disabled","disabled");
                                f.find('#memory_size').val("");
                                f.find('#name').val("");
                                $('#arch').html("<BR>");
                                $('#hypervisor').html("<BR>");
                                $('#status').html("<BR>");
                  bt_edit_and_delete_resource_hn.disabledButton(1,true);
                  bt_edit_and_delete_resource_hn.disabledButton(2,true);
                             }
                    }
            });
        });
        // ホストノード選択時、ダイアログ内の項目表示内容を更新
        $('#hostid').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var hostid = $('#hostid').val();
                if (hostid != '') {
                        // 一覧情報をキャッシュから取り出し
            var host_node = $.data(acc,'host_nodes');
                        for (var i = 0;i < host_node.total;i++)
                        {
                var rec = host_node.results[i].result;
                            if (hostid == rec.uuid) {
                            // 選択されたホストノードであれば、項目に値をセット
                                f.find('#cpu_cores').val(rec.offering_cpu_cores);
                                f.find(':text').removeAttr("disabled");
                                f.find('#memory_size').val(rec.offering_memory_size);
                                f.find('#name').val(rec.name);
                                $('#arch').html(f.find('#' + rec.arch).val());
                                $('#hypervisor').html(f.find('#' + rec.hypervisor).val());
                                $('#status').html(rec.status);
                                if (rec.status == "online") {
                      bt_edit_and_delete_resource_hn.disabledButton(1,true);
                   } else {
                      bt_edit_and_delete_resource_hn.disabledButton(1,false);
                                }
                  bt_edit_and_delete_resource_hn.disabledButton(2,false);
                            }
                        }
                }      
        });
        
        // 初期表示内容で、アカウント選択イベント処理を呼出
        $('#selaccount_account').change();
    }
  });

  // メイン画面のボタン活性化
  $(bt_create_resource_hn.target).button({ disabled: false });
  $(bt_edit_and_delete_resource_hn.target).button({ disabled: false });
 
  // メイン画面で編集/削除ボタン押下時、ダイアログ表示
  bt_edit_and_delete_resource_hn.target.bind('click', function() {
    bt_edit_and_delete_resource_hn.open();
  });

  // ---------------------------------ストレージノード作成ダイアログ------------------------------------
  // ダイアログ内の閉じるボタン押下
  var create_resource_sn_buttons = {};
  create_resource_sn_buttons[close_button_name] = function() {
    $(this).dialog("destroy");
        $(this).remove(); 
  }
 
  // ダイアログ内の作成ボタン押下
  create_resource_sn_buttons[create_button_name] = function() {
    // フォーム全部をバリデーション
    var f = $('#fm');
    var valid = f.validate().form();
    if(valid) {
        // 値を取り込んでリクエスト送信
        var account_id = $(this).find('#selaccount_account').val();
        var disk_space = $(this).find('#disk_space').val();
        var ipaddr = $(this).find('#ipaddr').val();
        var transport_type = $(this).find('#transport_type').val();
        var storage_type = $(this).find('#storage_type').val();
        var storageid = $(this).find('#storageid').val();
        var base_path = $(this).find('#base_path').val();
        var snapshot_base_path = $(this).find('#snapshot_base_path').val();
        var data ='account_id=' + account_id 
          +'&disk_space=' + disk_space
                  +'&ipaddr='  + ipaddr 
                  +'&transport_type=' + transport_type
                  +'&storage_type=' + storage_type
                  +'&storageid=' + storageid
                  +'&snapshot_base_path=' + snapshot_base_path
                  +'&base_path=' + base_path;
        var request = new DcmgrGUI.Request;
        // 送信中はマスキング
        $("#create_storagenode_dialog").mask($.i18n.prop('waiting_communicate'));
        request.post({
            "url": '/dialog/create_sn_exec',
            "data": data,
            success: function(json,status) {
                    // メッセージボックスにて結果表示
                    if (json.result.exitcode == 0) {
                        Sexy.messageBox('info',$.i18n.prop(json.result.message,[json.result.detail]));
            (create_resource_sn_buttons[close_button_name])();
                        bt_create_resource_sn.content.dialog("destroy");
                        bt_create_resource_sn.content.remove();
                    } else {
                        Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                                 "<p>exit code =" + json.result.exitcode  + "</p>" +
                                 "<p>" + json.result.detail + "</p>");
                    }
            },
                complete: function(xhr,status) {
                        $("#create_storagenode_dialog").unmask();
                }
        });
    }
  }

  // ストレージノード作成ダイアログ定義  
  var bt_create_resource_sn = new DcmgrGUI.Dialog({
    target:'.create_resource_storagenode',
    width:583,
    height:600,
    title:$.i18n.prop('create_resource_sn_header'),
    path:'/create_sn',
    callback: function(){
        // バリデーション定義
    var f = $('#fm');
    f.validate({
            errorClass : 'valid-error',
            rules: {
            'storageid' : {    
                required : true,
                            AN : true,
                                maxlength : 8
            },
            'disk_space' : {    
                required : true,
                            digits : true,
                          min : 1
            },
            'ipaddr' : {    
                required : true,
                            IP : true
            },
            'base_path' : {    
                required : true,
                            PATH : true,
                          maxlength : 255
            },
            'snapshot_base_path' : {    
                required : true,
                            PATH : true,
                          maxlength : 255
            }
            },
            messages: {
            'storageid' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_storageid')]),
                            AN: $.i18n.prop('validate_errmsg_AN'),
                maxlength: $.validator.format($.i18n.prop('validate_errmsg_maxlength'))
            },
            'disk_space' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_disk_space')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            },
            'ipaddr' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_ipaddr')]),
                            IP: $.i18n.prop('validate_errmsg_IP')
            },
            'base_path' : {
                required: '<BR>' + $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_base_path')]),
                            PATH: '<BR>' + $.i18n.prop('validate_errmsg_PATH'),
                maxlength: '<BR>' + $.i18n.prop('validate_errmsg_maxlength')
            },
            'snapshot_base_path' : {
                required: '<BR>' + $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_snapshot_base_path')]),
                            PATH: '<BR>' + $.i18n.prop('validate_errmsg_PATH'),
                maxlength: '<BR>' + $.i18n.prop('validate_errmsg_maxlength')
            }
            },
            onkeyup: false    
       });
    },
    button: create_resource_sn_buttons
  });
  
  // メイン画面で作成ボタン押下時、ダイアログ表示
  bt_create_resource_sn.target.bind('click', function(){
    bt_create_resource_sn.open();
  });
  
  // ---------------------------------ストレージノード削除ダイアログ------------------------------------
  // ダイアログ内の閉じるボタン押下
  var delete_resource_sn_buttons = {};
  delete_resource_sn_buttons[close_button_name] = function() { 
      $(this).dialog("destroy");
        $(this).remove(); 
  };

  // 削除ボタン押下処理
  delete_resource_sn_buttons[delete_button_name] = function() {
    // 値を取り込んでリクエスト送信 
    var storageid = $(this).find('#storageid').val();
    var request = new DcmgrGUI.Request;
    // 送信中はマスキング
    $("#delete_storagenode_dialog").mask($.i18n.prop('waiting_communicate'));
    request.post({
      "url": '/dialog/delete_sn_exec/' + storageid,
      success: function(json, status){
         // メッセージボックスにて結果表示
         if (json.result.exitcode == 0) {
            Sexy.messageBox('info',$.i18n.prop(json.result.message));
            bt_delete_resource_sn.content.dialog("destroy");
            bt_delete_resource_sn.content.remove();
         } else {
            Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                            "<p>exit code =" + json.result.exitcode  + "</p>" +
                            "<p>" + json.result.detail + "</p>");
         }
      },
      complete: function(xhr,status) {
         $("#delete_storagenode_dialog").unmask();
      }
     });
  }

  // ストレージノード削除ダイアログ定義
  var bt_delete_resource_sn = new DcmgrGUI.Dialog({
    target: '.delete_resource_storagenode',
    width: 600,
    height: 410,
    title: $.i18n.prop('delete_resource_sn_header'),
    path: '/delete_sn',
    button: delete_resource_sn_buttons,
    callback: function(){
        // アカウント選択時、全ストレージノード情報をajaxで取得      
        $('#selaccount_account').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var account_id = $('#selaccount_account').val();
            var request = new DcmgrGUI.Request;
                var data = 'account_id=' + account_id;
            request.post({
                "url": '/dialog/get_sn_list',
                "data": data,
                success: function(json,status) {
                             // 一覧情報をセーブ、ストレージノードIDの一覧セレクトを作成
                 var sel = $('#storageid');
                             $.data(acc,'storage_nodes',json.storage_node);
                             sel.children().remove();
                             if (json.storage_node.total > 0) {
                                for(var i = 0;i < json.storage_node.total;i++)
                                {
                                    var rec = json.storage_node.results[i].result;
                                    var html = '<option value="' + rec.uuid + '">' + rec.id + '</option>';
                                    sel.append(html);  
                                }
                                // ストレージノード選択イベント処理呼出
                                $('#storageid').change();
                             } 
                             else
                             {
                                // ストレージノードがない場合は表示クリア
                                var html = '<option value="">' + f.find('#storagenode_nothing').val()  + '</option>';
                                sel.append(html);
                                $('#disk_space').html("<BR>");
                                $('#ipaddr').html("<BR>");
                                $('#transport_type').html("<BR>");
                                $('#storage_type').html("<BR>");
                                $('#base_path').html("<BR>");
                                $('#snapshot_base_path').html("<BR>");
                                $('#status').html("<BR>");
                  bt_delete_resource_sn.disabledButton(1,true);
                             }
                    }
            });
        });
        // ストレージノード選択時、ダイアログ内の項目表示内容を更新
        $('#storageid').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var storageid = $('#storageid').val();
                if (storageid != '') {
            var storage_node = $.data(acc,'storage_nodes');
                        for (var i = 0;i < storage_node.total;i++)
                        {
                var rec = storage_node.results[i].result;
                            if (storageid == rec.uuid) {
                                $('#disk_space').html(rec.offering_disk_space);
                                $('#ipaddr').html(rec.ipaddr);
                                $('#transport_type').html(f.find('#' + rec.transport_type).val());
                                $('#storage_type').html(f.find('#' + rec.storage_type).val());
                                $('#base_path').html(rec.export_path);
                                $('#snapshot_base_path').html(rec.snapshot_base_path);
                                $('#status').html(rec.status);
                                if (rec.status == "online") {
                      bt_delete_resource_sn.disabledButton(1,true);
                   } else {
                      bt_delete_resource_sn.disabledButton(1,false);
                                }
                            }
                        }
                }      
        });
        
        $('#selaccount_account').change();
    }
  });

  $(bt_create_resource_sn.target).button({ disabled: false });
  $(bt_delete_resource_sn.target).button({ disabled: false });

  
  bt_delete_resource_sn.target.bind('click', function() {
    bt_delete_resource_sn.open();
  });


  // ---------------------------------インスタンススペック作成ダイアログ------------------------------------
  // ダイアログ内の閉じるボタン押下
   var create_resource_is_buttons = {};
  create_resource_is_buttons[close_button_name] = function() {
    $(this).dialog("destroy");
        $(this).remove(); 
  }
  
  // ダイアログ内の作成ボタン押下
  create_resource_is_buttons[create_button_name] = function() {
    // フォーム全部をバリデーション 
    var f = $('#fm');
    var valid = f.validate().form();
    if(valid) {
        // 値を取り込んで、リクエスト送信
        var account_id = $(this).find('#selaccount_account').val();
        var cpu_cores = $(this).find('#cpu_cores').val();
        var memory_size = $(this).find('#memory_size').val();
        var arch = $(this).find('#arch').val();
        var hypervisor = $(this).find('#hypervisor').val();
        var specid = $(this).find('#specid').val();
        var quota_weight = $(this).find('#quota_weight').val();
        var data ='account_id=' + account_id 
          +'&cpu_cores=' + cpu_cores
                  +'&memory_size='  + memory_size 
                  +'&arch=' + arch
                  +'&hypervisor=' + hypervisor
                  +'&specid=' + specid;
        if (quota_weight != "") {
            data = data +'&quota_weight=' + quota_weight;
        }
        var request = new DcmgrGUI.Request;
        // 送信中はマスキング
        $("#create_spec_dialog").mask($.i18n.prop('waiting_communicate'));
        request.post({
            "url": '/dialog/create_is_exec',
            "data": data,
            success: function(json,status) {
                    // メッセージボックスにて結果表示
                    if (json.result.exitcode == 0) {
                        Sexy.messageBox('info',$.i18n.prop(json.result.message));
                        bt_create_resource_is.content.dialog("destroy");
                        bt_create_resource_is.content.remove();
                    } else {
                        Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                                 "<p>exit code =" + json.result.exitcode  + "</p>" +
                                 "<p>" + json.result.detail + "</p>");
                    }
            },
                complete: function(xhr,status) {
                        $("#create_spec_dialog").unmask();
                }
        });
    }
  }
  
  // インスタンススペック作成ダイアログ定義
  var bt_create_resource_is = new DcmgrGUI.Dialog({
    target:'.create_spec',
    width:600,
    height:330,
    title:$.i18n.prop('create_resource_is_header'),
    path:'/create_is',
    callback: function(){
        // バリデーション定義
    var f = $('#fm');
    f.validate({
            errorClass : 'valid-error',
            rules: {
            'specid' : {    
                required : true,
                            AN : true,
                                maxlength : 8
            },
            'cpu_cores' : {    
                required : true,
                            digits : true,
                          min : 1
            },
            'memory_size' : {    
                required : true,
                            digits : true,
                          min : 1,
                        },
            'quota_weight' : {    
                            number : true,
                                GT : 0
            }
            },
            messages: {
            'specid' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_specid')]),
                            AN: $.i18n.prop('validate_errmsg_AN'),
                maxlength: $.validator.format($.i18n.prop('validate_errmsg_maxlength'))
            },
            'cpu_cores' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_cpu_cores')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            },
            'memory_size' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_memory_size')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            },
            'quota_weight' : {
                            number: $.i18n.prop('validate_errmsg_number'),
                GT: $.validator.format($.i18n.prop('validate_errmsg_plus_number'))
            }
            },
            onkeyup: false    
       });
    },
    button: create_resource_is_buttons
  });
  
  // メイン画面上の作成ボタン押下処理
  bt_create_resource_is.target.bind('click', function(){
    bt_create_resource_is.open();    
  });

  // ---------------------------------追加ドライブ・IF管理ダイアログ------------------------------------
  // ダイアログ内の閉じるボタン押下
  var additional_drives_and_IFs_buttons = {};
  additional_drives_and_IFs_buttons[close_button_name] = function() { 
      $(this).dialog("destroy");
        $(this).remove(); 
  };

  // ホストノード作成ダイアログ定義
  var bt_additional_drives_and_IFs = new DcmgrGUI.Dialog({
    target: '.additional_drives_and_IFs',
    width: 650,
    height: 650,
    title: $.i18n.prop('additional_drives_and_IFs_header'),
    path: '/additional_drives_and_IFs',
    button: additional_drives_and_IFs_buttons,
    callback: function(){
        var is_accid = '';
        var is_uuid = '';
        // jqGridの定義(追加ドライブ)
    jQuery("#list").jqGrid({
                // データ取得関数(json)
        datatype: function(postdata) {
                var request = new DcmgrGUI.Request;
                    var data = 'account_id=' + is_accid +'&uuid=' + is_uuid;
                    for (var key in postdata) {
                        data = data + '&' + key + "=" + postdata[key];
                    }
                request.get({
                "url": '/dialog/get_is_drives_list',
                "data": data,
                success: function(json,status) {
                var mygrid = jQuery("#list")[0];
                                jQuery("#list").clearGridData(true);
                mygrid.addJSONData(json);
                        }
                    }); 
                 },
                // 背景ゼブラ描画(効果微妙)
                altRows: true,
                // 列名
        colNames:[$.i18n.prop('item_drive_id'), 
                          $.i18n.prop('item_drive_type'),
                          $.i18n.prop('item_drive_size'),
                          $.i18n.prop('item_index')],
                // 列属性(名前、配置、バリデーション等)
        colModel:[
            {name:'id',align:'center',editable:true,editrules:{required:true},sortable:false},
            {name:'type',align:'center',width:100,sortable:false,editable:true,edittype:"select",
                         editoptions:{value:{local:$.i18n.prop('item_local'),volume:$.i18n.prop('item_volume')}}},
            {name:'drive_size',align:'center',width:100,sortable:false,
                         editable:true,editrules:{integer:true,minValue:1}},
            {name:'index',align:'center',width:100,sortable:false,
                         editable:true,editrules:{integer:true,minValue:0}}
        ],
                // 行数
                rowNum:5,
                // 高さ
                height:'115px',
                // 関連するページャ(ページャに操作ボタン有)
                pager:'#pager1',
                // 更新時URL
                editurl: "/dialog/is_drive_change",
                // 表題
        caption: $.i18n.prop('additional_drives_and_IFs_drives_table_title'),
                // 返却されるjsonの形式定義
                jsonReader : {
                  root:"drive_data",
                      page: "currpage",
                    total: "totalpages",
                    records: "totalrecords",
                    repeatitems: false,
                    id: "0"
                }
    }).navGrid(
             '#pager1',
              // ページャ上のボタンの有効、無効
              {edit:true,add:true,del:true,search:false,refresh:false},
              // 更新のイベント処理
              {
                 // サブミット前処理(対象のスペックuuidの取り込み)
                 onclickSubmit: function(params,postdata) {
                     var adddata = {uuid: is_uuid };
          return adddata;
                 },
                 // 更新後、フォームを閉じる
                 closeAfterEdit: true,
                 // フォーム表示前処理(id,typeは変更不可にする)
                 beforeShowForm: function(formid) {
                   $('#id',formid).attr("disabled","disabled");
                   $('#type',formid).attr("disabled","disabled");
                 }
              },
              // 作成のイベント処理
              {
                 // サブミット前処理(対象のスペックuuidの取り込み)
                 onclickSubmit: function(params,postdata) {
                     var adddata = {uuid: is_uuid };
           return adddata;
                 },
                 // 更新後、フォームを閉じる
                 closeAfterAdd: true,
                 // フォーム表示前処理(id,typeは変更可能にする)
                 beforeShowForm: function(formid) {
                   $('#id',formid).removeAttr("disabled");
                   $('#type',formid).removeAttr("disabled");
                 }
              },
              // 削除のイベント処理
              // サブミット前処理(対象のスペックuuidの取り込み)
              {onclickSubmit: function(params,postdata) {
                  var adddata = {uuid: is_uuid };
        return adddata;
              }}
        );
        // jqGridの定義(VIF)定義内容は追加ドライブと同じ
    jQuery("#list2").jqGrid({
        datatype: function(postdata) {
                var request = new DcmgrGUI.Request;
                    var data = 'account_id=' + is_accid +'&uuid=' + is_uuid;
                    for (var key in postdata) {
                        data = data + '&' + key + "=" + postdata[key];
                    }
                request.get({
                "url": '/dialog/get_is_vifs_list',
                "data": data,
                success: function(json,status) {
                var mygrid = jQuery("#list2")[0];
                                jQuery("#list2").clearGridData(true);
                mygrid.addJSONData(json);
                        }
                    }); 
                },
                altRows: true,
        colNames:[$.i18n.prop('item_IF_id'), 
                          $.i18n.prop('item_bandwidth'),
                          $.i18n.prop('item_index')],
        colModel:[
            {name:'id',align:'center',editable:true,editrules:{required:true},sortable:false},
            {name:'bandwidth',align:'center',width:150,editable:true,sortable:false,
                         editrules:{integer:true,minValue:1}},
            {name:'index',align:'center',width:100,editable:true,sortable:false,
                         editrules:{integer:true,minValue:0}}
        ],
                rowNum:5,
                height:'115px',
                pager: '#pager2',
                editurl: "/dialog/is_vif_change",
        caption: $.i18n.prop('additional_drives_and_IFs_IFs_table_title'),
                jsonReader : {
                  root:"vif_data",
                      page: "currpage",
                    total: "totalpages",
                    records: "totalrecords",
                    repeatitems: false,
                    id: "0"
                }
    }).navGrid(
             '#pager2',
             {edit:true,add:true,del:true,search:false,refresh:false},
              {
                 onclickSubmit: function(params,postdata) {
                     var adddata = {uuid: is_uuid };
          return adddata;
                 },
                 closeAfterEdit: true,
                 beforeShowForm: function(formid) {
                   $('#id',formid).attr("disabled","disabled");
                 }
              },
              {
                 onclickSubmit: function(params,postdata) {
                     var adddata = {uuid: is_uuid };
           return adddata;
                 },
                 closeAfterAdd: true,
                 beforeShowForm: function(formid) {
                   $('#id',formid).removeAttr("disabled");
                 }
              },
              {onclickSubmit: function(params,postdata) {
                  var adddata = {uuid: is_uuid };
        return adddata;
              }}
        );
        // グループ選択時、全スペック一覧情報をajaxで取得 
        $('#selaccount_account').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var account_id = $('#selaccount_account').val();
                is_accid = account_id;
            var request = new DcmgrGUI.Request;
                var data = 'account_id=' + account_id;
            request.post({
                "url": '/dialog/get_is_list',
                "data": data,
                success: function(json,status) {
                             // 一覧情報をセーブ、スペックIDの一覧セレクトを作成
                 var sel = $('#specid');
                             $.data(acc,'specs',json.instance_spec);
                             sel.children().remove();
                             if (json.instance_spec.total > 0) {
                                for(var i = 0;i < json.instance_spec.total;i++)
                                {
                                    var rec = json.instance_spec.results[i].result;
                                    var html = '<option value="' + rec.uuid + '">' + rec.id +'</option>';
                                    sel.append(html);  
                                }
                                // スペックID選択イベント処理を呼出
                                $('#specid').change();
                             } 
                             else
                             {
                                var recs = jQuery("#list").getGridParam("records");
                                for (var i = 1;i <= recs;i++) {
                                    jQuery("#list").delRowData(i);
                                }
                             }
                    }
            });
        });
        // スペックID選択時処理 
        $('#specid').bind('change',function() {
        var specid = $('#specid').val();
                if (specid != '') {
                        // 追加ドライブ情報をajaxで取得
                        is_uuid = specid;
                var request = new DcmgrGUI.Request;
                    var data = 'account_id=' + is_accid +'&uuid=' + specid + "&rows=5&page=1&sidx=&sord=asc";
                        // 通信中マスク
                        $("#load_mask1").mask($.i18n.prop('loading_parts'));
                request.get({
                    "url": '/dialog/get_is_drives_list',
                    "data": data,
                    success: function(json,status) {
                                        // グリッド内容を一端クリアして、取得情報をセット
                    var mygrid = jQuery("#list")[0];
                                        jQuery("#list").clearGridData(true);
                    mygrid.addJSONData(json);
                                },
                                complete: function(xhr,status) {
                                  $("#load_mask1").unmask();
                                }
                        }); 
                        // VIF情報をajaxで取得
                    var data2 = 'account_id=' + is_accid +'&uuid=' + specid + "&rows=5&page=1&sidx=&sord=asc";
               var request2 = new DcmgrGUI.Request;
                        // 通信中マスク
                        $("#load_mask2").mask($.i18n.prop('loading_parts'));
                request2.get({
                    "url": '/dialog/get_is_vifs_list',
                    "data": data2,
                    success: function(json,status) {
                                        // グリッド内容を一端クリアして、取得情報をセット
                    var mygrid = jQuery("#list2")[0];
                                        jQuery("#list2").clearGridData(true);
                    mygrid.addJSONData(json);
                                },
                                complete: function(xhr,status) {
                                  $("#load_mask2").unmask();
                                }
                        }); 
                }      
        });
        
        $('#selaccount_account').change();
    }
  });

  // メイン画面上のボタンの押下処理
  bt_additional_drives_and_IFs.target.bind('click', function() {
    bt_additional_drives_and_IFs.open();
  });
  
  // ---------------------------------インスタンススペック編集・削除ダイアログ-------------------------------
  // ダイアログ内の閉じるボタン処理
  var edit_and_delete_resource_is_buttons = {};
  edit_and_delete_resource_is_buttons[close_button_name] = function() { 
      $(this).dialog("destroy");
        $(this).remove(); 
  };

  // ダイアログの削除ボタン処理
  edit_and_delete_resource_is_buttons[delete_button_name] = function() {
    // 値を取り込んでリクエスト送信 
    var specid = $(this).find('#specid').val();
    var request = new DcmgrGUI.Request;
    // 送信中葉マスキング
    $("#edit_and_delete_spec_dialog").mask($.i18n.prop('waiting_communicate'));
    request.post({
      "url": '/dialog/delete_is_exec/' + specid,
      success: function(json, status){
         // メッセージボックス「に結果表示
         if (json.result.exitcode == 0) {
            Sexy.messageBox('info',$.i18n.prop(json.result.message));
            bt_edit_and_delete_resource_is.content.dialog("destroy");
            bt_edit_and_delete_resource_is.content.remove();

         } else {
            Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                            "<p>exit code =" + json.result.exitcode  + "</p>" +
                            "<p>" + json.result.detail + "</p>");
         }
      },
      complete: function(xhr,status) {
         $("#edit_and_delete_spec_dialog").unmask();
      }
     });
  }

  // ダイアログの更新ボタン処理
  edit_and_delete_resource_is_buttons[update_button_name] = function() {
    // フォーム全体をバリデーション
    var f = $('#fm');
    var valid = f.validate().form();
    if(valid) {
        // メッセージボックス表示にて結果表示
        var account_id = $(this).find('#selaccount_account').val();
        var cpu_cores = $(this).find('#cpu_cores').val();
        var memory_size = $(this).find('#memory_size').val();
           var id = $(this).find('#specid').val();
        var quota_weight = $(this).find('#quota_weight').val();
        var data ='uuid=' + id 
                  +'&account_id=' + account_id 
          +'&cpu_cores=' + cpu_cores
                  +'&memory_size='  + memory_size;
        if(quota_weight != '') {
            data = data +'&quota_weight=' + quota_weight;
        }
        var request = new DcmgrGUI.Request;
        // 送信中はマスキング
        $("#edit_and_delete_spec_dialog").mask($.i18n.prop('waiting_communicate'));
        request.post({
            "url": '/dialog/edit_is_exec',
            "data": data,
            success: function(json,status) {
                    // メッセージボックス表示にて結果表示
                    if (json.result.exitcode == 0) {
                        Sexy.messageBox('info',$.i18n.prop(json.result.message));
                        bt_edit_and_delete_resource_is.content.dialog("destroy");
                        bt_edit_and_delete_resource_is.content.remove();

                    } else {
                        Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                                 "<p>exit code =" + json.result.exitcode  + "</p>" +
                                 "<p>" + json.result.detail + "</p>");
                    }
            },
            complete: function(xhr,status) {
                $("#edit_and_delete_spec_dialog").unmask();
                  }

        });
    }
  }
 
  // インスタンススペック編集・削除ダイアログ定義 
  var bt_edit_and_delete_resource_is = new DcmgrGUI.Dialog({
    target: '.edit_and_delete_spec',
    width: 590,
    height: 380,
    title: $.i18n.prop('edit_and_delete_resource_is_header'),
    path: '/edit_and_delete_is',
    button: edit_and_delete_resource_is_buttons,
    callback: function(){      
    var f = $('#fm');
    f.validate({
                // バリデーション定義
            errorClass : 'valid-error',
            rules: {
            'cpu_cores' : {    
                required : true,
                            digits : true,
                          min : 1
            },
            'memory_size' : {    
                required : true,
                            digits : true,
                          min : 1
            },
            'quota_weight' : {    
                            number : true,
                                GT : 0
            }
            },
            messages: {
            'cpu_cores' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_cpu_cores')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            },
            'memory_size' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_memory_size')]),
                            digits: $.i18n.prop('validate_errmsg_digits'),
                min: $.validator.format($.i18n.prop('validate_errmsg_min'))
            },
            'quota_weight' : {
                            number: $.i18n.prop('validate_errmsg_number'),
                GT: $.validator.format($.i18n.prop('validate_errmsg_plus_number'))
            }
            },
            onkeyup: false    
       });

        // グループ選択時、全インスタンススペック情報をajaxで取得
        $('#selaccount_account').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var account_id = $('#selaccount_account').val();
            var request = new DcmgrGUI.Request;
                var data = 'account_id=' + account_id;
            request.post({
                "url": '/dialog/get_is_list',
                "data": data,
                success: function(json,status) {
                             // 一覧情報をセーブ、インスタンススペックIDの一覧セレクトを作成
                 var sel = $('#specid');
                             $.data(acc,'specs',json.instance_spec);
                             sel.children().remove();
                             if (json.instance_spec.total > 0) {
                                for(var i = 0;i < json.instance_spec.total;i++)
                                {
                                    var rec = json.instance_spec.results[i].result;
                                    var html = '<option value="' + rec.uuid + '">' + rec.id +'</option>';
                                    sel.append(html);  
                                }
                                // インスタンススペック選択時処理を呼出
                                $('#specid').change();
                             } 
                             else
                             {
                                // 対象のインスタンススペックがない場合、選択不可にして、画面項目内容クリア
                                var html = '<option value="">' + f.find('#spec_nothing').val()  + '</option>';
                                sel.append(html);
                                f.find('#cpu_cores').val("");
                                f.find(':text').attr("disabled","disabled");
                                f.find('#memory_size').val("");
                                f.find('#quota_weight').val("");
                                $('#arch').html("<BR>");
                                $('#hypervisor').html("<BR>");
                  bt_edit_and_delete_resource_is.disabledButton(1,true);
                  bt_edit_and_delete_resource_is.disabledButton(2,true);
                             }
                    }
            });
        });
        // インスタンススペック選択時、表示内容を更新
        $('#specid').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var specid = $('#specid').val();
                if (specid != '') {
                        // キャッシュ情報を取り出し
            var instance_spec = $.data(acc,'specs');
                        for (var i = 0;i < instance_spec.total;i++)
                        {
                var rec = instance_spec.results[i].result;
                            if (specid == rec.uuid) {
                                // 選択されたインスタンススペックなら情報を更新
                                f.find('#cpu_cores').val(rec.cpu_cores);
                                f.find(':text').removeAttr("disabled");
                                f.find('#memory_size').val(rec.memory_size);
                                f.find('#quota_weight').val(rec.quota_weight);
                                $('#arch').html(f.find('#' + rec.arch).val());
                                $('#hypervisor').html(f.find('#' + rec.hypervisor).val());
                  bt_edit_and_delete_resource_is.disabledButton(1,false);
                  bt_edit_and_delete_resource_is.disabledButton(2,false);
                            }
                        }
                }      
        });
        
        $('#selaccount_account').change();
    }
  });

  // メイン画面上のボタン初期化
  $(bt_create_resource_is.target).button({ disabled: false });
  $(bt_additional_drives_and_IFs.target).button({ disabled: false });
  $(bt_edit_and_delete_resource_is.target).button({ disabled: false });

  // ボタン押下時にダイアログを表示
  bt_edit_and_delete_resource_is.target.bind('click', function() {
    bt_edit_and_delete_resource_is.open();
  });

  // ---------------------------------マシンイメージ作成ダイアログ------------------------------------
  // ダイアログ内の閉じるボタン押下
  var create_resource_wmi_buttons = {};
  create_resource_wmi_buttons[close_button_name] = function() {
    $(this).dialog("destroy");
        $(this).remove(); 
  }

  // ダイアログ内の作成ボタン押下
  create_resource_wmi_buttons[create_button_name] = function() { 
    // フォーム全部をバリデーション
    var f = $('#fm');
    var valid = f.validate().form();
    if(valid) {
        // 値を取り込んで、リクエスト送信 
        var account_id = $(this).find('#selaccount_account').val();
        var arch = $(this).find('#arch').val();
        var description = $(this).find('#description').val();
        var imageid = $(this).find('#imageid').val();
        var image_location = $(this).find('#image_location').val();
        var md5sum = $(this).find('#md5sum').val();
        var data ='account_id=' + account_id 
          +'&arch=' + arch
                  //+'&is_public=' + is_public
                  +'&imageid=' + imageid
                  +'&description=' + description
                  +'&md5sum=' + md5sum
                  +'&image_location=' + image_location;
        var request = new DcmgrGUI.Request;
        // 送信中はマスキング
        $("#create_image_dialog").mask($.i18n.prop('waiting_communicate'));
        request.post({
            "url": '/dialog/create_wmi_exec',
            "data": data,
            success: function(json,status) {
                    // メッセージボックスにて結果表示
                    if (json.result.exitcode == 0) {
                        Sexy.messageBox('info',$.i18n.prop(json.result.message));
            (create_resource_wmi_buttons[close_button_name])();
                        bt_create_resource_wmi.content.dialog("destroy");
                        bt_create_resource_wmi.content.remove();
                    } else {
                        Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                                 "<p>exit code =" + json.result.exitcode  + "</p>" +
                                 "<p>" + json.result.detail + "</p>");
                    }
            },
                complete: function(xhr,status) {
                        $("#create_image_dialog").unmask();
                }
       });
    }
  }
  
  // マシンイメージ作成ダイアログ定義
  var bt_create_resource_wmi = new DcmgrGUI.Dialog({
    target:'.create_machine_image',
    width:583,
    height:520,
    title:$.i18n.prop('create_resource_wmi_header'),
    path:'/create_wmi',
    callback: function(){
        // バリデーション定義
    var f = $('#fm');
    f.validate({
            errorClass : 'valid-error',
            rules: {
            'imageid' : {    
                required : true,
                            AN : true,
                                maxlength : 8
            },
            'description' : {    
                          maxlength : 255
            },
            'image_location' : {    
                required : true,
                            relativePATH : true,
                          maxlength : 255
            },
                        'md5sum' : {
                                required : true
                        }
            },
            messages: {
            'imageid' : {
                required: $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_imageid')]),
                            AN: $.i18n.prop('validate_errmsg_AN'),
                maxlength: $.validator.format($.i18n.prop('validate_errmsg_maxlength'))
            },
            'description' : {
                maxlength: '<BR>' + $.i18n.prop('validate_errmsg_maxlength')
            },
            'image_location' : {
                required: '<BR>' + $.i18n.prop('validate_errmsg_required',[$.i18n.prop('item_image_location')]),
                            relativePATH: '<BR>' + $.i18n.prop('validate_errmsg_PATH'),
                maxlength: '<BR>' + $.i18n.prop('validate_errmsg_maxlength')
            },
                        'md5sum' : {
                                required: '<BR>' + $.i18n.prop('validate_errmsg_needs_md5get')
                        }
            },
            onkeyup: false,
                onsubmit: false
       });
        // md5値取得処理
        f.find('#md5get').click(function() {
            // 取得対象イメージのパス名のバリデーション
            var f = $('#fm');
             var valid = f.validate().element('#image_location');
            if (valid)
            {
                // イメージパス名を取り込んでリクエスト送信
                var image_location = f.find('#image_location').val();
                var request = new DcmgrGUI.Request;
                var data = 'image_location=' + image_location;
                // 送信中はマスキング
                $("#create_image_dialog").mask($.i18n.prop('loading_parts'));
            request.post({
                "url": '/dialog/get_md5sum',
                "data": data,
                success: function(json,status) {
                        // 成功時は値を取り込み
                     if (json.result.exitcode == 0) {
                            $('#md5sum').val(json.result.detail)
                 } else {
                        Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                                    "<p>exit code =" + json.result.exitcode  + "</p>" +
                                    "<p>" + json.result.detail + "</p>");
                 }
                    },
                    complete: function(xhr,status) {
                        $("#create_image_dialog").unmask();
                    }
                }); 
            }
            return false;
        });
        // イメージのパス変更時はmd5値をクリア
        f.find('#image_location').change(function() {
            var f = $('#fm');
        $('#md5sum').val("")
        });
        
    },
    button: create_resource_wmi_buttons
  });
  
  // メイン画面で作成ボタン押下時、ダイアログ表示
  bt_create_resource_wmi.target.bind('click', function(){
    bt_create_resource_wmi.open();
  });
  

  // ---------------------------------マシンイメージ削除ダイアログ------------------------------------
  // ダイアログ内のキャンセルボタン押下
  var delete_resource_wmi_buttons = {};
  delete_resource_wmi_buttons[close_button_name] = function() { 
      $(this).dialog("destroy");
        $(this).remove(); 
  };

  // ダイアログ内の削除ボタン押下
  delete_resource_wmi_buttons[delete_button_name] = function() {
   // 値を取り込んでリクエスト送信 
    var imageid = $(this).find('#imageid').val();
    var request = new DcmgrGUI.Request;
    // 送信中はマスキング
    $("#delete_image_dialog").mask($.i18n.prop('waiting_communicate'));
    request.post({
      "url": '/dialog/delete_wmi_exec/' + imageid,
      success: function(json, status){
         // メッセージボックス表示にて結果表示
         if (json.result.exitcode == 0) {
            Sexy.messageBox('info',$.i18n.prop(json.result.message));
            bt_delete_resource_wmi.content.dialog("destroy");
            bt_delete_resource_wmi.content.remove();
         } else {
            Sexy.messageBox('error',"<p>" + $.i18n.prop(json.result.message) + "</p>" +
                            "<p>exit code =" + json.result.exitcode  + "</p>" +
                            "<p>" + json.result.detail + "</p>");
         }
      },
      complete: function(xhr,status) {
         $("#delete_image_dialog").unmask();
      }
   });
  }

  // マシンイメージ削除ダイアログ定義
  var bt_delete_resource_wmi = new DcmgrGUI.Dialog({
    target: '.delete_machine_image',
    width: 600,
    height: 300,
    title: $.i18n.prop('delete_resource_wmi_header'),
    path: '/delete_wmi',
    button: delete_resource_wmi_buttons,
    callback: function(){
        // アカウント選択時、全マシンイメージ情報をajaxで取得      
        $('#selaccount_account').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var account_id = $('#selaccount_account').val();
            var request = new DcmgrGUI.Request;
                var data = 'account_id=' + account_id;
            request.post({
                "url": '/dialog/get_wmi_list',
                "data": data,
                success: function(json,status) {
                             // 一覧情報をセーブ、マシンイメージIDの一覧セレクトを作成
                 var sel = $('#imageid');
                             $.data(acc,'machine_images',json.image);
                             sel.children().remove();
                             if (json.image.total > 0) {
                                for(var i = 0;i < json.image.total;i++)
                                {
                                    var rec = json.image.results[i].result;
                                    var html = '<option value="' + rec.uuid + '">' + rec.id + '</option>';
                                    sel.append(html);  
                                }
                                // マシンイメージ選択イベント処理を呼出
                                $('#imageid').change();
                             } 
                             else
                             {
                                // マシンイメージがない場合、選択不可にして、画面項目内容クリア
                                var html = '<option value="">' + f.find('#storagenode_nothing').val()  + '</option>';
                                sel.append(html);
                                $('#arch').html("<BR>");
                                $('#image_location').html("<BR>");
                                $('#description').html("<BR>");
                  bt_delete_resource_wmi.disabledButton(1,true);
                             }
                    }
            });
        });
        // マシンイメージ選択時、ダイアログ内の項目表示内容を更新
        $('#imageid').bind('change',function() {
                var f = $('#fm');
                var acc = $('#selaccount_account').get(0);
        var imageid = $('#imageid').val();
                if (imageid != '') {
                        // 一覧情報をキャッシュより取り出し
            var image = $.data(acc,'machine_images');
                        for (var i = 0;i < image.total;i++)
                        {
                var rec = image.results[i].result;
                            // 選択されたマシンイメージの場合、画面内の各項目に値をセット
                            if (imageid == rec.uuid) {
                                $('#arch').html(rec.arch);
                                $('#image_location').html(rec.source);
                                $('#description').html(rec.description);
                  bt_delete_resource_wmi.disabledButton(1,false);
                            }
                        }
                }      
        });
        
        // 初期表示内容で、アカウント選択イベント処理を呼出
        $('#selaccount_account').change();
    }
  });

  // メイン画面のボタン活性化
  $(bt_create_resource_wmi.target).button({ disabled: false });
  $(bt_delete_resource_wmi.target).button({ disabled: false });

  // メイン画面で削除ボタン押下時、ダイアログ表示
  bt_delete_resource_wmi.target.bind('click', function() {
    bt_delete_resource_wmi.open();
  });

}