/*2006/01/05*/

function test(tag_name){
	var obj = document.all.item(tag_name);
	var str = obj.value.charCodeAt(obj.value.length - 1);

	if(str < 97 || str > 122){
		obj.select();
		return false;
	}
}

//#####################################################
//#プロトタイプ	only_key(tag_name, type)				#
//#用途				inputタグの入力制限						#
//#引数																#
//#	tag_name		本関数を有効にするタグのname属性値	#
//#	type			制限するタイプ								#
//#戻り値			ブーリアン									#
//#備考				引数(type)には下記の定数を指定		#
//#					KEY_MAIL(a-z,-,.,-,@)					#
//#					KEY_TEL(0-9,-)								#
//#					KEY_NUM(0-9)								#
//#					KEY_DATE(0-9,/)							#
//#####################################################
KEY_MAIL = 0;
KEY_TEL = 1;
KEY_NUM = 2;
KEY_DATE = 3;
KEY_ALNUM = 4;
function only_key(tag_name, type) {
	var obj = document.all.item(tag_name);

	switch(type){
		case KEY_ALNUM:
			if(event.keyCode < 48 || event.keyCode > 57){
				if(event.keyCode < 97 || event.keyCode > 122){
					if(event.keyCode < 65 || event.keyCode > 90){
						event.returnValue = false;
					}
				}
			}
			break;
		case KEY_NUM:
			if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
			break;
		case KEY_TEL:
			if(event.keyCode < 48 || event.keyCode > 57){
				if(event.keyCode != 45) event.returnValue = false;
			}
			break;
		case KEY_MAIL:
			if(event.keyCode != 45 && event.keyCode != 46 && event.keyCode != 64 && event.keyCode != 95){
				if(event.keyCode < 48 || event.keyCode > 57){
					if(event.keyCode < 97 || event.keyCode > 122){
						if((i = obj.value.indexOf("@")) != -1){
							var r = document.selection.createRange();
							r.moveEnd("textedit");
							n = r.text.length;
							if(i >= obj.value.length - n){
								if(event.keyCode < 65 || event.keyCode > 90) event.returnValue = false;
							}else{
								event.returnValue = false;
							}
						}else{
							if(event.keyCode < 65 || event.keyCode > 90) event.returnValue = false;
						}
					}
				}
			}else if(event.keyCode == 64){
				if((i = obj.value.indexOf("@")) != -1) event.returnValue = false;
			}else if(event.keyCode == 46){
				if((i = obj.value.indexOf("@")) != -1){
					var r = document.selection.createRange();
					r.moveEnd("textedit");
					n = r.text.length;
					if(i < obj.value.length - n){
						if(obj.value.substring(obj.value.length - n - 1, obj.value.length - n) == "@" || obj.value.substring(obj.value.length - n - 1, obj.value.length - n) == "." || obj.value.substring(obj.value.length - n + 1, obj.value.length - n) == ".")
							event.returnValue = false;
					}
				}
			}
			break;
		case KEY_DATE:
			if(event.keyCode < 47 || event.keyCode > 57){
				event.returnValue = false;
			}else{
				if(event.keyCode == 47){
					chk = 0;
					for(i = 0; i < obj.value.length; i++){
						if((pos = obj.value.indexOf("/", i)) != -1){
							chk += 1;
							i = pos;
						}
					}
					if(chk > 1) event.returnValue = false;
				}
			}
			break;
	}
}

//######################################################################################
//#プロトタイプ	all_chk(str, flg)																		#
//#用途				同一name属性のチェックボックスのチェックをオンオフする					#
//#引数																											#
//#	str			チェックボックスのnameの値															#
//#	flg			チェックの真偽																			#
//#戻り値			未定義																					#
//#備考																											#
//######################################################################################
function all_chk(str, flg){
	if(document.all.item(str).length){
		for(i = 0;i < document.all.item(str).length; i++){
			document.all.item(str, i).checked = flg;
		}
	}else{
		document.all.item(str).checked = flg;
	}
}

//#########################################################################################
//#プロトタイプ	str_scan(obj, num)																		#
//#用途				正規表現による文字列のチェック														#
//#引数																												#
//#	obj			チェックする文字列																		#
//#	num			チェックする種類																			#
//#戻り値			0 = 正常																						#
//#					-1 = 異常																					#
//#					-2 = null																					#
//#備考				第２引数(num)には下記の定数を指定													#
//#						SCAN_HIRAGANA（ひらがな＋全角・半角スペース）								#
//#						SCAN_ZENKANA（全角カタカナ＋全角・半角スペース）							#
//#						SCAN_HANKANA（半角カタカナ＋全角・半角スペース）							#
//#						SCAN_MAIL（半角英数字（小文字）＋ドット＋ハイフォン＋アンダースコア）#
//#						SCAN_TEL（半角数字＋ハイフォン）													#
//#						SCAN_NUM（半角数字）																	#
//#						SCAN_DATE（半角数字＋スラッシュ）												#
//#########################################################################################
var SCAN_HIRAGANA = 1;
var SCAN_ZENKANA = 2;
var SCAN_HANKANA = 4;
var SCAN_MAIL = 8;
var SCAN_TEL = 16;
var SCAN_NUM = 32;
var SCAN_DATE = 64;
var SCAN_ALNUM = 128;
var SCAN_ALPH = 256;
function str_scan(obj, num){
	if (obj.length == 0) return -2;

	switch(num){
		case SCAN_DATE:
			var str = /[^0-9][^0-9][^0-9][^0-9]\/[^0-9][^0-9]\/[^0-9][^0-9]$/
			break;
		case SCAN_HIRAGANA:
			var str = /[^\u3041-\u3093|\u3000| ]/g;
			break;
		case SCAN_ZENKANA:
			var str = /[^\u30a1-\u30f3|\u3000| ]/g;
			break;
		case SCAN_HANKANA:
			var str = /[^\uff67-\uff9d|\u3000| ]/g;
			break;
		case SCAN_MAIL:
			str1 = /[^a-z|A-Z|0-9|\.|\-|\_]/g
			str2 = /\@|\.{2,}/g

			if((n = obj.indexOf("@")) == -1) return -1;

			scan_addr1 = obj.substring(0,n);
if(scan_addr1.substr(0, 1) == ".") return -1;
if(scan_addr1.indexOf("@") != -1) return -1;
if(scan_addr1.substr(scan_addr1.length - 1, 1) == ".") return -1;

			scan_addr2 = obj.substring(n+1);
if(scan_addr2.indexOf(".") == -1) return -1;
if(scan_addr2.substr(scan_addr2.length - 1, 1) == ".") return -1;
if(scan_addr2.substr(0, 1) == ".") return -1;
if(scan_addr2.indexOf("@") != -1) return -1;

			if (scan_addr1 == "" || scan_addr2 == "") return -1;

			if (scan_addr1.match(str1) == null && scan_addr2.match(str1) == null && scan_addr2.match(str2) == null){
				return 0;
			}else{
				return -1;
			}
			break;
		case SCAN_TEL:
			var str = /[^0-9|\-]/g
			break;
		case SCAN_NUM:
			var str = /[^0-9]/g
			break;
		case SCAN_ALNUM:
			var str = /[^0-9|a-z|A-Z]/g
			break;
		case SCAN_ALPH:
			var str = /[^a-z|A-Z| ]/g
			break;
	}

	if (obj.match(str) == null){
		return 0;
	}else{
		return -1;
	}
}

function str_scan2(obj, num){
//開発中
	var de_arg = new Array(HIRAGANA,ZEN_KANA,HAN_KANA,MAIL,TEL);

	i = 4;
	while(num > 0){
		if (num >= de_arg[i]){
			chk_unicode(obj, de_arg[i])
			num -= de_arg[i];
		}else{
			i--;
		}
	}

	return 0;
}

//######################################################################################
//#用途				関数scroll_top用補助関数															#
//######################################################################################
function scl(){

	if (diff < 1 ){
		clearInterval(id);
		pars = .8;
		window.scrollTo(0, 0);
	}else{
		diff *= pars;
		pars -= .005;

		window.scrollTo(0, diff);
	}
}
var diff;
var pars = .8;

//######################################################################################
//#プロトタイプ	scroll_top()																			#
//#用途				ページトップへの移動を滑らかにする（視覚効果）								#
//#引数				なし																						#
//#戻り値			なし																						#
//#備考																											#
//######################################################################################
function scroll_top(){
	
	diff = document.body.scrollHeight / 2;

	id = window.setInterval('scl()', 20);
}

