﻿// JavaScript Document


var XmlHelper = {

	'_loadXml' : function(xml) {
			var xmlDoc = xmlhttp = null;
			try {
					xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
					xmlDoc.async = false;
					xmlDoc.load(xml);
			} catch (e) {
					xmlhttp = new window.XMLHttpRequest();
					xmlhttp.open("GET", xml, false);
					xmlhttp.send(null);
					xmlDoc = xmlhttp.responseXML;
			}
			return xmlDoc;
	},

	'_fetchNodeItemArray' : function(node) {
			var results = [];
			var result = [];
			var item = node.getElementsByTagName('ITEM');
			var length = item.length;
			var target1 = target2 =null;
			if (length > 0) {
					for ( var i = 0; i < length; i++) {
						target1 = item[i].getElementsByTagName('SITENAME')[0];
						target2 = item[i].getElementsByTagName('URL')[0];
						result 	= [];
						if (document.all){
								result['SITENAME']	= target1.childNodes[0].text;
								result['URL'] 			= target2.childNodes[0].text;
						} else {
								result['SITENAME']	= target1.childNodes[1] != null ? target1.childNodes[1].nodeValue : target1.childNodes[0].nodeValue;
								result['URL']				= target2.childNodes[1] != null ? target2.childNodes[1].nodeValue : target2.childNodes[0].nodeValue;					
						}
						results[i] = result;
					}
		} else {
				return null;
		}
		
		return results;
		
	},

	'_fetchCurrentAttributes' : function(node) {
			var length = node.attributes.length;
			if (length > 0) {
					var result = [];
					for ( var j = 0; j < length; j++) {
						result[node.attributes[j].name] = node.attributes[j].nodeValue;
					}
			} else {
					return null;
			}
			return result;	
	},

	'_isHasSubjectNode' : function(node) {
			return (node.getElementsByTagName('SUBJECT').length > 0) ? true : false;
	},
	
	'_fetchSubjectNodeItemArray' : function (node){
			var result 	= [];
			var result2 = [];
			var length	= node.getElementsByTagName('SUBJECT').length;
			for(var i = 0; i < length; i++	){
					result2 						= [];
					result2['NAME'] 		= (this._fetchCurrentAttributes(node.getElementsByTagName('SUBJECT')[i]))['NAME'];
					result2['CONTENT'] 	= this._fetchNodeItemArray(node.getElementsByTagName('SUBJECT')[i]);
					result[i]						= result2;
			}
			return result;
	},
		

	'getDataArray' : function(xml) {
		
			var xmlObj			= (typeof (xml) == "object") ? xml : this._loadXml(xml);
			var websiteObj	= xmlObj.getElementsByTagName('WEBSITE');
			var length			= websiteObj.length;
			var result = [];
					result['CATEGORYS'] = [];
					result['ITEMS'] = [];
					
			try {
			
				for (var i= 0; i < length; i++){
					result['CATEGORYS'][i] = (this._fetchCurrentAttributes(websiteObj[i]))['CATEGORY'];
					if (this._isHasSubjectNode(websiteObj[i])){
							result['ITEMS'][i] = this._fetchSubjectNodeItemArray(websiteObj[i]);
					}else{
							result['ITEMS'][i] = this._fetchNodeItemArray(websiteObj[i]);
					}				
				}
			
				return result;
			
			} catch (e) {

					alert('Fail for load XML : ' + e.message);
					return null;
					
			}
		
	}

}