var _common_loaded;
$(document).ready(function() {
	if (_common_loaded) return;
	_common_loaded = true;

	$('input[type!=checkbox]').focus(function() { $(this).addClass('focus'); });
	$('input[type!=checkbox]').blur(function() { $(this).removeClass('focus'); });

	// 入力フィールドの背景画像ガイド
	var setupImageGuide = function() {
		var target = $(this);
		target.focus(function() { $(this).removeClass('img_guide'); });
		target.blur(function() {
			if ($(this).val() == '') {
				$(this).addClass('img_guide');
			}
		});

		if (target.val() == '') {
			target.addClass('img_guide');
		} else {
			target.removeClass('img_guide');
		}
	};
	$('input.img_guide').each(setupImageGuide);

	// lightbox
	$('a[rel*=lightbox]').lightBox({
		imageLoading:  base_url('include') + 'images/lightbox-ico-loading.gif',
		imageBtnPrev:  base_url('include') + 'images/lightbox-btn-prev.gif',
		imageBtnNext:  base_url('include') + 'images/lightbox-btn-next.gif',
		imageBtnClose: base_url('include') + 'images/lightbox-btn-close.gif',
		imageBlank:    base_url('include') + 'images/lightbox-blank.gif'
	});

	$("input[type!='submit'][type!='textarea']").keypress(function(event) {
		if (event.keyCode == 13) {
			return false;
		}
	});
	$('input.submit').keypress(function(event) {
		if (event.keyCode == 13) {
			$(this).parents('form').submit();
		}
	});
	$('a.submit').click(function(event) {
		$(this).parents('form').submit();
	});

	// フォームの多重submit防止
	var submitted = false;
	$('form').submit(function() {
		if (submitted) {
			return false;
		}
		submitted = true;
	});

	// 追加ページロードの実行を少しずらす
	setTimeout(function() {
		generateSubmenu();

		jQuery.each(pages, function(i, v) {
			v();
		});
	}, 200);
});

/**
 * サブメニューを生成します。
 */
function generateSubmenu() {
	var addr = location.href.substr(base_url('include').length);
	var category = addr.split('/')[0];

	if (category == 'home' || $('#global_navi ul li.' + category).length == 0) {
		category = 'other';
	}

	$('#submenu h2').addClass(category);
	$('#submenu ul.' + category).show();
}

/**
 * base_urlを返します。(CIのbase_urlと同じ)
 * 
 * @param type 'include': SSLページにインクルードされる場合
 *             'ssl': SSLページへのリンク等の場合
 *             指定なし: SSLなし
 * @return base_url文字列
 */
function base_url(type) {
	if (type == 'include') {
		return _base_urls.include;
	} else if (type == 'ssl') {
		return _base_urls.ssl;
	} else {
		return _base_urls.base;
	}
}

/**
 * 簡易sprintfです。%sしかつかえません。
 */
function sprintf() {
	var format = arguments[0]; // format
	var args   = arguments;
	var i = 0;
	return format.replace(/%s/g, function(){
		i++;
		return args[i];
	});
}

