forgeplus/public/javascripts/educoder/edu_application.js

1289 lines
53 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 */