﻿/*フォーム系統制御JS集
------------------------------------------------------------------------------- */
(function() { 
/*	指定範囲内のチェックボックスのON/OFFを切り替えるプラグイン
------------------------------------------------------------------------------- */
	jQuery.fn.toggleAllChecker = function(config){			
		config = jQuery.extend({
				check			:	true	,					//	true : all check / false : all uncheck
				blockClass:	'check-group'		//	適用checkbox範囲のblock要素のclass
			},config);

		var target = this;
		
		$(target).click(function(){
			var targetArea = $(this).parents('.'+config.blockClass+':first');
			targetArea.each(function(){
				var targetCheckbox = targetArea.find('input:checkbox:enabled');
				if(config.check){				//	 all check
					targetCheckbox.attr('checked','checked');
				}else {									//	 all uncheck
					targetCheckbox.removeAttr('checked');
				}
			
			})
		});		
	};

/*	指定範囲内のラジオボタンクリックで指定のプルダウンを有効にするプラグイン
------------------------------------------------------------------------------- */
/*　classでｸﾞﾙｰﾌﾟ化　*/

	jQuery.fn.radioAndSelect = function(config){			
		config = jQuery.extend({
				blockClass:	'group-01'		//	適用checkbox範囲のblock要素のclass　初期値
			},config);

		var target = this;
		
		/*	format
		------------------------------------------------------------------------------- */
		$($(target).parents('.'+config.blockClass+':first').find('select')).each(function(){
			var radioClass = $('input:radio:checked').attr('class')
			var selectedClass = $(this).attr('class')
			if(radioClass != selectedClass){
			$(this).attr('disabled','disabled');	
			}			
			
		});

		$(target).click(function(){
			
			var targetArea = $(this).parents('.'+config.blockClass+':first');
			var targetAllSelect = targetArea.find('select');

			var targetClass = $(this).attr('class');
			var targetSelect = targetArea.find('select.'+targetClass);
			
			var checkedClass = $(targetSelect).attr('class');
			
			targetArea.find('select:enabled').each(function(){
					
				var clickRadio = $(this).attr('class');
				
				if(clickRadio == checkedClass){
				}else{
					this.selectedIndex = 0;
					$(this).attr('disabled','disabled');					
				}
			});
			$(targetSelect).removeAttr('disabled');
		});		
	};



/*	全てのフォーム要素を初期化するプラグイン
------------------------------------------------------------------------------- */
	jQuery.fn.formAllClear = function(config){			
		config = jQuery.extend({
				radioSelectClass	:	'group-01'
			},config);

		var target = this;
		$(target).click(function(){
			var formObj = $(this).parents('form');
			formObj.find('input:text').attr('value','').end()
						 .find('input:checkbox').attr('checked','').end()
						 .find('input:radio').attr('checked','').end()
						 .find('select').attr('selectedIndex',0).end()
						 .find('.'+config.radioSelectClass).find('select').each(function(){
								$(this).attr('disabled','disabled');
						 });
		});	
	};
})(jQuery);

// init

$(function(){
	$('.check-group .allcheck').toggleAllChecker();
	$('.group-01 input:radio').radioAndSelect();
	$('.jq-allclear').formAllClear();
});