/** * * Schedule Dialog creation methods. * */ // Init Day.JS plugins dayjs.extend(window.dayjs_plugin_utc); dayjs.extend(window.dayjs_plugin_timezone); function openAddShowForm(nowOrFuture) { if ($("#add-show-form").length == 1) { if ($("#add-show-form").css("display") == "none") { if (nowOrFuture === true) { //true means "now" $("#add_show_start_now-now").attr("checked", "checked"); setupStartTimeWidgets(); } $("#add-show-form").show(); windowResize(); // collapse advanced configuration sections $("#schedule-show-auto").hide(); $("#live-stream-override").hide(); $("#schedule-record-rebroadcast").hide(); $("#schedule-show-who").hide(); $("#schedule-show-style").hide(); } $("#schedule-show-what").show(0, function () { $add_show_name = $("#add_show_name"); $add_show_name.focus(); $add_show_name.select(); }); } } function makeAddShowButton() { if ($(".add-button").length === 0) { $(".fc-header-left") .prepend('') .prepend( '' + '" + "" ); } } function showForm() { openAddShowForm(true); toggleAddShowButton(); } function toggleAddShowButton() { var aTag = $(".add-button"); aTag.prop("disabled", function (i, v) { return !v; }); } function setupStartTimeWidgets() { if ($("input[name=add_show_start_now]:checked").val() == "now") { $("#add_show_start_date").prop("disabled", "true"); $("#add_show_start_time").prop("disabled", "true"); var currentTimezone = $("#add_show_timezone").val(); //Set the show start time to now (in the show timezone) var now = dayjs(new Date()).tz(currentTimezone); $("#add_show_start_date").val(now.format("YYYY-MM-DD")); $("#add_show_start_time").val(now.format("HH:mm")); //Set the show end time to be now + 1 hour. var nowShowEnd = now.add(1, "h"); $("#add_show_end_date").val(nowShowEnd.format("YYYY-MM-DD")); $("#add_show_end_date_no_repeat").val(nowShowEnd.format("YYYY-MM-DD")); $("#add_show_end_time").val(nowShowEnd.format("HH:mm")); //Disabled linked show option since user won't be able to schedule //content $("#add_show_linked").prop("disabled", "true"); } else { //Do not enable start date and time option when a show has already started if (!$("#add_show_start_now-now").prop("disabled")) { $("#add_show_start_date").removeProp("disabled"); $("#add_show_start_time").removeProp("disabled"); } } } function calculateShowColor() { var bgColorEle = $("#add_show_background_color"); var textColorEle = $("#add_show_color"); var colorCode = stringToColor($("#add_show_start_time").val()); //$(this).val()); //bgColorEle.val(colorCode); //textColorEle.val(getContrastYIQ(colorCode)); } //$el is DOM element #add-show-form //form is the new form contents to append to $el function redrawAddShowForm($el, form) { //need to clean up the color picker. $el.find("#schedule-show-style input").each(function (i, el) { var $input = $(this), colId = $input.data("colorpickerId"); $("#" + colId).remove(); $input.removeData(); }); $el.empty().append(form); setAddShowEvents($el); } function closeAddShowForm(event) { event.stopPropagation(); event.preventDefault(); var $el = $("#add-show-form"); $el.hide(); windowResize(); $.get(baseUrl + "Schedule/get-form", { format: "json" }, function (json) { redrawAddShowForm($el, json.form); }); toggleAddShowButton(); } //dateText mm-dd-yy function startDpSelect(dateText, inst) { var time, date; time = dateText.split("-"); date = new Date(time[0], time[1] - 1, time[2]); if (inst.input) inst.input.trigger("input"); } function endDpSelect(dateText, inst) { var time, date; time = dateText.split("-"); date = new Date(time[0], time[1] - 1, time[2]); if (inst.input) inst.input.trigger("input"); } function createDateInput(el, onSelect) { var date; el.datepicker({ minDate: adjustDateToServerDate(new Date(), timezoneOffset), onSelect: onSelect, dateFormat: "yy-mm-dd", //i18n_months, i18n_days_short are in common.js monthNames: i18n_months, dayNamesMin: i18n_days_short, closeText: $.i18n._("Close"), //showButtonPanel: true, firstDay: calendarPref.weekStart, }); } function autoSelect(event, ui) { $("#add_show_hosts-" + ui.item.index).attr("checked", "checked"); event.preventDefault(); } function findHosts(request, callback) { var search, url; url = baseUrl + "User/get-hosts"; search = request.term; var noResult = new Array(); noResult[0] = new Array(); noResult[0]["value"] = $("#add_show_hosts_autocomplete").val(); noResult[0]["label"] = $.i18n._("No result found"); noResult[0]["index"] = null; $.post( url, { format: "json", term: search }, function (json) { if (json.hosts.length < 1) { callback(noResult); } else { callback(json.hosts); } } ); } function beginEditShow(data) { if (data.show_error == true) { alertShowErrorAndReload(); return false; } redrawAddShowForm($("#add-show-form"), data.newForm); toggleAddShowButton(); openAddShowForm(false); } function onStartTimeSelect() { $("#add_show_start_time").trigger("input"); } function onEndTimeSelect() { $("#add_show_end_time").trigger("input"); } function padZeroes(number, length) { var str = "" + number; while (str.length < length) { str = "0" + str; } return str; } function hashCode(str) { // java String#hashCode var hash = 0; for (var i = 0; i < str.length; i++) { hash = str.charCodeAt(i) + ((hash << 5) - hash); } return hash; } function intToRGB(i) { return ( padZeroes(((i >> 16) & 0xff).toString(16), 2) + padZeroes(((i >> 8) & 0xff).toString(16), 2) + padZeroes((i & 0xff).toString(16), 2) ); } function stringToColor(s) { var palette = [ "42d5a1", "56bd99", "65ab93", "7b938b", "42a4d5", "569bbd", "6594ab", "7b8b93", "4264d5", "566fbd", "6576ab", "7b8193", ]; //var palette = ['d56f42', 'aad542', '7242d5', '42d563', 'd542be']; return palette[Math.abs(hashCode(s)) % palette.length]; //return intToRGB(hashCode(s)); } function getContrastYIQ(hexcolor) { var r = parseInt(hexcolor.substr(0, 2), 16); var g = parseInt(hexcolor.substr(2, 2), 16); var b = parseInt(hexcolor.substr(4, 2), 16); var yiq = (r * 299 + g * 587 + b * 114) / 1000; return yiq >= 128 ? "000000" : "ffffff"; } function setAddShowEvents(form) { //var form = $("#add-show-form"); form.find("h3").click(function () { $(this).next().toggle(); }); form.find("input:radio[name=add_show_start_now]").click(function () { setupStartTimeWidgets(); if ($(this).val() == "future") { $("#add_show_linked").removeProp("disabled"); } }); if (!form.find("#add_show_has_autoplaylist").attr("checked")) { form.find("#add_show_playlist_dropdown").hide(); form.find("#add_show_autoplaylist_repeat").hide(); } else { $("#add_show_playlist_dropdown").show(); } if (!form.find("#add_show_repeats").attr("checked")) { form.find("#schedule-show-when > fieldset:last").hide(); $("#add_show_rebroadcast_relative").hide(); } else { $("#add_show_rebroadcast_absolute").hide(); } if (!form.find("#add_show_record").attr("checked")) { form.find("#add_show_rebroadcast").hide(); } if (!form.find("#add_show_rebroadcast").attr("checked")) { form .find("#schedule-record-rebroadcast > fieldset:not(:first-child)") .hide(); } // If we're adding a new show or the show has no logo, hide the "Current Logo" element tree $("[id^=add_show_logo_current]").toggle( $("#add_show_logo_current").attr("src") !== "" && $(".button-bar.bottom").find(".ui-button-text").text() === "Update show" ); var submitButton = $(".button-bar.bottom").find(".add-show-submit"); $("[id^=add_show_instance_description]").toggle( submitButton.attr("data-action") === "edit-repeating-show-instance" ); form.find("#add_show_has_autoplaylist").click(function () { $(this).blur(); form.find("#add_show_playlist_dropdown").toggle(); form.find("#add_show_autoplaylist_repeat").toggle(); }); form.find("#add_show_repeats").click(function () { $(this).blur(); form.find("#schedule-show-when > fieldset:last").toggle(); var checkBoxSelected = false; var days = form.find("#add_show_day_check-element input").each(function () { var currentCheckBox = $(this).attr("checked"); if (currentCheckBox && currentCheckBox == "checked") { checkBoxSelected = true; } }); if (!checkBoxSelected) { var d = getDateFromString( form.find("#add_show_start_date").attr("value") ); if (d != null) form.find("#add_show_day_check-" + d.getDay()).attr("checked", true); } //must switch rebroadcast displays if (form.find("#add_show_rebroadcast").attr("checked")) { if ($(this).attr("checked")) { form.find("#add_show_rebroadcast_absolute").hide(); form.find("#add_show_rebroadcast_relative").show(); } else { form.find("#add_show_rebroadcast_absolute").show(); form.find("#add_show_rebroadcast_relative").hide(); } } }); form.find("#add_show_linked").click(function () { if ($(this).attr("readonly")) { if ($("#show-link-readonly-warning").length === 0) { $(this) .parent() .after( "" ); } return false; } //only display the warning message if a show is being edited if ( $(".button-bar.bottom").find(".ui-button-text").text() === "Update show" ) { if ($(this).attr("checked") && $("#show-link-warning").length === 0) { $(this) .parent() .after( "" ); } if (!$(this).attr("checked") && $("#show-link-warning").length !== 0) { $("#show-link-warning").remove(); } } }); form .find("#add_show_linked-label") .before(""); form.find("#add_show_record").click(function () { $(this).blur(); form.find("#add_show_rebroadcast").toggle(); if (form.find("#add_show_record").attr("checked")) { form .find("#add_show_linked") .attr("checked", false) .attr("disabled", true); } else { form.find("#add_show_linked").attr("disabled", false); } //uncheck rebroadcast checkbox form.find("#add_show_rebroadcast").attr("checked", false); //hide rebroadcast options form .find("#schedule-record-rebroadcast > fieldset:not(:first-child)") .hide(); }); form.find("#add_show_rebroadcast").click(function () { $(this).blur(); if (form.find("#add_show_record").attr("checked")) { if ( $(this).attr("checked") && !form.find("#add_show_repeats").attr("checked") ) { form.find("#add_show_rebroadcast_absolute").show(); } else if ( $(this).attr("checked") && form.find("#add_show_repeats").attr("checked") ) { form.find("#add_show_rebroadcast_relative").show(); } else { form .find("#schedule-record-rebroadcast > fieldset:not(:first-child)") .hide(); } } }); // in case user is creating a new show, there will be // no show_id so we have to store the default timezone // to be able to do the conversion when the timezone // setting changes var currentTimezone = form.find("#add_show_timezone").val(); form.find("#add_show_timezone").change(function () { var startDateField = form.find("#add_show_start_date"), startTimeField = form.find("#add_show_start_time"), endDateField = form.find("#add_show_end_date_no_repeat"), endTimeField = form.find("#add_show_end_time"), newTimezone = form.find("#add_show_timezone").val(); $.post( baseUrl + "Schedule/localize-start-end-time", { format: "json", startDate: startDateField.val(), startTime: startTimeField.val(), endDate: endDateField.val(), endTime: endTimeField.val(), newTimezone: newTimezone, oldTimezone: currentTimezone, }, function (json) { startDateField.val(json.start.date); startTimeField.val(json.start.time); endDateField.val(json.end.date); endTimeField.val(json.end.time); // Change the timezone now that we've updated the times currentTimezone = newTimezone; } ); }); form.find("#add_show_repeat_type").change(function () { toggleRepeatDays(); toggleMonthlyRepeatType(); }); toggleMonthlyRepeatType(); toggleRepeatDays(); function toggleRepeatDays() { if ( form.find("#add_show_repeat_type").val() == 2 || form.find("#add_show_repeat_type").val() == 3 ) { form .find("#add_show_day_check-label, #add_show_day_check-element") .hide(); //form.find("#add_show_monthly_repeat_type-label, #add_show_monthly_repeat_type-element").show(); } else { form .find("#add_show_day_check-label, #add_show_day_check-element") .show(); //form.find("#add_show_monthly_repeat_type-label, #add_show_monthly_repeat_type-element").hide(); } } function toggleMonthlyRepeatType() { if (form.find("#add_show_repeat_type").val() == 2) { form .find( "#add_show_monthly_repeat_type-label, #add_show_monthly_repeat_type-element" ) .show(); } else { form .find( "#add_show_monthly_repeat_type-label, #add_show_monthly_repeat_type-element" ) .hide(); } } form.find("#add_show_day_check-label").addClass("block-display"); form.find("#add_show_day_check-element").addClass("block-display clearfix"); form.find("#add_show_day_check-element label").addClass("wrapp-label"); form.find("#add_show_day_check-element br").remove(); form.find(".show_timezone_help_icon").qtip({ content: { text: $.i18n._( "Timezone is set to the station timezone by default. Shows in the calendar will be displayed in your local time defined by the " + "Interface Timezone in your user settings." ), }, hide: { delay: 500, fixed: true, }, style: { border: { width: 0, radius: 4, }, classes: "ui-tooltip-dark ui-tooltip-rounded", }, position: { my: "left bottom", at: "right center", }, }); form.find(".show_autoplaylist_help_icon").qtip({ content: { text: $.i18n._( "Autoloading playlists' contents are added to shows one hour before the show airs. More information" ), }, hide: { delay: 500, fixed: true, }, style: { border: { width: 0, radius: 4, }, classes: "ui-tooltip-dark ui-tooltip-rounded", }, position: { my: "left bottom", at: "right center", }, }); form.find(".airtime_auth_help_icon").qtip({ content: { text: $.i18n._( "This follows the same security pattern for the shows: only users assigned to the show can connect." ), }, hide: { delay: 500, fixed: true, }, style: { border: { width: 0, radius: 4, }, classes: "ui-tooltip-dark ui-tooltip-rounded", }, position: { my: "left bottom", at: "right center", }, }); form.find(".custom_auth_help_icon").qtip({ content: { text: $.i18n._( "Specify custom authentication which will work only for this show." ), }, hide: { delay: 500, fixed: true, }, style: { border: { width: 0, radius: 4, }, classes: "ui-tooltip-dark ui-tooltip-rounded", }, position: { my: "left bottom", at: "right center", }, }); form.find(".stream_username_help_icon").qtip({ content: { text: $.i18n._( "If your live streaming client does not ask for a username, this field should be 'source'." ), }, hide: { delay: 500, fixed: true, }, style: { border: { width: 0, radius: 4, }, classes: "ui-tooltip-dark ui-tooltip-rounded", }, position: { my: "left bottom", at: "right center", }, }); form.find(".show_linking_help_icon").qtip({ content: { text: $.i18n._( "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows" ), }, hide: { delay: 500, fixed: true, }, style: { border: { width: 0, radius: 4, }, classes: "ui-tooltip-dark ui-tooltip-rounded", }, position: { my: "left bottom", at: "right center", }, }); function endDateVisibility() { if (form.find("#add_show_no_end").is(":checked")) { form.find("#add_show_end_date").hide(); } else { form.find("#add_show_end_date").show(); } } endDateVisibility(); form.find("#add_show_no_end").click(endDateVisibility); createDateInput(form.find("#add_show_start_date"), startDpSelect); createDateInput(form.find("#add_show_end_date_no_repeat"), endDpSelect); createDateInput(form.find("#add_show_end_date"), endDpSelect); $("#add_show_start_time").timepicker({ amPmText: ["", ""], defaultTime: "00:00", onSelect: onStartTimeSelect, hourText: $.i18n._("Hour"), minuteText: $.i18n._("Minute"), }); $("#add_show_end_time").timepicker({ amPmText: ["", ""], onSelect: onEndTimeSelect, hourText: $.i18n._("Hour"), minuteText: $.i18n._("Minute"), }); form.find('input[name^="add_show_rebroadcast_date_absolute"]').datepicker({ minDate: adjustDateToServerDate(new Date(), timezoneOffset), dateFormat: "yy-mm-dd", //i18n_months, i18n_days_short are in common.js monthNames: i18n_months, dayNamesMin: i18n_days_short, closeText: "Close", showButtonPanel: true, firstDay: calendarPref.weekStart, }); form.find('input[name^="add_show_rebroadcast_time"]').timepicker({ amPmText: ["", ""], defaultTime: "", closeButtonText: $.i18n._("Done"), hourText: $.i18n._("Hour"), minuteText: $.i18n._("Minute"), }); form.find(".add_absolute_rebroadcast_day").click(function () { var li = $(this) .parent() .find("ul.formrow-repeat > li:visible:last") .next(); li.show(); li = li.next(); if (li.length === 0) { $(this).hide(); } }); form.find('a[id^="remove_rebroadcast"]').click(function () { var list = $(this).parent().parent(); var li_num = $(this).parent().index(); var num = list.find("li").length; var count = num - li_num; var curr = $(this).parent(); var next = curr.next(); for (var i = 0; i <= count; i++) { var date = next.find('[name^="add_show_rebroadcast_date"]').val(); curr.find('[name^="add_show_rebroadcast_date"]').val(date); var time = next.find('[name^="add_show_rebroadcast_time"]').val(); curr.find('[name^="add_show_rebroadcast_time"]').val(time); curr = next; next = curr.next(); } list .find("li:visible:last") .find('[name^="add_show_rebroadcast_date"]') .val("") .end() .find('[name^="add_show_rebroadcast_time"]') .val("") .end() .hide(); list.next().show(); }); form.find("#add_show_hosts_autocomplete").autocomplete({ source: findHosts, select: autoSelect, delay: 200, }); form.find("#add_show_hosts_autocomplete").keypress(function (e) { if (e.which == 13) { return false; } }); form.find("#schedule-show-style .input_text").ColorPicker({ onChange: function (hsb, hex, rgb, el) { $(el).val(hex); }, onSubmit: function (hsb, hex, rgb, el) { $(el).val(hex); $(el).ColorPickerHide(); }, onBeforeShow: function () { $(this).ColorPickerSetColor(this.value); }, }); // when an image is uploaded, we want to show it to the user form.find("#add_show_logo").change(function (event) { if (this.files && this.files[0]) { $("#add_show_logo_preview").show(); var reader = new FileReader(); // browser compatibility? reader.onload = function (e) { $("#add_show_logo_preview").attr("src", e.target.result); }; // check image size so we don't crash the page trying to render if (validateImage(this.files[0], $("#add_show_logo"))) { // read the image data as though it were a data URI reader.readAsDataURL(this.files[0]); } else { // remove the file element data $(this).val("").replaceWith($(this).clone(true)); $("#add_show_logo_preview").hide(); } } else { $("#add_show_logo_preview").hide(); } }); form.find("#add_show_logo_current_remove").click(function () { if ( confirm($.i18n._("Are you sure you want to delete the current logo?")) ) { var showId = $("#add_show_id").attr("value"); if (showId && $("#add_show_logo_current").attr("src") !== "") { var action = "/rest/show-image?csrf_token=" + $("#csrf").val() + "&id=" + showId; $.ajax({ url: action, data: "", type: "DELETE", success: function () { $("#add_show_logo_current").prop("src", ""); $("[id^=add_show_logo_current]").hide(); }, }); } } }); form.find("#add-show-close").click(closeAddShowForm); form.find(".add-show-submit").click(function (event) { event.preventDefault(); var addShowButton = $(this); $("#schedule-add-show").block({ message: null, applyPlatformOpacityRules: false, }); //when editing a show, the record option is disabled //we have to enable it to get the correct value when //we call serializeArray() if (form.find("#add_show_record").attr("disabled", true)) { form.find("#add_show_record").attr("disabled", false); } var startDateDisabled = false, startTimeDisabled = false; // Similarly, we need to re-enable start date and time if they're disabled if (form.find("#add_show_start_date").prop("disabled") === true) { form.find("#add_show_start_date").attr("disabled", false); startDateDisabled = true; } if (form.find("#add_show_start_time").prop("disabled") === true) { form.find("#add_show_start_time").attr("disabled", false); startTimeDisabled = true; } var data = $("form").serializeArray(); // We need to notify the application if date and time were disabled data.push({ name: "start_date_disabled", value: startDateDisabled }); data.push({ name: "start_time_disabled", value: startTimeDisabled }); var hosts = $("#add_show_hosts-element input") .map(function () { if ($(this).attr("checked")) { return $(this).val(); } }) .get(); var days = $("#add_show_day_check-element input") .map(function () { if ($(this).attr("checked")) { return $(this).val(); } }) .get(); var start_date = $("#add_show_start_date").val(), end_date = $("#add_show_end_date").val(), action = baseUrl + "Schedule/" + String(addShowButton.attr("data-action")); var image; if ( $("#add_show_logo")[0] && $("#add_show_logo")[0].files && $("#add_show_logo")[0].files[0] ) { image = new FormData(); image.append("file", $("#add_show_logo")[0].files[0]); } $.ajax({ url: action, data: { format: "json", data: data, hosts: hosts, days: days }, success: function (json) { if (json.showId && image) { // Successfully added the show, and it contains an image to upload var imageAction = "/rest/show-image?csrf_token=" + $("#csrf").val() + "&id=" + json.showId; // perform a second xhttprequest in order to send the show image $.ajax({ url: imageAction, data: image, cache: false, contentType: false, processData: false, type: "POST", }); } $("#schedule-add-show").unblock(); var $addShowForm = $("#add-show-form"); if (json.form) { redrawAddShowForm($addShowForm, json.form); $("#add_show_end_date").val(end_date); $("#add_show_start_date").val(start_date); showErrorSections(); } else if (json.edit) { $("#schedule_calendar").removeAttr("style").fullCalendar("render"); $addShowForm.hide(); toggleAddShowButton(); $.get( baseUrl + "Schedule/get-form", { format: "json" }, function (json) { redrawAddShowForm($addShowForm, json.form); } ); } else { redrawAddShowForm($addShowForm, json.newForm); scheduleRefetchEvents(json); $addShowForm.hide(); toggleAddShowButton(); } /* CC-6062: Resize the window to avoid stretching the last column */ windowResize(); makeAddShowButton(); }, }); }); var regDate = new RegExp(/^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$/); var regTime = new RegExp(/^[0-2][0-9]:[0-5][0-9]$/); // when start date/time changes, set end date/time to start date/time+1 hr $("#add_show_start_date, #add_show_start_time").bind( "input", "change", function () { var startDateString = $("#add_show_start_date").val(); var startTimeString = $("#add_show_start_time").val(); if (regDate.test(startDateString) && regTime.test(startTimeString)) { var startDate = startDateString.split("-"); var startTime = startTimeString.split(":"); var startDateTime = new Date( startDate[0], parseInt(startDate[1], 10) - 1, startDate[2], startTime[0], startTime[1], 0, 0 ); var endDateString = $("#add_show_end_date_no_repeat").val(); var endTimeString = $("#add_show_end_time").val(); var endDate = endDateString.split("-"); var endTime = endTimeString.split(":"); var endDateTime = new Date( endDate[0], parseInt(endDate[1], 10) - 1, endDate[2], endTime[0], endTime[1], 0, 0 ); if (startDateTime.getTime() >= endDateTime.getTime()) { var duration = $("#add_show_duration").val(); // parse duration var time = 0; var info = duration.split(" "); var h = parseInt(info[0], 10); time += h * 60 * 60 * 1000; if (info.length > 1 && $.trim(info[1]) !== "") { var m = parseInt(info[1], 10); time += m * 60 * 1000; } endDateTime = new Date(startDateTime.getTime() + time); } var endDateFormat = endDateTime.getFullYear() + "-" + pad(endDateTime.getMonth() + 1, 2) + "-" + pad(endDateTime.getDate(), 2); var endTimeFormat = pad(endDateTime.getHours(), 2) + ":" + pad(endDateTime.getMinutes(), 2); $("#add_show_end_date_no_repeat").val(endDateFormat); $("#add_show_end_time").val(endTimeFormat); // calculate duration var startDateTimeString = startDateString + " " + startTimeString; var endDateTimeString = $("#add_show_end_date_no_repeat").val() + " " + $("#add_show_end_time").val(); var timezone = $("#add_show_timezone").val(); calculateDuration(startDateTimeString, endDateTimeString, timezone); } } ); // when end date/time changes, check if the changed date is in past of start date/time $("#add_show_end_date_no_repeat, #add_show_end_time").bind( "input", "change", function () { var endDateString = $("#add_show_end_date_no_repeat").val(); var endTimeString = $("#add_show_end_time").val(); if (regDate.test(endDateString) && regTime.test(endTimeString)) { var startDateString = $("#add_show_start_date").val(); var startTimeString = $("#add_show_start_time").val(); var startDate = startDateString.split("-"); var startTime = startTimeString.split(":"); var startDateTime = new Date( startDate[0], parseInt(startDate[1], 10) - 1, startDate[2], startTime[0], startTime[1], 0, 0 ); var endDate = endDateString.split("-"); var endTime = endTimeString.split(":"); var endDateTime = new Date( endDate[0], parseInt(endDate[1], 10) - 1, endDate[2], endTime[0], endTime[1], 0, 0 ); if (startDateTime.getTime() > endDateTime.getTime()) { $("#add_show_end_date_no_repeat").css("background-color", "#F49C9C"); $("#add_show_end_time").css("background-color", "#F49C9C"); } else { $("#add_show_end_date_no_repeat").css("background-color", ""); $("#add_show_end_time").css("background-color", ""); } // calculate duration var startDateTimeString = startDateString + " " + startTimeString; var endDateTimeString = endDateString + " " + endTimeString; var timezone = $("#add_show_timezone").val(); calculateDuration(startDateTimeString, endDateTimeString, timezone); } } ); if ($("#cb_custom_auth").attr("checked")) { $("#custom_auth_div").show(); } else { $("#custom_auth_div").hide(); } $("#cb_custom_auth").change(function () { if ($(this).attr("checked")) { $("#custom_auth_div").show(); } else { $("#custom_auth_div").hide(); } }); function calculateDuration(startDateTime, endDateTime, timezone) { var loadingIcon = $("#icon-loader-small"); loadingIcon.show(); $.post( baseUrl + "Schedule/calculate-duration", { startTime: startDateTime, endTime: endDateTime, timezone: timezone }, function (data) { $("#add_show_duration").val(JSON.parse(data)); loadingIcon.hide(); } ); } // Since Zend's setAttrib won't apply through the wrapper, set accept=image/* here $("#add_show_logo").prop("accept", "image/*"); //$('#add_show_name').bind('input', 'change', function(){ $("#add_show_start_time").bind("input", "change", function () { calculateShowColor(); }); } function showErrorSections() { if ($("#schedule-show-what .errors").length > 0) { $("#schedule-show-what").show(); } if ($("#schedule-show-when .errors").length > 0) { $("#schedule-show-when").show(); } if ($("#schedule-show-who .errors").length > 0) { $("#schedule-show-who").show(); } if ($("#schedule-show-style .errors").length > 0) { $("#schedule-show-style").show(); } if ($("#add_show_rebroadcast_absolute .errors").length > 0) { $("#schedule-record-rebroadcast").show(); $("#add_show_rebroadcast_absolute").show(); } if ($("#live-stream-override .errors").length > 0) { $("#live-stream-override").show(); } if ($("#add_show_rebroadcast_relative .errors").length > 0) { $("#schedule-record-rebroadcast").show(); $("#add_show_rebroadcast_relative").show(); } } $(document).ready(function () { setAddShowEvents($("#add-show-form")); }); //Alert the error and reload the page //this function is used to resolve concurrency issue function alertShowErrorAndReload() { alert($.i18n._("The show instance doesn't exist anymore!")); window.location.reload(); }