var resultFormatInfo = "";
var resultFormatResult = "";
var resultFormatPage = "";

var currentTypeValue = "";
var currentTypeField = "";
var currentCategoryValue = "";
var currentCategoryField = "";
var currentPage = 0;

var listDiv = null;


function init(){
	var form = document.formParam;
	
	var typeValue = form.tv.value;
	var typeField = form.tf.value;
	var categoryValue = form.cv.value;
	var categoryField = form.cf.value;
	var page = form.pg.value;
	
	
	resultFormatResult = 
		$("search_result").innerHTML;
	
	resultFormatInfo = 
		$("search_info").innerHTML;
	
	if($("search_page")){
		resultFormatPage =
				$("search_page").innerHTML;	
	}
	
	requestServer(typeValue,typeField,categoryValue,categoryField,page);
	
}

function createHtml(data){
	
	
	var result = resultFormatResult;
	
	for(var i = 0;i < RESULT_ELEMENTS.length;i++){
		var regExp = new RegExp("\\$\\$" + RESULT_ELEMENTS[i]["name"] + "\\$\\$","g");
		
		var expData = data[RESULT_ELEMENTS[i]["name"]];
		
		if(RESULT_ELEMENTS[i]["useHtml"] == "on"){
			expData = expData.replace("&lt;","<");
			expData = expData.replace("&gt;",">");
		}
		
		result = result.replace(regExp,expData);
	
	}
	
	
	return result;
}

function requestServer(typeValue,typeField,categoryValue,categoryField,page){
	
	$("search_result").style.visibility = "hidden";
	if($("search_page")){
		$("search_page").style.visibility = "hidden";
	}
	if($("search_page2")){
		$("search_page2").style.visibility = "hidden";
	}
	
	$("search_info").style.visibility = "visible";
	$("search_info").innerHTML = 
		"<h1>お待ちください。</h1>" +
		"<h2>&nbsp;</h2>";
	
	currentTypeValue = typeValue;
	currentTypeField = typeField;
	currentCategoryValue = categoryValue;
	currentCategoryField = categoryField;
	currentPage = page;

	
	
	//setSearchInfo(typeValue,typeField,categoryValue,categoryField);
	
	var paramHash = {};
	paramHash["tv"] = typeValue;
	paramHash["tf"] = typeField;
	paramHash["cv"] = categoryValue;
	paramHash["cf"] = categoryField;
	paramHash["md"] = CONTENTS_MODE;
	paramHash["pg"] = page;
	
	service = new WebServiceRequest();
	var parameters = service.createRequest(paramHash);
		service.requestWebService(REQUEST_URL,parameters,onResponse,onResponseError);
}

/*
function setSearchInfo(typeValue,typeField,categoryValue,categoryField){
	
	var searchType = "";
	var searchTarget = "";
	
	
	if(typeField.length <= 0){
		searchType = SEARCH_TYPE["defaultValue"]["defaultValue"];
		searchTarget = SEARCH_TARGET["defaultValue"]["defaultValue"];
	}else{
	
		if(typeValue.length <= 0){
			searchType = SEARCH_TYPE[typeField]["defaultValue"];
		}else{
			if(!SEARCH_TYPE[typeField][typeValue]){
				searchType = SEARCH_TYPE[typeField]["defaultValue"];			
			}else{
				searchType = SEARCH_TYPE[typeField][typeValue];
			}
		}
		
		if(categoryField.length > 0){
			if(!SEARCH_TARGET[categoryField]){
				
				 searchTarget = SEARCH_TARGET["defaultValue"]["defaultValue"]
			}else{
			
				if(categoryValue.length <= 0){
					searchTarget = SEARCH_TARGET[categoryField]["defaultValue"];
				}else{
					if(!SEARCH_TARGET[categoryField][categoryValue]){
						searchTarget = SEARCH_TARGET[categoryField]["defaultValue"];
					}else{
						searchTarget = SEARCH_TARGET[categoryField][categoryValue];
					}
				}
			}
		}else{
			if(typeValue.length <= 0){
				searchTarget = SEARCH_TARGET[typeField]["defaultValue"];
			}else{
				if(!SEARCH_TARGET[typeField]){
					searchTarget = SEARCH_TARGET["defaultValue"]["defaultValue"];
				}else{
					if(!SEARCH_TARGET[typeField][typeValue]){
						searchTarget = SEARCH_TARGET[typeField]["defaultValue"];				
					}else{
						searchTarget = SEARCH_TARGET[typeField][typeValue];
					}
				}
			}	
		}
	
	}
	
	resultInfo = resultFormatInfo;
	
	var regExpType = new RegExp("\\$\\$searchType\\$\\$","g");
	resultInfo = resultInfo.replace(regExpType,searchType);
	
	var regExpTarget = new RegExp("\\$\\$searchTarget\\$\\$","g");
	resultInfo = resultInfo.replace(regExpTarget,searchTarget);
	
	$("search_info").innerHTML = resultInfo;
}
*/

function createPagenate(pageCount,currentPage){
	var prev = "";
	var next = "";
	var pageLink = "";
	
	for(var i = 1;i <= parseInt(pageCount);i++){
		if(i != currentPage){
			pageLink += 
				"&nbsp;<a href=\"javascript:requestServer('" + 
				currentTypeValue + "','" + 
				currentTypeField + "','" +
				currentCategoryValue + "','" +
				currentCategoryField + "'," +
				i +
				")\">" + i + "</a>";
		}else{
			pageLink += "&nbsp;" + i;
		}
	}
	
	
	if(parseInt(currentPage) > 1){
		
		prev = "<a href=\"javascript:requestServer('" + 
				currentTypeValue + "','" + 
				currentTypeField + "','" +
				currentCategoryValue + "','" +
				currentCategoryField + "'," +
				(parseInt(currentPage) - 1) +
				")\">前のページへ</a>";	
	}
	
	if(parseInt(currentPage) < parseInt(pageCount)){
		next = "&nbsp;<a href=\"javascript:requestServer('" + 
				currentTypeValue + "','" + 
				currentTypeField + "','" +
				currentCategoryValue + "','" +
				currentCategoryField + "'," +
				(parseInt(currentPage) + 1) +
				")\">次のページへ</a>";	
	}
	
	var returnValue = prev + pageLink + "&nbsp;" + next;
	return returnValue;
	
}

function parseResponseXml(xmlDoc){
	
	if(!xmlDoc){
		doError();
		return;
	}
	
	if(xmlDoc.getElementsByTagName("error").item(0)){
		doError();
		return;	
	}
	
	var searchedCount = 0;
	var pageCount = 0;
	var currentPage = 0;
	
	var searchedCountElem = xmlDoc.getElementsByTagName("SearchedCount");
	if(searchedCountElem.item(0).childNodes[0]){
		searchedCount = searchedCountElem.item(0).childNodes[0].nodeValue;
	}
	
	var pageCountElem = xmlDoc.getElementsByTagName("PageCount");
	if(pageCountElem.item(0).childNodes[0]){
		pageCount = pageCountElem.item(0).childNodes[0].nodeValue;
	}
	
	var currentPageElem = xmlDoc.getElementsByTagName("CurrentPage");
	if(currentPageElem.item(0).childNodes[0]){
		currentPage = currentPageElem.item(0).childNodes[0].nodeValue;
	}
	
	var pagenate;
	if($("search_page") || $("search_page2")){
		pagenate = createPagenate(pageCount,currentPage); 
	}
	
	
	
		var searchTypeElem = xmlDoc.getElementsByTagName("SearchType");
	var searchType = "";
	if(searchTypeElem.item(0).childNodes[0]){
		searchType = searchTypeElem.item(0).childNodes[0].nodeValue;
	}
	
	var searchTargetElem = xmlDoc.getElementsByTagName("SearchTarget");
	var searchTarget = "";
	if(searchTargetElem.item(0).childNodes[0]){
		searchTarget = searchTargetElem.item(0).childNodes[0].nodeValue;
	}
	
	resultInfo = resultFormatInfo;
	
	var regExpType = new RegExp("\\$\\$searchType\\$\\$","g");
	resultInfo = resultInfo.replace(regExpType,searchType);
	
	var regExpTarget = new RegExp("\\$\\$searchTarget\\$\\$","g");
	resultInfo = resultInfo.replace(regExpTarget,searchTarget);
	
	$("search_info").innerHTML = resultInfo;
	
	
	
	var result = xmlDoc.getElementsByTagName("Result");
	
	if(!result){
		doError();
		return;
	}

	if(result.length <= 0){
		doError();
		return;
	}
	
	
	var resultList = "";
	var extendedData = Array();
	for(var i = 0;i < result.length;i++){
		
		var data = {};
		for(var ii = 0;ii < RESULT_ELEMENTS.length;ii++){
			var valueElem = result.item(i).getElementsByTagName(RESULT_ELEMENTS[ii]["name"]);
			var elemValue = "";
			if(valueElem.item(0).childNodes[0]){
				elemValue = valueElem.item(0).childNodes[0].nodeValue;
			}
			if(elemValue.length <= 0){
				elemValue = RESULT_ELEMENTS[ii]["defaultValue"];
			}else{
				if(RESULT_ELEMENTS[ii]["format"]){
					var format = RESULT_ELEMENTS[ii]["format"];
			
					elemValue = format.replace("_value_",elemValue);
			
				}
			}
			
			data[RESULT_ELEMENTS[ii]["name"]] = elemValue;
		}		

			
		resultList += createHtml(data);

	}
	
	
	$("search_result").style.visibility = "visible";
	$("search_result").innerHTML = resultList;
	
	//alert($("search_page").item.length);
	if($("search_page")){
		$("search_page").style.visibility = "visible";
		$("search_page").innerHTML = pagenate;
	}
	
	if($("search_page2")){
		$("search_page2").style.visibility = "visible";
		$("search_page2").innerHTML = pagenate;
	}
	

	
	
}

function doError(){
	$("search_info").innerHTML = "<h1>現在最新ニュースはありません。</h1>" +
		"<h2>&nbsp;</h2>";
		
	$("search_result").style.visibility = "hidden";
	if($("search_page")){
		$("search_page").style.visibility = "hidden";
	}
	if($("search_page2")){
		$("search_page2").style.visibility = "hidden";
	}
}