PageSourceSearch

https://www.j-hotel.or.jp/assets/common/js/lib.js

js j-hotel.or.jp collected 2026-10-02 16:47:59 UTC 16,580 bytes, 421 lines download raw bytes

1/*
2 * lib.js
3 *
4 * Copyright (c) 2015
5 * Please feel free to.
6 *
7 * Version: 1.1.4 (12/04/2016)
8 * Requires: jQuery v1.11.3
9 */
10
11
12//------------------------------------------
13//IE8以下のconsole.logエラー対策
14if (!window.console) window.console = { log: function(){} }
15
16
17//------------------------------------------
18//初期設定
19var wWidth  = $(window).width();														//画面の横幅を保存
20var wHeight = $(window).height();														//画面の高さを保存
21var host    = (("https:" == document.location.protocol) ? "https://" : "http://");		//ホスト
22var domain  = location.hostname;														//ドメイン名
23var path    = location.pathname;														//ディレクトリ名
24var param   = location.search;															//パラメーター
25var hash    = location.hash;															//ハッシュ「#」
26var ua      = window.navigator.userAgent.toLowerCase();									//UA
27var os      = "";																		//OS
28var browser = "";																		//ブラウザー
29var version = "";																		//バージョン
30var spWidth = 640;																		//レスポンシブの切り替わりサイズ
31var lang    = $("html").data("lang");													//言語
32var device  = $("html").attr("id");														//デバイス
33
34//------------------------------------------
35//リサイズした時
36var resize = false;
37$(window).resize(function() {
38	if (resize !== false) clearTimeout(resize);
39	resize = setTimeout(function() {
40		getWindowSize();																//サイズを再取得
41		if (typeof onResizeCommonFunction == "function") onResizeCommonFunction();		//ページが読み込まれたらcommon.jsのfunctionを実行する
42		if (typeof onResizePageFunction   == "function") onResizePageFunction();		//ページが読み込まれたら各ページごとのfunctionを実行する
43	}, 200);
44});
45
46
47//------------------------------------------
48//ウィンドウサイズ取得
49function getWindowSize() {
50	wWidth  = $(window).width();														//読み込み完了時に横幅を再取得
51	wHeight = $(window).height();														//読み込み完了時に高さを再取得
52	if (os == "ios") {
53		wWidth  = window.innerWidth;													//読み込み完了時に横幅を再取得
54		wHeight = window.innerHeight;													//読み込み完了時に高さを再取得
55	}
56}
57
58
59//------------------------------------------
60//GETパラメーターをKey,Valueに分解する
61function parseURLParams(url) {
62	url = url.replace(/#.*/ , "");
63	var params = url.split("?");
64	var urlParams = null;
65
66	if (params.length > 1) {
67		var urlParams   = new Array();
68		var parseParams = params[1].split("&");
69		for (var i = 0; i < parseParams.length; i++) {
70			var kv = parseParams[i].split("=");
71			if (kv.length == 2) {
72				var key = kv[0];
73				urlParams[key] = kv[1];
74			}
75		}
76	}
77	return urlParams;
78}
79
80
81//------------------------------------------
82//配列内で重複している項目を削る
83function uniqueCheck(array) {
84	var storage     = {};
85	var uniqueArray = [];
86	var value;
87	for (var i = 0; i < array.length; i++) {
88		value = array[i];
89		if (!(value in storage)) {
90			storage[value] = true;
91			uniqueArray.push(value);
92		}
93	}
94	return uniqueArray;
95}
96
97
98//------------------------------------------
99//配列をシャッフルする
100function shuffle(array) {
101	var copy = [];
102	var n    = array.length;
103	var i    = '';
104
105	while (n) {
106		i = Math.floor(Math.random() * n--);
107		copy.push(array.splice(i, 1)[0]);
108	}
109	return copy;
110}
111
112
113//------------------------------------------
114//GAクリック
115function gaSendBtnClick(label){
116	ga('send', 'event', 'button', 'click', label);
117}
118
119
120//------------------------------------------
121//GAページビュー
122function gaSendPageView(page, title){
123	ga('send', 'pageview' ,{
124		'page'  : page ,
125		'title' : title
126	});
127}
128
129
130//------------------------------------------
131//スクロール禁止用関数
132function noScroll() {
133	var scrollEvent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
134	$(document).on(scrollEvent,function(e){e.preventDefault();});
135	$(document).on('touchmove.noScroll', function(e) {e.preventDefault();});
136}
137
138
139//------------------------------------------
140//スクロール復活用関数
141function returnScroll() {
142	var scrollEvent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
143	$(document).off(scrollEvent);
144	$(document).off('.noScroll');
145}
146
147
148/**
149 * PgwBrowser - Version 1.3
150 * tam customize Version 1.0
151 *
152 * Edit 2016.04.12
153 * Microsoft Edge 対応版
154 */
155$.userJson = function() {
156	var userJson = {};
157	userJson.userAgent = navigator.userAgent;
158	userJson.browser = {};
159	userJson.viewport = {};
160	userJson.os = {};
161	var resizeEvent = null;
162
163	/*
164		ブラウザ、OSの種類
165		配列の順番によって結果が変わるので注意が必要
166	*/
167	var browserData = [
168		{ name: 'Chromium',          group: 'Chrome',   identifier: 'Chromium/([0-9\.]*)'       },
169		{ name: 'Chrome Mobile',     group: 'Chrome',   identifier: 'Chrome/([0-9\.]*) Mobile', versionIdentifier: 'Chrome/([0-9\.]*)'},
170		{ name: 'Chrome',            group: 'Chrome',   identifier: 'Chrome/([0-9\.]*)'         },
171		{ name: 'Chrome for iOS',    group: 'Chrome',   identifier: 'CriOS/([0-9\.]*)'          },
172		{ name: 'Android Browser',   group: 'Chrome',   identifier: 'CrMo/([0-9\.]*)'           },
173		{ name: 'Firefox',           group: 'Firefox',  identifier: 'Firefox/([0-9\.]*)'        },
174		{ name: 'Opera Mini',        group: 'Opera',    identifier: 'Opera Mini/([0-9\.]*)'     },
175		{ name: 'Opera',             group: 'Opera',    identifier: 'Opera ([0-9\.]*)'          },
176		{ name: 'Opera',             group: 'Opera',    identifier: 'Opera/([0-9\.]*)',         versionIdentifier: 'Version/([0-9\.]*)' },
177		{ name: 'IEMobile',          group: 'Explorer', identifier: 'IEMobile/([0-9\.]*)'       },
178		{ name: 'Internet Explorer', group: 'Explorer', identifier: 'MSIE ([a-zA-Z0-9\.]*)'     },
179		{ name: 'Internet Explorer', group: 'Explorer', identifier: 'Trident/([0-9\.]*)',       versionIdentifier: 'rv:([0-9\.]*)' },
180		{ name: 'Spartan',           group: 'Spartan',  identifier: 'Edge/([0-9\.]*)',          versionIdentifier: 'Edge/([0-9\.]*)' },
181		{ name: 'Safari',            group: 'Safari',   identifier: 'Safari/([0-9\.]*)',        versionIdentifier: 'Version/([0-9\.]*)' }
182	];
183
184	var osData = [
185		{ name: 'Windows 2000',           group: 'Windows',       identifier: 'Windows NT 5.0',                     version: '5.0' },
186		{ name: 'Windows XP',             group: 'Windows',       identifier: 'Windows NT 5.1',                     version: '5.1' },
187		{ name: 'Windows Vista',          group: 'Windows',       identifier: 'Windows NT 6.0',                     version: '6.0' },
188		{ name: 'Windows 7',              group: 'Windows',       identifier: 'Windows NT 6.1',                     version: '7.0' },
189		{ name: 'Windows 8',              group: 'Windows',       identifier: 'Windows NT 6.2',                     version: '8.0' },
190		{ name: 'Windows 8.1',            group: 'Windows',       identifier: 'Windows NT 6.3',                     version: '8.1' },
191		{ name: 'Windows 10',             group: 'Windows',       identifier: 'Windows NT 10.0',                    version: '10.0' },
192		{ name: 'Windows Phone',          group: 'Windows Phone', identifier: 'Windows Phone ([0-9\.]*)'            },
193		{ name: 'Windows Phone',          group: 'Windows Phone', identifier: 'Windows Phone OS ([0-9\.]*)'         },
194		{ name: 'Windows',                group: 'Windows',       identifier: 'Windows'                             },
195		{ name: 'Chrome OS',              group: 'Chrome OS',     identifier: 'CrOS'                                },
196		{ name: 'Android',                group: 'Android',       identifier: 'Android',                            versionIdentifier: 'Android ([a-zA-Z0-9\.-]*)' },
197		{ name: 'iPad',                   group: 'iOS',           identifier: 'iPad',                               versionIdentifier: 'OS ([0-9_]*)', versionSeparator: '[_|\.]' },
198		{ name: 'iPod',                   group: 'iOS',           identifier: 'iPod',                               versionIdentifier: 'OS ([0-9_]*)', versionSeparator: '[_|\.]' },
199		{ name: 'iPhone',                 group: 'iOS',           identifier: 'iPhone OS',                          versionIdentifier: 'OS ([0-9_]*)', versionSeparator: '[_|\.]' },            
200		{ name: 'Mac OS X El Capitan',    group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])11([0-9_\.]*))', versionSeparator: '[_|\.]' },
201		{ name: 'Mac OS X Yosemite',      group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])10([0-9_\.]*))', versionSeparator: '[_|\.]' },
202		{ name: 'Mac OS X Mavericks',     group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])9([0-9_\.]*))',  versionSeparator: '[_|\.]' },
203		{ name: 'Mac OS X Mountain Lion', group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])8([0-9_\.]*))',  versionSeparator: '[_|\.]' },
204		{ name: 'Mac OS X Lion',          group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])7([0-9_\.]*))',  versionSeparator: '[_|\.]' },
205		{ name: 'Mac OS X Snow Leopard',  group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])6([0-9_\.]*))',  versionSeparator: '[_|\.]' },
206		{ name: 'Mac OS X Leopard',       group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])5([0-9_\.]*))',  versionSeparator: '[_|\.]' },
207		{ name: 'Mac OS X Tiger',         group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])4([0-9_\.]*))',  versionSeparator: '[_|\.]' },
208		{ name: 'Mac OS X Panther',       group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])3([0-9_\.]*))',  versionSeparator: '[_|\.]' },
209		{ name: 'Mac OS X Jaguar',        group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])2([0-9_\.]*))',  versionSeparator: '[_|\.]' },
210		{ name: 'Mac OS X Puma',          group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])1([0-9_\.]*))',  versionSeparator: '[_|\.]' },
211		{ name: 'Mac OS X Cheetah',       group: 'Mac OS',        identifier: 'Mac OS X (10([_|\.])0([0-9_\.]*))',  versionSeparator: '[_|\.]' },
212		{ name: 'Mac OS',                 group: 'Mac OS',        identifier: 'Mac OS'                              },
213		{ name: 'Ubuntu',                 group: 'Linux',         identifier: 'Ubuntu',                             versionIdentifier: 'Ubuntu/([0-9\.]*)' },
214		{ name: 'Debian',                 group: 'Linux',         identifier: 'Debian'                              },
215		{ name: 'Gentoo',                 group: 'Linux',         identifier: 'Gentoo'                              },
216		{ name: 'Linux',                  group: 'Linux',         identifier: 'Linux'                               },
217		{ name: 'BlackBerry',             group: 'BlackBerry',    identifier: 'BlackBerry'                          }
218	];
219
220	//  Set browser data
221	var setBrowserData = function() {
222		var userAgent = userJson.userAgent.toLowerCase();
223
224		// Check browser type
225		for (var i in browserData) {
226			var browserRegExp = new RegExp(browserData[i].identifier.toLowerCase());
227			var browserRegExpResult = browserRegExp.exec(userAgent);
228
229			if (browserRegExpResult != null && browserRegExpResult[1]) {
230				userJson.browser.name = browserData[i].name;
231				userJson.browser.group = browserData[i].group;
232
233				// Check version
234				if (browserData[i].versionIdentifier) {
235					var versionRegExp = new RegExp(browserData[i].versionIdentifier.toLowerCase());
236					var versionRegExpResult = versionRegExp.exec(userAgent);
237
238					if (versionRegExpResult != null && versionRegExpResult[1]) {
239						setBrowserVersion(versionRegExpResult[1]);
240					}
241				} else {
242					setBrowserVersion(browserRegExpResult[1]);
243				}
244				break;
245			}
246		}
247		return true;
248	};
249
250	//ブラウザのバージョン
251	var setBrowserVersion = function(version) {
252		var splitVersion = version.split('.', 2);
253		userJson.browser.fullVersion = version;
254
255		//メインバージョン
256		if (splitVersion[0]) {
257			userJson.browser.majorVersion = parseInt(splitVersion[0]);
258		}
259
260		//マイナーバージョン
261		if (splitVersion[1]) {
262			userJson.browser.minorVersion = parseInt(splitVersion[1]);
263		}
264		return true;
265	};
266
267	//OSの情報
268	var setOsData = function() {
269		var userAgent = userJson.userAgent.toLowerCase();
270
271		//ブラウザチェック
272		for (var i in osData) {
273			var osRegExp = new RegExp(osData[i].identifier.toLowerCase());
274			var osRegExpResult = osRegExp.exec(userAgent);
275
276			if (osRegExpResult != null) {
277				userJson.os.name = osData[i].name;
278				userJson.os.group = osData[i].group;
279
280				if (osData[i].version) {
281					// Version defined
282					setOsVersion(osData[i].version, (osData[i].versionSeparator) ? osData[i].versionSeparator : '.');
283				} else if (osRegExpResult[1]) {
284					// Version detected
285					setOsVersion(osRegExpResult[1], (osData[i].versionSeparator) ? osData[i].versionSeparator : '.');
286				} else if (osData[i].versionIdentifier) {
287					// Version identifier
288					var versionRegExp = new RegExp(osData[i].versionIdentifier.toLowerCase());
289					var versionRegExpResult = versionRegExp.exec(userAgent);
290
291					if (versionRegExpResult != null && versionRegExpResult[1]) {
292						setOsVersion(versionRegExpResult[1], (osData[i].versionSeparator) ? osData[i].versionSeparator : '.');
293					}
294				}
295				break;
296			}
297		}
298		return true;
299	};
300
301	//OSのバージョン
302	var setOsVersion = function(version, separator) {
303		var splitVersion = "";
304		if (separator.substr(0, 1) == '[') {
305			splitVersion = version.split(new RegExp(separator, 'g'), 2);
306		} else {
307			splitVersion = version.split(separator, 2);
308		}
309
310		if (separator != '.') {
311			version = version.replace(new RegExp(separator, 'g'), '.');
312		}
313		userJson.os.fullVersion = version;
314
315		//メジャーバージョン
316		if (splitVersion[0]) {
317			userJson.os.majorVersion = parseInt(splitVersion[0]);
318		}
319
320		//マイナーバージョン
321		if (splitVersion[1]) {
322			userJson.os.minorVersion = parseInt(splitVersion[1]);
323		}
324		return true;
325	};
326
327	//viewport
328	var setViewportSize = function(init) {
329		userJson.viewport.width = $(window).width();
330		userJson.viewport.height = $(window).height();
331
332		//リサイズトリガー
333		if (typeof init == 'undefined') {
334			if (resizeEvent == null) {
335				$(window).trigger('userJson::StartResizing');
336			} else {
337				clearTimeout(resizeEvent);
338			}
339
340			resizeEvent = setTimeout(function() {
341				$(window).trigger('userJson::StopResizing');
342				clearTimeout(resizeEvent);
343				resizeEvent = null;
344			}, 300);
345		}
346		return true;
347	};
348
349	//画面の向き
350	var setViewportOrientation = function() {
351		if (typeof window.orientation == 'undefined') {
352			if (userJson.viewport.width >= userJson.viewport.height) {
353				userJson.viewport.orientation = 'landscape';
354			} else {
355				userJson.viewport.orientation = 'portrait';
356			}
357		} else {
358			switch(window.orientation) {
359				case -90:
360				case 90:
361					userJson.viewport.orientation = 'landscape';
362					break;
363				default:
364					userJson.viewport.orientation = 'portrait';
365					break; 
366			}
367		}
368
369		//回転トリガー
370		$(window).trigger('userJson::OrientationChange');
371		return true;
372	};
373
374	// Replace default value for the user-agent tester on pgwjs.com
375	if (typeof window.pgwJsUserAgentTester != 'undefined') {
376		userJson.userAgent = window.pgwJsUserAgentTester;
377	}
378
379	// Initialization
380	setBrowserData();
381	setOsData();
382	setViewportSize(true);
383	setViewportOrientation();
384
385	//Windows10 Edge用特別処理
386	if (userJson.os['name'] == 'Windows 10') {
387		if (
388			userJson.userAgent.match('AppleWebkit/([0-9\.]*)') != -1 &&
389			userJson.userAgent.match('(KHTML, like Gecko)') != -1 &&
390			userJson.userAgent.match('Chrome/([0-9\.]*)') != -1 &&
391			userJson.userAgent.match('Safari/([0-9\.]*)') != -1 &&
392			userJson.userAgent.match('Edge/([0-9\.]*)') != -1
393		) {
394			//名前
395			userJson.browser.name  = 'Microsoft Edge';
396			userJson.browser.group = 'Microsoft Edge';
397
398			//バージョン
399			if (userJson.userAgent.indexOf("Edge/") >= 0) {
400				var fullVersion = userJson.userAgent.substring(userJson.userAgent.indexOf("Edge/")+1, userJson.userAgent.length).replace("dge/", "");
401
402				var splitVersion = fullVersion.split('.', 2);
403				userJson.browser.fullVersion = fullVersion;
404				if (splitVersion[0]) userJson.browser.majorVersion = parseInt(splitVersion[0]);	//メインバージョン
405				if (splitVersion[1]) userJson.browser.minorVersion = parseInt(splitVersion[1]);	//マイナーバージョン
406			}
407		}
408	}
409
410	// Triggers
411	$(window).on('orientationchange', function(e) {
412		setViewportOrientation();
413	});
414
415	$(window).resize(function(e) {
416		setViewportSize();
417	});
418
419
420	return userJson;
421}

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.