var DATE_PART_DAY = 1; var DATE_PART_MONTH = 2; var DATE_PART_MON = 4; var DATE_PART_YEAR = 8; var DATE_PART_HOUR = 16; var DATE_PART_MIN = 32; var DATE_PART_SEC = 64; var MESSAGE_TYPE_INFO = 1; var MESSAGE_TYPE_WARNING = 2; var MESSAGE_TYPE_ERROR = 3; var _isMessageShown = false; var _userEventRoles = null; function callAPI(postData, onResponse, onError) { waitMessage(true); $.ajax({ url: "https://api.ludusmaterials.com/backend/api/index.php", type: "POST", data: JSON.stringify(postData), dataType: 'jsonp', headers: { 'Content-Type': 'application/json' }, success: function (json) { waitMessage(false); if (json["rc"] != 0) { if (json["rc"] == 201) { showMessage("Invalid token. Please login again", MESSAGE_TYPE_ERROR, function() { execLogout(); }); return; } showMessage(json["message"], MESSAGE_TYPE_ERROR, function() { if (json["rc"] == 103) { gotoHomePage(); } }); return; } if (onResponse) { onResponse(json); } }, error: function() { waitMessage(false); if (onError) { onError(json); } showMessage("Unknown error", MESSAGE_TYPE_ERROR); } }); } function waitMessage(isOn) { if (isOn) { $("#outerCover").show(); } else { $("#outerCover").hide(); } } File.prototype.convertToBase64 = function(callback) { var reader = new FileReader(); reader.onloadend = function (e) { callback(e.target.result, e.target.error); }; reader.readAsDataURL(this); }; function readURL(input, targetElement) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $(targetElement).attr('src', e.target.result); }; reader.readAsDataURL(input.files[0]); } } String.prototype.replaceAll = function(search, replacement) { var target = this; return target.split(search).join(replacement); }; String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; function objectToList(obj) { return JSON.stringify(obj); } function getObjectPropsCount(obj) { return Object.keys(obj).length; } function getUrlParams() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; } function htmlEscape(str) { return str.replaceAll("\"", """); } function formatDateDefault(date) { return formatDate(date, DATE_PART_DAY | DATE_PART_MON | DATE_PART_YEAR | DATE_PART_HOUR | DATE_PART_MIN); } function formatDate(date, parts) { var monthNamesLong = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var monthNamesShort = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; if (typeof date == "string") { date = new Date(date); } var day = date.getDate(); var monthIndex = date.getMonth(); var year = date.getFullYear(); var hour = date.getHours(); var min = date.getMinutes(); var sec = date.getSeconds(); var datetime = ""; var needDateSep = false; var needTimeSep = false; if (parts & DATE_PART_DAY) { if (day < 10) datetime += "0"; datetime += day; needDateSep = true; } if (parts & DATE_PART_MONTH) { if (datetime != "") datetime += "-"; datetime += monthNamesLong[monthIndex]; needDateSep = true; } if (parts & DATE_PART_MON) { if (datetime != "") datetime += "-"; datetime += monthNamesShort[monthIndex]; needDateSep = true; } if (parts & DATE_PART_YEAR) { if (datetime != "") datetime += "-"; datetime += year; needDateSep = true; } if (parts & DATE_PART_HOUR) { if (needDateSep) { needDateSep = false; datetime += " "; } if (hour < 10) datetime += "0"; datetime += hour; needTimeSep = true; } if (parts & DATE_PART_MIN) { if (needDateSep) { needDateSep = false; datetime += " "; } if (needTimeSep) datetime += ":"; if (min < 10) datetime += "0"; datetime += min; needTimeSep = true; } if (parts & DATE_PART_SEC) { if (needDateSep) datetime += " "; if (needTimeSep) datetime += ":"; if (sec < 10) datetime += "0"; datetime += sec; } return datetime; } function isMessageShown() { return _isMessageShown; } function showMessage(message, type, onDismiss) { var msg = ""; var errType = "none"; _isMessageShown = true; if (type == MESSAGE_TYPE_INFO) { errType = "info"; } else if (type == MESSAGE_TYPE_WARNING) { errType = "warning"; } else if (type == MESSAGE_TYPE_ERROR) { msg = "Error: "; errType = "error"; } msg += message.replace(/\n/g, "
"); html = '
' + '
' + '
' + '
' + msg + '
' + '
' + '' + '
' + '
' + '
'; $("body").append(html); $("#message_box_button_ok").unbind().click(function() { _isMessageShown = false; $(".message-box-cnt").remove(); if (onDismiss) { onDismiss(); } }); } function confirmMessage(message, affirmativeButton, negativeButton, onAffirmative, onNegative) { _isMessageShown = true; message = message.replace(/\n/g, "
"); html = '
' + '
' + '
' + '
' + message + '
' + '
' + '' + '' + '
' + '
' + '
'; $("body").append(html); $("#message_box_button_yes").unbind().click(function() { _isMessageShown = false; $(".message-box-cnt").remove(); if (onAffirmative) { onAffirmative(); } }); $("#message_box_button_no").unbind().click(function() { _isMessageShown = false; $(".message-box-cnt").remove(); if (onNegative) { onNegative(); } }); } function openInNewTab(url) { var win = window.open(url, '_blank'); win.focus(); } (function($) { $.fn.fitText = function(kompressor, options) { // Setup options var compressor = kompressor || 1, settings = $.extend({ 'minFontSize' : Number.NEGATIVE_INFINITY, 'maxFontSize' : Number.POSITIVE_INFINITY }, options); return this.each(function() { // Store the object var $this = $(this); // Resizer() resizes items based on the object width divided by the compressor * 10 var resizer = function () { $this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize))); }; // Call once to set. resizer(); // Call on resize. Opera debounces their resize by default. $(window).on('resize.fittext orientationchange.fittext', resizer); }); }; })(jQuery); function autoSizeText(selector) { var el, elements, _i, _len, _results; elements = $(selector); if (elements.length < 0) { return; } _results = []; for (_i = 0, _len = elements.length; _i < _len; _i++) { el = elements[_i]; _results.push((function(el) { var resizeText, _results1; resizeText = function() { var elNewFontSize; elNewFontSize = (parseInt($(el).css('font-size').slice(0, -2)) - 1) + 'px'; return $(el).css('font-size', elNewFontSize); }; _results1 = []; while (el.scrollHeight > el.offsetHeight) { _results1.push(resizeText()); } return _results1; })(el)); } return _results; }; function setUserEventRoles(roles) { Session.set("event_roles", JSON.stringify(roles)); _userEventRoles = roles; } function isUserHaveEventRole(role) { if (_userEventRoles == null) { _userEventRoles = JSON.parse(Session.get("event_roles")); } if (role >= 1000) { role -= 1000; } return _userEventRoles.includes(role); } function getListOfSelectVals(selector) { var sels = $(selector); var items = new Array; for (var i = 0; i < sels.length; i++) { var sel = sels.get(i); val = $(sel).val(); if (val != -1) { items.push(val); } } return items.join(","); } function setListOfSelectVals(selector, strList, addSelectFunc) { var ids = strList.split(","); ids.forEach(function(value, index, array) { if (value == "") { return; } var itemIndex = addSelectFunc(); var selItem = $("#" + selector + "_" + itemIndex + " select"); selItem.val(value); }); } function setInputLettersOnly(itemSelector) { $(itemSelector).keypress(function(event) { if (event.which < "A".charCodeAt(0) || (event.which > "Z".charCodeAt(0) && event.which < "a".charCodeAt(0)) || event.which > "z".charCodeAt(0)) { event.preventDefault(); } }); } function setInputDigitsOnly(itemSelector) { $(itemSelector).keypress(function(event) { if (event.which < "0".charCodeAt(0) || event.which > "9".charCodeAt(0)) { event.preventDefault(); } }); } function setInputFloat(itemSelector, maxInt, maxDec) { $(itemSelector).keypress(function(event) { if ((event.which < "0".charCodeAt(0) || event.which > "9".charCodeAt(0)) && event.which != ".".charCodeAt(0)) { event.preventDefault(); } if (event.which == ".".charCodeAt(0)) { if ($(this).val().indexOf(".") >= 0) { event.preventDefault(); } } else { if (maxInt != null && $(this).val().indexOf(".") == -1 && $(this).val().length == maxInt) { $(this).val($(this).val() + "."); } else if (maxDec != null) { var parts = $(this).val().split("."); if (parts.length > 1 && parts[1].length >= maxDec) { event.preventDefault(); } } } }); } function setInputPhoneNumber(itemSelector) { $(itemSelector).keypress(function(event) { if (event.which < "0".charCodeAt(0) || event.which > "9".charCodeAt(0)) { var isEmpty = ($(this).val() == ""); if (isEmpty) { if (event.which == "+".charCodeAt(0)) { return; } } event.preventDefault(); } }); } function checkValueRange(selector, min, max) { if (typeof min == "string") { min = parseInt($(min).val().trim()); } if (typeof max == "string") { max = parseInt($(max).val().trim()); } var val = parseInt($(selector).val().trim()); if (isNaN(val)) { return false; } return (val >= min && val <= max); } function checkValueRangeFloat(selector, min, max) { if (typeof min == "string") { min = parseFloat($(min).val().trim()); } if (typeof max == "string") { max = parseFloat($(max).val().trim()); } var val = parseFloat($(selector).val().trim()); if (isNaN(val)) { return false; } return (val >= min && val <= max); } function gotoHomePage() { if (isUserHaveEventRole(1001) || Session.get("user_type") == 1) { window.location.replace("index.php"); } else if (isUserHaveEventRole(1005)) { var postData = new Object(); postData["request"] = "get_my_location"; postData["token"] = Session.get("token"); callAPI(postData, function(json) { Session.set("location_id", json["location_id"]); window.location.replace("loc_events.php"); }); } else { showMessage("Sorry, you don't have access", MESSAGE_TYPE_ERROR); } } function hasAccessToThisPage() { if (isUserHaveEventRole(1005)) { var allowedPages = ["loc_events.php", "loc_categories.php", "loc_rounds.php", "loc_participants.php", "loc_results.php", "loc_participation.php"]; if (!allowedPages.includes(currPageName)) { return false; } } return true; }