﻿/***********************************************************
 * Parser functions for Web API
 * @version : 1.50
 * @revision : 001
 * @author : Hiroyuki Nakatsuka (hiroyu-n@blowline.co.jp)
 * @histories :
 *    Initial @20090425
 **********************************************************/

	var __IE__ = false;
	if(navigator.userAgent.indexOf("MSIE")>-1){
		__IE__ = true;
	}

function hdlAjax_rev001(ajaxObj){
	/* Retrieve handler for the response of searching
	 * reports. Parameter named 'ajaxObj' contains ajaxText,
	 * ajaxXml and ajaxState object. */
	var returnObj = {result:{}, itemsArr:[], query:{}};
	if(ajaxObj['ajaxXml']){
		var queryNode = ajaxObj.ajaxXml.getElementsByTagName("query")[0];
		var resultNode = ajaxObj.ajaxXml.getElementsByTagName("result")[0];
		var itemsNode = ajaxObj.ajaxXml.getElementsByTagName("items")[0];
		// Parse queryNode.
		if(queryNode){
			for(var i=0;i<queryNode.attributes.length;i++){
				returnObj.query[queryNode.attributes[i].nodeName] = queryNode.attributes[i].nodeValue;
			}
		}
		// Parse resultNode.
		if(resultNode){
			for(var i=0;i<resultNode.attributes.length;i++){
				returnObj.result[resultNode.attributes[i].nodeName] = resultNode.attributes[i].nodeValue;
			}
		}
		// Parse itemsNode.
		if(itemsNode){
			for(var i=0;i<itemsNode.childNodes.length;i++){
				var currItemNode = itemsNode.childNodes[i];
				if(currItemNode.nodeName=="item"){
					var currItemObj = {};
					switch(returnObj.query['category']){
						case "report":
							var currItemObj = spt_parseReport(currItemNode);
							break;
						case "topic":
							break;
						case "area":
							var currItemObj = spt_factObj(currItemNode);
							break;
						case "researchArea":
							var currItemObj = spt_factObj(currItemNode);
							break;
						case "released":
							break;
						case "writer":
							var currItemObj = spt_factObj(currItemNode);
							break;
						case "newArticle":
							var currItemObj = spt_factObj(currItemNode);
							break;
						case "month":
							var currItemObj = spt_factObj(currItemNode);
							break;
						case "special":
							if(returnObj.query['target']=="book"){
								var currItemObj = spt_parseBook(currItemNode);
							}else{
								var currItemObj = spt_factObj(currItemNode);
							}
							break;
						default:
							break;
					}
					if(currItemObj!={}){
						returnObj.itemsArr.push(currItemObj);
					}else{
					}
				}
			}
		}
	}
	return returnObj;
}

function spt_parseReport(itemNode){
	var itemObj = {};
	if(itemNode){
		// Convert attributes.
		for(var h=0;h<itemNode.attributes.length;h++){
			itemObj[itemNode.attributes[h].nodeName] = itemNode.attributes[h].nodeValue;
		}
		for(var i=0;i<itemNode.childNodes.length;i++){
			var currNode = itemNode.childNodes[i];
			if(currNode.nodeName=="title"){// Convert title element.
				for(var i=0;i<currNode.childNodes.length;i++){
					var currChildNode = currNode.childNodes[i];
					if(currChildNode.nodeName=="#cdata-section"){
						itemObj['title'] = currChildNode.nodeValue;
					}
				}
				var leadNode = currNode.nextSibling;
				if(leadNode.nodeName=="lead"){
					for(var j=0;j<leadNode.childNodes.length;j++){
						var currChildNode = leadNode.childNodes[j];
						if(currChildNode.nodeName=="#cdata-section"){
							itemObj['lead'] = currChildNode.nodeValue;
						}
					}
				}
			}
		}
	}
	return itemObj;
}

function spt_parseBook(itemNode){
	var itemObj = {};
	if(itemNode){
		// Convert attributes.
		for(var h=0;h<itemNode.attributes.length;h++){
			itemObj[itemNode.attributes[h].nodeName] = itemNode.attributes[h].nodeValue;
		}
		for(var i=0;i<itemNode.childNodes.length;i++){
			var currNode = itemNode.childNodes[i];
			if(currNode.nodeName=="leadTitle"){// Convert title element.
				for(var i=0;i<currNode.childNodes.length;i++){
					var currChildNode = currNode.childNodes[i];
					if(currChildNode.nodeName=="#cdata-section"){
						itemObj['leadTitle'] = currChildNode.nodeValue;
					}
				}
				var leadNode = currNode.nextSibling;
				if(leadNode.nodeName=="leadText"){
					for(var j=0;j<leadNode.childNodes.length;j++){
						var currChildNode = leadNode.childNodes[j];
						if(currChildNode.nodeName=="#cdata-section"){
							itemObj['leadText'] = currChildNode.nodeValue;
						}
					}
				}
			}
		}
	}
	return itemObj;
}


function spt_factObj(itemNode){
	var itemObj = {};
	if(itemNode){
		for (var i=0;i<itemNode.attributes.length;i++){
			itemObj[itemNode.attributes[i].nodeName] = itemNode.attributes[i].nodeValue;
		}
	}
	return itemObj;
}