PageSourceSearch

https://cdn.manageengine.jp/sites/manageengine/node/js/3701.js

js manageengine.jp collected 2026-10-02 11:49:20 UTC 34,432 bytes, 788 lines download raw bytes

1/* Inject the Oswald web font (used by the notes stats numbers) into <head>
2   dynamically, so the font dependency lives with the JS rather than the markup. */
3   (function () {
4    function loadOswaldFont($) {
5        if (document.getElementById("oswald-font")) {
6            return;
7        }
8        $("head")
9            .append('<link rel="preconnect" href="https://fonts.googleapis.com">')
10            .append('<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>')
11            .append(
12                '<link id="oswald-font" rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Oswald:wght@700&display=swap">'
13            );
14    }
15
16    var tries = 0;
17    (function waitForJQuery() {
18        if (window.jQuery) {
19            window.jQuery(function () {
20                loadOswaldFont(window.jQuery);
21            });
22            return;
23        }
24        if (tries++ > 60) {
25            return;
26        }
27        setTimeout(waitForJQuery, 100);
28    })();
29})();
30
31/* Hero WorkDrive video — autoplay on page load + continuous loop.
32   The reference (admp_v1.js) builds the embed iframe on a thumbnail click; here
33   we want it to start on load instead. The WorkDrive embed honours `autoplay=1`
34   in the iframe URL (browsers only permit unmuted-less autoplay, so it starts
35   muted), and `loop=1` requests continuous playback. Because the player runs on
36   a different origin we cannot reach into it directly, so the JS below is a
37   best-effort assist that (re)asserts the autoplay/loop URL params and nudges
38   the embedded player via postMessage after it loads. */
39(function () {
40    var iframe = document.querySelector(".uc-hero__iframe");
41    if (!iframe) {
42        return;
43    }
44
45    var WORKDRIVE_EMBED_BASE = "https://workdrive.zohoexternal.in/embed/";
46    var WORKDRIVE_EMBED_QUERY =
47        "?toolbar=false&appearance=dark&themecolor=green&autoplay=1&loop=1";
48    var WORKDRIVE_EMBED_ORIGIN = "https://workdrive.zohoexternal.in";
49    var PLAY_RETRY_DELAYS_MS = [800, 2000, 4000];
50    var PLAY_BUTTON_SELECTORS = [
51        ".vjs-big-play-button",
52        "button.vjs-big-play-button",
53        ".zp-video-play-btn",
54        "[class*='play-button']",
55        "[class*='big-play']",
56        "button[aria-label*='Play']",
57        "button[aria-label*='play']"
58    ];
59
60    function ensureAutoplaySrc() {
61        var workDriveId = iframe.getAttribute("data-workdrive-id");
62        var currentSrc = iframe.getAttribute("src") || "";
63        if (currentSrc.indexOf("autoplay=1") !== -1) {
64            return;
65        }
66        if (workDriveId) {
67            iframe.setAttribute("src", WORKDRIVE_EMBED_BASE + workDriveId + WORKDRIVE_EMBED_QUERY);
68        }
69    }
70
71    /* Same-origin policy blocks this for the cross-origin WorkDrive embed; it is
72       only a harmless no-op fallback wrapped in try/catch. */
73    function clickIframePlayButton() {
74        var doc;
75        try {
76            doc = iframe.contentDocument || iframe.contentWindow.document;
77        } catch (err) {
78            return;
79        }
80        if (!doc) {
81            return;
82        }
83        for (var i = 0; i < PLAY_BUTTON_SELECTORS.length; i++) {
84            var btn = doc.querySelector(PLAY_BUTTON_SELECTORS[i]);
85            if (btn) {
86                btn.click();
87                return;
88            }
89        }
90    }
91
92    function postMessageToIframe() {
93        var win = iframe.contentWindow;
94        if (!win) {
95            return;
96        }
97        try {
98            win.postMessage({ type: "play" }, WORKDRIVE_EMBED_ORIGIN);
99            win.postMessage({ action: "play" }, WORKDRIVE_EMBED_ORIGIN);
100            win.postMessage({ command: "play" }, WORKDRIVE_EMBED_ORIGIN);
101            win.postMessage({ type: "loop", value: true }, WORKDRIVE_EMBED_ORIGIN);
102            win.postMessage(JSON.stringify({ event: "play", loop: true }), "*");
103        } catch (err) {
104            /* cross-origin postMessage may fail silently */
105        }
106    }
107
108    function nudgePlay() {
109        ensureAutoplaySrc();
110        clickIframePlayButton();
111        postMessageToIframe();
112    }
113
114    function scheduleNudges() {
115        PLAY_RETRY_DELAYS_MS.forEach(function (delay) {
116            setTimeout(nudgePlay, delay);
117        });
118    }
119
120    ensureAutoplaySrc();
121    iframe.addEventListener("load", scheduleNudges);
122
123    if (document.readyState === "complete") {
124        scheduleNudges();
125    } else {
126        window.addEventListener("load", scheduleNudges);
127    }
128})();
129
130/* Header nav — smooth scroll to in-page sections (desktop + mobile) */
131(function () {
132    var navLinks = document.querySelectorAll(".uc-nav-list a[href^='#']");
133    if (!navLinks.length) {
134        return;
135    }
136
137    function getScrollOffset() {
138        var header = document.querySelector(".uc-header");
139        return header ? Math.ceil(header.getBoundingClientRect().height) + 11 : 90;
140    }
141
142    function scrollToTarget(target) {
143        if (!target) {
144            return;
145        }
146        var prefersReduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
147        var scrollTop =
148            target.getBoundingClientRect().top +
149            (window.pageYOffset || document.documentElement.scrollTop) -
150            getScrollOffset();
151
152        window.scrollTo({
153            top: Math.max(0, scrollTop),
154            behavior: prefersReduced ? "auto" : "smooth"
155        });
156    }
157
158    navLinks.forEach(function (link) {
159        link.addEventListener(
160            "click",
161            function (event) {
162                var hash = link.getAttribute("href");
163                if (!hash || hash === "#") {
164                    return;
165                }
166                var target = document.querySelector(hash);
167                if (!target) {
168                    return;
169                }
170                event.preventDefault();
171                event.stopPropagation();
172                scrollToTarget(target);
173            },
174            true
175        );
176    });
177})();
178
179/* Benefits slider — Slick Slider only below 600px.
180   At 600px and above the section stays a normal CSS grid. */
181(function () {
182    function initBenefits($) {
183        var $slider = $(".uc-benefits__grid");
184        if (!$slider.length) {
185            return;
186        }
187        var mq = window.matchMedia("(max-width: 599px)");
188        function apply() {
189            if (mq.matches) {
190                if (!$slider.hasClass("slick-initialized")) {
191                    $slider.slick({
192                        slidesToShow: 1,
193                        slidesToScroll: 1,
194                        infinite: true,
195                        dots: true,
196                        arrows: false
197                    });
198                }
199            } else if ($slider.hasClass("slick-initialized")) {
200                $slider.slick("unslick");
201            }
202        }
203        apply();
204        if (mq.addEventListener) {
205            mq.addEventListener("change", apply);
206        } else if (mq.addListener) {
207            mq.addListener(apply);
208        }
209    }
210
211    var tries = 0;
212    (function waitForSlick() {
213        if (window.jQuery && window.jQuery.fn && window.jQuery.fn.slick) {
214            window.jQuery(function () {
215                initBenefits(window.jQuery);
216            });
217            return;
218        }
219        if (tries++ > 60) {
220            return;
221        }
222        setTimeout(waitForSlick, 100);
223    })();
224})();
225
226/* ──────────────────────────────────────────────────────────────────────────
227   Registration form — dropdowns, validation, and submission.
228   Reuses the shared helpers from forms-utility.js (REQUEST_URL, uuidv4,
229   onPageLoad, getCurrentIP, calcTime, getJSTtimeZone, isEmpty, sendDataToSalesIQ).
230   ────────────────────────────────────────────────────────────────────────── */
231D_REQUEST_URL = REQUEST_URL; //You can change this variable (D_REQUEST_URL) value to test the local dev.
232CT_REQUEST_URL = D_REQUEST_URL;
233
234window.uuidValue = uuidv4() + new Date().getTime();
235/* UUID redirect */
236onPageLoad("80007", uuidValue);
237jQuery(document).ready(function () {
238    var pageUrl = window.location.href;
239    pageUrl = pageUrl.replaceAll("\"", "'");
240    $('#Page_URL').val(pageUrl);
241    var currentIP = getCurrentIP();
242    jQuery("#ip_address").val(currentIP);
243    var jstCurrentTIme = calcTime("+9");
244    var expiryTime = new Date(document.getElementById("expiryTime").value);
245    if (jstCurrentTIme > expiryTime) {
246        $(".registration_form").addClass("session_expired");
247        $(".registration_form").removeClass("ongoing_webinar");
248        $(".closing_form").addClass("close_webinar");
249        $(".form-wrapper").addClass("form-wrapper-closed");
250        $("#formloader").hide();
251    } else {
252        $(".registration_form").addClass("ongoing_webinar");
253        $(".registration_form").removeClass("session_expired");
254        $(".closing_form").removeClass("close_webinar");
255        $(".form-wrapper").removeClass("form-wrapper-closed");
256        $("#formloader").hide();
257    }
258    $('#consent').change(function () {
259        if (this.checked) {
260            $("#termsErr").hide();
261        }
262    });
263    // 
264    $("#oneToone_dropdown li").on('click', function () {
265        var Personal_Consultation = $(this).attr("data-vl");
266        $("#Personal_Consultation_Dropdown").val(Personal_Consultation);
267
268    });
269    /* Form Submission */
270    $("#webinarRegBtn").click(function (event) {
271        event.preventDefault();
272        event.stopImmediatePropagation();
273        if (validate()) {
274            $("#webinarRegBtn").prop('disabled', true);
275            var formData = new FormData($("#customer_data")[0]);
276            var FormId = "80007";
277            var otp = "0";
278            showLoader();
279            FormPushData(formData, uuidValue, FormId, otp);
280        } else {
281            $("#webinarRegBtn").prop('disabled', false);
282            return false;
283        }
284    });
285    /*Form Validation starts */
286    TextboxValidationOnChange("#company_name, #surname, #name, #partner_name, #department_name, #position");//Validation icon change for Company,Surname, Name
287    PhoneNumberValidationOnChange("#phone_no", "#phoneErr", "有効な電話番号を入力してください");//Validation icon change for Phone Number
288    EmailValidationOnChange("#email");//Validation icon change for Email
289    var emailField = $("#email");
290    var emailFocusNote = $("#emailFocusNote");
291    emailField.on("focus", function () {
292        if ($(this).val().trim() === "") {
293            emailFocusNote.show();
294        }
295    });
296    emailField.on("input", function () {
297        if ($(this).val().trim().length > 0) {
298            emailFocusNote.hide();
299        } else if ($(this).is(":focus")) {
300            emailFocusNote.show();
301        }
302    });
303    emailField.on("blur", function () {
304        emailFocusNote.hide();
305    });
306    // dropdown
307    $('.dropdown').click(function () {
308        $(this).attr('tabindex', 1).focus();
309        $(this).toggleClass('active');
310        $(this).find('.dropdown-menu').slideToggle(300);
311    });
312    $('.dropdown').focusout(function () {
313        $(this).removeClass('active');
314        $(this).find('.dropdown-menu').slideUp(300);
315    });
316    $('.dropdown .dropdown-menu li').click(function () {
317        if ($(this).hasClass('dropdown-heading')) return;
318        var dropdown_id = $(this).parent().attr("id");
319        var inputfield_id = dropdown_id.replace(/_dropdown$/, "");
320        var selected_list = $(this).parents('.dropdown').find('span');
321        selected_list.text($(this).text());
322        selected_list.attr("data-select", $(this).text());
323        selected_list.addClass("select_val");
324        $("#" + inputfield_id).val($(this).text());
325        $("#" + inputfield_id + "_div").hide();
326        $("#" + inputfield_id).removeClass('wrong');
327        $("#" + inputfield_id).addClass('right');
328        $("#" + inputfield_id).closest('.form-group').find('.err').addClass("errhide");
329        $(this).parents('.dropdown').find('input').attr('value', $(this).attr('id'));
330        $(".dropdown").find('.dropdown-menu').slideUp(300);
331        $(".dropdown").removeClass('active');
332    });
333    $("#source_dropdown li").on("click", function () {
334        var selectedValue = $(this).attr("data-vl");
335        if (selectedValue === "パートナー企業からのご紹介") {
336            $("#partner_name_group").show();
337        } else {
338            $("#partner_name_group").hide();
339            $("#partner_name").val("");
340        }
341    });
342    /*Form Validation ends */
343});
344FormPushData = function (formData, uuidValue, formIdValue, otp) {
345    var returnValue = false;
346    if (isEmpty(formData, uuidValue, formIdValue)) {
347        return returnValue;
348    }
349    otp = "0";
350    sendDataToSalesIQ($('#name').val(), $('#surname').val(), $('#email').val(), $('#phone_no').val(), $('#company_name').val());
351    var endPoint = "/push";
352    $.ajax({
353        url: CT_REQUEST_URL + endPoint + "?uuid=" + uuidValue + "&formId=" + formIdValue + "&otp=" + otp,
354        method: "POST",
355        data: formData,
356        processData: false,
357        contentType: false,
358        success: function (data) {
359            if (typeof (data) == "string") {
360                data = JSON.parse(data);
361            }
362            hideLoader();
363            if (data.CODE === 1) {
364                returnValue = true
365                formPushStatusValidate(returnValue);
366            } else {
367                returnValue = false
368                formPushStatusValidate(returnValue);
369            }
370        },
371        error: function (error) {
372            returnValue = undefined;
373            formPushStatusValidate(returnValue);
374            hideLoader();
375        }
376    });
377    return returnValue;
378}
379function formPushStatusValidate(formPushStatus) {
380    if (formPushStatus === true && formPushStatus != undefined) {
381        window.location.assign("https://www.manageengine.jp/thanks_seminar.html");
382    } else {
383        Errorhandler("#customer_data", "Form Submission Failed Please try again");
384    }
385}
386/* Form Error handler */
387function Errorhandler(element, message) {
388    $(element).append("<p class='errMsg'>" + message + "</p>");
389    setTimeout(function () {
390        $(element + " .errMsg").fadeOut(500);
391    }, 2000);
392}
393function TextboxValidationOnChange(element) {
394    $(element).on('change input', function (event) {
395        var m = $(this).val();
396        var openid = $(this).closest('.form-group').find('.err');
397        m = m.trim();
398        if (!m.length > 0) {
399            $(this).addClass('wrong');
400            $(this).removeClass('right');
401            $(openid).removeClass("errhide");
402        } else {
403            $(this).removeClass('wrong');
404            $(this).addClass('right');
405            $(openid).addClass("errhide");
406        }
407    });
408}
409function PhoneNumberValidationOnChange(InputEle, ErrElement, ErrMessage) {
410    var mobregExp = /^[a-zA-Z0-9+\-*#]+$/;
411    $(InputEle).on('change input', function () {
412        if ($(InputEle).val() == "" || $(InputEle).val().length < 8 || $(InputEle).val().length > 20 || mobregExp.test($(InputEle).val()) == false) {
413            $(ErrElement).html(ErrMessage);
414            $(InputEle).addClass('wrong');
415            $(InputEle).removeClass('right');
416            $(InputEle).closest('.form-group').find('.err').removeClass("errhide");
417        } else {
418            $(ErrElement).html("");
419            $(InputEle).removeClass('wrong');
420            $(InputEle).addClass('right');
421            $(InputEle).closest('.form-group').find('.err').addClass("errhide");
422        }
423    });
424}
425function EmailValidationOnChange(element) {
426    $(element).on('change input', function () {
427        var em = $(this).val();
428        var emailid = $(this).closest('.form-group').find('.err');
429        em = em.trim();
430        var mailregExp = /^[a-z0-9]([a-z0-9_\-\.\+]*)@([a-z0-9_\-\.]+)(\.[a-z]{2,253}){1,3}$/i;
431        if (mailregExp.test($(element).val()) == true && em.length > 0) {
432            $(element).addClass('right');
433            $(element).removeClass('wrong');
434            $(emailid).addClass("errhide");
435        } else {
436            $(element).addClass('wrong');
437            $(element).removeClass('right');
438            $(emailid).removeClass("errhide");
439        }
440    });
441}
442function CommonTextValidation(InputElm, ErrElm, ErrMessage) {
443    var canSubmit = true;
444    if ($(InputElm).val() == "") {
445        $(ErrElm).html(ErrMessage);
446        $(InputElm).addClass('wrong');
447        $(ErrElm).css("display", "block");
448        canSubmit = false;
449    } else {
450        $(ErrElm).html("");
451    }
452    return canSubmit;
453}
454function PhoneValidation(InputElm, ErrElm, ErrMessage) {
455    var canSubmit = true;
456    var mobregExp = /^[a-zA-Z0-9+\-*#]+$/;
457    if ($(InputElm).val() == "" || $(InputElm).val().length < 8 || $(InputElm).val().length > 20 || mobregExp.test($(InputElm).val()) == false) {
458        $(ErrElm).html(ErrMessage);
459        $(InputElm).addClass('wrong');
460        $(ErrElm).css("display", "block");
461        canSubmit = false;
462    } else {
463        $(ErrElm).html("");
464    }
465    return canSubmit;
466}
467function EmailValidation(InputElm, ErrElm, ErrMessage) {
468    var canSubmit = true;
469    if ($(InputElm).val() == "") {
470        $(ErrElm).html(ErrMessage);
471        $(ErrElm).css("display", "block");
472        $(InputElm).addClass('wrong');
473        canSubmit = false;
474    } else {
475        var mailregExp = /^[a-z0-9]([a-z0-9_\-\.\+]*)@([a-z0-9_\-\.]+)(\.[a-z]{2,253}){1,3}$/i;
476        if (mailregExp.test($(InputElm).val()) == true) {
477            $(ErrElm).html("");
478        } else {
479            $(ErrElm).html(ErrMessage);
480            $(ErrElm).css("display", "block");
481            canSubmit = false;
482        }
483    }
484    return canSubmit;
485}
486function DropdownValidation(Element, ErrElm, ErrMessage) {
487    var canSubmit = true;
488    if ($(Element).attr("data-select") == "") {
489        $(ErrElm).html(ErrMessage);
490        $(ErrElm).css("display", "block");
491        canSubmit = false;
492    } else {
493        $(ErrElm).html("");
494        $(ErrElm).css("display", "none");
495    }
496    return canSubmit;
497}
498function ConsentValidation(CheckBoxElm, ErrElm, ErrMessage) {
499    var canSubmit = true;
500    if ($(CheckBoxElm).is(":checked")) {
501        $(ErrElm).html("");
502    } else if ($(CheckBoxElm).is(":not(:checked)")) {
503        $(ErrElm).html(ErrMessage);
504        $(ErrElm).css("display", "block");
505        canSubmit = false;
506    }
507    return canSubmit;
508}
509/* Showing and hiding loader */
510function showLoader() {
511    $(".btn-txt").hide();
512    $(".loader-txt").show();
513}
514function hideLoader() {
515    $(".btn-txt").show();
516    $(".loader-txt").hide();
517}
518/* Showing and hiding loader ends */
519function validate() {
520    var canSubmit = true;
521    var companyValidate = CommonTextValidation("#company_name", "#companyErr", "有効な会社名を入力してください");
522    var departmentNameValidate = CommonTextValidation("#department_name", "#department_nameErr", "有効な部署名を入力してください");
523    var positionValidate = CommonTextValidation("#position", "#positionErr", "有効な役職名を入力してください");
524    var surNameValidate = CommonTextValidation("#surname", "#surNameErr", "お名前を入力してください");
525    var NameValidate = CommonTextValidation("#name", "#nameErr", "お名前を入力してください");
526    var PhoneValidate = PhoneValidation("#phone_no", "#phoneErr", "有効な電話番号を入力してください");
527    var EmailValidate = EmailValidation("#email", "#mailErr", "有効なメールアドレスを入力してください");
528    var DateValidate = DropdownValidation("#dateId_section .select span", "#dateIdErr", "このフィールドに入力してください。");
529    var DepartmentTypeValidate = DropdownValidation("#department_type_section .select span", "#department_typeErr", "このフィールドに入力してください。");
530    var positionLevelValidate = DropdownValidation("#position_level_section .select span", "#position_levelErr", "このフィールドに入力してください。");
531    var ReasonValidate = DropdownValidation("#reason_section .select span", "#reasonErr", "このフィールドに入力してください。");
532    var TimeValidate = DropdownValidation("#startTime_section .select span", "#timeErr", "このフィールドに入力してください。");
533    var OneTooneValidate = DropdownValidation("#oneToone_section .select span", "#sessionErr", "このフィールドに入力してください。");
534    var SourceValidate = DropdownValidation("#source_section .select span", "#sourceErr", "このフィールドに入力してください。");
535    var ConsentValidate = ConsentValidation("#consent", "#termsErr", "サービス規約とプライバシーポリシーを読み、同意のチェックを入れてください");
536    if ($("#source").val() === "パートナー企業からのご紹介") {
537        var PartnerNameValidate = CommonTextValidation("#partner_name", "#partnerNameErr", "パートナーの社名を入力してください");
538    } else {
539        var PartnerNameValidate = true;
540    }
541    var JSTTimeZone = getJSTtimeZone();
542    $("#jst_time").val(JSTTimeZone);
543    //Final Validation
544    if (companyValidate === true && departmentNameValidate === true && positionValidate === true && surNameValidate === true && NameValidate === true && PhoneValidate === true && EmailValidate === true && DepartmentTypeValidate === true && positionLevelValidate === true && DateValidate === true && ReasonValidate === true && TimeValidate === true && OneTooneValidate === true && SourceValidate === true && PartnerNameValidate === true && ConsentValidate === true) {
545        canSubmit = true;
546        /* Additional Fields Formation */
547        var dataMap = {};
548        dataMap["課題解決の実施時期"] = $("#startTime").val();
549        // dataMap["部署名 例) 情報システム部"] = $("#departmenttype_name").val();
550        // dataMap["役職名 例) 課長"] = $("#jobtype_name").val();
551        dataMap["本セミナーを知ったきっかけ"] = $("#source").val();
552        if ($("#partner_name").val() != "") {
553            dataMap["パートナー企業からのご紹介"] = $("#partner_name").val();
554        }
555        if ($("#subject").val() != "") {
556            dataMap["subject"] = $("#subject").val();
557        }
558        var additionalFields = JSON.stringify(dataMap);
559        jQuery("input[name='Additional_Fields']").val(additionalFields);
560    } else {
561        canSubmit = false;
562    }
563    return canSubmit;
564}
565$(document).ready(function () {
566    $("body").on("click", ".seminar-wrapper a[href]", function (event) {
567        var hrefSource = $(this).attr("href");
568        if (hrefSource.indexOf("#") > -1) {
569            var hashMap = hrefSource.split("#")[1];
570            hashMap = hashMap != undefined && hashMap.indexOf("?") > 0 ? hashMap.split("?")[0] : hashMap;
571            if ($('a[name="' + hashMap + '"]').length) {
572                $("html, body").animate({
573                    scrollTop: $('a[name="' + hashMap + '"]').offset().top - 120,
574                }, "400");
575            } else if ($('[id="' + hashMap + '"]').length) {
576                $("html, body").animate({
577                    scrollTop: $('[id="' + hashMap + '"]').offset().top - 120,
578                }, "400");
579            }
580        }
581    });
582});
583
584$(function () {
585
586    var isMobile = /Android|iPhone|iPad|iPod|Mobile/i.test(navigator.userAgent);
587
588    if (!isMobile) return;
589
590    var playInterval = setInterval(function () {
591
592        var $btn = $(
593
594            ".vjs-big-play-button," +
595
596            "button.vjs-big-play-button," +
597
598            ".zp-video-play-btn," +
599
600            "[class*='play-button']," +
601
602            "[class*='big-play']," +
603
604            "button[aria-label*='Play']," +
605
606            "button[aria-label*='play']"
607
608        ).filter(":visible").first();
609
610        if ($btn.length) {
611
612            $btn[0].click();
613
614            clearInterval(playInterval);
615
616        }
617
618    }, 500);
619
620    setTimeout(function () {
621
622        clearInterval(playInterval);
623
624    }, 15000);
625
626});
627
628// NOTE: The hero banner video lives inside a cross-origin WorkDrive iframe,
629// so its play button cannot be selected or clicked from this page (same-origin
630// policy). Mobile browsers also block autoplay unless the video is muted.
631// Autoplay is therefore handled via the iframe URL params
632// (autoplay=true&muted=true) in index.html, not from here.
633
634/* Speakers profile popup — Zoholics-style horizontal flip */
635(function () {
636    function initSpeakerPopup($) {
637        var SPEAKER_PROFILES = {
638            manikandan: {
639                name: "マニカンダン・タンガラジ",
640                role: "Zoho Japan\n代表取締役社長",
641                bioHtml:
642                    "<p class='uc-speaker-popup__bio-title'>講演者について</p>" +
643                    "<p>23年にわたり、サイバーセキュリティ、IAM(IDの管理・認証許可)、クラウド、マイクロソフトエコシステムなどITにおいて最も複雑な課題にアプローチするソリューション構築に貢献。創業初期から現在の大企業へと成長を遂げるに至るまで重要な役割を果たしてきました。</p>" +
644                    "<p>現在は、Zoho Corporation pvt. Ltd のエンタープライズIT部門であるManageEngineのプログラムマネジメントおよび取締役に従事。また、ゾーホージャパン株式会社の代表取締役。日本市場において、ソリューションを中心としたアプローチでテクノロジーとビジネスのギャップを埋めることに重点を置き、顧客からの需要に応えながらマーケティング、セールスのビジネス強化によりZoho ブランドの成長事業を統括。</p>"
645            },
646            oyama: {
647                name: "大山 一弘",
648                role: "Zoho Japan\n取締役副社長",
649                bioHtml:
650                    "<p class='uc-speaker-popup__bio-title'>講演者について</p>" +
651                    "<p>国内ITベンダーにて、ネットワーク管理システムの開発に従事。2001年、ゾーホージャパン設立と同時に入社。Zoho.comサービスの販売およびIT運用管理ソフトウェア販売事業に従事。</p>"
652            },
653            ramprakash: {
654                name: "ラムプラカーシュ・ラーマムールティー",
655                role: "Zoho Corporation グローバル本社\nAI研究部門 責任者",
656                bioHtml:
657                    "<p class='uc-speaker-popup__bio-title'>講演者について</p>" +
658                    "<p>
6582011年にインターンとしてZohoに入社し、AI研究に特化したZoho Labsを設立。現在はZoho CorporationのAI研究部門責任者として、統計的機械学習、コンピュータビジョン、自然言語処理などの分野でエンジニアチームを率いています。</p>" +
659                    "<p>Zoho製品全体へのAI統合を推進し、プライバシーを重視した実践的なAIの活用をリード。ZiaをはじめとするZohoのAIプラットフォームの研究開発を統括しています。</p>"
660            },
661            manabe: {
662                name: "眞鍋 敬 氏",
663                role: "IDC Japan株式会社\nシニアリサーチディレクター, AI and Automation",
664                bioHtml:
665                    '<p class="uc-speaker-popup__bio-title">講演タイトル</p>' +
666                    "<p>「ビジネス活用AIのこれから:アシスタントからビジネス創造へのAI転換」</p>" +
667                    '<p class="uc-speaker-popup__bio-title">講演概要</p>' +
668                    "<p>生成AIの進化により、企業のAI活用は「業務効率化」から「ビジネス価値の創造」へ転換しています。IDCの調査では国内AI市場は4年間で3倍に拡大すると予測していますが、一方でPoC成功率50%未満の企業が7割を占めています。</p>" +
669                    "<p>アシスタント型からビジネスAI、業界特化型AIへの転換によって、投資効果の拡大への期待によって、製造・金融・医療など各業界でのユースケース事例やユースケースを検討する上でのフレームワークについて、考察します。</p>"
670            },
671            morita: {
672                name: "森田 委千弘 氏",
673                role: "株式会社Mizkan J plus Holdings\nデジタルIT本部情報システム部システム2課",
674                bioHtml:
675                    '<p class="uc-speaker-popup__bio-title">講演タイトル</p>' +
676                    "<p>「ミツカングループにおけるAD運用管理 最適化事例紹介<br>  ~ManageEngineソリューションの選定背景、活用~」</p>" +
677                    '<p class="uc-speaker-popup__bio-title">講演概要</p>' +
678                    "<p>日本を代表する大手食材・調味料メーカーのミツカングループは、多くの従業員の管理が必要な状況下、ActiveDirectory(AD)の運用において、一時期解決すべき課題が山積していました。</p>" +
679                    "<p>AD管理実施において、同社はManageEngine「ADManager Plus」を選定し、結果セキュリティインシデントリスクの低減を実現しました。</p>" +
680                    "<p>また、今後特権ID管理他においても、ManageEngineソリューションの活用を検討しています。</p>" +
681                    "<p>本セッションにおいては、同社の紹介、ADManager Plus導入経緯およびその活用、今後の施策概要について紹介します。</p>"
682            }
683        };
684
685        var $popup = $("#uc-speaker-popup");
686        if (!$popup.length) {
687            return;
688        }
689
690        var $dialog = $popup.find(".uc-speaker-popup__dialog");
691        var $avatar = $("#uc-speaker-popup-avatar");
692        var $name = $("#uc-speaker-popup-name");
693        var $role = $("#uc-speaker-popup-role");
694        var $bio = $("#uc-speaker-popup-bio");
695        var closeTimer = null;
696        var lastFocus = null;
697
698        function openPopup($person) {
699            var key = $person.attr("data-speaker");
700            var profile = SPEAKER_PROFILES[key];
701            if (!profile) {
702                return;
703            }
704
705            var $img = $person.find(".uc-speakers__avatar").first();
706            var imgSrc = $img.attr("src") || $img.attr("data-src") || "";
707            var imgAlt = $img.attr("alt") || profile.name;
708
709            if (closeTimer) {
710                clearTimeout(closeTimer);
711                closeTimer = null;
712            }
713
714            lastFocus = document.activeElement;
715            $avatar.attr({ src: imgSrc, alt: imgAlt });
716            $name.text(profile.name);
717            $role.html(profile.role.replace(/\n/g, "<br>"));
718            $bio.html(profile.bioHtml || "");
719
720            $popup.removeAttr("hidden").attr("aria-hidden", "false");
721            $popup.removeClass("is-closing").addClass("is-open");
722            $("body").addClass("uc-speaker-popup-open");
723            $popup.find(".uc-speaker-popup__close").trigger("focus");
724        }
725
726        function closePopup() {
727            if (!$popup.hasClass("is-open") || $popup.hasClass("is-closing")) {
728                return;
729            }
730            $popup.removeClass("is-open").addClass("is-closing");
731            closeTimer = setTimeout(function () {
732                $popup.attr("hidden", true).attr("aria-hidden", "true").removeClass("is-closing");
733                $("body").removeClass("uc-speaker-popup-open");
734                $avatar.attr({ src: "", alt: "" });
735                if (lastFocus && typeof lastFocus.focus === "function") {
736                    lastFocus.focus();
737                }
738                closeTimer = null;
739            }, 450);
740        }
741
742        $(document).on("click", ".uc-speakers__person[data-speaker]", function (e) {
743            e.preventDefault();
744            openPopup($(this));
745        });
746
747        $(document).on("keydown", ".uc-speakers__person[data-speaker]", function (e) {
748            if (e.key === "Enter" || e.key === " ") {
749                e.preventDefault();
750                openPopup($(this));
751            }
752        });
753
754        // Close must be bound on the dialog (or document), not only on $popup with
755        // a dialog stopPropagation — the X lives inside the dialog and was blocked.
756        $popup.on("click", "[data-speaker-popup-close]", function (e) {
757            e.preventDefault();
758            e.stopPropagation();
759            closePopup();
760        });
761
762        $dialog.on("click", ".uc-speaker-popup__close", function (e) {
763            e.preventDefault();
764            e.stopPropagation();
765            closePopup();
766        });
767
768        $(document).on("keydown.ucSpeakerPopup", function (e) {
769            if (e.key === "Escape" && $popup.hasClass("is-open")) {
770                closePopup();
771            }
772        });
773    }
774
775    var tries = 0;
776    (function waitForJQuery() {
777        if (window.jQuery) {
778            window.jQuery(function () {
779                initSpeakerPopup(window.jQuery);
780            });
781            return;
782        }
783        if (tries++ > 60) {
784            return;
785        }
786        setTimeout(waitForJQuery, 100);
787    })();
788})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.