/**
 * Created with JetBrains PhpStorm.
 * User: xuheng
 * Date: 12-9-26
 * Time: 下午12:29
 * To change this template use File | Settings | File Templates.
 */

//清空上次查选的痕迹
editor.firstForSR = 0;
editor.currentRangeForSR = null;
//给tab注册切换事件
/**
 * tab点击处理事件
 * @param tabHeads
 * @param tabBodys
 * @param obj
 */
function clickHandler(tabHeads, tabBodys, obj) {
  //head样式更改
  for (var k = 0, len = tabHeads.length; k < len; k++) {
    tabHeads[k].className = '';
  }
  obj.className = 'focus';
  //body显隐
  var tabSrc = obj.getAttribute('tabSrc');
  for (var j = 0, length = tabBodys.length; j < length; j++) {
    var body = tabBodys[j],
      id = body.getAttribute('id');
    if (id != tabSrc) {
      body.style.zIndex = 1;
    } else {
      body.style.zIndex = 200;
    }
  }
}

/**
 * TAB切换
 * @param tabParentId  tab的父节点ID或者对象本身
 */
function switchTab(tabParentId) {
  var tabElements = $G(tabParentId).children,
    tabHeads = tabElements[0].children,
    tabBodys = tabElements[1].children;

  for (var i = 0, length = tabHeads.length; i < length; i++) {
    var head = tabHeads[i];
    if (head.className === 'focus') clickHandler(tabHeads, tabBodys, head);
    head.onclick = function () {
      clickHandler(tabHeads, tabBodys, this);
    };
  }
}
$G('searchtab').onmousedown = function () {
  $G('search-msg').innerHTML = '';
  $G('replace-msg').innerHTML = '';
};
//是否区分大小写
function getMatchCase(id) {
  return $G(id).checked ? true : false;
}
//查找
$G('nextFindBtn').onclick = function (txt, dir, mcase) {
  var findtxt = $G('findtxt').value,
    obj;
  if (!findtxt) {
    return false;
  }
  obj = {
    searchStr: findtxt,
    dir: 1,
    casesensitive: getMatchCase('matchCase'),
  };
  if (!frCommond(obj)) {
    var bk = editor.selection.getRange().createBookmark();
    $G('search-msg').innerHTML = lang.getEnd;
    editor.selection.getRange().moveToBookmark(bk).select();
  }
};
$G('nextReplaceBtn').onclick = function (txt, dir, mcase) {
  var findtxt = $G('findtxt1').value,
    obj;
  if (!findtxt) {
    return false;
  }
  obj = {
    searchStr: findtxt,
    dir: 1,
    casesensitive: getMatchCase('matchCase1'),
  };
  frCommond(obj);
};
$G('preFindBtn').onclick = function (txt, dir, mcase) {
  var findtxt = $G('findtxt').value,
    obj;
  if (!findtxt) {
    return false;
  }
  obj = {
    searchStr: findtxt,
    dir: -1,
    casesensitive: getMatchCase('matchCase'),
  };
  if (!frCommond(obj)) {
    $G('search-msg').innerHTML = lang.getStart;
  }
};
$G('preReplaceBtn').onclick = function (txt, dir, mcase) {
  var findtxt = $G('findtxt1').value,
    obj;
  if (!findtxt) {
    return false;
  }
  obj = {
    searchStr: findtxt,
    dir: -1,
    casesensitive: getMatchCase('matchCase1'),
  };
  frCommond(obj);
};
//替换
$G('repalceBtn').onclick = function () {
  var findtxt = $G('findtxt1').value.replace(/^\s|\s$/g, ''),
    obj,
    replacetxt = $G('replacetxt').value.replace(/^\s|\s$/g, '');
  if (!findtxt) {
    return false;
  }
  if (
    findtxt == replacetxt ||
    (!getMatchCase('matchCase1') && findtxt.toLowerCase() == replacetxt.toLowerCase())
  ) {
    return false;
  }
  obj = {
    searchStr: findtxt,
    dir: 1,
    casesensitive: getMatchCase('matchCase1'),
    replaceStr: replacetxt,
  };
  frCommond(obj);
};
//全部替换
$G('repalceAllBtn').onclick = function () {
  var findtxt = $G('findtxt1').value.replace(/^\s|\s$/g, ''),
    obj,
    replacetxt = $G('replacetxt').value.replace(/^\s|\s$/g, '');
  if (!findtxt) {
    return false;
  }
  if (
    findtxt == replacetxt ||
    (!getMatchCase('matchCase1') && findtxt.toLowerCase() == replacetxt.toLowerCase())
  ) {
    return false;
  }
  obj = {
    searchStr: findtxt,
    casesensitive: getMatchCase('matchCase1'),
    replaceStr: replacetxt,
    all: true,
  };
  var num = frCommond(obj);
  if (num) {
    $G('replace-msg').innerHTML = lang.countMsg.replace('{#count}', num);
  }
};
//执行
var frCommond = function (obj) {
  return editor.execCommand('searchreplace', obj);
};
switchTab('searchtab');