// String.trim
String.prototype.trim = function() {
	return this.replace(/^[\s\t\n　]+|[\s\t\n　]+$/g, '');
}

// Browser Check
var ENABLE_JS = false;
var ENABLE_AJAX = false;
function checkBrowser() {
	IS_OP = window.opera ? true : false;
	IS_IE = !IS_OP && window.attachEvent ? true : false;
	IS_SF = navigator.userAgent.indexOf("AppleWebKit")!=-1;
	IS_SF3 = IS_SF && document.evaluate;
	IS_SF2 = IS_SF && !IS_SF3 && window.DOMParser;
	IS_GK = !IS_IE && !IS_SF && !IS_OP && document.addEventListener ? true : false;
	if (IS_IE && navigator.appVersion.match(/MSIE ([0-9\.]+);/)) {
		if (parseFloat(RegExp.$1) >= 6.0) {
			ENABLE_JS = true;
			ENABLE_AJAX = true;
		}
	} else if (IS_GK) {
		ENABLE_JS = true;
		ENABLE_AJAX = true;
	} else if (IS_SF3) {
		ENABLE_JS = true;
		ENABLE_AJAX = true;
	} else if (IS_SF2) {
		ENABLE_JS = true;
	} else if (IS_OP && navigator.userAgent.match(/Opera[\/ ]([0-9\.]+)/)) {
		var ver = parseFloat(RegExp.$1)
		if (ver >= 8.0) {
			ENABLE_JS = true;
			ENABLE_AJAX = true;
		} else if (ver >= 7.5) {
			ENABLE_JS = true;
		}
	}
//	alert("IS_OP : " + IS_OP + ", IS_IE : " + IS_IE + ", IS_SF : " + IS_SF + ", IS_GK : " + IS_GK + "\nversion : " + navigator.appVersion + "\nuserAgent : " + navigator.userAgent);
}
checkBrowser();

// 読み込み時
window.onload = function() {
	if (ENABLE_JS) {
		// menu
		$('.menu_item').hover(
			function() {
				var type = $(this).attr('id').substr(3);
				$('#mt_' + type).addClass('menu_title_hover');
				$('#ml_' + type).show();
			},
			function() {
				var type = $(this).attr('id').substr(3);
				$('#mt_' + type).removeClass('menu_title_hover');
				$('#ml_' + type).hide();
			}
		);
	}

	if (ENABLE_AJAX) {
		// login
		$('#login').load('/ajax_login.php', null, function() {
			initLoginOption();
			//widgets
			if (!IS_DYNAMIC) {
				$('#right_col').load('/widgets.php', null, function() {
				});
			}
		});
	}
	if (!ENABLE_JS) { return; }

	// search
	STR_INPUT_QUERY = '検索語を入力...';
	$('#search_query').focus(
		function() {
			var value = $(this).css('color','#000').val();
			if (value == STR_INPUT_QUERY) { $(this).val(''); }
		}
	).blur(
		function() {
			var value = $(this).val().trim();
			if (value == '' || value == STR_INPUT_QUERY) {
				$(this).css('color', '#999').val(STR_INPUT_QUERY);
			}
		}
	).css('color', '#999').val(STR_INPUT_QUERY);
	$('#search_form').submit(
		function() {
			var value = $('#search_query').val().trim();
			if (value == '' || value == STR_INPUT_QUERY) {
				alert('検索語が入力されていません。');
				return false;
			}
			return true;
		}
	);

	// top_link
	if (!IS_SF2) {
		setInterval(function() {
			var lk = document.getElementById('top_link');
			var ft = document.getElementById('footer');
			var height = ((IS_OP && document.body.clientHeight) || document.documentElement.clientHeight || document.body.clientHeight);
			var scroll = (document.body.scrollTop || document.documentElement.scrollTop) + height - 80;
			var ftTop = ft.offsetTop - 40 + (IS_IE ? 5 : 0);
			scroll = ftTop < scroll ? ftTop : scroll;
			var offset = lk.offsetTop;
			var header = document.getElementById('header');
			lk.style.left = (header.offsetLeft + header.clientWidth + (IS_IE ? 5 : 0)) + 'px';
			if (scroll == offset) { return; }
			var from = scroll > offset ? scroll : offset;
			var to = scroll > offset ? offset : scroll;
			var adjust = scroll > offset ? 0.5 : -0.5;
			var newOffset = Math.floor((from - to)*0.7 + adjust + to);
			lk.style.top = newOffset + 'px';
		}, 50);
	}
}

// ツールチップ表示
function viewTooltip(obj, opt) {
	if (!ENABLE_JS) {return;}
	var o = $(obj);
	if (typeof(opt) == 'string') {
		msg = opt;
	} else if (!opt || typeof(opt) == 'object') {
		msg = o.attr('title');
		if (!msg) { return; }
		o.attr('title', '');
		if (msg.length > 0) {
			obj.titleBak = msg;
			if (opt && typeof(opt.width) == 'number') {
				var len = msg.length;
				var html = '';
				var width = 0;
				var i=0;
				for (i=0; i<len; i++) {
					var c = msg.charAt(i);
					html += c;
					width += strwidth(c);
					if (width >= opt.width) {
						html += '<br />';
						width = 0;
					}
				}
				msg = html;
			}
		}
	}
	$('#tooltip_c').html(msg);
	var tooltip = $('#tooltip');
	var offset = o.offset();
	tooltip.css({left: (offset.left + 4) + 'px', top: (offset.top - tooltip.height()) + 'px'});
}
// ツールチップ非表示
function hideTooltip(obj) {
	if (!ENABLE_JS) {return;}
	$('#tooltip').css('left', '-9999px');
	if (obj && obj.titleBak && obj.titleBak.length > 0) {
		$(obj).attr('title', obj.titleBak);
	}
}

// ログイン
function ajaxLogin() {
	$('#login').load(
		'/ajax_login.php',
		$('#login_form').serializeArray(),
		function () {
			var err = $('#login_error').text();
			if (err) {
				alert(err);
				var loginId = $('#login_id').get(0);
				loginId.focus();
				loginId.select();
			}
//			initLoginOption();
		}
	);
	return false;
}

// 遅延リダイレクト
function delayedRedirect(sec, url) {
	setTimeout(function() {location.href = url;}, (sec*1000));
}

// ログインオプション
function initLoginOption() {
	$('#login_option_btn').toggle(
		function() {
			var btn = $(this);
			var option = $('#login_option');
			var offset = btn.offset();
			var l = offset.left + btn.width() - option.width();
			var t = offset.top + btn.height() + 1;
			option.css({left: l + 'px', top: t + 'px'}).show();
		},
		function() {
			$('#login_option').hide();
		}
	);
	$('#login_option_close').click( function() {$('#login_option_btn').click();} );
}

// 2重Submit 防止
function submitting(button, label) {
   label = label ? label : '送信中...';
   button.value = label;
   button.form.submit();
   button.disabled = true;
}
function strwidth(str) {
	var len = str.length;
	var width = 0;
	var ascii = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~';
	var i=0;
	for (i=0;i<len; i++) {
		if (ascii.indexOf(str.charAt(i)) != -1) {
			width += 1;
		} else {
			width += 2;
		}
	}
	return width;
}
