// JavaScript Document

/*
 * 全サイト共通スクリプト
 *
 */


//====================================================================

//処理メッセージエリアの自動消去
function disappearMsgBox() {
	
	if ( $("#rs_msg").val() == null ) return;
	
	var box = $("#rs_msg");
	var W = box.width();
	var PW = box.parent().width();
	var L = Math.floor(W/2);
	
	//画面の高さ
	var winH = $(window).height();
	var H = winH / 2 - 100;
	
	//スクロール量
	var SCT = $("body").scrollTop();
	var toppos = SCT + H;
	
	
	//閉じるリンクの追加
	$('<a href="javascript:closeBox(\'rs_msg\')" class="b_mark">×</a>').appendTo(box);
	
	box.css({
		"top":toppos+"px",
		"left":"50%",
		"margin-left":"-"+L+"px"
	}).fadeIn();
	
	//３秒後に消して、そこから１秒後に要素を消去
	var second = false;
	
	$.timer(3000, function (timer) {
		if (!second) {
			$("#rs_msg").fadeOut();
			second = true;
			timer.reset(1000);
		
		} else {
			$("#rs_msg").remove();
			timer.stop();
		}
	});
}


//エラーメッセージ
function viewErrorMsg() {
	$(".err em").click( function() {
		$(this).fadeOut('fast');
	});
}


//================================================================

//お気に入りに追加
function bookmark(addtitle,url) {
	if (window.external) {
		window.external.addFavorite(url,addtitle);
	}
}

//====================================================================

//ボックス開閉（スライドアップ／ダウン）
function slideBox(id) {
	$("#"+id).slideToggle("fast");
}

//====================================================================

//ボックス表示切り替え
function toggleViewBox(box1,box2,act) {
	$("#"+box1).hide();
	$("#"+box2).show();
}

//====================================================================

//ボックス非表示
function closeBox(id) {
	$("#"+id).hide();
}

//====================================================================

//ページを１回だけリロード
function reloadPage() {
	if ( window.name != "coup" ) {
		location.reload();
		window.name = "coup";
	}
}

//====================================================================

//ページ移動
function selectPage(url) {
	location.href = url;
}

//=====================================================================

//URLの確認
function checkURL(name) {
	var url = $("input[name='"+name+"']").val();
	
	if ( url != ""  ) {
		window.open( url );
	}
}

//====================================================================

//特長マスタの選択（大区分選択→小区分チェックボックス表示）

function setServList(svid) {
	
	//alert(svid);
	$.getJSON( "_control.php", { m:"ajax_servlist", svid:svid }, setServListComp );
}

function setServListComp(data) {
	
	if ( data == null ) return;
	
	var box = $("div.sv_s_box");
	box.empty().hide();
	
	$.each( data,
		function( i, obj ) {
			var line = '<input type="checkbox" name="serv1[]" value="'+obj.svid+'"';
			if (obj.chk == 1) line += 'checked="checked"';
			line += ' />'+obj.sv_name;
			$('<label>').html( line ).appendTo( box );
		}
	);
	
	box.fadeIn('fast');
}

//=====================================================================

//コピーライトの年
function setCopyYear() {
	myDate = new Date();
	myYear = myDate.getFullYear();
	
	var str = myYear;
	if (myYear != 2011) str += "-"+myYear;
	
	$("#copy_year").text(str);
}

//====================================================================

//連動プルダウン
function hierMenu(type,m1,m2,m3,level) {
	
	var id;
	
	//----------------------------------------
	
	$("select[name='"+m1+"']").change( function() {
		id = $(this).val();
		
		if ( id == 0 ) $("select[name='"+m2+"']").empty();
		if ( m3 != "" ) $("select[name='"+m3+"']").empty();
		
		$("select[name='"+m1+"']").val(id);
		getSelectData(type,id,m2,level);
	});
	
	//----------------------------------------
	
	if ( m3 != "" ) {
		$("select[name='"+m2+"']").change( function() {
			id = $(this).val();
			
			$("select[name='"+m2+"']").val(id);
			getSelectData(type,id,m3,level);
		});
		
		$("select[name='"+m3+"']").change( function() {
			id = $(this).val();
			
			$("select[name='"+m3+"']").val(id);
		});
	}
}
	
function getSelectData(type,id,target,level) {
	
	if (id == 0 || id == null) return false;
	
	switch (level) {
		case 0:
			var url = "_control.php";
			break;
			
		case 1:
			var url = "../_control.php";
			break;
	}
	
	$.ajax( url, {
		data: {
			"m": "ajax_hier",
			"type": type,
			"id": id
		},
		type: "GET",
		dataType: "json",
		
		error: function() {
			//alert('Error loading document');
		},
		
		success: function(data) {
			
			var items = '<option value="0"></option>';
			
			if ( data != null ) {
				$.each(data, function(key,val) {
					items += '<option value="'+key+'">'+val+'</option>';
				});
			}
			
			$("select[name='"+target+"']").html(items);
			
		}
	});
}


//====================================================================

//郵便番号から住所検索
function loadZip(level) {
	
	var zip = $("input[name='zip']").val();
	zip = toHankaku(zip);
	$("input[name='zip']").val(zip);
	
	switch (level) {
		case 0:
			var url = "_control.php";
			break;
			
		case 1:
			var url = "../_control.php";
			break;
	}
	
	$.ajax( url, {
		data: {
			"m": "ajax_zip",
			"zip": zip
		},
		type: "GET",
		dataType: "json",
		
		error: function() {
			//alert('Error loading document');
		},
		
		success: function(data) {
			$("select[name='pfid']").val(data.ken);
			$("input[name='address1']").val(data.address);
		}
	});
}

//====================================================================

//全角数字を半角数字に変換（文字列のまま）
function toHankaku(data) {
	var han = "0123456789.,-+";
	var zen = "０１２３４５６７８９．，－＋";
	var str = "";
	
	for (i = 0; i < data.length; i++) {
		c = data.charAt(i);
		n = zen.indexOf(c,0);
		if (n >= 0) c = han.charAt(n);
		str += c;
	}
	return str;
}


//入力チェック（半角数字）
function checkNumber(ID) {
	
	var val = $("input#"+ID).val();
	
	if ( val.match(/[^0-9]/g) ) {
		alert ("入力は半角数字でお願いします");
		
		var str = val.replace(/[^0-9]/g, "");
		$("input#"+ID).val(str);
	}
}


//価格表記からカンマをとり、整数にする
function setNumber(val) {
	
	if (val == null) return 0;
	
	var str = val.replace(/,/, "");
	
	return parseInt(str);
}


//改行コードを <br> に変換
function nl2br(val) {
	
	if (val == null) return false;
	
	return val.replace(/\n/g, '<br />');
}

//=====================================================================

//数値　カンマ区切り
function commas(x) {
	
	// 確実に文字列型に変換する。例では "95839285734.3245"
	var s = "" + x;
	
	// 小数点の位置を0オリジンで求める。例では 11
	var p = s.indexOf(".");
	
	// 小数点が見つからなかった時
	if (p < 0) {
		p = s.length;		// 仮想的な小数点の位置とする
	}
	
	// 小数点の桁と小数点より右側の文字列。例では ".3245"
	var r = s.substring(p, s.length);
	
	// (10 ^ i) の位について
	for (var i = 0; i < p; i++) {
		
		// (10 ^ i) の位のひとつの桁の数字。例では "4", "3", "7", "5", "8", "2", "9", "3", "8", "5", "9" の順になる。
		var c = s.substring(p - 1 - i, p - 1 - i + 1);
		
		// 数字以外のもの(符合など)が見つかった
		if (c < "0" || c > "9") {
			
			// 残りを全部付加する
			r = s.substring(0, p - i) + r;
			break;
		}
		
		// 3 桁ごと、ただし初回は除く
		if (i > 0 && i % 3 == 0) {
			
			// カンマを付加する
			r = "," + r;
		}
		
		// 数字を一桁追加する。
		r = c + r;
	}
	return r;
}

//====================================================================

//文字数の取得
function calcTextLength(id,maxnum) {
	
	var str = $("#"+id).val();
	
	var len = str.length; /* 入力された文字列の長さ */
	
	var cnt=x=y=0;
	
	for(i=0; ;cnt++){
			/* 改行のがいくつあるカウント */
			x=str.indexOf("\n",y);
			 if(x==-1) break;
			 y=x+2;
	}
	
	/* 改行はカウントせず、文字数のみ表示 */
	var num = len-(cnt*2);
	
	var output = ( num > maxnum ) ? '<span class="red">'+num+'</span>' : num;
	$("#tlen").html(output);
}

//====================================================================


