﻿var isIE	= (navigator.appName=="Microsoft Internet Explorer")?true:false;
var dataTable	= new Array();

function ReplaceAll(Source,stringToFind,stringToReplace) {
  var temp = Source;
  var index = temp.indexOf(stringToFind);

    while(index != -1) {
      temp = temp.replace(stringToFind,stringToReplace);
      index = temp.indexOf(stringToFind);
    }

  return temp;
}

function arrayIndex(array, s) {
  var index = -1;
  
  if (typeof(array) == "object")
  for (var i=0; i<array.length; i++)
    if (array[i] == s) {
      index = i;
      i = array.length;
    }

  return index;
}


function IsNumeric(sText) {
  var ValidChars = "0123456789.";
  var IsNumber=true;
  var Char;

  for (i = 0; i < sText.length && IsNumber == true; i++) {
    Char = sText.charAt(i);
    if (ValidChars.indexOf(Char) == -1) IsNumber = false;
  }
  return IsNumber;    
} 


function GetParamterValue (ParameterName) {
  var url = window.document.URL.toString();
  if (url.indexOf("?")>0) {
    var Parameters = url.split("?")[1].split("&");
    for (i=0; i<Parameters.length; i++) {
      if (Parameters[i].indexOf("=")>0) {
	var ParameterValue = Parameters[i].split("=");
	if (ParameterValue[0]==ParameterName)
	return ParameterValue [1];
      }
    }
  } return "";
}

function getInternetExplorerVersion()
{
   var rv = -1;
   if (navigator.appName == 'Microsoft Internet Explorer')
   {
      var ua = navigator.userAgent;
      var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      if (re.exec(ua) != null)
         rv = parseFloat( RegExp.$1 );
   }
   return rv;
}

function loadFlash(dir, swf, w, h) {
  document.write ("<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0\" width=\"" + w + "\" height=\"" + h + "\" id=\"" + swf.split(" ")[0] + "\" align=\"middle\">");
  document.write ("<param name=\"allowScriptAccess\" value=\"sameDomain\" />");
  document.write ("<param name=\"allowFullScreen\" value=\"false\" />");
  document.write ("<param name=\"movie\" value=\"" + dir + swf + "\" />");
  document.write ("<param name=\"menu\" value=\"false\" />");
  document.write ("<param name=\"wmode\" value=\"transparent\" />");
  document.write ("<param name=\"quality\" value=\"high\" />");
  document.write ("<param name=\"bgcolor\" value=\"#FFFFFF\" />");
  document.write ("<embed src=\"" + dir + swf + "\" menu=\"false\" quality=\"high\" bgcolor=\"#006600\" width=\"" + w + "\" height=\"" + h + "\" name=\"" + swf.split(" ")[0] + "\" align=\"middle\" allowScriptAccess=\"sameDomain\" allowFullScreen=\"false\" wmode=\"transparent\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.adobe.com/go/getflashplayer\" />");
  document.write ("</object>");
}


function XmlLoading(xfile, roottag) {
  var xmlDoc=null;
  var x = null;

  if (window.ActiveXObject) xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  else if (document.implementation.createDocument) xmlDoc=document.implementation.createDocument("","",null);
  else alert('Your browser cannot handle this script');

  if (xmlDoc!=null) {
    xmlDoc.async=false;

    if (xmlDoc.load(xfile)) {
      x = xmlDoc.getElementsByTagName(roottag);
    }// else document.write("Could not read data file : " + xfile);
  }// else document.write("Your browser cannot handle this script!!");

  return x;
}


/*	support safari		*/
function XmlLoading2(xfile, roottag) {
  var xmlDoc=null;
  var xml = LoadXmlDoc2(xfile);
  if (xml != null) xmlDoc = xml.getElementsByTagName(roottag);

  return xmlDoc;
}
/*	support safari		*/


function loadXMLDoc(fname)
{
var xmlDoc;
// code for IE
if (window.ActiveXObject)
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation 
&& document.implementation.createDocument)
  {
  xmlDoc=document.implementation.createDocument("","",null);
  }
else
  {
  alert('Your browser cannot handle this script');
  }
xmlDoc.async=false;
xmlDoc.load(fname);
return(xmlDoc);
}


function displayResult(xmlfile, xslfile, blockid, rssid)
{
xml=loadXMLDoc(xmlfile);
xsl=loadXMLDoc(xslfile);

if (rssid!=null) document.getElementById(rssid).href=xmlfile;

// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById(blockid).innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById(blockid).appendChild(resultDocument);
  }
}

/*	DisplayResult ver 2.0 		*/
/*	Support : IE, Firefox, Safari	*/

function LoadXmlDoc2(fname) {
  if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
  else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  xmlhttp.open("GET",fname,false);
  xmlhttp.send();
  xmlDoc=xmlhttp.responseXML;

  return (xmlDoc);
}

function yyyymmddToddmmyyy(yyyymmdd){
  return yyyymmdd.split("/")[2] + "/" + yyyymmdd.split("/")[1] + "/" + yyyymmdd.split("/")[0];
}

function DisplayResult2(xmlfile, blockid, rssid) {
  var xml = LoadXmlDoc2(xmlfile);
  var xconf = xml.getElementsByTagName("config");
  var xitem = xml.getElementsByTagName("item");

  if (rssid!=null) document.getElementById(rssid).href=xmlfile;

  var temp = [];
  var x = 0;

  var NumOfList	= parseInt(xconf[0].getElementsByTagName("NumberOfList")[0].childNodes[0].nodeValue);
  var NumOfTop 	= parseInt(xconf[0].getElementsByTagName("ImageInfo")[0].getAttribute("top"));
  var MaxSize	= parseInt(xconf[0].getElementsByTagName("MaxSize")[0].childNodes[0].nodeValue);
  var newImage	= xconf[0].getElementsByTagName("ImageInfo")[0].getElementsByTagName("Image")[0].getAttribute("URI");

  for (var i=xitem.length-1; i >= 0 ; i--) {
    temp[i] = xitem[i].getAttribute("date");
    var str = "000" + x;
    temp[i] += "||" + str.substring(str.length,str.length-4);
    str = xitem[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
    temp[i] += "||\t" + str.substring(0, MaxSize) + (str.length > MaxSize ? "..." : "");
//    temp[i] += "||\t" + xitem[i].getElementsByTagName("title")[0].childNodes[0].nodeValue.substring(0, MaxSize);
    temp[i] += "||" + xitem[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
    x++;
  }

  temp.sort();
  temp.reverse()

  var blockContent = "";
  for (var i = 0; i<(temp.length > NumOfList ? NumOfList : temp.length); i++) {
    blockContent += "<div style=\"" + (lang == "en-US" ? "width: 742;" : "width: 352;") + " height:25px; margin-left: 28px; margin-top: 5px;\" class=\"block_bg\">";
    blockContent += "<div style=\"float:left;\">";
    blockContent += "<a href=\"" + temp[i].split("||")[3] + "\" class=\"newsout\" onmouseover=\"this.className='newsover'\" onmouseout=\"this.className='newsout'\">" + temp[i].split("||")[2] + "</a>";
    blockContent += "</div>";
    if (NumOfTop > i)
    blockContent += "<div style=\"float:left; margin:1 0 0 3;\"><img src=\"/images/new.gif\"/></div>";
    blockContent += "<div style=\"float:right;letter-spacing: 0px\">" + yyyymmddToddmmyyy(temp[i].split("||")[0]) + "</div>";
    blockContent += "</div>";
  }

  document.getElementById(blockid).innerHTML = blockContent;
}

/*	End of Function 		*/

function Addeffect(eid) {
    if (eid==1)
        return document.write ("<img src=\"/images/new.gif\" style=\"margin-top:8px; margin-left:5px;\">");
    else if (eid==2)
    {
        if (lang == "pt-PT")
            return document.write ("<font color='red'>（Este curso já está esgotado）</font>");
        else if (lang == "en-US")
            return document.write ("<font color='red'>（Course Full）</font>");
        else
            return document.write ("<font color='red'>（名額已滿）</font>");
    }
}


function langSupport() {
  document.write ("<center>");
  document.write ("<table cellspacing=\"0\" cellpadding=\"0\" width=\"600\" style=\"margin: 10 0 10 0;\">");
  document.write ("<tr height=\"3\">");
  document.write ("	<td width=\"3\"><img src=\"/images/box_left_top.gif\"></td>");
  document.write ("	<td width=\"794\" bgcolor=\"#accdc6\"></td>");
  document.write ("	<td width=\"3\"><img src=\"/images/box_right_top.gif\"></td>");
  document.write ("</tr>");
  document.write ("<tr height=\"100\">");
  document.write ("	<td bgcolor=\"accdc6\"></td>");
  document.write ("	<th bgcolor=\"#e3f6f4\" style=\"padding: 5px; font-size:14px;\">");
  document.write ("This web page is only available in <span class=\"out\" onmouseover=\"this.className='over'\" onmouseout=\"this.className='out'\" onclick=\"location.href=document.getElementById('zh__Link').href;\">Chinese</span> and <span class=\"out\" onmouseover=\"this.className='over'\" onmouseout=\"this.className='out'\" onclick=\"location.href=document.getElementById('pt__Link').href;\">Portuguese</span>.<br>Sorry for any inconvenience caused.");
  document.write ("	</th>");
  document.write ("	<td bgcolor=\"accdc6\"></td>");
  document.write ("</tr>");
  document.write ("<tr height=\"3\">");
  document.write ("	<td><img src=\"/images/box_left_bottom.gif\"></td>");
  document.write ("	<td bgcolor=\"#accdc6\"></td>");
  document.write ("	<td><img src=\"/images/box_right_bottom.gif\"></td>");
  document.write ("</tr>");
  document.write ("</table>");
  document.write ("</center>");
}



function genXmlTable(xmlfile, rootTag, childTag) {
//var x 		= XmlLoading(xmlfile, rootTag);
var x 		= XmlLoading2(xmlfile, rootTag);
var divStyle	= "border: 2px solid #abccc5; background-color: #e3f6f4; padding: 8px;";
var tableStyle	= "color: #576d60;";
var headStyle	= "background-color:#c9e3de;";
var tdStyle	= "";
var lineStyle	= "background-image: url('/images/baseline.gif'); background-repeat:repeat-x;";
var overColor	= "#d4eeeb";
var outColor	= "#e3f6f4";
var extraSpan	= "width:100px; height:100%; border-right: 1px solid #e3f6f4; padding: 5 0 0 0";
var mouseEffect = "onmouseover=\"this.style.backgroundColor='"+overColor+"'\" onmouseout=\"this.style.backgroundColor='"+outColor+"'\"";
var jumpname	= "";

if (x!=null) {
  document.write("<div id=\"dataTable\"><center>");
  var rootnodes = (isIE)?x[0].childNodes.length:(x[0].childNodes.length - 1)/2;

  divStyle += (x[0].getElementsByTagName("config")[0].getAttribute("width")!=null)?" width:"+x[0].getElementsByTagName("config")[0].getAttribute("width")+" ":"";
  tableStyle += (x[0].getElementsByTagName("config")[0].getAttribute("width")!=null)?" width:"+x[0].getElementsByTagName("config")[0].getAttribute("width")+" ":"";
  tableStyle += (x[0].getElementsByTagName("config")[0].getElementsByTagName("style")[0].getAttribute("table")!=null)?" "+x[0].getElementsByTagName("config")[0].getElementsByTagName("style")[0].getAttribute("table")+" ":"";
  headStyle += (x[0].getElementsByTagName("config")[0].getElementsByTagName("style")[0].getAttribute("head")!=null)?" "+x[0].getElementsByTagName("config")[0].getElementsByTagName("style")[0].getAttribute("head")+" ":"";
  tdStyle = (x[0].getElementsByTagName("config")[0].getElementsByTagName("style")[0].getAttribute("td")!=null)?" style=\""+x[0].getElementsByTagName("config")[0].getElementsByTagName("style")[0].getAttribute("td")+"\"":"";
  jumpname = x[0].getElementsByTagName("config")[0].getElementsByTagName("jump").length>0?(x[0].getElementsByTagName("config")[0].getElementsByTagName("jump")[0].getAttribute("name")!=null?x[0].getElementsByTagName("config")[0].getElementsByTagName("jump")[0].getAttribute("name"):""):"";


  for (var i=0; i<rootnodes-1; i++) {
	ct = x[0].getElementsByTagName(childTag)[i];
	if (typeof(dataTable)!='undefined') dataTable[i] = ct.getAttribute("title") + "||" + i;
	document.write ("<div style=\""+divStyle+"\">");
	document.write ("<a name=\""+jumpname+i+"\"></a>");
	document.write ("<table cellspacing=\"0\" cellpadding=\"5\" style=\""+tableStyle+"\">");
	document.write ("<tr height=\"40\" style=\""+headStyle+"\">");
	extraTitle = ct.getAttribute("extraTitle")!=null?ct.getAttribute("extraTitle"):"";
	extraSpan = ct.getAttribute("extraSpan")!=null?ct.getAttribute("extraSpan"):extraSpan;
	document.write ("<td width=\"10%\">" + (ct.getAttribute("extraTitle")!=null?"<span style=\""+extraSpan+"\">"+extraTitle+"</span>":"") + "</td>");
//	document.write ("<th width=\"80%\">"+ (jumpname!=""?"<a name=\""+jumpname+i+"\"></a>":"") +ct.getAttribute("title")+"</th>");
	document.write ("<th width=\"80%\">"+ ct.getAttribute("title") +"</th>");
	document.write ("<td width=\"10%\">"+(x[0].getElementsByTagName("config")[0].getElementsByTagName("top").length>0?"<span class=\"download\"><a href=\"#top\"><img src=\"/images/top_icon.gif\" border=\"0\" alt=\""+x[0].getElementsByTagName("config")[0].getElementsByTagName("top")[0].getAttribute("name")+"\"></a></span>":"")+"</td>");
	document.write ("</tr>");

	totalnodes = (isIE)?ct.childNodes.length:(ct.childNodes.length - 1)/2;


	for (var j=0; j<totalnodes; j++) {
		document.write ("<tr height=\"40\" valign=\"middle\" "+((ct.getElementsByTagName("item")[j].getAttribute("trStyle")!=null)?("style=\""+ct.getElementsByTagName("item")[j].getAttribute("trStyle")+"\""):mouseEffect)+">");

		var url = ct.getElementsByTagName("item")[j].getAttribute("url")!=null?ct.getElementsByTagName("item")[j].getAttribute("url"):"";
		var att = "";
			var others = new Array();

		if (ct.getElementsByTagName("item")[j].childNodes.length>0) {
			attributeNodes = (isIE)?ct.getElementsByTagName("item")[j].childNodes.length:(ct.getElementsByTagName("item")[j].childNodes.length - 1)/2;
			var tmpName = "";
			var tmpNode;

			for (var k=0; k<attributeNodes; k++) {
				tmpNode = ct.getElementsByTagName("item")[j].childNodes[(isIE)?k:k*2+1];
				if (chkExtraItems(tmpNode)) {
					r = buildupItem(tmpNode);
					if (r.length>0) others.push(r);
				}

				tmpName = tmpNode.nodeName;
				att+=" " + tmpName + "=\"" +ct.getElementsByTagName("item")[j].childNodes[(isIE)?k:k*2+1].getAttribute("value") + "\"";
			}
		}


		document.write ("<td colspan=\"3\""+tdStyle+">");

		var layout = "";
		var msg = url.length>0?"<a href=\""+ url +"\" "+att+">"+ct.getElementsByTagName("item")[j].getAttribute("name")+"</a>":ct.getElementsByTagName("item")[j].getAttribute("name");

//		if (ct.getElementsByTagName("item")[j].getAttribute("subtitle")!=null) {
//			layout="<table border=0 bordercolor=black><tr><td style=\""+(isIE?"width:"+((ct.getElementsByTagName("item")[j].getAttribute("subtitlediv")!=null)?ct.getElementsByTagName("item")[j].getAttribute("subtitlediv"):100)+"px":"padding-right:20px")+";\">"+ct.getElementsByTagName("item")[j].getAttribute("subtitle")+"</td>";
//			msg=layout+"<td>"+msg+"</td></tr></table>";
//		} 


		if (others!=null)
		if (others.length>0) {
			layout="<table border=0 bordercolor=black><tr><td "+((ct.getElementsByTagName("item")[j].getAttribute("style")!=null)?(" style=\""+ct.getElementsByTagName("item")[j].getAttribute("style")+"\""):"")+">"+msg+"</td>";
			for (var k=0; k<others.length; k++) {
				if (others[k].split("||").length>1)
				layout += "<td "+ others[k].split("||")[1] +">" + others[k].split("||")[0] + "</td>";
				else
				layout += "<td>" + others[k] + "</td>";
//				alert(layout);
			}
			msg=layout+"</tr></table>";
		}

		document.write (msg);

		document.write ("</td>");
		document.write ("</tr>");
		if (j<totalnodes-1) document.write ("<tr height=\"1\"><td colspan=\"3\" style=\""+lineStyle+"\" ></td></tr>");
	}

	document.write ("</table>");
	document.write ("</div><br>");
  }

  
  document.write("</center></div>");
}

}


function chkExtraItems(node) {
  var result = false;
  var ExtraItems = new Array("icons", "links");

  for (var i=0; i<ExtraItems.length; i++)
    result = (node.nodeName.toLowerCase() == ExtraItems[i])?true:result;

  return result;
}

function buildupItem(node) {
  var result = "";
  var att = "";
  var attributeNodes = (isIE)?node.childNodes.length:(node.childNodes.length - 1)/2;

  if (node.getAttribute("icon")!=null) { 
	result = "<img src=\""+node.getAttribute("icon")+"\" border=\"0\" "+((node.getAttribute("name")!=null)?"alt=\""+node.getAttribute("name")+"\"":"")+">";	
  } else if (node.getAttribute("name")!=null) {
	result = node.getAttribute("name");
  }


  if (result!="") {
	if (node.getAttribute("url")!=null) {
		for (var j=0; j<attributeNodes; j++) att+=" " + node.childNodes[(isIE)?j:j*2+1].nodeName + "=\"" + node.childNodes[(isIE)?j:j*2+1].getAttribute("value") + "\"";
		result = "<a href=\""+node.getAttribute("url")+"\""+att+">" + result + "</a>";
	}
  }


  result += node.getAttribute("style")!=null?"||style=\""+node.getAttribute("style")+"\"":"";
  return result;
}




/* menu generator */
function menuGenerator() {

/* Assign language data	*/
  var menuImages  = menuImagesTW;
  var mainMenuTxt = mainMenuTxtTW;
  var mainMenuUrl = mainMenuUrlTW;

  if (typeof(lang) != "undefined")
    if (lang == "pt-PT") {
      var menuImages  = typeof(menuImagesPT) != "undefined" ? menuImagesPT : menuImages;
      var mainMenuTxt = typeof(mainMenuTxtPT) != "undefined" ? mainMenuTxtPT : mainMenuTxt;
      var mainMenuUrl = typeof(mainMenuUrlPT) != "undefined" ? mainMenuUrlPT : mainMenuUrl;
    } else if (lang == "en-US") {
      var menuImages  = typeof(menuImagesEN) != "undefined" ? menuImagesEN : menuImages;
      var mainMenuTxt = typeof(mainMenuTxtEN) != "undefined" ? mainMenuTxtEN : mainMenuTxt;
      var mainMenuUrl = typeof(mainMenuUrlEN) != "undefined" ? mainMenuUrlEN : mainMenuUrl;
    }
/* Assign language data	*/


  if (typeof(menuStyle) != "undefined" && typeof(menuImages) != "undefined")
    if (menuStyle.length == menuImages.length) {

/*	Build Main Menu		*/
	document.write ("<table align=\"center\" bgcolor=\""+ menuBG_Color +"\">");
	document.write ("<tr align=\"center\" height=\"30\">");

	for (var i=0; i<menuImages.length; i++) {
	  document.write ("<td style=\"" + (menuStyle[i]!=""?menuStyle[i]:DefaultStyle) + "\"" + (typeof(mainMenuUrl[i])!="object" && mainMenuUrl[i]!="" ?"onclick=\"window.open('"+mainMenuUrl[i]+"');\"":"") + " id=\"" + (menuID + i) + "\">");
	  document.write ("<img src=\"" + (imgPath + menuImages[i][0]) + "\" onmouseover=\"this.src='" + (imgPath + menuImages[i][1]) + "'\" onmouseout=\"this.src='" + (imgPath + menuImages[i][0]) + "'\" border=\"0\">");
	  document.write ("</td>");
	}

	document.write ("</tr>");
	document.write ("</table>");
/*	Build Main Menu		*/


	if (TransMenu.isSupported()) {
	  var mainMenus = new Array();
	  var subMenus	= new Array();
	  var DSFms = new TransMenuSet(TransMenu.direction.down, 1, 0, TransMenu.reference.bottomLeft);

	  for (var i=0; i<mainMenuTxt.length; i++) {
	    if (mainMenuTxt[i] != "") {
	      mainMenus[i] = DSFms.addMenu(document.getElementById(menuID + i));

	      if (typeof(mainMenuTxt[i]) == "object") {
	        for (var j=0; j<mainMenuTxt[i].length; j++) {
		  mainMenus[i].addItem(typeof(mainMenuTxt[i][j]) != "object" ? mainMenuTxt[i][j] : mainMenuTxt[i][j][0], typeof(mainMenuTxt[i][j]) != "object" ? mainMenuUrl[i][j] : mainMenuUrl[i][j][0]);
		  //mainMenus[i].addItem((typeof(mainMenuTxt[i][j]) != "object" ? mainMenuTxt[i][j] : mainMenuTxt[i][j][0]), mainMenuUrl[i][j][0]);
		  genLvMenu(mainMenuTxt[i][j], mainMenus[i], subMenus[j], j, mainMenuUrl[i][j]);
	        }
	      } else mainMenus[i].addItem(mainMenuTxt[i], mainMenuUrl[i]);
	    }
	  }

	  TransMenu.renderAll();
//	  TransMenu.initialize();
	}

    }
}


function genLvMenu(mainMenuTxt_, mainMenus_, subMenus_, j, mainMenuUrl_) {
  if (typeof(mainMenuTxt_) == "object") {
    subMenus_ = mainMenus_.addMenu(mainMenus_.items[j]);
      for (var i=1; i<mainMenuTxt_.length; i++) {
	//subMenus_.addItem(typeof(mainMenuTxt_[i]) != "object" ? mainMenuTxt_[i] : mainMenuTxt_[i][0],"");
	subMenus_.addItem(typeof(mainMenuTxt_[i]) != "object" ? mainMenuTxt_[i] : mainMenuTxt_[i][0], typeof(mainMenuTxt_[i]) != "object" ? mainMenuUrl_[i] : mainMenuUrl_[i][0]);

	genLvMenu(mainMenuTxt_[i], subMenus_, subMenus_[i], i-1, mainMenuUrl_[i]);
      }
  }
}
/* menu generator */


function getLastUpdated(key) {
  var xmlfile	= "/xml/lastUpdated.xml";
  var rootTag	= "updatedList";
  var groupTag	= "updated"
  var x 	= XmlLoading2(xmlfile, rootTag);
  var result	= "";

  if (x!=null) {
    var rootNodes = (isIE)?x[0].childNodes.length:Math.round((x[0].childNodes.length - 1)/2);
    if (rootNodes > 0)
      for (var i=0; i<rootNodes; i++) {
	gt = x[0].getElementsByTagName(groupTag)[i];
	if (gt.getAttribute("key") == key) result = gt.getAttribute("date");
      }
  }

  return result;
}
