超星学习通网课脚本小程序-自动搜索考试答案,自动切题,自动答题[最强答题][支持图片题]

自动搜索考试答案,自动切题,自动答题[最强答题][支持图片题]

// ==UserScript==
// @name         超星学习通网课脚本小程序-自动搜索考试答案,自动切题,自动答题[最强答题][支持图片题]
// @namespace    ideys
// @version      1.3.9
// @description  自动搜索考试答案,自动切题,自动答题[最强答题][支持图片题]
// @author       免费王子
// @match        *://*.edu.cn/*
// @match        *://*.chaoxing.com/*
// @match        *://*.chaoxing.com/exam/test/reVersionTestStartNew*
// @match        *://*.edu.cn/exam/test/reVersionTestStartNew*
// @match        *://*.jd.hk/*
// @match        *://*.nbdlib.cn/exam/test/reVersionTestStartNew*
// @match        *://*.jd.com/*
// @match        *://*.hnsyu.net/exam/test/reVersionTestStartNew*
// @match        *://*.taobao.com/*
// @match        *://*.taobao.hk/*
// @match        *://*.tmall.com/*
// @match        *://*.tmall.hk/*
// @match             *://chaoshi.detail.tmall.com/*
// @match             *://*.liangxinyao.com/*
// @match             *://*.yiyaojd.com/*
// @exclude       *://login.taobao.com/*
// @exclude       *://pages.tmall.com/*
// @exclude       *://uland.taobao.com/*
// @connect      cx.icodef.com
// @run-at       document-end
// @grant        unsafeWindow
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_setValue
// @grant        GM_getValue
// @license      MIT
// @connect     idey.cn
// @require      https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @require      https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js
// @require      https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js
// @original-script https://greasyfork.org/zh-CN/scripts/426129
// @original-author coahr
// @original-license MIT
// @antifeature referral-link 隐藏优惠劵查询
// ==/UserScript==
(function() {
 var _self = unsafeWindow;
var $ = $ || window.$;
	//$ = _self.jQuery,

	UE = _self.UE,
    host = window.location.host;
	var index_num = 0;
	var item = [];
	var urls = [];
	var selectorList = [];
	var obj = {};
	obj.onclicks = function(link) {
		if (document.getElementById('redirect_form')) {
			var form = document.getElementById('redirect_form');
			form.action = 'https://jd.idey.cn/red.html?url=' + encodeURIComponent(link);
		} else {
			var form = document.createElement('form');
			form.action = 'https://jd.idey.cn/red.html?url=' + encodeURIComponent(link);
			form.target = '_blank';

			form.method = 'POST';
			form.setAttribute("id", 'redirect_form');
			document.body.appendChild(form);

		}
		form.submit();
		form.action = "";
		form.parentNode.removeChild(form);
	};
	obj.GetQueryString = function(name) {
		var reg = eval("/" + name + "/g");
		var r = window.location.search.substr(1);
		var flag = reg.test(r);
		if (flag) {
			return true;
		} else {
			return false;
		}
	};

	obj.get_url = function() {
		item[index_num] = [];
		urls[index_num] = [];
		$("#J_goodsList li").each(function(index) {
			if ($(this).attr('data-type') != 'yes') {
				var skuid = $(this).attr('data-sku');
				var itemurl = '//item.jd.com/' + skuid + '.html';
				if (skuid != undefined) {
					if (urls[index_num].length < 4) {
						item[index_num].push($(this));
						urls[index_num].push(itemurl);
						$(this).attr('data-type', 'yes');
					}


				}
			}

		})

		$("#plist li").each(function(index) {
			if ($(this).attr('data-type') != 'yes') {
				var skuid = $(this).find('.j-sku-item').attr('data-sku');
				var itemurl = '//item.jd.com/' + skuid + '.html';
				if (skuid != undefined) {
					if (urls[index_num].length < 4) {
						item[index_num].push($(this));
						urls[index_num].push(itemurl);
						$(this).attr('data-type', 'yes');
					}


				}
			}

		})

		$(".m-aside .aside-bar li").each(function(index) {
			if ($(this).attr('data-type') != 'yes') {
				var itemurl = $(this).find("a").attr('href');
				if (itemurl != '') {
					if (itemurl.indexOf("//ccc-x.jd.com") != -1) {
						var sku_c = $(this).attr('sku_c');
						if (sku_c == undefined) {
							var arr = [];
							var str = $(this).attr('onclick');
							arr = str.split(",");
							sku_c = trim(arr[6].replace(/\"/g, ""));
							itemurl = '//item.jd.com/' + sku_c + '.html';
						}

					}
					if (urls[index_num].length < 4) {
						item[index_num].push($(this));
						urls[index_num].push(itemurl);
						$(this).attr('data-type', 'yes');
					}



				}
			}

		})
		$(".goods-chosen-list li").each(function(index) {
			if ($(this).attr('data-type') != 'yes') {
				var itemurl = $(this).find("a").attr('href');
				if (itemurl != '') {
					if (itemurl.indexOf("//ccc-x.jd.com") != -1) {
						var arr = [];
						var str = $(this).attr('onclick');
						arr = str.split(",");
						var sku_c = trim(arr[6].replace(/\"/g, ""));
						itemurl = '//item.jd.com/' + sku_c + '.html';

					}
					if (urls[index_num].length < 4) {
						item[index_num].push($(this));
						urls[index_num].push(itemurl);
						$(this).attr('data-type', 'yes');
					}

				}




			}

		})

		$(".may-like-list li").each(function(index) {
			if ($(this).attr('data-type') != 'yes') {
				var itemurl = $(this).find("a").attr('href');
				if (itemurl != '') {
					if (itemurl.indexOf("//ccc-x.jd.com") != -1) {
						var arr = [];
						var str = $(this).attr('onclick');
						arr = str.split(",");
						var sku_c = trim(arr[6].replace(/\"/g, ""));
						itemurl = '//item.jd.com/' + sku_c + '.html';
					}
					if (urls[index_num].length < 4) {
						item[index_num].push($(this));
						urls[index_num].push(itemurl);
						$(this).attr('data-type', 'yes');
					}


				}
			}

		})



		if (urls.length > 0 && urls[index_num].length > 0 && item[index_num].length > 0) {


			var u = urls[index_num].join(',');
			$.getJSON('https://shop.idey.cn/jd.php', {
			act:'itemlink',
				itemurl: u,
				num: index_num
			}, function(res) {
				if (res.type == 'success') {
					for (var i = 0; i < res.data.length; i++) {
						item[res.num][i].find("a").attr('data-ref', res.data[i].longUrl);
						item[res.num][i].find("a").attr('target', '');
						item[res.num][i].find("a").unbind("click");
						item[res.num][i].find("a").bind("click", function(e) {
							if ($(this).attr('data-ref')) {
								e.preventDefault();
								obj.onclicks($(this).attr('data-ref'));

							}
						})

					}

				}
			})


		}
		index_num += 1;

	};
	obj.get_miaosha = function() {
		item[index_num] = [];
		urls[index_num] = [];
		$(".seckill_mod_goodslist li").each(function(index) {

			if ($(this).attr('data-type') != 'yes') {

				var itemurl = $(this).find("a").attr('href');
				var skuid = $(this).attr('data-sku');
				var that = $(this);
				if (itemurl != '') {
					if (urls[index_num].length < 4) {

						item[index_num].push($(this));
						urls[index_num].push(itemurl);
						$(this).attr('data-type', 'yes');
					}


				}
			}

		})



		if (urls.length > 0 && urls[index_num].length > 0 && item[index_num].length > 0) {


			var u = urls[index_num].join(',');
			$.getJSON('https://shop.idey.cn/jd.php', {
			act:'itemlink',
				itemurl: u,
				num: index_num
			}, function(res) {
				if (res.type == 'success') {
					for (var i = 0; i < res.data.length; i++) {
						item[res.num][i].find("a").attr('data-ref', res.data[i].longUrl);
						item[res.num][i].find("a").attr('href', "javascript:void(0);");
						item[res.num][i].find("a").attr('target', '');
						//	item[res.num][i].find("a").unbind("click");

						item[res.num][i].find("a").click(function(e) {
							e.preventDefault();
							obj.onclicks($(this).attr('data-ref'));
						})

					}

				}
			})


		}
		index_num += 1;
	};
	const style = `
			.gwd_taobao .gwd-minibar-bg, .gwd_tmall .gwd-minibar-bg {
			    display: block;
			}

			.idey-minibar_bg{
			    position: relative;
			    min-height: 40px;
			    display: inline-block;
			}
			#idey_minibar{
			    width: 560px;
			    background-color: #fff;
			    position: relative;
			    border: 1px solid #e8e8e8;
			    display: block;
			    line-height: 36px;
			    font-family: 'Microsoft YaHei',Arial,SimSun!important;
			    height: 36px;
			    float: left;
			}
			#idey_minibar .idey_website {
			    width: 48px;
			    float: left;
			    height: 36px;
			}
			#idey_minibar .minibar-tab {
			    float: left;
			    height: 36px;
			    border-left: 1px solid #edf1f2!important;
			    padding: 0;
			    margin: 0;
			    text-align: center;
			}

			#idey_minibar .idey_website em {
			    background-position: -10px -28px;
			    height: 36px;
			    width: 25px;
			    float: left;
			    margin-left: 12px;
			}

			.setting-bg {
			    background: url(https://cdn.gwdang.com/images/extensions/xbt/new_wishlist_pg5_2.png) no-repeat;
			}

			#idey_minibar .minibar-tab {
			    float: left;
			    height: 36px;
			    border-left: 1px solid #edf1f2!important;
			    padding: 0;
			    margin: 0;
			    width: 134px;
			}
			#idey_price_history span {
			    float: left;
			    width: 100%;
			    text-align: center;
			    line-height: 36px;
			    color: #666;
			    font-size: 14px;
			}

			#mini_price_history .trend-error-info-mini {
			    position: absolute;
			    top: 37px;
			    left: 0px;
			    width: 100%;
			    background: #fff;
			    z-index: 99999999;
			    height: 268px;
			    box-shadow: 0px 5px 15px 0 rgb(23 25 27 / 15%);
			    border-radius: 0 0 4px 4px;
			    width:559px;
			    border: 1px solid #ddd;
			    border-top: none;
				display:none;

			}
			.minibar-btn-box {
			    display: inline-block;
			    margin: 0 auto;
			    float: none;
			}
			#mini_price_history .error-p {
			      width: 95px;
			      margin: 110px auto;
			      height: 20px;
			      line-height: 20px;
			      text-align: center;
			      color: #000!important;
			      border: 1px solid #333;
			      border-radius: 5px;
			      display: block;
			      text-decoration: none!important;
			    }
			 #mini_price_history:hover .trend-error-info-mini {
			      display: block;
			    }

			.collect_mailout_icon {
			    background-position: -247px -134px;
			    width: 18px;
			}

			#idey_mini_compare_detail li *, .mini-compare-icon, .minibar-btn-box * {
			    float: left;
			}
			.panel-wrap{
				width: 100%;
				height: 100%;
			}
			.collect_mailout_icon, .mini-compare-icon {
			    height: 18px;
			    margin-right: 8px;
			    margin-top: 9px;
			}
			.all-products ul li {
			    float: left;
			    width: 138px;
			    height: 262px;
			    overflow: hidden;
			    text-align: center;
			}
			.all-products ul li .small-img {
			    text-align: center;
			    display: table-cell;
			    vertical-align: middle;
			    line-height: 90px;
			    width: 100%;
			    height: 100px;
			    position: relative;
			    float: left;
			    margin-top: 23px;
			}
			.all-products ul li a img {
			    vertical-align: middle;
			    display: inline-block;
			    width: auto;
			    height: auto;
			    max-height: 100px;
			    max-width: 100px;
			    float: none;
			}
			.all-products ul li a.b2c-other-info {
			    text-align: center;
			    float: left;
			    height: 16px;
			    line-height: 16px;
			    margin-top: 13px;
			}

			.b2c-other-info .gwd-price {
			    height: 17px;
			    line-height: 17px;
			    font-size: 16px;
			    color: #E4393C;
			    font-weight: 700;
				width: 100%;
				display: block;
			}
			.b2c-other-info .b2c-tle {
			    height: 38px;
			    line-height: 19px;
			    margin-top: 8px;
			    font-size: 12px;
			    width: 138px;
			    margin-left: 29px;
			}
			 .bjgext-mini-trend span {
			      float: left;
			      /*width: 100%;*/
			      text-align: center;
			      line-height: 36px;
			      color: #666;
			      font-size: 14px;
			    }
			    .bjgext-mini-trend .trend-error-info-mini {
			      position: absolute;
			      top: 37px;
			      left: 0px;
			      width: 100%;
			      background: #fff;
			      z-index: 99999999;
			      height: 268px;
			      display: none;
			      box-shadow: 0px 5px 15px 0 rgba(23,25,27,0.15);
			      border-radius: 0 0 4px 4px;
			      width: 460px;
			      border: 1px solid #ddd;
			      border-top: none;
			    }
			    .bjgext-mini-trend .error-p {
			      width: 100%;
			      float: left;
			      text-align: center;
			      margin-top: 45px;
			      font-size: 14px;
			      color: #666;
			    }
			    .bjgext-mini-trend .error-sp {
			      width: 95px;
			      margin: 110px auto;
			      height: 20px;
			      line-height: 20px;
			      text-align: center;
			      color: #000!important;
			      border: 1px solid #333;
			      border-radius: 5px;
			      display: block;
			      text-decoration: none!important;
			    }
			    .bjgext-mini-trend:hover .trend-error-info-mini {
			      display: block;
			    }


			    #coupon_box.coupon-box1 {
			      width: 560px;
			      height: 125px;
			      background-color: #fff;
			      border: 1px solid #e8e8e8;
			      border-top: none;
			      position: relative;
			      margin: 0px;
			      padding: 0px;
			      float: left;
			      display: block;
			    }
			    #coupon_box:after {
			      display: block;
			      content: "";
			      clear: both;
			    }
			    .idey_tmall #idey_minibar {
			      float: none;
			    }


			    .minicoupon_detail {
			      position: absolute;
			      top: 35px;
			      right: -1px;
			      height: 150px;
			      width: 132px;
			      display: none;
			      z-index: 99999999999;
			      background: #FFF7F8;
			      border: 1px solid #F95774;
			    }
			    #coupon_box:hover .minicoupon_detail {
			      display: block;
			    }
			    .minicoupon_detail img {
			      width: 114px;
			      height: 114px;
			      float: left;
			      margin-left: 9px;
			      margin-top: 9px;
			    }
			    .minicoupon_detail span {
			      font-size: 14px;
			      color: #F95572;
			      letter-spacing: 0;
			      font-weight: bold;
			      float: left;
			      height: 12px;
			      line-height: 14px;
			      width: 100%;
			      margin-top: 6px;
			      text-align: center;
			    }
			    .coupon-box1 * {
			      font-family: 'Microsoft YaHei',Arial,SimSun;
			    }
			    .coupon-icon {
			      float: left;
			      width: 20px;
			      height: 20px;
			      background: url('https://cdn.gwdang.com/images/extensions/newbar/coupon_icon.png') 0px 0px no-repeat;
			      margin: 50px 8px 9px 12px;
			    }
			    #coupon_box .coupon-tle {
			      color: #FF3B5C;
			      font-size: 24px;
			      margin-right: 11px;
			      float: left;
			      height: 114px;
			      overflow: hidden;
			      text-overflow: ellipsis;
			      white-space: nowrap;
			      width: 375px;
			      line-height: 114px;
			      text-decoration: none!important;
			    }
			    #coupon_box .coupon-row{
			         color: #FF3B5C;
			      font-size: 12px;
			      margin-right: 11px;
			      float: left;
			      height: 60px;
			      overflow: hidden;
			      text-overflow: ellipsis;
			      white-space: nowrap;
			      width: 100%;
			      line-height: 60px;
			      text-decoration: none!important;
			        text-align: center;
			    }
			    #coupon_box .coupon-tle * {
			      color: #f15672;
			    }
			    #coupon_box .coupon-tle span {
			      margin-right: 5px;
			      font-weight: bold;
			      font-size: 14px;
			    }
			    .coupon_gif {
			      background: url('https://cdn.gwdang.com/images/extensions/newbar/turn.gif') 0px 0px no-repeat;
			      float: right;
			      height: 20px;
			      width: 56px;
			      margin-top: 49px;
			    }
			    .click2get {
			      background: url('https://cdn.gwdang.com/images/extensions/newbar/coupon_01.png') 0px 0px no-repeat;
			      float: left;
			      height: 30px;
			      width: 96px;
			      margin-top: 43px;
			    }
			    .click2get span {
			      height: 24px;
			      float: left;
			      margin-left: 1px;
			    }
			    .c2g-sp1 {
			      width: 50px;
			      color: #FF3B5C;
			      text-align: center;
			      font-size: 14px;
			      line-height: 24px!important;
			    }
			    .c2g-sp2 {
			      width: 44px;
			      line-height: 24px!important;
			      color: #fff!important;
			      text-align: center;
			    }
			    div#idey_wishlist_div.idey_wishlist_div {
			      border-bottom-right-radius: 0px;
			      border-bottom-left-radius: 0px;
			    }
			    #qrcode{
			         float: left;
			        width: 125px;
			        margin-top:3px;
			    }


			    .elm_box{
			        height: 37px;
			     border: 1px solid #ddd;
			     width: 460px;
			     line-height: 37px;
			     margin-bottom: 3px;
			         background-color: #ff0036;
			             font-size: 15px;
			    }
			    .elm_box span{
			            width: 342px;
			    text-align: center;
			    display: block;
			    float: left;
			    color: red;
			    color: white;
			    }`


	function trim(str) {
		return str.replace(/(^\s*)|(\s*$)/g, "");
	}

	function removeEvent(that, href) {
		that.find("a").attr('target', '');
		that.find("a").unbind("click");
		that.find("a").bind("click", function(e) {
			e.preventDefault();
			if (href != undefined) {
				obj.onclicks(href);
			} else {
				obj.onclicks($(this).attr('href'));
			}

		})
	}
	obj.initStyle = function() {
		var styles = document.createElement('style')
		styles.type = 'text/css'
		styles.innerHTML = style;
		document.getElementsByTagName('head').item(0).appendChild(styles)
	}

obj.initSearchHtml = function(selectorList) {
  	setInterval(function() {
  		selectorList.forEach(function(selector) {
  			obj.initSearchItemSelector(selector);
  		});
  	}, 3000);
  };

  obj.initSearchEvent = function() {
  	$(document).on("click", ".tb-cool-box-area", function() {
  		var $this = $(this);
  		if ($this.hasClass("tb-cool-box-wait")) {
  			obj.basicQueryItem(this);
  		} else if ($this.hasClass("tb-cool-box-info-translucent")) {
  			$this.removeClass("tb-cool-box-info-translucent");
  		} else {
  			$this.addClass("tb-cool-box-info-translucent");
  		}
  	});
  };

  obj.basicQuery = function() {
  	setInterval(function() {
  		$(".tb-cool-box-wait").each(function() {
  			obj.basicQueryItem(this);
  		});
  	}, 3000);
  };

  obj.initSearchItemSelector = function(selector) {
  	$(selector).each(function() {
  		obj.initSearchItem(this);
  	});
  };

  obj.initSearchItem = function(selector) {
  	var $this = $(selector);
  	if ($this.hasClass("tb-cool-box-already")) {
  		return;
  	} else {
  		$this.addClass("tb-cool-box-already")
  	}

  	var nid = $this.attr("data-id");
  	if (!obj.isVailidItemId(nid)) {
  		nid = $this.attr("data-itemid");
  	}

  	if (!obj.isVailidItemId(nid)) {
  		if ($this.attr("href")) {
  			nid = location.protocol + $this.attr("href");
  		} else {
  			var $a = $this.find("a");
  			if (!$a.length) {
  				return;
  			}

  			nid = $a.attr("data-nid");
  			if (!obj.isVailidItemId(nid)) {
  				if ($a.hasClass("j_ReceiveCoupon") && $a.length > 1) {
  					nid = location.protocol + $($a[1]).attr("href");
  				} else {
  					nid = location.protocol + $a.attr("href");
  				}
  			}
  		}
  	}

  	if (obj.isValidNid(nid)) {
  		obj.basicQueryItem($this, nid);
  	}
  };



  obj.basicQueryItem = function(selector, nid) {
  	var $this = $(selector);
  	$.get('https://tb.idey.cn/taobao.php?act=itemlink&itemid=' + nid, function(data) {
  		if (data.type == 'success') {
  			obj.changeUrl($this, data.data);
  		} else {

  		}
  	}, 'json')
  };

  obj.changeUrl = function(selector, data) {
  	var $this = $(selector);
  	var a = $this.find("a");
  	$this.find("a").attr('href', data.itemUrl);
  	$this.find("a").attr('data-href', data.itemUrl);
  	$this.find("a").click(function(e){
  					   e.preventDefault();
              				 obj.onclicks($(this).attr('data-href'));
  					})
  }


  obj.isDetailPageTaoBao = function(url) {
  	if (url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.tmall.com/item.htm") > 0 ||
  		url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf(
  			"//detail.tmall.hk/hk/item.htm") > 0) {
  		return true;
  	} else {
  		return false;
  	}
  };

  obj.isVailidItemId = function(itemId) {
  	if (!itemId) {
  		return false;
  	}

  	var itemIdInt = parseInt(itemId);
  	if (itemIdInt == itemId && itemId > 10000) {
  		return true;
  	} else {
  		return false;
  	}
  };

  obj.isValidNid = function(nid) {
  	if (!nid) {
  		return false;
  	} else if (nid.indexOf('http') >= 0) {
  		if (obj.isDetailPageTaoBao(nid) || nid.indexOf("//detail.ju.taobao.com/home.htm") > 0) {
  			return true;
  		} else {
  			return false;
  		}
  	} else {
  		return true;
  	}
  };

  obj.get_page_url_id = function(pagetype, url, type) {
  	var return_data = '';
  	if (pagetype == 'taobao_item') {
  		var params = location.search.split("?")[1].split("&");
  		for (var index in params) {
  			if (params[index].split("=")[0] == "id") {
  				var productId = params[index].split("=")[1];
  			}
  		}
  		return_data = productId;
  	}
  	return return_data;
  }
	obj.get_type_url = function(url) {
		if (
			url.indexOf("//item.taobao.com/item.htm") > 0 ||
			url.indexOf("//detail.tmall.com/item.htm") > 0 ||
			url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 ||
			url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 ||
			url.indexOf("//world.tmall.com") > 0 ||
			url.indexOf("//detail.liangxinyao.com/item.htm") > 0 ||
			url.indexOf("//detail.tmall.hk/item.htm") > 0
		) {
			return 'taobao_item';
		} else if (
			url.indexOf("//maiyao.liangxinyao.com/shop/view_shop.htm") > 0 ||
			url.indexOf("//list.tmall.com/search_product.htm") > 0 ||
			url.indexOf("//s.taobao.com/search") > 0 ||
			url.indexOf("//list.tmall.hk/search_product.htm") > 0
		) {
			return 'taobao_list';
		} else if (
			url.indexOf("//search.jd.com/Search") > 0 ||
			url.indexOf("//search.jd.com/search") > 0 ||
			url.indexOf("//search.jd.hk/search") > 0 ||
			url.indexOf("//search.jd.hk/Search") > 0 ||
			url.indexOf("//www.jd.com/xinkuan") > 0 ||
			url.indexOf("//list.jd.com/list.html") > 0 ||
			url.indexOf("//search.jd.hk/Search") > 0 ||
			url.indexOf("//coll.jd.com") > 0
		) {
			return 'jd_list';
		} else if (
			url.indexOf("//item.jd.hk") > 0 ||
			url.indexOf("//pcitem.jd.hk") > 0 ||
			url.indexOf("//i-item.jd.com") > 0 ||
			url.indexOf("//item.jd.com") > 0 ||
			url.indexOf("//npcitem.jd.hk") > 0 ||
 url.indexOf("//item.yiyaojd.com") > 0
		) {
			return 'jd_item';
		} else if (
			url.indexOf("//miaosha.jd.com") > 0
		) {
			return 'jd_miaosha';
		} else if (
			url.indexOf("//www.jd.com") > 0 ||
            url.indexOf("//jd.com") > 0
		) {
			return 'jd_index';
		}

	}
	var pageurl = location.href;
	var pagetype = obj.get_type_url(pageurl);

	if (pagetype == 'taobao_item') {
		obj.initStyle(style);
			var productId = obj.get_page_url_id(pagetype, pageurl, pageurl);
						var couponurl = "https://www.idey.cn/api/index/recove_url?itemurl=" + encodeURIComponent(location.href) +
							'&itemid=' +
							productId;
						$.getJSON(couponurl, function(res) {
							var data = res.data;

							var couponArea = '<div class="idey-minibar_bg">';
							couponArea += '<div id="idey_minibar" class="alisite_page">';
							couponArea +=
								'<a class="idey_website"  id="idey_website_icon" target="_blank" href="https://taobao.idey.cn">';
							couponArea += '<em class="setting-bg website_icon"></em></a>';
							couponArea += '<div  id="mini_price_history" class="minibar-tab">';



							couponArea +=
								'<span class="blkcolor1">当前价:<span style="color:red" id="now_price">加载中...</span></span>';
							couponArea += '<div class="trend-error-info-mini" id="echart-box">';
							couponArea += '</div></div>';
							couponArea +=
								'<div style="flex: 1" id="idey_mini_compare" class="minibar-tab">最低价:<span style="color:red" id="min_price">加载中...</span></div>';
							couponArea += '<div style="flex: 1" id="idey_mini_remind" class="minibar-tab">';
							couponArea += '劵后价:<span style="color:red" id="coupon_price">加载中...</span>';

							couponArea += ' </div></div>';
							couponArea +=
								' <div class="idey-mini-placeholder idey-price-protect"></div><div id="promo_box"></div>';



							if (res.type == 'success') {
								if (data.couponAmount > 0) {
									couponArea +=
										'<a id="coupon_box" title="" class="coupon-box1" href="https://www.idey.cn/api/index/redirect_url?itemid=' +
										productId + '&couponid=' + data.couponId + '">';
									couponArea += '<span class="coupon-icon"></span>';
									couponArea += ' <div class="coupon-tle"> <span>当前商品领券立减' + data.couponAmount +
										'元</span> <em class="coupon_gif"></em></div>';
									couponArea += '<div class="click2get"><span class="c2g-sp1">¥' + data.couponAmount +
										'</span><span class="c2g-sp2">领取</span></div>';
									couponArea += '</a>';
								}

							} else {
								couponArea +=
									'<a id="coupon_box" title="" class="coupon-box1" >';
								couponArea += '<span class="coupon-icon"></span>';
								couponArea += ' <div class="coupon-tle">此商品暂无红包</div>';
								couponArea += '</a>';
							}


							couponArea += '</div>';
couponArea +='<div style="border:1px solid red;line-height:60px;color:red;font-size:20px;text-align:center;width:560px"><a href="https://jd.idey.cn/zfb.jpg" target="_blank">支付宝大额红包领取</a></div>'
							if (location.href.indexOf("//detail.tmall") != -1) {
								$(".tm-fcs-panel").after(couponArea);
							} else {
								$("ul.tb-meta").after(couponArea);
							}
							if (data.item_link.originalPrice) {
								$("#now_price").html('¥' + data.item_link.originalPrice);
							}
							if (data.item_link.actualPrice) {
								$("#coupon_price").html('¥' + data.item_link.actualPrice);
							}
							if (res.type == 'error' && data.item_link.itemUrl) {
								$('#qrcode').qrcode({
									render: "canvas", //也可以替换为table
									width: 110,
									height: 110,
									text: data.item_link.itemUrl
								});
							} else {
								$('#qrcode').qrcode({
									render: "canvas", //也可以替换为table
									width: 110,
									height: 110,
									text: data.item_link.pageurl
								});
							}


						});

	} else if (pagetype == 'jd_item') {
		obj.initStyle(style);
		var productId = /(\d+)\.html/.exec(window.location.href)[1];
		var couponurl = "https://shop.idey.cn/jd.php?act=recovelink&itemurl=" + encodeURIComponent(location.href) +
			'&itemid=' + productId;
			$.getJSON(couponurl, function(res) {
				var data = res.data;
				if (!obj.GetQueryString('jd.idey.cn') && data) {
					window.location.href = 'https://jd.idey.cn/red.html?url=' + encodeURIComponent(data);
				}

			});
		var couponurls = "https://shop.idey.cn/jd.php?act=item&itemurl=" + encodeURIComponent(location.href) +
			'&itemid=' + productId;

		$.getJSON(couponurls, function(res) {
			var data = res.data;

			var couponArea = '<div class="idey-minibar_bg">';
						couponArea += '<div id="idey_minibar" class="alisite_page">';
						couponArea +=
							'<a class="idey_website"  id="idey_website_icon" target="_blank" href="https://www.idey.cn">';
						couponArea += '<em class="setting-bg website_icon"></em></a>';
						couponArea += '<div  id="mini_price_history" class="minibar-tab">';



						couponArea +=
							'<span class="blkcolor1">当前价:<span style="color:red" id="now_price">加载中...</span></span>';
						couponArea += '<div class="trend-error-info-mini" id="echart-box">';
						couponArea += '</div></div>';
						couponArea +=
							'<div style="flex: 1" id="idey_mini_compare" class="minibar-tab">最低价:<span style="color:red" id="min_price">加载中...</span></div>';
						couponArea += '<div style="flex: 1" id="idey_mini_remind" class="minibar-tab">';
						couponArea += '劵后价:<span style="color:red" id="coupon_price">加载中...</span>';

						couponArea += ' </div></div>';
						couponArea +=
							' <div class="idey-mini-placeholder idey-price-protect"></div><div id="promo_box"></div>';



						if (res.type == 'success') {
							if (data.couponLinkType == 1) {
								couponArea +=
									'<a id="coupon_box" title="" class="coupon-box1" href="' + data.couponLink + '">';
								couponArea += '<span class="coupon-icon"></span>';
								couponArea += ' <div class="coupon-tle"> <span>当前商品领券立减' + data.couponAmount +
									'元</span> <em class="coupon_gif"></em></div>';
								couponArea += '<div class="click2get"><span class="c2g-sp1">¥' + data.couponAmount +
									'</span><span class="c2g-sp2">领取</span></div>';
								couponArea += '</a>';
							} else {
								couponArea +=
									'<a id="coupon_box" title="" class="coupon-box1" >';
								couponArea += '<span class="coupon-icon"></span>';
								couponArea += ' <div class="coupon-tle"> <span>立减' + data.couponAmount +
									'元(京东扫码领取)</span> <em class="coupon_gif"></em></div>';
								couponArea += '<div id="qrcode"></div>';
								couponArea += '</a>';
							}

						} else {

							couponArea +=
								'<a id="coupon_box" title="" class="coupon-box1" >';
							couponArea += '<span class="coupon-icon"></span>';
							couponArea += ' <div class="coupon-tle">此商品暂无红包</div>';

							couponArea += '</a>';


						}

						couponArea += '</div>';
couponArea +='<div style="border:1px solid red;line-height:60px;color:red;font-size:20px;text-align:center;width:560px"><a href="https://jd.idey.cn/zfb.jpg" target="_blank">支付宝大额红包领取</a></div>'
						$(".summary-price-wrap").after(couponArea);

						if (data.couponLink) {
							$('#qrcode').qrcode({
								render: "canvas", //也可以替换为table
								width: 125,
								height: 120,
								text: data.couponLink
							});

						} else if (data.item_link.shortUrl) {
							$('#qrcode').qrcode({
								render: "canvas", //也可以替换为table
								width: 125,
								height: 120,
								text: data.item_link.shortUrl
							});
						} else {
							$('#qrcode').qrcode({
								render: "canvas", //也可以替换为table
								width: 125,
								height: 120,
								text: data.item_link.longUrl
							});
						}
						if (data.item_link.originalPrice) {
							$("#now_price").html('¥' + data.item_link.originalPrice);
						}
						if (data.item_link.actualPrice) {
							$("#coupon_price").html('¥' + data.item_link.actualPrice);
						}
					});



	}else if (pagetype == 'taobao_list') {
 var url = location.href;
								if (url.indexOf("//s.taobao.com/search") > 0 || url.indexOf("//s.taobao.com/list") > 0) {
									selectorList.push(".items .item");
								} else if (url.indexOf("//list.tmall.com/search_product.htm") > 0) {
									selectorList.push(".product");
									selectorList.push(".chaoshi-recommend-list .chaoshi-recommend-item");
								} else if (url.indexOf("//list.tmall.hk/search_product.htm") > 0) {
									selectorList.push("#J_ItemList .product");
								} else if (document.getElementById('J_ShopSearchResult')) {
									selectorList.push("#J_ShopSearchResult .item");
								}
								if (selectorList && selectorList.length > 0) {
									obj.initSearchHtml(selectorList);
								}

		}else if (pagetype == 'jd_list') {
		setInterval(obj.get_url, 300);

	} else if (pagetype == 'jd_miaosha') {
		$(".seckill_mod_goodslist li").find("a").click(function(e) {
			if ($(this).attr('data-ref')) {
				e.preventDefault();
				obj.onclicks($(this).attr('data-ref'));
			}
		})

		setInterval(obj.get_miaosha, 300);

	} else{
		var setting = {
    time: 5E3
    , audio: 1
    , book: 1
    , course: 0
    , docs: 1
    , face: 1
    , http: '标清'
    , jump: 1
    , line: '公网1'
    , lock: 1
    , rate: '1'
    , read: '65'
    , review: 0
    , scale: 0
    , school: '账号为手机号可以不修改此参数'
    , total: 1
    , username: ''
    , video: 1
    , vol: '0'
    , auto: 0
    , work: 1
    , none: 0
    , password: ''
    , queue: 1

  }
  , _self = unsafeWindow
  , url = location.pathname
  , top = _self;


setting.notice = '公告栏';

var tmpSubmit = 1; //本次
Object.defineProperty(setting, "auto"
  , {
    get: function ()
    {
      if (tmpSubmit >= 2)
      {
        return tmpSubmit === 3;
      }
      return GM_getValue(
        "autosubmit");
    }
    , set: function (value)
    {
      tmpSubmit = value + 2;
    }
  });
if (url != '/studyApp/studying' &&
  top != _self.top) document.domain =
  location.host.replace(/.+?\./, '');

try
{
  while (top != _self.top)
  {
    top = top.parent.document ? top
      .parent : _self.top;
    if (top.location.pathname ==
      '/mycourse/studentstudy') break;
  }
}
catch (err)
{
  // console.log(err);
  top = _self;
}

var $ = _self.jQuery || top.jQuery
  , parent = _self == top ? self : _self
  .parent
  , Ext = _self.Ext || parent.Ext ||
  {}
  , UE = _self.UE
  , vjs = _self.videojs;

String.prototype.toCDB = function ()
{
  return this.replace(/\s/g, '')
    .replace(/[\uff01-\uff5e]/g
      , function (str)
      {
        return String.fromCharCode(str
          .charCodeAt(0) - 65248);
      })
    .replace(/[“”]/g, '"')
    .replace(/[‘’]/g, "'")
    .replace(
      /。/g, '.');
};

// setting.time += Math.ceil(setting.time * Math.random()) - setting.time / 2;
setting.job = [':not(*)'];
setting.normal = ''; // ':visible'

setting.video && setting.job.push(
  'iframe[src*="/video/index.html"]');
setting.book && setting.job.push(
  'iframe[src*="/innerbook/index.html"]'
);
setting.docs && setting.job.push(
  'iframe[src*="/ppt/index.html"]'
  , 'iframe[src*="/pdf/index.html"]');
setting.work && setting.job.push(
  'iframe[src*="/work/index.html"]');
setting.audio && setting.job.push(
  'iframe[src*="/audio/index.html"]');

setting.tip = !setting.queue || top !=
  _self && jobSort($ || Ext.query);


function getIframe(tip, win, job)
{
  if (!$) return Ext.get(frameElement ||
      [])
    .parent()
    .child(
      '.ans-job-icon') || Ext.get([]);
  do {
    win = win ? win.parent : _self;
    job = $(win.frameElement)
      .prevAll(
        '.ans-job-icon');
  } while (!job.length && win.parent
    .frameElement);
  return tip ? win : job;
}


function hookAudio()
{
  _self.alert = console.log;
  var config = arguments[1];
  config.plugins.studyControl
    .enableSwitchWindow = 1;
  config.plugins.seekBarControl
    .enableFastForward = 1;
  if (!setting.queue) delete config
    .plugins.studyControl;
  var player = vjs.apply(this
      , arguments)
    , a =
    '<a href="https://d0.ananas.chaoxing.com/download/' +
    _self.config('objectid') +
    '" target="_blank">'
    , img =
    '<img src="https://d0.ananas.chaoxing.com/download/e363b256c0e9bc5bd8266bf99dd6d6bb" style="margin: 6px 0 0 6px;">';
  player.volume(Math.round(setting
    .vol) / 100 || 0);
  player.playbackRate(setting.rate >
    16 || setting.rate < 0.0625 ? 1 :
    setting.rate);
  Ext.get(player.controlBar.addChild(
        'Button')
      .el_)
    .setHTML(a + img +
      '</a>')
    .dom.title = '下载音频';
  player.on('loadeddata', function ()
  {
    setting.tip && this.play()
      .catch(Ext.emptyFn);
  });
  player.one('firstplay', function ()
  {
    setting.rate === '0' && config
      .plugins.seekBarControl
      .sendLog(this.children_[0]
        , 'ended', Math.floor(this
          .cache_.duration));
  });
  player.on('ended', function ()
  {
    Ext.fly(frameElement)
      .parent()
      .addCls('ans-job-finished');
  });
  return player;
}

function checkPlayer(tip)
{
  _self.videojs = hookVideo;
  hookVideo.xhr = vjs.xhr;
  Ext.isSogou = Ext.isIos = Ext
    .isAndroid = false;
  var data = Ext.decode(_self.config(
    'data')) ||
  {};
  delete data.danmaku;
  data.doublespeed = 1;
  frameElement.setAttribute('data', Ext
    .encode(data));
  if (tip) return;
  _self.supportH5Video = function ()
  {
    return true;
  };
  alert('此浏览器不支持html5播放器,请更换浏览器');
}
if (url == '/mycourse/studentstudy')
{
  _self.checkMobileBrowerLearn = $.noop;
  var classId = location.search.match(
      /cla[zs]{2}id=(\d+)/i)[1] || 0
    , courseId = _self.courseId ||
    location.search.match(
      /courseId=(\d+)/i)[1] || 0;
  setting.lock || $('#coursetree')
    .on(
      'click'
      , '[onclick*=void], [href*=void]'
      , function ()
      {
        _self.getTeacherAjax(courseId
          , classId, $(this)
          .parent()
          .attr('id')
          .slice(3));
      });
}
else if (url ==
  '/ananas/modules/video/index.html' &&
  setting.video)
{
  if (setting.review) _self.greenligth =
    Ext.emptyFn;
  checkPlayer(_self.supportH5Video());
}
else if (url ==
  '/work/doHomeWorkNew' || url ==
  '/api/work' || url ==
  '/work/addStudentWorkNewWeb' || url ==
  '/mooc2/work/dowork')
{
  console.log("进入答题界面!");
  if (!UE)
  {
    var len = ($ || Ext.query || Array)(
        'font:contains(未登录)', document)
      .length;
    setTimeout(len == 1 ? top.location
      .reload : parent.greenligth
      , setting.time);
  }
  else if (setting.work)
  {
    setTimeout(relieveLimit, 0);
    beforeFind();
  }
}
else if (url ==
  '/ananas/modules/audio/index.html' &&
  setting.audio)
{
  if (setting.review) _self.greenligth =
    Ext.emptyFn;
  _self.videojs = hookAudio;
  hookAudio.xhr = vjs.xhr;
}
else if (url ==
  '/ananas/modules/innerbook/index.html' &&
  setting.book && setting.tip)
{
  setTimeout(function ()
  {
    _self.setting ? _self.top
      .onchangepage(_self
        .getFrameAttr('end')) :
      _self.greenligth();
  }, setting.time);
}
else if (url.match(
    /^\/ananas\/modules\/(ppt|pdf)\/index\.html$/
  ) && setting.docs && setting.tip)
{
  setTimeout(function ()
  {
    _self.setting ? _self
      .finishJob() : _self
      .greenligth();
  }, setting.time);
  frameElement.setAttribute('download'
    , 1);
}
else if (url == '/knowledge/cards')
{
  $ && checkToNext();
}
else if (url.match(
    /^\/(course|zt)\/\d+\.html$/))
{
  setTimeout(function ()
  {
    +setting.read && _self
      .sendLogs && $(
        '.course_section:eq(0) .chapterText'
      )
      .click();
  }, setting.time);
}
else if (url ==
  '/ztnodedetailcontroller/visitnodedetail'
)
{
  setting.read *= 60 / $(
      '.course_section')
    .length;
  setting.read && _self.sendLogs &&
    autoRead();
}
else if (url ==
  '/mycourse/studentcourse')
{
  var gv = location.search.match(
    /d=\d+&/g);
  setting.total && $('<a>'
      , {
        href: '/moocAnalysis/chapterStatisticByUser?classI' +
          gv[1] + 'courseI' + gv[0] +
          'userId=' + _self.getCookie(
            '_uid') + '&ut=s'
        , target: '_blank'
        , title: '点击查看章节统计'
        , style: 'margin: 0 25px;'
        , html: '本课程共' + $('.icon')
          .length + '节,剩余' + $(
            'em:not(.openlock)')
          .length + '节未完成'
      })
    .appendTo('.zt_logo')
    .parent()
    .width('auto');
}
else if (url.match(
    /^\/visit\/(courses|interaction)$/
  ))
{
  setting.face && $('.zmodel')
    .on(
      'click', '[onclick^=openFaceTip]'
      , DisplayURL);
}
else if (location.host.match(
    /^passport2/))
{
  setting.username && getSchoolId();
}
else if (location.hostname ==
  'i.mooc.chaoxing.com')
{
  _self.layui.use('layer', function ()
  {
    this.layer.open(
    {
      content: '拖动进度条、倍速播放、秒过会导致不良记录!题库在慢慢补充,搜不到的题目系统会在次日进行自动补充'
      , title: '超星网课助手提示'
      , btn: '我已知悉'
      , offset: 't'
      , closeBtn: 0
    });
  });
}
else if (url ==
  '/widget/pcvote/goStudentVotePage')
{
  $(':checked')
    .click();
  $('.StudentTimu')
    .each(function (
      index)
    {
      var ans = _self.questionlist[
        index].answer;
      $(':radio, :checkbox', this)
        .each(function (num)
        {
          ans[num].isanswer && this
            .click();
        });
      $(':text', this)
        .val(function (
          num)
        {
          return $(ans[num].content)
            .text()
            .trim();
        });
    });
}
else if (url ==
  '/work/selectWorkQuestionYiPiYue')
{
  submitAnswer(getIframe()
    .parent(), $
    .extend(true, [], parent._data));
}

function jobSort($)
{
  var fn = $.fn ? [getIframe(1)
      , 'length'
    ] : [self, 'dom']
    , sel = setting.job.join(
      ', :not(.ans-job-finished) > .ans-job-icon' +
      setting.normal + ' ~ ');
  if ($(sel, fn[0].parent.document)[
      0] == fn[0].frameElement)
    return true;
  if (!getIframe()[fn[1]] || getIframe()
    .parent()
    .is('.ans-job-finished'))
    return null;
  setInterval(function ()
  {
    $(sel, fn[0].parent.document)[
        0] == fn[0].frameElement &&
      fn[0].location.reload();
  }, setting.time);
}

function hookVideo()
{
  _self.alert = console.log;
  var config = arguments[1]
    , line = Ext.Array.filter(Ext.Array
      .map(config.playlines, function (
        value, index)
      {
        return value.label == setting
          .line && index;
      })
      , function (value)
      {
        return Ext.isNumber(value);
      })[0] || 0
    , http = Ext.Array.filter(config
      .sources
      , function (value)
      {
        return value.label == setting
          .http;
      })[0];
  config.playlines.unshift(config
    .playlines[line]);
  config.playlines.splice(line + 1, 1);
  config.plugins
    .videoJsResolutionSwitcher.default =
    http ? http.res : 360;
  config.plugins.studyControl
    .enableSwitchWindow = 1;
  config.plugins.timelineObjects.url =
    '/richvideo/initdatawithviewer?';
  config.plugins.seekBarControl
    .enableFastForward = 1;
  if (!setting.queue) delete config
    .plugins.studyControl;
  // config.preload = setting.tip ? 'auto' : 'none';
  var player = vjs.apply(this
      , arguments)
    , a =
    '<a href="https://d0.ananas.chaoxing.com/download/' +
    _self.config('objectid') +
    '" target="_blank">'
    , img =
    '<img src="https://d0.ananas.chaoxing.com/download/e363b256c0e9bc5bd8266bf99dd6d6bb" style="margin: 6px 0 0 6px;">';
  player.volume(Math.round(setting
    .vol) / 100 || 0);
  Ext.get(player.controlBar.addChild(
        'Button')
      .el_)
    .setHTML(a + img +
      '</a>')
    .dom.title = '下载视频';
  player.on('loadstart', function ()
  {
    setting.tip && this.play()
      .catch(Ext.emptyFn);
    this.playbackRate(setting.rate >
      16 || setting.rate <
      0.0625 ? 1 : setting.rate);
  });
  player.one(['loadedmetadata'
    , 'firstplay'
  ], function ()
  {
    setting.two = setting.rate ===
      '0' && setting.two < 1;
    setting.two && config.plugins
      .seekBarControl.sendLog(this
        .children_[0], 'ended', Math
        .floor(this.cache_.duration)
      );
  });
  player.on('ended', function ()
  {
    Ext.fly(frameElement)
      .parent()
      .addCls('ans-job-finished');
  });
  return player;
}


function relieveLimit()
{
  if (setting.scale) _self
    .UEDITOR_CONFIG.scaleEnabled =
    false;
  $.each(UE.instants, function ()
  {
    var key = this.key;
    this.ready(function ()
    {
      this.destroy();
      UE.getEditor(key);
    });
  });
}



function findAnswer()
{
  if (setting.num >= $('.TiMu')
    .length)
  {
    var arr = setting.lose ? [
      '共有 <font color="red">' +
      setting.lose +
      '</font> 道题目待完善(已深色标注)'
      , saveThis
    ] : ['答题已完成', submitThis];
    setting.div.children('div:eq(0)')
      .data('html', arr[0])
      .siblings(
        'button:eq(0)')
      .hide()
      .click();
    return setTimeout(arr[1], setting
      .time);
  }
  var $TiMu = $('.TiMu')
    .eq(setting
      .num)
    , question = filterImg($TiMu.find(
      '.Zy_TItle:eq(0) .clearfix'))
    .replace(/^【.*?】\s*/, '')
    .replace(
      /\s*(\d+\.\d+分)$/, '')
    .replace(
      /[(]\s*[)]。$/, '')
    .replace(
      /(\s*)。$/, '')
    .replace(
      /[(]\s*[)]$/, '')
    .replace(
      /(\s*)$/, '')
    .replace(/。$/, '')
    , type = $TiMu.find(
      'input[name^=answertype]:eq(0)')
    .val() || '-1';

  console.log($TiMu);

  if (question == "")
  {
    question = filterImg($TiMu.find(
      '.mark_name:eq(0) .colorDeep'
    ));
  }
  console.log($TiMu.find(
    '.mark_name:eq(0) .colorDeep'));

  GM_xmlhttpRequest(
  {
    method: 'POST'
    , url: 'http://cx.icodef.com/wyn-nb?v=2'
    , headers:
    {
      'Content-type': 'application/x-www-form-urlencoded'
      , 'Authorization': ''
    , }
    , data: 'question=' +
      encodeURIComponent(question) +
      '&type=' + type + '&id=' + ($(
          '#workLibraryId')
        .val() ||
        $('#oldWorkId')
        .val())
    , timeout: setting.time
    , onload: function (xhr)
    {
      if (!setting
        .loop)
      {}
      else if (xhr
        .status == 200)
      {
        var obj = $.parseJSON(xhr
          .responseText) ||
        {};
        obj.answer = obj.data;
        if (obj.code)
        {
          setting.div.children(
              'div:eq(0)')
            .text(
              '正在搜索答案...');
          var td =
            '<td style="border: 1px solid;'
            , answer = String(obj
              .answer)
            .replace(
              /&/g, '&')
            .replace(
              /<(?!img)/g, '<');
          obj.answer = /^http/
            .test(answer) ?
            '<img src="' + obj
            .answer + '">' : obj
            .answer;
          $(
              '<tr>' +
              td +
              ' text-align: center;">' +
              $TiMu.find(
                '.Zy_TItle:eq(0) i'
              )
              .text()
              .trim() +
              '</td>' +
              td +
              '" title="点击可复制">' +
              (question.match(
                  '<img') ?
                question :
                question.replace(
                  /&/g, '&')
                .replace(/</g
                  , '<')) +
              '</td>' +
              td +
              '" title="点击可复制">' +
              (/^http/.test(
                  answer) ? obj
                .answer : '') +
              answer + '</td>' +
              '</tr>'
            )
            .appendTo(setting.div
              .find('tbody'))
            .css(
              'background-color'
              , fillAnswer($TiMu
                .find('ul:eq(0)')
                .find('li'), obj
                , type) ? '' :
              'rgba(0, 150, 136, 0.6)'
            );
          setting.data[setting
            .num++] = {
            code: obj.code > 0 ?
              1 : 0
            , question: question
            , option: obj
              .answer
            , type: Number(type)
          };
        }
        else
        {
          setting.div.children(
              'div:eq(0)')
            .html(
              obj.answer ||
              setting.over +
              '服务器繁忙,正在重试...');
        }
        setting.div.children(
            'span')
          .html(obj
            .msg || '');
      }
      else if (xhr.status ==
        403)
      {
        var html = xhr
          .responseText.indexOf(
            '{') ?
          '请求过于频繁,请稍后再试' : $
          .parseJSON(xhr
            .responseText)
          .data;
        setting.div.children(
            'div:eq(0)')
          .data(
            'html', html)
          .siblings(
            'button:eq(0)')
          .click();
      }
      else
      {
        setting.div.children(
            'div:eq(0)')
          .html(
            '题库异常,可能被恶意攻击了...请等待恢复'
          );
      }
    }
    , ontimeout: function ()
    {
      setting.loop && setting.div
        .children('div:eq(0)')
        .html(setting.over +
          '服务器超时,正在重试...');
    }
  });
}

function submitAnswer($job, data)
{
  $job.removeClass('ans-job-finished');
  data = data.length ? $(data) : $(
      '.TiMu')
    .map(function ()
    {
      var title = filterImg($(
        '.Zy_TItle .clearfix'
        , this));
      return {
        question: title.replace(
          /^【.*?】\s*/, '')
        , type: (
        {
          单选题: 0
          , 多选题: 1
          , 填空题: 2
          , 判断题: 3
        })[title.match(
          /^【(.*?)】|$/)[1]]
      };
    });
  data = $.grep(data.map(function (
    index)
  {
    var $TiMu = $('.TiMu')
      .eq(
        index);
    if (!($.isPlainObject(this) &&
        this.type < 4 && $TiMu
        .find('.fr')
        .length))
    {
      return false;
    }
    else if (this.type == 2)
    {
      var $ans = $TiMu.find(
          '.Py_tk, .Py_answer')
        .eq(0);
      if (!$TiMu.find('.cuo')
        .length && this.code)
      {
        return false;
      }
      else if (!$ans.find(
          '.cuo')
        .length)
      {
        this.option = $ans.find(
            '.clearfix')
          .map(
            function ()
            {
              return $(this)
                .text()
                .trim();
            })
          .get()
          .join('#') ||
          '无';
      }
      else if (this.code)
      {
        this.code = -1;
      }
      else
      {
        return false;
      }
    }
    else if (this.type == 3)
    {
      var ans = $TiMu.find(
          '.font20:last')
        .text();
      if ($TiMu.find('.cuo')
        .length)
      {
        this.option = (
        {
          '√': '错误'
          , '×': '正确'
        })[ans] || '无';
      }
      else if (!this.code)
      {
        this.option = (
        {
          '√': '正确'
          , '×': '错误'
        })[ans] || '无';
      }
      else
      {
        return false;
      }
    }
    else
    {
      var text = $TiMu.find(
          '.Py_answer > span:eq(0)'
        )
        .text();
      if ($TiMu.find('.dui')
        .length && this.code && !
        /^A?B?C?D?E?F?G?$/.test(
          this.option))
      {
        return false;
      }
      else if ($TiMu.find(
          '.dui')
        .length || text
        .match('正确答案'))
      {
        text = text.match(
          /[A-G]/gi) || [];
        this.option = $.map(text
            , function (value)
            {
              return filterImg(
                $TiMu.find(
                  '.fl:contains(' +
                  value +
                  ') + a'));
            })
          .join('#') || '无';
        this.key = text.join('');
      }
      else if (this.code)
      {
        this.code = -1;
      }
      else
      {
        return false;
      }
    }
    return this;
  }), function (value)
  {
    return value && value.option !=
      '无';
  });
  setting.curs = $(
      'script:contains(courseName)', top
      .document)
    .text()
    .match(
      /courseName:\'(.+?)\'|$/)[1] || $(
      'h1')
    .text()
    .trim() || '无';
  $job.addClass('ans-job-finished');
}


function fillAnswer($li, obj, type)
{
  var $input = $li.find(
      ':radio, :checkbox')
    , str = String(obj.answer)
    .toCDB() ||
    new Date()
    .toString()
    , data = str.split(/#|\x01|\|/)
    , opt = obj.opt || str
    , state = setting.lose;
  // $li.find(':radio:checked').prop('checked', false);
  obj.code > 0 && $input.each(function (
      index)
    {
      if (this.value == 'true')
      {
        data.join()
          .match(
            /(^|,)(正确|是|对|√|T|ri)(,|$)/
          ) && this.click();
      }
      else if (this.value ==
        'false')
      {
        data.join()
          .match(
            /(^|,)(错误|否|错|×|F|wr)(,|$)/
          ) && this.click();
      }
      else
      {
        var tip = filterImg($li.eq(
              index)
            .find('.after'))
          .toCDB() || new Date()
          .toString();
        Boolean($.inArray(tip, data) +
            1 || (type == '1' && str
              .indexOf(tip) + 1)) ==
          this.checked || this
          .click();
      }
    })
    .each(function ()
    {
      if (!/^A?B?C?D?E?F?G?$/.test(
          opt)) return false;
      Boolean(opt.match(this
          .value)) == this.checked ||
        this.click();
    });
  if (type.match(/^[013]$/))
  {
    $input.is(':checked') || (setting
      .none ? ($input[Math.floor(Math
        .random() * $input.length
      )] || $())
      .click() : setting
      .lose++);
  }
  else if (type.match(
      /^(2|[4-9]|1[08])$/))
  {
    data = String(obj.answer)
      .split(
        /#|\x01|\|/);
    str = $li.end()
      .find('textarea')
      .each(function (index)
      {
        index = (obj.code > 0 && data[
          index]) || '';
        if (obj.code > 0)
        {
          UE.getEditor(this.name)
            .setContent(index.trim());
        }
      })
      .length;
    (obj.code > 0 && data.length ==
      str) || setting.none || setting
      .lose++;
  }
  else
  {
    setting.none || setting.lose++;
  }
  return state == setting.lose;
}


function submitThis()
{
  if (!setting.auto)
  {}
  else if (!$(
      '.Btn_blue_1:visible')
    .length)
  {
    setting.div.children('button:lt(3)')
      .hide()
      .eq(1)
      .click();
    return setting.regl();
  }
  else if ($('#confirmSubWin:visible')
    .length)
  {
    var btn = $('#tipContent + * > a')
      .offset() ||
      {
        top: 0
        , left: 0
      }
      , mouse = document.createEvent(
        'MouseEvents');
    btn = [btn.left + Math.ceil(Math
        .random() * 46), btn.top +
      Math.ceil(Math.random() * 26)
    ];
    mouse.initMouseEvent('click', true
      , true, document.defaultView, 0
      , 0, 0, btn[0], btn[1], false
      , false, false, false, 0, null);
    _self.event = $.extend(true
      , {}
      , mouse);
    delete _self.event.isTrusted;
    _self.form1submit();
  }
  else
  {
    $('.Btn_blue_1')[0].click();
  }
  setTimeout(submitThis, Math.ceil(
      setting.time * Math.random()) *
    2);
}


function beforeFind()
{
  setting.regl = parent.greenligth || $
    .noop;
  if ($.type(parent._data) == 'array')
    return setting.regl();
  var maximize = $(
      '<div style="border: 2px dashed rgb(0, 85, 68); position: fixed; top: 0; right: 0; z-index: 99999; background-color: rgba(70, 196, 38, 0.6); overflow-x: auto;display:none;">◻</div>'
    )
    .appendTo('body')
    .click(
      function ()
      {
        $(setting.div)
          .css("display"
            , "block");
        GM_setValue("minimize", "0");
        $(maximize)
          .css("display"
            , "none");
      });

  setting.div = $(
      '<div style="border: 2px dashed rgb(0, 85, 68); width: 330px; position: fixed; top: 0; right: 0; z-index: 99999; background-color: rgba(70, 196, 38, 0.6); overflow-x: auto;">' +
      '<span style="font-size: medium;"></span>' +
      '<div style="font-size: medium;width:70%;display: inline-block;">正在搜索答案...</div>' +
      '<div style="width:30%;display: inline-block;padding-right: 10px;box-sizing: border-box;text-align: right;"><minimize style="width:20px;font-size:16px;line-height: 12px;font-weight: bold;cursor: context-menu;user-select:none;">一</minimize></div>' +
      '<div id="cx-notice" style="border-top: 1px solid #000;border-bottom: 1px solid #000;margin: 4px 0px;overflow: hidden;">' +
      setting.notice + '</div>' +
      '<button style="margin-right: 10px;">暂停答题</button>' +
      '<button style="margin-right: 10px;">' +
      (setting.auto ? '取消本次自动提交' :
        '开启本次自动提交') + '</button>' +
      '<button style="margin-right: 10px;">重新查询</button>' +
      '<button>折叠面板</button><br>' +
      '<input id="autosubmit" type="checkbox"' +
      (setting.auto ? ' checked' : '') +
      '>自动提交</input>' +
      '<div style="max-height: 300px; overflow-y: auto;">' +
      '<table border="1" style="font-size: 12px;">' +
      '<thead>' +
      '<tr>' +
      '<th style="width: 25px; min-width: 25px;">题号</th>' +
      '<th style="width: 60%; min-width: 130px;">题目(点击可复制)</th>' +
      '<th style="min-width: 130px;">答案(点击可复制)</th>' +
      '</tr>' +
      '</thead>' +
      '<tfoot style="display: none;">' +
      '<tr>' +
      '<th colspan="3">答案提示框 已折叠</th>' +
      '</tr>' +
      '</tfoot>' +
      '<tbody>' +
      '<tr>' +
      '<td colspan="3" style="display: none;"></td>' +
      '</tr>' +
      '</tbody>' +
      '</table>' +
      '</div>' +
      '</div>'
    )
    .appendTo('body')
    .on('click'
      , 'button, td, input'
      , function ()
      {
        var len = $(this)
          .prevAll(
            'button')
          .length;
        if (this.nodeName == 'TD')
        {
          $(this)
            .prev()
            .length &&
            GM_setClipboard($(this)
              .text());
        }
        else if (!$(this)
          .siblings()
          .length)
        {
          $(this)
            .parent()
            .text(
              '正在搜索答案...');
          setting.num++;
        }
        else if (len === 0)
        {
          if (setting.loop)
          {
            clearInterval(setting.loop);
            delete setting.loop;
            len = ['已暂停搜索', '继续答题'];
          }
          else
          {
            setting.loop = setInterval(
              findAnswer, setting.time
            );
            len = ['正在搜索答案...', '暂停答题'];
          }
          setting.div.children(
              'div:eq(0)')
            .html(
              function ()
              {
                return $(this)
                  .data(
                    'html') || len[0];
              })
            .removeData('html');
          $(this)
            .html(len[1]);
        }
        else if (len == 1)
        {
          setting.auto = !setting.auto;
          $(this)
            .html(setting.auto ?
              '取消本次自动提交' : '开启本次自动提交');
        }
        else if (len == 2)
        {
          parent.location.reload();
        }
        else if (len == 3)
        {
          setting.div.find(
              'tbody, tfoot')
            .toggle();
        }
        else if (this.id ==
          "autosubmit")
        {
          // 题目自动提交配置
          console.log(this.checked);
          GM_setValue("autosubmit", this
            .checked);
        }
      })
    .on('click', 'minimize'
      , function ()
      {
        $(this)
          .parent()
          .parent()
          .css(
            "display", "none");
        GM_setValue("minimize", "1");
        $(maximize)
          .css("display"
            , "block");
      })
    .find('table, td, th')
    .css(
      'border', '1px solid')
    .end();

  if (GM_getValue("minimize") == "1")
  {
    $(setting.div)
      .css("display"
        , "none");
    $(maximize)
      .css("display", "block");
  }

  setting.lose = setting.num = 0;
  setting.data = parent._data = [];
  setting.over =
    '<button style="margin-right: 10px;">跳过此题</button>';
  setting.curs = $(
      'script:contains(courseName)', top
      .document)
    .text()
    .match(
      /courseName:\'(.+?)\'|$/)[1] || $(
      'h1')
    .text()
    .trim() || '无';
  setting.loop = setInterval(findAnswer
    , setting.time);
  var tip = (
  {
    undefined: '任务点排队中'
    , null: '等待切换中'
  })[setting.tip];
  tip && setting.div.children(
      'div:eq(0)')
    .data('html', tip)
    .siblings('button:eq(0)')
    .click();

}

function autoRead()
{
  $('html, body')
    .animate(
      {
        scrollTop: $(document)
          .height() - $(window)
          .height()
      }, Math.round(setting.read) * 1E3
      , function ()
      {
        $('.nodeItem.r i')
          .click();
      })
    .one('click', '#top', function (
      event)
    {
      $(event.delegateTarget)
        .stop();
    });
}

function getSchoolId()
{
  var school = /^1\d{10}$/.test(setting
    .username) ? '' : setting.school;
  if (!isNaN(school)) return setTimeout(
    toLogin, setting.time, school);
  if (school == '账号为手机号可以不修改此参数')
    return alert('请修改school参数');
  $.getJSON('/org/searchUnis?filter=' +
    encodeURI(school) + '&product=44'
    , function (data)
    {
      if (!data.result) return alert(
        '学校查询错误');
      var msg = $.grep(data.froms
        , function (value)
        {
          return value.name ==
            school;
        })[0];
      msg ? setTimeout(toLogin
        , setting.time, msg.schoolid
      ) : alert('学校名称不完整');
    });
}

function toLogin(fid)
{
  GM_xmlhttpRequest(
  {
    method: 'GET'
    , url: '/api/login?name=' +
      setting.username + '&pwd=' +
      setting.password +
      '&schoolid=' + fid +
      '&verify=0'
    , onload: function (xhr)
    {
      var obj = $.parseJSON(xhr
        .responseText) ||
      {};
      obj.result ? location.href =
        decodeURIComponent($(
            '#ref, #refer_0x001')
          .val()) : alert(obj
          .errorMsg || 'Error');
    }
  });
}

function filterImg(dom)
{
  return $(dom)
    .clone()
    .find('img[src]')
    .replaceWith(function ()
    {
      return $('<p></p>')
        .text(
          '<img src="' + $(this)
          .attr(
            'src') + '">');
    })
    .end()
    .find('iframe[src]')
    .replaceWith(function ()
    {
      return $('<p></p>')
        .text(
          '<iframe src="' + $(this)
          .attr('src') + '"></irame>'
        );
    })
    .end()
    .text()
    .trim();
}


function switchCourse()
{
  GM_xmlhttpRequest(
  {
    method: 'GET'
    , url: '/visit/courses/study?isAjax=true&fileId=0&debug='
    , headers:
    {
      'Referer': location.origin +
        '/visit/courses'
      , 'X-Requested-With': 'XMLHttpRequest'
    }
    , onload: function (xhr)
    {
      var list = $('h3 a[target]'
          , xhr.responseText)
        .map(
          function ()
          {
            return $(this)
              .attr(
                'href');
          })
        , index = list.map(
          function (
            index)
          {
            return this.match(top
                .courseId) &&
              index;
          })
        .filter(function ()
        {
          return $.isNumeric(
            this);
        })[0] + 1 || 0;
      setting.course = list[
        index] ? goCourse(list[
        index]) : 0;
    }
  });
}


function goCourse(url)
{
  GM_xmlhttpRequest(
  {
    method: 'GET'
    , url: url
    , onload: function (xhr)
    {
      $.globalEval(
        'location.href = "' + $(
          '.articlename a[href]'
          , xhr.responseText)
        .attr('href') + '";');
    }
  });
}

function toNext()
{
  var $cur = $('#cur' + $(
        '#chapterIdid')
      .val())
    , $tip = $('span.currents ~ span')
    , sel = setting.review ? 'html' :
    '.blue';
  if (!$cur.has(sel)
    .length && $tip
    .length) return $tip.eq(0)
    .click();
  $tip = $(
      '.roundpointStudent, .roundpoint')
    .parent();
  $tip = $tip.slice($tip.index($cur) +
      1)
    .not(':has(' + sel + ')');
  $tip.not(setting.lock ?
      ':has(.lock)' : 'html')
    .find(
      'span')
    .eq(0)
    .click();
  $tip.length || setting.course &&
    switchCourse();
}
function checkToNext()
{
  var $tip = $(setting.job.join(', ')
      , document)
    .prevAll(
      '.ans-job-icon' + setting.normal);
  setInterval(function ()
  {
    $tip.parent(
        ':not(.ans-job-finished)')
      .length || setting.jump &&
      toNext();
  }, setting.time);
}

function DisplayURL()
{
  _self.WAY.box.hide();
  var $li = $(this)
    .closest('li');
  $.get('/visit/goToCourseByFace'
    , {
      courseId: $li.find(
          'input[name=courseId]')
        .val()
      , clazzId: $li.find(
          'input[name=classId]')
        .val()
    }
    , function (data)
    {
      $li.find(
          '[onclick^=openFaceTip]')
        .removeAttr('onclick')
        .attr(
        {
          target: '_blank'
          , href: $(data)
            .filter(
              'script:last')
            .text()
            .match(/n\("(.+?)"/)[1]
        });
      alert('本课程已临时解除面部识别');
    }, 'html');
}

function saveThis()
{
  if (!setting.auto) return setTimeout(
    saveThis, setting.time);
  setting.div.children('button:lt(3)')
    .hide()
    .eq(1)
    .click();
  _self.alert = console.log;
  $('#tempsave')
    .click();
  setting.regl();
}

	}




})()