PageSourceSearch

https://www.town.uchiko.ehime.jp/ssi/js/common.js

js town.uchiko.ehime.jp collected 2026-10-02 14:39:59 UTC 16,164 bytes, 462 lines download raw bytes

1function checkCurrentDeviceWidhDeviceWidth(){
2	var devWidth = window.innerWidth;
3	if(devWidth > 1099){
4		return 'pc';
5	}else if(devWidth < 1099 && devWidth > 670){
6		return 'tab';
7	}else{
8		return 'sp';
9	}
10	return false;
11}
12
13// 印刷用プレビュー
14function print_mode(arg){
15	switch(arg){
16		case 'large':
17			print_largeFont();
18			break;
19		default:
20			print_normal();
21			break;
22	}
23}
24
25// 通常の文字サイズで印刷
26function print_normal(){
27	var printModeText = '通常ページへ戻る';
28	var defaultModeText = '印刷ページ表示';
29	if($('#print_mode_link.view_print_mode')[0]){
30		initColorMode();
31		$('body,#print_mode_link').removeClass('view_print_mode');
32		$('link[href*="print-preview.css"]').remove();
33		$('#print_mode_link').text(defaultModeText);
34		$('#print_mode_link_large').removeClass('hide');
35		$(window).scrollTop(0);
36	}else{
37		$('#print_mode_link_large').addClass('hide');
38		$('link[href*="/ssi/css/color-"]').remove();
39		$('head').append('<link rel="stylesheet" type="text/css" href="/ssi/css/print-preview.css">');
40		$('body,#print_mode_link').addClass('view_print_mode');
41		$('#print_mode_link').text(printModeText);
42		$(window).scrollTop(0);
43	}
44}
45
46// 大きい文字サイズで印刷
47function print_largeFont(){
48	var printModeText = '通常ページへ戻る';
49	var defaultModeText = '大きな文字で印刷ページ表示';
50	if('fontSize' in localStorage){
51		print_normal();
52	}else{
53		if($('#print_mode_link_large.view_print_mode')[0]){
54			$('html').removeClass('print_font_large');
55			initColorMode();
56			$('body,#print_mode_link_large').removeClass('view_print_mode');
57			$('link[href*="print-preview.css"]').remove();
58			$('#print_mode_link_large').text(defaultModeText);
59			$('#print_mode_link').removeClass('hide');
60			$(window).scrollTop(0);
61		}else{
62			$('#print_mode_link').addClass('hide');
63			$('html').addClass('print_font_large');
64			$('link[href*="/ssi/css/color-"]').remove();
65			$('head').append('<link rel="stylesheet" type="text/css" href="/ssi/css/print-preview.css">');
66			$('body,#print_mode_link_large').addClass('view_print_mode');
67			$('#print_mode_link_large').text(printModeText);
68		}
69	}
70}
71
72// 色変更
73function colorChange(strColorMode){
74	$('link[href*="/ssi/css/color-"]').remove();
75	switch(strColorMode){
76		case 'blue':
77			$('body').removeClass('color_change color_blue color_black').addClass('color_change color_blue');
78			$('head').append('<link rel="stylesheet" type="text/css" href="/ssi/css/color-common.css" media="screen">');
79			localStorage.setItem('colorMode', 'blue');
80			break;
81		case 'black':
82			$('body').removeClass('color_change color_blue color_black').addClass('color_change color_black');
83			$('head').append('<link rel="stylesheet" type="text/css" href="/ssi/css/color-common.css" media="screen">');
84			localStorage.setItem('colorMode', 'black');
85			break;
86		case 'white':
87			$('body').removeClass('color_change color_blue color_black');
88			localStorage.removeItem('colorMode');
89			break;
90		default:
91			break;
92	}
93}
94
95// 色変更されていれば、ページ読み込み時にそれを反映
96function initColorMode(){
97	if( ('localStorage' in window) && (window.localStorage !== null) ) {
98		if(localStorage.getItem('colorMode')){
99			colorChange(localStorage.getItem('colorMode'));
100		}
101	}
102}
103// 色変更(前スクリプトとの互換性保持)
104function SetCss(cssNumber){
105	switch(cssNumber){
106		case 1:  colorChange('white');break;
107		case 2:  colorChange('black');break;
108		case 3:  colorChange('blue');break;
109		default: break;
110	}
111}
112
113// 文字サイズ変更
114function fontSizeChange(changeType){
115	var stepNum = 1.25;
116	switch(changeType){
117		case 'large':
118			$('html').css('font-size',parseInt($('html').css('font-size')) * stepNum + 'px');
119			localStorage.setItem('fontSize', $('html').css('font-size') );
120			break;
121		case 'small':
122			$('html').css('font-size',parseInt($('html').css('font-size')) / stepNum + 'px');
123			localStorage.setItem('fontSize', $('html').css('font-size') );
124			break;
125		case 'default':
126			$('html').css('font-size','');
127			localStorage.removeItem('fontSize');
128			break;
129		default:
130			break;
131	}
132}
133
134// 文字サイズ変更されていれば、ページ読み込み時にそれを反映
135function initFontSize(){
136	if( ('localStorage' in window) && (window.localStorage !== null) ) {
137		if(localStorage.getItem('fontSize')){
138			$('html').css('font-size',localStorage.getItem('fontSize'));
139		}
140	}
141}
142// 文字サイズ変更(前スクリプトとの互換性保持)
143function fsc(str){
144	switch(str){
145		case 'larger' : fontSizeChange('large'); break;
146		case 'default' : fontSizeChange('default'); break;
147		default: break;
148	}
149}
150
151
152jQuery(document).ready(function($){
153
154	// スマートフォン判定
155	// true: スマートフォン
156	// false: その他デバイス
157	function spCheck(){
158		if($('#spmenu').css('display') === 'block'){
159			return true;
160		}
161		return false;
162	}
163
164	// アクセシビリティチェッカの判定
165	// true:チェッカ表示
166	// false:通常表示
167	function accCheckerChk(){
168		if($('.errrange')[0]){
169			return true;
170		}else{
171			return false;
172		}
173	}
174
175	// 色なしで確認(IE9対応)
176	function accGrayCheck(){
177		if($('body').css('filter') != 'none'){
178			$('body').addClass('accGrayscale');
179			$('head').append('<!--[if lte IE 9]><link rel="stylesheet" type="text/css" href="/ssi/css/acc-grayscale.css" /><![endif]-->');
180		}
181	}
182
183	// アコーディオン設定(スマートフォン用)
184	function setAccordion(){
185		/*
186			アコーディオンさせたい場合、タップさせる要素(タイトル)に対して class="acc_title" を追加する。
187			<div>
188				<h2 class="acc_title">タイトル</h2>
189				<ul>
190					...
191				</ul>
192			</div>
193			上記の場合、h2に .acc_title を付与することで、ulが表示/非表示される。
194		*/
195		$('.acc_title').each(function(i){
196			// チェックボックスの状態(checked)でアコーディオンの状態を判定。
197			// チェックボックスの状態を判定する場合、prop('checked') を使用する。
198			$(this).wrapInner('<label for="acc_ttl_label'+i+'"></label>');
199			// $(this).append('<div class="acc_icon"></div>');
200			$(this).after('<input id="acc_ttl_label'+i+'" type="checkbox" />');
201		}).on('click',function(){
202			// アコーディオンアイコン
203			$(this).toggleClass('acc_open');
204		}).find('a').on('click',function(e){
205			// .acc_title 下のaタグをクリックした時にはアイコンを変化させない
206			e.stopPropagation();
207		});
208		// 大メニュー配下に小メニューが無い場合アコーディオンを削除
209		$('.subsite_menu').each(function(){
210			if($(this).find('ul').length == 0){
211				$(this).children('.subsite_menu_ttl').off('click').removeClass('acc_title').addClass('no_acc_title').next().remove();
212			}
213		});
214	}
215
216	//テーブル伸縮
217	function detailFreeTable(){
218		$('#main_body .detail_free > table').each(function(){
219			$(this).wrap('<div class="sp_table_wrap2"><div class="sp_table_wrap"><div></div></div></div>div>');
220			$(this).parent().parent().before('<button class="sw_large_table sp_button">表のサイズを切り替える</button>');
221		});
222		$('#main_body button.sp_button').click(function(){
223			$(this).next().children('div').toggleClass('sp_large_table');
224		});
225	}
226
227	// 見出しをページ内リンクとして目次化する
228	function addIndextoDetail(){
229		// #main_body の中に見出しが設定されている場合に目次を作成。
230		if ($('#main_body h2')[0]) {
231			var htag = '';
232			$('#main_header').after('<div id="sp_page_index_link_wrap"><ul id="sp_page_index_link"></ul></div>');
233			$('#sp_page_index_link_wrap').prepend('<button id="sp_page_index_link_toggle">ページ内目次</button>');
234			$('#main_body :header').each(function(i){
235				htag = $(this).get(0).tagName.toLowerCase();
236				$(this).before('<span id="sp_headline_' + i + '"></span>');
237				$('#sp_page_index_link').append('<li><a href="#sp_headline_'+i+'" class="sp_headtype_'+htag+'">'+ $(this).text() +'</a></li>');
238			});
239			$('#sp_page_index_link').hide();
240			$('#sp_page_index_link_toggle, #sp_page_index_link a').on('click',function(){
241				$('#sp_page_index_link_toggle').toggleClass('open');
242				$('#sp_page_index_link').toggle();
243			});
244		}
245	}
246
247	// 目的ページ本文の見出し前にhrを追加
248	function detailMidashi(){
249		if ($('#main_body div[class^="detail_"]')[0]) {
250			$('#main_body div[class^="detail_"] :header').each(function(){
251				$(this).before('<hr class="cf" />');
252			});
253		}
254	}
255
256	// 表示中のページがサブサイトトップページか新着情報一覧ページかの判定
257	// URL中にindex-2.htmlを含めば、bodyにクラスindex-2を追加
258	function chkSiteIndexListAll(){
259		if(location.pathname.lastIndexOf('index-2.html') >= 0){
260			$('body').addClass('index-2');
261		}
262	}
263
264	// 空の関連情報を削除
265	function empty_kanren_remove(){
266		if ($('#kanren_info')[0]) {
267			if (!$('#kanren_info .kanren_box')[0]) {
268				$('#kanren_info').remove();
269			}
270		}
271	}
272
273	// ヘッダ固定スクロール
274	function headerScroll(){
275		var headerHeight = $('#header').height();
276		$(window).scroll(function(){
277			var scrollVal = $(this).scrollTop();
278			if(scrollVal > headerHeight){ // ヘッダ以下にスクロールしたとき
279				$('#container').addClass('header_fixed');
280				$('#container').css('padding-top',headerHeight + 'px'); // スクロール時、position:fixedさせたときのコンテンツのズレ動きをさせない
281			}else if(scrollVal < headerHeight){
282				if($('#container.header_fixed')[0]){
283					$('#container').removeClass('header_fixed');
284					$('#container').css('padding-top','0px');
285				}
286			}
287		});
288	}
289
290	// アンカーリンクアニメーション
291	function setAnchorAnime(){
292		// #で始まるアンカーをクリックした場合に処理
293		if(!$('.errrange')[0]){
294			$('a[href^=#]').on('click keypress',function() {
295				var speed = 400; // スクロールの速度 ミリ秒
296				var href= $(this).attr("href");// アンカーの値取得
297				var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を取得
298				var position = target.offset().top; // 移動先を数値で取得
299				$('body,html').animate({scrollTop:position}, speed, 'swing'); // スムーススクロール
300				// return false;
301				return true;
302			});
303		}
304	}
305
306	// アクセシビリティ機能メニュー開閉
307	function acc_support_menu(){
308		$('#support_menu_close').on('click keypress',function(){
309			$('#support_menu_open,#support_menu_box').removeClass('open');
310		});
311		$('#support_menu_open').on('click keypress',function(){
312			$('#support_menu_open,#support_menu_box').toggleClass('open');
313		});
314		$('#support_menu_open,#support_menu_box').on('click keypress',function(event){
315			event.stopPropagation();
316		});
317		$(document).on('click keypress',function(){
318			$('#support_menu_open,#support_menu_box').removeClass('open');
319		});
320	}
321
322	// おすすめバナー(回遊ボタン)
323	function acc_osusume_banner(){
324		$('#osusume_banner_close').on('click keypress',function(){
325			$('#osusume_banner').removeClass('open');
326		});
327		$('#osusume_banner_open').on('click keypress',function(){
328			$('#osusume_banner').toggleClass('open');
329		});
330		$('#osusume_banner_open,#osusume_banner').on('click keypress',function(event){
331			event.stopPropagation();
332		});
333		$(document).on('click keypress',function(){
334			$('#osusume_banner').removeClass('open');
335		});
336	}
337
338	// ページトップボタンを固定
339	function accToPagetop(){
340		$(window).scroll(function(){
341			if ($(this).scrollTop() > 200) {
342				$('#footer_link_pagetop').addClass('fixed');
343			}else {
344				$('#footer_link_pagetop').removeClass('fixed');
345			}
346		});
347	}
348
349	// スマートフォン用メニュー開閉
350	function spMenuToggle(){
351		$('#spm_menu').on('click',function(){
352			$('#container').removeClass('spm_search_open').toggleClass('spm_menu_open');
353		});
354	}
355
356	// スマートフォン用検索メニュー開閉
357	function spSearchToggle(){
358		$('#spm_search').on('click',function(){
359			$('#container').removeClass('spm_menu_open').toggleClass('spm_search_open');
360		});
361	}
362
363	// PC表示切り替えボタンを追加
364	function changeViewMode(){
365		if(('sessionStorage' in window) && (window.sessionStorage !== null)) {
366			// ページ表示時に、それぞれの切り替えボタンを追加。
367			$('#spm_wrap').prepend('<button type="button" id="viewPCMode">PC表示</button>');
368			$('body').prepend('<button type="button" id="viewSPMode">スマートフォン表示に戻る</button>');
369			$('#viewSPMode').hide();
370			// 表示時にセッションストレージにviewPCModeがあり、PCならPC表示継続
371			if(JSON.parse(sessionStorage.getItem('viewMode')) == 'PC'){
372				$('meta[name="viewport"]').attr('content','width=device-width, initial-scale=0.4,user-scalable=yes');
373				$('#viewPCMode').hide();
374				$('#viewSPMode').show();
375			}
376			// PC表示開始
377			$('#viewPCMode').on('click',function(){
378				sessionStorage.setItem('viewMode',JSON.stringify('PC'));
379				$('meta[name="viewport"]').attr('content','width=device-width, initial-scale=0.4,user-scalable=yes');
380				$('#viewPCMode').hide();
381				$('#viewSPMode').show();
382			});
383			// PC表示解除
384			$('#viewSPMode').on('click',function(){
385				sessionStorage.removeItem('viewMode');
386				location.reload();
387			});
388		}
389	}
390
391	// 目的ページの添付ファイルにGoogleアナリティクスのイベントやページビューを追加(gtag.js用)
392	function addGAEventToAttachment(){
393		var GA_MEASUREMENT_ID = ''; // Google アナリティクス IDを入れてください。例:'UA-00000000-0'
394		var linkText = ''; // リンク文字列
395		var pageTitle = $('h1').text(); // ページタイトル
396		var parentPageUrl = htmlspecialchars_URL(document.location); //添付ファイルがあるページのアドレス
397		var eventStr = ''; // 追加するトラッキング用スクリプト
398		var hrefText = ''; // 添付ファイルのアドレス
399		// aタグのリンク先が添付ファイル格納先アドレスを含む場合に実行
400		$('a[href*="/uploaded/attachment/"],a[href*="/uploaded/life/"]').each(function(){
401			linkText = $(this).text();
402			hrefText = $(this).attr('href');
403			// イベントトラッキングを計測したいときは下記を有効にします。
404			// eventStr = "javascript:gtag('event','click',{'event_category':'添付ファイル','event_label':'" + linkText + " ( " + parentPageUrl + " )" + "'});";
405
406			// ページビューを計測したいときは下記を有効にします。
407			eventStr = "javascript:gtag('config', " + GA_MEASUREMENT_ID + " ,{'page_title':'" + linkText + ' / ' + pageTitle + "',page_location:'" + parentPageUrl + "','page_path':'" + hrefText + "'})";
408
409			// onclick,onkeypressの追加
410			$(this).attr({
411				onclick:eventStr,
412				onkeypress:eventStr
413			});
414		});
415	}
416
417	function gnavSetting(){
418		$('#gnav').each(function(){
419
420			var $gnav = $(this),
421				$list = $gnav.find('.gnav_list');
422
423			$list.each(function(){
424				var $this = $(this);
425				$this.on('mouseenter focusin', function(){
426					$this.addClass('is_active');
427				}).on('mouseleave focusout', function(){
428					$this.removeClass('is_active');
429				}).on('click', function(){
430					$this.toggleClass('is_open');
431				});
432			});
433
434		});
435	}
436
437	accGrayCheck();
438	initColorMode();
439	initFontSize();
440	setAccordion();
441	detailFreeTable();
442	if ($('.detail')[0] || $('.site_index')[0] || $('.site_detail')[0] || $('.soshiki_kakuka')[0]) {
443		addIndextoDetail();
444	}
445	detailMidashi();
446	empty_kanren_remove();
447	// headerScroll();
448	// setAnchorAnime();
449	acc_support_menu();
450	acc_osusume_banner();
451	accToPagetop();
452	spMenuToggle();
453	spSearchToggle();
454	// changeViewMode();
455
456	gnavSetting();
457
458	if($('.site_index')[0]){
459		chkSiteIndexListAll();
460	}
461
462});

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.