PageSourceSearch

https://www.hokkatsu.jp/contact/js/validate.js

js hokkatsu.jp collected 2026-10-04 19:40:15 UTC 27,562 bytes, 777 lines download raw bytes

1/**
2 * Multiple Validate Package.
3 */
4	var mvp = {};
5	mvp.pv = {
6		'validUri' : './json/valid.json' ,
7		'illegulUri' : './json/irregul.json',
8		'pullDownUri' : './json/pulldown.json',
9		'validData' : [],
10		'illegulData' : [],
11		'pullDownData' : [],
12		'remaind' : 0,
13		'errorData' : [],
14		'finishedData' : [],
15		'selectDef' : '<option value="" selected>----</option>'
16	};
17	mvp.cm = {
18		'all' : 0,
19		'en' : 1,
20		'num' : 2,
21		'mail' : 3,
22		'tel' : 4,
23		'set_name' : 5,
24		'set_address' : 6,
25		'set_yyyymmdd' : 7,
26		'set_mail' : 8,
27		'set_tel' : 9
28	};
29	mvp.init = function(){
30		// jsonファイル読み込み。
31		mvp.readJson();
32		
33		// event設定。
34		$('select, input, textarea').change(function(){ mvp.onChange($(this)); });
35		$('input, textarea').bind('keyup', function(){ mvp.onChange($(this)); });
36		$('input[type=text], input[type=tel], textarea').bind('focus', function(){ mvp.onChange($(this)); });
37		$('#confirm').click(mvp.confirm);
38	};
39	mvp.onChange = function(target){
40		mvp.rewriteValid(target);
41		mvp.rewriteIllegul(target);
42		mvp.rewritePulldown(target);
43	};
44	mvp.readJson = function(){
45		// 入力チェック用jsonを読込。
46		$.getJSON(
47			mvp.pv.validUri + '?ts=' + cfp.timeStamp(),
48			function(valid){
49				mvp.pv.validData = valid;
50				mvp.setImportant(); // 必須項目の背景に着色する。
51				mvp.countRemainder(); // 残り項目数をカウントする。
52				try{ fda.init(); }catch(e){}
53			}
54		);
55		// プルダウン書換用jsonを読込。
56		$.getJSON(
57			mvp.pv.pullDownUri + '?ts=' + cfp.timeStamp(),
58			function(pulldown){ mvp.pv.pullDownData = pulldown; }
59		);
60		// 特例書換用jsonを読込。
61		$.getJSON(
62			mvp.pv.illegulUri + '?ts=' + cfp.timeStamp(),
63			function(illegul){ mvp.pv.illegulData = illegul; }
64		);
65	};
66	mvp.confirm = function(){
67		if(mvp.pv.remaind - mvp.pv.finishedData.length <= 0 && mvp.pv.errorData.length <=0){
68			vep.isNotConfirm = true;
69			$('form')[0].submit();	
70		}
71	};
72	
73	/**
74	 * バリデート対応。
75	 */
76	mvp.rewriteValid = function(target){
77		var validId = '';
78		if(!cfp.isEmpty(target.attr('group'))){
79			validId = target.attr('group');
80		} else {
81			validId = target.attr('name');
82		}
83		
84		for(var i = 0; i < mvp.pv.validData.length; i++){
85			if(mvp.pv.validData[i]['id'] == validId){
86				var msg = '';
87				var v = mvp.getValue(target);	
88				
89				// テンプレート別処理分岐
90				if(mvp.pv.validData[i]['type'] == mvp.cm['set_name']){
91					// 姓名用入力チェック
92					msg = mvp.validNameSet(validId, mvp.pv.validData[i]['name'], mvp.pv.validData[i]['important']);
93				} else if(mvp.pv.validData[i]['type'] == mvp.cm['set_address']){
94					// 住所用入力チェック
95					msg = mvp.validAddressSet(validId, mvp.pv.validData[i]['name'], mvp.pv.validData[i]['important']);
96				} else if(mvp.pv.validData[i]['type'] == mvp.cm['set_yyyymmdd']){
97					// 日付用入力チェック
98					msg = mvp.validYyyymmddSet(validId, mvp.pv.validData[i]['name'], mvp.pv.validData[i]['important']);
99				} else if(mvp.pv.validData[i]['type'] == mvp.cm['set_mail']){
100					// メールアドレス用入力チェック
101					msg = mvp.validMailSet(validId, mvp.pv.validData[i]['name'], mvp.pv.validData[i]['important']);
102				} else {
103	
104					if(mvp.pv.validData[i]['important'] && cfp.isEmpty(v)){
105						msg = '必須です。';
106					} else if(!mvp.pv.validData[i]['important'] && cfp.isEmpty(v)){
107						// 必須ではなく、同時に未入力ならばチェックを行わない。
108					} else {
109						// 文字タイプチェック。
110						if(cfp.isEmpty(msg)){
111							if(mvp.pv.validData[i]['type'] == mvp.cm['en']){ // 半角英数字
112								//v = v.toOneByte().replace('あ','a').replace('い','i').replace('う','u').replace('え','e').replace('お','o');
113								//target.val(v);
114								if(!v.match(/^[-a-zA-Z0-9]+$/)){
115									msg = '半角英数字で入力して下さい。';
116								}
117							} else if(mvp.pv.validData[i]['type'] == mvp.cm['num']){ // 半角数字
118								//v = v.toOneByte();
119								//v = v.replace('-', '').replace('+', '').replace('*', '').replace('/', '').replace('/', '').replace('=', '');
120								//target.val(v);
121								if(!v.match(/^[0-9]+$/)){
122									msg = '半角数字で入力して下さい。';
123								}
124							} else if(mvp.pv.validData[i]['type'] == mvp.cm['mail']){ // メルアド
125								//v  = v.toOneByte().replace('ï¼ ', '@');
126								//v  = v.replace('@', '@').replace('。','.').replace('.','.').replace('ー','-').replace('−','-').replace('_','_').replace('、',',');
127								//v  = v.replace('あ','a').replace('い','i').replace('う','u').replace('え','e').replace('お','o');
128								//target.val(v);
129								if(!v.match(/^[A-Za-z0-9]+[\w\.-]+@[\w\.-]+\.\w{2,}$/)){
130									msg = '正しいメールアドレスを入力して下さい。';
131								}
132							} else if(mvp.pv.validData[i]['type'] == mvp.cm['tel']){ // 電話番号
133								v = v.toOneByte(); target.val(v);
134								if(!v.match(/^0[0-9]{1,5}-[0-9]{2,4}-[0-9]{3,4}$/)){
135									msg = 'ハイフン入りの電話番号を入力して下さい。';
136								}
137							} else {
138								// @todo 日付について
139							}
140						}
141						
142						if(cfp.isEmpty(msg)){
143							if(mvp.pv.validData[i]['max'] != 0 && mvp.pv.validData[i]['max'] < v.length){
144								msg = mvp.pv.validData[i]['name'] + 'の文字数が多すぎます。';
145							} else if(mvp.pv.validData[i]['min'] != 0 && mvp.pv.validData[i]['min'] > v.length){
146								msg = mvp.pv.validData[i]['name'] + 'の文字数が足りません。';
147							}
148						}
149					}
150					// 必須チェック
151					if(mvp.pv.validData[i]['important']){
152						mvp.pushRemainder(validId, cfp.isEmpty(msg));
153					}
154					mvp.pushError(validId, cfp.isEmpty(msg));
155					mvp.changeMust(mvp.pv.validData[i]['id'], !cfp.isEmpty(msg));
156					if(cfp.isEmpty(msg) && !cfp.isEmpty(v)) fda.call(mvp.pv.validData[i]['id'], true);
157				}
158				
159				// 表示きりかえ
160				if(!cfp.isEmpty(msg)){
161					$('#' + mvp.pv.validData[i]['id'] + '_wrapper .caution').html(msg).addClass('active');
162				} else {
163					$('#' + mvp.pv.validData[i]['id'] + '_wrapper .caution').html(msg).removeClass('active');
164				}
165				//mvp.log('fx()[rewriteValid][' + validId + '][' + msg + '][' + v  + ']' + mvp.pv.validData[i]['important'] + ':' + cfp.isEmpty(v));
166				
167				mvp.countRemainder();
168			}
169		}
170	};
171	mvp.pushRemainder = function(validId, isAdd){
172		//mvp.log('fx()[pushRemainder]' + validId +':'+ isAdd)
173		// 残り項目カウント用
174		if(isAdd){
175			var tfdaFlg = false;
176			for(var j = 0; j < mvp.pv.finishedData.length; j++){
177				if(mvp.pv.finishedData[j] == validId)  tfdaFlg = true;
178			}
179			if(!tfdaFlg) mvp.pv.finishedData.push(validId);
180		} else {
181			var tfda = [];
182			for(var j = 0; j < mvp.pv.finishedData.length; j++){
183				if(mvp.pv.finishedData[j] != validId)  tfda.push(mvp.pv.finishedData[j]);
184			}
185			mvp.pv.finishedData = tfda;
186		}
187	};
188	mvp.pushError = function(validId, isNotAdd){
189		//mvp.log('fx()[pushRemainder]' + validId +':'+ isAdd)
190		// 残り項目カウント用
191		if(!isNotAdd){
192			var tfdaFlg = false;
193			for(var j = 0; j < mvp.pv.errorData.length; j++){
194				if(mvp.pv.errorData[j] == validId)  tfdaFlg = true;
195			}
196			if(!tfdaFlg) mvp.pv.errorData.push(validId);
197		} else {
198			var tfda = [];
199			for(var j = 0; j < mvp.pv.errorData.length; j++){
200				if(mvp.pv.errorData[j] != validId)  tfda.push(mvp.pv.errorData[j]);
201			}
202			mvp.pv.errorData = tfda;
203		}
204	};
205	mvp.validNameSet = function(validId, validName, important){// 姓名用入力チェック
206		var msg = '';
207		
208		if(important){
209			if(cfp.isEmpty(mvp.getValue($('#' + validId +  '_sei')))
210			 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_mei')))
211			 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_seikana')))
212			 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_meikana')))){	
213				msg = validName + 'は必須です。';
214			}
215			
216			// 表示切替
217			mvp.changeMust(validId +  '_sei', cfp.isEmpty(mvp.getValue($('#' + validId +  '_sei'))));
218			if(cfp.isEmpty(mvp.getValue($('#' + validId +  '_sei')))) {
219				mvp.changeMust(validId +  '_seikana', true);
220			} else {
221				mvp.changeMust(validId +  '_seikana', cfp.isEmpty(mvp.getValue($('#' + validId +  '_seikana'))));
222			}
223			mvp.changeMust(validId +  '_mei', cfp.isEmpty(mvp.getValue($('#' + validId +  '_mei'))));
224			if(cfp.isEmpty(mvp.getValue($('#' + validId +  '_mei')))) {
225				mvp.changeMust(validId +  '_meikana', true);
226			} else {
227				mvp.changeMust(validId +  '_meikana', cfp.isEmpty(mvp.getValue($('#' + validId +  '_meikana'))));	
228			}
229			mvp.pushRemainder(validId, cfp.isEmpty(msg));
230		}
231		
232		if(cfp.isEmpty(msg)
233		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_sei')))
234		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_mei')))
235		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_seikana')))
236		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_meikana')))){	
237			fda.call(validId, true);
238		}	
239		return msg;
240	};
241	mvp.validAddressSet = function(validId, validName, important){// 住所用入力チェック
242		var msg = '';
243		var notZip = false;
244		if(mvp.getValue($('#' + validId +  '_kaigai')) == '海外'){
245			$('#' + validId +  '_forkokunai').css({'display' : 'none'});
246			$('#' + validId +  '_forkokugai').css({'display' : 'block'});
247			$('#' + validId +  '_zip').val('');	
248			$('#' + validId +  '_prefecture').val('');	
249			$('#' + validId +  '_municipality').val('');	
250			$('#' + validId +  '_lotnumber').val('');
251			$('#' + validId +  '_building').val('');	
252			
253			if(important) mvp.pushRemainder(validId, cfp.isEmpty(msg));
254			fda.call(validId, true);
255		} else {
256			$('#' + validId +  '_forkokunai').css({'display' : 'block'});
257			$('#' + validId +  '_forkokugai').css({'display' : 'none'});
258			$('#' + validId +  '_minute').val('');	
259
260			if(!cfp.isEmpty(mvp.getValue($('#' + validId +  '_zip')))){
261				//var v = mvp.getValue($('#' + validId +  '_zip')).toOneByte();
262				//v = v.replace('-', '').replace('+', '').replace('*', '').replace('/', '').replace('=', '');
263				//$('#' + validId +  '_zip').val(v);
264				if(!mvp.getValue($('#' + validId +  '_zip')).match(/^[0-9]+$/)
265				 || mvp.getValue($('#' + validId +  '_zip')).length != 7){
266					msg = '7桁の半角数字で入力して下さい。';
267					notZip = true;
268				}
269			} else {
270				if(important) notZip = true;
271			}
272			
273			if(important && cfp.isEmpty(msg)){
274				if(cfp.isEmpty(mvp.getValue($('#' + validId +  '_zip')))
275				 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_prefecture')))
276				 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_municipality')))
277				 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_lotnumber')))){	
278					msg = validName + 'は必須です。';
279				}
280				// if(cfp.isUnderIE8()){
281				//	if(mvp.getValue($('#' + validId +  '_zip')) == $('#' + validId +  '_zip').attr('placeholder')
282				//	 || mvp.getValue($('#' + validId +  '_prefecture')) == $('#' + validId +  '_prefecture').attr('placeholder')
283				//	 || mvp.getValue($('#' + validId +  '_municipality')) == $('#' + validId +  '_municipality').attr('placeholder')
284				//	 || mvp.getValue($('#' + validId +  '_lotnumber')) == $('#' + validId +  '_lotnumber').attr('placeholder')){	
285				//		msg = validName + 'は必須です。';
286				//	}
287				//}
288			}
289			if(cfp.isEmpty(msg)
290			 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_zip')))
291			 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_prefecture')))
292			 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_municipality')))
293			 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_lotnumber')))){	
294				fda.call(validId, true);
295			}
296			
297			// 表示切替
298			mvp.changeMust(validId +  '_zip', notZip);
299			if(important){
300				mvp.changeMust(validId +  '_prefecture', cfp.isEmpty(mvp.getValue($('#' + validId +  '_prefecture'))));
301				mvp.changeMust(validId +  '_municipality', cfp.isEmpty(mvp.getValue($('#' + validId +  '_municipality'))));
302				mvp.changeMust(validId +  '_lotnumber', cfp.isEmpty(mvp.getValue($('#' + validId +  '_lotnumber'))));
303			}
304			
305			if(important) mvp.pushRemainder(validId, cfp.isEmpty(msg));
306		}
307		
308		return msg;
309	};
310	mvp.validYyyymmddSet = function(validId, validName, important){// 日付用入力チェック
311		var msg = '';
312		if(important){
313			if(cfp.isEmpty(mvp.getValue($('#' + validId +  '_y')))
314			 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_m')))
315			 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_d')))){	
316				msg = validName + 'は必須です。';
317			}
318			
319			// 表示切替
320			mvp.changeMust(validId +  '_y', cfp.isEmpty(mvp.getValue($('#' + validId +  '_y'))));
321			mvp.changeMust(validId +  '_m', cfp.isEmpty(mvp.getValue($('#' + validId +  '_m'))));
322			mvp.changeMust(validId +  '_d', cfp.isEmpty(mvp.getValue($('#' + validId +  '_d'))));
323			
324			mvp.pushRemainder(validId, cfp.isEmpty(msg));
325		}
326		if(!cfp.isEmpty(mvp.getValue($('#' + validId +  '_y')))
327		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_m')))
328		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_d')))){	
329			fda.call(validId, true);
330		}
331		
332		return msg;
333	};
334	mvp.validMailSet = function(validId, validName, important){// メールアドレス用入力チェック
335		var msg = '';
336		var notFirst = false;
337		var notSecond = false;
338	
339		if(!cfp.isEmpty(mvp.getValue($('#' + validId +  '_first')))){
340			//var ma1 = mvp.getValue($('#' + validId +  '_first')).toOneByte().replace('ï¼ ', '@');
341			//ma1 = ma1.replace('。','.').replace('.','.').replace('ー','-').replace('−','-').replace('_','_').replace('、',',');
342			//ma1 = ma1.replace('あ','a').replace('い','i').replace('う','u').replace('え','e').replace('お','o');
343			//$('#' + validId +  '_first').val(ma1);
344			if(!mvp.getValue($('#' + validId +  '_first')).match(/^[A-Za-z0-9]+[\w\.-]+@[\w\.-]+\.\w{2,}$/)){
345				msg = '正しいメールアドレスを入力して下さい。';
346				notFirst = true;
347			}
348		} else {
349			if(important) notFirst = true;
350		}
351		
352		if(!cfp.isEmpty(mvp.getValue($('#' + validId +  '_second')))){
353			//var ma2 = mvp.getValue($('#' + validId +  '_second')).toOneByte().replace('ï¼ ', '@');
354			//ma2 = ma2.replace('。','.').replace('.','.').replace('ー','-').replace('−','-').replace('_','_').replace('、',',');
355			//ma2 = ma2.replace('あ','a').replace('い','i').replace('う','u').replace('え','e').replace('お','o');
356			//$('#' + validId +  '_second').val(ma2);
357			if(!mvp.getValue($('#' + validId +  '_second')).match(/^[A-Za-z0-9]+[\w\.-]+@[\w\.-]+\.\w{2,}$/)){
358				msg = '正しいメールアドレスを入力して下さい。';
359				notSecond = true;
360			}
361		} else {
362			if(important) notSecond = true;
363		}
364		
365		if(cfp.isEmpty(msg)){
366			if(!cfp.isEmpty(mvp.getValue($('#' + validId +  '_first')))
367			 && cfp.isEmpty(mvp.getValue($('#' + validId +  '_second')))){
368				msg = validName + '(確認)が未入力です。';
369				notSecond = true;
370			}
371			if(cfp.isEmpty(mvp.getValue($('#' + validId +  '_first')))
372			 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_second')))){
373				msg = validName + 'が未入力です。';	
374				notFirst = true;
375			}
376		}
377	
378		if(important && cfp.isEmpty(msg)){
379			if(cfp.isEmpty(mvp.getValue($('#' + validId +  '_first')))
380			 || cfp.isEmpty(mvp.getValue($('#' + validId +  '_second')))){	
381				msg = validName + 'は必須です。';
382			} 
383		}
384	
385		if(cfp.isEmpty(msg)){
386			if(mvp.getValue($('#' + validId +  '_first')) != mvp.getValue($('#' + validId +  '_second'))){
387				msg = 'メールアドレスが一致しません。';
388				notFirst = true;
389				notSecond = true;
390			}
391		}
392		if(cfp.isEmpty(msg)
393		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_first')))
394		 && !cfp.isEmpty(mvp.getValue($('#' + validId +  '_second')))){
395			 fda.call(validId, true);
396		}
397		
398		// 表示切替
399		mvp.changeMust(validId +  '_first', notFirst);
400		mvp.changeMust(validId +  '_second', notSecond);
401
402		if(important) mvp.pushRemainder(validId, cfp.isEmpty(msg));
403		return msg;
404	};
405	
406	/**
407	 * イレギュラーケースの書換対応
408	 */
409	mvp.rewriteIllegul = function(target){
410		var mv = '';
411		var nff = false;
412		var ta = []; var vaa = []; var iaa = [];
413		var v = mvp.getValue(target);
414		
415		// 1. 監視対象であるかを確認。
416		for(var i = 0; i < mvp.pv.illegulData.length; i++){
417			if(mvp.pv.illegulData[i]['focusId'] == target.attr('name')) ta.push(mvp.pv.illegulData[i]);
418		}
419		for(var i = 0; i < ta.length; i++){
420			// 2. 書き換える内容を取得する。
421			if(ta[i]['modify'] == 1){
422				vaa = [];
423				for(var j = 0; j < ta[i]['if'].length; j++){
424					notFirstFlg = false;  notDualFlg = false;
425					for(var k = 0; k < iaa.length; k++) if(ta[i]['id'] == iaa[k]) notFirstFlg = true;
426					for(var k = 0; k < vaa.length; k++) if(ta[i]['value'] == vaa[k]) notDualFlg = true;
427					if(cfp.isEmpty(ta[i]['if'][j]['value'])){
428						if(!notDualFlg && v == ""){
429							vaa.push(ta[i]['value']);
430							if(!notFirstFlg){
431								$('#' + ta[i]['id']).attr({'value' : ta[i]['value'] });
432								iaa.push(ta[i]['id']);
433							}
434						}
435					} else if(v.indexOf(ta[i]['if'][j]['value']) > -1){
436						if(!notDualFlg){
437							vaa.push(ta[i]['value']);
438							if(!notFirstFlg){
439								$('#' + ta[i]['id']).attr({'value' : ta[i]['value'] });
440								iaa.push(ta[i]['id']);
441							} else {
442								$('#' + ta[i]['id']).attr({'value' : $('#' + ta[i]['id']).attr('value') + ta[i]['value'] });
443							} 
444						}
445					}
446				}
447			}
448			
449			// 3. 表示 / 非表示の切り替え。
450			if(ta[i]['display'] != 0){
451				for(var j = 0; j < ta[i]['if'].length; j++){
452					if(cfp.isEmpty(ta[i]['if'][j]['value'])){
453						if(ta[i]['display'] == 1 && cfp.isEmpty(v)){
454							mvp.changeDisplay($('#' + ta[i]['id']), true);
455						} else if(ta[i]['display'] == 2 && cfp.isEmpty(v)){
456							mvp.changeDisplay($('#' + ta[i]['id']), false);
457						}
458					} else if(v.indexOf(ta[i]['if'][j]['value']) > -1){
459						if(ta[i]['display'] == 1){
460							mvp.changeDisplay($('#' + ta[i]['id']), true);
461						} else if(ta[i]['display'] == 2){
462							mvp.changeDisplay($('#' + ta[i]['id']), false);
463						}
464					}
465				}
466			}
467		}
468	};
469	mvp.changeDisplay = function(target, isBlock){
470		if(isBlock){
471			var attrData = target.attr('sway');
472			if(cfp.isEmpty(attrData)) target.html(attrData);
473			target.attr({'sway' : ''}).html(attrData).css({'display' : 'block'});
474		} else {
475			target.attr({'sway' : target.html()}).html('').css({'display' : 'none'});
476		}
477		
478	};
479	
480	/**
481	 * pulldownの自動書換。
482	 */
483	mvp.rewritePulldown = function(target){
484		if(target.get(0).tagName != 'SELECT') return;
485		for(var i = 0; i < mvp.pv.pullDownData.length; i++){
486			if(target.attr('id') == mvp.pv.pullDownData[i]['focusId']){
487				if(target.children('option:selected').attr('value') != ''){
488					for(var j = 0; j < mvp.pv.pullDownData[i]['if'].length; j++){
489						if(target.children('option:selected').attr('value') == mvp.pv.pullDownData[i]['if'][j]['value']){
490							$('#' + mvp.pv.pullDownData[i]['id']).html(mvp.pv.selectDef);
491							for(var k = 0; k < mvp.pv.pullDownData[i]['list'].length; k++){
492								$('#' + mvp.pv.pullDownData[i]['id']).append(
493									'<option value="' + mvp.pv.pullDownData[i]['list'][k]['value'] + '">'
494									 + mvp.pv.pullDownData[i]['list'][k]['name'] + '</option>'
495								 );
496							}
497						}
498					}
499				} else {
500					$('#' + mvp.pv.pullDownData[i]['id']).html(mvp.pv.selectDef);
501				}
502				mvp.rewritePulldown($('#' + mvp.pv.pullDownData[i]['id']));
503			}
504		} // 何だよこの入れ子の数…。
505	};
506	
507	/**
508	 * 必須項目に色付けする。
509	 */
510	mvp.isFirst = true;
511	mvp.setImportant = function(){
512		for(var i = 0; i < mvp.pv.validData.length; i++){
513			if(mvp.pv.validData[i]['important']){
514				// 各種例外処理。
515				if(mvp.pv.validData[i]['type'] == mvp.cm['set_name']){
516					if(mvp.isFirst){
517						mvp.changeMust(mvp.pv.validData[i]['id'] + '_sei', true);
518						mvp.changeMust(mvp.pv.validData[i]['id'] + '_mei', true);
519						mvp.changeMust(mvp.pv.validData[i]['id'] + '_seikana', true);
520						mvp.changeMust(mvp.pv.validData[i]['id'] + '_meikana', true);
521					} else {
522						mvp.rewriteValid($('#' + mvp.pv.validData[i]['id'] + '_sei'));
523					}
524				} else if(mvp.pv.validData[i]['type'] == mvp.cm['set_address']){
525					if(mvp.isFirst){
526						mvp.changeMust(mvp.pv.validData[i]['id'] + '_zip', true);
527						mvp.changeMust(mvp.pv.validData[i]['id'] + '_prefecture', true);
528						mvp.changeMust(mvp.pv.validData[i]['id'] + '_municipality', true);
529						mvp.changeMust(mvp.pv.validData[i]['id'] + '_lotnumber', true);
530					} else {
531						mvp.rewriteValid($('#' + mvp.pv.validData[i]['id'] + '_zip'));
532					}
533				} else if(mvp.pv.validData[i]['type'] == mvp.cm['set_yyyymmdd']){
534					if(mvp.isFirst){
535						mvp.changeMust(mvp.pv.validData[i]['id'] + '_y', true);
536						mvp.changeMust(mvp.pv.validData[i]['id'] + '_m', true);
537						mvp.changeMust(mvp.pv.validData[i]['id'] + '_d', true);
538					} else {
539						mvp.rewriteValid($('#' + mvp.pv.validData[i]['id'] + '_y'));
540					}
541				} else if(mvp.pv.validData[i]['type'] == mvp.cm['set_mail']){
542					if(mvp.isFirst){
543						mvp.changeMust(mvp.pv.validData[i]['id'] + '_first', true);
544						mvp.changeMust(mvp.pv.validData[i]['id'] + '_second', true);
545					} else {
546						mvp.rewriteValid($('#' + mvp.pv.validData[i]['id'] + '_first'));
547					}
548				} else {
549					if(mvp.isFirst){
550						mvp.changeMust(mvp.pv.validData[i]['id'], true);
551					} else {
552						mvp.rewriteValid($('#' + mvp.pv.validData[i]['id']));
553					}
554				}
555				mvp.pv.remaind++;
556			}
557			$('input[type=checkbox]:checked, input[type=radio]:checked').each(function(){
558				$(this).parent('label').addClass('c_on');
559			});	
560		}
561	};
562	
563	/**
564	 * 住所の自動検索。
565	 */
566	mvp.getAddr = function(id){ 
567		AjaxZip3.zip2addr(
568			id + '_zip',
569			'',
570			id + '_prefecture',
571			id + '_municipality',
572			id + '_lotnumber',
573			'',
574			id + '_guide'
575		);
576		//clearTimeout(mvp.stAddr);
577		//mvp.stAddr = setTimeout(function(){ mvp.rewriteValid($('#' + id));}, 1000);
578	};
579	
580	/**
581	 *  日付の自動書き出し。
582	 */
583	mvp.ndn = 0;
584	mvp.setDayList = function(id){
585		var dn = 0;
586		var y = mvp.getValue($('#' + id + '_y'));
587		var m = mvp.getValue($('#' + id + '_m'));
588	
589		if(m == 2){
590			if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0){
591				dn = 29;
592			} else {
593				dn = 28;
594			}
595		} else if(m == 4 || m == 6 || m==9 || m ==11){
596			dn = 30;	
597		} else {
598			dn = 31;
599		}
600		if(mvp.ndn != dn){
601			$('#' + id + '_d').html(mvp.pv.selectDef);
602			for(var i = 1; i <= dn; i++) $('#' + id + '_d').append('<option value="' + i +'">' + i + '</option>');
603			mvp.ndn = dn;
604		}
605	};
606	mvp.uruCheck = function(id){
607		var dn = 0;
608		var y = mvp.getValue($('#' + id + '_y'));
609		var m = mvp.getValue($('#' + id + '_m'));
610		if(m == 2){
611			if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0){
612				dn = 29;
613			} else {
614				dn = 28;	
615			}
616			if(mvp.ndn != dn){
617				$('#' + id + '_d').html(mvp.pv.selectDef);
618				for(var i = 1; i <= dn; i++) $('#' + id + '_d').append('<option value="' + i +'">' + i + '</option>');
619				mvp.ndn = dn;
620			}
621		}
622	}
623	
624	// Private Function.
625	mvp.getValue = function(target){ // 変更された要素のvalueを取得する。
626		var result = '';
627		if(target.attr('type') == 'radio'){
628			// 1. check, radioの場合
629			for(var j= 0; j < $('input[name=' + target.attr('name') + ']:checked').length; j++){
630				result += $('input[name=' + target.attr('name') + ']:checked:eq(' + j + ')').attr('value');			
631			}
632		} else if(target.attr('type') == 'checkbox'){
633			// 2. check, radioの場合
634			for(var j= 0; j < $('input[group=' + target.attr('name').replace('[]', '') + ']:checked').length; j++){
635				result += $('input[group=' + target.attr('name').replace('[]', '') + ']:checked:eq(' + j + ')').attr('value');			
636			}
637		} else {
638			// 3. それ以外の場合。
639			result = target.attr('value');
640		}
641		$('#stat_area').html('id:' + target.attr('name') + ', value:' + result);		
642		return result;
643	};
644	mvp.countRemainder = function(){
645		var count = mvp.pv.remaind - mvp.pv.finishedData.length;
646		$('#remainder strong').html(count);
647		if(count <= 0 && mvp.pv.errorData <= 0){
648			$('#confirm').removeClass('yet');
649		} else {
650			$('#confirm').addClass('yet');
651		}
652	};
653	mvp.changeMust = function(id, flg){ // 必須警告用の背景のon/off。
654		var focusTags = null;
655		var type = $('input[name=' + id + ']').attr('type');
656		mvp.log('changeMust:' + id + ':' + flg + '(' + type +')');
657		if(type == 'radio'){
658			focusTags = $('#' + id + '_wrapper label');
659		} else {
660			if(cfp.isEmpty($('#' + id).get(0))){
661				var type = $('input[group=' + id + ']').attr('type');
662				if(type == 'checkbox'){
663					focusTags = $('#' + id + '_wrapper label');
664				} else {
665					// セット用処理。
666					focusTags = $('input[group=' + id + '], #' + id + '_wrapper .selectbox');
667				}
668			} else {
669				var tagName = $('#' + id).get(0).tagName;
670				if(tagName == 'INPUT' || tagName == 'TEXTAREA'){
671					focusTags = $('#' + id);
672				} else if(tagName == 'SELECT'){
673					focusTags = $('#' + id).parent('.selectbox');
674				}
675			}
676		}
677		
678		// addClass or removeClass
679		if(flg){
680			focusTags.addClass('must');
681		} else {
682			focusTags.removeClass('must');
683		}
684	};
685	mvp.log = function(txt){ try{ console.log(txt) }catch(e){} };
686	$(mvp.init);
687
688
689/**
690 * Visual Effect Package.
691 */
692	var vep = {};
693	vep.trh = 0;
694	vep.init = function(){
695		//vep.tailRemainder();
696		$('.HdrClose').click(vep.windowClose);
697		window.onbeforeunload = vep.ridatsuGuard;
698		vep.heightLine();
699		if(cfp.isUnderIE8()) vep.ahph();
700	}; 
701	vep.tailRemainder = function(){ // 残り項目数の追跡(殺害中)
702	//	mvp.trh = $('#gHeader').innerHeight() + parseInt($('#gHeader').css('margin-bottom'));
703	//	$(window).scroll(function(){
704	//		if(mvp.trh < $(this).scrollTop()){
705	//			$('#remainder').css({'top' : $(this).scrollTop()  - mvp.trh+ 'px'});
706	//		} else {
707	//			$('#remainder').css({'top' : '0px'});
708	//		}
709	//	});
710	};
711	vep.heightLine = function(){
712	//	$('.parts').each(function(){
713	//		var n = $(this).children('.name');
714	//		var nh = n.height() + parseInt(n.css('padding-top')) + parseInt(n.css('padding-bottom'));
715	//		var ph = $(this).height();
716	//		if(nh > ph){
717	//			$(this).css({'height' : nh + 'px'});	
718	//		}
719	//	});
720	}
721	vep.windowClose = function(){
722		//ffigai
723		window.close();
724	};
725	vep.isNotConfirm = false;
726	vep.ridatsuGuard = function(event){
727		var msg = '';
728		if(!vep.isNotConfirm){
729			event = event || window.event;
730			msg += '入力完了まであと' + (mvp.pv.remaind - mvp.pv.finishedData.length) + '件です。\n';
731			msg += 'このページから移動すると入力したデータは保存されません。';
732			event.returnValue = msg;
733		}
734	};
735	vep.ahph = function(){
736		$('.parts_addressset input[type=text]').each(function(){
737				var plh = $(this).attr('placeholder');
738				$(this).parent().children('span').css({'width':'220px'}).append('<font style="font-size:0.8em; color:silver;"> (例) ' + plh + '</font>');			
739		});
740		/*try{
741			$('input[type=text]').each(function(){
742				if(cfp.isEmpty($(this).attr('placeholder'))){
743					$(this).attr({'placeholder' : ''});
744				}				
745			});
746			$('input[type=text]').ahPlaceholder({
747				placeholderColor : 'silver',
748				placeholderAttr  : 'placeholder',
749				likeApple : false
750			});
751		} catch(e){
752		
753		}*/
754	};
755	$(vep.init);
756	
757	/**
758	 * Four Digit Analytics.
759	 */
760	var fda = {};
761	fda.session ='';
762	fda.assetId = '';
763	fda.domain = '//www.4digit.jp/';
764	fda.init = function(){
765		for(var i = 0; i < mvp.pv.validData.length; i++){
766			fda.call(mvp.pv.validData[i]['id'], false);
767		}
768	};
769	fda.call = function(id, finished){
770		try{
771			var apiUrl = fda.domain;
772			apiUrl += '?session=' + fda.session + '&assetid=' + fda.assetId;
773			apiUrl += '&inputid=' + id + '&finished=' + finished;
774			$.ajax({url : apiUrl});
775			mvp.log(apiUrl);
776		}catch(e){}	
777	};

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.