// 通用js方法文件

/**
 * 打开一个新的窗口,post请求，
 * @param id id 唯一值，body中创建请求表单的id
 * @param sid sessionId
 * @param cmd 请求cmd
 * @param params 参数列表{param1 : value1,param2 : value2}
 * @param target 不给定则默认_blank新窗口
 */
const newPageWin = function (id, sid, cmd, params, target) {
  if (!params) {
    params = {};
  }
  params.cmd = cmd;
  params.sid = sid;
  newWin(id, './w', params, target);
}

/**
 * 打开一个新的窗口,post请求
 * @param id 唯一值，body中创建请求表单的id
 * @param url 例如 ./w，./jd
 * @param params 这个{param1 : value1,param2 : value2}
 * @param target 打开窗口方式 _blank，_self
 */
const newWin = function (id, url, params, target) {
  // 防止反复添加
  var dom = document.getElementById(id);
  if(dom) {
    document.body.removeChild(dom);
  }
  var temp_form = document.createElement("form");
  temp_form.action = url;
  temp_form.target = target == undefined ? "_blank" : target;
  temp_form.method = "get";
  temp_form.style.display = "none";
  for (var x in params) {
    var opt = document.createElement("textarea");
    opt.name = x;
    opt.value = params[x];
    temp_form.appendChild(opt);
  }
  temp_form.setAttribute('id', id);
  document.body.appendChild(temp_form);
  temp_form.submit();
}

// 打开流程模型文件
const openDesigner = function(teamId, id, sid) {
  newPageWin('palDesigner', sid, 'com.actionsoft.apps.coe.pal_pl_repository_designer', {uuid: id, teamId: teamId});
}

// 退出pal
const logout = function(sid) {
  window.location.replace("./w?sid=" + sid + "&cmd=com.actionsoft.apps.coe.pal_user_logout");
}

// 类jquery方法
const closest = function(node, targetNodeName) {// 类似jquery closest函数，获得匹配选择器的第一个祖先元素，从当前元素开始沿 DOM 树向上
  let curr = node;
  while (curr.nodeName != targetNodeName && curr.nodeName != 'BODY') {
    curr = curr.parentNode;
  }
  if (curr.nodeName == targetNodeName) {
    return curr;
  } else {
    return null;
  }
}

/**
 * 修改PAL网页标题
 * @param newTitle
 */
const updateHtmlTitle = function(newTitle) {
  document.getElementsByTagName("title")[0].innerText = newTitle;
}

export {newWin, newPageWin, openDesigner, logout, closest, updateHtmlTitle}



