var swf_id = 'external_select_map_swf';
var dialog_open = false;
var query_input_id = 'query';
function initialize() {
  $(query_input_id).focus();
}
function set_input_clear() {
  $(query_input_id).value = '';
}
function set_input_keyword(el) {
  el.focus();
  var keyword = el.value;
  update_input_keyword(keyword, el.checked);
//  set_cursor_end($(query_input_id));
//  $(query_input_id).focus();
}
function update_input_keyword(keyword, flg) {
  if (flg) {
    $(query_input_id).value += ' '+keyword;
  } else {
    var val = $(query_input_id).value;
    $(query_input_id).value = val.replace(new RegExp('[\\s\\u3000]?'+keyword+'([\\s\\u3000]|$)', 'ig'), '$1');
  }
}

/*
function set_cursor_end(el) {
  if( el.createTextRange )
  {
    // IE
    var range = el.createTextRange();
    range.moveStart("character", el.value.length);
    range.moveEnd("character", el.value.length);
    range.select();
  }
  else if( el.setSelectionRange )
  {
    // FireFox/Mozilla
    el.setSelectionRange(el.value.length, el.value.length);
  }
}
*/
var dialogs = {
  gender: {
    title: '性別の選択',
    body_id: 'gender_select_content',
    width: 300,
    height: 160,
    body_element: null,
    dlg: null
  },
  tokui_gyomu: {
    title: '取扱業務の選択',
    body_id: 'tokui_gyomu_select_content',
    width: 540,
    height: 350,
    body_element: null,
    dlg: null
  },
  area: {
    title: '住所の選択',
    body_id: 'area_select_content',
    width: 640,
    height: 640,
    body_element: null,
    dlg: null
  },
  _dummy: null
};
$j(function() {
     for (var type in dialogs) {
       if (dialogs[type]) {
         $j('#'+dialogs[type].body_id).append(
           '<div class="dialog-buttons">'
             + '<input type="button" value="閉じる" onclick="$j.fn.colorbox.close();" class="ok">&nbsp;'
             + '</div>'
         );
       }
     }
   });
/*
function do_swf_update_checkboxes() {
  console.log(dialogs.area.timer);
  var fl = window.all ? window[swf_id] : document[swf_id];
  if (fl) console.log(fl);
  if (fl.update_checkboxes_from_input) console.log(fl.update_checkboxes_from_input);
  //alert(t);
  //alert(t.);
  if (fl && fl.udpate_checkboxes_from_input) {
    console.log('ok!');
    clearTimeout(dialogs.area.timer);
    fl.udpate_checkboxes_from_input();
  } else {
    //dialogs.area.timer = setTimeout(arguments.callee, 500);
  }
}
*/
var dlg_gender = null;
function openGenderDialog(mode) {
  if (mode in dialogs) {
    var dlg_setting = dialogs[mode];
    dlg_setting.body_element = $(dlg_setting.body_id);
    $j.fn.colorbox({
                     inline: true,
                     transition: 'none',
                     speed: 0,
                     href: '#'+dlg_setting.body_id,
                     title: dlg_setting.title,
                     width: dlg_setting.width,
                     height: dlg_setting.height,
                     onOpen: function(){
                       update_dialog_checkbox(mode);
                     },
                     open:true});
    if (mode == 'area') {
      dialog_open = true; // for area flash
    }

/*
    var dlg = dlg_setting.dlg;
    if (!dlg) {
      dlg = dlg_setting.dlg = new DP.Dialog({drag: {endeffect: Prototype.emptyFunction}, width: dlg_setting.width, height: dlg_setting.height, hide_without_remove: true});
      dlg.setHead(dlg_setting.title);
      var body_el = $(dlg_setting.body_id);
      dlg_setting.body_element = body_el;
      dlg.setBody([body_el,
                   '<div class="dialog-buttons">'
                   + '<input type="button" value="閉じる" onclick="DP.Dialog.findAndExec(this, \'hide\', false, true);" class="ok">&nbsp;'
                   // + '<input type="button" value="キャンセル" onclick="dlg_gender.hide();" class="cancel">'
                   + '</div>']);
      //body_el.show();
      body_el.setStyle({display: 'block'});
    }
    update_dialog_checkbox(mode);
    if (mode == 'area') {
      dialog_open = true; // for area flash
    }
    dlg.show();
    if (dlg_setting.postfunc) {
      //document.title+='/postfunc!';
      dlg_setting.postfunc.delay(0.1);
    }
*/
  }
}
function update_dialog_checkbox(mode) {
  if (mode in dialogs) {
    var dlg_setting = dialogs[mode];
    if (dlg_setting.body_element) {
      var checkboxies = dlg_setting.checkboxes_cache;
      if (!checkboxies) {
        checkboxies = dlg_setting.checkboxes_cache = dlg_setting.body_element.select('input[@type="checkbox"]');
      }
      var q_input = $(query_input_id);
      for (var i=0, l=checkboxies.length; i<l; i++) {
        var c = checkboxies[i];
        c.checked = !!(new RegExp('(?:[\\s\\u3000]|^)'+c.value+'([\\s\\u3000]|$)')).test(q_input.value);
      }
    }
/*
    var keyword = el.value;
  if (el.checked) {
    $(query_input_id).value += ' '+keyword;
  } else {
    var val = $(query_input_id).value;
    $(query_input_id).value = val.replace(new RegExp('\\s?'+keyword+'(\\s|$)', 'ig'), '$1');
  }
*/
  }
}
function as_check_areas(areas) {
  //document.title += '/call!';
  var q_input = $(query_input_id);
  for (var i in areas) {
    if (!(new RegExp('(?:[\\s\\u3000]|^)'+areas[i]+'([\\s\\u3000]|$)')).test(q_input.value)) {
      areas[i] = null;
    }
  }
  return areas;
}
function as_is_dialog_open() {
//  document.title += '/call!'+dialog_open;
  if (dialog_open) {
    dialog_open = false;
    return true;
  } else {
    return false;
  }
}

Event.observe(document, 'dom:loaded', initialize);
function testfunc() {
//  var swf_id = 'external_select_map_swf';
//  var swf_id2 = 'external_select_map_swf_in';
  var t = window.all ? window[swf_id] : document[swf_id];
  alert(t);
  alert(t.update_checkboxes_from_input);
  t.update_checkboxes_from_input();
}

