var MAVJS = MAVJS || {}; /* ========================================== * ランダム数字生成 ========================================== */ MAVJS.getRandomInt = function(min,max){ return Math.floor( Math.random() * (max + 1 - min) ) + min; } /* ========================================== * keyを指定して特定のvalueを持つオブジェクトを取得 ========================================== */ MAVJS.getObjByKeyValue = function(array, key, value){ var result = $.grep(array, function (e) { return e[key] == value; }); return result; } /* ========================================== * オブジェクト配列ソート * array : Array [{},{},{}...] * key : string * order : string "asc"(default) or "desc" ========================================== */ MAVJS.sortObjArray = function(array, key, order) { var reverse = 1; if(order && order.toLowerCase() == "desc") reverse = -1; array.sort(function(a, b) { if(a[key] < b[key]) return -1 * reverse; else if(a[key] == b[key]) return 0; else return 1 * reverse; }); } /* ========================================== * ユーザーエージェント ========================================== */ MAVJS.addUserAgent = function(){ window.UA = {}; const $body = $("body"), ua = navigator.userAgent.toLowerCase(); UA.os = (function(){ return { Windows: (ua.indexOf("win") != -1), Mac: ((ua.indexOf('mac') > -1) && (ua.indexOf('os') > -1)) && !((ua.indexOf('iphone') > -1) || (ua.indexOf('ipad') > -1) || (ua.indexOf('windows') > -1)), iOS: (ua.indexOf('iphone') > 0) || (ua.indexOf('ipad') > 0), Android: (ua.indexOf('android') > 0) && (ua.indexOf('mobile') > 0) } })(); UA.browser = (function(){ return { IE: (ua.indexOf('msie') > -1) && (ua.indexOf('opera') == -1) || (ua.indexOf('trident/7') > -1), Edge: (ua.indexOf('edge') > -1), Chrome: (ua.indexOf('chrome') > -1) && (ua.indexOf('edge') == -1), Firefox: (ua.indexOf('firefox') > -1), Safari: (ua.indexOf('safari') > -1) && (ua.indexOf('chrome') == -1), Opera: (ua.indexOf('opera') > -1) } })(); UA.device = (function(){ return { Tablet:(ua.indexOf("windows") != -1 && ua.indexOf("touch") != -1 && ua.indexOf("tablet pc") == -1) || ua.indexOf("ipad") != -1 || (ua.indexOf("android") != -1 && ua.indexOf("mobile") == -1) || (ua.indexOf("firefox") != -1 && ua.indexOf("tablet") != -1) || ua.indexOf("kindle") != -1 || ua.indexOf("silk") != -1 || ua.indexOf("playbook") != -1, Mobile:(ua.indexOf("windows") != -1 && ua.indexOf("phone") != -1) || ua.indexOf("iphone") != -1 || ua.indexOf("ipod") != -1 || (ua.indexOf("android") != -1 && ua.indexOf("mobile") != -1) || (ua.indexOf("firefox") != -1 && ua.indexOf("mobile") != -1) || ua.indexOf("blackberry") != -1 } })(); UA.device.PC = (function(){ var pc; if ( UA.device.Tablet || UA.device.Mobile ) { var pc = false; } else { var pc = true; } return pc; })(); if ( UA.browser.Opera ) { $body.attr("data-browser", "Opera"); } else if ( UA.browser.IE ) { $body.attr("data-browser", "IE"); } else if ( UA.browser.Chrome ) { $body.attr("data-browser", "Chrome"); } else if ( UA.browser.Safari ) { $body.attr("data-browser", "Safari"); } else if ( UA.browser.Edge ) { $body.attr("data-browser", "Edge"); } else if ( UA.browser.Firefox ) { $body.attr("data-browser", "Firefox"); } if ( UA.device.Mobile ) { $body.attr("data-device","Mobile"); } else if( UA.device.Tablet ) { $body.attr("data-device","Tablet"); } else { $body.attr("data-device","PC"); } if ( UA.os.iOS ) { $body.attr("data-os",'iOS'); } else if ( UA.os.Android ) { $body.attr("data-os",'Android'); } else if ( UA.os.Windows ) { $body.attr("data-os",'Windows'); } else if ( UA.os.Mac ) { $body.attr("data-os",'Mac'); } } /* ========================================== * 同一ドメインからのリンク判定 ========================================== */ MAVJS.checkReferer = function (){ const ref = document.referrer, domain = location.hostname, referer = ref != "" && ref != "http://" + domain && ref != "http://" + domain + "/" && ref != "http://" + domain + "/index.html" && ref != "https://" + domain && ref != "https://" + domain + "/" && ref != "https://" + domain + "/index.html" && (ref.indexOf("http://" + domain) === 0 || ref.indexOf("https://" + domain) === 0); return referer; } /* ========================================== * URL自動aタグ化 ========================================== */ MAVJS.createAnchorTag = function(target){ $(target).each(function(){ $('a', this).each(function() { if( $(this).text().trim() == $(this).attr('href') ) { $(this).contents().unwrap(); } }); $(this).html($(this).html().replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '$1')); }); } /* ======================================== aタグ rel追加 ========================================= */ MAVJS.addRelNoopener = function(){ $('a[target="_blank"]').each(function(i, e) { if(!$(this).is('[rel]')) { $(this).attr('rel', 'noopener noreferrer'); } }); } /* ========================================== * 相対リンクのindex.html削除 ========================================== */ MAVJS.removeIndexHtml = function (){ $('a:not([href^="http"])').each(function(i) { var href = $(this).attr('href'); if (typeof href !== 'undefined' && href !== false) { if (href.indexOf('index.html') >= 0) { $(this).attr('href', href.replace('index.html', '')); } } }); } /* ========================================== * カスタムマーカーリスト ========================================== */ MAVJS.customMarkerList = function(){ $(".c-customMarkerList").each(function(){ var marker = $(this).attr("data-listMarker"); $(this).children().attr("data-listMarker",marker); }); $("body").append('