/*
	フォームコントロール系スクリプト
*/
//------------------------------------------------------------------------------
/*
	フォームの実行
*/
function Form_Submit(src, form){
	f = document.forms[form];
	if(src.name){
		//どのボタンによって実行されたか分かるようにhidden属性を追加
		var elm = document.createElement("input"); 
		elm.name  = src.name;
		elm.type  = "hidden";
		elm.value = src.value;
		f = document.forms[form];
		f.appendChild(elm);
	}
	f.submit();
}
//------------------------------------------------------------------------------
/*
	ターゲットの値が指定値でなければフォームの実効
*/
function Form_SubmitNotVal(src, form, val){
	f = document.forms[form];
	if(src.value != val) f.submit();
}
//------------------------------------------------------------------------------
/*
	ターゲットの値URLならそのURLにジャンプ、空白なら何もしない、普通の値ならサブミット
*/
function Form_SubmitUrlJump(src, form){
	f = document.forms[form];
	if(src.value != ""){
		if( src.value.match(/http:/) ){
			location.href = src.value;
		}else{
			f.submit();
		}
	}
}
//------------------------------------------------------------------------------
/*
	確認付きフォームの実行
*/
function Form_CheckSubmit(src, form, comment){
	if(window.confirm(comment)){
		f = document.forms[form];
		if(src.name){
			//どのボタンによって実行されたか分かるようにhidden属性を追加
			var elm = document.createElement("input"); 
			elm.name  = src.name;
			elm.type  = "hidden";
			elm.value = src.value;
			
			f = document.forms[form];
			f.appendChild(elm);
		}
		f.submit();
	}else{
	}
}
//------------------------------------------------------------------------------
/*
	テキストボックスの値がデフォルト値ならクリア
*/
function Form_ClearIfDefault(target) {
	if (target.value == target.defaultValue) {
		target.value = '';
	}
}
//------------------------------------------------------------------------------
/*
	テキストボックスの値が空白ならデフォルト値に戻す
*/
function Form_RestoreIfNull(target) {
	target.value = target.value.replace(/^\s+/, '').replace(/\s+$/, '');
	if (target.value == '') {
		target.value = target.defaultValue;
	}
}
//------------------------------------------------------------------------------
/*
	プルダウンで選択した値を指定ＩＤの値に追記
*/
function Form_addTextBySelect(form, doc_name, sel_name){
	f = document.forms[form];
	
	//-----------------------------------
	//ドキュメント取得
	for(i=0; i<f.length; i++){
		doc = f.elements[i];
		if(doc.name == doc_name) break;
	}
	
	//-----------------------------------
	//選択示取得
	for(i=0; i<f.length; i++){
		sel = f.elements[i];
		if(sel.name == sel_name) break;
	}
	
	//-----------------------------------
	//該当ドキュメントと選択示が存在していれば追加
	if(doc && sel){
		doc.value = doc.value+sel.options[sel.selectedIndex].value;
	}
}
//------------------------------------------------------------------------------
/*
	指定エレメントの値と指定フォームの同じタイプの全エレメントの値を同期させる
*/
function syncElements(form, name){
	f = document.forms[form];
	
	//-----------------------------------
	//指定チェックボックス取得
	src = f.elements[name];

	//-----------------------------------
	//他のチェックボックスの値を同期させる
	for(i=0; i<f.length; i++){
		dist = f.elements[i];
		if(dist.type==src.type) dist.checked = src.checked;
	}
}
//------------------------------------------------------------------------------
/*
	指定選択肢の値を指定IDに表示する
*/
function Form_setTextBySelect(form, doc_id, sel_name){
	f = document.forms[form];
	
	//-----------------------------------
	//ドキュメント取得
	for(i=0; i<f.length; i++){
		doc = f.elements[i];
		if(doc.id == doc_id) break;
	}
	
	//-----------------------------------
	//選択示取得
	for(i=0; i<f.length; i++){
		sel = f.elements[i];
		if(sel.name == sel_name) break;
	}
	
	//-----------------------------------
	//該当ドキュメントと選択示が存在していれば追加
	if(doc && sel){
		doc.innerHtml = sel.options[sel.selectedIndex].value;
	}
}
//------------------------------------------------------------------------------
/*
	文字数入力制限
*/
function CharsLimit(target, limit, mess){
	if ( jstrlen(target.value) > limit ) {
		alert(mess);
		//target.value = target.value.substr(0, limit);
		target.focus();
	}
}
function jstrlen(str) {
	len = 0;
	str = escape(str);
	for (i = 0; i < str.length; i++, len++) {
		if (str.charAt(i) == "%") {
			if (str.charAt(++i) == "u") {
				i += 3;
				len++;
			}
		i++;
		}
	}
	return len;
}
//------------------------------------------------------------------------------
/*
	テキストエリアの高さを動的に変更
*/
function textareaHeight(target, width, font, line, base){
	var i,j,r;
	
	str  = target.value;
	list = str.split("\n");
	cnt  = list.length + 1;
	
	for(i=0; i<list.length; i++){
		r  = 0;
		for(j=0; j<list[i].length; j++){
			n = escape(list[i].charAt(j));
			if (n.length < 4) r++;
			else              r+=2;
			
			if( r * font / 2 >= width - font ){
				r = 0;
				cnt++;
			}
		}
	}
	
	if(cnt < base) target.style.height = (base*line) + "px";
	else           target.style.height = (cnt*line) + "px";
}
//------------------------------------------------------------------------------