<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://metabolomics.jp/mediawiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://metabolomics.jp/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sunflower</id>
		<title>Metabolomics.JP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://metabolomics.jp/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sunflower"/>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Special:Contributions/Sunflower"/>
		<updated>2026-05-15T11:18:42Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:Database</id>
		<title>Lipoquality:Database</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:Database"/>
				<updated>2018-10-31T23:02:50Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#includejs:Lipoquality.js}}&lt;br /&gt;
&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample source&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;samplesource&amp;quot; id=&amp;quot;samplesource&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample type&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;sampletype&amp;quot; id=&amp;quot;sampletype&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lipid class&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;lipidclass&amp;quot; id=&amp;quot;lipidclass&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align: bottom&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;loading&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Loading all data. Please wait.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;retrieving&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Retrieving...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;resetZoom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: right&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;optionHeader&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;cutoff&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- sortable list --&amp;gt;&amp;lt;div id=&amp;quot;sortableList&amp;quot; style=&amp;quot;display: none; overflow-y: scroll; border: 1px solid #000000; padding: 3px; height: 250px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id=&amp;quot;rate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- barchart or heatmap --&amp;gt;&amp;lt;div id=&amp;quot;container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- piechiart --&amp;gt;&amp;lt;div id=&amp;quot;pieContainer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;hit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar&amp;quot; value=&amp;quot;bar&amp;quot; checked=&amp;quot;yes&amp;quot;}}{{#formtag:label|for=&amp;quot;bar&amp;quot;|barchart(individual)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar_bundle&amp;quot; value=&amp;quot;bar_bundle&amp;quot;}}{{#formtag:label|for=&amp;quot;bar_bundle&amp;quot;|barchart(bundle)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;heatmap&amp;quot; value=&amp;quot;heatmap&amp;quot;}}{{#formtag:label|for=&amp;quot;heatmap&amp;quot;|heatmap}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;check&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;searching&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Searching...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;result&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
We currently use the native ion abundance detected in mass spectrometer, to describe the lipid amount (not normalized yet). &amp;lt;br /&amp;gt;&lt;br /&gt;
Therefore, the amount may reflect various effects such as matrix effect and MS sensitivity drift.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js</id>
		<title>MediaWiki:LipoqualitySearch.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js"/>
				<updated>2018-10-31T23:01:59Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// Last-update: 2018/11/01&lt;br /&gt;
// 対象項目からデータを検索する ////////////////////////////////////////////////////////&lt;br /&gt;
// param sampleSource - sample source&lt;br /&gt;
// param sampleType - sample type&lt;br /&gt;
// param lipidClass - lipid class&lt;br /&gt;
// return 検索結果&lt;br /&gt;
function lipoqualitySearch(sampleSource, sampleType, lipidClass)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
	var ssReg = new RegExp(translateForReg(sampleSource));&lt;br /&gt;
	var stReg = new RegExp(translateForReg(sampleType));&lt;br /&gt;
&lt;br /&gt;
	// 検索&lt;br /&gt;
	var result = [];&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
//console.log(&amp;quot;length:&amp;quot; + j + &amp;quot;,&amp;quot; + gAllData[key].length);&lt;br /&gt;
			// 対象sample source, sample typeかチェック&lt;br /&gt;
//console.log(&amp;quot;st:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;]));&lt;br /&gt;
			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
//console.log(&amp;quot;search:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;].length);&lt;br /&gt;
			var found = false;&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				// 対象lipid classかチェック&lt;br /&gt;
//console.log(&amp;quot;hit:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] + &amp;quot;==&amp;quot; + lipidClass);&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidClass){&lt;br /&gt;
					found = true;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// 対象だったので結果に格納する&lt;br /&gt;
			if(found){&lt;br /&gt;
				result[i] = [];&lt;br /&gt;
				result[i][&amp;quot;title&amp;quot;]       = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;/&amp;quot; + lipidClass;&lt;br /&gt;
				result[i][&amp;quot;Method link&amp;quot;] = gAllData[key][j][&amp;quot;Method link&amp;quot;];&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// 指定されたID群をもとに、グラフ全般用のデータを取得する ///////////////////////////////&lt;br /&gt;
// param ids       - 対象データのID。「SampleSource/SampleType/LipidClass」で構成される。&lt;br /&gt;
// param chartType -　未使用&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChartData(ids, chartType)&lt;br /&gt;
{&lt;br /&gt;
	// '#7fbfff'がbarchartのデフォルト色と似ているので排除する&lt;br /&gt;
	var pieColors = ['#ff7f7f','#7f7fff','#7fff7f','#ff7fbf','#bfff7f','#ff7fff','#7fffff','#000000','#bf7fff','#7fffbf','#ffbf7f','#808080'];&lt;br /&gt;
&lt;br /&gt;
	var result     = {};&lt;br /&gt;
	var data       = {};&lt;br /&gt;
	var colorKeys  = {};&lt;br /&gt;
	var colorIndex = 0;&lt;br /&gt;
	// id毎にデータを取得&lt;br /&gt;
	result.x   = []; // Xラベル&lt;br /&gt;
	result.map = []; // チャートデータ&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		var w = ids[index].split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var samplesource = w[0];&lt;br /&gt;
		var sampletype   = w[1];&lt;br /&gt;
		var lipidclass   = w[2];&lt;br /&gt;
&lt;br /&gt;
		result.map[index]     = {}; // 通常チャート用&lt;br /&gt;
		result.map[index].pie = []; // パイチャート用&lt;br /&gt;
		var pieKeys = {};&lt;br /&gt;
		var pieIndex = 0;&lt;br /&gt;
		for(key in gAllData){ // sample source&lt;br /&gt;
			if(samplesource != key)&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			for(var j = 0; j &amp;lt; gAllData[key].length; j ++){ // sample name&lt;br /&gt;
				if(sampletype != gAllData[key][j][&amp;quot;Sample name&amp;quot;])&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				// 同一のLipidSuperClassのみ対象とする&lt;br /&gt;
				// 通常チャートは同一LipidClassのみだが、パイチャートにおいて意味を持つ&lt;br /&gt;
				var targetLipidSuperClass = undefined;&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidclass){&lt;br /&gt;
						targetLipidSuperClass = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;];&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// 各lipid classのチェック&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;] != targetLipidSuperClass) // superクラスが違うものは対象外&lt;br /&gt;
						continue;&lt;br /&gt;
&lt;br /&gt;
					var lc = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;];&lt;br /&gt;
					// lipid classごとに色を変える&lt;br /&gt;
					if(colorKeys[lc] == undefined){&lt;br /&gt;
						colorKeys[lc] = colorIndex++;&lt;br /&gt;
					}&lt;br /&gt;
					// パイチャート用データ&lt;br /&gt;
					if(pieKeys[lc] == undefined){&lt;br /&gt;
						pieKeys[lc] = pieIndex++;&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]] = {};&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].name = lc; // type&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].color = pieColors[colorKeys[lc]%pieColors.length];&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].y = 0;&lt;br /&gt;
					}&lt;br /&gt;
					result.map[index].pie[pieKeys[lc]].y += parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
&lt;br /&gt;
					if(lc == lipidclass){ // lipid classが対象のものなら、通常チャート用にデータを格納する&lt;br /&gt;
						result.map[index].title = samplesource + &amp;quot;/&amp;quot; + sampletype + &amp;quot;/&amp;quot; + lipidclass;&lt;br /&gt;
						result.map[index].meta  = {};&lt;br /&gt;
						for(meta in gAllData[key][j]){// 全メタ情報&lt;br /&gt;
							if(meta != &amp;quot;data&amp;quot;)&lt;br /&gt;
								result.map[index].meta[meta] = gAllData[key][j][meta];&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]); // chain文字列を取得する&lt;br /&gt;
						// すべてのデータでX軸を統一するため、いったんdata配列にデータを格納する&lt;br /&gt;
						if(data[lipidType] == undefined){ // まだ出てきていないchainならばX軸ラベルに追加する&lt;br /&gt;
							data[lipidType] = [];&lt;br /&gt;
							result.x.push(lipidType);&lt;br /&gt;
						}&lt;br /&gt;
						data[lipidType][index] = gAllData[key][j][&amp;quot;data&amp;quot;][k];&lt;br /&gt;
&lt;br /&gt;
						//Logger.log(filename + &amp;quot;/&amp;quot; + tabname + &amp;quot;/&amp;quot; + type);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// chainの小さい順に並べ替える&lt;br /&gt;
	result.x.sort(function(a1, a2){&lt;br /&gt;
		// chainの数による比較&lt;br /&gt;
		var lipidClass1 = a1.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var lipidClass2 = a2.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		if(lipidClass1.length &amp;lt; lipidClass2.length) return -1;&lt;br /&gt;
		if(lipidClass1.length &amp;gt; lipidClass2.length) return 1;&lt;br /&gt;
		// chainの長さと二重結合数による比較&lt;br /&gt;
		for(var i = 0; i &amp;lt; lipidClass1.length; i ++){&lt;br /&gt;
			var lc1 = parseInt(lipidClass1[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			var lc2 = parseInt(lipidClass2[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			if(lc1 &amp;lt; lc2) return -1;&lt;br /&gt;
			if(lc1 &amp;gt; lc2) return 1;&lt;br /&gt;
		}&lt;br /&gt;
		return 0;&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// データを整形&lt;br /&gt;
	var maxOfAll = 0;&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		result.map[index].data = [];&lt;br /&gt;
		var max = 0;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++){&lt;br /&gt;
			result.map[index].data[j] = [];&lt;br /&gt;
&lt;br /&gt;
			if(data[result.x[j]][index] == undefined){ // このデータには、対象chainの情報がないため、ダミーを格納しておく&lt;br /&gt;
				data[result.x[j]][index] = {&lt;br /&gt;
					&amp;quot;Intensity&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
					&amp;quot;Formula&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;InChIKey&amp;quot; :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;SMILES&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;RT[min]&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;m/z&amp;quot;      :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;Adduct&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;TI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MSMS&amp;quot;     :&amp;quot;&amp;quot;&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Intensityの処理&lt;br /&gt;
			var inte = parseFloat(data[result.x[j]][index][&amp;quot;Intensity&amp;quot;]);&lt;br /&gt;
			if(inte &amp;gt; max)&lt;br /&gt;
				max = inte;&lt;br /&gt;
			result.map[index].data[j].push(inte);&lt;br /&gt;
&lt;br /&gt;
			// メタ情報の格納&lt;br /&gt;
			result.map[index].data[j].meta = {};&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Formula&amp;quot;]  = data[result.x[j]][index][&amp;quot;Formula&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;InChIKey&amp;quot;] = data[result.x[j]][index][&amp;quot;InChIKey&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;SMILES&amp;quot;]   = data[result.x[j]][index][&amp;quot;SMILES&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;RT[min]&amp;quot;]  = data[result.x[j]][index][&amp;quot;RT[min]&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;m/z&amp;quot;]      = data[result.x[j]][index][&amp;quot;m/z&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Adduct&amp;quot;]   = data[result.x[j]][index][&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;TI&amp;quot;]       = data[result.x[j]][index][&amp;quot;TI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MI&amp;quot;]       = data[result.x[j]][index][&amp;quot;MI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MSMS&amp;quot;]     = data[result.x[j]][index][&amp;quot;MSMS&amp;quot;];&lt;br /&gt;
		}&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++) // 意味ある？&lt;br /&gt;
			result.map[index].data[j][0] = result.map[index].data[j][0];&lt;br /&gt;
&lt;br /&gt;
		// 全体での最大Intensityを見つけ出す&lt;br /&gt;
		result.map[index].max = max;&lt;br /&gt;
		if(maxOfAll &amp;lt; max)&lt;br /&gt;
			maxOfAll = max;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll = maxOfAll;&lt;br /&gt;
&lt;br /&gt;
	result.title = lipidclass;&lt;br /&gt;
	// アルキル、ジアシル用に配列にしておく&lt;br /&gt;
	// -&amp;gt; 完全に別々になったので、無意味に&lt;br /&gt;
	var array = [];&lt;br /&gt;
	array.push(result);&lt;br /&gt;
&lt;br /&gt;
	return array;&lt;br /&gt;
}&lt;br /&gt;
// 文字列を正規表現文字列に変換する ////////////////////////////////////////&lt;br /&gt;
// param str 対象文字列&lt;br /&gt;
// return 正規表現用文字列&lt;br /&gt;
function translateForReg(str)&lt;br /&gt;
{&lt;br /&gt;
	// ()はエスケープする&lt;br /&gt;
	str = str.replace(&amp;quot;(&amp;quot;,&amp;quot;\\(&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
	str = str.replace(&amp;quot;)&amp;quot;,&amp;quot;\\)&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// Allはすべてが対象&lt;br /&gt;
	if(str == &amp;quot;All&amp;quot; || str.length == 0)&lt;br /&gt;
		str = &amp;quot;.*&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		str = &amp;quot;^&amp;quot; + str + &amp;quot;$&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	return str;&lt;br /&gt;
}&lt;br /&gt;
// chainグラフ用データの取得 ///////////////////////////////////////////////&lt;br /&gt;
// param samplename - Sample Name&lt;br /&gt;
// param samplesource - Sample Source&lt;br /&gt;
// param sampletype - Sample Type&lt;br /&gt;
// param lipidclass - Lipid class&lt;br /&gt;
// param chain - Lipid chain&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChainData(samplename, samplesource, sampletype, lipidclass, chain)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
//	var ssReg = new RegExp(translateForReg(samplesource));&lt;br /&gt;
//	var stReg = new RegExp(translateForReg(sampletype));&lt;br /&gt;
	var snReg = new RegExp(translateForReg(samplename), &amp;quot;i&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	var result       = {};&lt;br /&gt;
	var maxOfAll     = 0;&lt;br /&gt;
	var index        = 0;&lt;br /&gt;
	var legends      = {};&lt;br /&gt;
	if(chain.indexOf(&amp;quot;/&amp;quot;) &amp;gt; 0)&lt;br /&gt;
		result.title     = lipidclass + &amp;quot;(&amp;quot; + chain + &amp;quot;)&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		result.title     = lipidclass + &amp;quot; &amp;quot; + chain;&lt;br /&gt;
	result.lipidclass = lipidclass;&lt;br /&gt;
	result.chain      = chain;&lt;br /&gt;
	result.x         = [];&lt;br /&gt;
	result.ionmode   = [];&lt;br /&gt;
	result.intensity = [];&lt;br /&gt;
	result.adduct    = [];&lt;br /&gt;
	quantification   = &amp;quot;&amp;quot;;&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
//		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
//			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
//			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
//				continue;&lt;br /&gt;
			if(!snReg.test(gAllData[key][j][&amp;quot;Sample source&amp;quot;])) // samplenameが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			// 特定のlipid class, lipid chainのみを対象とする&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] != lipidclass)&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				if(!gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;]) // 空データ&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]);&lt;br /&gt;
//				var legend = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;];&lt;br /&gt;
				var legend;&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Human&amp;quot;)&lt;br /&gt;
					legend = &amp;quot;Human plasma&amp;quot;;&lt;br /&gt;
				else if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Mouse&amp;quot;)&lt;br /&gt;
					legend = gAllData[key][j][&amp;quot;Tissue&amp;quot;];// + &amp;quot;_&amp;quot; + gAllData[key][j][&amp;quot;Sample type&amp;quot;] + &amp;quot;_&amp;quot; + gAllData[key][j][&amp;quot;Treatment&amp;quot;];&lt;br /&gt;
				else if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Cell&amp;quot;)&lt;br /&gt;
					legend = gAllData[key][j][&amp;quot;Sample type&amp;quot;];&lt;br /&gt;
				else&lt;br /&gt;
					legend = gAllData[key][j][&amp;quot;Sample name&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
				if(!legends[legend] &amp;amp;&amp;amp; lipidType == chain){ // legend名が複数回被る可能性があるので、すでに格納済みのlegendは処理しない&lt;br /&gt;
					// 対象,,m&lt;br /&gt;
					result.x[index]         = legend;&lt;br /&gt;
					result.ionmode[index]   = gAllData[key][j][&amp;quot;Ion mode&amp;quot;];&lt;br /&gt;
					result.adduct[index]    = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
					result.intensity[index] = parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
&lt;br /&gt;
					if(quantification.length == 0)&lt;br /&gt;
						quantification = gAllData[key][j][&amp;quot;Quantification&amp;quot;];&lt;br /&gt;
					else if(quantification != gAllData[key][j][&amp;quot;Quantification&amp;quot;])&lt;br /&gt;
						quantification = &amp;quot;?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
					if(maxOfAll &amp;lt; result.intensity[index]) // 全体での最大Intensityを調べる&lt;br /&gt;
						maxOfAll = result.intensity[index];&lt;br /&gt;
					index ++;&lt;br /&gt;
					legends[legend] = true;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll       = maxOfAll;&lt;br /&gt;
	result.quantification = quantification;&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// lipid chainを構築して返す。chain情報はSN1～SN4まで分かれており、さらにSN1が空の場合はTotal chainを使用する ///&lt;br /&gt;
// param array - 列データ&lt;br /&gt;
// return lipid chain文字列。16:0, 16:0/16:0など&lt;br /&gt;
function getLipidType(array)&lt;br /&gt;
{&lt;br /&gt;
	// SN1からSN4までのchainを連結させる&lt;br /&gt;
	var lipidType = array[&amp;quot;SN1 chain&amp;quot;];&lt;br /&gt;
	for(var l = 2; l &amp;lt;= 4; l ++){&lt;br /&gt;
		if(array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;].length &amp;gt; 0)&lt;br /&gt;
			lipidType += &amp;quot;/&amp;quot; + array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;];&lt;br /&gt;
		else&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
	// SN1が空だった場合はTotalChainを使用する&lt;br /&gt;
	if(lipidType.length == 0)&lt;br /&gt;
		lipidType = array[&amp;quot;Total chain&amp;quot;];&lt;br /&gt;
	return lipidType;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js</id>
		<title>MediaWiki:LipoqualitySearch.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js"/>
				<updated>2018-10-30T00:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// Last-update: 2018/10/30&lt;br /&gt;
// 対象項目からデータを検索する ////////////////////////////////////////////////////////&lt;br /&gt;
// param sampleSource - sample source&lt;br /&gt;
// param sampleType - sample type&lt;br /&gt;
// param lipidClass - lipid class&lt;br /&gt;
// return 検索結果&lt;br /&gt;
function lipoqualitySearch(sampleSource, sampleType, lipidClass)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
	var ssReg = new RegExp(translateForReg(sampleSource));&lt;br /&gt;
	var stReg = new RegExp(translateForReg(sampleType));&lt;br /&gt;
&lt;br /&gt;
	// 検索&lt;br /&gt;
	var result = [];&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
//console.log(&amp;quot;length:&amp;quot; + j + &amp;quot;,&amp;quot; + gAllData[key].length);&lt;br /&gt;
			// 対象sample source, sample typeかチェック&lt;br /&gt;
//console.log(&amp;quot;st:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;]));&lt;br /&gt;
			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
//console.log(&amp;quot;search:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;].length);&lt;br /&gt;
			var found = false;&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				// 対象lipid classかチェック&lt;br /&gt;
//console.log(&amp;quot;hit:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] + &amp;quot;==&amp;quot; + lipidClass);&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidClass){&lt;br /&gt;
					found = true;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// 対象だったので結果に格納する&lt;br /&gt;
			if(found){&lt;br /&gt;
				result[i] = [];&lt;br /&gt;
				result[i][&amp;quot;title&amp;quot;]       = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;/&amp;quot; + lipidClass;&lt;br /&gt;
				result[i][&amp;quot;Method link&amp;quot;] = gAllData[key][j][&amp;quot;Method link&amp;quot;];&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// 指定されたID群をもとに、グラフ全般用のデータを取得する ///////////////////////////////&lt;br /&gt;
// param ids       - 対象データのID。「SampleSource/SampleType/LipidClass」で構成される。&lt;br /&gt;
// param chartType -　未使用&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChartData(ids, chartType)&lt;br /&gt;
{&lt;br /&gt;
	// '#7fbfff'がbarchartのデフォルト色と似ているので排除する&lt;br /&gt;
	var pieColors = ['#ff7f7f','#7f7fff','#7fff7f','#ff7fbf','#bfff7f','#ff7fff','#7fffff','#000000','#bf7fff','#7fffbf','#ffbf7f','#808080'];&lt;br /&gt;
&lt;br /&gt;
	var result     = {};&lt;br /&gt;
	var data       = {};&lt;br /&gt;
	var colorKeys  = {};&lt;br /&gt;
	var colorIndex = 0;&lt;br /&gt;
	// id毎にデータを取得&lt;br /&gt;
	result.x   = []; // Xラベル&lt;br /&gt;
	result.map = []; // チャートデータ&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		var w = ids[index].split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var samplesource = w[0];&lt;br /&gt;
		var sampletype   = w[1];&lt;br /&gt;
		var lipidclass   = w[2];&lt;br /&gt;
&lt;br /&gt;
		result.map[index]     = {}; // 通常チャート用&lt;br /&gt;
		result.map[index].pie = []; // パイチャート用&lt;br /&gt;
		var pieKeys = {};&lt;br /&gt;
		var pieIndex = 0;&lt;br /&gt;
		for(key in gAllData){ // sample source&lt;br /&gt;
			if(samplesource != key)&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			for(var j = 0; j &amp;lt; gAllData[key].length; j ++){ // sample name&lt;br /&gt;
				if(sampletype != gAllData[key][j][&amp;quot;Sample name&amp;quot;])&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				// 同一のLipidSuperClassのみ対象とする&lt;br /&gt;
				// 通常チャートは同一LipidClassのみだが、パイチャートにおいて意味を持つ&lt;br /&gt;
				var targetLipidSuperClass = undefined;&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidclass){&lt;br /&gt;
						targetLipidSuperClass = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;];&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// 各lipid classのチェック&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;] != targetLipidSuperClass) // superクラスが違うものは対象外&lt;br /&gt;
						continue;&lt;br /&gt;
&lt;br /&gt;
					var lc = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;];&lt;br /&gt;
					// lipid classごとに色を変える&lt;br /&gt;
					if(colorKeys[lc] == undefined){&lt;br /&gt;
						colorKeys[lc] = colorIndex++;&lt;br /&gt;
					}&lt;br /&gt;
					// パイチャート用データ&lt;br /&gt;
					if(pieKeys[lc] == undefined){&lt;br /&gt;
						pieKeys[lc] = pieIndex++;&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]] = {};&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].name = lc; // type&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].color = pieColors[colorKeys[lc]%pieColors.length];&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].y = 0;&lt;br /&gt;
					}&lt;br /&gt;
					result.map[index].pie[pieKeys[lc]].y += parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
&lt;br /&gt;
					if(lc == lipidclass){ // lipid classが対象のものなら、通常チャート用にデータを格納する&lt;br /&gt;
						result.map[index].title = samplesource + &amp;quot;/&amp;quot; + sampletype + &amp;quot;/&amp;quot; + lipidclass;&lt;br /&gt;
						result.map[index].meta  = {};&lt;br /&gt;
						for(meta in gAllData[key][j]){// 全メタ情報&lt;br /&gt;
							if(meta != &amp;quot;data&amp;quot;)&lt;br /&gt;
								result.map[index].meta[meta] = gAllData[key][j][meta];&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]); // chain文字列を取得する&lt;br /&gt;
						// すべてのデータでX軸を統一するため、いったんdata配列にデータを格納する&lt;br /&gt;
						if(data[lipidType] == undefined){ // まだ出てきていないchainならばX軸ラベルに追加する&lt;br /&gt;
							data[lipidType] = [];&lt;br /&gt;
							result.x.push(lipidType);&lt;br /&gt;
						}&lt;br /&gt;
						data[lipidType][index] = gAllData[key][j][&amp;quot;data&amp;quot;][k];&lt;br /&gt;
&lt;br /&gt;
						//Logger.log(filename + &amp;quot;/&amp;quot; + tabname + &amp;quot;/&amp;quot; + type);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// chainの小さい順に並べ替える&lt;br /&gt;
	result.x.sort(function(a1, a2){&lt;br /&gt;
		// chainの数による比較&lt;br /&gt;
		var lipidClass1 = a1.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var lipidClass2 = a2.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		if(lipidClass1.length &amp;lt; lipidClass2.length) return -1;&lt;br /&gt;
		if(lipidClass1.length &amp;gt; lipidClass2.length) return 1;&lt;br /&gt;
		// chainの長さと二重結合数による比較&lt;br /&gt;
		for(var i = 0; i &amp;lt; lipidClass1.length; i ++){&lt;br /&gt;
			var lc1 = parseInt(lipidClass1[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			var lc2 = parseInt(lipidClass2[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			if(lc1 &amp;lt; lc2) return -1;&lt;br /&gt;
			if(lc1 &amp;gt; lc2) return 1;&lt;br /&gt;
		}&lt;br /&gt;
		return 0;&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// データを整形&lt;br /&gt;
	var maxOfAll = 0;&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		result.map[index].data = [];&lt;br /&gt;
		var max = 0;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++){&lt;br /&gt;
			result.map[index].data[j] = [];&lt;br /&gt;
&lt;br /&gt;
			if(data[result.x[j]][index] == undefined){ // このデータには、対象chainの情報がないため、ダミーを格納しておく&lt;br /&gt;
				data[result.x[j]][index] = {&lt;br /&gt;
					&amp;quot;Intensity&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
					&amp;quot;Formula&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;InChIKey&amp;quot; :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;SMILES&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;RT[min]&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;m/z&amp;quot;      :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;Adduct&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;TI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MSMS&amp;quot;     :&amp;quot;&amp;quot;&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Intensityの処理&lt;br /&gt;
			var inte = parseFloat(data[result.x[j]][index][&amp;quot;Intensity&amp;quot;]);&lt;br /&gt;
			if(inte &amp;gt; max)&lt;br /&gt;
				max = inte;&lt;br /&gt;
			result.map[index].data[j].push(inte);&lt;br /&gt;
&lt;br /&gt;
			// メタ情報の格納&lt;br /&gt;
			result.map[index].data[j].meta = {};&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Formula&amp;quot;]  = data[result.x[j]][index][&amp;quot;Formula&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;InChIKey&amp;quot;] = data[result.x[j]][index][&amp;quot;InChIKey&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;SMILES&amp;quot;]   = data[result.x[j]][index][&amp;quot;SMILES&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;RT[min]&amp;quot;]  = data[result.x[j]][index][&amp;quot;RT[min]&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;m/z&amp;quot;]      = data[result.x[j]][index][&amp;quot;m/z&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Adduct&amp;quot;]   = data[result.x[j]][index][&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;TI&amp;quot;]       = data[result.x[j]][index][&amp;quot;TI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MI&amp;quot;]       = data[result.x[j]][index][&amp;quot;MI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MSMS&amp;quot;]     = data[result.x[j]][index][&amp;quot;MSMS&amp;quot;];&lt;br /&gt;
		}&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++) // 意味ある？&lt;br /&gt;
			result.map[index].data[j][0] = result.map[index].data[j][0];&lt;br /&gt;
&lt;br /&gt;
		// 全体での最大Intensityを見つけ出す&lt;br /&gt;
		result.map[index].max = max;&lt;br /&gt;
		if(maxOfAll &amp;lt; max)&lt;br /&gt;
			maxOfAll = max;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll = maxOfAll;&lt;br /&gt;
&lt;br /&gt;
	result.title = lipidclass;&lt;br /&gt;
	// アルキル、ジアシル用に配列にしておく&lt;br /&gt;
	// -&amp;gt; 完全に別々になったので、無意味に&lt;br /&gt;
	var array = [];&lt;br /&gt;
	array.push(result);&lt;br /&gt;
&lt;br /&gt;
	return array;&lt;br /&gt;
}&lt;br /&gt;
// 文字列を正規表現文字列に変換する ////////////////////////////////////////&lt;br /&gt;
// param str 対象文字列&lt;br /&gt;
// return 正規表現用文字列&lt;br /&gt;
function translateForReg(str)&lt;br /&gt;
{&lt;br /&gt;
	// ()はエスケープする&lt;br /&gt;
	str = str.replace(&amp;quot;(&amp;quot;,&amp;quot;\\(&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
	str = str.replace(&amp;quot;)&amp;quot;,&amp;quot;\\)&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// Allはすべてが対象&lt;br /&gt;
	if(str == &amp;quot;All&amp;quot; || str.length == 0)&lt;br /&gt;
		str = &amp;quot;.*&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		str = &amp;quot;^&amp;quot; + str + &amp;quot;$&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	return str;&lt;br /&gt;
}&lt;br /&gt;
// chainグラフ用データの取得 ///////////////////////////////////////////////&lt;br /&gt;
// param samplename - Sample Name&lt;br /&gt;
// param samplesource - Sample Source&lt;br /&gt;
// param sampletype - Sample Type&lt;br /&gt;
// param lipidclass - Lipid class&lt;br /&gt;
// param chain - Lipid chain&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChainData(samplename, samplesource, sampletype, lipidclass, chain)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
//	var ssReg = new RegExp(translateForReg(samplesource));&lt;br /&gt;
//	var stReg = new RegExp(translateForReg(sampletype));&lt;br /&gt;
	var snReg = new RegExp(translateForReg(samplename), &amp;quot;i&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	var result       = {};&lt;br /&gt;
	var maxOfAll     = 0;&lt;br /&gt;
	var index        = 0;&lt;br /&gt;
	var legends      = {};&lt;br /&gt;
	if(chain.indexOf(&amp;quot;/&amp;quot;) &amp;gt; 0)&lt;br /&gt;
		result.title     = lipidclass + &amp;quot;(&amp;quot; + chain + &amp;quot;)&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		result.title     = lipidclass + &amp;quot; &amp;quot; + chain;&lt;br /&gt;
	result.lipidclass = lipidclass;&lt;br /&gt;
	result.chain      = chain;&lt;br /&gt;
	result.x         = [];&lt;br /&gt;
	result.ionmode   = [];&lt;br /&gt;
	result.intensity = [];&lt;br /&gt;
	result.adduct    = [];&lt;br /&gt;
	quantification   = &amp;quot;&amp;quot;;&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
//		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
//			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
//			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
//				continue;&lt;br /&gt;
			if(!snReg.test(gAllData[key][j][&amp;quot;Sample source&amp;quot;])) // samplenameが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			// 特定のlipid class, lipid chainのみを対象とする&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] != lipidclass)&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				if(!gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;]) // 空データ&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]);&lt;br /&gt;
//				var legend = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;];&lt;br /&gt;
				var legend;&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Human&amp;quot;)&lt;br /&gt;
					legend = &amp;quot;Human plasma&amp;quot;;&lt;br /&gt;
				else if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Mouse&amp;quot;)&lt;br /&gt;
					legend = gAllData[key][j][&amp;quot;Tissue&amp;quot;];// + &amp;quot;_&amp;quot; + gAllData[key][j][&amp;quot;Sample type&amp;quot;] + &amp;quot;_&amp;quot; + gAllData[key][j][&amp;quot;Treatment&amp;quot;];&lt;br /&gt;
				else if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Cell&amp;quot;)&lt;br /&gt;
					legend = gAllData[key][j][&amp;quot;Sample type&amp;quot;];&lt;br /&gt;
				else&lt;br /&gt;
					legend = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
				if(!legends[legend] &amp;amp;&amp;amp; lipidType == chain){ // legend名が複数回被る可能性があるので、すでに格納済みのlegendは処理しない&lt;br /&gt;
					// 対象,,m&lt;br /&gt;
					result.x[index]         = legend;&lt;br /&gt;
					result.ionmode[index]   = gAllData[key][j][&amp;quot;Ion mode&amp;quot;];&lt;br /&gt;
					result.adduct[index]    = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
					result.intensity[index] = parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
&lt;br /&gt;
					if(quantification.length == 0)&lt;br /&gt;
						quantification = gAllData[key][j][&amp;quot;Quantification&amp;quot;];&lt;br /&gt;
					else if(quantification != gAllData[key][j][&amp;quot;Quantification&amp;quot;])&lt;br /&gt;
						quantification = &amp;quot;?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
					if(maxOfAll &amp;lt; result.intensity[index]) // 全体での最大Intensityを調べる&lt;br /&gt;
						maxOfAll = result.intensity[index];&lt;br /&gt;
					index ++;&lt;br /&gt;
					legends[legend] = true;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll       = maxOfAll;&lt;br /&gt;
	result.quantification = quantification;&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// lipid chainを構築して返す。chain情報はSN1～SN4まで分かれており、さらにSN1が空の場合はTotal chainを使用する ///&lt;br /&gt;
// param array - 列データ&lt;br /&gt;
// return lipid chain文字列。16:0, 16:0/16:0など&lt;br /&gt;
function getLipidType(array)&lt;br /&gt;
{&lt;br /&gt;
	// SN1からSN4までのchainを連結させる&lt;br /&gt;
	var lipidType = array[&amp;quot;SN1 chain&amp;quot;];&lt;br /&gt;
	for(var l = 2; l &amp;lt;= 4; l ++){&lt;br /&gt;
		if(array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;].length &amp;gt; 0)&lt;br /&gt;
			lipidType += &amp;quot;/&amp;quot; + array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;];&lt;br /&gt;
		else&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
	// SN1が空だった場合はTotalChainを使用する&lt;br /&gt;
	if(lipidType.length == 0)&lt;br /&gt;
		lipidType = array[&amp;quot;Total chain&amp;quot;];&lt;br /&gt;
	return lipidType;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualityGet.js</id>
		<title>MediaWiki:LipoqualityGet.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualityGet.js"/>
				<updated>2018-10-25T00:08:03Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var gAllData = null;&lt;br /&gt;
&lt;br /&gt;
// GoogleDocから全データを取得する(最初の一回だけ)&lt;br /&gt;
function retrieveAllDataFromGoogleDoc()&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?q=all&amp;amp;callback=hasAllDataRetrievedFromGoogleDoc';&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
function hasAllDataRetrievedFromGoogleDoc(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
&lt;br /&gt;
	// データを整形し、gAllDataへ渡す。&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// テキストデータから全データを取得する(最初の一回だけ)&lt;br /&gt;
// param callback - データ取得完了時に呼び出すコールバック関数&lt;br /&gt;
// return なし&lt;br /&gt;
function retrieveAllDataFromText(callback)&lt;br /&gt;
{&lt;br /&gt;
//	var files = [&amp;quot;Cell_Nontarget-Cell_3T_Wild_N.txt&amp;quot;, &amp;quot;Cell_Nontarget-Cell_3T_Wild_P.txt&amp;quot;];&lt;br /&gt;
	var url = 'http://' + location.hostname + '/lipo/json.txt';//allData.php';&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				gAllData = JSON.parse(this.response);&lt;br /&gt;
				callback(callback);&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('Retrieve data failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// AJAXを使用して、全データを取得する&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:LipidClass</id>
		<title>Lipoquality:LipidClass</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:LipidClass"/>
				<updated>2018-10-25T00:06:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* ACar&lt;br /&gt;
* BMP&lt;br /&gt;
* CE&lt;br /&gt;
* Cer-ADS&lt;br /&gt;
* Cer-AP&lt;br /&gt;
* Cer-AS&lt;br /&gt;
* Cer-BS&lt;br /&gt;
* Cer-EODS&lt;br /&gt;
* Cer-EOS&lt;br /&gt;
* Cer-NDS&lt;br /&gt;
* Cer-NP&lt;br /&gt;
* Cer-NS&lt;br /&gt;
* DAG&lt;br /&gt;
* DG&lt;br /&gt;
* DGDG&lt;br /&gt;
* DGTS&lt;br /&gt;
* EtherPC&lt;br /&gt;
* EtherPE&lt;br /&gt;
* FA&lt;br /&gt;
* FAHFA&lt;br /&gt;
* GlcADG&lt;br /&gt;
* HexCer-AP&lt;br /&gt;
* HexCer-NDS&lt;br /&gt;
* HexCer-NS&lt;br /&gt;
* LDGTS&lt;br /&gt;
* LPC&lt;br /&gt;
* LPE&lt;br /&gt;
* LPG&lt;br /&gt;
* LPI&lt;br /&gt;
* LPS&lt;br /&gt;
* MAG&lt;br /&gt;
* MG&lt;br /&gt;
* MGDG&lt;br /&gt;
* OxPC&lt;br /&gt;
* OxPE&lt;br /&gt;
* OxPG&lt;br /&gt;
* OxPI&lt;br /&gt;
* OxPS&lt;br /&gt;
* PA&lt;br /&gt;
* PC&lt;br /&gt;
* PE&lt;br /&gt;
* PG&lt;br /&gt;
* PI&lt;br /&gt;
* PIP1&lt;br /&gt;
* PIP2&lt;br /&gt;
* PIP3&lt;br /&gt;
* PMeOH&lt;br /&gt;
* PS&lt;br /&gt;
* SHexCer&lt;br /&gt;
* SM&lt;br /&gt;
* SQDG&lt;br /&gt;
* TAG&lt;br /&gt;
* TG&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:SampleType</id>
		<title>Lipoquality:SampleType</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:SampleType"/>
				<updated>2018-10-25T00:06:35Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* AA rich diet&lt;br /&gt;
* Cell_3T_Wild_N&lt;br /&gt;
* Cell_3T_Wild_P&lt;br /&gt;
* Cell_HEK_Wild_N&lt;br /&gt;
* Cell_HEK_Wild_P&lt;br /&gt;
* Control diet&lt;br /&gt;
* Control diet (ApoE KO)&lt;br /&gt;
* Control diet (WT)&lt;br /&gt;
* DHA rich diet&lt;br /&gt;
* EPA rich diet&lt;br /&gt;
* HeLa&lt;br /&gt;
* Human_Plasma_Wild_N&lt;br /&gt;
* Human_Plasma_Wild_P&lt;br /&gt;
* Jurkat&lt;br /&gt;
* LNCaP&lt;br /&gt;
* Mouse_Brain_Wild_N&lt;br /&gt;
* Mouse_Brain_Wild_P&lt;br /&gt;
* Mouse_Muscle_Wild_N&lt;br /&gt;
* Mouse_Muscle_Wild_P&lt;br /&gt;
* PC3&lt;br /&gt;
* Sheet1&lt;br /&gt;
* TPC-1&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:SampleSource</id>
		<title>Lipoquality:SampleSource</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:SampleSource"/>
				<updated>2018-10-25T00:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Algae_Chlamydomonas reinhardtii&lt;br /&gt;
* Algae_Chrollera Utex2341&lt;br /&gt;
* Algae_Chrollera Utex2805&lt;br /&gt;
* Algae_Chrollera UtexNC64&lt;br /&gt;
* Algae_Cricosphaera carterae&lt;br /&gt;
* Algae_Dunaliella salina&lt;br /&gt;
* Algae_Euglena gracilis&lt;br /&gt;
* Algae_Nannochloropsis oculata&lt;br /&gt;
* Algae_Pavlova lutheri&lt;br /&gt;
* Algae_Pleurochrysis carterae&lt;br /&gt;
* Cell (Nontarget)&lt;br /&gt;
* Cell (Target)&lt;br /&gt;
* Human (Nontarget)&lt;br /&gt;
* Mouse (Nontarget)&lt;br /&gt;
* Mouse_Brain_DietExperiment&lt;br /&gt;
* Mouse_ControledDiet_Adipose&lt;br /&gt;
* Mouse_ControledDiet_ApoE-KO-Aorta&lt;br /&gt;
* Mouse_ControledDiet_ApoE-KO-Plasma&lt;br /&gt;
* Mouse_ControledDiet_Format&lt;br /&gt;
* Mouse_ControledDiet_Heart&lt;br /&gt;
* Mouse_ControledDiet_Liver&lt;br /&gt;
* Mouse_ControledDiet_Lung&lt;br /&gt;
* Mouse_ControledDiet_Macrophage&lt;br /&gt;
* Mouse_ControledDiet_Plasma&lt;br /&gt;
* Mouse_ControledDiet_Spleen&lt;br /&gt;
* Mouse_Kidney_DietExperiment&lt;br /&gt;
* Mouse_Muscle_DietExperiment&lt;br /&gt;
* Mouse_SmallIntestine_DietExperiment&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js</id>
		<title>MediaWiki:LipoqualitySearch.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js"/>
				<updated>2018-10-25T00:06:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// Last-update: 2018/10/11&lt;br /&gt;
// 対象項目からデータを検索する ////////////////////////////////////////////////////////&lt;br /&gt;
// param sampleSource - sample source&lt;br /&gt;
// param sampleType - sample type&lt;br /&gt;
// param lipidClass - lipid class&lt;br /&gt;
// return 検索結果&lt;br /&gt;
function lipoqualitySearch(sampleSource, sampleType, lipidClass)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
	var ssReg = new RegExp(translateForReg(sampleSource));&lt;br /&gt;
	var stReg = new RegExp(translateForReg(sampleType));&lt;br /&gt;
&lt;br /&gt;
	// 検索&lt;br /&gt;
	var result = [];&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
//console.log(&amp;quot;length:&amp;quot; + j + &amp;quot;,&amp;quot; + gAllData[key].length);&lt;br /&gt;
			// 対象sample source, sample typeかチェック&lt;br /&gt;
//console.log(&amp;quot;st:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;]));&lt;br /&gt;
			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
//console.log(&amp;quot;search:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;].length);&lt;br /&gt;
			var found = false;&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				// 対象lipid classかチェック&lt;br /&gt;
//console.log(&amp;quot;hit:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] + &amp;quot;==&amp;quot; + lipidClass);&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidClass){&lt;br /&gt;
					found = true;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// 対象だったので結果に格納する&lt;br /&gt;
			if(found){&lt;br /&gt;
				result[i] = [];&lt;br /&gt;
				result[i][&amp;quot;title&amp;quot;]       = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;/&amp;quot; + lipidClass;&lt;br /&gt;
				result[i][&amp;quot;Method link&amp;quot;] = gAllData[key][j][&amp;quot;Method link&amp;quot;];&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// 指定されたID群をもとに、グラフ全般用のデータを取得する ///////////////////////////////&lt;br /&gt;
// param ids       - 対象データのID。「SampleSource/SampleType/LipidClass」で構成される。&lt;br /&gt;
// param chartType -　未使用&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChartData(ids, chartType)&lt;br /&gt;
{&lt;br /&gt;
	// '#7fbfff'がbarchartのデフォルト色と似ているので排除する&lt;br /&gt;
	var pieColors = ['#ff7f7f','#7f7fff','#7fff7f','#ff7fbf','#bfff7f','#ff7fff','#7fffff','#000000','#bf7fff','#7fffbf','#ffbf7f','#808080'];&lt;br /&gt;
&lt;br /&gt;
	var result     = {};&lt;br /&gt;
	var data       = {};&lt;br /&gt;
	var colorKeys  = {};&lt;br /&gt;
	var colorIndex = 0;&lt;br /&gt;
	// id毎にデータを取得&lt;br /&gt;
	result.x   = []; // Xラベル&lt;br /&gt;
	result.map = []; // チャートデータ&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		var w = ids[index].split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var samplesource = w[0];&lt;br /&gt;
		var sampletype   = w[1];&lt;br /&gt;
		var lipidclass   = w[2];&lt;br /&gt;
&lt;br /&gt;
		result.map[index]     = {}; // 通常チャート用&lt;br /&gt;
		result.map[index].pie = []; // パイチャート用&lt;br /&gt;
		var pieKeys = {};&lt;br /&gt;
		var pieIndex = 0;&lt;br /&gt;
		for(key in gAllData){ // sample source&lt;br /&gt;
			if(samplesource != key)&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			for(var j = 0; j &amp;lt; gAllData[key].length; j ++){ // sample name&lt;br /&gt;
				if(sampletype != gAllData[key][j][&amp;quot;Sample name&amp;quot;])&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				// 同一のLipidSuperClassのみ対象とする&lt;br /&gt;
				// 通常チャートは同一LipidClassのみだが、パイチャートにおいて意味を持つ&lt;br /&gt;
				var targetLipidSuperClass = undefined;&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidclass){&lt;br /&gt;
						targetLipidSuperClass = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;];&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// 各lipid classのチェック&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;] != targetLipidSuperClass) // superクラスが違うものは対象外&lt;br /&gt;
						continue;&lt;br /&gt;
&lt;br /&gt;
					var lc = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;];&lt;br /&gt;
					// lipid classごとに色を変える&lt;br /&gt;
					if(colorKeys[lc] == undefined){&lt;br /&gt;
						colorKeys[lc] = colorIndex++;&lt;br /&gt;
					}&lt;br /&gt;
					// パイチャート用データ&lt;br /&gt;
					if(pieKeys[lc] == undefined){&lt;br /&gt;
						pieKeys[lc] = pieIndex++;&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]] = {};&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].name = lc; // type&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].color = pieColors[colorKeys[lc]%pieColors.length];&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].y = 0;&lt;br /&gt;
					}&lt;br /&gt;
					result.map[index].pie[pieKeys[lc]].y += parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
&lt;br /&gt;
					if(lc == lipidclass){ // lipid classが対象のものなら、通常チャート用にデータを格納する&lt;br /&gt;
						result.map[index].title = samplesource + &amp;quot;/&amp;quot; + sampletype + &amp;quot;/&amp;quot; + lipidclass;&lt;br /&gt;
						result.map[index].meta  = {};&lt;br /&gt;
						for(meta in gAllData[key][j]){// 全メタ情報&lt;br /&gt;
							if(meta != &amp;quot;data&amp;quot;)&lt;br /&gt;
								result.map[index].meta[meta] = gAllData[key][j][meta];&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]); // chain文字列を取得する&lt;br /&gt;
						// すべてのデータでX軸を統一するため、いったんdata配列にデータを格納する&lt;br /&gt;
						if(data[lipidType] == undefined){ // まだ出てきていないchainならばX軸ラベルに追加する&lt;br /&gt;
							data[lipidType] = [];&lt;br /&gt;
							result.x.push(lipidType);&lt;br /&gt;
						}&lt;br /&gt;
						data[lipidType][index] = gAllData[key][j][&amp;quot;data&amp;quot;][k];&lt;br /&gt;
&lt;br /&gt;
						//Logger.log(filename + &amp;quot;/&amp;quot; + tabname + &amp;quot;/&amp;quot; + type);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// chainの小さい順に並べ替える&lt;br /&gt;
	result.x.sort(function(a1, a2){&lt;br /&gt;
		// chainの数による比較&lt;br /&gt;
		var lipidClass1 = a1.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var lipidClass2 = a2.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		if(lipidClass1.length &amp;lt; lipidClass2.length) return -1;&lt;br /&gt;
		if(lipidClass1.length &amp;gt; lipidClass2.length) return 1;&lt;br /&gt;
		// chainの長さと二重結合数による比較&lt;br /&gt;
		for(var i = 0; i &amp;lt; lipidClass1.length; i ++){&lt;br /&gt;
			var lc1 = parseInt(lipidClass1[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			var lc2 = parseInt(lipidClass2[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			if(lc1 &amp;lt; lc2) return -1;&lt;br /&gt;
			if(lc1 &amp;gt; lc2) return 1;&lt;br /&gt;
		}&lt;br /&gt;
		return 0;&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// データを整形&lt;br /&gt;
	var maxOfAll = 0;&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		result.map[index].data = [];&lt;br /&gt;
		var max = 0;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++){&lt;br /&gt;
			result.map[index].data[j] = [];&lt;br /&gt;
&lt;br /&gt;
			if(data[result.x[j]][index] == undefined){ // このデータには、対象chainの情報がないため、ダミーを格納しておく&lt;br /&gt;
				data[result.x[j]][index] = {&lt;br /&gt;
					&amp;quot;Intensity&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
					&amp;quot;Formula&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;InChIKey&amp;quot; :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;SMILES&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;RT[min]&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;m/z&amp;quot;      :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;Adduct&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;TI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MSMS&amp;quot;     :&amp;quot;&amp;quot;&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Intensityの処理&lt;br /&gt;
			var inte = parseFloat(data[result.x[j]][index][&amp;quot;Intensity&amp;quot;]);&lt;br /&gt;
			if(inte &amp;gt; max)&lt;br /&gt;
				max = inte;&lt;br /&gt;
			result.map[index].data[j].push(inte);&lt;br /&gt;
&lt;br /&gt;
			// メタ情報の格納&lt;br /&gt;
			result.map[index].data[j].meta = {};&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Formula&amp;quot;]  = data[result.x[j]][index][&amp;quot;Formula&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;InChIKey&amp;quot;] = data[result.x[j]][index][&amp;quot;InChIKey&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;SMILES&amp;quot;]   = data[result.x[j]][index][&amp;quot;SMILES&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;RT[min]&amp;quot;]  = data[result.x[j]][index][&amp;quot;RT[min]&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;m/z&amp;quot;]      = data[result.x[j]][index][&amp;quot;m/z&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Adduct&amp;quot;]   = data[result.x[j]][index][&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;TI&amp;quot;]       = data[result.x[j]][index][&amp;quot;TI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MI&amp;quot;]       = data[result.x[j]][index][&amp;quot;MI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MSMS&amp;quot;]     = data[result.x[j]][index][&amp;quot;MSMS&amp;quot;];&lt;br /&gt;
		}&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++) // 意味ある？&lt;br /&gt;
			result.map[index].data[j][0] = result.map[index].data[j][0];&lt;br /&gt;
&lt;br /&gt;
		// 全体での最大Intensityを見つけ出す&lt;br /&gt;
		result.map[index].max = max;&lt;br /&gt;
		if(maxOfAll &amp;lt; max)&lt;br /&gt;
			maxOfAll = max;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll = maxOfAll;&lt;br /&gt;
&lt;br /&gt;
	result.title = lipidclass;&lt;br /&gt;
	// アルキル、ジアシル用に配列にしておく&lt;br /&gt;
	// -&amp;gt; 完全に別々になったので、無意味に&lt;br /&gt;
	var array = [];&lt;br /&gt;
	array.push(result);&lt;br /&gt;
&lt;br /&gt;
	return array;&lt;br /&gt;
}&lt;br /&gt;
// 文字列を正規表現文字列に変換する ////////////////////////////////////////&lt;br /&gt;
// param str 対象文字列&lt;br /&gt;
// return 正規表現用文字列&lt;br /&gt;
function translateForReg(str)&lt;br /&gt;
{&lt;br /&gt;
	// ()はエスケープする&lt;br /&gt;
	str = str.replace(&amp;quot;(&amp;quot;,&amp;quot;\\(&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
	str = str.replace(&amp;quot;)&amp;quot;,&amp;quot;\\)&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// Allはすべてが対象&lt;br /&gt;
	if(str == &amp;quot;All&amp;quot; || str.length == 0)&lt;br /&gt;
		str = &amp;quot;.*&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		str = &amp;quot;^&amp;quot; + str + &amp;quot;$&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	return str;&lt;br /&gt;
}&lt;br /&gt;
// chainグラフ用データの取得 ///////////////////////////////////////////////&lt;br /&gt;
// param samplename - Sample Name&lt;br /&gt;
// param samplesource - Sample Source&lt;br /&gt;
// param sampletype - Sample Type&lt;br /&gt;
// param lipidclass - Lipid class&lt;br /&gt;
// param chain - Lipid chain&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChainData(samplename, samplesource, sampletype, lipidclass, chain)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
//	var ssReg = new RegExp(translateForReg(samplesource));&lt;br /&gt;
//	var stReg = new RegExp(translateForReg(sampletype));&lt;br /&gt;
	var snReg = new RegExp(translateForReg(samplename), &amp;quot;i&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	var result       = {};&lt;br /&gt;
	var maxOfAll     = 0;&lt;br /&gt;
	var index        = 0;&lt;br /&gt;
	var legends      = {};&lt;br /&gt;
	if(chain.indexOf(&amp;quot;/&amp;quot;) &amp;gt; 0)&lt;br /&gt;
		result.title     = lipidclass + &amp;quot;(&amp;quot; + chain + &amp;quot;)&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		result.title     = lipidclass + &amp;quot; &amp;quot; + chain;&lt;br /&gt;
	result.lipidclass = lipidclass;&lt;br /&gt;
	result.chain      = chain;&lt;br /&gt;
	result.x         = [];&lt;br /&gt;
	result.ionmode   = [];&lt;br /&gt;
	result.intensity = [];&lt;br /&gt;
	result.adduct    = [];&lt;br /&gt;
	quantification   = &amp;quot;&amp;quot;;&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
//		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
//			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
//			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
//				continue;&lt;br /&gt;
			if(!snReg.test(gAllData[key][j][&amp;quot;Sample source&amp;quot;])) // samplenameが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			// 特定のlipid class, lipid chainのみを対象とする&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] != lipidclass)&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				if(!gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;]) // 空データ&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]);&lt;br /&gt;
//				var legend = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;];&lt;br /&gt;
				var legend;&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Human&amp;quot;)&lt;br /&gt;
					legend = &amp;quot;Human plasma&amp;quot;;&lt;br /&gt;
				else if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Mouse&amp;quot;)&lt;br /&gt;
					legend = gAllData[key][j][&amp;quot;Tissue&amp;quot;];// + &amp;quot;_&amp;quot; + gAllData[key][j][&amp;quot;Sample type&amp;quot;] + &amp;quot;_&amp;quot; + gAllData[key][j][&amp;quot;Treatment&amp;quot;];&lt;br /&gt;
				else if(gAllData[key][j][&amp;quot;Sample source&amp;quot;] == &amp;quot;Cell&amp;quot;)&lt;br /&gt;
					legend = gAllData[key][j][&amp;quot;Sample type&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
				if(!legends[legend] &amp;amp;&amp;amp; lipidType == chain){ // legend名が複数回被る可能性があるので、すでに格納済みのlegendは処理しない&lt;br /&gt;
					// 対象,,m&lt;br /&gt;
					result.x[index]         = legend;&lt;br /&gt;
					result.ionmode[index]   = gAllData[key][j][&amp;quot;Ion mode&amp;quot;];&lt;br /&gt;
					result.adduct[index]    = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
					result.intensity[index] = parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
&lt;br /&gt;
					if(quantification.length == 0)&lt;br /&gt;
						quantification = gAllData[key][j][&amp;quot;Quantification&amp;quot;];&lt;br /&gt;
					else if(quantification != gAllData[key][j][&amp;quot;Quantification&amp;quot;])&lt;br /&gt;
						quantification = &amp;quot;?&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
					if(maxOfAll &amp;lt; result.intensity[index]) // 全体での最大Intensityを調べる&lt;br /&gt;
						maxOfAll = result.intensity[index];&lt;br /&gt;
					index ++;&lt;br /&gt;
					legends[legend] = true;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll       = maxOfAll;&lt;br /&gt;
	result.quantification = quantification;&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// lipid chainを構築して返す。chain情報はSN1～SN4まで分かれており、さらにSN1が空の場合はTotal chainを使用する ///&lt;br /&gt;
// param array - 列データ&lt;br /&gt;
// return lipid chain文字列。16:0, 16:0/16:0など&lt;br /&gt;
function getLipidType(array)&lt;br /&gt;
{&lt;br /&gt;
	// SN1からSN4までのchainを連結させる&lt;br /&gt;
	var lipidType = array[&amp;quot;SN1 chain&amp;quot;];&lt;br /&gt;
	for(var l = 2; l &amp;lt;= 4; l ++){&lt;br /&gt;
		if(array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;].length &amp;gt; 0)&lt;br /&gt;
			lipidType += &amp;quot;/&amp;quot; + array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;];&lt;br /&gt;
		else&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
	// SN1が空だった場合はTotalChainを使用する&lt;br /&gt;
	if(lipidType.length == 0)&lt;br /&gt;
		lipidType = array[&amp;quot;Total chain&amp;quot;];&lt;br /&gt;
	return lipidType;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualityGet.js</id>
		<title>MediaWiki:LipoqualityGet.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualityGet.js"/>
				<updated>2018-10-25T00:05:46Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var gAllData = null;&lt;br /&gt;
&lt;br /&gt;
// GoogleDocから全データを取得する(最初の一回だけ)&lt;br /&gt;
function retrieveAllDataFromGoogleDoc()&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?q=all&amp;amp;callback=hasAllDataRetrievedFromGoogleDoc';&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
function hasAllDataRetrievedFromGoogleDoc(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
&lt;br /&gt;
	// データを整形し、gAllDataへ渡す。&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// テキストデータから全データを取得する(最初の一回だけ)&lt;br /&gt;
// param callback - データ取得完了時に呼び出すコールバック関数&lt;br /&gt;
// return なし&lt;br /&gt;
function retrieveAllDataFromText(callback)&lt;br /&gt;
{&lt;br /&gt;
//	var files = [&amp;quot;Cell_Nontarget-Cell_3T_Wild_N.txt&amp;quot;, &amp;quot;Cell_Nontarget-Cell_3T_Wild_P.txt&amp;quot;];&lt;br /&gt;
	var url = 'http://' + location.hostname + '/lipodata/json.txt';//allData.php';&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				gAllData = JSON.parse(this.response);&lt;br /&gt;
				callback(callback);&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('Retrieve data failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// AJAXを使用して、全データを取得する&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualityChart.js</id>
		<title>MediaWiki:LipoqualityChart.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualityChart.js"/>
				<updated>2018-10-25T00:05:10Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 定数 &lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
&lt;br /&gt;
// バーチャート（バンドル）のX軸ラベル変更用&lt;br /&gt;
var legendOptions = [&amp;quot;Sample name&amp;quot;,&amp;quot;Sample source&amp;quot;,&amp;quot;Sample type&amp;quot;,&amp;quot;Tissue&amp;quot;,&amp;quot;Treatment&amp;quot;,&amp;quot;Extraction&amp;quot;,&amp;quot;LC type&amp;quot;,&amp;quot;MS type&amp;quot;,&amp;quot;Ion mode&amp;quot;,&amp;quot;Quantification&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
// グローバル変数&lt;br /&gt;
var gBarData;&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
var gChainData;&lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function lipoqulityChartInit()&lt;br /&gt;
{&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	// ウィンドウサイズが変更されたら、チャートもリサイズする&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		if(document.getElementById(&amp;quot;pieContainer&amp;quot;).style.display == &amp;quot;none&amp;quot;)&lt;br /&gt;
			pieWidth = 0;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#p-logo&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
&lt;br /&gt;
	} else if(gChartType == &amp;quot;chain&amp;quot;){&lt;br /&gt;
		// chain&lt;br /&gt;
		var height = 500;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width()- $(&amp;quot;#p-logo&amp;quot;).width() - MARGIN;&lt;br /&gt;
		$(&amp;quot;#container0&amp;quot;).highcharts().setSize(width, height);&lt;br /&gt;
&lt;br /&gt;
	} else {&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#p-logo&amp;quot;).width() - MARGIN;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
// 指定されたIDを持つDOMの全子ノードを削除する&lt;br /&gt;
// param id - 対象ID&lt;br /&gt;
function removeAllChild(id)&lt;br /&gt;
{&lt;br /&gt;
	var dom = document.getElementById(id);&lt;br /&gt;
	for(var i = dom.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		dom.removeChild(dom.childNodes[i]);&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// すべてのチャートの起点となる &lt;br /&gt;
function showChart(targets)&lt;br /&gt;
{&lt;br /&gt;
	if(targets.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// 以前の結果(ソートリスト、カットオフ、パイチャート等)を削除&lt;br /&gt;
	removeAllChild(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;optionHeader&amp;quot;);	&lt;br /&gt;
	removeAllChild(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;pieContainer&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;container&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// 「取得中」を表示&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	var result = retrieveChartData(targets, chartType);&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id        = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type      = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value     = 0; // デフォルトは1%カット -&amp;gt; 初期表示は0%にしておく&lt;br /&gt;
	cutoffText.min       = 0;&lt;br /&gt;
	cutoffText.max       = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width     = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
&lt;br /&gt;
	// 表示ボタン、チャートdom等を表示&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// JCBLの構造ページへ飛ぶ&lt;br /&gt;
function jumpToStructureOnBundleBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	var chain     = attrEscape(chart[0].xAxis[0].categories[x]);&lt;br /&gt;
	jumpToMassBank(gBarData[seq][&amp;quot;type&amp;quot;], chain, chart[0].adduct[seq][x]);&lt;br /&gt;
//console.log(gBarData[seq][&amp;quot;type&amp;quot;] + &amp;quot; &amp;quot; + chain + &amp;quot; &amp;quot; + chart[0].adduct[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	// カットオフ値を考慮&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	var adduct  = [];&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		adduct[j] = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){ // チェックボックスにチェックがついていれば表示対象&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked) // 相対値か絶対値か&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i]  = chart[0].xLabels[k];&lt;br /&gt;
				adduct[j][i] = gBarData[j][k];&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){ // 相対値でのY軸タイトル&lt;br /&gt;
//			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].update({max: 100});&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else { // 絶対値でのY軸タイトル&lt;br /&gt;
//			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].update({max: chart.max});&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
	chart[0].adduct = adduct;&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create &amp;quot;ignore 0-intensity&amp;quot; button&lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create &amp;quot;sortable list&amp;quot;&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
	// 凡例の切り替えを行うコンボボックス&lt;br /&gt;
	var changeLegend = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var legendLabel = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	legendLabel.innerHTML = &amp;quot;Legend&amp;quot;;&lt;br /&gt;
	changeLegend.appendChild(legendLabel);&lt;br /&gt;
	var selectLegend = document.createElement(&amp;quot;select&amp;quot;);&lt;br /&gt;
	selectLegend.id  = &amp;quot;selectLegend&amp;quot;;&lt;br /&gt;
	for(var i = 0; i &amp;lt; legendOptions.length; i ++){&lt;br /&gt;
		var option = document.createElement('option');&lt;br /&gt;
		option.setAttribute(&amp;quot;value&amp;quot;, legendOptions[i]);&lt;br /&gt;
		if(legendOptions[i] == &amp;quot;Treatment&amp;quot;)&lt;br /&gt;
			option.setAttribute(&amp;quot;selected&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
		option.innerHTML = legendOptions[i];&lt;br /&gt;
		selectLegend.appendChild(option);&lt;br /&gt;
	}&lt;br /&gt;
	selectLegend.onchange = function(e){&lt;br /&gt;
		var index = document.getElementById(&amp;quot;selectLegend&amp;quot;).selectedIndex;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			chart[0].series[i].update({name:chart[0].meta[i][legendOptions[index]]}, false);&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].redraw(false);&lt;br /&gt;
	}&lt;br /&gt;
	changeLegend.appendChild(selectLegend);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData   = [];&lt;br /&gt;
	chart      = [];&lt;br /&gt;
	piechart   = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var meta   = [];&lt;br /&gt;
	var root        = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	// データの整理&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0) // 一番最初の単位を基準とする&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){ // 基準の単位と違う単位を発見&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		data[i]     = [];&lt;br /&gt;
		srcdata[i]  = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)]; // 相対値を計算&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]); // もともとの値を計算&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]); // X軸ラベル&lt;br /&gt;
			gBarData[i][j] = result[0].map[i].data[j].meta[&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
		}&lt;br /&gt;
		// for link&lt;br /&gt;
		var type    = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;).replace(&amp;quot;[&amp;quot;,&amp;quot;_&amp;quot;).replace(&amp;quot;]&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		var ionmode = &amp;quot;&amp;quot;;&lt;br /&gt;
		if(result[0].map[i].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Positive&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;p&amp;quot;;&lt;br /&gt;
		else if(result[0].map[i].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Negative&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;n&amp;quot;;&lt;br /&gt;
		gBarData[i][&amp;quot;type&amp;quot;]    = type;&lt;br /&gt;
		gBarData[i][&amp;quot;ionmode&amp;quot;] = ionmode;&lt;br /&gt;
console.log(gBarData[i]);&lt;br /&gt;
&lt;br /&gt;
		meta[i] = result[0].map[i].meta;&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Treatment&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.point.series.columnIndex;&lt;br /&gt;
				jumpToStructureOnBundleBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontWeight: 'bold',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data                = data;&lt;br /&gt;
	chart[0].srcdata             = srcdata;&lt;br /&gt;
	chart[0].max                 = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels             = xLabels;&lt;br /&gt;
	chart[0].quantification      = unitType;&lt;br /&gt;
	chart[0].meta                = meta;&lt;br /&gt;
	chart[0].adduct              = gBarData;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量/相対量を切り替えるチェックボックス&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// MassBankへ飛ぶ共通のメソッド&lt;br /&gt;
function jumpToMassBank(lipidclass, chain, adduct)&lt;br /&gt;
{&lt;br /&gt;
var PRECURSOR_TYPE_NAMES = {&lt;br /&gt;
    '[M]+':       'p',&lt;br /&gt;
	'[M+H]+':     'Hp',&lt;br /&gt;
	'[M+Na]+':    'Nap',&lt;br /&gt;
	'[M+NH4]+':   'NH4p',&lt;br /&gt;
	'[M-H]-':     'Hm',&lt;br /&gt;
	'[M+FA-H]-':  'FAm',&lt;br /&gt;
	'[M+Hac-H]-': 'Hacm'&lt;br /&gt;
};&lt;br /&gt;
var type = PRECURSOR_TYPE_NAMES[adduct];&lt;br /&gt;
window.open(&amp;quot;http://133.242.136.63/wiki/Volatile:&amp;quot; + lipidclass + &amp;quot;?my_1=&amp;quot; + chain + &amp;quot;&amp;amp;my_2=&amp;quot; + type);&lt;br /&gt;
//	window.open(&amp;quot;http://133.242.136.63/wiki/?lc=&amp;quot; + lipidclass + &amp;quot;&amp;amp;c=&amp;quot; + chain + &amp;quot;&amp;amp;p&amp;quot; + adduct, &amp;quot;new&amp;quot;);&lt;br /&gt;
console.log(lipidclass +&amp;quot; &amp;quot; + chain +&amp;quot; &amp;quot; + adduct);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// JCBLの構造ページへ飛ぶ&lt;br /&gt;
function jumpToStructureOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
//	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
//	window.open(&amp;quot;http://133.242.136.63/wiki/Category:CS:&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
	var chain     = attrEscape(chart[0].xAxis[0].categories[x]);&lt;br /&gt;
	jumpToMassBank(gBarData[seq][&amp;quot;type&amp;quot;], chain, chart[seq].adduct[x]);&lt;br /&gt;
//console.log(gBarData[seq][&amp;quot;type&amp;quot;] + &amp;quot; &amp;quot; + chain + &amp;quot; &amp;quot; + chart[seq].adduct[x]);&lt;br /&gt;
/*	if(chain.indexOf(&amp;quot;/&amp;quot;) &amp;gt;= 0)&lt;br /&gt;
		chain = &amp;quot;(&amp;quot; + chain + &amp;quot;)&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		chain = &amp;quot;_&amp;quot; + chain;&lt;br /&gt;
	var link = gBarData[seq][&amp;quot;type&amp;quot;] + chain + gBarData[seq][&amp;quot;ionmode&amp;quot;];&lt;br /&gt;
	window.open(&amp;quot;http://133.242.136.63/wiki/Category:CS:&amp;quot; + link, &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + link);&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
// 全バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// バーチャートデータの切り替え（表示/非表示、0-intensityで呼ばれる) //////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i       = 0;&lt;br /&gt;
		var data    = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		var adduct  = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				adduct[i] = gBarData[j].adduct[k];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
		chart[j].adduct             = adduct;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
//console.log(result);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
	// パイチャートの表示/非表示の切り替え&lt;br /&gt;
	var switchPieHidden = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var hiddenButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
	hiddenButton.id = &amp;quot;switchPieHidden&amp;quot;;&lt;br /&gt;
	hiddenButton.onclick = function(e){&lt;br /&gt;
		var pieContainer = document.getElementById(&amp;quot;pieContainer&amp;quot;);&lt;br /&gt;
		if(pieContainer.style.display == &amp;quot;none&amp;quot;){&lt;br /&gt;
			pieContainer.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
		} else {&lt;br /&gt;
			pieContainer.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;show piechart(s)&amp;quot;);;&lt;br /&gt;
		}&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	}&lt;br /&gt;
	switchPieHidden.appendChild(hiddenButton);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		gBarData[i].adduct = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
gBarData[i].adduct[j] = result[0].map[i].data[j].meta[&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
&lt;br /&gt;
/*			var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー*/&lt;br /&gt;
		}&lt;br /&gt;
		// for link&lt;br /&gt;
		var type    = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;).replace(&amp;quot;[&amp;quot;,&amp;quot;_&amp;quot;).replace(&amp;quot;]&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		var ionmode = &amp;quot;&amp;quot;;&lt;br /&gt;
		if(result[0].map[i].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Positive&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;p&amp;quot;;&lt;br /&gt;
		else if(result[0].map[i].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Negative&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;n&amp;quot;;&lt;br /&gt;
		gBarData[i][&amp;quot;type&amp;quot;]    = type;&lt;br /&gt;
		gBarData[i][&amp;quot;ionmode&amp;quot;] = ionmode;&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontWeight: 'bold',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							// 全バーチャートの拡大率を統一する&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					jumpToStructureOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data                = data;&lt;br /&gt;
		chart[i].srcdata             = srcdata;&lt;br /&gt;
		chart[i].max                 = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels             = xLabels;&lt;br /&gt;
		chart[i].quantification      = result[0].map[i].meta.Quantification;&lt;br /&gt;
		chart[i].adduct              = gBarData[i].adduct;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id  = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.Intensity ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						// パイチャートをクリックしたら、別lipidlcassへ切り替える&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = [];&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets.push(w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType);&lt;br /&gt;
						}&lt;br /&gt;
						showChart(targets);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量/相対量を切り替えるチェックボックス&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// JCBLの構造ページへ飛ぶ&lt;br /&gt;
function jumpToStructureOnHeatmap(seq, x, y)&lt;br /&gt;
{&lt;br /&gt;
//	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	window.open(&amp;quot;http://133.242.136.63/wiki/Category:CS:&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	var type   = gHeatmapData[0].map[0].title.replace(/.*\//,&amp;quot;&amp;quot;).replace(&amp;quot;[&amp;quot;,&amp;quot;_&amp;quot;).replace(&amp;quot;]&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
	var chain  = attrEscape(chart[0].xAxis[0].categories[x]);&lt;br /&gt;
	var adduct = gBarData[y].adduct[x];&lt;br /&gt;
jumpToMassBank(type, chain, adduct);&lt;br /&gt;
//console.log(type + &amp;quot; &amp;quot; + chain + &amp;quot; &amp;quot; + adduct);&lt;br /&gt;
/*	if(chain.indexOf(&amp;quot;/&amp;quot;) &amp;gt;= 0)&lt;br /&gt;
		chain = &amp;quot;(&amp;quot; + chain + &amp;quot;)&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		chain = &amp;quot;_&amp;quot; + chain;&lt;br /&gt;
	var link = type + chain + gBarData[y];&lt;br /&gt;
	window.open(&amp;quot;http://133.242.136.63/wiki/Category:CS:&amp;quot; + link, &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + link);&lt;br /&gt;
*/&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x]);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップデータの切り替え（表示/非表示、0-intensityで呼ばれる) ////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param index - 何番目のデータか(おそらく0のみ)&lt;br /&gt;
// param seq - 順番を格納した配列&lt;br /&gt;
// return なし&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	// カットオフ値の考慮&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// ジャンプ先の設定&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length; j ++){&lt;br /&gt;
		var ionmode = &amp;quot;&amp;quot;;&lt;br /&gt;
		if(gHeatmapData[index].map[seq[j]].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Positive&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;p&amp;quot;;&lt;br /&gt;
		else if(gHeatmapData[index].map[seq[j]].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Negative&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;n&amp;quot;;&lt;br /&gt;
		gBarData[j] = ionmode; // LBG + lipid class + chain&lt;br /&gt;
	}&lt;br /&gt;
	gBarData.reverse();&lt;br /&gt;
&lt;br /&gt;
	var data           = [];&lt;br /&gt;
	var yLabels        = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	// データのセット&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		gBarData[j]        = [];&lt;br /&gt;
		gBarData[j].adduct = [];&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)]; // 相対値の計算&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k].meta[&amp;quot;InChIKey&amp;quot;]); // インチ―キー&lt;br /&gt;
				gBarData[j].adduct[l++]  = gHeatmapData[index].map[seq[j]].data[k].meta[&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;)); // Y軸ラベル&lt;br /&gt;
	}&lt;br /&gt;
	gBarData.reverse();&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true, true, false);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
&lt;br /&gt;
	// バグ対策用 - なぜか、データを再セットすると拡大されるため&lt;br /&gt;
	chart[index].xAxis[0].isDirty = true;&lt;br /&gt;
	chart[index].xAxis[0].setExtremes(null, null,animation=true);&lt;br /&gt;
	chart[index].yAxis[0].isDirty = true;&lt;br /&gt;
	chart[index].yAxis[0].setExtremes(null, null,animation=true);&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップのデータを再設定する ////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param index - ソートリストのインデックス（おそらく0のみ）&lt;br /&gt;
// return なし&lt;br /&gt;
function resetHeatmapData(index)&lt;br /&gt;
{&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
	var sequence = [];&lt;br /&gt;
	for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
		if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
			sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	setHeatmapData(index, sequence);&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ作成 /////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param result チャートデータ&lt;br /&gt;
// return なし&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gBarData     = [];&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index     = 0;&lt;br /&gt;
		var data      = [];&lt;br /&gt;
		var yLabels   = [];&lt;br /&gt;
		var length    = result[i].map.length&lt;br /&gt;
		var inchi     = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j]     = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			gBarData[j]        = {};&lt;br /&gt;
			gBarData[j].adduct = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)]; // 相対値の計算&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k].meta[&amp;quot;InChIKey&amp;quot;]); // インチ-キーの格納&lt;br /&gt;
				ratioData[j][k] = data[index][2]; // cutoff用%値&lt;br /&gt;
				gBarData[j].adduct[k] = result[i].map[j].data[k].meta[&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
/*			var ionmode = &amp;quot;&amp;quot;;&lt;br /&gt;
			if(result[i].map[j].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Positive&amp;quot;)&lt;br /&gt;
				ionmode = &amp;quot;p&amp;quot;;&lt;br /&gt;
			else if(result[i].map[j].meta[&amp;quot;Ion mode&amp;quot;] == &amp;quot;Negative&amp;quot;)&lt;br /&gt;
				ionmode = &amp;quot;n&amp;quot;;&lt;br /&gt;
			gBarData[j] = ionmode; // LBG + lipid class + chain&lt;br /&gt;
*/&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;)); // Y軸ラベル&lt;br /&gt;
		}&lt;br /&gt;
console.log(gBarData);&lt;br /&gt;
		gBarData.reverse();&lt;br /&gt;
console.log(gBarData);&lt;br /&gt;
		yLabels.reverse(); // highchartsの性質上、Y軸ラベルを反転させる&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]); // X軸ラベル&lt;br /&gt;
&lt;br /&gt;
		// create &amp;quot;ignore 0-intensity button&amp;quot;&lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				resetHeatmapData(index);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create &amp;quot;sortable list&amp;quot;&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				resetHeatmapData(index);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				resetHeatmapData(index);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			resetHeatmapData(0); // 一つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ作成&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 0,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontWeight: 'bold',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							jumpToStructureOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// chainチャート ////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setChainData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	// カットオフ値を考慮&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.data.length; j ++){&lt;br /&gt;
		target[j] = chart.data[j]['y'] &amp;gt;= cutoff;&lt;br /&gt;
	}&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	adduct = [];&lt;br /&gt;
//	gBarData.ionmode = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart.srcdata.length; k ++){&lt;br /&gt;
		if(target[k]){ // チェックボックスにチェックがついていれば表示対象&lt;br /&gt;
//			data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
			if(document.getElementById(&amp;quot;ratio&amp;quot;).checked) // 相対値か絶対値か&lt;br /&gt;
				data[i]      = {y:chart.srcdata[k] * 100 / chart.max, color:chart.colors[k%chart.colors.length]};&lt;br /&gt;
			else&lt;br /&gt;
				data[i]      = {y:chart.srcdata[k], color:chart.colors[k%chart.colors.length]};&lt;br /&gt;
			xLabels[i] = chart.xLabels[k];&lt;br /&gt;
/*&lt;br /&gt;
			var ionmode = &amp;quot;&amp;quot;;&lt;br /&gt;
			if(gChainData.ionmode[k] == &amp;quot;Positive&amp;quot;)&lt;br /&gt;
				ionmode = &amp;quot;p&amp;quot;;&lt;br /&gt;
			else if(gChainData.ionmode[k] == &amp;quot;Negative&amp;quot;)&lt;br /&gt;
				ionmode = &amp;quot;n&amp;quot;;&lt;br /&gt;
			gBarData.ionmode[i++] = ionmode;&lt;br /&gt;
*/&lt;br /&gt;
			adduct[i++] = gBarData.adduct[k];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){ // 相対値でのY軸タイトル&lt;br /&gt;
//		chart.yAxis[0].setExtremes(0, 100);&lt;br /&gt;
		chart.yAxis[0].update({max: 100});&lt;br /&gt;
		chart.yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
		chart.tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
	} else { // 絶対値でのY軸タイトル&lt;br /&gt;
//		chart.yAxis[0].setExtremes(0, chart.max);&lt;br /&gt;
		chart.yAxis[0].update({max: chart.max});&lt;br /&gt;
		chart.yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart.quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
		chart.tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
	}&lt;br /&gt;
	chart.xAxis[0].categories = xLabels;&lt;br /&gt;
	chart.series[0].setData(data, true);&lt;br /&gt;
	chart.adduct = adduct;&lt;br /&gt;
&lt;br /&gt;
	chart.xAxis[0].isDirty = true;&lt;br /&gt;
	chart.xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
}&lt;br /&gt;
// param result 対象データ&lt;br /&gt;
// return なし&lt;br /&gt;
function showChainChart(result)&lt;br /&gt;
{&lt;br /&gt;
	var colors = ['#ff7f7f','#7f7fff','#7fff7f','#ff7fbf','#bfff7f','#ff7fff','#7fffff','#000000','#bf7fff','#7fffbf','#ffbf7f','#808080'];&lt;br /&gt;
&lt;br /&gt;
	gChainData = result;&lt;br /&gt;
	gChartType = &amp;quot;chain&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// cutoffボックス。冗長的なので、整理したい&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id        = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type      = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value     = 0; // デフォルトは1%カット&lt;br /&gt;
	cutoffText.min       = 0;&lt;br /&gt;
	cutoffText.max       = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width     = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoffText.onchange = function(){&lt;br /&gt;
		setChainData();&lt;br /&gt;
	};&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	// create &amp;quot;sortable list&amp;quot;&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	sortableList.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.x.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result.x[i]);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
//	gBarData = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	// データの整理&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	gBarData.lipidclass = result.lipidclass;//.replace(&amp;quot;[&amp;quot;,&amp;quot;_&amp;quot;).replace(&amp;quot;](&amp;quot;,&amp;quot;(&amp;quot;).replace(/:/g,&amp;quot;_&amp;quot;);&lt;br /&gt;
	gBarData.chain      = result.chain;&lt;br /&gt;
	gBarData.adduct = [];&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var srcdata = [];&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var j = 0; j &amp;lt; result.intensity.length; j ++){&lt;br /&gt;
//		data[j]    = [attrEscape(result.x[j]), attrEscape(result.intensity[j] * 100 / result.maxOfAll)]; // 相対値の計算&lt;br /&gt;
		data[j]    = {y:attrEscape(result.intensity[j] * 100 / result.maxOfAll), color:colors[j%colors.length]}; // 相対値の計算&lt;br /&gt;
		srcdata[j] = attrEscape(result.intensity[j]);&lt;br /&gt;
		xLabels[j] = attrEscape(result.x[j]);&lt;br /&gt;
&lt;br /&gt;
		gBarData.adduct[j] = result.adduct[j];&lt;br /&gt;
/*		var ionmode = &amp;quot;&amp;quot;;&lt;br /&gt;
		if(result.ionmode[j] == &amp;quot;Positive&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;p&amp;quot;;&lt;br /&gt;
		else if(result.ionmode[j] == &amp;quot;Negative&amp;quot;)&lt;br /&gt;
			ionmode = &amp;quot;n&amp;quot;;&lt;br /&gt;
		gBarData.ionmode[j] = ionmode;*/&lt;br /&gt;
//		var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
//		gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container0';&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent,&lt;br /&gt;
			height: 500&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result.title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			categories:result.x,&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '15px',&lt;br /&gt;
					fontWeight: 'bold',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: false&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		plotOptions: {&lt;br /&gt;
			column: {&lt;br /&gt;
				pointRange: 2&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		series: [{&lt;br /&gt;
			name: 'Population',&lt;br /&gt;
			data: data,&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				jumpToStructureOnChain(event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}]&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
//	chart.xAxis[0].categories = result.x;&lt;br /&gt;
	chart.data    = data;&lt;br /&gt;
	chart.srcdata = srcdata;&lt;br /&gt;
	chart.max     = result.maxOfAll;&lt;br /&gt;
	chart.xLabels = xLabels;&lt;br /&gt;
	chart.quantification = result.quantification;&lt;br /&gt;
	chart.colors  = colors;&lt;br /&gt;
	chart.adduct  = gBarData.adduct;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setChainData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(result.quantification == &amp;quot;?&amp;quot;)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function jumpToStructureOnChain(x)&lt;br /&gt;
{/*&lt;br /&gt;
	var link = gBarData.title + gBarData.ionmode[x];&lt;br /&gt;
	window.open(&amp;quot;http://133.242.136.63/wiki/Category:CS:&amp;quot; + link, &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(x + &amp;quot; =&amp;gt; &amp;quot; + link);&lt;br /&gt;
*/&lt;br /&gt;
	jumpToMassBank(gBarData.lipidclass, gBarData.chain, chart.adduct[x]);&lt;br /&gt;
//console.log(gBarData.lipidclass + &amp;quot; &amp;quot; + gBarData.chain + &amp;quot; &amp;quot; + chart.adduct[x]);&lt;br /&gt;
}&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2018-10-25T00:04:50Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// Last-Update: 2018/10/11&lt;br /&gt;
// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
importScript( 'MediaWiki:LipoqualityCommon.js' );&lt;br /&gt;
importScript( 'MediaWiki:LipoqualityGet.js'    );&lt;br /&gt;
importScript( 'MediaWiki:LipoqualitySearch.js' );&lt;br /&gt;
importScript( 'MediaWiki:LipoqualityChart.js'  );&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(lipoqulityInit); &lt;br /&gt;
&lt;br /&gt;
var gChartType;&lt;br /&gt;
&lt;br /&gt;
// 初期化 //////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function lipoqulityInit()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	// 検索、表示、チェックボタンを作成&lt;br /&gt;
		// 検索ボタン&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value    = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id       = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type     = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.disabled = true;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){&lt;br /&gt;
		var sampleSource = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
		var sampleType   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
		var lipidClass   = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
		search(sampleSource, sampleType, lipidClass);&lt;br /&gt;
	};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
		// グラフ表示ボタン&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = true;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart(getSelectedIDs())};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
		// チェックボタン&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.id    = &amp;quot;allswitch&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// コンポーネント初期化&lt;br /&gt;
	lipoqulityChartInit();&lt;br /&gt;
&lt;br /&gt;
	// コンボボックスの初期化&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	// 全データの取得&lt;br /&gt;
	retrieveAllDataFromText(hasRetrievedAllData);&lt;br /&gt;
}&lt;br /&gt;
// 全データの取得が完了した後の処理 /////////////////////////////////////&lt;br /&gt;
// return なし&lt;br /&gt;
function hasRetrievedAllData()&lt;br /&gt;
{&lt;br /&gt;
	// GETメソッドによる検索を行う場合の処理 /////////////////////////////&lt;br /&gt;
	var query  = window.location.search.substring(1);&lt;br /&gt;
	var params = query.split('&amp;amp;');&lt;br /&gt;
	var sampleSource = &amp;quot;All&amp;quot;;&lt;br /&gt;
	var sampleType   = &amp;quot;All&amp;quot;;&lt;br /&gt;
	var lipidClass   = &amp;quot;&amp;quot;;&lt;br /&gt;
	var chain        = &amp;quot;&amp;quot;;&lt;br /&gt;
	var chart        = &amp;quot;&amp;quot;;&lt;br /&gt;
	var species      = &amp;quot;&amp;quot;;&lt;br /&gt;
	var sampleName   = &amp;quot;&amp;quot;;&lt;br /&gt;
	// パラメータの取得&lt;br /&gt;
	// ss = SampleSource - デフォルトはAll&lt;br /&gt;
	// st = SampleType - デフォルトはAll&lt;br /&gt;
	// lc = LipidClass - デフォルトは空文字。この文字列が入っていないと、検索は行わない&lt;br /&gt;
	// chain = Lipid chain - chainグラフの表示には必須項目。16:0/16:0/16:0のようにスラッシュ区切り&lt;br /&gt;
	for(var i = 0; i &amp;lt; params.length; i++){&lt;br /&gt;
		var w = params[i].split('=');&lt;br /&gt;
		var name  = decodeURIComponent(w[0]);&lt;br /&gt;
		var value = decodeURIComponent(w[1]);&lt;br /&gt;
		if(name == &amp;quot;ss&amp;quot;){ // sample source&lt;br /&gt;
			sampleSource = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;st&amp;quot;){ // sample type&lt;br /&gt;
			sampleType = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;lc&amp;quot;){ // lipid class&lt;br /&gt;
			lipidClass = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;ct&amp;quot;){ // lipid chain&lt;br /&gt;
			chart = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;sp&amp;quot;){ // species&lt;br /&gt;
			species = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;sn&amp;quot;){ // sample name&lt;br /&gt;
			sampleName = value;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
// speciesが指定された場合、対象データ以外を削除する ///////////&lt;br /&gt;
	if(species.length &amp;gt; 0){&lt;br /&gt;
		var spReg = new RegExp(translateForReg(species), &amp;quot;i&amp;quot;);&lt;br /&gt;
		for(key in gAllData){&lt;br /&gt;
			if(!spReg.test(key)){ // speciesが合致するか&lt;br /&gt;
				delete gAllData[key];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
////////////////////////////////////////////////////////////////&lt;br /&gt;
	var index = lipidClass.indexOf(&amp;quot; &amp;quot;);&lt;br /&gt;
	if(index &amp;gt; 0){&lt;br /&gt;
		chain = lipidClass.substring(index+1);&lt;br /&gt;
		lipidClass = lipidClass.substring(0, index);&lt;br /&gt;
	} else {&lt;br /&gt;
		index = lipidClass.indexOf(&amp;quot;(&amp;quot;);&lt;br /&gt;
		if(index &amp;gt;= 0){&lt;br /&gt;
			chain = lipidClass.substring(index+1, lipidClass.length-1);&lt;br /&gt;
			lipidClass = lipidClass.substring(0, index);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(chart == &amp;quot;c&amp;quot; &amp;amp;&amp;amp; chain.length &amp;gt; 0){&lt;br /&gt;
		// lipidclass基準の棒グラフを表示&lt;br /&gt;
		selectCombobox([sampleSource, sampleType, lipidClass]);&lt;br /&gt;
		var result = retrieveChainData(sampleName, sampleSource, sampleType, lipidClass, chain); // speciesからsamplenameに変更&lt;br /&gt;
		if(result.x.length &amp;gt; 0){&lt;br /&gt;
			showChainChart(result);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	} else if(chart == &amp;quot;b&amp;quot; &amp;amp;&amp;amp; lipidClass.length &amp;gt; 0){&lt;br /&gt;
		// bar(棒グラフ)を表示&lt;br /&gt;
		selectCombobox([sampleSource, sampleType, lipidClass]);&lt;br /&gt;
		search(sampleSource, sampleType, lipidClass);&lt;br /&gt;
		if(document.getElementsByClassName(&amp;quot;results&amp;quot;).length &amp;gt; 0){&lt;br /&gt;
			document.getElementById('allswitch').click();&lt;br /&gt;
			document.getElementById('bar').checked = true;&lt;br /&gt;
			showChart(getSelectedIDs());&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('loading').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	// 検索ボタンは有効化しておく&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
}&lt;br /&gt;
function getSelectedIDs()&lt;br /&gt;
{&lt;br /&gt;
	var targets = [];&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets.push(boxes[i].value);&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return [];&lt;br /&gt;
	}&lt;br /&gt;
	return targets;&lt;br /&gt;
}&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param name カテゴリ名&lt;br /&gt;
// return なし&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// AJAXを使って、コンボボックスの選択項目を取得する&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// 指定されたコンボボックスの値をセットする /////////////////////////////////////&lt;br /&gt;
// param targets - 選択するSampleSource, SampleType, LipidClassの項目値&lt;br /&gt;
// return なし&lt;br /&gt;
function selectCombobox(targets)&lt;br /&gt;
{&lt;br /&gt;
	var ids = [&amp;quot;samplesource&amp;quot;, &amp;quot;sampletype&amp;quot;, &amp;quot;lipidclass&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
	// 一つでもコンボボックスの初期化が終わっていなければ、処理を後回しにする&lt;br /&gt;
	var counter = 1;&lt;br /&gt;
	for(var i = 0; i &amp;lt; ids.length; i ++)&lt;br /&gt;
		counter *= document.getElementById(ids[i]).options.length;&lt;br /&gt;
	if(counter == 0){&lt;br /&gt;
		window.setTimeout( function() { selectCombobox(targets) }, 50 );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// コンボボックスの値をセットする&lt;br /&gt;
	for(var i = 0; i &amp;lt; ids.length; i ++){&lt;br /&gt;
		var cb = document.getElementById(ids[i]);&lt;br /&gt;
		for(var j = 0; j &amp;lt; cb.options.length; j ++){&lt;br /&gt;
			if(cb.options[j].value == targets[i]){&lt;br /&gt;
				cb.selectedIndex = j;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param sampleSource - 検索対象のSampleSource&lt;br /&gt;
// param sampleType   - 検索対象のSampleType&lt;br /&gt;
// param lipidClass   - 検索対象のLipidClass&lt;br /&gt;
// return なし&lt;br /&gt;
function search(sampleSource, sampleType, lipidClass)&lt;br /&gt;
{&lt;br /&gt;
	// 検索ボタン等を無効化しておく&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled      = true;&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;)  .disabled      = true;&lt;br /&gt;
	document.getElementById('hit')         .innerHTML     = &amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;)   .style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// 「検索中」を表示&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// 検索を行う&lt;br /&gt;
	var result = lipoqualitySearch(sampleSource, sampleType, lipidClass);&lt;br /&gt;
//	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	// 過去の検索結果を削除する&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// 「検索中」を非表示&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
//	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// チェックボックスを並べるため、最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	// チェックボックスの作成&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i][&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	// 検索ボタンを有効化&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// チェックボックスの状態に応じて、グラフ表示ボタンを有効/無効化する /////////////////&lt;br /&gt;
// return なし&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
// すべてのチェックボックスをチェックする/アンチェックする //////////////////////&lt;br /&gt;
// return なし&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// チェックするか、アンチェックするかを調べる&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
&lt;br /&gt;
	// チェック状態を変更する&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:Database</id>
		<title>Lipoquality:Database</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:Database"/>
				<updated>2017-11-14T04:58:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#includejs:Lipoquality.js}}&lt;br /&gt;
&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample source&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;samplesource&amp;quot; id=&amp;quot;samplesource&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample type&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;sampletype&amp;quot; id=&amp;quot;sampletype&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lipid class&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;lipidclass&amp;quot; id=&amp;quot;lipidclass&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align: bottom&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;loading&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Loading all data. Please wait.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;retrieving&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Retrieving...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;resetZoom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: right&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;optionHeader&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;cutoff&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- sortable list --&amp;gt;&amp;lt;div id=&amp;quot;sortableList&amp;quot; style=&amp;quot;display: none; overflow-y: scroll; border: 1px solid #000000; padding: 3px; height: 250px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id=&amp;quot;rate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- barchart or heatmap --&amp;gt;&amp;lt;div id=&amp;quot;container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- piechiart --&amp;gt;&amp;lt;div id=&amp;quot;pieContainer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;hit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar&amp;quot; value=&amp;quot;bar&amp;quot; checked=&amp;quot;yes&amp;quot;}}{{#formtag:label|for=&amp;quot;bar&amp;quot;|barchart(individual)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar_bundle&amp;quot; value=&amp;quot;bar_bundle&amp;quot;}}{{#formtag:label|for=&amp;quot;bar_bundle&amp;quot;|barchart(bundle)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;heatmap&amp;quot; value=&amp;quot;heatmap&amp;quot;}}{{#formtag:label|for=&amp;quot;heatmap&amp;quot;|heatmap}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;check&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;searching&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Searching...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;result&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:Database</id>
		<title>Lipoquality:Database</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:Database"/>
				<updated>2017-11-14T04:56:28Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#includejs:LipoqualityA.js}}&lt;br /&gt;
&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample source&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;samplesource&amp;quot; id=&amp;quot;samplesource&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample type&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;sampletype&amp;quot; id=&amp;quot;sampletype&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lipid class&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;lipidclass&amp;quot; id=&amp;quot;lipidclass&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align: bottom&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;loading&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Loading all data. Please wait.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;retrieving&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Retrieving...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;resetZoom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: right&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;optionHeader&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;cutoff&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- sortable list --&amp;gt;&amp;lt;div id=&amp;quot;sortableList&amp;quot; style=&amp;quot;display: none; overflow-y: scroll; border: 1px solid #000000; padding: 3px; height: 250px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id=&amp;quot;rate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- barchart or heatmap --&amp;gt;&amp;lt;div id=&amp;quot;container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- piechiart --&amp;gt;&amp;lt;div id=&amp;quot;pieContainer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;hit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar&amp;quot; value=&amp;quot;bar&amp;quot; checked=&amp;quot;yes&amp;quot;}}{{#formtag:label|for=&amp;quot;bar&amp;quot;|barchart(individual)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar_bundle&amp;quot; value=&amp;quot;bar_bundle&amp;quot;}}{{#formtag:label|for=&amp;quot;bar_bundle&amp;quot;|barchart(bundle)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;heatmap&amp;quot; value=&amp;quot;heatmap&amp;quot;}}{{#formtag:label|for=&amp;quot;heatmap&amp;quot;|heatmap}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;check&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;searching&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Searching...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;result&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-11-14T04:56:05Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
importScript( 'MediaWiki:LipoqualityCommon.js' );&lt;br /&gt;
importScript( 'MediaWiki:LipoqualityGet.js'    );&lt;br /&gt;
importScript( 'MediaWiki:LipoqualitySearch.js' );&lt;br /&gt;
importScript( 'MediaWiki:LipoqualityChart.js'  );&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(lipoqulityInit); &lt;br /&gt;
&lt;br /&gt;
var gChartType;&lt;br /&gt;
&lt;br /&gt;
// 初期化 //////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function lipoqulityInit()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	// 検索、表示、チェックボタンを作成&lt;br /&gt;
		// 検索ボタン&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value    = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id       = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type     = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.disabled = true;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){&lt;br /&gt;
		var sampleSource = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
		var sampleType   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
		var lipidClass   = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
		search(sampleSource, sampleType, lipidClass);&lt;br /&gt;
	};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
		// グラフ表示ボタン&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = true;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart(getSelectedIDs())};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
		// チェックボタン&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.id    = &amp;quot;allswitch&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// コンポーネント初期化&lt;br /&gt;
	lipoqulityChartInit();&lt;br /&gt;
&lt;br /&gt;
	// コンボボックスの初期化&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	// 全データの取得&lt;br /&gt;
	retrieveAllDataFromText(hasRetrievedAllData);&lt;br /&gt;
}&lt;br /&gt;
// 全データの取得が完了した後の処理 /////////////////////////////////////&lt;br /&gt;
// return なし&lt;br /&gt;
function hasRetrievedAllData()&lt;br /&gt;
{&lt;br /&gt;
	// GETメソッドによる検索を行う場合の処理 /////////////////////////////&lt;br /&gt;
	var query  = window.location.search.substring(1);&lt;br /&gt;
	var params = query.split('&amp;amp;');&lt;br /&gt;
	var sampleSource = &amp;quot;All&amp;quot;;&lt;br /&gt;
	var sampleType   = &amp;quot;All&amp;quot;;&lt;br /&gt;
	var lipidClass   = &amp;quot;&amp;quot;;&lt;br /&gt;
	var chain        = &amp;quot;&amp;quot;;&lt;br /&gt;
	// パラメータの取得&lt;br /&gt;
	// ss = SampleSource - デフォルトはAll&lt;br /&gt;
	// st = SampleType - デフォルトはAll&lt;br /&gt;
	// lc = LipidClass - デフォルトは空文字。この文字列が入っていないと、検索は行わない&lt;br /&gt;
	// chain = Lipid chain - chainグラフの表示には必須項目。16:0/16:0/16:0のようにスラッシュ区切り&lt;br /&gt;
	for(var i = 0; i &amp;lt; params.length; i++){&lt;br /&gt;
		var w = params[i].split('=');&lt;br /&gt;
		var name  = decodeURIComponent(w[0]);&lt;br /&gt;
		var value = decodeURIComponent(w[1]);&lt;br /&gt;
		if(name == &amp;quot;ss&amp;quot;){ // sample source&lt;br /&gt;
			sampleSource = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;st&amp;quot;){ // sample type&lt;br /&gt;
			sampleType = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;lc&amp;quot;){ // lipid class&lt;br /&gt;
			lipidClass = value;&lt;br /&gt;
&lt;br /&gt;
		} else if(name == &amp;quot;chain&amp;quot;){ // lipid chain&lt;br /&gt;
			chain = value;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(chain.length &amp;gt; 0){&lt;br /&gt;
		// lipidclass基準の棒グラフを表示&lt;br /&gt;
		selectCombobox([sampleSource, sampleType, lipidClass]);&lt;br /&gt;
		var result = retrieveChainData(sampleSource, sampleType, lipidClass, chain);&lt;br /&gt;
		if(result.x.length &amp;gt; 0){&lt;br /&gt;
			showChainChart(result);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	} else if(lipidClass.length &amp;gt; 0){&lt;br /&gt;
		// bar(棒グラフ)を表示&lt;br /&gt;
		selectCombobox([sampleSource, sampleType, lipidClass]);&lt;br /&gt;
		search(sampleSource, sampleType, lipidClass);&lt;br /&gt;
		if(document.getElementsByClassName(&amp;quot;results&amp;quot;).length &amp;gt; 0){&lt;br /&gt;
			document.getElementById('allswitch').click();&lt;br /&gt;
			document.getElementById('bar').checked = true;&lt;br /&gt;
			showChart(getSelectedIDs());&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('loading').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	// 検索ボタンは有効化しておく&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
}&lt;br /&gt;
function getSelectedIDs()&lt;br /&gt;
{&lt;br /&gt;
	var targets = [];&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets.push(boxes[i].value);&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return [];&lt;br /&gt;
	}&lt;br /&gt;
	return targets;&lt;br /&gt;
}&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param name カテゴリ名&lt;br /&gt;
// return なし&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// AJAXを使って、コンボボックスの選択項目を取得する&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// 指定されたコンボボックスの値をセットする /////////////////////////////////////&lt;br /&gt;
// param targets - 選択するSampleSource, SampleType, LipidClassの項目値&lt;br /&gt;
// return なし&lt;br /&gt;
function selectCombobox(targets)&lt;br /&gt;
{&lt;br /&gt;
	var ids = [&amp;quot;samplesource&amp;quot;, &amp;quot;sampletype&amp;quot;, &amp;quot;lipidclass&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
	// 一つでもコンボボックスの初期化が終わっていなければ、処理を後回しにする&lt;br /&gt;
	var counter = 1;&lt;br /&gt;
	for(var i = 0; i &amp;lt; ids.length; i ++)&lt;br /&gt;
		counter *= document.getElementById(ids[i]).options.length;&lt;br /&gt;
	if(counter == 0){&lt;br /&gt;
		window.setTimeout( function() { selectCombobox(targets) }, 50 );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// コンボボックスの値をセットする&lt;br /&gt;
	for(var i = 0; i &amp;lt; ids.length; i ++){&lt;br /&gt;
		var cb = document.getElementById(ids[i]);&lt;br /&gt;
		for(var j = 0; j &amp;lt; cb.options.length; j ++){&lt;br /&gt;
			if(cb.options[j].value == targets[i]){&lt;br /&gt;
				cb.selectedIndex = j;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param sampleSource - 検索対象のSampleSource&lt;br /&gt;
// param sampleType   - 検索対象のSampleType&lt;br /&gt;
// param lipidClass   - 検索対象のLipidClass&lt;br /&gt;
// return なし&lt;br /&gt;
function search(sampleSource, sampleType, lipidClass)&lt;br /&gt;
{&lt;br /&gt;
	// 検索ボタン等を無効化しておく&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled      = true;&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;)  .disabled      = true;&lt;br /&gt;
	document.getElementById('hit')         .innerHTML     = &amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;)   .style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// 「検索中」を表示&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// 検索を行う&lt;br /&gt;
	var result = lipoqualitySearch(sampleSource, sampleType, lipidClass);&lt;br /&gt;
//	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	// 過去の検索結果を削除する&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// 「検索中」を非表示&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
//	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// チェックボックスを並べるため、最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	// チェックボックスの作成&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i][&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	// 検索ボタンを有効化&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// チェックボックスの状態に応じて、グラフ表示ボタンを有効/無効化する /////////////////&lt;br /&gt;
// return なし&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
// すべてのチェックボックスをチェックする/アンチェックする //////////////////////&lt;br /&gt;
// return なし&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// チェックするか、アンチェックするかを調べる&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
&lt;br /&gt;
	// チェック状態を変更する&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js</id>
		<title>MediaWiki:LipoqualitySearch.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualitySearch.js"/>
				<updated>2017-11-14T04:55:43Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: Created page with &amp;quot;// 対象項目からデータを検索する //////////////////////////////////////////////////////// // param sampleSource - sample source // param sampleType - sample type ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 対象項目からデータを検索する ////////////////////////////////////////////////////////&lt;br /&gt;
// param sampleSource - sample source&lt;br /&gt;
// param sampleType - sample type&lt;br /&gt;
// param lipidClass - lipid class&lt;br /&gt;
// return 検索結果&lt;br /&gt;
function lipoqualitySearch(sampleSource, sampleType, lipidClass)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
	var ssReg = new RegExp(translateForReg(sampleSource));&lt;br /&gt;
	var stReg = new RegExp(translateForReg(sampleType));&lt;br /&gt;
&lt;br /&gt;
	// 検索&lt;br /&gt;
	var result = [];&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
//console.log(&amp;quot;length:&amp;quot; + j + &amp;quot;,&amp;quot; + gAllData[key].length);&lt;br /&gt;
			// 対象sample source, sample typeかチェック&lt;br /&gt;
//console.log(&amp;quot;st:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;]));&lt;br /&gt;
			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
//console.log(&amp;quot;search:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;].length);&lt;br /&gt;
			var found = false;&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				// 対象lipid classかチェック&lt;br /&gt;
//console.log(&amp;quot;hit:&amp;quot; + key + &amp;quot;:&amp;quot; + gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] + &amp;quot;==&amp;quot; + lipidClass);&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidClass){&lt;br /&gt;
					found = true;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// 対象だったので結果に格納する&lt;br /&gt;
			if(found){&lt;br /&gt;
				result[i] = [];&lt;br /&gt;
				result[i][&amp;quot;title&amp;quot;]       = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;] + &amp;quot;/&amp;quot; + lipidClass;&lt;br /&gt;
				result[i][&amp;quot;Method link&amp;quot;] = gAllData[key][j][&amp;quot;Method link&amp;quot;];&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// 指定されたID群をもとに、グラフ全般用のデータを取得する ///////////////////////////////&lt;br /&gt;
// param ids       - 対象データのID。「SampleSource/SampleType/LipidClass」で構成される。&lt;br /&gt;
// param chartType -　未使用&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChartData(ids, chartType)&lt;br /&gt;
{&lt;br /&gt;
	// '#7fbfff'がbarchartのデフォルト色と似ているので排除する&lt;br /&gt;
	var pieColors = ['#ff7f7f','#7f7fff','#7fff7f','#ff7fbf','#bfff7f','#ff7fff','#7fffff','#000000','#bf7fff','#7fffbf','#ffbf7f','#808080'];&lt;br /&gt;
&lt;br /&gt;
	var result     = {};&lt;br /&gt;
	var data       = {};&lt;br /&gt;
	var colorKeys  = {};&lt;br /&gt;
	var colorIndex = 0;&lt;br /&gt;
	// id毎にデータを取得&lt;br /&gt;
	result.x   = []; // Xラベル&lt;br /&gt;
	result.map = []; // チャートデータ&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		var w = ids[index].split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var samplesource = w[0];&lt;br /&gt;
		var sampletype   = w[1];&lt;br /&gt;
		var lipidclass   = w[2];&lt;br /&gt;
&lt;br /&gt;
		result.map[index]     = {}; // 通常チャート用&lt;br /&gt;
		result.map[index].pie = []; // パイチャート用&lt;br /&gt;
		var pieKeys = {};&lt;br /&gt;
		var pieIndex = 0;&lt;br /&gt;
		for(key in gAllData){ // sample source&lt;br /&gt;
			if(samplesource != key)&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			for(var j = 0; j &amp;lt; gAllData[key].length; j ++){ // sample name&lt;br /&gt;
				if(sampletype != gAllData[key][j][&amp;quot;Sample name&amp;quot;])&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				// 同一のLipidSuperClassのみ対象とする&lt;br /&gt;
				// 通常チャートは同一LipidClassのみだが、パイチャートにおいて意味を持つ&lt;br /&gt;
				var targetLipidSuperClass = undefined;&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] == lipidclass){&lt;br /&gt;
						targetLipidSuperClass = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;];&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// 各lipid classのチェック&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;] != targetLipidSuperClass) // superクラスが違うものは対象外&lt;br /&gt;
						continue;&lt;br /&gt;
&lt;br /&gt;
					var lc = gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;];&lt;br /&gt;
					// lipid classごとに色を変える&lt;br /&gt;
					if(colorKeys[lc] == undefined){&lt;br /&gt;
						colorKeys[lc] = colorIndex++;&lt;br /&gt;
					}&lt;br /&gt;
					// パイチャート用データ&lt;br /&gt;
					if(pieKeys[lc] == undefined){&lt;br /&gt;
						pieKeys[lc] = pieIndex++;&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]] = {};&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].name = lc; // type&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].color = pieColors[colorKeys[lc]%pieColors.length];&lt;br /&gt;
						result.map[index].pie[pieKeys[lc]].y = 0;&lt;br /&gt;
					}&lt;br /&gt;
					result.map[index].pie[pieKeys[lc]].y += parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
&lt;br /&gt;
					if(lc == lipidclass){ // lipid classが対象のものなら、通常チャート用にデータを格納する&lt;br /&gt;
						result.map[index].title = samplesource + &amp;quot;/&amp;quot; + sampletype + &amp;quot;/&amp;quot; + lipidclass;&lt;br /&gt;
						result.map[index].meta  = {};&lt;br /&gt;
						for(meta in gAllData[key][j]){// 全メタ情報&lt;br /&gt;
							if(meta != &amp;quot;data&amp;quot;)&lt;br /&gt;
								result.map[index].meta[meta] = gAllData[key][j][meta];&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]); // chain文字列を取得する&lt;br /&gt;
						// すべてのデータでX軸を統一するため、いったんdata配列にデータを格納する&lt;br /&gt;
						if(data[lipidType] == undefined){ // まだ出てきていないchainならばX軸ラベルに追加する&lt;br /&gt;
							data[lipidType] = [];&lt;br /&gt;
							result.x.push(lipidType);&lt;br /&gt;
						}&lt;br /&gt;
						data[lipidType][index] = gAllData[key][j][&amp;quot;data&amp;quot;][k];&lt;br /&gt;
&lt;br /&gt;
						//Logger.log(filename + &amp;quot;/&amp;quot; + tabname + &amp;quot;/&amp;quot; + type);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// chainの小さい順に並べ替える&lt;br /&gt;
	result.x.sort(function(a1, a2){&lt;br /&gt;
		// chainの数による比較&lt;br /&gt;
		var lipidClass1 = a1.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		var lipidClass2 = a2.split(&amp;quot;/&amp;quot;);&lt;br /&gt;
		if(lipidClass1.length &amp;lt; lipidClass2.length) return -1;&lt;br /&gt;
		if(lipidClass1.length &amp;gt; lipidClass2.length) return 1;&lt;br /&gt;
		// chainの長さと二重結合数による比較&lt;br /&gt;
		for(var i = 0; i &amp;lt; lipidClass1.length; i ++){&lt;br /&gt;
			var lc1 = parseInt(lipidClass1[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			var lc2 = parseInt(lipidClass2[i].replace(/:/, &amp;quot;&amp;quot;));&lt;br /&gt;
			if(lc1 &amp;lt; lc2) return -1;&lt;br /&gt;
			if(lc1 &amp;gt; lc2) return 1;&lt;br /&gt;
		}&lt;br /&gt;
		return 0;&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// データを整形&lt;br /&gt;
	var maxOfAll = 0;&lt;br /&gt;
	for(var index = 0; index &amp;lt; ids.length; index ++){&lt;br /&gt;
		result.map[index].data = [];&lt;br /&gt;
		var max = 0;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++){&lt;br /&gt;
			result.map[index].data[j] = [];&lt;br /&gt;
&lt;br /&gt;
			if(data[result.x[j]][index] == undefined){ // このデータには、対象chainの情報がないため、ダミーを格納しておく&lt;br /&gt;
				data[result.x[j]][index] = {&lt;br /&gt;
					&amp;quot;Intensity&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
					&amp;quot;Formula&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;InChIKey&amp;quot; :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;SMILES&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;RT[min]&amp;quot;  :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;m/z&amp;quot;      :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;Adduct&amp;quot;   :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;TI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MI&amp;quot;       :&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;MSMS&amp;quot;     :&amp;quot;&amp;quot;&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Intensityの処理&lt;br /&gt;
			var inte = parseFloat(data[result.x[j]][index][&amp;quot;Intensity&amp;quot;]);&lt;br /&gt;
			if(inte &amp;gt; max)&lt;br /&gt;
				max = inte;&lt;br /&gt;
			result.map[index].data[j].push(inte);&lt;br /&gt;
&lt;br /&gt;
			// メタ情報の格納&lt;br /&gt;
			result.map[index].data[j].meta = {};&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Formula&amp;quot;]  = data[result.x[j]][index][&amp;quot;Formula&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;InChIKey&amp;quot;] = data[result.x[j]][index][&amp;quot;InChIKey&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;SMILES&amp;quot;]   = data[result.x[j]][index][&amp;quot;SMILES&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;RT[min]&amp;quot;]  = data[result.x[j]][index][&amp;quot;RT[min]&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;m/z&amp;quot;]      = data[result.x[j]][index][&amp;quot;m/z&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;Adduct&amp;quot;]   = data[result.x[j]][index][&amp;quot;Adduct&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;TI&amp;quot;]       = data[result.x[j]][index][&amp;quot;TI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MI&amp;quot;]       = data[result.x[j]][index][&amp;quot;MI&amp;quot;];&lt;br /&gt;
			result.map[index].data[j].meta[&amp;quot;MSMS&amp;quot;]     = data[result.x[j]][index][&amp;quot;MSMS&amp;quot;];&lt;br /&gt;
		}&lt;br /&gt;
		for(var j = 0; j &amp;lt; result.x.length; j ++) // 意味ある？&lt;br /&gt;
			result.map[index].data[j][0] = result.map[index].data[j][0];&lt;br /&gt;
&lt;br /&gt;
		// 全体での最大Intensityを見つけ出す&lt;br /&gt;
		result.map[index].max = max;&lt;br /&gt;
		if(maxOfAll &amp;lt; max)&lt;br /&gt;
			maxOfAll = max;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll = maxOfAll;&lt;br /&gt;
&lt;br /&gt;
	result.title = lipidclass;&lt;br /&gt;
	// アルキル、ジアシル用に配列にしておく&lt;br /&gt;
	// -&amp;gt; 完全に別々になったので、無意味に&lt;br /&gt;
	var array = [];&lt;br /&gt;
	array.push(result);&lt;br /&gt;
&lt;br /&gt;
	return array;&lt;br /&gt;
}&lt;br /&gt;
// 文字列を正規表現文字列に変換する ////////////////////////////////////////&lt;br /&gt;
// param str 対象文字列&lt;br /&gt;
// return 正規表現用文字列&lt;br /&gt;
function translateForReg(str)&lt;br /&gt;
{&lt;br /&gt;
	// ()はエスケープする&lt;br /&gt;
	str = str.replace(&amp;quot;(&amp;quot;,&amp;quot;\\(&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
	str = str.replace(&amp;quot;)&amp;quot;,&amp;quot;\\)&amp;quot;,&amp;quot;g&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// Allはすべてが対象&lt;br /&gt;
	if(str == &amp;quot;All&amp;quot;)&lt;br /&gt;
		str = &amp;quot;.*&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		str = &amp;quot;^&amp;quot; + str + &amp;quot;$&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	return str;&lt;br /&gt;
}&lt;br /&gt;
// chainグラフ用データの取得 ///////////////////////////////////////////////&lt;br /&gt;
// param samplesource - Sample Source&lt;br /&gt;
// param sampletype - Sample Type&lt;br /&gt;
// param lipidclass - Lipid class&lt;br /&gt;
// param chain - Lipid chain&lt;br /&gt;
// return 対象データ&lt;br /&gt;
function retrieveChainData(samplesource, sampletype, lipidclass, chain)&lt;br /&gt;
{&lt;br /&gt;
	// sample sourceとsample typeはAllがあるため、正規表現を用いてマッチングを行う&lt;br /&gt;
	var ssReg = new RegExp(translateForReg(samplesource));&lt;br /&gt;
	var stReg = new RegExp(translateForReg(sampletype));&lt;br /&gt;
&lt;br /&gt;
	var result       = {};&lt;br /&gt;
	var maxOfAll     = 0;&lt;br /&gt;
	var index        = 0;&lt;br /&gt;
	var legends      = {};&lt;br /&gt;
	result.title     = lipidclass + chain&lt;br /&gt;
	result.x	     = [];&lt;br /&gt;
	result.intensity = [];&lt;br /&gt;
	for(key in gAllData){&lt;br /&gt;
		if(!ssReg.test(key)) // sample sourceが合致するか&lt;br /&gt;
			continue;&lt;br /&gt;
&lt;br /&gt;
		for(var j = 0; j &amp;lt; gAllData[key].length; j ++){&lt;br /&gt;
			if(!stReg.test(gAllData[key][j][&amp;quot;Sample name&amp;quot;])) // sample typeが合致するか&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			// 特定のlipid class, lipid chainのみを対象とする&lt;br /&gt;
			for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
				if(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid class&amp;quot;] != lipidclass)&lt;br /&gt;
					continue;&lt;br /&gt;
&lt;br /&gt;
				// セル（Type）の走査&lt;br /&gt;
				for(var k = 0; k &amp;lt; gAllData[key][j][&amp;quot;data&amp;quot;].length; k ++){&lt;br /&gt;
					if(!gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Lipid super class&amp;quot;]) // 空データ&lt;br /&gt;
						continue;&lt;br /&gt;
&lt;br /&gt;
					var lipidType = getLipidType(gAllData[key][j][&amp;quot;data&amp;quot;][k]);&lt;br /&gt;
					var legend = key + &amp;quot;/&amp;quot; + gAllData[key][j][&amp;quot;Sample name&amp;quot;];&lt;br /&gt;
					if(!legends[legend] &amp;amp;&amp;amp; lipidType == chain){ // legend名が複数回被る可能性があるので、すでに格納済みのlegendは処理しない&lt;br /&gt;
						// 対象&lt;br /&gt;
						result.x[index] = legend;&lt;br /&gt;
						result.intensity[index] = parseFloat(gAllData[key][j][&amp;quot;data&amp;quot;][k][&amp;quot;Intensity&amp;quot;]); // intensity&lt;br /&gt;
						if(maxOfAll &amp;lt; result.intensity[index]) // 全体での最大Intensityを調べる&lt;br /&gt;
							maxOfAll = result.intensity[index];&lt;br /&gt;
						index ++;&lt;br /&gt;
						legends[legend] = true;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	result.maxOfAll = maxOfAll;&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
// lipid chainを構築して返す。chain情報はSN1～SN4まで分かれており、さらにSN1が空の場合はTotal chainを使用する ///&lt;br /&gt;
// param array - 列データ&lt;br /&gt;
// return lipid chain文字列。16:0, 16:0/16:0など&lt;br /&gt;
function getLipidType(array)&lt;br /&gt;
{&lt;br /&gt;
	// SN1からSN4までのchainを連結させる&lt;br /&gt;
	var lipidType = array[&amp;quot;SN1 chain&amp;quot;];&lt;br /&gt;
	for(var l = 2; l &amp;lt;= 4; l ++){&lt;br /&gt;
		if(array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;].length &amp;gt; 0)&lt;br /&gt;
			lipidType += &amp;quot;/&amp;quot; + array[&amp;quot;SN&amp;quot; + l + &amp;quot; chain&amp;quot;];&lt;br /&gt;
		else&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
	// SN1が空だった場合はTotalChainを使用する&lt;br /&gt;
	if(lipidType.length == 0)&lt;br /&gt;
		lipidType = array[&amp;quot;Total chain&amp;quot;];&lt;br /&gt;
	return lipidType;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualityGet.js</id>
		<title>MediaWiki:LipoqualityGet.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualityGet.js"/>
				<updated>2017-11-14T04:55:25Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: Created page with &amp;quot;var gAllData = null;  // GoogleDocから全データを取得する(最初の一回だけ) function retrieveAllDataFromGoogleDoc() { 	var url = 'https://script.google.com/macr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var gAllData = null;&lt;br /&gt;
&lt;br /&gt;
// GoogleDocから全データを取得する(最初の一回だけ)&lt;br /&gt;
function retrieveAllDataFromGoogleDoc()&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?q=all&amp;amp;callback=hasAllDataRetrievedFromGoogleDoc';&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
function hasAllDataRetrievedFromGoogleDoc(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
&lt;br /&gt;
	// データを整形し、gAllDataへ渡す。&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// テキストデータから全データを取得する(最初の一回だけ)&lt;br /&gt;
// param callback - データ取得完了時に呼び出すコールバック関数&lt;br /&gt;
// return なし&lt;br /&gt;
function retrieveAllDataFromText(callback)&lt;br /&gt;
{&lt;br /&gt;
//	var files = [&amp;quot;Cell_Nontarget-Cell_3T_Wild_N.txt&amp;quot;, &amp;quot;Cell_Nontarget-Cell_3T_Wild_P.txt&amp;quot;];&lt;br /&gt;
	var url = '/lipo/json.txt';&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				gAllData = JSON.parse(this.response);&lt;br /&gt;
				callback(callback);&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('Retrieve data failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// AJAXを使用して、全データを取得する&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualityCommon.js</id>
		<title>MediaWiki:LipoqualityCommon.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualityCommon.js"/>
				<updated>2017-11-14T04:54:56Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: Created page with &amp;quot;// XSS対策用 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// function escape(text) { 	if(isFinite(text)) 		r...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:LipoqualityChart.js</id>
		<title>MediaWiki:LipoqualityChart.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:LipoqualityChart.js"/>
				<updated>2017-11-14T04:54:42Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: Created page with &amp;quot;// 定数  const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;; const MARGIN = 30;  var barColor = DEFAULT_BAR_COLOR;  // バーチャート（バンドル）のX軸ラベル変更用 var leg...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 定数 &lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
&lt;br /&gt;
// バーチャート（バンドル）のX軸ラベル変更用&lt;br /&gt;
var legendOptions = [&amp;quot;Sample name&amp;quot;,&amp;quot;Sample source&amp;quot;,&amp;quot;Sample type&amp;quot;,&amp;quot;Tissue&amp;quot;,&amp;quot;Treatment&amp;quot;,&amp;quot;Extraction&amp;quot;,&amp;quot;LC type&amp;quot;,&amp;quot;MS type&amp;quot;,&amp;quot;Ion mode&amp;quot;,&amp;quot;Quantification&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
// グローバル変数&lt;br /&gt;
var gBarData;&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function lipoqulityChartInit()&lt;br /&gt;
{&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	// ウィンドウサイズが変更されたら、チャートもリサイズする&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		if(document.getElementById(&amp;quot;pieContainer&amp;quot;).style.display == &amp;quot;none&amp;quot;)&lt;br /&gt;
			pieWidth = 0;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
&lt;br /&gt;
	} else if(gChartType == &amp;quot;chain&amp;quot;){&lt;br /&gt;
		// chain&lt;br /&gt;
		var height = 500;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		$(&amp;quot;#container0&amp;quot;).highcharts().setSize(width, height);&lt;br /&gt;
&lt;br /&gt;
	} else {&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
// 指定されたIDを持つDOMの全子ノードを削除する&lt;br /&gt;
// param id - 対象ID&lt;br /&gt;
function removeAllChild(id)&lt;br /&gt;
{&lt;br /&gt;
	var dom = document.getElementById(id);&lt;br /&gt;
	for(var i = dom.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		dom.removeChild(dom.childNodes[i]);&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// すべてのチャートの起点となる &lt;br /&gt;
function showChart(targets)&lt;br /&gt;
{&lt;br /&gt;
	if(targets.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// 以前の結果(ソートリスト、カットオフ、パイチャート等)を削除&lt;br /&gt;
	removeAllChild(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;optionHeader&amp;quot;);	&lt;br /&gt;
	removeAllChild(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;pieContainer&amp;quot;);&lt;br /&gt;
	removeAllChild(&amp;quot;container&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// 「取得中」を表示&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	var result = retrieveChartData(targets, chartType);&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id        = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type      = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value     = 0;&lt;br /&gt;
	cutoffText.min       = 0;&lt;br /&gt;
	cutoffText.max       = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width     = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
&lt;br /&gt;
	// 表示ボタン、チャートdom等1を表示&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	// カットオフ値を考慮&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){ // チェックボックスにチェックがついていれば表示対象&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked) // 相対値か絶対値か&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){ // 相対値でのY軸タイトル&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else { // 絶対値でのY軸タイトル&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create &amp;quot;ignore 0-intensity&amp;quot; button&lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create &amp;quot;sortable list&amp;quot;&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
	// 凡例の切り替えを行うコンボボックス&lt;br /&gt;
	var changeLegend = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var legendLabel = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	legendLabel.innerHTML = &amp;quot;Legend&amp;quot;;&lt;br /&gt;
	changeLegend.appendChild(legendLabel);&lt;br /&gt;
	var selectLegend = document.createElement(&amp;quot;select&amp;quot;);&lt;br /&gt;
	selectLegend.id  = &amp;quot;selectLegend&amp;quot;;&lt;br /&gt;
	for(var i = 0; i &amp;lt; legendOptions.length; i ++){&lt;br /&gt;
		var option = document.createElement('option');&lt;br /&gt;
		option.setAttribute(&amp;quot;value&amp;quot;, legendOptions[i]);&lt;br /&gt;
		if(legendOptions[i] == &amp;quot;Treatment&amp;quot;)&lt;br /&gt;
			option.setAttribute(&amp;quot;selected&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
		option.innerHTML = legendOptions[i];&lt;br /&gt;
		selectLegend.appendChild(option);&lt;br /&gt;
	}&lt;br /&gt;
	selectLegend.onchange = function(e){&lt;br /&gt;
		var index = document.getElementById(&amp;quot;selectLegend&amp;quot;).selectedIndex;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			chart[0].series[i].update({name:chart[0].meta[i][legendOptions[index]]}, false);&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].redraw(false);&lt;br /&gt;
	}&lt;br /&gt;
	changeLegend.appendChild(selectLegend);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData   = [];&lt;br /&gt;
	chart      = [];&lt;br /&gt;
	piechart   = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var meta        = [];&lt;br /&gt;
	var root        = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	// データの整理&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0) // 一番最初の単位を基準とする&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){ // 基準の単位と違う単位を発見&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		data[i]     = [];&lt;br /&gt;
		srcdata[i]  = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)]; // 相対値を計算&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]); // もともとの値を計算&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]); // X軸ラベル&lt;br /&gt;
			var type       = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // LBG + lipid class + chain&lt;br /&gt;
		}&lt;br /&gt;
		meta[i] = result[0].map[i].meta;&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Treatment&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				jumpToStructureOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data                = data;&lt;br /&gt;
	chart[0].srcdata             = srcdata;&lt;br /&gt;
	chart[0].max                 = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels             = xLabels;&lt;br /&gt;
	chart[0].quantification      = unitType;&lt;br /&gt;
	chart[0].meta                = meta;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量/相対量を切り替えるチェックボックス&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// JCBLの構造ページへ飛ぶ&lt;br /&gt;
function jumpToStructureOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
// 全バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// バーチャートデータの切り替え（表示/非表示、0-intensityで呼ばれる) //////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
//console.log(result);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
	// パイチャートの表示/非表示の切り替え&lt;br /&gt;
	var switchPieHidden = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var hiddenButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
	hiddenButton.id = &amp;quot;switchPieHidden&amp;quot;;&lt;br /&gt;
	hiddenButton.onclick = function(e){&lt;br /&gt;
		var pieContainer = document.getElementById(&amp;quot;pieContainer&amp;quot;);&lt;br /&gt;
		if(pieContainer.style.display == &amp;quot;none&amp;quot;){&lt;br /&gt;
			pieContainer.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
		} else {&lt;br /&gt;
			pieContainer.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;show piechart(s)&amp;quot;);;&lt;br /&gt;
		}&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	}&lt;br /&gt;
	switchPieHidden.appendChild(hiddenButton);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
			var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							// 全バーチャートの拡大率を統一する&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					jumpToStructureOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data                = data;&lt;br /&gt;
		chart[i].srcdata             = srcdata;&lt;br /&gt;
		chart[i].max                 = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels             = xLabels;&lt;br /&gt;
		chart[i].quantification      = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id  = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.Intensity ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						// パイチャートをクリックしたら、別lipidlcassへ切り替える&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = [];&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets.push(w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType);&lt;br /&gt;
						}&lt;br /&gt;
						showChart(targets);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量/相対量を切り替えるチェックボックス&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// JCBLの構造ページへ飛ぶ&lt;br /&gt;
function jumpToStructureOnHeatmap(seq, x, y)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップデータの切り替え（表示/非表示、0-intensityで呼ばれる) ////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param index - 何番目のデータか(おそらく0のみ)&lt;br /&gt;
// param seq - 順番を格納した配列&lt;br /&gt;
// return なし&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	// カットオフ値の考慮&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data           = [];&lt;br /&gt;
	var yLabels        = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	// データのセット&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)]; // 相対値の計算&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k].meta[&amp;quot;InChIKey&amp;quot;]); // インチ―キー&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;)); // Y軸ラベル&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
&lt;br /&gt;
	// バグ対策用 - なぜか、データを再セットすると拡大されるため&lt;br /&gt;
	chart[index].xAxis[0].isDirty = true;&lt;br /&gt;
	chart[index].xAxis[0].setExtremes(null, null,animation=true);&lt;br /&gt;
	chart[index].yAxis[0].isDirty = true;&lt;br /&gt;
	chart[index].yAxis[0].setExtremes(null, null,animation=true);&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップのデータを再設定する ////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param index - ソートリストのインデックス（おそらく0のみ）&lt;br /&gt;
// return なし&lt;br /&gt;
function resetHeatmapData(index)&lt;br /&gt;
{&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
	var sequence = [];&lt;br /&gt;
	for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
		if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
			sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	setHeatmapData(index, sequence);&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ作成 /////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param result チャートデータ&lt;br /&gt;
// return なし&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index     = 0;&lt;br /&gt;
		var data      = [];&lt;br /&gt;
		var yLabels   = [];&lt;br /&gt;
		var length    = result[i].map.length&lt;br /&gt;
		var inchi     = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j]     = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)]; // 相対値の計算&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k].meta[&amp;quot;InChIKey&amp;quot;]); // インチ-キーの格納&lt;br /&gt;
				ratioData[j][index] = data[index][2]; // ???&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;)); // Y軸ラベル&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse(); // highchartsの性質上、Y軸ラベルを反転させる&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]); // X軸ラベル&lt;br /&gt;
&lt;br /&gt;
		// create &amp;quot;ignore 0-intensity button&amp;quot;&lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				resetHeatmapData(index);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create &amp;quot;sortable list&amp;quot;&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				resetHeatmapData(index);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				resetHeatmapData(index);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			resetHeatmapData(0); // 一つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ作成&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 0,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							jumpToStructureOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// chainチャート ////////////////////////////////////////////////////////////////////&lt;br /&gt;
// param result 対象データ&lt;br /&gt;
// return なし&lt;br /&gt;
function showChainChart(result)&lt;br /&gt;
{&lt;br /&gt;
	gChartType = &amp;quot;chain&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
//	gBarData = [];&lt;br /&gt;
//	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	// データの整理&lt;br /&gt;
	var data = [];&lt;br /&gt;
//	var srcdata = [];&lt;br /&gt;
//	var xLabels = [];&lt;br /&gt;
	for(var j = 0; j &amp;lt; result.intensity.length; j ++){&lt;br /&gt;
		data[j]    = [attrEscape(result.x[j]), attrEscape(result.intensity[j] * 100 / result.maxOfAll)]; // 相対値の計算&lt;br /&gt;
//		srcdata[j] = attrEscape(result.intensity[j]);&lt;br /&gt;
//		xLabels[j] = attrEscape(result.x[j]);&lt;br /&gt;
//		var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
//		gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container0';&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent,&lt;br /&gt;
			height: 500&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result.title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			categories:result.x,&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: false&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: [{&lt;br /&gt;
			name: 'Population',&lt;br /&gt;
			data: data,&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}]&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
//	chart.xAxis[0].categories = result.x;&lt;br /&gt;
//	chart[i].data    = data;&lt;br /&gt;
//	chart[i].srcdata = srcdata;&lt;br /&gt;
//	chart[i].max     = result[0].map[i].max;&lt;br /&gt;
//	chart[i].xLabels = xLabels;&lt;br /&gt;
//	chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
/*&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
*/&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-31T08:01:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/03/31 ・meta情報に「Tissue」を追加&lt;br /&gt;
// 2017/03/30 ・4行目の項目名を「Mutant type」から「Treatment」に変更&lt;br /&gt;
// 2017/03/15 ・パイチャートのタイトルを「ratio」から「Intensity ratio」へ変更&lt;br /&gt;
//            ・パイチャートのサイズ統一をキャンセル&lt;br /&gt;
//　　　　　　・パイチャートの表示/非表示の切り替えを実装&lt;br /&gt;
//　　　　　　・バンドルチャートにおいて、凡例をリアルタイムで変更可能に&lt;br /&gt;
// 2017/03/13 ・ヒートマップにおいて、カットオフ値が相対値ではなく絶対値で計算していた不具合を修正&lt;br /&gt;
// 2017/03/06 ・カットオフに「%」を追加&lt;br /&gt;
//            ・パイチャートのサイズを統一&lt;br /&gt;
//            ・カットオフ値をnumberからtextにして、2桁までしか入力できないよう修正(つまり、-9～99までに制限)&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
var legendOptions = [&amp;quot;Sample name&amp;quot;,&amp;quot;Sample source&amp;quot;,&amp;quot;Sample type&amp;quot;,&amp;quot;Tissue&amp;quot;,&amp;quot;Treatment&amp;quot;,&amp;quot;Extraction&amp;quot;,&amp;quot;LC type&amp;quot;,&amp;quot;MS type&amp;quot;,&amp;quot;Ion mode&amp;quot;,&amp;quot;Quantification&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		if(document.getElementById(&amp;quot;pieContainer&amp;quot;).style.display == &amp;quot;none&amp;quot;)&lt;br /&gt;
			pieWidth = 0;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
	var optionDiv = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	for(var i = optionDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		optionDiv.removeChild(optionDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
	// 凡例の切り替え&lt;br /&gt;
	var changeLegend = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var legendLabel = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	legendLabel.innerHTML = &amp;quot;Legend&amp;quot;;&lt;br /&gt;
	changeLegend.appendChild(legendLabel);&lt;br /&gt;
	var selectLegend = document.createElement(&amp;quot;select&amp;quot;);&lt;br /&gt;
	selectLegend.id  = &amp;quot;selectLegend&amp;quot;;&lt;br /&gt;
	for(var i = 0; i &amp;lt; legendOptions.length; i ++){&lt;br /&gt;
		var option = document.createElement('option');&lt;br /&gt;
		option.setAttribute(&amp;quot;value&amp;quot;, legendOptions[i]);&lt;br /&gt;
		if(legendOptions[i] == &amp;quot;Treatment&amp;quot;)&lt;br /&gt;
			option.setAttribute(&amp;quot;selected&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
		option.innerHTML = legendOptions[i];&lt;br /&gt;
		selectLegend.appendChild(option);&lt;br /&gt;
	}&lt;br /&gt;
	selectLegend.onchange = function(e){&lt;br /&gt;
		var index = document.getElementById(&amp;quot;selectLegend&amp;quot;).selectedIndex;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			chart[0].series[i].update({name:chart[0].meta[i][legendOptions[index]]}, false);&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].redraw(false);&lt;br /&gt;
	}&lt;br /&gt;
	changeLegend.appendChild(selectLegend);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var meta   = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		meta[i] = result[0].map[i].meta;&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Treatment&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
	chart[0].meta    = meta;&lt;br /&gt;
console.log(meta);&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
	// パイチャートの表示/非表示の切り替え&lt;br /&gt;
	var switchPieHidden = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var hiddenButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
	hiddenButton.id = &amp;quot;switchPieHidden&amp;quot;;&lt;br /&gt;
	hiddenButton.onclick = function(e){&lt;br /&gt;
		var pieContainer = document.getElementById(&amp;quot;pieContainer&amp;quot;);&lt;br /&gt;
		if(pieContainer.style.display == &amp;quot;none&amp;quot;){&lt;br /&gt;
			pieContainer.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
		} else {&lt;br /&gt;
			pieContainer.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;show piechart(s)&amp;quot;);;&lt;br /&gt;
		}&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	}&lt;br /&gt;
	switchPieHidden.appendChild(hiddenButton);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.Intensity ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				ratioData[j][index] = data[index][2];&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:Database</id>
		<title>Lipoquality:Database</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:Database"/>
				<updated>2017-03-30T06:16:31Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#includejs:Lipoquality.js}}&lt;br /&gt;
&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample source&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;samplesource&amp;quot; id=&amp;quot;samplesource&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample type&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;sampletype&amp;quot; id=&amp;quot;sampletype&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lipid class&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;lipidclass&amp;quot; id=&amp;quot;lipidclass&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align: bottom&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;retrieving&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Retrieving...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;resetZoom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: right&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;optionHeader&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;cutoff&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- sortable list --&amp;gt;&amp;lt;div id=&amp;quot;sortableList&amp;quot; style=&amp;quot;display: none; overflow-y: scroll; border: 1px solid #000000; padding: 3px; height: 250px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id=&amp;quot;rate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- barchart or heatmap --&amp;gt;&amp;lt;div id=&amp;quot;container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- piechiart --&amp;gt;&amp;lt;div id=&amp;quot;pieContainer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;hit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar&amp;quot; value=&amp;quot;bar&amp;quot; checked=&amp;quot;yes&amp;quot;}}{{#formtag:label|for=&amp;quot;bar&amp;quot;|barchart(individual)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar_bundle&amp;quot; value=&amp;quot;bar_bundle&amp;quot;}}{{#formtag:label|for=&amp;quot;bar_bundle&amp;quot;|barchart(bundle)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;heatmap&amp;quot; value=&amp;quot;heatmap&amp;quot;}}{{#formtag:label|for=&amp;quot;heatmap&amp;quot;|heatmap}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;check&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;searching&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Searching...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;result&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-30T06:12:37Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/03/30 ・4行目の項目名を「Mutant type」から「Treatment」に変更&lt;br /&gt;
// 2017/03/15 ・パイチャートのタイトルを「ratio」から「Intensity ratio」へ変更&lt;br /&gt;
//            ・パイチャートのサイズ統一をキャンセル&lt;br /&gt;
//　　　　　　・パイチャートの表示/非表示の切り替えを実装&lt;br /&gt;
//　　　　　　・バンドルチャートにおいて、凡例をリアルタイムで変更可能に&lt;br /&gt;
// 2017/03/13 ・ヒートマップにおいて、カットオフ値が相対値ではなく絶対値で計算していた不具合を修正&lt;br /&gt;
// 2017/03/06 ・カットオフに「%」を追加&lt;br /&gt;
//            ・パイチャートのサイズを統一&lt;br /&gt;
//            ・カットオフ値をnumberからtextにして、2桁までしか入力できないよう修正(つまり、-9～99までに制限)&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
var legendOptions = [&amp;quot;Sample name&amp;quot;,&amp;quot;Sample source&amp;quot;,&amp;quot;Sample type&amp;quot;,&amp;quot;Treatment&amp;quot;,&amp;quot;Extraction&amp;quot;,&amp;quot;LC type&amp;quot;,&amp;quot;MS type&amp;quot;,&amp;quot;Ion mode&amp;quot;,&amp;quot;Quantification&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		if(document.getElementById(&amp;quot;pieContainer&amp;quot;).style.display == &amp;quot;none&amp;quot;)&lt;br /&gt;
			pieWidth = 0;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
	var optionDiv = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	for(var i = optionDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		optionDiv.removeChild(optionDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
	// 凡例の切り替え&lt;br /&gt;
	var changeLegend = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var legendLabel = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	legendLabel.innerHTML = &amp;quot;Legend&amp;quot;;&lt;br /&gt;
	changeLegend.appendChild(legendLabel);&lt;br /&gt;
	var selectLegend = document.createElement(&amp;quot;select&amp;quot;);&lt;br /&gt;
	selectLegend.id  = &amp;quot;selectLegend&amp;quot;;&lt;br /&gt;
	for(var i = 0; i &amp;lt; legendOptions.length; i ++){&lt;br /&gt;
		var option = document.createElement('option');&lt;br /&gt;
		option.setAttribute(&amp;quot;value&amp;quot;, legendOptions[i]);&lt;br /&gt;
		if(legendOptions[i] == &amp;quot;Treatment&amp;quot;)&lt;br /&gt;
			option.setAttribute(&amp;quot;selected&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
		option.innerHTML = legendOptions[i];&lt;br /&gt;
		selectLegend.appendChild(option);&lt;br /&gt;
	}&lt;br /&gt;
	selectLegend.onchange = function(e){&lt;br /&gt;
		var index = document.getElementById(&amp;quot;selectLegend&amp;quot;).selectedIndex;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			chart[0].series[i].update({name:chart[0].meta[i][legendOptions[index]]}, false);&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].redraw(false);&lt;br /&gt;
	}&lt;br /&gt;
	changeLegend.appendChild(selectLegend);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var meta   = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		meta[i] = result[0].map[i].meta;&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Treatment&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
	chart[0].meta    = meta;&lt;br /&gt;
console.log(meta);&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
	// パイチャートの表示/非表示の切り替え&lt;br /&gt;
	var switchPieHidden = document.getElementById(&amp;quot;optionHeader&amp;quot;);&lt;br /&gt;
	var hiddenButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	hiddenButton.setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
	hiddenButton.id = &amp;quot;switchPieHidden&amp;quot;;&lt;br /&gt;
	hiddenButton.onclick = function(e){&lt;br /&gt;
		var pieContainer = document.getElementById(&amp;quot;pieContainer&amp;quot;);&lt;br /&gt;
		if(pieContainer.style.display == &amp;quot;none&amp;quot;){&lt;br /&gt;
			pieContainer.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;hide piechart(s)&amp;quot;);&lt;br /&gt;
		} else {&lt;br /&gt;
			pieContainer.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;switchPieHidden&amp;quot;).setAttribute(&amp;quot;value&amp;quot;, &amp;quot;show piechart(s)&amp;quot;);;&lt;br /&gt;
		}&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	}&lt;br /&gt;
	switchPieHidden.appendChild(hiddenButton);&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.Intensity ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				ratioData[j][index] = data[index][2];&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-15T04:07:03Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/03/15 ・パイチャートのタイトルを「ratio」から「Intensity ratio」へ変更&lt;br /&gt;
//            ・パイチャートのサイズ統一をキャンセル&lt;br /&gt;
// 2017/03/13 ・ヒートマップにおいて、カットオフ値が相対値ではなく絶対値で計算していた不具合を修正&lt;br /&gt;
// 2017/03/06 ・カットオフに「%」を追加&lt;br /&gt;
//            ・パイチャートのサイズを統一&lt;br /&gt;
//            ・カットオフ値をnumberからtextにして、2桁までしか入力できないよう修正(つまり、-9～99までに制限)&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Sample source&amp;quot;] + '/' + result[0].map[i].meta[&amp;quot;Sample type&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.Intensity ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				ratioData[j][index] = data[index][2];&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-14T06:44:57Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/03/15 ・パイチャートのタイトルを「ratio」から「Intensity ratio」へ変更&lt;br /&gt;
// 2017/03/13 ・ヒートマップにおいて、カットオフ値が相対値ではなく絶対値で計算していた不具合を修正&lt;br /&gt;
// 2017/03/06 ・カットオフに「%」を追加&lt;br /&gt;
//            ・パイチャートのサイズを統一&lt;br /&gt;
//            ・カットオフ値をnumberからtextにして、2桁までしか入力できないよう修正(つまり、-9～99までに制限)&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Sample source&amp;quot;] + '/' + result[0].map[i].meta[&amp;quot;Sample type&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.Intensity ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					size: '60%',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				ratioData[j][index] = data[index][2];&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-13T04:37:26Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/03/13 ・ヒートマップにおいて、カットオフ値が相対値ではなく絶対値で計算していた不具合を修正&lt;br /&gt;
// 2017/03/06 ・カットオフに「%」を追加&lt;br /&gt;
//            ・パイチャートのサイズを統一&lt;br /&gt;
//            ・カットオフ値をnumberからtextにして、2桁までしか入力できないよう修正(つまり、-9～99までに制限)&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Sample source&amp;quot;] + '/' + result[0].map[i].meta[&amp;quot;Sample type&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					size: '60%',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				ratioData[j][index] = data[index][2];&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-13T04:36:37Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/03/13 ・ヒートマップにおいて、カットオフ値が相対値ではなく絶対値で計算していた不具合を修正&lt;br /&gt;
// 2017/03/06 ・カットオフに「%」を追加&lt;br /&gt;
//            ・パイチャートのサイズを統一&lt;br /&gt;
//            ・カットオフ値をnumberからtextにして、2桁までしか入力できないよう修正(つまり、-9～99までに制限)&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Sample source&amp;quot;] + '/' + result[0].map[i].meta[&amp;quot;Sample type&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					size: '60%',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; chart[index].data[0].length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
console.log(j,chart[index].data[j][k],cutoff);&lt;br /&gt;
			if(chart[index].data[j][k] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		var ratioData = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			ratioData[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				ratioData[j][index] = data[index][2];&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		chart[i].data  = ratioData;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-13T00:30:30Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/03/06 ・カットオフに「%」を追加&lt;br /&gt;
//            ・パイチャートのサイズを統一&lt;br /&gt;
//            ・カットオフ値をnumberからtextにして、2桁までしか入力できないよう修正(つまり、-9～99までに制限)&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;text&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.maxLength = 2;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;% &amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Sample source&amp;quot;] + '/' + result[0].map[i].meta[&amp;quot;Sample type&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					size: '60%',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/Lipoquality:Database</id>
		<title>Lipoquality:Database</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/Lipoquality:Database"/>
				<updated>2017-03-01T23:53:49Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#includejs:Lipoquality.js}}&lt;br /&gt;
&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample source&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;samplesource&amp;quot; id=&amp;quot;samplesource&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sample type&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;sampletype&amp;quot; id=&amp;quot;sampletype&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lipid class&amp;lt;br /&amp;gt;{{#formtag:select|name=&amp;quot;lipidclass&amp;quot; id=&amp;quot;lipidclass&amp;quot;}}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align: bottom&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;retrieving&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Retrieving...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;resetZoom&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;cutoff&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- sortable list --&amp;gt;&amp;lt;div id=&amp;quot;sortableList&amp;quot; style=&amp;quot;display: none; overflow-y: scroll; border: 1px solid #000000; padding: 3px; height: 250px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id=&amp;quot;rate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- barchart or heatmap --&amp;gt;&amp;lt;div id=&amp;quot;container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;!-- piechiart --&amp;gt;&amp;lt;div id=&amp;quot;pieContainer&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;graphform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;hit&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{#formtag:form|method=&amp;quot;post&amp;quot; action=&amp;quot;/wiki/Lipoquality:Search&amp;quot;|&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar&amp;quot; value=&amp;quot;bar&amp;quot; checked=&amp;quot;yes&amp;quot;}}{{#formtag:label|for=&amp;quot;bar&amp;quot;|barchart(individual)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;bar_bundle&amp;quot; value=&amp;quot;bar_bundle&amp;quot;}}{{#formtag:label|for=&amp;quot;bar_bundle&amp;quot;|barchart(bundle)}}&lt;br /&gt;
{{#formtag:input|type=&amp;quot;radio&amp;quot; name=&amp;quot;chart&amp;quot; id=&amp;quot;heatmap&amp;quot; value=&amp;quot;heatmap&amp;quot;}}{{#formtag:label|for=&amp;quot;heatmap&amp;quot;|heatmap}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;check&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;searching&amp;quot; style=&amp;quot;display: none&amp;quot;&amp;gt;[[File:loading.gif|class=&amp;quot;loading&amp;quot;]] Searching...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;result&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-03-01T23:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/31 ・ひとまとめにした棒グラフをサポート&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
const MARGIN = 30;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(gChartType == &amp;quot;bar&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth - MARGIN;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - MARGIN;&lt;br /&gt;
		// heatmap or barchart(bundle)&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
var gChartType;&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = &amp;quot;bar_bundle&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	gChartType = chartType&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
/*	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else if(document.getElementById('heatmap').checked)&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'bar_bundle';*/&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
/*&lt;br /&gt;
	var unitLabel    = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	unitLabel.innerHTML = &amp;quot;%&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(unitLabel);&lt;br /&gt;
*/&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(gChartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else if(gChartType == 'heatmap'){&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	}else&lt;br /&gt;
		showBarBundleChart(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート(バンドル) /////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarBundleData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data[0].length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart[0].series.length; i ++){&lt;br /&gt;
			if(chart[0].data[i][j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].series.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0; k &amp;lt; chart[0].srcdata[j].length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k] * 100 / chart[0].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[0].xLabels[k], chart[0].srcdata[j][k]];&lt;br /&gt;
				xLabels[i++] = chart[0].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[0].yAxis[0].setExtremes(0, chart[0].max);&lt;br /&gt;
			chart[0].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[0].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[0].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[0].series[j].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarBundleChart(result)&lt;br /&gt;
{&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;disabled&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
/*			var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*/&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}/*&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
/*			var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}*//*&lt;br /&gt;
			setBarBundleData();&lt;br /&gt;
		}&lt;br /&gt;
	});*/&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	seriesData = [];&lt;br /&gt;
	data       = [];&lt;br /&gt;
	srcdata    = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var unifiedFlag = true;&lt;br /&gt;
	var unitType = '';&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		// 単位の統一がなされているかチェック&lt;br /&gt;
		if(i == 0)&lt;br /&gt;
			unitType = result[0].map[i].meta.Quantification;&lt;br /&gt;
		else if(unitType != result[0].map[i].meta.Quantification){&lt;br /&gt;
			unitType = '???';&lt;br /&gt;
			unifiedFlag = false;&lt;br /&gt;
		}&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		data[i] = [];&lt;br /&gt;
		srcdata[i] = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[i][j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].maxOfAll)];&lt;br /&gt;
			srcdata[i][j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j]    = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
		seriesData[i] = {&lt;br /&gt;
			name: attrEscape(result[0].map[i].meta[&amp;quot;Sample source&amp;quot;] + '/' + result[0].map[i].meta[&amp;quot;Sample type&amp;quot;]),&lt;br /&gt;
			data: data[i],&lt;br /&gt;
			events: {&lt;br /&gt;
			  click: function(event) {&lt;br /&gt;
				//alert(event.point.name);&lt;br /&gt;
				var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
				getInchiOnBar(index, event.point.x);&lt;br /&gt;
			  }&lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// barchartの追加&lt;br /&gt;
	var parent = document.createElement('div');&lt;br /&gt;
	parent.id = 'container' + 0;&lt;br /&gt;
	parent.setAttribute(&amp;quot;order&amp;quot;, 0);&lt;br /&gt;
	root.appendChild(parent);&lt;br /&gt;
	chart[0] = new Highcharts.Chart({&lt;br /&gt;
		chart: {&lt;br /&gt;
			type: 'column',&lt;br /&gt;
			zoomType: 'x',&lt;br /&gt;
			renderTo: parent&lt;br /&gt;
		},&lt;br /&gt;
		title: {&lt;br /&gt;
			text: attrEscape(result[0].title)&lt;br /&gt;
		},&lt;br /&gt;
		xAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			type: 'category',&lt;br /&gt;
			labels: {&lt;br /&gt;
				rotation: -90,&lt;br /&gt;
				style: {&lt;br /&gt;
					fontSize: '11px',&lt;br /&gt;
					fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
				},&lt;br /&gt;
				step: 1&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		scrollbar: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		yAxis: {&lt;br /&gt;
			min: 0,&lt;br /&gt;
			max: 100,&lt;br /&gt;
			title: {&lt;br /&gt;
				text: 'Relative Intensity (%)'&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legend: {&lt;br /&gt;
			enabled: true&lt;br /&gt;
		},&lt;br /&gt;
		tooltip: {&lt;br /&gt;
			pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
			formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
		},&lt;br /&gt;
		series: seriesData&lt;br /&gt;
	});&lt;br /&gt;
	chart[0].xAxis[0].categories = xLabels;&lt;br /&gt;
	chart[0].data    = data;&lt;br /&gt;
	chart[0].srcdata = srcdata;&lt;br /&gt;
	chart[0].max     = result[0].maxOfAll;&lt;br /&gt;
	chart[0].xLabels = xLabels;&lt;br /&gt;
	chart[0].quantification = unitType;&lt;br /&gt;
&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarBundleData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
&lt;br /&gt;
	if(unifiedFlag == false)&lt;br /&gt;
		alert(&amp;quot;intensityの単位が統一されていません。&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// 絶対量か相対量か&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-26T05:28:23Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;',&lt;br /&gt;
				formatter: function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-26T04:31:03Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/26 ・棒グラフで絶対量の時に、単位を表示するように変更&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity (%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-26T04:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity (%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity (&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-26T04:29:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity(%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity(&amp;quot; + chart[j].quantification + &amp;quot;)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
		chart[i].quantification = result[0].map[i].meta.Quantification;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-25T07:14:12Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity(%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-25T07:13:22Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity(%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return '&amp;lt;small&amp;gt;' + this.x + '&amp;lt;/small&amp;gt;&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return '&amp;lt;small&amp;gt;' + this.x + '&amp;lt;/small&amp;gt;&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-25T07:12:27Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity(%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return this.x + '&amp;lt;br/ &amp;gt;&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-25T07:11:06Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity(%)&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return '&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '%&amp;lt;/b&amp;gt;'})&lt;br /&gt;
&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
			chart[j].tooltip.options.formatter = (function(){return '&amp;lt;b&amp;gt;' + this.y.toFixed(1) + '&amp;lt;/b&amp;gt;'})&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-25T06:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity(%)&amp;quot;});&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-25T06:25:59Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked){&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		} else {&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
			chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Relative Intensity(%)&amp;quot;});&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:51:55Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
//            ・barchartにおいて、ratioと絶対量で切り替え可能とした&lt;br /&gt;
//             ※ cutoffをどうするか検討中&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
		else&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:47:51Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
		else&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	// それぞれのレート/全体でのレート&lt;br /&gt;
	var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
	ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
	ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	ratioCbox.onchange = function(e){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
	var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
	label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
	label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
	document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:45:44Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
		else&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
		ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
		ratioCbox.onchange = function(e){&lt;br /&gt;
			setBarchartData();&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:44:52Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		else&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
		ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
		ratioCbox.onchange = function(e){&lt;br /&gt;
			setBarchartData();&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:43:25Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				else&lt;br /&gt;
					data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k] * 100 / chart[j].max];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(document.getElementById(&amp;quot;ratio&amp;quot;).checked)&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		else&lt;br /&gt;
			chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var ratioCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		ratioCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		ratioCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;no&amp;quot;);&lt;br /&gt;
		ratioCbox.id = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
		ratioCbox.onchange = function(e){&lt;br /&gt;
			setBarchartData();&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;ratio&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;ratio&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;ratio&amp;quot;).appendChild(ratioCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;ratio&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:37:29Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
alert(chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, 160);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = Math.ceil(result[0].map[i].max);&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:36:48Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
alert(chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = Math.ceil(result[0].map[i].max);&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:35:58Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = Math.ceil(result[0].map[i].max);&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:34:55Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
alert(chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:34:02Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, 150);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:33:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, 100);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:31:23Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js</id>
		<title>MediaWiki:Lipoquality.js</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/wiki/MediaWiki:Lipoquality.js"/>
				<updated>2017-01-06T01:30:08Z</updated>
		
		<summary type="html">&lt;p&gt;Sunflower: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// html /////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// &amp;lt;span id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;show&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// 2017/01/06 ・新フォーマットに対応&lt;br /&gt;
// 2016/10/26 ・ヒートマップを拡大した状態でsetDataするとおかしな挙動になるため&lt;br /&gt;
//            　必ずzoomOutするよう修正&lt;br /&gt;
//            ・画像出力できるよう修正&lt;br /&gt;
//            ・画像出力時、X軸がおかしくなるバグを修正&lt;br /&gt;
// 2016/10/18 ・highchartsの仕様が変わったようで、setDataやズームをするとX軸がおかしくなるので、&lt;br /&gt;
//            　setCategoriesを使用して対処&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// external script //////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
mw.loader.load( ['jquery.ui.sortable'] );&lt;br /&gt;
mw.loader.load('https://code.highcharts.com/stock/highstock.js', &amp;quot;text/javascript&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// initialize //////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
addOnloadHook(init); &lt;br /&gt;
&lt;br /&gt;
// 初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
const DEFAULT_BAR_COLOR = &amp;quot;#7cb5ec&amp;quot;;&lt;br /&gt;
var barColor = DEFAULT_BAR_COLOR;&lt;br /&gt;
function init()&lt;br /&gt;
{&lt;br /&gt;
	// highstock.jsに依存するため、別で読み込む&lt;br /&gt;
	var heatmapJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	heatmapJS.src = &amp;quot;https://code.highcharts.com/modules/heatmap.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(heatmapJS);&lt;br /&gt;
	var exportingJS = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	exportingJS.src = &amp;quot;https://code.highcharts.com/modules/exporting.js&amp;quot;;&lt;br /&gt;
	document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(exportingJS);&lt;br /&gt;
&lt;br /&gt;
	var searchButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	searchButton.value = &amp;quot;search&amp;quot;;&lt;br /&gt;
	searchButton.id    = &amp;quot;searchButton&amp;quot;;&lt;br /&gt;
	searchButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	searchButton.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
	searchButton.onclick = function(){search()};&lt;br /&gt;
	document.getElementById(&amp;quot;search&amp;quot;).appendChild(searchButton);&lt;br /&gt;
	var showButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	showButton.value = &amp;quot;show graph&amp;quot;;&lt;br /&gt;
	showButton.id    = &amp;quot;showButton&amp;quot;;&lt;br /&gt;
	showButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	showButton.disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	showButton.onclick = function(){barColor = DEFAULT_BAR_COLOR; showChart()};&lt;br /&gt;
	document.getElementById(&amp;quot;show&amp;quot;).appendChild(showButton);&lt;br /&gt;
	var checkButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	checkButton.value = &amp;quot;all check/uncheck&amp;quot;;&lt;br /&gt;
	checkButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	checkButton.onclick = function(){checkAllResult()};&lt;br /&gt;
	document.getElementById(&amp;quot;check&amp;quot;).appendChild(checkButton);&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// insert &amp;quot;Reset zoom&amp;quot; button&lt;br /&gt;
	var resetZoomButton     = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	resetZoomButton.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;button&amp;quot;);&lt;br /&gt;
	resetZoomButton.value            = &amp;quot;Reset zoom&amp;quot;;&lt;br /&gt;
	resetZoomButton.id               = &amp;quot;resetZoomButton&amp;quot;;&lt;br /&gt;
	resetZoomButton.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
	resetZoomButton.onclick          = unzoomBarCharts;&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoom&amp;quot;).appendChild(resetZoomButton);&lt;br /&gt;
&lt;br /&gt;
	setCombobox('SampleSource');&lt;br /&gt;
	setCombobox('SampleType');&lt;br /&gt;
	setCombobox('LipidClass');&lt;br /&gt;
&lt;br /&gt;
	$(window).resize(function() {&lt;br /&gt;
		resizeChart();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
// ウィンドウサイズが変更されたとき、チャートの幅も修正する ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function resizeChart()&lt;br /&gt;
{&lt;br /&gt;
	if(chart == undefined || chart.length == 0)&lt;br /&gt;
		return;&lt;br /&gt;
&lt;br /&gt;
	if(chart[0].options.chart.type != &amp;quot;heatmap&amp;quot;){&lt;br /&gt;
		// barchart &amp;amp; piechart&lt;br /&gt;
		var height   = 300;&lt;br /&gt;
		var pieWidth = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width() - pieWidth;&lt;br /&gt;
		if(width &amp;lt; 300)&lt;br /&gt;
			width = 300;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
		for(var i = 0; i &amp;lt; piechart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot; + i).highcharts().setSize(pieWidth, height);&lt;br /&gt;
	} else {&lt;br /&gt;
		var height = 400;&lt;br /&gt;
		var width = $(window).width() - $(&amp;quot;#sortableList&amp;quot;).width() - $(&amp;quot;#mw-panel&amp;quot;).width();&lt;br /&gt;
		// heatmap&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++)&lt;br /&gt;
			$(&amp;quot;#container&amp;quot; + i).highcharts().setSize(width, height);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 検索ボックスの初期化 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setCombobox(name)&lt;br /&gt;
{&lt;br /&gt;
	var url = '/mediawiki/api.php?action=query&amp;amp;prop=revisions&amp;amp;redirects=1&amp;amp;titles=Lipoquality:' + name + '&amp;amp;rvprop=content&amp;amp;format=xml'&lt;br /&gt;
&lt;br /&gt;
	var xmlHttpRequest = new XMLHttpRequest();&lt;br /&gt;
	xmlHttpRequest.onreadystatechange = function()&lt;br /&gt;
	{&lt;br /&gt;
		var READYSTATE_COMPLETED = 4;&lt;br /&gt;
		if(this.readyState == READYSTATE_COMPLETED){&lt;br /&gt;
			var HTTP_STATUS_OK = 200;&lt;br /&gt;
			if(this.status == HTTP_STATUS_OK) {&lt;br /&gt;
				// success&lt;br /&gt;
				var parser = new DOMParser();&lt;br /&gt;
				var dom = parser.parseFromString(this.response.trim(), &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
				var text = dom.getElementsByTagName(&amp;quot;rev&amp;quot;);&lt;br /&gt;
				var lines = text[0].textContent.split(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				var select = document.getElementById(name.toLowerCase());&lt;br /&gt;
				if(name != 'LipidClass')&lt;br /&gt;
					lines.unshift('All');&lt;br /&gt;
				for(var i = 0; i &amp;lt; lines.length; i ++){&lt;br /&gt;
					var opt = document.createElement('option');&lt;br /&gt;
					opt.value = opt.textContent = lines[i].replace(/^\*/, '').replace(/^ */, '').replace(/ *$/, '').replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo&amp;quot;);;&lt;br /&gt;
					select.appendChild(opt);&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
				// error&lt;br /&gt;
				console.log('search failed. ' + this.status + ':' + this.statusText + &amp;quot;/&amp;quot; + this.readyState);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// search&lt;br /&gt;
	xmlHttpRequest.open('GET', url, true);&lt;br /&gt;
	xmlHttpRequest.responseType = 'text';&lt;br /&gt;
	xmlHttpRequest.send(null);&lt;br /&gt;
}&lt;br /&gt;
// XSS対策用 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function escape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function attrEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/&amp;amp;/g, &amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g, &amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g, &amp;quot;&amp;amp;gt;&amp;quot;).replace(/&amp;quot;/g, &amp;quot;&amp;amp;quot;&amp;quot;).replace(/'/g, &amp;quot;&amp;amp;rsquo;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
function inchiEscape(text)&lt;br /&gt;
{&lt;br /&gt;
	if(isFinite(text))&lt;br /&gt;
		return text;&lt;br /&gt;
	return text.replace(/^InChIKey=/, &amp;quot;&amp;quot;).replace(/[^A-Z0-9-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// 検索 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function search()&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById('hit').innerHTML = '';&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = &amp;quot;yes&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var classification = document.getElementById(&amp;quot;samplesource&amp;quot;).value;&lt;br /&gt;
	var sample   = document.getElementById(&amp;quot;sampletype&amp;quot;).value;&lt;br /&gt;
	var type     = document.getElementById(&amp;quot;lipidclass&amp;quot;).value;&lt;br /&gt;
&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?classification=' + classification + '&amp;amp;sample=' + sample + '&amp;amp;type=' + type + '&amp;amp;q=search&amp;amp;callback=hasSearched';&lt;br /&gt;
//	var url = '/lipo/json.txt'&lt;br /&gt;
&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使って検索&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hasSearched(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('searching').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
	var root = document.getElementById('result');&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	document.getElementById('hit').innerHTML = 'result. ' + escape(result.length) + ' hit(s).';&lt;br /&gt;
	// 最長文字数を調べる&lt;br /&gt;
	var lenmax = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		if(result[i].title.length &amp;gt; lenmax)&lt;br /&gt;
			lenmax = result[i].title.length;&lt;br /&gt;
	}&lt;br /&gt;
	lenmax += 6; // &amp;quot;(meta)&amp;quot;分&lt;br /&gt;
	lenmax /= 1.5;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		var span = document.createElement('span');&lt;br /&gt;
		span.style.display = &amp;quot;inline-block&amp;quot;;&lt;br /&gt;
		span.style.width   = lenmax + &amp;quot;em&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		var check = document.createElement('input');&lt;br /&gt;
		check.type = 'checkbox';&lt;br /&gt;
		check.id	= attrEscape(result[i].title);&lt;br /&gt;
		check.value = attrEscape(result[i].title);&lt;br /&gt;
		check.name  = 'target';&lt;br /&gt;
		check.className = &amp;quot;results&amp;quot;;&lt;br /&gt;
		check.onchange = function(e){&lt;br /&gt;
			checkSelection();&lt;br /&gt;
		};&lt;br /&gt;
		span.appendChild(check);&lt;br /&gt;
		var title = document.createElement('label');&lt;br /&gt;
		title.setAttribute('for', attrEscape(result[i].title));&lt;br /&gt;
		title.innerHTML = escape(result[i].title) + ' &amp;lt;a href=&amp;quot;' + result[i].meta[&amp;quot;Method link&amp;quot;] + '&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;(meta)&amp;lt;/a&amp;gt;';&lt;br /&gt;
		span.appendChild(title);&lt;br /&gt;
&lt;br /&gt;
		root.appendChild(span);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;searchButton&amp;quot;).disabled = false;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;graphform&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function checkSelection()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var disabled = true;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked){&lt;br /&gt;
			disabled = false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = disabled;&lt;br /&gt;
}&lt;br /&gt;
function checkAllResult()&lt;br /&gt;
{&lt;br /&gt;
	var c = document.getElementsByClassName(&amp;quot;results&amp;quot;);&lt;br /&gt;
	var checked = 0;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++){&lt;br /&gt;
		if(c[i].checked)&lt;br /&gt;
			checked ++;&lt;br /&gt;
	}&lt;br /&gt;
	var state = true;&lt;br /&gt;
	if(checked == c.length)&lt;br /&gt;
		state = false;&lt;br /&gt;
	for(var i = 0; i &amp;lt; c.length; i ++)&lt;br /&gt;
		c[i].checked = state;&lt;br /&gt;
&lt;br /&gt;
	checkSelection();&lt;br /&gt;
}&lt;br /&gt;
// チャート表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showChart()&lt;br /&gt;
{&lt;br /&gt;
	var targets = '';&lt;br /&gt;
	var boxes = document.getElementsByName('target');&lt;br /&gt;
	for(var i = 0; i &amp;lt; boxes.length; i ++){&lt;br /&gt;
		if(boxes[i].checked)&lt;br /&gt;
			targets += ',' + boxes[i].value;&lt;br /&gt;
	}&lt;br /&gt;
	if(targets.length == 0){&lt;br /&gt;
		alert(&amp;quot;選択してください&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	targets = targets.substring(1);&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
	var rateDiv = document.getElementById(&amp;quot;rate&amp;quot;);&lt;br /&gt;
	for(var i = rateDiv.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		rateDiv.removeChild(rateDiv.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	retrieveChartData(targets, chartType);&lt;br /&gt;
}&lt;br /&gt;
// データ取得  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function retrieveChartData(targets, chartType)&lt;br /&gt;
{&lt;br /&gt;
	var url = 'https://script.google.com/macros/s/AKfycbxW5WpkJH0PUmmLrMtrluvkaKmz0OTTfeBucudy5-LxalQ7vus/exec?id=' + targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data&amp;amp;callback=hasRetrieved';&lt;br /&gt;
	//var url = '/lipo/data.php?id=' +  targets + '&amp;amp;type=' + chartType + '&amp;amp;q=data';&lt;br /&gt;
&lt;br /&gt;
	// jsonpを使った取得&lt;br /&gt;
	var cutoff = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	for(var i = cutoff.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		cutoff.removeChild(cutoff.childNodes[i]);&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = pieRoot.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		pieRoot.removeChild(pieRoot.childNodes[i]);&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
		root.removeChild(root.childNodes[i]);&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
	var jsonp = document.createElement('script');&lt;br /&gt;
	jsonp.src = url;&lt;br /&gt;
	document.head.appendChild(jsonp);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// コールバック関数(jsonp)  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function hasRetrieved(jsonp)&lt;br /&gt;
{&lt;br /&gt;
	document.getElementById('retrieving').style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
	// remove old elements&lt;br /&gt;
	root.textContent = '';&lt;br /&gt;
//	for(var i = root.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
//		root.removeChild(root.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
	var chartType;&lt;br /&gt;
	if(document.getElementById('bar').checked)&lt;br /&gt;
		chartType = 'bar';&lt;br /&gt;
	else&lt;br /&gt;
		chartType = 'heatmap';&lt;br /&gt;
&lt;br /&gt;
	var cutoff     = document.getElementById(&amp;quot;cutoff&amp;quot;);&lt;br /&gt;
	var cutoffText = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffText.id    = &amp;quot;cutoffValue&amp;quot;;&lt;br /&gt;
	cutoffText.type  = &amp;quot;number&amp;quot;;&lt;br /&gt;
	cutoffText.value = 0;&lt;br /&gt;
	cutoffText.min   = 0;&lt;br /&gt;
	cutoffText.max   = 80;&lt;br /&gt;
	cutoffText.style.width = &amp;quot;4em&amp;quot;;&lt;br /&gt;
	cutoffText.style.textAlign = &amp;quot;right&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffText);&lt;br /&gt;
	var cutoffButton = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
	cutoffButton.value = &amp;quot;&amp;lt; cutoff&amp;quot;;&lt;br /&gt;
	cutoffButton.type  = &amp;quot;button&amp;quot;;&lt;br /&gt;
	cutoff.appendChild(cutoffButton);&lt;br /&gt;
&lt;br /&gt;
	var result = jsonp;&lt;br /&gt;
	//var result = JSON.parse(escape(jsonp));&lt;br /&gt;
	if(chartType == 'bar')&lt;br /&gt;
		showBarChart(result);&lt;br /&gt;
	else&lt;br /&gt;
		showHeatmap(result);&lt;br /&gt;
	document.getElementById(&amp;quot;showButton&amp;quot;).disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = false;&lt;br /&gt;
	document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// バーチャート ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var gBarData;&lt;br /&gt;
function getInchiOnBar(seq, x)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gBarData[seq][x], &amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gBarData[seq][x]);&lt;br /&gt;
}&lt;br /&gt;
var chart;&lt;br /&gt;
var piechart;&lt;br /&gt;
var defaultTickInterval = currentTickInterval = 5;&lt;br /&gt;
// バーチャートのズーム解除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function unzoomBarCharts() {&lt;br /&gt;
	for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
		//chart[i].xAxis[0].options.tickInterval = defaultTickInterval;&lt;br /&gt;
		chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
		chart[i].xAxis[0].setExtremes(null, null, animation=true);&lt;br /&gt;
	}&lt;br /&gt;
	document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setBarchartData()&lt;br /&gt;
{ // inchiキー未処理 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart[0].data.length; j ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
			if(chart[i].data[j][1] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[j] = not0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(var j = 0; j &amp;lt; chart.length; j ++){&lt;br /&gt;
		var i = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; chart[j].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
//				data[i]      = [chart[j].xLabels[k], chart[j].data[k][1]];&lt;br /&gt;
				data[i]      = [chart[j].xLabels[k], chart[j].srcdata[k][1]];&lt;br /&gt;
				xLabels[i++] = chart[j].xLabels[k];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
alert(chart[j].max + &amp;quot; &amp;quot; + chart[j].srcdata[0][1]);&lt;br /&gt;
		chart[j].yAxis[0].setExtremes(0, chart[j].max);&lt;br /&gt;
		chart[j].yAxis[0].axisTitle.attr({text: &amp;quot;Intensity&amp;quot;});&lt;br /&gt;
		chart[j].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[j].series[0].setData(data, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	unzoomBarCharts();&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showBarChart(result)&lt;br /&gt;
{&lt;br /&gt;
	function computeTickInterval(xMin, xMax)&lt;br /&gt;
	{&lt;br /&gt;
		var zoomRange = xMax - xMin;&lt;br /&gt;
&lt;br /&gt;
		if(zoomRange &amp;lt;= 2)&lt;br /&gt;
			currentTickInterval = 0.5;&lt;br /&gt;
		if(zoomRange &amp;lt; 20)&lt;br /&gt;
			currentTickInterval = 1;&lt;br /&gt;
		else if(zoomRange &amp;lt; 100)&lt;br /&gt;
			currentTickInterval = 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create ignore 0-intensity button &lt;br /&gt;
	document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
		setBarchartData();&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// create sortable list&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		cbox.setAttribute(&amp;quot;seq&amp;quot;, i);&lt;br /&gt;
		cbox.id = &amp;quot;item&amp;quot; + i;&lt;br /&gt;
		cbox.onchange = function(e){&lt;br /&gt;
			// 表示/非表示の切り替え&lt;br /&gt;
			var seq = this.getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			var option;&lt;br /&gt;
			if(this.checked){&lt;br /&gt;
				option = &amp;quot;block&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				option = &amp;quot;none&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			document.getElementById(&amp;quot;container&amp;quot; + seq).style.display = option;&lt;br /&gt;
			document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).style.display = option;&lt;br /&gt;
		};&lt;br /&gt;
		line.appendChild(cbox);&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + i);&lt;br /&gt;
		label.innerHTML = (i+1) + &amp;quot;.&amp;quot; + escape(result[0].map[i].title);&lt;br /&gt;
		line.appendChild(label);&lt;br /&gt;
		sortableList.appendChild(line);&lt;br /&gt;
	}&lt;br /&gt;
	$('#sortableList').sortable({&lt;br /&gt;
		cursor: 'move',&lt;br /&gt;
		update: function(event, ui){&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
			for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				var seq = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				document.getElementById(&amp;quot;container&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
				document.getElementById(&amp;quot;pieContainer&amp;quot; + seq).setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;quot;#container&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#container &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
			$(&amp;quot;#pieContainer&amp;quot;).html(&lt;br /&gt;
				$(&amp;quot;#pieContainer &amp;gt; div&amp;quot;).sort(function(o1,o2)&lt;br /&gt;
				{&lt;br /&gt;
					var n1 = parseInt($(o1).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					var n2 = parseInt($(o2).attr(&amp;quot;order&amp;quot;), 10);&lt;br /&gt;
					if(n1 &amp;lt; n2) return -1;&lt;br /&gt;
					if(n1 &amp;gt; n2) return 1;&lt;br /&gt;
					return 0;&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// create barchart(s)&lt;br /&gt;
	gBarData = [];&lt;br /&gt;
	chart    = [];&lt;br /&gt;
	piechart = [];&lt;br /&gt;
	var root    = document.getElementById('container');&lt;br /&gt;
	var pieRoot = document.getElementById('pieContainer');&lt;br /&gt;
	for(var i = 0; i &amp;lt; result[0].map.length; i ++){&lt;br /&gt;
		gBarData[i] = [];&lt;br /&gt;
		// データの整理&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var srcdata = [];&lt;br /&gt;
		var xLabels = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[0].map[i].data.length; j ++){&lt;br /&gt;
//			data[j] = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			data[j]    = [attrEscape(result[0].x[j]), attrEscape(result[0].map[i].data[j][0] * 100 / result[0].map[i].max)];&lt;br /&gt;
			srcdata[j] = attrEscape(result[0].map[i].data[j][0]);&lt;br /&gt;
			xLabels[j] = attrEscape(result[0].x[j]);&lt;br /&gt;
//			gBarData[i][j] = inchiEscape(result[0].map[i].data[j][2]); // InChIキー&lt;br /&gt;
var type = result[0].map[i].title.replace(/.*\//,&amp;quot;&amp;quot;);&lt;br /&gt;
			gBarData[i][j] = type + attrEscape(result[0].x[j]).replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;); // InChIキー&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// barchartの追加&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		parent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'column',&lt;br /&gt;
				zoomType: 'x',&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				height: 250,&lt;br /&gt;
				resetZoomButton: {&lt;br /&gt;
					theme: {&lt;br /&gt;
						display: 'none'&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.' + attrEscape(result[0].map[i].title)&lt;br /&gt;
			},&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				type: 'category',&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
				events : {&lt;br /&gt;
					afterSetExtremes: function(){&lt;br /&gt;
						if(!this.chart.options.chart.isZoomed){&lt;br /&gt;
							if(this.chart.options.chart.isZoomed !== undefined)&lt;br /&gt;
								document.getElementById(&amp;quot;resetZoomButton&amp;quot;).style.visibility = &amp;quot;visible&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
							var xMin = this.chart.xAxis[0].min;&lt;br /&gt;
							var xMax = this.chart.xAxis[0].max;&lt;br /&gt;
&lt;br /&gt;
							var zmRange = computeTickInterval(xMin, xMax);&lt;br /&gt;
							for(var i = 0; i &amp;lt; chart.length; i ++){&lt;br /&gt;
								chart[i].xAxis[0].options.tickInterval = zmRange;&lt;br /&gt;
								chart[i].xAxis[0].isDirty = true;&lt;br /&gt;
								if(chart[i] !== this){&lt;br /&gt;
									chart[i].options.chart.isZoomed = true;&lt;br /&gt;
									chart[i].xAxis[0].setExtremes(xMin, xMax, true);&lt;br /&gt;
									chart[i].options.chart.isZoomed = false;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				title: {&lt;br /&gt;
					text: 'Relative Intensity(%)'&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			legend: {&lt;br /&gt;
				enabled: false&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '&amp;lt;b&amp;gt;{point.y:.1f} %&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Population',&lt;br /&gt;
				data: data,&lt;br /&gt;
				color: barColor,&lt;br /&gt;
				events: {&lt;br /&gt;
				  click: function(event) {&lt;br /&gt;
					//alert(event.point.name);&lt;br /&gt;
					var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
					getInchiOnBar(index, event.point.x);&lt;br /&gt;
				  }&lt;br /&gt;
				} &lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].xAxis[0].categories = xLabels;&lt;br /&gt;
		chart[i].data    = data;&lt;br /&gt;
		chart[i].srcdata = srcdata;&lt;br /&gt;
		chart[i].max     = result[0].map[i].max;&lt;br /&gt;
		chart[i].xLabels = xLabels;&lt;br /&gt;
&lt;br /&gt;
		// piechartの追加&lt;br /&gt;
		var pieParent = document.createElement('div');&lt;br /&gt;
		pieParent.id = 'pieContainer' + i;&lt;br /&gt;
		pieParent.setAttribute(&amp;quot;order&amp;quot;, i);&lt;br /&gt;
		pieRoot.appendChild(pieParent);&lt;br /&gt;
		piechart[i] = new Highcharts.Chart({&lt;br /&gt;
			chart: {&lt;br /&gt;
				plotBackgroundColor: null,&lt;br /&gt;
				plotBorderWidth: null,&lt;br /&gt;
				plotShadow: false,&lt;br /&gt;
				type: 'pie',&lt;br /&gt;
				renderTo: pieParent,&lt;br /&gt;
				height: 250&lt;br /&gt;
			},&lt;br /&gt;
			title: {&lt;br /&gt;
				text: (i+1) + '.ratio'&lt;br /&gt;
			},&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				pointFormat: '{series.name}: &amp;lt;b&amp;gt;{point.percentage:.1f}%&amp;lt;/b&amp;gt;'&lt;br /&gt;
			},&lt;br /&gt;
			plotOptions: {&lt;br /&gt;
				pie: {&lt;br /&gt;
					allowPointSelect: true,&lt;br /&gt;
					cursor: 'pointer',&lt;br /&gt;
					dataLabels: {&lt;br /&gt;
						enabled: true,&lt;br /&gt;
						format: '&amp;lt;b&amp;gt;{point.name}&amp;lt;/b&amp;gt;: {point.percentage:.1f} %',&lt;br /&gt;
						style: {&lt;br /&gt;
							color: (Highcharts.theme &amp;amp;&amp;amp; Highcharts.theme.contrastTextColor) || 'black'&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'Rate',&lt;br /&gt;
				colorByPoint: true,&lt;br /&gt;
				data: result[0].map[i].pie,&lt;br /&gt;
				events: {&lt;br /&gt;
					click: function(event) {&lt;br /&gt;
						barColor = event.point.color;&lt;br /&gt;
&lt;br /&gt;
						var nextType = event.point.name;&lt;br /&gt;
						var targets = '';&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
							var w = sortableList.childNodes[i].childNodes[1].innerHTML.replace(/^[0-9]+./,&amp;quot;&amp;quot;).split(&amp;quot;/&amp;quot;);&lt;br /&gt;
							targets += &amp;quot;,&amp;quot; + w[0] + &amp;quot;/&amp;quot; + w[1] + &amp;quot;/&amp;quot; + nextType;&lt;br /&gt;
						}&lt;br /&gt;
						targets = targets.substring(1);&lt;br /&gt;
						document.getElementById(&amp;quot;showButton&amp;quot;).disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;bar&amp;quot;)       .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;heatmap&amp;quot;)   .disabled = true;&lt;br /&gt;
						document.getElementById(&amp;quot;sortableList&amp;quot;).style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
						var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
						for(var i = sortableList.childNodes.length-1; i &amp;gt;= 0; i --)&lt;br /&gt;
							sortableList.removeChild(sortableList.childNodes[i]);&lt;br /&gt;
&lt;br /&gt;
						retrieveChartData(targets, 'bar');&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
// ヒートマップ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
var chart;&lt;br /&gt;
var gHeatmapData;&lt;br /&gt;
function getInchiOnHeatmap(seq, x, y) // 未使用&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/wiki/LBG&amp;quot; + gHeatmapData[seq].map[0].title.replace(/.*\//, &amp;quot;&amp;quot;) + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;), &amp;quot;new&amp;quot;);&lt;br /&gt;
//	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq][y][x]);&lt;br /&gt;
	console.log(seq + &amp;quot;/&amp;quot; + y + &amp;quot;/&amp;quot; + x + &amp;quot; =&amp;gt; &amp;quot; + gHeatmapData[seq].x[x].replace(&amp;quot;/&amp;quot;,&amp;quot;-&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
function jumpToJcbl(inchi)&lt;br /&gt;
{&lt;br /&gt;
	window.open(&amp;quot;http://jcbl.jp/&amp;quot;,&amp;quot;new&amp;quot;);&lt;br /&gt;
	console.log(inchi);&lt;br /&gt;
}&lt;br /&gt;
// データの切り替え（表示/非表示、0-intensity) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function setHeatmapData(index, seq)&lt;br /&gt;
{&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var length = gHeatmapData[index].map.length;&lt;br /&gt;
&lt;br /&gt;
	var target = [];&lt;br /&gt;
	var cutoff = parseInt(document.getElementById(&amp;quot;cutoffValue&amp;quot;).value);&lt;br /&gt;
	var xLabels = [];&lt;br /&gt;
	for(var k = 0; k &amp;lt; gHeatmapData[index].map[0].data.length; k ++){&lt;br /&gt;
		var not0 = false;&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			if(gHeatmapData[index].map[j].data[k][0] &amp;gt;= cutoff){&lt;br /&gt;
				not0 = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		target[k] = not0;&lt;br /&gt;
		if(not0)&lt;br /&gt;
			xLabels[i++] = gHeatmapData[index].x[k];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var data = [];&lt;br /&gt;
	var yLabels = [];&lt;br /&gt;
	chart[index].inchi = [];&lt;br /&gt;
	i = 0;&lt;br /&gt;
	// 表示されている中での最大値を取得する&lt;br /&gt;
	var maxOfDisplayedAll = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(maxOfDisplayedAll &amp;lt; gHeatmapData[index].map[seq[j]].max)&lt;br /&gt;
			maxOfDisplayedAll = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
	}&lt;br /&gt;
	var max = 0;&lt;br /&gt;
	for(var j = 0; j &amp;lt; seq.length &amp;amp;&amp;amp; j &amp;lt; length; j ++){&lt;br /&gt;
		if(document.getElementById(&amp;quot;eachInRate&amp;quot;).checked)&lt;br /&gt;
			max = gHeatmapData[index].map[seq[j]].max;&lt;br /&gt;
		else&lt;br /&gt;
			max = maxOfDisplayedAll;&lt;br /&gt;
//			max = gHeatmapData[index].maxOfAll; // 常に全ての最大値を基準にする場合はこちらを使う&lt;br /&gt;
		chart[index].inchi[j] = [];&lt;br /&gt;
		for(var k = 0,l = 0; k &amp;lt; gHeatmapData[index].map[seq[j]].data.length; k ++){&lt;br /&gt;
			if(target[k]){&lt;br /&gt;
				data[i] = [l++, seq.length-j-1, attrEscape(gHeatmapData[index].map[seq[j]].data[k][0] * 100 / max)];&lt;br /&gt;
				chart[index].inchi[j][k] = inchiEscape(gHeatmapData[index].map[seq[j]].data[k][2]);&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		yLabels[j] = (parseInt(seq[j])+1) + &amp;quot;.&amp;quot; + attrEscape(gHeatmapData[index].map[seq[j]].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
	}&lt;br /&gt;
	yLabels.reverse();&lt;br /&gt;
	chart[index].zoomOut();&lt;br /&gt;
	chart[index].series[0].setData(data, true);&lt;br /&gt;
	chart[index].yAxis[0].setCategories(yLabels);&lt;br /&gt;
	chart[index].xAxis[0].setCategories(xLabels);&lt;br /&gt;
}&lt;br /&gt;
// 表示 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function showHeatmap(result)&lt;br /&gt;
{&lt;br /&gt;
	gHeatmapData = [];&lt;br /&gt;
	var root = document.getElementById('container');&lt;br /&gt;
&lt;br /&gt;
	var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot;);&lt;br /&gt;
	chart = [];&lt;br /&gt;
	gHeatmapData = result;&lt;br /&gt;
	for(var i = 0; i &amp;lt; result.length; i ++){&lt;br /&gt;
		// タイトル&lt;br /&gt;
		var title = attrEscape(result[i].title);&lt;br /&gt;
&lt;br /&gt;
		// 親要素&lt;br /&gt;
		var parent = document.createElement('div');&lt;br /&gt;
		parent.id = 'container' + i;&lt;br /&gt;
		root.appendChild(parent);&lt;br /&gt;
&lt;br /&gt;
		var index = 0;&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var yLabels = [];&lt;br /&gt;
		var length = result[i].map.length&lt;br /&gt;
		var inchi = [];&lt;br /&gt;
		for(var j = 0; j &amp;lt; length; j ++){&lt;br /&gt;
			inchi[j] = [];&lt;br /&gt;
			for(var k = 0; k &amp;lt; result[i].map[j].data.length; k ++){&lt;br /&gt;
				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].map[j].max)];&lt;br /&gt;
//				data[index] = [k, length-j-1, attrEscape(result[i].map[j].data[k][0] * 100 / result[i].maxOfAll)];&lt;br /&gt;
				inchi[j][k] = inchiEscape(result[i].map[j].data[k][2]);&lt;br /&gt;
				index ++;&lt;br /&gt;
			}&lt;br /&gt;
			yLabels[j] = (j+1) + &amp;quot;.&amp;quot; + attrEscape(result[i].map[j].title.replace(/\/[^\/]+$/, &amp;quot;&amp;quot;));&lt;br /&gt;
		}&lt;br /&gt;
		yLabels.reverse();&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].x.length; j ++)&lt;br /&gt;
			result[i].x[j] = attrEscape(result[i].x[j]);&lt;br /&gt;
&lt;br /&gt;
		// create ignore 0-intensity button &lt;br /&gt;
		document.getElementById(&amp;quot;cutoffValue&amp;quot;).onchange = function(){&lt;br /&gt;
			// 表示/非表示の切り替え // 下と同じなので、後でまとめる&lt;br /&gt;
			for(var index = 0; index &amp;lt; chart.length; index ++){&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// create sortable list&lt;br /&gt;
		var listDiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		listDiv.id = &amp;quot;sortableList&amp;quot; + i;&lt;br /&gt;
		for(var j = 0; j &amp;lt; result[i].map.length; j ++){&lt;br /&gt;
			var line = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			var cbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
			cbox.setAttribute(&amp;quot;seq&amp;quot;, j);&lt;br /&gt;
			cbox.id = &amp;quot;item&amp;quot; + j;&lt;br /&gt;
			cbox.onchange = function(e){&lt;br /&gt;
				// 表示/非表示の切り替え&lt;br /&gt;
				var index = this.parentElement.parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			};&lt;br /&gt;
			line.appendChild(cbox);&lt;br /&gt;
			var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;item&amp;quot; + j);&lt;br /&gt;
			label.innerHTML = (j+1) + &amp;quot;.&amp;quot; + escape(result[i].map[j].title);&lt;br /&gt;
			line.appendChild(label);&lt;br /&gt;
			listDiv.appendChild(line);&lt;br /&gt;
		}&lt;br /&gt;
		sortableList.appendChild(listDiv);&lt;br /&gt;
		$('#sortableList' + i).sortable({&lt;br /&gt;
			cursor: 'move',&lt;br /&gt;
			update: function(event, ui){&lt;br /&gt;
				var index = ui.item[0].parentElement.id.replace(&amp;quot;sortableList&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
				var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
				var sequence = [];&lt;br /&gt;
				for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
					if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
						sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				setHeatmapData(index, sequence);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$('#sortableList').sortable(false);&lt;br /&gt;
&lt;br /&gt;
		// それぞれのレート/全体でのレート&lt;br /&gt;
		var rateCbox = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;type&amp;quot;, &amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		rateCbox.setAttribute(&amp;quot;checked&amp;quot;, &amp;quot;yes&amp;quot;);&lt;br /&gt;
		rateCbox.id = &amp;quot;eachInRate&amp;quot;;&lt;br /&gt;
		rateCbox.onchange = function(e){&lt;br /&gt;
			// rateの切り替え&lt;br /&gt;
			var index = 0; // つであると仮定するので、複数ある場合は修正が必要なことに注意&lt;br /&gt;
			var sortableList = document.getElementById(&amp;quot;sortableList&amp;quot; + index);&lt;br /&gt;
			var sequence = [];&lt;br /&gt;
			for(var i = 0, j = 0; i &amp;lt; sortableList.childNodes.length; i ++){&lt;br /&gt;
				if(sortableList.childNodes[i].childNodes[0].checked)&lt;br /&gt;
					sequence[j++] = sortableList.childNodes[i].childNodes[0].getAttribute(&amp;quot;seq&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			setHeatmapData(index, sequence);&lt;br /&gt;
		};&lt;br /&gt;
		var label = document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		label.setAttribute(&amp;quot;for&amp;quot;, &amp;quot;eachInRate&amp;quot;);&lt;br /&gt;
		label.innerHTML = &amp;quot;Each in rate&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(rateCbox);&lt;br /&gt;
		document.getElementById(&amp;quot;rate&amp;quot;).appendChild(label);&lt;br /&gt;
&lt;br /&gt;
		// ヒートマップ&lt;br /&gt;
		chart[i] = new Highcharts.Chart({&lt;br /&gt;
	&lt;br /&gt;
			chart: {&lt;br /&gt;
				type: 'heatmap',&lt;br /&gt;
				zoomType: 'xy',&lt;br /&gt;
				animation: 1,&lt;br /&gt;
				marginBottom: 0,&lt;br /&gt;
				plotBorderWidth: 1,&lt;br /&gt;
				renderTo: parent,&lt;br /&gt;
				animation: true,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			scrollbar: {&lt;br /&gt;
				enabled: true&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			title: {&lt;br /&gt;
				text: title,&lt;br /&gt;
				align: 'left'&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			xAxis: {&lt;br /&gt;
				categories: result[i].x,&lt;br /&gt;
				opposite: true,&lt;br /&gt;
				labels: {&lt;br /&gt;
					rotation: -90,&lt;br /&gt;
					style: {&lt;br /&gt;
						fontSize: '11px',&lt;br /&gt;
						fontFamily: 'Verdana, sans-serif'&lt;br /&gt;
					},&lt;br /&gt;
					step: 1&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			yAxis: {&lt;br /&gt;
				categories: yLabels,&lt;br /&gt;
				title: null,&lt;br /&gt;
				labels: {&lt;br /&gt;
					step: 1&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			colorAxis: {&lt;br /&gt;
				min: 0,&lt;br /&gt;
				max: 100,&lt;br /&gt;
				minColor: '#ffffff',&lt;br /&gt;
				maxColor: Highcharts.getOptions().colors[8]&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			legend: {&lt;br /&gt;
				align: 'right',&lt;br /&gt;
				layout: 'vertical',&lt;br /&gt;
				margin: 0,&lt;br /&gt;
				verticalAlign: 'top',&lt;br /&gt;
				y: 100,&lt;br /&gt;
				symbolHeight: 145&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			tooltip: {&lt;br /&gt;
				formatter: function () {&lt;br /&gt;
					return this.series.yAxis.categories[this.point.y] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
							this.series.xAxis.categories[this.point.x] + '&amp;lt;br /&amp;gt;' +&lt;br /&gt;
						 	(Math.round(this.point.value*10)/10) + ' %';&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			series: [{&lt;br /&gt;
				name: 'HEK',&lt;br /&gt;
				borderWidth: 1,&lt;br /&gt;
				data: data,&lt;br /&gt;
				dataLabels: {&lt;br /&gt;
					enabled: false,&lt;br /&gt;
					color: '#000000'&lt;br /&gt;
				},&lt;br /&gt;
				point: {&lt;br /&gt;
					events: {&lt;br /&gt;
						/*mouseOver: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', 'red');&lt;br /&gt;
								target.css('fontWeight', 'bold');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', 'red');&lt;br /&gt;
						   $(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', 'bold');&lt;br /&gt;
						},&lt;br /&gt;
						mouseOut: function() {&lt;br /&gt;
							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
							var target = getTarget(this.series.chart.xAxis[0].labelGroup.element.childNodes, result[index].x[this.x]);&lt;br /&gt;
							if(target != null){&lt;br /&gt;
								target.css('fill', '#666666');&lt;br /&gt;
								target.css('fontWeight', '');&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fill', '#666666');&lt;br /&gt;
							$(this.series.chart.yAxis[0].labelGroup.element.childNodes[this.y]).css('fontWeight', '');&lt;br /&gt;
						},*/&lt;br /&gt;
						click: function(event){&lt;br /&gt;
//							var index = event.target.farthestViewportElement.parentNode.parentElement.id.replace(&amp;quot;container&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
							getInchiOnHeatmap(0, event.point.x, event.point.y);&lt;br /&gt;
//							jumpToJcbl(event.point.series.chart.inchi[event.point.y][event.point.x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}]&lt;br /&gt;
	&lt;br /&gt;
		});&lt;br /&gt;
		chart[i].inchi = inchi;&lt;br /&gt;
		//chart.setSize(600,300,false);&lt;br /&gt;
	}&lt;br /&gt;
	resizeChart();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ※未使用※ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
function getTarget(children, target)&lt;br /&gt;
{&lt;br /&gt;
	for(var i = 0; i &amp;lt; children.length; i ++){&lt;br /&gt;
		if(target == children[i].childNodes[0].textContent){&lt;br /&gt;
			return $(children[i]);&lt;br /&gt;
		}&lt;br /&gt;
	//	console.log(children[i].childNodes[0].textContent);&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sunflower</name></author>	</entry>

	</feed>