// console.log が使えないときの代替関数
if (typeof console == 'undefined') {
	var console = {
		log: function(value) {
			alert(value);
		}
	};
}

//会社概要 地図ポップアップ
function pupupMap(url,wname){
	win=window.open(url,wname,"width=540,height=600,scrollbars=yes");
}

/**
 * ループカウンター
 *
 * @param int min 最小値
 * @param int max 最大値
 *
 */
function loopCounter(min, max, random) {
	var min = min;
	var max = max;
	var random = random || false;

	if (random) {
		var current = parseInt(Math.random() * max);
	} else {
		var current = min;
	}

	// Public Methods
	return {

		/*
		* カウンターに値を追加する
		* @param int n 追加する数
		*
		*/
		add: function(n) {
			current = current + n;
			if (current > max) {
				current = min;
				return false;
			} else if (current < min) {
				current = max;
				return false;
			}
			return true;
		},

		/*
		* カウンターの値を取得する
		*
		*/
		get: function() {
			return current;
		}
	}
}

// jQuery Plugins
(function($) {

	// あるボタンのクリックで、ターゲットの表示・非表示を切り替える
	$.fn.foldedBox = function(params) {
		var p = params;
		var body = $('body');

		return this.each(function() {
			var self		= $(this);
			var trigger = $(p.trigger);
			var speed		= p.speed;
			var display = false;
			var isLegacy = (!$.support.tbody) ? true : false; // IE6, 7は

			if(self.css('display') != 'none') {
				self.css('display', 'none');
				}

			trigger.click(function(event) {
				if (display) {
					hide();
				} else {
					show();
				}
				event.preventDefault();
				event.stopPropagation();
			});

			self.click(function(event) {
				event.stopPropagation();
			});

			body.click(hide);

			function show() {
				if (!isLegacy) {
					self.slideDown(speed);
				} else {
					self.show();
				}
				display = true;
			}

			function hide() {
				if (!isLegacy) {
					self.slideUp(speed);
				} else {
					self.hide();
				}
				display = false;
			}
		});
	}

	/*
	* 子要素をフェードイン/アウトさせる
	*
	* @param int interval フェードを切り替える間隔
	* @param int speed		フェードの速度
	*
	*/
	$.fn.fadeChildElements = function(param) {
		var target = param.target;
		var interval = param.interval || 2000;
		var speed = param.speed || 'slow';

		var container = this;

		/*
		* 前面に表示されている画像に付与する class
		*
		*/
		var activeClass = 'active';

		/*
		* ループカウンターを生成する
		* 最小値: 0, 最大値: 子要素の数 - 1
		*
		*/
		var children = container.children(target);
		children.css('opacity', 0);
		var l = children.length;
		var c = loopCounter(0, l - 1, param.random);
		var active = null;

		/*
		* クロスフェードを繰り返す関数
		*
		*/
		var fadeLoop = function() {
			
			/*
			* フェードアウト
			*
			*/
			if (active != null) {
				children.eq(active).fadeTo(speed, 0);
			}

			var n = c.get();
			active = n;

			/*
			* フェードイン
			*
			*/
			children.eq(n).fadeTo(speed, 1.0);
			
			/*
			* カウンターを1進める
			* ※最大値に達した場合、また最小値に戻る（ループカウンター）
			*
			*/
			c.add(1);
			setTimeout(fadeLoop, interval);
		}

		fadeLoop();

		return this;
	}

	/**
	* フォーム要素の活性・非活性をチェックボックスで切り替える
	* プライバシーポリシーに同意したときに、送信ボタンをアクティベートするときの例:
	* $('#agreePrivacy').toggleActivationByCheckbox({button: 'confirmBtn'});
	*
	* @param params
	*   @param params.target    {String} ターゲットを特定するセレクタ
	*   @param params.alternate {String} ターゲットが disabled のとき、替わりに表示する要素のセレクタ（オプション）
	* @returns {jQuery Object}
	*
	*/
	$.fn.toggleActivationByCheckbox = function(params) {
		var target, alternate;
		var hasAlternate = false;

		try {
			if (typeof params != 'object') {
				throw '"params" がオブジェクトではない';
			}

			if (!params.target) {
				throw '"params.target" が存在しない';
			}

			// ターゲットを取得
			target = $(params.target);

			if (target.length < 1) {
				throw 'ターゲットが特定できない';
			}

		} catch (e) {
			return false;
		}

		// params.alternate があるとき、要素を取得する
		if (params.alternate) {
			alternate = $(params.alternate);
			hasAlternate = true;
			// alternateがあるときは、あらかじめターゲットを隠しておく
			// あらかじめ、CSS で display: none しても OK
			target.hide();
		}

		/**
		 * ターゲットの活性・非活性を切り替える
		 *
		 * @param {boolean} checked
		 * @return {void}
		 */
		function toggle(checked) {
			if (checked) {
				target.attr('disabled', false);
			} else {
				target.attr('disabled', true);
			}

			// 代替要素があるとき、表示・非表示を切り替える
			if (hasAlternate) {
				toggleAlternate(checked);
			}
		}

		/**
		 * 代替要素とターゲットの表示・非表示を切り替える
		 *
		 * @param {boolean} checked
		 * @return {void}
		 */
		function toggleAlternate(checked) {
			if (checked) {
				target.show();
				alternate.hide();
			} else {
				target.hide();
				alternate.show();
			}
		}

		return this.each(function(k, v) {
			if (this.type != 'checkbox') {
				return;
			}

			var self = $(this);

			// change イベントをバインド
			self.change(function() {
				toggle(this.checked);
			});

			// チェックボックスの disable を解除
			self.removeAttr('disabled');

			// 画面読み込み時に change イベントを呼ぶ
			// 読込み時にチェックが入っていたら、すぐにアクティベートするため
			self.trigger('change');
		});
	};
})(jQuery);

// DOMロード後に実行
$(function() {
	/*
	* メインビジュアルのフェードイン/アウト
	*
	*/
	$('#mainVisualImages').fadeChildElements({
		target: 'a',	 // フェード対象の要素（CSSセレクタ）
		interval: 8000,  // フェードする間隔
		speed: 1000,		 // フェードの速さ
		random: false			// 開始画像をランダムにする
	});

	//テーブルの背景色を 1 行置きに変更する
	$(".stripe tr:even").addClass("even");

	//製品検索の開閉
	$('#megaDropSrc').foldedBox({
		trigger: '#srcBtn .toggle',
		speed: 50
	});

	// プライバシーポリシーに同意したときに、送信ボタンをアクティベートする
	$('#agreePrivacy').toggleActivationByCheckbox({
		target: '#confirmBtn',
		alternate: '#confirmBtnDisabled'
	});

	// placeholder
	$('#header .txtArea, #qitem').placeholder();

});

