// ================================================================ 
//  ElUtil.js ---- ElUtil
//	Copyright (c) 2009-2010 E-LIFE All rights reserved.
// ================================================================ 
IE='\v'=='v';

	// 表示する数までカウントアップ
	function CountUp(c) {
		if (c == 1) num = 0;

		var nmax = '';
		for(var i=0; i<max.length; i++) {
			var chr = max.charCodeAt(i);
			if (chr < 48) continue;
			if (chr > 57) continue;
			nmax += max.charAt(i);
		}
		max = nmax;
		if (max < num) num = 0;

		num = NumUp(num);
		if (max == num) return true;

		num ++;
		document.getElementById("bsgcount").innerHTML="<strong>"+formatn(num)+"</strong>";

		setTimeout("CountUp()",IE?1:20);
	}

	// 表示する数までカウントアップ || ダウン
	function CountUp2(c) {
		if (c == 1) num = 0;
		var nmax = '';
		for(var i=0; i<max.length; i++) {
			var chr = max.charCodeAt(i);
			if (chr < 48) continue;
			if (chr > 57) continue;
			nmax += max.charAt(i);
		}
		max = nmax;

		num = (max < num) ? NumDown(num) : NumUp(num);
		if (max == num) return true;

		if (max < num)	num --;
		else 		num ++;

		document.getElementById("bsgcount").innerHTML="<strong>"+formatn(num)+"</strong>";

		setTimeout("CountUp2()",IE?1:20);
	}

	// エリアTOP対応版	-- 2011.06.24 kanno
	function CountUp3(c) {
		if (c == 1) num = 0;
		var nmax = '';
		var m_len = max.length;
		for(var i=0; i<m_len; i++) {
			var chr = max.charCodeAt(i);
			if (chr < 48) continue;
			if (chr > 57) continue;
			nmax += max.charAt(i);
		}
		max = nmax;
		num = (max < num) ? NumDown(num) : NumUp(num);
		if (max == num) return true;

		if (max < num)	num --;
		else 		num ++;

		document.getElementById("bsgcount").innerHTML=formatn(num);
		setTimeout("CountUp3()", 20);
	}

	function setnum(cntstr) {
		var nstr = '';
		for(var i=0; i<cntstr.length; i++) {
			var chr = cntstr.charCodeAt(i);
			if (chr < 48) continue;
			if (chr > 57) continue;
			nstr += cntstr.charAt(i);
		}
		return eval(nstr);
	}

	// 数値フォーマット
	function formatn(num) {
		var numStr = num.toString();
		var len = numStr.length;
		var ret = '';

		for (var i=0; i<len ; i++) {
			ret = numStr.charAt(len - i - 1) + ret;
			if (i % 3 == 2 && i+1 < len) {
				ret = ',' + ret;
			}
		}
		return ret;
	}

	// 繰り上げ
	function NumUp(num) {
	//	if (num > 0 && ((num%2)==0 && max >= eval(num+100000)))		num = eval(num+100000)-1;	// 壱拾萬

		if (num > 100000000 && ((num%10)==0 && max >= eval(num+100000000)))	num = eval(num+100000000)-1;	// 壱億
		if (num > 10000000 && ((num%10)==0 && max >= eval(num+10000000)))	num = eval(num+10000000)-1;	// 壱千萬
		if (num > 5000000 && ((num%10)==0 && max >= eval(num+5000000)))		num = eval(num+5000000)-1;
		if (num > 1000000 && ((num%10)==0 && max >= eval(num+1000000)))		num = eval(num+1000000)-1;	// 壱百萬
		if (num > 500000 && ((num%10)==0 && max >= eval(num+500000))) 		num = eval(num+500000)-1;
		if (num > 250000 && ((num%10)==0 && max >= eval(num+250000))) 		num = eval(num+250000)-1;
		if (num > 100000 && ((num%10)==0 && max >= eval(num+100000))) 		num = eval(num+100000)-1;	// 壱拾萬
		if (num > 50000 && ((num%10)==0 && max >= eval(num+50000))) 		num = eval(num+50000)-1;
		if (num > 25000 && ((num%10)==0 && max >= eval(num+25000))) 		num = eval(num+25000)-1;
		if (num > 10000 && ((num%10)==0 && max >= eval(num+10000))) 		num = eval(num+10000)-1;	// 壱萬
		if (num > 5000 && ((num%10)==0 && max >= eval(num+5000))) 		num = eval(num+5000)-1;
		if (num > 2500 && ((num%10)==0 && max >= eval(num+2500))) 		num = eval(num+2500)-1;
		if (num > 1000 && ((num%10)==0 && max >= eval(num+1000))) 		num = eval(num+1000)-1;
		if (num > 500 && ((num%10)==0 && max >= eval(num+500))) 		num = eval(num+500)-1;
		if (num > 250 && ((num%10)==0 && max >= eval(num+250))) 		num = eval(num+250)-1;
		if (num > 100 && ((num%10)==0 && max >= eval(num+100))) 		num = eval(num+100)-1;
		if (num > 0 && ((num%10)==0 && max >= eval(num+50))) 			num = eval(num+50)-1;
		if (num > 0 && ((num%10)==0 && max >= eval(num+25))) 			num = eval(num+25)-1;
		if (num > 0 && ((num%10)==0 && max >= eval(num+10))) 			num = eval(num+10)-1;

		return num;
	}
	// 繰り下げ
	function NumDown(num) {
		if (num > 1000000 && ((num%10)==0 && max <= eval(num-1000000)))	num = eval(num-1000000)+1;
		if (num > 500000 && ((num%10)==0 && max <= eval(num-500000)))	num = eval(num-500000)+1;
		if (num > 100000 && ((num%10)==0 && max <= eval(num-100000)))	num = eval(num-100000)+1;
		if (num > 50000 && ((num%10)==0 && max <= eval(num-50000)))	num = eval(num-50000)+1;
		if (num > 10000 && ((num%10)==0 && max <= eval(num-10000)))	num = eval(num-10000)+1;
//		if (num > 5000 && ((num%10)==0 && max <= eval(num-5000)))	num = eval(num-5000)+1;
		if (num > 1000 && ((num%10)==0 && max <= eval(num-1000)))	num = eval(num-1000)+1;
//		if (num > 500 && ((num%10)==0 && max <= eval(num-500)))		num = eval(num-500)+1;
		if (num > 100 && ((num%10)==0 && max <= eval(num-100)))		num = eval(num-100)+1;
		if (num > 10 && ((num%10)==0 && max <= eval(num-10)))		num = eval(num-10)+1;

		return num;
	}

	GetChkVal = function (cf) {
		var i;
		for(i=0;i<cf.length;i++) {
			if(cf[i].checked) return cf[i].value;
		}
		return '';
	}

	var SbtList = new Array(11,12,2,3,4);
	function chkSel(tscd, sel, f) {
		for (i = 0;i < SbtList.length; i++) {
			var sbt = SbtList[i];
			document.getElementById('sbt'+sbt).style.display = 'none';
			if (sel != sbt) {
				for (is = 0;is < f.length;is++) {
					if (f.elements[is].name.slice(-2) == sbt) {
						// select
						if (f.elements[is].type == 'select-one') 
							f.elements[is].options.selectedIndex = 0;
						// radio
						if (f.elements[is].type == 'radio' && 
							(f.elements[is].name=='KENCHIKU_JOKEN2'&&f.elements[is].value=='') || 
							(f.elements[is].name!='KENCHIKU_JOKEN2'&&f.elements[is].value=="0")) {
							f.elements[is].checked = true;
						}
					}
				}
			}
		}
		if (sel != '')
			document.getElementById('sbt'+sel).style.display = 'block';
		return true;
	}
	// 実行メイン
	function changeParams_n(f, m) {
		var code	= f.acd.value;
		menus	 	= new DefOptions_n(code, m);
		loadOption_n(m==1?f.tscd:f.rcd);
	}
	// --- オプション定義配列の作成
	function DefOptions_n(code, m){
		var i = 0;
		if (m == 1) {
			// エリア
			this[0] = new Opt_n('−都市を選択して下さい−', '');
			for (i = 0; i < LC[code].length; i++) {
				this[i+1] = new Opt_n(LN[code][i] , LC[code][i]);
			}
		} else {
			// 路線
			this[0] = new Opt_n('−路線を選択して下さい−', '');
			for (i = 0; i < RC[code].length; i++) {
				this[i+1] = new Opt_n(RN[code][i] , RC[code][i]);
			}
		}
		this.length = i+1;
		return this;
	}
	// --- 各オプションの定義(実体)
	function Opt_n(text, value) {
		this.text	= text;
		this.value	= value;
	}
	// --- オプション定義変更関数(共通)
	function loadOption_n(obj) {
		var ot		= obj.options;
		var os		= menus;
		ot.length	= os.length;
		for (var i = 0; i < os.length; i++) {
			ot[i] = new Option(os[i].text, os[i].value , false , false);
		}
		// 先頭のオプションを選択状態にする
//		ot[0].selected = true;
	}
	function _changeParams(f) {
		// エリア
		changeParams_n(f, 1);
		// 路線
		changeParams_n(f, 2);
	}
	// 選択チェック（種別／路線・エリア）
	function chkSelListVal(f, s) {
		var sbt = '';
		for (i = 0; i < f.snm.length; i ++) {
			if (f.snm[i].checked) sbt = f.snm[i].value;
		}
		if (sbt == '') {
			alert('種別を選択してください。');
			return false;
		}

		if (s == 'mr') return true;

		var sr_val = s=='r' ? f.rcd.value : f.tscd.value;
		if (sr_val == '') {
			msg = (s=='r'?'路線':'都市')+'を選択してください。';
			alert(msg);
			return false;
		}
		return true;
	}
	// 該当件数セット
	SetObjectNum = function(f) {
		_SetObjectNum(f);
		//max = ALL_CNT_BB;
		//CountUp2();
		return true;
	}

	var g_sbt = function (f) {
		for (i = 0; i < f.snm.length; i ++) {
			if (f.snm[i].checked) return f.snm[i].value;
		}
		return '';
	}


	_SetObjectNum = function(f) {
		var cnt = f.obj_cnt.value;
		//num = (cnt==null)?0:cnt;
		num = (num == undefined || cnt==null)?0:cnt;

		// 種別・エリアの選択なし
		var sbt = g_sbt(f);
		var acd = f.acd.value;
		var tscd = f.tscd.value;
		var rcd = f.rcd.value;

		if (acd!='' && sbt=='' && tscd=='' && rcd=='') {
			max = ALL_CNT_BB;
			CountUp2();
			return true;
		}

		// 物件数取得
		var result = $.ajax({
			type	 : "GET",
			url	 : "/bin/ajax/get_obj_num.cgi",
			dataType : "json",
			data	 : MkParamStr(f),
			success  : function(data) {
				max = data.cnt;
				CountUp2();
				f.obj_cnt.value = max;
				return true;
			}
		});

		return true;
	}

	__SetObjectNum = function(f) {
		var cnt = f.obj_cnt.value;
		num = (cnt==null)?0:cnt;

		// 種別・エリアの選択なし
		var sbt = g_sbt(f);
		var acd = f.acd.value;
		var tscd = f.tscd.value;
		var rcd = f.rcd.value;

		if (acd!='' && sbt=='' && tscd=='' && rcd=='') {
			max = ALL_CNT_BB;
			CountUp3();
			return true;
		}

		// 物件数取得
		var result = $.ajax({
			type	 : "GET",
			url	 : "/bin/ajax/get_obj_num.cgi",
			dataType : "json",
			data	 : MkParamStr(f),
			success  : function(data) {
				max = data.cnt;
				CountUp3();
				f.obj_cnt.value = max;
				return true;
			}
		});

		return true;
	}

	// リクエストパラメータセット
	MkParamStr = function(f) {
		var param = '';
		var sbt = g_sbt(f);
		param = 'sbt='+f.sbt.value+'&acd='+f.acd.value+'&tscd='+f.tscd.value+'&snm='+sbt+'&rcd='+f.rcd.value;

		return param;
	}

	addFigure = function(str) {
		var num = new String(str).replace(/,/g, "");
		while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
		return num;
	}

	AddCount = function(str1, str2) {
		return addFigure(String(parseInt(str1.replace(",",""))+parseInt(str2.replace(",",""))));
	}

