var _common_loaded;
$(document).ready(function() {
	if (_common_loaded) return;
	_common_loaded = true;

	$('input').focus(function() { $(this).addClass('focus'); });
	$('input').blur(function() { $(this).removeClass('focus'); });

	$('input,select,button').hover(
		function() {
			if (!$(this).attr('disabled')) {
				$(this).addClass('hover');
			}
		},
		function() { $(this).removeClass('hover'); }
	);

	var setupImageGuide = function() {
		var target = $(this);
		var img = target.css('backgroundImage');
		target.focus(function() { $(this).css('backgroundImage', 'none'); });
		target.blur(function() { if (!$(this).val()) $(this).css('backgroundImage', img); });
	};
	$('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();
	});

	// clearボタン
	$('input.clear').click(function() {
		$(this).parents('form').find('input[type=text]').val('');
		$(this).parents('form').find('input[type=checkbox]').attr('checked', false);
	});

	// 追加ページロードの実行を少しずらす
	setTimeout(function() {
		jQuery.each(pages, function(i, v) {
			v();
		});
	}, 200);

	updateCart();
});

/**
 * 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];
	});
}

/**
 * ヘッダのカート情報を更新します。
 */
function updateCart() {
	$.getJSON(base_url() + 'cart/info', {}, function(res) {
		$('.personal_info .cart_num .num').text(res.data.totalcount);
		$('.personal_info .cart_total .num').text(res.data.total);
	});
}

/**
 * 数値にカンマを付加します。
 * @param numeric value 数値 or 数値文字列
 * @return string カンマつきの数値文字列
 */
function addComma(value) {
	var s = String(value);
	for(var i = 0; i < s.length / 3; i++) {
		s = s.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2");
	}
	return s;
}