function $(id){
	return document.getElementById(id);
}

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 requireRadio(elem, name) {
	var selected = false;
	if (elem.length) {
		for (var i = 0; i < elem.length; i++) {
			if (elem[i].checked) {
				selected = true;
				break;
			}
		}
	} else {
		if (elem.checked) {
			selected = true;
		}
	}
	if (selected) {
		return true;
	} else {
		alert(name + "を選択してください");
		if (elem.length) {
			elem[0].focus();
		} else {
//			elem.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 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 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 = '登録';
	} else if(opt == "mv"){
		act = '移動';
	} else if(opt == "ch"){
		act = '変更';
	} else if(opt == "ga"){
		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";
	}
}
function fnc_change_image(id,image_path){
	var obj = $(id);
	obj.src = image_path;
}