/**
 * 検索対象エリア選択
 * @param object フォーム
 * @param string エリアタイプ{xxl,xl,l,m}
 * @param string エリアコード
 */
function setarea(frm,areatype,area_cd) {
	old = frm.area_cd.value;
	frm.area_cd.value = area_cd;
	id = area_cd;
	var obj = document.getElementById(id);

	if (obj) {
		// 並列のノードを非選択に
		var p = obj.parentNode.parentNode;
		var elements = p.getElementsByTagName("span");
		if (elements) {
			for (var i = 0; i < elements.length; i++) {
				if (elements[i].id == obj.id) {
					activeObj(elements[i]);
				} else if (elements[i].className == 'selected') {
					inactiveObj(elements[i]);
				}
			}
		}
	}

	// 配下全エリアブロック非表示・エリア選択状態を解除
	if (areatype == 'xxl') {
		closeBlockByClass('xl');
		closeBlockByClass('l');
		closeBlockByClass('m');
		closeBlockByClass('s');
	}
	if (areatype == 'xl') {
		closeBlockByClass('l');
		closeBlockByClass('m');
		closeBlockByClass('s');
	}
	if (areatype == 'l') {
		closeBlockByClass('m');
		closeBlockByClass('s');
	}
	if (areatype == 'm') {
		closeBlockByClass('s');
	}
	
	// 配下エリアブロック表示
	var blockid = 'sub_' + area_cd;
	openBlockById(blockid);

	// 配下エリアブロックの「指定なし」を選択
	var id = 'all_' + area_cd;
	activeObjById(id);
}

/**
 * エリア名選択
 * @param object エレメント
 */
function activeObj(obj) {
	if (obj) {
		obj.className = 'selected';
	}
}

/**
 * エリア名非選択
 * @param object エレメント
 */
function inactiveObj(obj) {
	if (obj) {
		obj.className = 'label';
	}
}

/**
 * ID指定エリア名非選択
 * @param string オブジェクトID
 */
function activeObjById(id) {
	var obj = document.getElementById(id);
	activeObj(obj);
}

/**
 * ブロック表示
 * @param object エレメント
 */
function openBlock(obj){
	if (obj) {
		obj.style.display = 'block';
	}
}

/**
 * ブロック非表示
 * @param object エレメント
 */
function closeBlock(obj) {
	if (obj) {
		obj.style.display = 'none';
	}
}

/**
 * ID指定ブロック表示
 * @param string オブジェクトID
 */
function openBlockById(blockid){
	var obj = getElementById(blockid);
	openBlock(obj);
}

/**
 * クラス名指定ブロック非表示
 * @param string クラス名
 */
function closeBlockByClass(classname) {
	// 指定クラスの<DIV>エレメント取得
	var p = getElementsByClassName(classname,'div');
	// 対象となる<DIV>をすべて非表示にする
	for (var i = 0, j = p.length; i < j; i++) {
		// ブロック非表示
		closeBlock(p[i]);
		// ブロック内エリア非選択
		var elements = p[i].getElementsByTagName("span");
		for (var k = 0, l = elements.length; k < l; k++) {
			if (elements[k].className == 'selected') {
				inactiveObj(elements[k]);
			}
		}
	}
}

/**
 * ID指定エレメント取得
 * @param string  オブジェクトID
 * @return object エレメント
 */
function getElementById(id) {
	if(document.getElementById) {
		var obj = document.getElementById(id);
	} else if(document.all) {
		var obj = document.all(id);
	}
	return obj;
}



/**
 * クラス名からエレメント取得
 * @param クラス名
 * @param タグ
 * @param コンテナエレメント
 */
function getElementsByClassName(strClass, strTag, objContElm) {
	strTag = strTag || "*";
	objContElm = objContElm || document;
	var objColl = objContElm.getElementsByTagName(strTag);
	if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
		var arr = new Array();
		var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
		var arrClass = strClass.split(delim);
		for (var i = 0, j = objColl.length; i < j; i++) {
			var arrObjClass = objColl[i].className.split(' ');
			if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
				var c = 0;
				comparisonLoop:
				for (var k = 0, l = arrObjClass.length; k < l; k++) {
				for (var m = 0, n = arrClass.length; m < n; m++) {
				if (arrClass[m] == arrObjClass[k]) c++;
				if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
					arr.push(objColl[i]);
					break comparisonLoop;
				}
			}
		}
	}
	return arr;
}

