// JavaScript Document++++++++++++++++++++++++++++

//Locationリンク
function lct(url){
	location.href = url;
}

//Confirm
function conf(name,url){
	res = confirm(name+"を本当に削除しますか？");
	if(res == true){
		lct(url);
	}else{
		return false;
	}
}
var ie6andbelow = function () {
	var n = navigator.userAgent.indexOf("MSIE");
	return n > 0
		&& parseInt(navigator.userAgent.substring(n + 5)) < 7;
}();

function requireText(elem, name,errmsg) {
	if (trim(elem.value) == "") {
		if(errmsg==undefined){
			errmsg=name + "を入力してください";
		}
		alert(errmsg);
		if (elem.type != "hidden") {
			elem.focus();
		}
		return false;
	} else {
		return true;
	}
}

function requireSelect(elem, name) {
	if (elem.selectedIndex == 0) {
		alert(name + "を選択してください");
		elem.focus();
		return false;
	} else {
		return true;
	}
}

function requireSelect2(elem, name) {
	if (elem.value=="") {
		alert(name + "を選択してください");
		return false;	
	} else {
		return true;
	}
}

function requireCheckbox(elem, name) {
	var selected = false;
	if(!elem.length){
		elem = new Array(elem);
	}
	for (var i = 0; i < elem.length; i++) {
		if (elem[i].checked) {
			selected = true;
			break;
		}
	}
	if (selected) {
		return true;
	} else {
		alert(name + "を選択してください");
		elem[0].focus();
		return false;
	}
}
function trim(s) {
	return s.replace(/(^ *)([^ ]*)( *$)/,'$2');
}
function isInteger(elem, name, min, max) {
	var n = trim(elem.value);
	if (n == "") {
		return true;
	} else if (!n.match(/^-?[0-9]+$/)) {
		alert(name + "は半角数字で入力してください");
		elem.focus();
		return false;
	} else if (min != undefined && max != undefined) {
		var m = parseInt(n, 10);
		if (m < min || m > max) {
			alert(name + "は" + min + "～" + max + "の範囲の値を入力してください");
			elem.focus();
			return false;
		}
	} else if (min != undefined) {
		var m = parseInt(n, 10);
		if (m < min) {
			alert(name + "は" + min + "以上の値を入力してください");
			elem.focus();
			return false;
		}
	}
	return true;
}
function requireIsInteger(elem, name, min, max) {
	var n = trim(elem.value);
	if (n == "") {
		alert(name + "を入力してください");
		elem.focus();
		return false;
	} else if (!n.match(/^-?[0-9]+$/)) {
		alert(name + "は半角数字で入力してください");
		elem.focus();
		return false;
	} else if (min != undefined && max != undefined) {
		var m = parseInt(n, 10);
		if (m < min || m > max) {
			alert(name + "は" + min + "～" + max + "の範囲の値を入力してください");
			elem.focus();
			return false;
		}
	} else if (min != undefined) {
		var m = parseInt(n, 10);
		if (m < min) {
			alert(name + "は" + min + "以上の値を入力してください");
			elem.focus();
			return false;
		}
	}
	return true;
}
function is5Minute(elem, name, min, max) {
	var n = trim(elem.value);
	if (n == "") {
		return true;
	} else if (!n.match(/^-?[0-9]+$/)) {
		alert(name + "は半角数字で入力してください");
		elem.focus();
		return false;
	} else if (min != undefined && max != undefined) {
		var m = parseInt(n, 10);
		if (m < min || m > max) {
			alert(name + "は" + min + "～" + max + "の範囲の値を入力してください");
			elem.focus();
			return false;
		}
	} else if (min != undefined) {
		var m = parseInt(n, 10);
		if (m < min) {
			alert(name + "は" + min + "以上の値を入力してください");
			elem.focus();
			return false;
		}
	}
	if(n%5!=0){
		alert(name + "は5分単位で入力してください。");
		elem.focus();
		return false;
	}
	return true;
}
function isFloat(elem, name, min, max) {
	var n = trim(elem.value);
	if (n == "") {
		return true;
	} else if (!n.match(/^-?[0-9]+\.?[0-9]*$/)) {
		alert(name + "は半角数字で入力してください");
		elem.focus();
		return false;
	} else if (min != undefined && max != undefined) {
		var m = parseFloat(n);
		if (m < min || m > max) {
			alert(name + "は" + min + "～" + max + "の範囲の値を入力してください");
			elem.focus();
			return false;
		}
	} else if (min != undefined) {
		var m = parseFloat(n);
		if (m < min) {
			alert(name + "は" + min + "以上の値を入力してください");
			elem.focus();
			return false;
		}
	}
	return true;
}

function checkFloat(elem, name, intwidth, decwidth) {
	var n = trim(elem.value);
	if (n == "") {
		return true;
	} else {
		var regexp = new RegExp("^[0-9]{1," + intwidth + "}\\.?$"
							+ "|^[0-9]{1," + intwidth + "}\.[0-9]{1," + decwidth + "}$");
		if (!n.match(regexp)) {
			alert(name + "は整数部" + intwidth + "桁、小数部" + decwidth + "桁の範囲で入力してください");
			elem.focus();
			return false;
		}
	}
	return true;
}

function isKana(elem, name) {
	var val = trim(elem.value);
	if (val == "") {
		return true;
	}
	if (toHankakuStrict(val) != val) {
		alert(name + "が正しくありません。");
		elem.focus();
		return false;
	}
	return true;
}

function isDate(elem, name) {
	var val = trim(elem.value);
	if (val == "") {
		return true;
	}
	if (dateValueOf(val) == null) {
		alert(name + "が正しくありません。");
		elem.focus();
		return false;
	}
	return true;
}

function isTime(elem, name) {
	var val = trim(elem.value);
	if (val == "") {
		return true;
	}
	if (timeValueOf(val) == null) {
		alert(name + "が正しくありません。");
		elem.focus();
		return false;
	}
	return true;
}

function dateValueOf(val) {
	var y, m, d;
	var error = false;
	var a = val.match(/^([0-9]{1,4})\/([0-9]{1,2})\/([0-9]{1,2})$/)
		|| val.match(/^([0-9]{1,2})\/([0-9]{1,2})$/)
		|| val.match(/^([0-9]{1,2})([0-9]{2})$/)
		|| val.match(/^([0-9]{1,4})([0-9]{2})([0-9]{2})$/);
	if (a) {
		if (a.length == 4) {
			y = Number(a[1]);
			m = Number(a[2]);
			d = Number(a[3]);
			if (y < 100) {
				y = (y < 50 ? y + 2000 : y + 1900);
			}
		} else {
			m = Number(a[1]);
			d = Number(a[2]);
			var today = new Date();
			y = today.getFullYear();
		}
	} else {
		error = true;
	}
	error = error || (y < 1900 || y > 2099 || m < 1 || m > 12 || d < 1 || d > 31);
	return error ? null : new Date(y, m - 1, d);
}

function monthValueOf(val) {
	var y, m;
	var error = false;
	var a = val.match(/^([0-9]{1,4})\/([0-9]{1,2})$/)
		|| val.match(/^([0-9]{1,2})\/([0-9]{1,2})$/)
		|| val.match(/^([0-9]{1,2})([0-9]{2})$/)
		|| val.match(/^([0-9]{1,4})([0-9]{2})$/);
	if (a) {
		if (a.length == 3) {
			y = Number(a[1]);
			m = Number(a[2]);
			if (y < 100) {
				y = (y < 50 ? y + 2000 : y + 1900);
			}
		} else {
			m = Number(a[1]);
			var today = new Date();
			y = today.getFullYear();
		}
	} else {
		error = true;
	}
	error = error || (y < 1900 || y > 2099 || m < 1 || m > 12);
	return error ? null : new Date(y, m - 1, 1);
}

function onBlurKana(e) {
	if (!e) e = event;
	var elem = (e.target ? e.target : e.srcElement);
	elem.value = toHankaku(elem.value);
}

function onBlurDate(e) {
	if (!e) e = event;
	var elem = (e.target ? e.target : e.srcElement);
	var val = trim(elem.value);
	if (val == "") {
		return;
	}
	var dt = dateValueOf(val);
	if (dt != null) {
		y = dt.getFullYear();
		m = dt.getMonth() + 1;
		d = dt.getDate();
		elem.value = y + "/" + (m < 10 ? "0" : "") + m + "/" + (d < 10 ? "0" : "") + d;
	}
}

function onBlurTime(e) {
	if (!e) e = event;
	var elem = (e.target ? e.target : e.srcElement);
	var val = trim(elem.value);
	if (val == "") {
		return;
	}
	var tm = timeValueOf(val);
	if (tm != null) {
		h = tm.getHours();
		m = tm.getMinutes();
		elem.value = (h < 10 ? "0" : "") + h + ":" + (m < 10 ? "0" : "") + m;
	}
}

function onBlurDateShort(e) {
	if (!e) e = event;
	var elem = (e.target ? e.target : e.srcElement);
	var val = trim(elem.value);
	if (val == "") {
		return;
	}
	var dt = dateValueOf(val);
	if (dt != null) {
		var m = dt.getMonth() + 1;
		var d = dt.getDate();
		elem.value = (m < 10 ? "0" : "") + m + "/" + (d < 10 ? "0" : "") + d;
	}
}

function onBlurMonth(e) {
	if (!e) e = event;
	var elem = (e.target ? e.target : e.srcElement);
	var val = trim(elem.value);
	if (val == "") {
		return;
	}
	var dt = monthValueOf(val);
	if (dt != null) {
		var y = dt.getFullYear();
		var m = dt.getMonth() + 1;
		elem.value = y + "/" + (m < 10 ? "0" : "") + m;
	}
}

function compareDate(elem1, elem2, name) {
	var val1 = trim(elem1.value);
	var val2 = trim(elem2.value);
	if (val1 == "" || val2 == "") {
		return true;
	}
	if (val1 > val2) {
		alert(name + "が不正です。");
		elem1.focus();
		return false;
	}
	return true;
}

function isMonth(elem, name) {
	var val = trim(elem.value);
	if (val == "") {
		return true;
	}
	if (monthValueOf(val) == null) {
		alert(name + "が正しくありません。");
		elem.focus();
		return false;
	}
	return true;
}

function isEmail(elem, name) {
	var val = trim(elem.value);
	if (val == "") {
		return true;
	}
	if (val.match(/^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$/) == null) {
		alert(name + "が正しくありません。");
		elem.focus();
		return false;
	} else {
		return true;
	}
}
function isMEmail(elem, elem2 , name) {
	var val = trim(elem.value);
	if (val == "") {
		return true;
	}
	var val2 = trim(elem2.value);
	if ( val2 != "" ) {
		val = val + "@" + val2;
	}
	if (val.match(/^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$/) == null) {
		alert(name + "が正しくありません。");
		elem.focus();
		return false;
	} else {
		return true;
	}
}

function isStringLength( elem, name, size ) {
	if ( elem.value.length > size ) {
		alert(name + "は" + size + "文字以内で入力してください。");
		return false;
	}
	return true;
}

function isStringLengthHankaku( elem, name, size ) { 
    var r = 0; 
    for (var i = 0; i < elem.value.length; i++) { 
        var c = elem.value.charCodeAt(i); 
        if ((c >= 0xff61 && c <= 0xff9f) || (c >= 0x0020 && c <= 0x007e)) { 
            r += 1; 
        } else { 
            r += 2; 
        } 
    } 
    if ( r > size ) {
		alert(name + "は半角" + size + "文字以内、または全角" + size /2 + "以内で入力してください。");
		return false;
	} 
	return true;   
}

//フォーカス
function setfocus(){

	count = document.mainForm.length;
	for(i=0; i<count; i++){
		type = document.mainForm[i].type;
		if(type!="hidden"){
			document.mainForm[i].focus();
			break;
		}
	}
}

function navi(obj) {
 url = obj.options[obj.selectedIndex].value;
 if(url != "") {
   location.href = url;
  }
}
function fnc_confirm(string,opt){
	if(opt == "dw"){
		act = 'ダウンロード';
	} else if(opt == "dl") {
		act = '削除';
	} else if(opt == "pu") {
		act = '公開';
	} else if(opt == "wk") {
		act = '移動';
	} else if(opt == "ap") {
		act = '申請';
	} else if(opt == "ad") {
		act = '承認';
	} else if(opt == "rg") {
		act = '登録';
	} else if(opt == "ed") {
		act = '編集';
	} else if(opt == "tag"){
		act = '登録';
	}
	res = confirm(string+'を'+act+'します');
	if(res == false){
		return false;
	}else{
		return true;
		alert(act+'が実行されます');
	}
}
function fnc_tag_send_mail_disable(val){
	target_tr_id = "tag_send_mail";
	if(val == "t"){
		document.getElementById(target_tr_id).style.display="block";
	}else{
		document.getElementById(target_tr_id).style.display="none";
	}
}

// tooltip
function $e(tagName, className, id) {
	var e = document.createElement(tagName);
	if (className) e.className = className;
	if (id) e.id = id;
	return $x(e);
}
function $x(e) {
	e.show = function () { e.style.display = "block"; }
	e.hide = function () { e.style.display = "none"; }
	e.clear = function () {
		var n = this.childNodes.length;
		for (var i = 0; i < n; i++) {
			this.removeChild(this.firstChild);
		}
		return this;
	}
	e.append = function (child) {
		if (typeof(child) == "object") {
			if (child instanceof Array) {
				for (var i = 0; i < child.length; i++) {
					this.append(child[i]);
				}
			} else {
				this.appendChild(child);
			}
		} else {
			this.appendChild($t(String(child)));
		}
		return this;
	}
	e.replace = function (n) {
		return this.clear().append(n);
	}
	return e;
}
function getMouseX(e) {
	return e && e.pageX ? e.pageX : document.body.scrollLeft + event.clientX;
}

function getMouseY(e){
	return e && e.pageX ? e.pageY : document.body.scrollTop + event.clientY;
}
var addListener = (function() {
		if (window.addEventListener) {
			return function(el, type, fn) {
				el.addEventListener(type, fn, false);
			};
		} else if (window.attachEvent) {
			return function(el, type, fn) {
				var f = function() {
					fn.call(el, window.event);
				};
				el.attachEvent('on' + type, f);
			};
		} else {
			return function(el, type, fn) {
				element['on' + type] = fn;
			}
		}
	})();
function roll (obj,val) {
  obj.src = val;
} 

function enterCancel(evt){
	if(evt.keyCode == 13){
		if(evt.preventDefault){
			evt.preventDefault();
		}else{
			evt.returnValue = false;
		}
	}
}
function Initializer() {
	this.initFuncs = [];
	this.add = function(func) {
		this.initFuncs[this.initFuncs.length] = func;
	}
	this.execute = function() {
		for (var i = 0; i < this.initFuncs.length; i++) {
			this.initFuncs[i].call();
		}
		var tables = document.getElementsByTagName("table");
	if (tables) {
		for (var i = 0; i < tables.length; i++) {
			var t = tables[i];
			if (t.className && t.className.indexOf("list") >= 0) {
				var rows = t.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
				var odd = true;
				for (var j = 0; j < rows.length; j++) {
					var row = rows[j];
					if (row.className) {
						if (row.className.indexOf("follow") < 0) {
							odd = !odd;
						}
						row.className += " " + (odd ? "odd" : "even");
					} else {
						odd = !odd;
						row.className = (odd ? "odd" : "even");
					}
				}
			}
		}
	}
	}
	this.clear = function() {
		this.initFuncs = [];
	}
}
var initializer = new Initializer();

