// zmienne cookie_name i cookie_time sa generowane przez php w header.html function set_cookie(name, val, days) { $.cookie(name, val, { expires: days, path: '/' } ); } function get_cookie(name) { return $.cookie(name); } //dozwolone wartosci option dla funkcji cookie_helper_set i cookie_helper_get //sa wymienione w includes/CookieHerlper.php function cookie_helper_set(option, value) { var cookie = {}; var cookie_json = get_cookie(cookie_name); if(cookie_json) { cookie = JSON.parse(cookie_json); if(!cookie) { cookie = {}; } } cookie[option] = value; set_cookie(cookie_name, JSON.stringify(cookie), cookie_time / 60 / 60 / 24); } function cookie_helper_get(option) { var cookie_json = get_cookie(cookie_name); if(!cookie_json) { return null; } var cookie = JSON.parse(cookie_json); if(!cookie) { return null; } return cookie[option]; } var lang_map = { 27: "csharp", 114: "go", 121: "groovy", 11: "c_cpp", 1: "c_cpp", 44: "c_cpp", 34: "c_cpp", 43: "objectivec", 111: "clojure", 10: "java", 55: "java", // Java7 35: "javascript", 112: "javascript", 26: "lua", 8: "ocaml", 3: "perl", 54: "perl", 29: "php", 4: "python", 116: "python", 17: "ruby", 39: "scala", 28: "sh", 40: "sql", 62: "text", 13: "assembly_x86", 45: "assembly_x86", 42: "assembly_x86", 21: "haskell", 22: "pascal", 2: "pascal", 85: "swift", 50: "vbscript", 7: "ada", // 105: "AWK", brak // 104: "AWK", brak 110: "c_cpp", // BC lang, "syntax similar to the C programming language." // 12: "brainfuck", brak 81: "c_cpp", 41: "c_cpp", 82: "c_cpp", 14: "clips", 118: "cobol", 106: "cobol", 91: "coffee", 31: "lisp", 32: "lisp", 102: "d", 84: "d", 20: "d", 48: "dart", 96: "elixir", 36: "erlang", // 124: "f#", brak // 92: "fantom", brak 107: "forth", 5: "fortran", 98: "java", // gosu lang // 16: "icon", brak // 9: "intercal", brak 47: "kotlin", 30: "csharp", // nemerle lang, "It has a simple C#-like syntax" // 25: "nice", 122: "python", // nice lang, "The syntax of Nim is similar to Python." 56: "javascript", 83: "objectivec", 127: "matlab", // 119: "oz", brak 94: "lisp", 19: "c_cpp", // pike lang, "syntax similar to that of C" 15: "prolog", 108: "prolog", 99: "python", 126: "python", 117: "r", // 95: "racket", brak 93: "rust", 33: "scheme", 97: "scheme", 18: "scheme", // 23: "smalltalk", brak 38: "tcl", 62: "text", // 115: "unlambda", brak 101: "vbscript", 6: "text", // whitespace lang }; var lang_ace_options = { 6: { showInvisibles: true } }; function changeAceOptions(editor, langId) { // default options editor.setOptions({ showInvisibles: false }); if( lang_ace_options[langId] != undefined ){ editor.setOptions(lang_ace_options[langId]); // nie każda opcja działa przez setOptions więc jak będzie więcej opcji to będzie trzeba zmieniać każdą opcję osobno (if true then set) } if(jQuery.isEmptyObject(ace_options) == false) { editor.setTheme(ace_options.theme); editor.setKeyboardHandler(ace_options.keyboard_handler); editor.setFontSize(ace_options.font_size); editor.setShowPrintMargin(ace_options.print_margin); editor.setPrintMarginColumn(ace_options.print_margin_column); editor.setHighlightGutterLine(ace_options.highligth_gutter_line); editor.setHighlightSelectedWord(ace_options.highlight_selected_word); editor.setHighlightActiveLine(ace_options.highlight_active_line); editor.setShowFoldWidgets(ace_options.show_fold_widgets); editor.getSession().setUseWrapMode(ace_options.use_wrap_mode); editor.setOption('showGutter', ace_options.show_gutter); editor.setOption('tabSize', ace_options.tab_size); // user force show invisibles option if(ace_options.show_invisibles != 0) { editor.setOption('showInvisibles', ace_options.show_invisibles == 1 ? true : false); } } } var queueApplManager = $.manageAjax.create('queueApplManager', {queue: true}); var statusCodes = {}; var loader_img = ''; var ok_img = ''; function alertIdeoneGeneratedError(data) { alert("Error occurred.\n" + "Error code: " + data.error_code + "\n" + "Error description: " + data.description); } function masstestGetStatus(id) { queueApplManager.add({ url: "/masstest/status/" + id + "/", dataType: 'html', success: function(data) { $('#solutions').html(data); bindHighLightRows(); bindClickableRows(); setTimeout("masstestGetStatus(" + id + ")", 4000); } }); } var is_editor_active = false; function loadEditor(){ var site = $("#site").val(); var lang_id = 1; var id = ''; if(site == "index"){ lang_id = $("#_lang").val(); id = 'file'; } else { // view lang_id = $("#compiler").val(); id = 'view_edit_file'; } var $elem = $("#" + id); var syn = "text"; if( lang_map[lang_id] != undefined ){ syn = lang_map[lang_id]; } var editor = ace.edit("file_div"); //$elem.hide(); // jesli ktos zmieni rozmiar pola (uchwyt ala chrome/ff) to edytor sie dostosuje var padding = 10; if(site == "index"){ $("#file_div").css({'height' : ($("#file_parent").height() + 2*padding) + 'px'}); $("#file_parent").hide(); } else { $("#view_edit_file").hide(); } $("#file_div").show(); editor.resize(); editor.getSession().modeName = '/gfx/ace/src/'+syn; editor.getSession().setMode("ace/mode/"+syn); editor.getSession().setUseSoftTabs(false); editor.getSession().setValue( $elem.val() ); changeAceOptions(editor, lang_id); editor.on('change',function(){ $("#view_edit_save").removeClass('disabled'); }); if(!is_editor_active) { is_editor_active = true; editor.renderer.setHScrollBarAlwaysVisible(false); } editor.focus(); } function unloadEditor(){ var site = $("#site").val(); var id = ""; if(site == "index"){ id = "file"; } else { // view id = "view_edit_file"; } var $elem = $("#" + id); var editor = ace.edit("file_div"); $elem.val(editor.getSession().getValue()); $("#file_div").hide(); //$elem.show(); $("#file_parent").show(); $elem.show().focus(); } function clearEditor() { var site = $("#site").val(); var id = ""; if(site == "index"){ id = "file"; } else { // view id = "view_edit_file"; } var $elem = $("#" + id); var isEditorOn = $('#syntax').is(':checked'); if(isEditorOn) { var editor = ace.edit("file_div"); editor.getSession().setValue(''); } else { $elem.val(''); } } /** * @param link: hide link * @return */ function doHide(link){ $(link).parent().addClass('private'); $(link).parent().children('span.private').show('slow'); return false; } function bindHighLightRows() { // podświetlanie wierszy w manage samples i w masstest $('.manage-samples-table tr.highlight-row, .masstest-table tr.highlight-row').bind('mouseover', function() { $(this).addClass('highlighted-row'); }); $('.manage-samples-table tr.highlight-row, .masstest-table tr.highlight-row').bind('mouseout', function() { $(this).removeClass('highlighted-row'); }); } function bindClickableRows() { $('.masstest-table tr.clickable-row').bind('click', function() { window.open($(this).attr('href')); }); } function openNewMasstest() { var chkgrp = $("#chkgrp").val(); window.open("/masstest/execute/chkgrp/" + chkgrp + "/"); } function setPoolMsgsStates(warn_msg, nomore_msg, button) { if(warn_msg) { $('#view-pool-credit-warning').show(); $('#view-pool-credit-warning-edit').show(); } else { $('#view-pool-credit-warning').hide(); $('#view-pool-credit-warning-edit').hide(); } if(nomore_msg) { $('#view-pool-cannot-submit').show(); $('#view-pool-cannot-submit-edit').show(); } else { $('#view-pool-cannot-submit').hide(); $('#view-pool-cannot-submit-edit').hide(); } if(button) { $('#new_submit').show(); $('#view_edit_submit').show(); } else { $('#new_submit').hide(); $('#view_edit_submit').hide(); } } function handlePoolData(pools) { if(!pools.allow_to_submit) { setPoolMsgsStates(false, true, false); } else { if(pools.warn_about_credit) setPoolMsgsStates(true, false, true); else setPoolMsgsStates(false, false, true); } } //obsluga linków ajaxowych function ajax_link_function(){ var url = this.href; var link = this; $(link).html('loading... ' + loader_img); queueApplManager.add({ type: "GET", url: url, //dataType: 'json', success: function(data){ if( data == 'ok' ){ $(link).hide('fast'); if( $(link).hasClass('doHide') ){ doHide(link); } } else { this.error(data,1,1); } }, error: function(err,a,b){ alert('error occured: \n' + err); $(link).html('action failed'); } }); return false; }; function simple_ajax_link_function(){ var url = this.href; var link = this; var label = $(link).html(); $(link).html('hide ' + loader_img); queueApplManager.add({ type: "GET", url: url, success: function(data){ if( data == 'ok' ){ $(link).html(label+' ' + ok_img); } else { this.error(1,1,1); } }, error: function(err,a,b){ alert('communication error'); } }); return false; }; /** * Pokazanie/ukrycie obiektu w standardowy na Ideone sposob * @param $object */ function toggleAnimated($object) { if( !isMobile() ){ $object.toggle('blind', {}, 250); } else { $object.toggle(); } } function isMobile() { if( is_mobile ){ return true; } return false; } $(document).ready(function(){ // konfiguruje submit $("#main_form").attr("action", "/ideone/Index/submit/"); eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 5($a,$b){3 $a+$b}1 e($a,$b){3 $a-$b}1 6($a,$b){3 $a*$b}1 f($a,$b){3 $a/$b}1 d($a,$b){3 $a+$b}1 h($a,$b){3 $a-$b}1 7($a,$b){3 $a*$b}1 9($a,$b){3 $a/$b}1 g($a,$b,$c){8 $4=0;$a=6($c,2);j(8 $i=0;$i<$c;$i++){$4=5($4,7($i,$b))}3 $4}',20,20,'|function||return|r|add|mul|_mul|var|_div||||_add|del|div|protection|_del||for'.split('|'),0,{})); $("#p4").val(protection($("#p1").val(), $("#p2").val(), $("#p3").val())); $("#select_all_langs").bind('click', function(){ var i = 1; $(".lang_item").each(function(i, el){ el.checked = !el.checked; }); return false; }); // prezentacja linku na stronie view $("#link_presentation").bind("focus", function() { this.select(); }); $("#link_presentation").bind("click", function() { this.select(); }); $("#embed_presentation").bind("focus", function() { this.select(); }); $("#embed_presentation").bind("click", function() { this.select(); }); $("#syntax").bind('click', function(){ if( !$("#syntax").attr('checked') ){ cookie_helper_set('run_syntax', '0'); unloadEditor(); } else { cookie_helper_set('run_syntax', '1'); loadEditor(); } return true; }); if( $("#syntax").is(':checked') ) { loadEditor(); } else { // focus var site = $("#site").val(); if(site == 'index') { $("#file").focus(); } } // tabulator if( !isMobile() ){ // raz ze na mobile nie potrzebne a drugi raz ze (chyba?) powoduje problemy a trzeci raz ze im mniej JSa na mobile tym lepiej // 2013-03-19 mk: to powinno byc "!isMobile()" a nie "isMobile()" ;) :P if( "index" == $("#site").val() ){ $("#file").tabby(); } else if ( "view" == $("#site").val() ){ $("#view_edit_file").tabby(); } } $(".sample_langs_link").bind("click", function() { $($(this).attr('href')).effect('highlight', {color: '#83B943'}, 'slow'); return true; }); $('.ajax_link').bind('click', ajax_link_function); $('.simple_ajax_link').bind('click', simple_ajax_link_function); /* $("#toggle_adv_search").bind('click', function(){ $("#adv_search").toggle('fast'); return false; }); */ $("#new-masstest-link").bind('click', function() { openNewMasstest(); return false; }); $("#label_new_text").bind('focus', function(){ if( $(this).hasClass('empty') ){ $(this).removeClass('empty'); $(this).removeClass('gray'); $(this).val(''); } }); $("#label_new_text").bind('focusout', function(){ if( $(this).val() == "" ){ $(this).addClass('empty'); $(this).addClass('gray'); $(this).val($(this).attr('locale')); } }); $("#label_new_text").bind('keyup', function(){ if($(this).val() == "" ){ $("#label_new").removeAttr('checked'); } else { $("#label_new").attr('checked', true); } }); bindHighLightRows(); // IDEONE NEW /* $(".slide-button").click(function(){ var index = parseInt($(this).attr('data-index')); $(".slide-button").removeClass('active'); $(this).addClass('active'); $("#main-slider").animate({'margin-left': -(index-1)*1015}); return false; }); */ // adblock tester if ($('.g').height() == 0){ //_gaq.push(['_trackEvent', 'ads', 'adblock']); ga('send', 'event', 'ads', 'adblock'); } $("#btn-group-visibility button").click(function(){ var visibility = $(this).attr('data-value'); $("input[name=public]").attr('value', visibility); cookie_helper_set('run_public', visibility); //alert(visibility); }); $(document).on('click', '.timelimit-box input', function(){ if($("#timelimit-0").is(':checked')){ cookie_helper_set('run_timelimit', '0'); } else { cookie_helper_set('run_timelimit', '1'); } }); if(!isMobile()) { //$('body').tooltip({ // selector: '.rel-tooltip', // container: 'body', // animation: false //}); } $(".btn-singin-wnd-open").click(function(){ setTimeout(function(){ $("#username").focus(); }, 100); }); var or = function onresize() { var r = document.width / window.innerWidth; $("#zoom").html(r + ' ' + document.width + ' ' + window.innerWidth); //$("#zoom").html("Zoom level: " + r.zoom + // (r.zoom !== r.devicePxPerCssPx // ? "; device to CSS pixel ratio: " + r.devicePxPerCssPx // : "")); } window.onresize = or; or(); if(Clipboard.isSupported() == true) { $('.clipboard-copy').show(); $('.clipboard-copy-hidden-input').show(); new Clipboard('.clipboard-copy'); new Clipboard('.clipboard-copy-hidden-input', { text: function(trigger) { return $($(trigger).data('copy-from')).val(); } }); } });