gbreplayer.js
36.6 KB
$(function(){function e(t,a){for(var r=0;r<a.text.length;r++)"HTMLplayer"===t.getTextArea().id?(null!==p&&t.clearMarker(p),p=t.setMarker(a.from.line+r,'<span class="text-primary glyphicon glyphicon-pencil"></span>')):"CSSplayer"===t.getTextArea().id?(null!==g&&t.clearMarker(g),g=t.setMarker(a.from.line+r,'<span class="text-primary glyphicon glyphicon-pencil"></span>')):"JSplayer"===t.getTextArea().id&&(null!==u&&t.clearMarker(u),u=t.setMarker(a.from.line+r,'<span class="text-primary glyphicon glyphicon-pencil"></span>')),t.setCursor({line:a.from.line+r,ch:a.from.ch}),3===a.text.length&&""!==a.text[1]&&1===r?t.setSelection({line:a.from.line+r,ch:0}):3===a.text.length&&""!==a.text[2]&&2===r?t.setSelection({line:a.from.line+r,ch:0}):2===a.text.length&&""===a.text[r]&&1===r?t.setSelection({line:a.from.line+r,ch:0}):0==r?t.setSelection({line:a.from.line+r,ch:a.from.ch},{line:a.to.line+r,ch:a.to.ch}):t.setSelection({line:a.from.line+r,ch:0},{line:a.from.line+r,ch:0}),r!==a.text.length-1?t.replaceSelection(a.text[r]+"\n"):t.replaceSelection(a.text[r]);a.next&&e(t,a.next),c.autorun&&c.generateResult(c.htmlplayereditor.getValue(),c.cssplayereditor.getValue(),c.jsplayereditor.getValue())}function t(e){$.jStorage.set("gb_autosave_recording",e)}function a(){var e=$("#startRecordModal");if(e.length){var a=$.jStorage.get("gb_autosave_recording")||[];a.length&&(e.find(".modal-footer").append('<button id="continue_recording" class="btn btn-success"><span class="glyphicon glyphicon-exclamation-sign"></span> 继续录制</button>'),e.find("#startrecord_desc").html('<small class="text-primary"><i class="glyphicon glyphicon-exclamation-sign"></i> 发现尚未保存的代码录制,需继续录制请点击“继续录制”按钮</div>'))}$("#continue_recording").click(function(){var e=$.jStorage.get("gb_autosave_langid")||0;35!==e&&(10===e?($("#htmlbutton").data("languageid",10).html("JAVA").trigger("click"),c.htmleditor.setOption("mode","text/x-java"),c.htmlplayereditor.setOption("mode","text/x-java")):43===e?($("#htmlbutton").data("languageid",43).html("Objective-c").trigger("click"),c.htmleditor.setOption("mode","text/x-csrc"),c.htmlplayereditor.setOption("mode","text/x-csrc")):11===e?($("#htmlbutton").data("languageid",11).html("C").trigger("click"),c.htmleditor.setOption("mode","text/x-csrc"),c.htmlplayereditor.setOption("mode","text/x-csrc")):82===e?($("#htmlbutton").data("languageid",82).html("C++").trigger("click"),c.htmleditor.setOption("mode","text/x-c++src"),c.htmlplayereditor.setOption("mode","text/x-c++src")):29===e&&($("#htmlbutton").data("languageid",29).html("PHP").trigger("click"),c.htmleditor.setOption("mode","application/x-httpd-php"),c.htmlplayereditor.setOption("mode","application/x-httpd-php")),$("#fontendrun").addClass("hidden"),$("#comprunbtngrp").html('<button id="comprun" type="button" data-style="expand-right" class="btn btn-primary ladda-button" title="编译并运行代码"><span class="glyphicon glyphicon-cog"></span> 编译&运行</button>'),$("#ifrcontainer").addClass("hidden"),$("#cmprun-output").removeClass("hidden"),$("#frontenttools").remove(),$("#allbutton").remove(),$("#cssbutton").remove(),$("#jsbutton").remove(),c.autorun=0);var t=$.jStorage.get("gb_autosave_recording")||[];c.records=t,c.continue_recording=1,c.speed=8,$("#autorun").data("autorun")&&$("#autorun").trigger("click"),$("#gbloading").removeClass("hidden"),$("#startRecordModal").modal("hide"),$("#replay").trigger("click")}),$("#select_type_btn").click(function(){$.jStorage.deleteKey("gb_autosave_recording"),setInterval(function(){t(c.records)},5e3)})}function r(e){switch(e){case 10:$("#htmlbutton").data("languageid",10).html("JAVA").trigger("click");break;case 35:$("#htmlbutton").data("languageid",35).html("HTML/CSS/JS").trigger("click");break;case 43:$("#htmlbutton").data("languageid",43).html("Objective-C").trigger("click");break;case 11:$("#htmlbutton").data("languageid",11).html("C").trigger("click");break;case 82:$("#htmlbutton").data("languageid",82).html("C++").trigger("click");break;case 29:$("#htmlbutton").data("languageid",29).html("PHP").trigger("click");break;case 4:$("#htmlbutton").data("languageid",4).html("Python").trigger("click");break;case 40:$("#htmlbutton").data("languageid",40).html("SQL").trigger("click");break;case 117:$("#htmlbutton").data("languageid",117).html("R").trigger("click")}}var i=getQuery("languageid"),o=getQuery("userId"),l=getQuery("role"),n=getQuery("codeReplayId");getQuery("studentReplayId"),getQuery("chapterId");_source=getQuery("source");var s=$(".recording-time"),d=1;1==l?($(".audio-wrap").hide(),$(".audio-title").hide(),$("#savecorde").show(),$("#upload").hide()):0==l&&$("#upload").show();var c={records:[],excercise_records:[],autorun:1,triggertotal:0,triggeroffset:0,excercise_triggertotal:0,replay_enhancement:1,replay_enhancement_value:250,speed:1,recordtimeoutcontrolls:[],excercise_recordtimeoutcontrolls:[],isgblibreplay:0,continue_recording:0,recording_status:1,recordinit:function(e,t){function a(e){$.ajax({type:"get",url:e,success:function(e){var t=parseInt(e.languageid);r(t),s(t)},error:function(){alert("错误")}})}function s(e){"empty"!==e&&0!=e&&35!=e&&($("#fontendrun").addClass("hidden"),$("#comprunbtngrp").html('<button id="comprun" type="button" data-style="expand-right" class="btn" title="编译并运行代码"> 编译&运行</button>'),$("#ifrcontainer").addClass("hidden"),$("#cmprun-output").removeClass("hidden"),$("#frontenttools").remove(),$("#allbutton").remove(),$("#cssbutton").remove(),$("#jsbutton").remove(),c.autorun=0)}function p(e){$.ajax({type:"get",url:e,success:function(e){if($("#play_audio").attr("src","http://gxb-file.oss-cn-beijing.aliyuncs.com/"+e.audioUrl),0==l)var e=e.codeRecordList;else if(1==l)var e=e.studentRecordList;c.htmlplayereditor.setValue(""),c.cssplayereditor.setValue(""),c.jsplayereditor.setValue("");for(var t=0;t<e.length;t++)e[t].trigger||(e[t].trigger=0),e[t].changeobj=jQuery.parseJSON(e[t].changeobj);c.records=e,$("#playrecord").hide(),$("#play").show(),$("#play").trigger("click")},error:function(){alert("请求错误")}})}function g(){$(window).width()>992&&($("#editorpanel").hasClass("col-md-8")?($("#playcontrolls").children("button").clone(!0).removeClass("hidden").appendTo($("#editorcontrolls")),$("#playcontrolls").find("button").remove()):($("#editorcontrolls").children("button").clone(!0).removeClass("hidden").appendTo($("#playcontrolls")),$("#editorcontrolls").find("button").remove()),$("#playrecord").hasClass("hidden")?($("#playcontrolls").children("button").removeClass("hidden"),$("#editorcontrolls").children("button").removeClass("hidden")):($("#playcontrolls").children("button").addClass("hidden"),$("#editorcontrolls").children("button").addClass("hidden")))}var u=document.getElementById("HTMLeditor"),h=document.getElementById("CSSeditor"),m=document.getElementById("JSeditor");if(e&&(c.isgblibreplay=1),u&&h&&m){this.htmleditor=CodeMirror.fromTextArea(u,{value:"输入HTML代码",mode:"text/html",lineNumbers:!0,smartIndent:!1,onChange:function(e,t){c.recording_status&&c.onChange("html",t),c.autorun&&c.generateResult(c.htmleditor.getValue(),c.csseditor.getValue(),c.jseditor.getValue())},onFocus:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var a=e.getCursor(!1),r=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");r.val(a.line),i.val(a.ch),o.val(a.line+","+a.ch)},onCursorActivity:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var a=e.getCursor(!1),r=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");r.val(a.line),i.val(a.ch),o.val(a.line+","+a.ch)}}),this.csseditor=CodeMirror.fromTextArea(h,{value:"输入CSS代码",mode:"text/css",lineNumbers:!0,smartIndent:!1,onChange:function(e,t){c.recording_status&&c.onChange("css",t),c.autorun&&c.generateResult(c.htmleditor.getValue(),c.csseditor.getValue(),c.jseditor.getValue())},onFocus:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var a=e.getCursor(!1),r=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");r.val(a.line),i.val(a.ch),o.val(a.line+","+a.ch)},onCursorActivity:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var a=e.getCursor(!1),r=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");r.val(a.line),i.val(a.ch),o.val(a.line+","+a.ch)}}),this.jseditor=CodeMirror.fromTextArea(m,{value:"输入Javascript代码",mode:"text/javascript",lineNumbers:!0,smartIndent:!1,matchBrackets:!0,onChange:function(e,t){c.recording_status&&c.onChange("js",t),c.autorun&&c.generateResult(c.htmleditor.getValue(),c.csseditor.getValue(),c.jseditor.getValue())},onFocus:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var a=e.getCursor(!1),r=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");r.val(a.line),i.val(a.ch),o.val(a.line+","+a.ch)},onCursorActivity:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var a=e.getCursor(!1),r=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");r.val(a.line),i.val(a.ch),o.val(a.line+","+a.ch)}});var y=$("#htmlbutton").data("languageid");10===y?this.htmleditor.setOption("mode","text/x-java"):43===y?this.htmleditor.setOption("mode","text/x-csrc"):11===y?this.htmleditor.setOption("mode","text/x-csrc"):82===y?this.htmleditor.setOption("mode","text/x-c++src"):29===y&&this.htmleditor.setOption("mode","application/x-httpd-php"),y>0&&(c.autorun=0)}var f=document.getElementById("HTMLplayer"),v=document.getElementById("CSSplayer"),b=document.getElementById("JSplayer"),C=1;if(f&&v&&b){this.htmlplayereditor=CodeMirror.fromTextArea(f,{mode:"text/html",lineNumbers:!0,readOnly:!0,onChange:function(e,t){0===$("#play").data("status")&&c.autorun&&c.generateResult(c.htmlplayereditor.getValue(),c.cssplayereditor.getValue(),c.jsplayereditor.getValue())},onKeyEvent:function(e,t){var a=$("#recordertab").find("li").not(".clearfix");C&&"keypress"===t.type&&c.htmlplayereditor.getOption("readOnly")&&(a.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-exclamation-sign"></span> 播放编辑器只读,无法输入字符</div>'}).popover("show"),C=0,setTimeout(function(){a.popover("destroy"),C=1},1500))}}),this.cssplayereditor=CodeMirror.fromTextArea(v,{mode:"text/css",lineNumbers:!0,readOnly:!0,theme:"default gbtags",onChange:function(e,t){0===$("#play").data("status")&&c.autorun&&c.generateResult(c.htmlplayereditor.getValue(),c.cssplayereditor.getValue(),c.jsplayereditor.getValue())},onKeyEvent:function(e,t){var a=$("#recordertab").find("li").not(".clearfix");C&&"keypress"===t.type&&c.htmlplayereditor.getOption("readOnly")&&(a.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-exclamation-sign"></span> 播放编辑器只读,无法输入字符</div>'}).popover("show"),C=0,setTimeout(function(){a.popover("destroy"),C=1},1500))}}),this.jsplayereditor=CodeMirror.fromTextArea(b,{mode:"text/javascript",lineNumbers:!0,readOnly:!0,matchBrackets:!0,theme:"default gbtags-dark",onChange:function(e,t){0===$("#play").data("status")&&c.autorun&&c.generateResult(c.htmlplayereditor.getValue(),c.cssplayereditor.getValue(),c.jsplayereditor.getValue())},onKeyEvent:function(e,t){var a=$("#recordertab").find("li").not(".clearfix");C&&"keypress"===t.type&&c.htmlplayereditor.getOption("readOnly")&&(a.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-exclamation-sign"></span> 播放编辑器只读,无法输入字符</div>'}).popover("show"),C=0,setTimeout(function(){a.popover("destroy"),C=1},1500))}});var y=$("#htmlbutton").data("languageid");10===y?this.htmlplayereditor.setOption("mode","text/x-java"):43===y?this.htmlplayereditor.setOption("mode","text/x-csrc"):11===y?this.htmlplayereditor.setOption("mode","text/x-csrc"):82===y?this.htmlplayereditor.setOption("mode","text/x-c++src"):29===y&&this.htmlplayereditor.setOption("mode","application/x-httpd-php"),y>0&&(c.autorun=0)}$("#selecttype").find("button").click(function(){$(this).addClass("btn-primary").data("selected",1).siblings().data("selected",0).removeClass("btn-primary")}),document.URL.indexOf("index.htm")>=0&&(35==i?$("#htmlbutton").data("languageid",35).attr("data-original-title","HTML/CSS/JS").html("HTML/CSS/JS").trigger("click"):10==i?($("#htmlbutton").data("languageid",10).html("java").trigger("click"),c.htmleditor.setOption("mode","text/x-java")):43==i?(c.htmleditor.setValue("/* Objective-c基础代码 */\n"),$("#htmlbutton").data("languageid",43).attr("data-original-title","Objective-c").html("Objective-c").trigger("click"),c.htmleditor.setOption("mode","text/x-csrc")):11==i?(c.htmleditor.setValue("/* c基础代码 */\n"),$("#htmlbutton").data("languageid",11).attr("data-original-title","C").html("C").trigger("click"),c.htmleditor.setOption("mode","text/x-csrc")):1==i||41==i||82==i?(c.htmleditor.setValue("/* cpp基础代码 */\n"),$("#htmlbutton").data("languageid",82).attr("data-original-title","C++").html("C++").trigger("click"),c.htmleditor.setOption("mode","text/x-c++src")):4==i?$("#htmlbutton").data("languageid",4).attr("data-original-title","Python").html("Python").trigger("click"):40==i?$("#htmlbutton").data("languageid",40).attr("data-original-title","SQL").html("SQL").trigger("click"):117==i&&$("#htmlbutton").data("languageid",117).attr("data-original-title","R").html("R").trigger("click"));var x=$("#htmlbutton").data("languageid");if($.jStorage.set("gb_autosave_langid",x),document.URL.indexOf("player.htm")>=0){if(0==l){var w=gxb_api+"/programming/codeReplay/"+n+"/api";a(w)}else if(1==l){var w=gxb_api+"/programming/student/studentReplay/"+n+"/api";a(w)}}else s(i);setTimeout(function(){$("#htmlbutton").trigger("click")},50),$("#play").click(function(){var e=$("#play_audio");$("#replaydone").data("readonly")||$("#replaydone").trigger("click"),$("#recordertab a:eq(1)").tab("show");var t=$(this).data("status");if(document.URL.indexOf("player.html")>=0&&(t?(c.pauseData=(new Date).getTime(),console.log(c.pauseData),e[0].pause(),$("#play").find("i").removeClass("icon-playcopy").addClass("icon-play").attr("data-original-title","播放")):(e[0].play(),$("#play").find("i").removeClass("icon-play").addClass("icon-playcopy").attr("data-original-title","暂停"))),t){for(var a=c.recordtimeoutcontrolls,r=0;r<a.length;r++)clearTimeout(a[r]);c.recordtimeouts=[],console.log(c)}else{for(var i=c.records,o="",l=i[0].intervaltime,r=0;r<i.length;r++){if(0===i[r].trigger){var n=null,s=i[r].intervaltime;c.replay_enhancement_value;0===r?(l=s,c.pauseData&&(1===d?(c.stopIntervalTime=i[0].intervaltime-(c.pauseData-c.playRecordStart),l=c.stopIntervalTime,console.log(l),d++):(c.stopIntervalTime=c.stopIntervalTime-(c.pauseData-c.playRecordStart),l=c.stopIntervalTime,console.log("------------------------------"),console.log(d),console.log(l),console.log("------------------------------")),console.log(l)),console.log(l)):(l=parseInt(l)+parseInt(s),c.pauseData&&c.pauseData-i[r-1].playTime>0&&(console.log("+++++++++++++++++++++++++++++++++++++++"),c.stopIntervalTime=c.pauseData-i[r-1].playTime,l=c.stopIntervalTime+parseInt(s),console.log(l)),console.log(l)),n=setTimeout(c.changeValueCallback(i[r]),l/c.speed),c.recordtimeoutcontrolls.push(n)}o=i[r].editor}c.playRecordStart=(new Date).getTime(),console.log(c.playRecordStart)}$(this).data("status",!t)}),$("#startRecordModal").length>0&&$("#startRecordModal").modal({backdrop:"static",keyboard:!1}),$(".audio-play").click(function(){$(this).attr("data");0==l&&($(".audio-play").attr("disabled",!0),recorder.play(audio)),$(this).attr("data",0).attr("data-original-title","播放录音");var e=$("#play"),t=c.records;c.triggertotal=0;for(var a=0;a<t.length;a++)t[a].trigger=0;for(var a=0;a<c.recordtimeoutcontrolls.length;a++)clearTimeout(c.recordtimeoutcontrolls[a]);c.recordtimeoutcontrolls=[],c.htmlplayereditor.setValue(""),c.cssplayereditor.setValue(""),c.jsplayereditor.setValue(""),e.data("status",0),$("#play").trigger("click")}),$("#selectedspeed").text("x"+c.speed).data("speed",c.speed),$(".speed").click(function(){var e=$(this),t=e.data("speed");e.addClass("btn-primary").siblings().removeClass("btn-primary"),c.speed=t,1==$("#play").data("status")&&$("#play").trigger("click")}),$("#preparespeed").click(function(){1==$("#play").data("status")&&$("#play").trigger("click")}),$("#speedlist a").click(function(e){e.preventDefault();var t=$(this).data("speed");$("#selectedspeed").text("x"+t).data("speed",t),c.speed=t,$("#playrecord").hasClass("hidden")&&0==$("#play").data("status")&&$("#play").trigger("click"),$.cookie("gb.replay.speed",t,{expires:30,path:"/"})}),$("#playrecord").click(function(){if($(window).width()>992){var e=$("#tutorialinfopanel"),t=($("#editorpanel"),e.data("size"));t?($("#resizetutorial").trigger("click"),$("#resizeeditors").trigger("click")):t||$("#resizeeditors").trigger("click")}if(k.slider("option","disabled",!1),$(this).popover("destroy"),$(this).find("span").toggleClass("glyphicon-cloud-download").toggleClass("glyphicon-play"),0==l){var a=gxb_api+"/programming/codeReplay/"+n+"/api";p(a)}else if(1==l){var a=gxb_api+"/programming/student/studentReplay/"+n+"/api";p(a)}}),$("#resizeprevieweditor").click(function(){$("#editorpanel").toggleClass("col-md-8").toggleClass("col-md-12"),$("#previewpanel").toggleClass("col-md-4").toggleClass("hidden"),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small")}),$("#resizepreview").click(function(){$("#previewpanel").toggleClass("col-md-4").toggleClass("col-md-12"),$("#editorpanel").toggleClass("col-md-4").toggleClass("hidden"),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small")}),$("#resizetutorialpreview").click(function(){var e=$("#previewpanel"),t=$("#tutorialinfopanel"),a=$("#editorpanel"),r=t.data("size"),i=a.data("size");e.hasClass("col-md-4")?(t.addClass("hidden"),a.addClass("hidden")):e.hasClass("col-md-12")&&(r?(t.removeClass("hidden").removeClass("col-md-3").addClass("col-md-8"),a.addClass("hidden")):r||(t.removeClass("hidden").removeClass("col-md-8").addClass("col-md-3"),a.removeClass("hidden").removeClass("col-md-8").addClass("col-md-5")),i&&(a.removeClass("hidden").removeClass("col-md-5").addClass("col-md-8"),t.addClass("hidden"))),e.toggleClass("col-md-4").toggleClass("col-md-12"),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small"),g()}),$("#resizetutorial").click(function(){var e=$("#tutorialinfopanel"),t=$("#editorpanel"),a=e.data("size");t.data("size");a?(e.remove("hidden").removeClass("col-md-8").addClass("col-md-3"),t.addClass("col-md-5").removeClass("hidden").removeClass("col-md-8"),e.data("size",0),t.data("size",0)):a||(e.remove("hidden").addClass("col-md-8").removeClass("col-md-3"),t.removeClass("col-md-5").addClass("hidden").removeClass("col-md-8"),e.data("size",1),t.data("size",0)),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small")}),$("#resizeeditors").click(function(){var e=$("#tutorialinfopanel"),t=$("#editorpanel"),a=(e.data("size"),t.data("size"));a?(t.remove("hidden").removeClass("col-md-8").addClass("col-md-5"),e.addClass("col-md-3").removeClass("hidden").removeClass("col-md-8"),t.data("size",0),e.data("size",0)):a||(t.remove("hidden").addClass("col-md-8").removeClass("col-md-5"),e.removeClass("col-md-3").addClass("hidden").removeClass("col-md-8"),t.data("size",1),e.data("size",0)),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small"),g(),$("#playrecord").popover("hide")}),$("#editorwrapper").find("button").click(function(){$this=$(this),$this.addClass("btn-primary").siblings().removeClass("btn-primary");$this.data("editorname");"undefined"!=typeof c.htmleditor&&"undefined"!=typeof c.csseditor&&"undefined"!=typeof c.jseditor&&(c.htmleditor.refresh(),c.csseditor.refresh(),c.jseditor.refresh()),document.URL.indexOf("rtreplayerpreview")<0?document.URL.indexOf("index.htm")>=0||document.URL.indexOf("rtrecordtutorial.htm")>=0||$("#recordertab a:first").tab("show"):$("#recordertab a:eq(1)").tab("show"),(document.URL.indexOf("rtwidget-replayerpreview")>0||document.URL.indexOf("rtwidgetinterview-replayerpreview")>0)&&$("#recordertab a:eq(1)").tab("show")}),$("#cancel").click(function(){$(window).unbind("beforeunload"),window.close()}),$("#savecorde").click(function(){$("#savemsg").addClass("hidden"),$("#uploading2").css("display","inline-block"),$(this).prop("disable",!0);var e="课程名",t="回放说明",a=getQuery("languageid")||35;saveformat=$("#saveformat").find(".active").data("saveformat")||5,pickup=0;var r={replaytitle:e,replaydesc:t,pickup:pickup,languageid:a,saveformat:saveformat},i=$("#previewcoverimg").data("demoimg");void 0===i&&(i="placeholder.png"),r.image=i,r.userid=o,$("#publishnow").is(":checked")?r.deleted=0:r.deleted=-1,$("#interviewtool").is(":checked")&&(r.deleted=-2);var n=0;$("#eventtagid").is(":checked")&&(n=$("#eventtagid").data("tagid")),r.html=c.htmleditor.getValue(),r.css=c.csseditor.getValue(),r.javascript=c.jseditor.getValue(),r.audioUrl=$(".audio-url").val(),r.deleteFlag=1;for(var s=[],d=0;d<c.records.length;d++){var p={intervaltime:c.records[d].intervaltime,editor:c.records[d].editor,changeobj:JSON.stringify(c.records[d].changeobj)};s.push(p)}s.deleteFlag=1;var g=$(".recording-time").val();r.totaltime=parseInt(g),0==l?(r.codeRecordList=s,$.ajax({type:"post",url:gxb_api+"/programming/codeReplay/api",data:JSON.stringify(r),dataType:"json",contentType:"application/json",success:function(e){console.log(e),$(window).unbind("beforeunload");var t={programId:e.codeReplayId,programLanguageName:e.languageName,programAudioLength:g};$(".upload-tip").hide(),$("#cancel").prop("disabled",!1),window.opener.postMessage(t,_source),window.close()},error:function(){$(".upload-tip").hide(),alert("代码保存失败重新保存")}})):1==l&&(r.studentRecordList=s,$.ajax({type:"post",url:gxb_api+"/programming/student/studentReplay/api",data:JSON.stringify(r),dataType:"json",contentType:"application/json",success:function(e){console.log(e),$(window).unbind("beforeunload");var t={programId:e.studentReplayId,programLanguageName:e.languageName,programAudioLength:g};$(".upload-tip").hide(),$("#cancel").prop("disabled",!1),window.opener.postMessage(t,_source),window.close()},error:function(){$(".upload-tip").hide(),alert("代码保存失败重新保存")}}))}),$("#toggle_replay_enhancement").click(function(){$(this).toggleClass("btn-primary").toggleClass("btn-default"),c.replay_enhancement=!c.replay_enhancement}),$("#autorun").click(function(){var e=$(this),t=e.data("autorun");1===t?$("#runnow").prop("disabled",!1).toggleClass("btn-success").toggleClass("btn-default"):$("#runnow").prop("disabled",!0).toggleClass("btn-success").toggleClass("btn-default"),e.data("autorun",t?0:1),c.autorun=!c.autorun,$("#runnow").trigger("click")}),1===c.autorun?$("#runnow").prop("disabled",!0).removeClass("btn-success").addClass("btn-default"):$("#runnow").prop("disabled",!1).addClass("btn-success").removeClass("btn-default"),$("#runnow").click(function(){return"undefined"!=typeof c.htmleditor&&"undefined"!=typeof c.csseditor&&"undefined"!=typeof c.jseditor?(c.generateResult(c.htmleditor.getValue(),c.csseditor.getValue(),c.jseditor.getValue()),!1):void("undefined"!=typeof c.htmlplayereditor&&"undefined"!=typeof c.cssplayereditor&&"undefined"!=typeof c.jsplayereditor&&c.generateResult(c.htmlplayereditor.getValue(),c.cssplayereditor.getValue(),c.jsplayereditor.getValue()))}),$("#comprunbtngrp").on("click","#comprun",function(){var e=Ladda.create(this);e.start();var t="undefined"!=typeof c.htmleditor&&c.htmleditor.getValue()||"undefined"!=typeof c.htmlplayereditor&&c.htmlplayereditor.getValue(),a=$("#htmlbutton").data("languageid"),r=$("#input").val()||"",i={code:t,langid:a,input:r};$.ajax({type:"post",url:gxb_api+"/submit/submitCode/api",data:JSON.stringify(i),dataType:"json",contentType:"application/json",success:function(t){t.result?($("#cmpinfo").html('<p class="text-warning">'+t.cmpinfo.replace(/\n/g,"<br />")+"</p>"),$("#stderr").html('<p class="text-danger">'+t.stderr.replace(/\n/g,"<br />")+"</p>"),$("#output").html('<p class="text-success">'+t.output.replace(/\n/g,"<br />")+"</p>"),t.cmpinfo.length?$('#cmprun-tabs a[href="#cmpinfo"]').tab("show"):t.stderr.length?$('#cmprun-tabs a[href="#stderr"]').tab("show"):t.output.length&&$('#cmprun-tabs a[href="#output"]').tab("show"),t.cmpinfo.length||$("#cmpinfo").prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 编译已成功</p>'),t.stderr.length||$("#stderr").prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 无输出错误</p>'),t.output.length||$("#output").prepend('<p class="alert alert-warning"><i class="glyphicon glyphicon-exclamation-sign"></i> 代码编译错误或者运行相关功能受限制</p>')):($("#cmpinfo").html('<p class="alert alert-danger"><i class="glyphicon glyphicon-exclamation-sign"></i> 云端编译超时,请稍后重新尝试</p>'),$('#cmprun-tabs a[href="#cmpinfo"]').tab("show")),e.stop()},error:function(){e.stop(),alert("错误")}})});var k=$(".replayprogress");k.slider({}).slider("option","disabled",!0),k.on("sliderstop",function(e,t){if($("#playrecord").hasClass("hidden")){k.slider("option","disabled",!1);var a=Math.ceil(t.value),r=Math.ceil(c.records.length*(a/100));c.triggeroffset=r,$("#speedlist a").first().trigger("click"),$("#autorun").data("autorun")&&$("#autorun").trigger("click"),$("#replay").trigger("click")}}),$("#readonly").click(function(){var e=$(this),t=$(this).data("readonly"),a=$("#recordertab").find("li").first();e.addClass("disabled"),t?(a.popover({placement:"right",container:"body",html:!0,content:'<div class="text-success"><span class="glyphicon glyphicon-hand-left"></span> 代码播放编辑器“<b>已启用</b>”</div>'}).popover("show"),c.htmlplayereditor.setOption("readOnly",!1),c.cssplayereditor.setOption("readOnly",!1),c.jsplayereditor.setOption("readOnly",!1),e.data("readonly",0).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-danger").toggleClass("btn-success")):(a.popover({placement:"right",container:"body",html:!0,content:'<div class="text-success"><span class="glyphicon glyphicon-hand-left"></span> 代码播放编辑器“<b>目前只读</b>”</div>'}).popover("show"),c.htmlplayereditor.setOption("readOnly",!0),c.cssplayereditor.setOption("readOnly",!0),c.jsplayereditor.setOption("readOnly",!0),e.data("readonly",1).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-danger").toggleClass("btn-success")),setTimeout(function(){a.popover("destroy"),e.removeClass("disabled")},1500)}),$("#mobilereplaydone").click(function(){$("#replaydone").trigger("click")}),$("#mobiledonenext").click(function(){$("#donenext").trigger("click")}),$("#showtutorialinfo").click(function(){$("#mobiletutorialdetails").slideToggle()}),$("#replaydone").click(function(){var e=$(this),t=$(this).data("readonly"),a=$("#codechallenges"),r=$("#recordertab").find("li").first();e.addClass("disabled"),t?r.popover({placement:"right",container:"body",html:!0,content:'<div class="text-success"><span class="glyphicon glyphicon-hand-left"></span> 代码播放编辑器“<b>已启用</b>”</div>'}).popover("show"):r.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-hand-left"></span> 代码播放编辑器“<b>目前只读</b>”</div>'}).popover("show"),setTimeout(function(){r.popover("destroy"),e.removeClass("disabled")},1500),t?(c.htmlplayereditor.setOption("readOnly",!1),c.cssplayereditor.setOption("readOnly",!1),c.jsplayereditor.setOption("readOnly",!1),e.data("readonly",0).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-success").toggleClass("btn-primary")):(c.htmlplayereditor.setOption("readOnly",!0),c.cssplayereditor.setOption("readOnly",!0),c.jsplayereditor.setOption("readOnly",!0),e.data("readonly",1).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-success").toggleClass("btn-primary")),a.toggleClass("tutorialexcercise_hide").toggleClass("tutorialexcercise_show");$("#trybymyselfttips").closest(".panel-body")}),$("#readcode").click(function(){$("#donenext").removeClass("disabled");var e=$("#trybymyselfttips").closest(".panel-body");if($("#trybymyselfttips").removeClass("tutorialexcercise_hide").addClass("tutorialexcercise_show"),$("#replaydone").length&&scrollToElement(e,$("#donenext")),$("#replaydone").trigger("click"),$(window).width()>992&&$("#resizetutorial").trigger("click"),$(this).removeClass("btn-success").addClass("btn-default").addClass("disabled"),$("#resizetutorial").removeClass("hidden"),0!==$("#htmlbutton").data("languageid")){var t=$("#HTMLeditor").next(".CodeMirror");t.find(".CodeMirror-gutter-text").addClass("cmgutter"),t.height(c.codemirrorheight).siblings().height(0);var t=$("#HTMLplayer").next(".CodeMirror");t.height(c.codemirrorheight).siblings().height(0)}c.htmlplayereditor.refresh(),c.cssplayereditor.refresh(),c.jsplayereditor.refresh()}),$("#readanswer").click(function(){$("#donenext").removeClass("disabled");var e=$("#trybymyselfttips").closest(".panel-body");if($("#trybymyselfttips").removeClass("tutorialexcercise_hide").addClass("tutorialexcercise_show"),$("#replaydone").length&&scrollToElement(e,$("#donenext")),$("#replaydone").trigger("click"),$(window).width()>992&&$("#resizetutorial").trigger("click"),$(this).removeClass("btn-success").addClass("btn-default").addClass("disabled").addClass("hidden"),$("#resizetutorial").removeClass("hidden"),$("#playpanel").removeClass("hidden"),0!==$("#htmlbutton").data("languageid")){var t=$("#HTMLeditor").next(".CodeMirror");t.find(".CodeMirror-gutter-text").addClass("cmgutter"),t.height(c.codemirrorheight).siblings().height(0);var t=$("#HTMLplayer").next(".CodeMirror");t.height(c.codemirrorheight).siblings().height(0)}c.htmlplayereditor.refresh(),c.cssplayereditor.refresh(),c.jsplayereditor.refresh()}),this.resizeWindow($("#ifrcontainer").find("#resultiframe")),$(window).bind("beforeunload",function(){return"确认立刻退出? 请确保已录制的代码回放以保存,以防回放数据丢失"}),function(){function e(e){var a="visible",r="hidden",i={focus:a,focusin:a,pageshow:a,blur:r,focusout:r,pagehide:r};e=e||window.event,e.type in i?document.body.className=i[e.type]:document.body.className=this[t]?"hidden":"visible","hidden"===document.body.className&&1==$("#play").data("status")&&$("#play").trigger("click")}var t="hidden";t in document?document.addEventListener("visibilitychange",e):(t="mozHidden")in document?document.addEventListener("mozvisibilitychange",e):(t="webkitHidden")in document?document.addEventListener("webkitvisibilitychange",e):(t="msHidden")in document?document.addEventListener("msvisibilitychange",e):"onfocusin"in document?document.onfocusin=document.onfocusout=e:window.onpageshow=window.onpagehide=window.onfocus=window.onblur=e}(),setTimeout(function(){$(window).width()>992&&$("#resizetutorial").trigger("click"),$("#gbloading").addClass("hidden")},600)},resizeWindow:function(e){var t=function(){var e=$("#resultpanel").offset(),t=$("#recordpanel").offset();document.URL.indexOf("index.htm")>=0?($("#recordpanel").height($(window).height()-t.top-16-70),$("#resultpanel").height($(window).height()-e.top-16-70),$(".CodeMirror").height($(window).height()-t.top-16-70)):($("#recordpanel").height($(window).height()-t.top-16-34),$("#resultpanel").height($(window).height()-e.top-16-34),$(".CodeMirror").height($(window).height()-t.top-16-34)),"undefined"!=typeof c.htmleditor&&"undefined"!=typeof c.csseditor&&"undefined"!=typeof c.jseditor&&(c.htmleditor.refresh(),
c.csseditor.refresh(),c.jseditor.refresh())};$(window).resize(function(){t(),$("#playrecord").popover("hide")}).load(function(){t()}),t()},onChange:function(e,t){var a=100,r=(new Date).getTime();0==l&&(a=r-c.record_startime);var i={intervaltime:a,editor:e,changeobj:t,trigger:0,playTime:0};c.records.push(i),c.record_startime=r},changeValueCallback:function(a,r,i){var o=a.changeobj,l=a.editor;return function(){c.active_editor!==l?$("#"+l+"button").trigger("click"):c.active_editor=l,"html"===l?e(c.htmlplayereditor,o):"css"===l?e(c.cssplayereditor,o):"js"===l&&e(c.jsplayereditor,o),a.trigger=1,a.playTime=(new Date).getTime(),console.log(a),r?c.excercise_triggertotal+=1:c.triggertotal+=1;var n="0%",s=0;if(r?(s=Math.ceil(c.excercise_triggertotal/c.excercise_records.length*100),n=s+"%"):i||(s=Math.ceil(c.triggertotal/c.records.length*100),n=s+"%",$("#replayprogressbar").css({width:n}).find("span").html(n),$(".slider").slider("option","now",s)),c.triggertotal===c.records.length&&!r){$("#play").data("status",0).attr("title","播放").addClass("btn-success").removeClass("btn-danger").removeClass("infinite").find("span").addClass("glyphicon-play").removeClass("glyphicon-pause"),$("#recordertab a:first").tab("show"),$("#donenext").removeClass("disabled"),$("#mobiledonenext").removeClass("disabled"),$(window).width()>992&&$("#editorpanel").hasClass("col-md-8")&&$("#resizeeditors").trigger("click"),$("#replayprogressbar").addClass("animated flash");var d=$("#trybymyselfttips").closest(".panel-body");if($("#trybymyselfttips").removeClass("tutorialexcercise_hide").addClass("tutorialexcercise_show"),$("#replaydone").length&&scrollToElement(d,$("#donenext")),$("#replaydone").addClass("animated bounce"),$("#replaydone").data("readonly")&&$("#replaydone").trigger("click"),c.triggeroffset=0,$("#readonly").length>0&&(setTimeout(function(){$("#readonly").popover({html:!0,placement:"right",container:"body",content:""}).popover("show")},2e3),setTimeout(function(){$("#readonly").trigger("click")},1500),setTimeout(function(){$("#readonly").popover("destroy")},5e3)),c.continue_recording){var p=c.jsplayereditor.getValue(),g=c.cssplayereditor.getValue(),u=c.htmlplayereditor.getValue();c.recording_status=0,c.htmleditor.setValue(u),c.csseditor.setValue(g),c.jseditor.setValue(p),c.jseditor.refresh(),c.csseditor.refresh(),c.htmleditor.refresh(),c.recording_status=1,c.continue_recording=0,c.speed=1,$("#gbloading").addClass("hidden"),$("#autorun").data("autorun")||$("#autorun").trigger("click"),setInterval(function(){t(c.records)},5e3)}}if(c.excercise_triggertotal===c.excercise_records.length){var h=$(".replayprogress");h.slider("option","disabled",!1),$("#excerciselist .ineedautocodehelp").data("status",0).attr("title","播放").find("span").addClass("glyphicon-play-circle").removeClass("glyphicon-stop")}}},generateResult:function(e,t,a){$("#ifrcontainer").html($("<iframe />",{id:"resultiframe",frameBorder:"0",style:"width:100%","z-index":"-1000"}));var r=$("#ifrcontainer").find("#resultiframe");if($(window).width()>992){var i=$("#resultpanel").find(".panel-body:not(.hidden)").offset();r.height($(window).height()-i.top-22-30),$("#resultoutput").height($(window).height()-i.top-22-30)}else r.height(450);var o,l=$("#resultiframe")[0];o=l.contentDocument?l.contentDocument:l.contentWindow?l.contentWindow.document:l.document;var n=0,s=e.toLowerCase();s.toLowerCase().indexOf("</body>")>=0&&s.toLowerCase().indexOf("<body>")>=0&&(n=1),n?(e=e.replace(/\<link href="style.css" rel="stylesheet"\/>/g,"<style>"+t+"</style>"),e=e.replace(/\<link rel="stylesheet" href="style.css"\/>/g,"<style>"+t+"</style>"),e=e.replace(/\<script src="script.js"\>\<\/script\>/g,"<script>"+a+"</script>"),result=e):result="<!DOCTYPE HTML><html><head><style>"+t+"</style></head><body>"+e+'<script type="text/javascript">'+a+"</script></body></html>",o.open(),o.writeln(result),o.close()}};document.URL.indexOf("index.htm")>=0&&0==l?HZRecorder.get(function(e){var t=0;$(".tip").show(),$(".start-btn").click(function(){$(".tip").hide(),$("#countdown").find("img").attr("src","img/dribbble-1.gif");var r=setInterval(function(){t+=1,3==t&&($(".record-before").hide(),clearInterval(r),$("#countdown").css("display","none"),$("#countdown").find("img").attr("src",""),c.record_startime=(new Date).getTime(),recorder=e,recorder.start(),c.recordinit(),a(),timer.init(s))},1e3)})}):($(".record-before").hide(),c.recordinit(),a(),timer.init(s));var p=null,g=null,u=null;$(".record-back").click(function(){$(window).unbind("beforeunload"),window.close()}),$("#coverpreview").on("click",".removeimg",function(){$(this).hide().next().remove()}),document.URL.indexOf("index.htm")>=0||document.URL.indexOf("rtrecordtutorial.htm")>=0||$(window).unbind("beforeunload")});