forgeplus/public/javascripts/educoder/edu_application.js

1289 lines
53 KiB
JavaScript
Raw Normal View History

2020-03-09 00:40:16 +08:00
document.write("<link href='https://at.alicdn.com/t/font_653600_qa9lwwv74z.css' rel='stylesheet' type='text/css'/>");
/*!
* JavaScript Cookie v2.2.0
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
!function(e) {
var n;
if ("function" == typeof define && define.amd && (define(e),
n = !0),
"object" == typeof exports && (module.exports = e(),
n = !0),
!n) {
var t = window.Cookies
, o = window.Cookies = e();
o.noConflict = function() {
return window.Cookies = t,
o
}
}
}(function() {
function e() {
for (var e = 0, n = {}; e < arguments.length; e++) {
var t = arguments[e];
for (var o in t)
n[o] = t[o]
}
return n
}
function n(e) {
return e.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent)
}
return function t(o) {
function r() {}
function i(n, t, i) {
if ("undefined" != typeof document) {
"number" == typeof (i = e({
path: "/"
}, r.defaults, i)).expires && (i.expires = new Date(1 * new Date + 864e5 * i.expires)),
i.expires = i.expires ? i.expires.toUTCString() : "";
try {
var c = JSON.stringify(t);
/^[\{\[]/.test(c) && (t = c)
} catch (e) {}
t = o.write ? o.write(t, n) : encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent),
n = encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\(\)]/g, escape);
var f = "";
for (var u in i)
i[u] && (f += "; " + u,
!0 !== i[u] && (f += "=" + i[u].split(";")[0]));
return document.cookie = n + "=" + t + f
}
}
function c(e, t) {
if ("undefined" != typeof document) {
for (var r = {}, i = document.cookie ? document.cookie.split("; ") : [], c = 0; c < i.length; c++) {
var f = i[c].split("=")
, u = f.slice(1).join("=");
t || '"' !== u.charAt(0) || (u = u.slice(1, -1));
try {
var a = n(f[0]);
if (u = (o.read || o)(u, a) || n(u),
t)
try {
u = JSON.parse(u)
} catch (e) {}
if (r[a] = u,
e === a)
break
} catch (e) {}
}
return e ? r[e] : r
}
}
return r.set = i,
r.get = function(e) {
return c(e, !1)
}
,
r.getJSON = function(e) {
return c(e, !0)
}
,
r.remove = function(n, t) {
i(n, "", e(t, {
expires: -1
}))
}
,
r.defaults = {},
r.withConverter = t,
r
}(function() {})
});
$(function() {
var result = location.search.match(/\?search=(\w*)&?/i)
if (result && result[1]) {
var searchText = result[1]
$('#search-input').val(searchText)
}
// 未报名用户登录时弹框
// console.log(Cookies.get('enroll_status'));
// if(Cookies.get('enroll_status') == 0){
// Cookies.remove('enroll_status');
// var html='<div class="CompetitionEnrollBox">'+
// '<div class="pr with40">'+
// '<img src="/images/educoder/competition/boxEnroll.png" width="100%"/>'+
// '<a href="javascript:void(0)" class="CloseBox" onclick="CloseBox();"><i class="iconfont icon-roundclose color-grey-c"></i></a>'+
// '<a href="https://www.educoder.net/competitions/gcc-dev-2018/enroll" class="ImmediatelyEnroll">立即报名</a>'+
// '</div></div>';
// $(".newContainer").append(html);
// }
});
function CloseBox() {
$(".CompetitionEnrollBox").remove();
}
//根据页面大小决定侧边栏的位置
$(window).resize(function() {
rightSlider();
});
function rightSlider() {
var poi = parseInt((parseInt($(window).width()) - 1200) / 2) - 81;
// console.log(parseInt($(window).width())+" "+poi);
if (poi > 0) {
$(".-task-sidebar").css("right", poi);
} else {
$(".-task-sidebar").css("right", "0px");
}
$(".-task-sidebar").show();
}
function open_course(id, allowVisit) {
if (allowVisit) {
window.open("/courses/" + id);
}
}
function open_project(id, allowVisit) {
if (allowVisit) {
window.open("/projects/" + id);
}
}
function conver_size(limit) {
var size = "";
if (limit < 1024) {
//如果小于1KB转化成B
size = limit.toFixed(2) + "B";
} else if (limit < 1024 * 1024) {
//如果小于1MB转化成KB
size = (limit / 1024).toFixed(2) + "KB";
} else if (limit < 1024 * 1024 * 1024) {
//如果小于1GB转化成MB
size = (limit / (1024 * 1024)).toFixed(2) + "MB";
} else {
//其他转化成GB
size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB";
}
var sizestr = size + "";
var len = sizestr.indexOf("\.");
var dec = sizestr.substr(len + 1, 2);
if (dec == "00") {
//当小数点后为00时 去掉小数部分
return sizestr.substring(0, len) + sizestr.substr(len + 3, 2);
}
return sizestr;
}
function _initSider() {
var $descSide = $("<div class='-task-desc'></div>").appendTo("body");
$(".-task-sidebar>div").hover(function() {
//移入显示二维码
if ($(this).hasClass("scan")) {
$(".scan_ewm").show().css({
right: "75px",
opacity: 0
}).stop().animate({
right: "45px",
opacity: 1
})
return;
}
var $tool = $(this).attr("tooltips");
$descSide.html($tool + "<div><img src='/images/edu_user/jt.png'></div>");
$descSide.data('_dom', this)
$descSide.show().css({
left: $(this).offset().left - $descSide.width() - 30,
opacity: 0,
top: $(this).offset().top
}).stop().animate({
left: $(this).offset().left - $descSide.width() - 5,
opacity: 1
}, 400);
}, function() {
if ($(this).hasClass("scan")) {
$(".scan_ewm").stop().animate({
right: "75px",
opacity: 0
}, 200).hide();
}
$descSide.stop().animate({
left: $(this).offset().left - $descSide.width() - 30,
opacity: 0
}, 200).hide();
});
rightSlider();
$(window).scroll(function() {
if ($descSide.height()) {
var hoverIcon = $descSide.data('_dom')
$descSide.css('top', $(hoverIcon).offset().top)
}
})
}
$(function() {
// loadHeader();
_initSider();
$(window).scroll(function() {
if ($(".gotop").length > 0) {
if ($(document).scrollTop() > 0) {
$(".-task-sidebar .gotop").show();
$(".gotop").click(function() {
$("html,body").scrollTop(0);
});
}
if ($(document).scrollTop() == 0) {
$(".-task-sidebar .gotop").hide();
}
}
});
// 翻页的GO
$(".page_GO").live("keydown", function(event) {
var code;
if (!event) {
event = window.event;
//针对ie浏览器
code = event.keyCode;
} else {
code = event.keyCode;
}
if (code == 13) {
var prev = $(this).prev().find("a").html().trim();
var page = $(this).val().trim();
if (parseInt(prev) >= parseInt(page)) {
if (typeof ($(this).prev().children("a").attr("href")) == "undefined") {
var href = $(this).parent().find("li:first-child").children("a").attr("href");
} else {
var href = $(this).prev().children("a").attr("href");
}
var new_href = href.replace(/page=(\d*)/, 'page=' + page);
console.log(new_href);
$.get(new_href);
return false;
}
}
});
// 试用申请弹框
$("#apply_trail_submit_btn").live('click', function() {
if ($("#apply_reason").val().trim() == "") {
$("#hint_message").show();
} else {
$("#hint_message").hide();
$("#apply_trail_form").submit();
hideModal();
}
});
});
// editor 存在了jquery对象上应用不需要自己写md_rec_data方法了
function md_rec_data(k, mdu, id) {
if (window.sessionStorage.getItem(k + mdu) !== null) {
editor = $("#e_tips_" + id).data('editor');
editor.setValue(window.sessionStorage.getItem(k + mdu));
md_clear_data(k, mdu, id);
}
}
// markdown的自动保存
function md_elocalStorage(editor, mdu, id) {
if (window.sessionStorage) {
var oc = window.sessionStorage.getItem('content' + mdu);
if (oc !== null) {
$("#e_tips_" + id).data('editor', editor);
var h = '您上次有已保存的数据,是否<a style="cursor: pointer;" class="link-color-blue" onclick="md_rec_data(\'content\',\'' + mdu + '\',\'' + id + '\')">恢复</a> ? / <a style="cursor: pointer;" class="link-color-blue" onclick="md_clear_data(\'content\',\'' + mdu + '\',\'' + id + '\')">不恢复</a>';
$("#e_tips_" + id).html(h);
}
setInterval(function() {
d = new Date();
var h = d.getHours();
var m = d.getMinutes();
var s = d.getSeconds();
h = h < 10 ? '0' + h : h;
m = m < 10 ? '0' + m : m;
s = s < 10 ? '0' + s : s;
if (editor.getValue().trim() != "") {
md_add_data("content", mdu, editor.getValue());
var id1 = "#e_tip_" + id;
var id2 = "#e_tips_" + id;
$(id1).html(" 数据已于 " + h + ':' + m + ':' + s + " 保存 ");
$(id2).html("");
}
}, 10000);
} else {
$("#e_tip_" + id).after('您的浏览器不支持localStorage.无法开启自动保存草稿服务,请升级浏览器!');
}
}
// 保存数据
function md_add_data(k, mdu, d) {
window.sessionStorage.setItem(k + mdu, d);
}
// 恢复数据
//function md_rec_data(k,mdu,id, editor){
// if(window.sessionStorage.getItem(k+mdu) !== null){
// editor.setValue(window.sessionStorage.getItem(k+mdu));
// md_clear_data(k,mdu,id);
// }
//}
// 清空保存的数据
function md_clear_data(k, mdu, id) {
window.sessionStorage.removeItem(k + mdu);
var id1 = "#e_tip_" + id;
var id2 = "#e_tips_" + id;
if (k == 'content') {
$(id2).html("");
} else {
$(id1).html("");
}
}
// editorMD to create
/**
*
* @param id 渲染DOM的id
* @param width 宽度
* @param high 高度
* @param placeholder
* @param imageUrl 上传图片的url
* @returns {*} 返回一个editorMD实例
*/
function create_editorMD(id, width, high, placeholder, imageUrl, readonly) {
var readonly = readonly == undefined ? false : readonly;
var editorName = editormd(id, {
width: width,
height: high,
syncScrolling: "single",
//你的lib目录的路径我这边用JSP做测试的
path: "/editormd/lib/",
tex: true,
tocm: true,
emoji: true,
taskList: true,
codeFold: true,
searchReplace: true,
htmlDecode: "style,script,iframe",
sequenceDiagram: true,
autoFocus: false,
readonly: readonly,
toolbarIcons: function() {
// Or return editormd.toolbarModes[name]; // full, simple, mini
// Using "||" set icons align right.
return ["bold", "italic", "|", "list-ul", "list-ol", "|", "code", "code-block", "|", "testIcon", "testIcon1", '|', "image", "table", '|', "watch", "clear"]
},
toolbarCustomIcons: {
testIcon: "<a type=\"inline\" class=\"latex\" ><div class='zbg'></div></a>",
testIcon1: "<a type=\"latex\" class=\"latex\" ><div class='zbg_latex'></div></a>"
},
//这个配置在simple.html中并没有但是为了能够提交表单使用这个配置可以让构造出来的HTML代码直接在第二个隐藏的textarea域中方便post提交表单。
saveHTMLToTextarea: true,
// 用于增加自定义工具栏的功能可以直接插入HTML标签不使用默认的元素创建图标
dialogMaskOpacity: 0.6,
placeholder: placeholder,
imageUpload: true,
imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"],
imageUploadURL: imageUrl,
//url
onload: function(cMirror) {
$("#" + id + " [type=\"latex\"]").bind("click", function() {
editorName.cm.replaceSelection("```latex");
editorName.cm.replaceSelection("\n");
editorName.cm.replaceSelection("\n");
editorName.cm.replaceSelection("```");
var __Cursor = editorName.cm.getDoc().getCursor();
editorName.cm.setCursor(__Cursor.line - 1, 0);
});
$("#" + id + " [type=\"inline\"]").bind("click", function() {
editorName.cm.replaceSelection("$$$$");
var __Cursor = editorName.cm.getDoc().getCursor();
editorName.cm.setCursor(__Cursor.line, __Cursor.ch - 2);
editorName.cm.focus();
});
$("[type=\"inline\"]").attr("title", "行内公式");
$("[type=\"latex\"]").attr("title", "多行公式");
setTimeout(function() {
editorName.resize();
editorName.cm.refresh();
window.new_md = editorName;
}, 300);
}
});
return editorName;
}
// editormd to html
/**
*
* @param id 渲染的id
* @param callback onload回調 暫時未用
*/
function editormd_to_html(id, callback) {
editormd.loadKaTeX(function() {
editormd.markdownToHTML(id, {
htmlDecode: "style,script,iframe",
// you can filter tags decode
onload: function() {
callback && callback()
},
taskList: true,
tex: true,
// 默认不解析
flowChart: true,
// 默认不解析
sequenceDiagram: true// 默认不解析
});
});
}
function loadHeader() {
// //头部导航条的----------显示搜索框
// $("#search-open").on("click", function(e) {
// $(this).hide();
// // $("#header-nav").animate({opacity:"0"},1000);
// $(".posi-search").show()
// // .animate({opacity:"1"},1000);
// $("#header-nav").css("z-index", "2");
// $(".posi-search").css("z-index", "3");
// // $(".search-input").val(""); // 不清空
// $(".search-input").focus();
// $(".search-all .search-content").hide();
// e.stopPropagation();
// //阻止冒泡
// });
// $(".search-input").on("click", function(e) {
// e.stopPropagation();
// //阻止冒泡
// });
// //搜索框输入内容
// $(".search-input").on("input", function(e) {
// if ($(".search-input").val() == "") {
// $(".search-all .search-content").hide();
// } else {
// $(".search-all .search-content").show();
// }
// e.stopPropagation();
// //阻止冒泡
// });
// //搜索
// $("#header_keyword_search").on("click", header_search);
// $("input[name='search_keyword']").on("keydown", function(event) {
// var code;
// if (!event) {
// event = window.event;
// //针对ie浏览器
// code = event.keyCode;
// } else {
// code = event.keyCode;
// }
// if (code == 13) {
// header_search();
// return false;
// }
// });
// $(".search-clear").click(function(e) {
// e.stopPropagation();
// });
// //切换搜索条件
// $("#searchkey li").click(function(e) {
// var key = $($(this).children("a")[0]).html();
// switch (key) {
// case '实训':
// $("#search_type").val('1');
// break;
// case '课堂':
// $("#search_type").val('2');
// break;
// case '用户':
// $("#search_type").val('3');
// break;
// }
// $("#searchkey").siblings(".searchkey").html(key);
// // $("#searchkey").hide();
// e.stopPropagation();
// //阻止冒泡
// });
// //切换选择导航条
// $("#header-nav li").click(function() {
// $("#header-nav li").removeClass("active");
// $(this).addClass("active");
// });
// //点击页面其它(与搜索框无关的地方)都会将搜索框隐藏,所以与搜索框有关的地方需要阻止冒泡
// $("body").on("click", function() {
// closeSearch();
// });
//
// $(".search_history").on("click", function() {
// $("input[name='search_keyword']").val($(this).html());
// header_search();
// });
}
function header_search() {
var keyword = $("input[name='search_keyword']").val();
// 搜索关键字
var index = $("#search_type").val();
// 搜索课程/项目
keyword = encodeURIComponent(keyword);
// $.get('/users/search_shixuns_or_course',
// { search: keyword,
// index: index});
window.location.href = "/users/search_shixuns_or_courses" + "?search=" + keyword + "&index=" + index;
//e.stopPropagation();//阻止冒泡
}
//头部导航条的隐藏
function closeSearch() {
$('#posi-search').hide();
$("#search-open").show();
// $(".posi-search").animate({opacity:"0"},800);
$("#header-nav").animate({
opacity: "1"
}, 1000);
$(".posi-search").css("z-index", "2");
$("#header-nav").css("z-index", "3");
}
(function($) {
$.fn.drag = function(options) {
var x, drag = this, isMove = false, defaults = {};
var options = $.extend(defaults, options);
//添加背景,文字,滑块
var html = '<div class="drag_bg"></div>' + '<div class="drag_text" onselectstart="return false;" unselectable="on">请拖住滑块,拖动到最右边</div>' + '<div class="handler handler_bg"></div>';
this.append(html);
var handler = drag.find('.handler');
var drag_bg = drag.find('.drag_bg');
var text = drag.find('.drag_text');
var maxWidth = text.width() - handler.width();
//能滑动的最大间距
//鼠标按下时候的x轴的位置
handler.mousedown(function(e) {
isMove = true;
x = e.pageX - parseInt(handler.css('left'), 10);
});
//鼠标指针在上下文移动时移动距离大于0小于最大间距滑块x轴位置等于鼠标移动距离
$(document).mousemove(function(e) {
var _x = e.pageX - x;
var handler_offset = handler.offset();
var lastX = e.clientX - x;
lastX = Math.max(0, Math.min(maxWidth, lastX));
if (isMove) {
if (_x > 0 && _x <= maxWidth) {
handler.css({
'left': lastX
});
drag_bg.css({
'width': lastX
});
} else if (lastX > maxWidth - 5 && lastX < maxWidth + 5) {
//鼠标指针移动距离达到最大时清空事件
dragOk();
}
}
});
handler.mouseup(function(e) {
isMove = false;
var _x = e.pageX - x;
if (_x < maxWidth) {
//鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
handler.css({
'left': 0
});
drag_bg.css({
'width': 0
});
}
});
//清空事件
function dragOk() {
var kuaiwidth = drag.width() - handler.width();
handler.removeClass('handler_bg').addClass('handler_ok_bg');
handler.css({
'left': kuaiwidth + 'px'
})
text.css({
'width': kuaiwidth + 'px'
});
text.text('验证通过');
drag.css({
'color': '#fff'
});
drag_bg.css({
'width': kuaiwidth + 'px'
})
handler.unbind('mousedown');
$(document).unbind('mousemove');
$(document).unbind('mouseup');
handler.parent().next().find("p").html("").hide();
}
}
;
}
)(jQuery);
//判断是手机端还是电脑端
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}
//Dom绑定事件的节点对象ChangeDOM操作的相关节点
function LeaveTitle(Dom, ChangeDom) {
ChangeDom.html("").hide();
ChangeDom.parent().css({
opacity: 0,
left: 0,
top: 0
}).hide();
}
$(function() {
//平台tip的样式优化js
var $desc = $("<div class=\"-task-title\">" + "<div class=\"data-tip-down\"></div>" + "<div class=\"data-tip-left\"></div>" + "<div class=\"data-tip-right\"></div>" + "<div class=\"data-tip-top\"></div>" + "</div>").appendTo("body");
//Dom绑定事件的节点对象ChangeDOM操作的相关节点
function LeaveTitle(Dom, ChangeDom) {
Dom.live("mouseleave", function() {
ChangeDom.html("").hide();
$desc.css({
opacity: 0,
left: 0,
top: 0
}).hide();
})
}
LeaveTitle($("[data-tip-top]"), $(".data-tip-top"));
LeaveTitle($("[data-tip-down]"), $(".data-tip-down"));
LeaveTitle($("[data-tip-right]"), $(".data-tip-left"));
LeaveTitle($("[data-tip-left]"), $(".data-tip-right"));
$("[data-tip-top]").live("mouseenter", function() {
var $tool = $(this).attr("data-tip-top");
if ($tool != "") {
$(".data-tip-top").show().html($tool);
$desc.show().css({
left: $(this).offset().left - ($desc.width() - $(this).outerWidth()) / 2,
opacity: 1,
top: $(this).offset().top - 30
});
}
});
$("[data-tip-down]").live("mouseenter", function() {
var $tool = $(this).attr("data-tip-down");
if ($tool != "") {
$(".data-tip-down").show().html($tool);
$desc.show().css({
left: $(this).offset().left - ($desc.width() - $(this).outerWidth()) / 2,
opacity: 1,
top: $(this).offset().top + $(this).height() + 6
});
}
});
$("[data-tip-right]").live("mouseenter", function() {
var $tool = $(this).attr("data-tip-right");
if ($tool != "") {
console.log($(this).offset().left + " " + $(this).width());
$(".data-tip-left").show().html($tool);
$desc.show().css({
left: $(this).offset().left + $(this).outerWidth() + 6,
opacity: 1,
top: $(this).offset().top - ($desc.height() - $(this).height()) / 2
});
}
});
$("[data-tip-left]").live("mouseenter", function() {
var $tool = $(this).attr("data-tip-left");
if ($tool != "") {
$(".data-tip-right").show().html($tool);
$desc.show().css({
left: $(this).offset().left - $desc.width() - 6,
opacity: 1,
top: $(this).offset().top - ($desc.height() - $(this).height()) / 2
});
}
});
unitDownOption();
});
function unitDownOption() {
//下拉框
$("[select-for]").append("<i class='fa fa-sort-desc lesson_img color-grey-8'></i>");
$("[select-for]").hover(function() {
$(this).find(".down-select").show();
}, function() {
$(this).find(".down-select").hide();
})
$("[select-for] .down-select p").bind("click", function() {
//alert($(this).attr("data-shixun-value"));
if ($(this).attr("id") == "diy_script") {
return;
// 实训新建-选择自定义脚本diy
}
$(this).parents(".down-select").siblings("input[type=hidden]").attr("value", $(this).attr("data-shixun-value"));
$(this).parents(".down-select").siblings("input[type=text]").val($(this).html().trim());
$(this).parents(".down-select").hide();
})
}
//初始化省份
function showprovince(id) {
var arrary = ["北京", "上海", "广东", "江苏", "浙江", "重庆", "安徽", "福建", "甘肃", "广西", "贵州", "海南", "河北", "黑龙江", "河南", "湖北", "湖南", "江西", "吉林", "辽宁", "内蒙古", "宁夏", "青海", "山东", "山西", "陕西", "四川", "天津", "新疆", "西藏", "云南", "香港特别行政区", "澳门特别行政区", "台湾", "海外"];
var html = "<option value=\"0\">请选择所在省份</option>"
for (var i = 0; i < arrary.length; i++) {
var item = arrary[i];
html += "<option value=\"" + item + "\">" + item + "</option>";
}
$("#" + id).html(html);
}
//省市下拉框
function showcity(province, cityField) {
switch (province) {
case "北京":
var cityOptions = new Array("东城","西城","朝阳","丰台","石景山","海淀","门头沟","房山","通州","顺义","昌平","大兴","平谷","怀柔","密云","延庆");
break;
case "上海":
var cityOptions = new Array("崇明","黄浦","卢湾","徐汇","长宁","静安","普陀","闸北","虹口","杨浦","闵行","宝山","嘉定","浦东","金山","松江","青浦","南汇","奉贤");
break;
case "广东":
var cityOptions = new Array("广州","深圳","珠海","东莞","中山","佛山","惠州","河源","潮州","江门","揭阳","茂名","梅州","清远","汕头","汕尾","韶关","顺德","阳江","云浮","湛江","肇庆");
break;
case "江苏":
var cityOptions = new Array("南京","常熟","常州","海门","淮安","江都","江阴","昆山","连云港","南通","启东","沭阳","宿迁","苏州","太仓","泰州","同里","无锡","徐州","盐城","扬州","宜兴","仪征","张家港","镇江","周庄");
break;
case "重庆":
var cityOptions = new Array("万州","涪陵","渝中","大渡口","江北","沙坪坝","九龙坡","南岸","北碚","万盛","双挢","渝北","巴南","黔江","长寿","綦江","潼南","铜梁","大足","荣昌","壁山","梁平","城口","丰都","垫江","武隆","忠县","开县","云阳","奉节","巫山","巫溪","石柱","秀山","酉阳","彭水","江津","合川","永川","南川");
break;
case "安徽":
var cityOptions = new Array("合肥","安庆","蚌埠","亳州","巢湖","滁州","阜阳","贵池","淮北","淮化","淮南","黄山","九华山","六安","马鞍山","宿州","铜陵","屯溪","芜湖","宣城");
break;
case "福建":
var cityOptions = new Array("福州","厦门","泉州","漳州","龙岩","南平","宁德","莆田","三明");
break;
case "甘肃":
var cityOptions = new Array("兰州","白银","定西","敦煌","甘南","金昌","酒泉","临夏","平凉","天水","武都","武威","西峰","张掖");
break;
case "广西":
var cityOptions = new Array("南宁","百色","北海","桂林","防城港","贵港","河池","贺州","柳州","钦州","梧州","玉林");
break;
case "贵州":
var cityOptions = new Array("贵阳","安顺","毕节","都匀","凯里","六盘水","铜仁","兴义","玉屏","遵义");
break;
case "海南":
var cityOptions = new Array("海口","儋县","陵水","琼海","三亚","通什","万宁");
break;
case "河北":
var cityOptions = new Array("石家庄","保定","北戴河","沧州","承德","丰润","邯郸","衡水","廊坊","南戴河","秦皇岛","唐山","新城","邢台","张家口");
break;
case "黑龙江":
var cityOptions = new Array("哈尔滨","北安","大庆","大兴安岭","鹤岗","黑河","佳木斯","鸡西","牡丹江","齐齐哈尔","七台河","双鸭山","绥化","伊春");
break;
case "河南":
var cityOptions = new Array("郑州","安阳","鹤壁","潢川","焦作","济源","开封","漯河","洛阳","南阳","平顶山","濮阳","三门峡","商丘","新乡","信阳","许昌","周口","驻马店");
break;
case "香港":
var cityOptions = new Array("香港","九龙","新界");
break;
case "湖北":
var cityOptions = new Array("武汉","恩施","鄂州","黄冈","黄石","荆门","荆州","潜江","十堰","随州","武穴","仙桃","咸宁","襄阳","襄樊","孝感","宜昌");
break;
case "湖南":
var cityOptions = new Array("长沙","常德","郴州","衡阳","怀化","吉首","娄底","邵阳","湘潭","益阳","岳阳","永州","张家界","株洲");
break;
case "江西":
var cityOptions = new Array("南昌","抚州","赣州","吉安","景德镇","井冈山","九江","庐山","萍乡","上饶","新余","宜春","鹰潭");
break;
case "吉林":
var cityOptions = new Array("长春","吉林","白城","白山","珲春","辽源","梅河","四平","松原","通化","延吉");
break;
case "辽宁":
var cityOptions = new Array("沈阳","鞍山","本溪","朝阳","大连","丹东","抚顺","阜新","葫芦岛","锦州","辽阳","盘锦","铁岭","营口");
break;
case "澳门":
var cityOptions = new Array("澳门");
break;
case "内蒙古":
var cityOptions = new Array("呼和浩特","阿拉善盟","包头","赤峰","东胜","海拉尔","集宁","临河","通辽","乌海","乌兰浩特","锡林浩特");
break;
case "宁夏":
var cityOptions = new Array("银川","固源","石嘴山","吴忠");
break;
case "青海":
var cityOptions = new Array("西宁","德令哈","格尔木","共和","海东","海晏","玛沁","同仁","玉树");
break;
case "山东":
var cityOptions = new Array("济南","滨州","兖州","德州","东营","菏泽","济宁","莱芜","聊城","临沂","蓬莱","青岛","曲阜","日照","泰安","潍坊","威海","烟台","枣庄","淄博");
break;
case "山西":
var cityOptions = new Array("太原","长治","大同","候马","晋城","离石","临汾","宁武","朔州","忻州","阳泉","榆次","运城");
break;
case "陕西":
var cityOptions = new Array("西安","安康","宝鸡","汉中","渭南","商州","绥德","铜川","咸阳","延安","榆林");
break;
case "四川":
var cityOptions = new Array("成都","巴中","达川","德阳","都江堰","峨眉山","涪陵","广安","广元","九寨沟","康定","乐山","泸州","马尔康","绵阳","眉山","南充","内江","攀枝花","遂宁","汶川","西昌","雅安","宜宾","自贡","资阳");
break;
case "台湾":
var cityOptions = new Array("台北","基隆","台南","台中","高雄","屏东","南投","云林","新竹","彰化","苗栗","嘉义","花莲","桃园","宜兰","台东","金门","马祖","澎湖");
break;
case "天津":
var cityOptions = new Array("天津","和平","东丽","河东","西青","河西","津南","南开","北辰","河北","武清","红挢","塘沽","汉沽","大港","宁河","静海","宝坻","蓟县");
break;
case "新疆":
var cityOptions = new Array("乌鲁木齐","阿克苏","阿勒泰","阿图什","博乐","昌吉","东山","哈密","和田","喀什","克拉玛依","库车","库尔勒","奎屯","石河子","塔城","吐鲁番","伊宁");
break;
case "西藏":
var cityOptions = new Array("拉萨","阿里","昌都","林芝","那曲","日喀则","山南");
break;
case "云南":
var cityOptions = new Array("昆明","大理","保山","楚雄","大理","东川","个旧","景洪","开远","临沧","丽江","六库","潞西","曲靖","思茅","文山","西双版纳","玉溪","中甸","昭通");
break;
case "浙江":
var cityOptions = new Array("杭州","安吉","慈溪","定海","奉化","海盐","黄岩","湖州","嘉兴","金华","临安","临海","丽水","宁波","瓯海","平湖","千岛湖","衢州","江山","瑞安","绍兴","嵊州","台州","温岭","温州","余姚","舟山");
break;
case "海外":
var cityOptions = new Array("美国","日本","英国","法国","德国","其他");
break;
default:
var cityOptions = new Array("请选择所在城市");
break;
}
cityField.options.length = 0;
for (var i = 0; i < cityOptions.length; i++) {
cityField.options[i] = new Option(cityOptions[i],cityOptions[i]);
/*
if (cityField.options[i].value==city)
{
//alert("here put City ok!");
document.oblogform["city"].selectedIndex = i;
}*/
}
}
/*弹框*/
// 公共弹框样式
// 建议左右栏的Width460Height190
// 建议宽屏对应值Width760Height500
function pop_box_new(value, Width, Height, close) {
if ($("#popupAll").length > 0) {
$("#popupAll").remove();
}
w = ($(window).width() - Width) / 2;
h = ($(window).height() - Height) / 2;
var html = "<div class=\"popupAll none\" id='popupAll'><div class=\"pr\"><div id=\"popupWrap\"></div></div></div>";
if (close) {
value = "<a href='javascript:void(0)' id='closeIcon'><i class='iconfont icon-shanchudiao'></i></a>" + value;
}
$(document.body).append(html);
$("#popupWrap").html(value);
$('#popupWrap').css({
"top": h + "px",
"left": w + "px",
"padding": "0",
"border": "none",
"position": "fixed",
"z-index": "99999",
"background-color": "#fff",
"border-radius": "10px"
});
if (close) {
$('#closeIcon').css({
"top": "-26px",
"left": Width + "px",
"z-index": "100000"
});
}
$("#popupWrap").parent().parent().show();
$('#popupAll').find("#closeIcon").click(function() {
$("#popupAll").hide();
});
$('#popupAll').find("a[class*='pop_close']").click(function() {
$("#popupAll").hide();
});
// w = ($(window).width() - Width)/2;
// h = ($(window).height() - Height)/2;
// $("#ajax-modal").html(value);
// showModal('ajax-modal', Width + 'px');
// $('#ajax-modal').siblings().remove();
// $('#ajax-modal').parent().css({"top": h+"px","left": w+"px","padding":"0","border":"none","position":"fixed"});
// $('#ajax-modal').parent().removeClass("resourceUploadPopup popbox_polls popbox");
// $('#ajax-modal').css({"padding":"0","overflow":"hidden"});
// $('#ajax-modal').parent().attr("id","popupWrap");
//拖拽
function Drag(id) {
this.div = document.getElementById(id);
if (this.div) {
this.div.style.cursor = "move";
this.div.style.position = "fixed";
}
this.disX = 0;
this.disY = 0;
var _this = this;
this.div.onmousedown = function(evt) {
_this.getDistance(evt);
document.onmousemove = function(evt) {
_this.setPosition(evt);
}
;
_this.div.onmouseup = function() {
_this.clearEvent();
}
}
}
Drag.prototype.getDistance = function(evt) {
var oEvent = evt || event;
this.disX = oEvent.clientX - this.div.offsetLeft;
this.disY = oEvent.clientY - this.div.offsetTop;
}
;
Drag.prototype.setPosition = function(evt) {
var oEvent = evt || event;
var l = oEvent.clientX - this.disX;
var t = oEvent.clientY - this.disY;
if (l <= 0) {
l = 0;
} else if (l >= document.documentElement.clientWidth - this.div.offsetWidth) {
l = document.documentElement.clientWidth - this.div.offsetWidth;
}
if (t <= 0) {
t = 0;
} else if (t >= document.documentElement.clientHeight - this.div.offsetHeight) {
t = document.documentElement.clientHeight - this.div.offsetHeight;
}
this.div.style.left = l + "px";
this.div.style.top = t + "px";
}
;
Drag.prototype.clearEvent = function() {
this.div.onmouseup = null;
document.onmousemove = null;
}
;
new Drag("popupWrap");
$("#popupAll input, #popupAll textarea, #popupAll select, #popupAll ul, #popupAll a,#shixun_search_form_div").mousedown(function(event) {
event.stopPropagation();
new Drag("popupWrap");
});
}
function hideModal(el) {
if ($("#popupAll").length > 0) {
$("#popupAll").remove();
} else {
var modal;
if (el) {
modal = $(el).parents('.ui-dialog-content');
} else {
modal = $('#ajax-modal');
}
modal.dialog("close");
}
}
//提示框:只有一个确定按钮,点击跳转
//<a href="'+ url +'" class="pop_close"><i class="fa fa-times-circle font-18 link-color-grey fr mt5"></i></a>
function notice_box_redirect(url, str) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix font-20">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16 mt15 mb15">' + str + '</p></div><div class="task-popup-sure clearfix">' + '<a href="' + url + '" class="task-btn task-btn-orange" onclick="hideModal();">确定</a></div></div>';
pop_box_new(htmlvalue, 480, 160);
}
//按钮内容自定义自定义按钮需要remote=true,且有取消按钮)
function notice_operation_box(url, str, btnstr) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-OK clearfix">' + '<a href="javascript:void(0);" onclick="hideModal();" class="task-btn mr20">取消</a><a href="' + url + '" class="task-btn task-btn-orange" onclick="hideModal();" target="_blank" remote="true">' + btnstr + '</a></div></div>';
pop_box_new(htmlvalue, 480, 160);
}
//点击删除时的确认弹框: 不走destroy方法
function delete_confirm_box(url, str) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="' + url + '" class="task-btn task-btn-orange fr" onclick="hideModal();" data-remote="true" id="task_popup_confirm">确定</a></div></div>';
pop_box_new(htmlvalue, 480, 160);
}
//点击删除时的确认弹框: 走destroy方法,remote为true
function delete_confirm_box_2(url, str) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><div class="task-popup-text-center font-14">' + str + '</div></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="' + url + '" class="task-btn task-btn-orange fr" onclick="hideModal();" data-method="delete" data-remote="true">确定</a></div></div>';
pop_box_new(htmlvalue, 480, 160);
}
// 点击确定的时候ajax请求两个按钮 点击确认跳转, 提示信息可以多行
function op_confirm_box_remote(url, str) {
var htmlvalue = '<div class="task-popup" style="width:578px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="' + url + '" class="task-btn task-btn-orange fr" onclick="hideModal();" data-remote="true">确定</a></div></div>';
pop_box_new(htmlvalue, 578, 205);
}
//点击删除时的确认弹框: post,remote为true
function post_confirm_box(url, str) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix"><h3 class="fl color-grey3">提示</h3><a href="javascript:void(0);" class="pop_close"><i class="fa fa-times-circle font-18 link-color-grey fr mt5"></i></a></div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="' + url + '" class="task-btn task-btn-orange fr pop_close" data-method="POST" data-remote="true">确定</a></div></div>';
pop_box_new(htmlvalue, 480, 160);
}
//提示框:只有一个确定按钮,点击关闭弹框
//<a href="javascript:void(0);" class="pop_close"><i class="fa fa-times-circle font-18 link-color-grey fr mt5"></i></a>
function notice_box(str) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-sure clearfix">' + '<a href="javascript:void(0);" class="task-btn task-btn-orange" onclick="hideModal();">确定</a></div></div>';
pop_box_new(htmlvalue, 480, 160);
}
//点击删除时的确认弹框: 走destroy方法
function delete_confirm_box_3(url, str) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="' + url + '" class="task-btn task-btn-orange fr" data-method="delete" onclick="hideModal();">确定</a></div></div>';
pop_box_new(htmlvalue, 480, 160);
}
//取消和确定,确定会调用自定义方法
function op_confirm_tip(str, func) {
var htmlvalue = '<div class="task-popup" style="width:500px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="javascript:void(0)" class="task-btn task-btn-orange fr" onclick="' + func + '();">确定</a></div></div>';
pop_box_new(htmlvalue, 500, 205);
}
//取消和确定,确定会调用自定义方法(带参数)
function op_confirm_tip_1(str, func) {
var htmlvalue = '<div class="task-popup" style="width:500px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="javascript:void(0)" class="task-btn task-btn-orange fr" onclick="' + func + '">确定</a></div></div>';
pop_box_new(htmlvalue, 500, 205);
}
function op_confirm_box_loading(url, str) {
var htmlvalue = '<div class="task-popup" style="width:578px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16 pt15">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="' + url + '" class="task-btn task-btn-orange fr" onclick="hideModal();$(\'.loading_all\').show();">确定</a></div></div>';
pop_box_new(htmlvalue, 578, 205);
}
// 两个按钮 点击确认跳转, 提示信息有两行
function s_op_confirm_box(url, str) {
var htmlvalue = '<div class="task-popup" style="width:480px;"><div class="task-popup-title clearfix">提示</div>' + '<div class="task-popup-content"><p class="task-popup-text-center font-16">' + str + '</p></div><div class="task-popup-submit clearfix"><a href="javascript:void(0);" onclick="hideModal();" class="task-btn fl">取消</a>' + '<a href="' + url + '" class="task-btn task-btn-orange fr" onclick="hideModal();">确定</a></div></div>';
pop_box_new(htmlvalue, 480, 205);
}
function suofang() {
var html = '<div><p class="mb20 font-16 edu-txt-center">可能会影响某些功能的正常使用</p><ul class="mb20 color-grey-6" style="width: 372px;margin:0px auto;">' + '<li>1.请尝试调整浏览器缩放比例为<span class="color-orange mr5">100%</span>快捷键ctrl+0</li>' + '<li>2.请尝试调整系统显示比例为<span class="color-orange mr5">100%</span>(控制面板/显示 设置)</li>' + '</ul></div>';
sure_confirm_box("页面缩放比例不正确", 600, 310, html);
}
//一个“知道了”按钮title和宽度都作为参数
function sure_confirm_box(title, width, height, str) {
var htmlvalue = '<div class="task-popup" style="width:' + width + 'px;"><div class="task-popup-title clearfix">' + title + '</div>' + '<div class="task-popup-content edu-txt-center">' + str + '</div><div class="mb30 edu-txt-center clearfix">' + '<a href="javascript:void(0)" class="task-btn task-btn-orange" onclick="hideModal();">知道了</a></div></div>';
pop_box_new(htmlvalue, width, height);
}
function throttle(method, context, e) {
clearTimeout(method.tId);
method.tId = setTimeout(function() {
method.call(context, e);
}, 500);
}
function apply_publish_shixun(url) {
if ($("#apply_publish_shixun").attr("data-option") == '1') {
$("#apply_publish_shixun").attr("data-option", 0);
$("#apply_publish_shixun").addClass("disabled-grey-bg");
$.ajax({
url: url,
type: 'get'
});
}
}
var autoTextarea = function(elem, extra, maxHeight) {
extra = extra || 0;
var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX'in window
, isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera')
, addEvent = function(type, callback) {
elem.addEventListener ? elem.addEventListener(type, callback, false) : elem.attachEvent('on' + type, callback);
}
, getStyle = elem.currentStyle ? function(name) {
var val = elem.currentStyle[name];
if (name === 'height' && val.search(/px/i) !== 1) {
var rect = elem.getBoundingClientRect();
return rect.bottom - rect.top - parseFloat(getStyle('paddingTop')) - parseFloat(getStyle('paddingBottom')) + 'px';
}
;
return val;
}
: function(name) {
return getComputedStyle(elem, null)[name];
}
, minHeight = parseFloat(getStyle('height'));
elem.style.resize = 'none';
var change = function() {
var scrollTop, height, padding = 0, style = elem.style;
if (elem._length === elem.value.length)
return;
elem._length = elem.value.length;
if (!isFirefox && !isOpera) {
padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
}
;scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
elem.style.height = minHeight + 'px';
if (elem.scrollHeight > minHeight) {
if (maxHeight && elem.scrollHeight > maxHeight) {
height = maxHeight - padding;
style.overflowY = 'auto';
} else {
height = elem.scrollHeight - padding + 10;
style.overflowY = 'hidden';
}
;style.height = height + extra + 'px';
scrollTop += parseInt(style.height) - elem.currHeight;
//document.body.scrollTop = scrollTop;
//document.documentElement.scrollTop = scrollTop;
elem.currHeight = parseInt(style.height);
}
;
};
addEvent('propertychange', change);
addEvent('input', change);
addEvent('focus', change);
change();
};
// 点击按钮复制功能
function jsCopy() {
var e = document.getElementById("copy_rep_content");
e.select();
document.execCommand("Copy");
}
// 使用resize事件监听窗口的zoom如果zoom变化了弹框提示初始化时也检查zoom是否是100%。
function _initZoomCheck() {
if (!IsPC()) {
// 手机端不需要提示
return;
}
var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
if (!isNormalZoom) {
suofang();
}
$(window).resize(function() {
var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
if (!isNormalZoom) {
suofang();
} else {
$('.task-btn.task-btn-orange:visible').click()
}
})
}
var win_resize = function() {
var _w = $(window).width() - 1200;
if (_w < 0) {
$('.newHeader>.educontent').width('auto')
} else {
$('.newHeader>.educontent').width('1200px')
}
};
function initWindowResize() {
if (location.pathname === '/login') {
// 登录页不需要
return;
}
$(function() {
setTimeout(function() {
win_resize();
}, 1000)
})
$(window).resize(function() {
win_resize()
})
}
initWindowResize();
// 登录刷新 https://stackoverflow.com/questions/28230845/communication-between-tabs-or-windows
if (window['BroadcastChannel']) {
var bc = new BroadcastChannel('ec_reload');
bc.onmessage = function(ev) {
if (window['ec_reload_msg_send_window']) {
window['ec_reload_msg_send_window'] = false;
} else {
location.reload();
}
}
}
function _sendReloadMsg() {
var bc = new BroadcastChannel('ec_reload');
window['ec_reload_msg_send_window'] = true;
// 消息发出的窗口,不需要处理该消息
bc.postMessage('ec_reload');
/* send */
}
// IE11 没有 startsWith
if (!String.prototype.startsWith) {
String.prototype.startsWith = function(searchString, position) {
position = position || 0;
return this.substr(position, searchString.length) === searchString;
}
;
String.prototype.endsWith = function(search, this_len) {
if (this_len === undefined || this_len > this.length) {
this_len = this.length;
}
return this.substring(this_len - search.length, this_len) === search;
}
;
}
function clickNewsubscript() {
$(".newsubscript").hide();
$(".newedbox").addClass("newminheight");
$(".newedbox").removeClass("newedboxheight");
}
/** tpm实训开启按钮不允许多次点击 START */
//点击模拟实战或者开启实战等,按钮变灰内容变成“开启中”
var operationItem = null;
var operationButtonOldValue = null;
function opClickString(item) {
var value = $(item).html();
$(item).css({
'background': 'gray',
'border': '1px solid grey',
'pointer-events': 'none'
});
$(item).html('开启中');
operationButtonOldValue = value
operationItem = item
// setTimeout(function(){ $(item).css('background', '#4CACFF');$(item).html(value); }, 4000)
}
//
// var isOperationSending = false;
$(document).bind('ajaxStop', function(event, xhr, settings) {
if (settings && settings.url && (settings.url.match(/operation\?/))) {
if (operationItem) {
$(operationItem).css('background', '#4CACFF').css('pointer-events', 'inherit');
$(operationItem).html(operationButtonOldValue);
}
}
});
$(document).bind('ajaxError', function(event, xhr, settings) {
if (settings && settings.url && (settings.url.match(/operation\?/))) {
if (operationItem) {
$(operationItem).css('background', '#4CACFF').css('pointer-events', 'inherit');
$(operationItem).html(operationButtonOldValue);
}
}
});
/** tpm实训开启按钮不允许多次点击 END */