import { message } from 'ant-design-vue'

let CreatedOKLodop7766 = null

function loadScriptAsync (src) {
  return new Promise((resolve, reject) => {
    const script = document.createElement('script')
    script.src = src
    script.async = true
    script.onload = resolve
    script.onerror = reject
    document.head.appendChild(script)
  })
}

// ====判断是否需要安装CLodop云打印服务器:====
function needCLodop () {
  // return false;
  try {
    // 看是什么浏览器
    const ua = navigator.userAgent
    // windows，安装
    if (ua.match(/Windows\sPhone/i) != null) return true
    // iPhone, 安装
    if (ua.match(/iPhone|iPod/i) != null) return true
    // Android, 安装
    if (ua.match(/Android/i) != null) return true
    // Edge，安装
    if (ua.match(/Edge\D?\d+/i) != null) return true
    // QQ，不安装
    if (ua.match(/QQBrowser/i) != null) return false

    const verTrident = ua.match(/Trident\D?\d+/i)
    const verIE = ua.match(/MSIE\D?\d+/i)
    let verOPR = ua.match(/OPR\D?\d+/i)
    let verFF = ua.match(/Firefox\D?\d+/i)
    const x64 = ua.match(/x64/i)
    if ((verTrident == null) && (verIE == null) && (x64 !== null)) {
      return true
    } else if (verFF !== null) {
      verFF = verFF[0].match(/\d+/)
      if (verFF[0] >= 42) return true
    } else if (verOPR !== null) {
      verOPR = verOPR[0].match(/\d+/)
      if (verOPR[0] >= 32) return true
    } else if ((verTrident == null) && (verIE == null)) {
      let verChrome = ua.match(/Chrome\D?\d+/i)
      if (verChrome !== null) {
        verChrome = verChrome[0].match(/\d+/)
        if (verChrome[0] >= 42) return true
      }
    }
    return false
  } catch (err) {
    return true
  }
}

// ====页面引用CLodop云打印必须的JS文件：====
if (needCLodop() && !window.__MICRO_APP_ENVIRONMENT__) {
  loadScriptAsync('http://localhost:18000/CLodopfuncs.js?priority=1').then(r => {})
}

// ====获取LODOP对象的主过程：====
function getLodop (oOBJECT, oEMBED) {
  // 显示提示用的内容
  // const strHtmInstall = "<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='http://113.10.155.131/install_lodop32.zip' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>"
  // const strHtmUpdate = "<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='http://113.10.155.131/install_lodop32.zip' target='_self'>执行升级</a>,升级后请重新进入。</font>"
  // const strHtm64_Install = "<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='http://113.10.155.131/install_lodop64.zip' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>"
  // const strHtm64_Update = "<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='http://113.10.155.131/install_lodop64.zip' target='_self'>执行升级</a>,升级后请重新进入。</font>"
  // const strHtmFireFox = "<br><br><font color='#FF00FF'>（注意：如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它）</font>"
  // const strHtmChrome = "<br><br><font color='#FF00FF'>(如果此前正常，仅因浏览器升级或重安装而出问题，需重新执行以上安装）</font>"
  // const strCLodopInstall = "<br><font color='#FF00FF'>CLodop云打印服务(localhost本地)未安装启动!点击这里<a href='CLodopPrint_Setup_for_Win32NT.zip' target='_self'>执行安装</a>,安装后请刷新页面。</font>"
  // const strCLodopUpdate = "<br><font color='#FF00FF'>CLodop云打印服务需升级!点击这里<a href='CLodopPrint_Setup_for_Win32NT.zip' target='_self'>执行升级</a>,升级后请刷新页面。</font>"

  let LODOP
  try {
    const isIE = (navigator.userAgent.indexOf('MSIE') >= 0) || (navigator.userAgent.indexOf('Trident') >= 0)
    if (needCLodop()) {
      try {
        // 调用脚本中的获取打印对象
        // eslint-disable-next-line no-undef
        LODOP = getCLodop()
      } catch (err) {
      }
      // 如果没找到打印控件
      if (!LODOP && document.readyState !== 'complete') {
        message.warning('C-Lodop没准备好，请稍后再试！')
        return
      }
      if (!LODOP) {
        message.warning('CLodop云打印服务(localhost本地)未安装启动!请开启后补打!')
        return
      } else { // 找到后的处理
        // eslint-disable-next-line no-undef
        if (CLODOP.CVERSION < '2.0.6.2') {
          message.warning('CLodop云打印运行异常!')
        }
        if (oEMBED && oEMBED.parentNode) oEMBED.parentNode.removeChild(oEMBED)
        if (oOBJECT && oOBJECT.parentNode) oOBJECT.parentNode.removeChild(oOBJECT)
      }
    } else {
      // =====如果页面有Lodop就直接使用，没有则新建:==========
      if (oOBJECT !== undefined || oEMBED !== undefined) {
        if (isIE) LODOP = oOBJECT
        else LODOP = oEMBED
      } else if (CreatedOKLodop7766 == null) {
        LODOP = document.createElement('object')
        LODOP.setAttribute('width', 0)
        LODOP.setAttribute('height', 0)
        LODOP.setAttribute('style', 'position:absolute;left:0px;top:-100px;width:0px;height:0px;')
        if (isIE) LODOP.setAttribute('classid', 'clsid:2105C259-1E0C-4534-8141-A753534CB4CA')
        else LODOP.setAttribute('type', 'application/x-print-lodop')
        document.documentElement.appendChild(LODOP)
        CreatedOKLodop7766 = LODOP
      } else LODOP = CreatedOKLodop7766
      // =====Lodop插件未安装时提示下载地址:==========
      if ((LODOP == null) || (typeof (LODOP.VERSION) === 'undefined')) {
        message.warning('CLodop云打印运行异常!')
        return LODOP
      }
    }

    // 检查版本
    if (LODOP.VERSION < '6.2.0.3') {
      message.warning('CLodop云打印运行异常!')
      return LODOP
    }
    // ===如下空白位置适合调用统一功能(如注册语句、语言选择等):===
    LODOP.SET_LICENSES('西安奥枫软件有限公司', '552C41D5AB0D146FCF77D05CD8AA15A1', '', '')
    return LODOP
  } catch (err) {
    alert('getLodop出错:' + err)
  }
}

export default getLodop
