﻿

function auto_submit(id) {
	elem = document.getElementById(id);
	elem.submit();
}


function normalize_time(src) {
	tmp = src;
	
	tmp = full_to_half(tmp);
	
	if (tmp == '') {
		return '';
	}

	if (tmp.match(/^\d$/)) {
		hour = Number(tmp);
		if (hour >= 0 && hour < 10) {
			return fix_number(hour, 2) + ':' + fix_number(0, 2);
		}
	}
	if (tmp.match(/^(\d+):(\d+)$/)) {
		hour = Number(RegExp.$1);
		minute = Number(RegExp.$2);
		if (hour >= 0 && hour < 24 && minute >=0 && minute < 60) {
			return fix_number(hour, 2) + ':' + fix_number(minute, 2);
		}
	}	
	tmp = tmp.replace(':', '');
	while (tmp.length < 4) {
		tmp += "0";
	}
	if (!tmp.match(/^\d\d\d\d$/)) {
		return '';
	}
	hour = Number(tmp.substr(0,2));
	minute = Number(tmp.substr(2,2));
	if (hour >= 0 && hour < 24 && minute >=0 && minute < 60) {
		return fix_number(hour, 2) + ':' + fix_number(minute, 2);
	}
	hour = Number(tmp.substr(0,1));
	minute = Number(tmp.substr(1,2));
	if (hour >= 0 && hour < 24 && minute >=0 && minute < 60) {
		return fix_number(hour, 2) + ':' + fix_number(minute, 2);
	}
	return '';
}

function normalize_date(src) {
	tmp = src;
	
	tmp = full_to_half(tmp);
	
	parsed = false;
	now = new Date();
	if (tmp.match(/^(\d{1,4})[\/-](\d{1,2})[\/-](\d{1,2})$/)) {
		parsed = true;
		year = Number(RegExp.$1);
		month = Number(RegExp.$2);
		day = Number(RegExp.$3);
	}
	if (tmp.match(/^(\d{1,2})[\/-](\d{1,2})$/)) {
		parsed = true;
		year = now.getFullYear();
		month = Number(RegExp.$1);
		day = Number(RegExp.$2);
	}
	if (tmp.match(/^(\d{4})(\d{2})(\d{2})$/)) {
		parsed = true;
		year = Number(RegExp.$1);
		month = Number(RegExp.$2);
		day = Number(RegExp.$3);
	}
	if (tmp.match(/^(\d{2})(\d{2})(\d{2})$/)) {
		parsed = true;
		year = Number(RegExp.$1);
		month = Number(RegExp.$2);
		day = Number(RegExp.$3);
	}
	if (tmp.match(/^(\d{2})(\d{2})$/)) {
		parsed = true;
		year = now.getFullYear();
		month = Number(RegExp.$1);
		day = Number(RegExp.$2);
	}
	if (parsed) {
		if (year >= 0 && year <= 100) {
			year += 2000;
		}
		if (year >= 1900 && year <= 2100 && month >= 1 && month <= 12 && day >= 1 && day <= 31) {
			d = new Date(year, month - 1, day);
			return fix_number(d.getFullYear(), 4) + '-'
				+ fix_number(d.getMonth() + 1, 2) + '-'
				+ fix_number(d.getDate(), 2);
		}
	}
	return '';
}


function normalize_datetime(src) {

	tmp = src;
	
	tmp = full_to_half(tmp);
	
	tmp2 = '';
	if (src.match(/^(.+) (.*)$/)) {
		tmp = RegExp.$1;
		tmp2 = RegExp.$2;
	}
	parsed = false;
	now = new Date();
	hour = 0;
	minute = 0;
	second = 0;

	//年月日
	if (tmp.match(/^(\d{1,4})[\/-](\d{1,2})[\/-](\d{1,2})$/)) {
		parsed = true;
		year = Number(RegExp.$1);
		month = Number(RegExp.$2);
		day = Number(RegExp.$3);
	}
	if (tmp.match(/^(\d{1,2})[\/-](\d{1,2})$/)) {
		parsed = true;
		year = now.getFullYear();
		month = Number(RegExp.$1);
		day = Number(RegExp.$2);
	}
	if (tmp.match(/^(\d{4})(\d{2})(\d{2})$/)) {
		parsed = true;
		year = Number(RegExp.$1);
		month = Number(RegExp.$2);
		day = Number(RegExp.$3);
	}
	if (tmp.match(/^(\d{2})(\d{2})(\d{2})$/)) {
		parsed = true;
		year = Number(RegExp.$1);
		month = Number(RegExp.$2);
		day = Number(RegExp.$3);
	}
	if (tmp.match(/^(\d{2})(\d{2})$/)) {
		parsed = true;
		year = now.getFullYear();
		month = Number(RegExp.$1);
		day = Number(RegExp.$2);
	}
	

	//時分秒
	if (tmp2.match(/^(\d+):(\d+)$/)) {
		hour = Number(RegExp.$1);
		minute = Number(RegExp.$2);
	}
	
	if (tmp2.match(/^(\d+):(\d+):(\d+)$/)) {
		hour = Number(RegExp.$1);
		minute = Number(RegExp.$2);
		second = Number(RegExp.$3);
	}
	
	if (tmp2.match(/^(\d\d)(\d\d)$/)) {
		hour = Number(RegExp.$1);
		minute = Number(RegExp.$2);
	}
	
	if (tmp2.match(/^(\d\d)(\d\d)(\d\d)$/)) {
		hour = Number(RegExp.$1);
		minute = Number(RegExp.$2);
		second = Number(RegExp.$3);
	}

	if (parsed) {
		if (year >= 0 && year <= 100) {
			year += 2000;
		}
		if (year >= 1900 && year <= 2100 && month >= 1 && month <= 12 && day >= 1 && day <= 31
			&& hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59 && second >= 0 && second <= 59) {
			d = new Date(year, month - 1, day, hour, minute, second);
			return fix_number(d.getFullYear(), 4) + '-'
				+ fix_number(d.getMonth() + 1, 2) + '-'
				+ fix_number(d.getDate(), 2) + ' '
				+ fix_number(d.getHours(), 2) + ':'
				+ fix_number(d.getMinutes(), 2) + ':'
				+ fix_number(d.getSeconds(), 2);
		}
	}
	return '';
	





}

function normalize_numbertext(src) {
	tmp = src;
	
	tmp = full_to_half(tmp);
	
	if (tmp.match(/^-?\d+$/)) {
		tmp2 = '' + Number(tmp);
		if (tmp2.match(/^-?\d+$/)) {
			return tmp2;
		}
	}
	return '';
}

function normalize_leftnumbertext(src) {
	tmp = src;
	
	tmp = full_to_half(tmp);
	
	tmp = tmp.replace(/[^\d]/g, "")

	return tmp;

}


function fix_number(src, length) {
	tmp = src + "";
	while (tmp.length < length) {
		tmp = "0" + tmp;
	}
	return tmp.substr(tmp.length - length, length);
}




function format_time(id) {
	elem = document.getElementById(id);
	elem.value = normalize_time(elem.value);
}

function format_date(id) {
	elem = document.getElementById(id);
	elem.value = normalize_date(elem.value);
}

function format_datetime(id) {
	elem = document.getElementById(id);
	elem.value = normalize_datetime(elem.value);
}

function format_numbertext(id) {
	elem = document.getElementById(id);
	elem.value = normalize_numbertext(elem.value);
}

function format_leftnumbertext(id) {
	elem = document.getElementById(id);
	elem.value = normalize_leftnumbertext(elem.value);
}


function change_time(id) {
	format_time(id);
}

function change_date(id) {
	format_date(id);
}

function change_datetime(id) {
	format_datetime(id);
}


function change_numbertext(id) {
	format_numbertext(id);
}


function change_leftnumbertext(id) {
	format_leftnumbertext(id);
}


function change_date_select(id_base, part) {
	elem_Y = document.getElementById(id_base + ':Y:');
	elem_m = document.getElementById(id_base + ':m:');
	elem_d = document.getElementById(id_base + ':d:');
	elem_current = document.getElementById(id_base + ':' + part + ':');
	if (elem_current.value == '') {
		elem_Y.value = '';
		elem_m.value = '';
		elem_d.value = '';
	} else {
		tmp_Y = elem_Y.value == '' ? '2008' : elem_Y.value;
		tmp_m = elem_m.value == '' ? '01' : elem_m.value;
		tmp_d = elem_d.value == '' ? '01' : elem_d.value;
		d1 = sql_date_to_date_object(tmp_Y + '-' + tmp_m + '-' + tmp_d);
		if (tmp_m != fix_number(d1.getMonth() + 1, 2)) {
			d2 = new Date(d1.getFullYear(), d1.getMonth(), 0, 0, 0, 0);
			if (elem_d.value != '') {
				elem_d.value = fix_number(d2.getDate(), 2);
			}
		}
	}

}

function sql_date_to_date_object(src) {
	if (src.match(/^(\d{1,4})[\/-](\d{1,2})[\/-](\d{1,2})$/)) {
		year = Number(RegExp.$1);
		month = Number(RegExp.$2);
		day = Number(RegExp.$3);
		return new Date(year, month - 1, day);
	}
	return null;
}


function full_to_half(src) {

	half = "0123456789";
	half += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	half += "abcdefghijklmnopqrstuvwxyz";
	half += "-+_@., ";
	half += "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョー";
	halfArr = new Array("ヴ","ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ");
	
	full = "０１２３４５６７８９";
	full += "ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ";
	full += "ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ";
	full += "－＋＿＠．，　";
	full += "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｯｬｭｮｰ";
	fullArr = new Array("ｳﾞ","ｶﾞ","ｷﾞ","ｸﾞ","ｹﾞ","ｺﾞ","ｻﾞ","ｼﾞ","ｽﾞ","ｾﾞ","ｿﾞ","ﾀﾞ","ﾁﾞ","ﾂﾞ","ﾃﾞ","ﾄﾞ","ﾊﾞ","ﾋﾞ","ﾌﾞ","ﾍﾞ","ﾎﾞ","ﾊﾟ","ﾋﾟ","ﾌﾟ","ﾍﾟ","ﾎﾟ");

 	ret = "";
 	tmp = src;

	for(i = 0; i < halfArr.length; i++){
		reg = new RegExp(fullArr[i], "g"); 
		tmp = src.replace(reg, halfArr[i]);
	}

	for(i = 0; i < tmp.length; i++){
		one = tmp.charAt(i);
		num = full.indexOf(one,0);
		one = num >= 0 ? half.charAt(num) : one;
		ret += one;
	}

	return ret;

}

