/*
 * dialog.js
 * http://tasuke.dna.affrc.go.jp/
 *
 * Author: Jungsok Kim, Ryutaro Itoh
 *
 * Copyright (c) 2013 National Institute of Agrobiological Sciences   
 *
 */

function _showLoadingDialog(){
	$("#dialog_progress").dialog({
		autoOpen: true,
		modal: true,
		width: 300,
		dialogClass: 'DialogNoTitle',
		draggable: true,
		resizable: false
	});
	_drawProgress(0);
	$('.DialogNoTitle > .ui-dialog-titlebar').css("display", "none");
}

function _drawProgress(value,start){
	var str = "";
	if(_isUndefined(start)){
		str = "<progress value='"+value+"' max='100'></progress>"+value+"%";
		$('span[id=load_progress_bar]').html(str);
	}else{
		var wait = 0;
		var val = start;
		for(var i=start; i<value; i++){
			wait = wait+10;
			PROGRESSTIMER = setTimeout(function(){
				val++;
				str = "<progress value='"+val+"' max='100'></progress>"+val+"%";
				$('span[id=load_progress_bar]').html(str);
			},10+wait);
			if(i == (value-1)){
				BUSYDETECTTIMER = setTimeout(function(){
					var str = "<p>Although 30 seconds have been passed, the data processing has not finished yet. For resolving this problem, click the 'Reset' button and clear cached data. If the problem persists, contact administrator.</p>";
					str += "<button type=\"submit\" onclick=\"_dlg_reset_confirm();\">Reset</button>";
					str += "<button type=\"submit\" onclick=\"_closeLoadingDialog();\">Close</button>";
					$("#progress_error").html(str);
				},30000);
				//BUSYDETECTTIMER = setTimeout("_loadingError()",10000);
			}
		}
	}
}

function _closeLoadingDialog(){
	$("#dialog_progress").dialog('close');
}

function _dialog_cond(){
	var str = "";
	var mode_name = "";
	var en = new Object(JSON.parse(storage.getItem("_Env")));
	var condArray = storage.getItem("_CrtCondition").split("|");
	var cond = parseInt(condArray[0]);

	var dialog = $("#dialog_cstm_cond").dialog({
		autoOpen: true,
		modal: false,
		width: 550,
		draggable: true,
		resizable: true,
		dialogClass: 'ui-dialog-cstm-cond'
	});
	setClickEventToDialog(dialog, '.ui-dialog-cstm-cond');
	changeDialogZindex(".ui-dialog-cstm-cond");

	//select
	for (var i=0;i<Objects.Conditions.length;i++)str = str+"<option value='"+i+"'>"+_escapeHTML(Objects.Conditions[i].id)+"</option>";
	$('select[name=prm_cond_sel]').find('option').remove().end().append(str);
	$("select[name=prm_cond_sel]").val(cond);
	//state
	_setCondName();
	//slider
	$(function() {
		var select = $( "#prm_cond_sel" );
		var slider = $( "#cond_slider" ).slider({
			min: 0,
			max: Objects.Conditions.length-1,
			value: select[0].selectedIndex ,
			//orientation: "vertical",
			slide: function( event, ui ) {
				select[0].selectedIndex =  ui.value;
				condArray = storage.getItem("_CrtCondition").split("|");
				condArray[0] = parseInt( ui.value);
				storage.setItem("_CrtCondition", condArray.join("|"));
				_setCondName();
				_setCondSelect();
				_drawCanvas();
			}
		});
		$( "#prm_cond_sel" ).change(function() {
			slider.slider( "value", this.selectedIndex );
			condArray = storage.getItem("_CrtCondition").split("|");
			condArray[0] = parseInt(this.selectedIndex);
			storage.setItem("_CrtCondition", condArray.join("|"));
			_setCondName();
			_setCondSelect();
			_drawCanvas();
		});
	});

	//Multiple view
	$("#manager_cstm_max_para0").val(en.cstm_max_col);
	$("#manager_cstm_min_para0").val(en.cstm_min_col);
	$("#manager_cstm_max_para1").val(en.cstm_max_col_para1);
	$("#manager_cstm_min_para1").val(en.cstm_min_col_para1);
	$("#manager_cstm_max_para2").val(en.cstm_max_col_para2);
	$("#manager_cstm_min_para2").val(en.cstm_min_col_para2);
	$("#manager_cstm_max_para3").val(en.cstm_max_col_para3);
	$("#manager_cstm_min_para3").val(en.cstm_min_col_para3);
	str = "<option value=''>None</option>"+str;
	for (var i=0;i<condArray.length;i++){
		$('select[name=cond_select_row'+i+']').find('option').remove().end().append(str);
		$('select[name=cond_select_row'+i+']').val(condArray[i]);
		if(i == 0){
			$("select[name=cond_select_row"+i+"] option[value='']").attr("disabled", "disabled");
		}
		if(i>Objects.Conditions.length-1){
			$('select[name=cond_select_row'+i+']').attr("disabled", "disabled");
		}
	}
	_drawMulticondInd();
	var colorObjects=["#manager_cstm_max_para0","#manager_cstm_min_para0","#manager_cstm_max_para1","#manager_cstm_min_para1","#manager_cstm_max_para2","#manager_cstm_min_para2","#manager_cstm_max_para3","#manager_cstm_min_para3"];
	for(var b=0; b<colorObjects.length; b++){
		$(colorObjects[b]).ColorPicker({
			onSubmit: function(hsb, hex, rgb, el) {
				$(el).val("#"+hex);
				$(el).ColorPickerHide();
				_drawMulticondInd(1);
			},
			onBeforeShow: function () {
				$(this).ColorPickerSetColor(this.value);
			}
		}).bind('keyup', function(){
			$(this).ColorPickerSetColor(this.value);
		});
	}
	_drawCondPreview();
	/*
  if($("#cond_multi_view").is(":hidden") != true){
    $("#cond_multi_view").hide();
  }
	 */
}

function _showMultiCond(){
	if ($("#cond_multi_view").is(":hidden")) {
		$("#cond_multi_view").slideDown("fast");
		document.getElementById('cond_multi_triangle').className = "ui-icon ui-icon-triangle-1-s";
	} else {
		$("#cond_multi_view").slideUp();
		document.getElementById('cond_multi_triangle').className = "ui-icon ui-icon-triangle-1-e";
	}
}

function _setMultiCond(){
	var condArray = storage.getItem("_CrtCondition").split("|");
	for(var i=0; i<condArray.length; i++){
		var tgt = 'select[name=cond_select_row'+i+']';
		condArray[i] = $(tgt).val();
	}
	storage.setItem("_CrtCondition", condArray.join("|"));
	_setCondSelect();
}

function _setCondSelect(){
	var str = "";
	var condArray = storage.getItem("_CrtCondition").split("|");
	var cond = parseInt(condArray[0]);
	//select
	for (var i=0;i<Objects.Conditions.length;i++)str = str+"<option value='"+i+"'>"+_escapeHTML(Objects.Conditions[i].id)+"</option>";
	$('select[name=prm_cond_sel]').find('option').remove().end().append(str);
	$("select[name=prm_cond_sel]").val("");
	$("select[name=prm_cond_sel]").val(cond);
	str = "<option value=''>None</option>"+str;
	for (var i=0;i<condArray.length;i++){
		$('select[name=cond_select_row'+i+']').find('option').remove().end().append(str);
		$('select[name=cond_select_row'+i+']').val(condArray[i]);
		if(i == 0){
			$("select[name=cond_select_row"+i+"] option[value='']").attr("disabled", "disabled");
		}
		if(i>Objects.Conditions.length-1){
			$('select[name=cond_select_row'+i+']').attr("disabled", "disabled");
		}
	}
	_setCondName();
	_drawCondPreview();
	_drawCanvas();
}


function _setCondName(){
	var en = new Object(JSON.parse(storage.getItem("_Env")));
	var condArray = storage.getItem("_CrtCondition").split("|");
	var cond = parseInt(condArray[0]);
	var mode_name = en.cstm_name.substr(0, 10)+" : "+Objects.Conditions[cond].id.substr(0, 10);
	$("#cond_crt_state").text(mode_name);
}

//////////////////////////////////////////////////////////////////////////////////////
//dialog for phylogenetic analysis

function _createGffWindow(id, pos, end, link, seq){
	var elementTrack = document.getElementById("cvs_tracks"); 
	var elementcell = document.getElementById("cellinf"); 
	var elementcellDoc = document.getElementById("cellinf_doc"); 
	var bounds = elementTrack.getBoundingClientRect(); 
	var boux = bounds.left;
	var bouy = bounds.top;
	elementcell.style.left = (boux+XY.x1+10)+'px';
	elementcell.style.top = (bouy+XY.y1)+'px'; 
//	elementcellDoc.style.width = (230)+"px";
//	elementcellDoc.style.height = (240)+"px";
        elementcellDoc.style.width = (280)+"px";
        elementcellDoc.style.height = "auto";
	elementcellDoc.style.backgroundColor = 'white';
/*
	if(link!="http://rapdb.dna.affrc.go.jp/viewer/gene_detail/irgsp1?name="+_escapeHTML(id)) {
		link = "about:blank";
	}
*/
	var strForGff = "<div style='color:white;background-color:rgb(60,179,113)'>"+_escapeHTML(id)+"<div class='gffWindowClose' style='float:right'><span class='ui-icon ui-icon-close' onclick='_windowGffClose();'></span></div></div>"+
	"<div style='padding-left:10px;word-break:break-all;'>"+
	"<p><strong>Position</strong><br>"+
	"<span class='gffWindowStr'>"+_escapeHTML(Objects.Chr)+" "+parseInt(pos)+"-"+parseInt(end)+"</span></p>"+
	"<p><strong>Link</strong><br>";

	if(link) {
		strForGff += "<span class='gffWindowItems'><a target='_blank' href='" + link + "'>" + _escapeHTML(id) + "</a></span>";
	} else {
		strForGff += "<span class='gffWindowStr'>" + _escapeHTML(id) + "</span>";
	}
	strForGff += "</p>";

	var targetPos = _escapeHTML(id) + "|" + parseInt(pos) + "|" + parseInt(end) + "|" + _escapeHTML(Objects.Chr);	
	var cb_hlvar_exclude_updown_checked = "";
	if(storage.getItem("_HighlightVariantExclUpDown") === "1") cb_hlvar_exclude_updown_checked = "checked";

	var buttonStyle = "width:118px;";
	strForGff += "<span id='trackDetail'></span>" +
	"<p><strong>Analysis</strong><br>"+
	"<a class='phylo gffWindowItems' onclick=\"_dialog_phy('"+parseInt(pos)+","+parseInt(end)+","+_escapeHTML(id)+"');\">Phylogenetic analysis</a><br>"+
	//"<span class='gffWindowItems' onclick=\"_dialog_p3('d1|"+IDo.pos+"|"+end+"');\">Primer designing<span></p>"+
	"<p><strong>Export</strong><br>"+
	"<span class='gffWindowItems' onclick=\"_dialog_fa('"+parseInt(pos)+","+parseInt(end)+"');\">FASTA</span><br>"+
	"<span class='gffWindowItems' onclick=\"_dialog_csv('"+parseInt(pos)+","+parseInt(end)+"');\">TSV</span></p>"+
	"</div>"+
	"<div style=\"border:solid 1px #AAAAAA;padding:4px;margin:5px;text-align:right;\">" +
	"<label for=\"cb_hlvar_exclude_updown\"><input type=\"checkbox\" id=\"cb_hlvar_exclude_updown\" " + cb_hlvar_exclude_updown_checked + ">Exclude UP/DOWN</label> " +
	"<button onclick=\"_highlightGeneVariant('" + targetPos + "')\" style=\"" + buttonStyle + "\">Highlight variant</button>";

	if(id === storage.getItem("_HighlightVariantGene")) {
		strForGff += "<button onclick=\"_clearHighlightedVariantAndCloseDialog()\" style=\"margin-top:3px;" + buttonStyle + "\">Clear highlight</button>";
	}

	strForGff += "</div>" +
	"<div style='text-align:center;margin-bottom:4px;'>" +
	"<button onclick=\"_zoomFromGffWindow('" + targetPos + "')\">Zoom</button>" +
	"<div>";
	elementcellDoc.innerHTML = strForGff;
	elementcellDoc.style.border = "solid 2px #b0c4de"; 

        $.ajax({
                url: "./bin/targetTrack.php",
                cache: false,
                async: false,
                data: {
                        "prm_Seq": seq
                },
                success: function(data) {
                        if(data != null && data != "") {
                            json = JSON.parse(data);
                            if(json.others != "") {
				var othersArray = json.others.split(';');
				var infoHtml = "";
				var flgDirectDisp = false;
				var flgIndent = false;
				if(othersArray.length==1) {
					// Plain String
					infoHtml = _escapeHTML(json.others) + "<br>";
					flgIndent = true;
					if(json.others.length<110) flgDirectDisp = true;
				} else {
					// Table
					flgIndent = false;
					if(othersArray.length<4) flgDirectDisp = true;
					infoHtml += "<table>";
					for(var i=0,othersArrayLen=othersArray.length; i<othersArrayLen; i++) {
						if(!othersArray[i]) continue;
						var keyVal = othersArray[i].split('=');
						if(keyVal.length == 1) keyVal.unshift("---");
						infoHtml += "<tr><th style='width:35%;padding:3px;'>" + _escapeHTML(keyVal[0]) + "</th>" + 
							"<td style='padding:3px;'>" + _escapeHTML(keyVal[1]) + "</td></tr>";
					}
					infoHtml += '</table>';
				}
                                var html = "<p><div style='display: inline-block; _display: inline;'><strong>Information</strong></div><br>";
				var contentClass = "";
				if(flgIndent) contentClass += 'gffWindowStr';
				if(flgDirectDisp) {
					html += "<div class='" + contentClass + "' style='padding-right:3px;'>" + infoHtml + "</div>";
				} else {
					contentClass = 'grad-wrap ' + contentClass;
					html += "<div class='" + contentClass + "'>" +
						"<input id='trigger1' class='grad-trigger' type='checkbox'>" +
						"<label class='grad-btn' for='trigger1'></label>" +
						"<div class='grad-item' style='padding-right:3px;'>" + infoHtml + "<br></div>" +
						"</div>";
				}
                                document.getElementById("trackDetail").innerHTML = html;
                            }
                        }
                }
        });
}
//////////////////////////////////////////////////////////////////////////////////////
function _clearHighlightedVariantAndCloseDialog() {
	_windowGffClose();
	_clearHighlightedGeneVariant();
}
//dialog for phylogenetic analysis

function _dialog_phy(str){
	/*
	$("#dialog_phy").dialog({
		autoOpen: true,
		modal: false,
		width: 880,
		maxHeight: window.innerHeight-15,
		draggable: true,
		resizable: true,
                position: {
                        of:'body',
                        at:'top',
                        my:'center'
                }
	});
	*/
	
	var phyloflg = '';
	var phylopos = '';
        for(var i=0; i<minPos.length; i++) {
            if(minPos[i] == 'phylo') {
                    phylopos = i;
                    phyloflg = 1;
            }
        }
	if(phyloflg==1) {
        	for(var i=phylopos; i<minPos.length; i++) {
            		if (minPos[i+1] !== undefined) {
                    		minPos[i] = minPos[i+1];
            		} else {
                		minPos.pop();
            		}
            		leftpos = (parseInt(175)*(parseInt(i))+ parseInt(5)*(parseInt(i+1)))+'px';
            		$("."+minPos[i+1]+"_window").css('left',leftpos);
        	}
	}

        var phydlgH = $("#tasuke").height()-20;
        if (phydlgH > 786 ) {
                phydlgH = 785;
        }
        $("#dialog_phy").css('height',phydlgH);
        $(".phylo_content").css('height',phydlgH-43);
        $("#dialog_phy").css('max-height', 785);
        $(".phylo_content").css('max-height', 785-43);
//        $("#dialog_phy").css('max-height',phydlgH);
//        $(".phylo_content").css('max-height',phydlgH-43);
        $("#dialog_phy").css('display','inline-block');

        if($(".under_phy").hasClass('fa-window-restore')){
                $(".under_phy").toggleClass('fa-window-restore fa-window-minimize');
        }
        if($("#dialog_phy").hasClass('minimized')){
                $("#dialog_phy").toggleClass('minimized');
                $("#dialog_phy").css('top','0px');
                //$("#dialog_phy").css('position','fixed');
		$("#dialog_phy").css('min-height','42px');
		$("#dialog_phy").css('min-width','268px');
                $(".phylo_content").css('display','inline-block');
                $(".phylo_content").css('background-color','white');
                $("#dialog_phy").css('width','900px');
                $("#phylo_title").css('width','888px');
                $("#phylo_title").css('max-width','888px');
                $("#phylo_title").css('min-width','260px');
                $(".phylo_content").css('width','896px');
                $("#phylo_title").css('top','4px');
                $("#phylo_title").css('left','4px');
                $("#dialog_phy .minimize").css('top','9px');
                $("#dialog_phy .close").css('top','9px');
		document.getElementById("tname").innerHTML = "&nbsp;&nbsp;Phylogenetic tree";
                document.getElementById("tname").style.fontSize = "20px";
        }

	changeDialogZindex(".phylo_window");
/*
        winFront[winFront.length] = 'phylo';
        for (var i = 0; i < winFront.length; i++) {
                $("."+winFront[i]+"_window").css('z-index',1000+i);
        }
*/
	var blk = storage.getItem("_Block");
	var s = parseInt(Objects.Pos-1)*_cvtZoom(Objects.Zoom)+1;
	var e = s+(blk*_cvtZoom(Objects.Zoom))-1;

	var highlightRegions;
	try { highlightRegions = JSON.parse(storage.getItem("_RegHighlights")); } catch (e) {}
	if( !(highlightRegions instanceof Array) ) highlightRegions = [];

	var id = "";
	var cri = document.getElementById("prm_phy_cri");
	if(str){
		var params = str.split(",");
		s = parseInt(params[0]);
		e = parseInt(params[1]);
		id = _escapeHTML(params[2]);
		$("#prm_phy_objid").val(id);
		document.getElementById("prm_phy_gene").checked = true;
		cri.options[1].selected = true;
	} else {
		if(highlightRegions.length > 0 && highlightRegions[0].chr == Objects.Chr) {
			s = parseInt(highlightRegions[0].st);
			e = parseInt(highlightRegions[0].en);
		}
		$("#prm_phy_objid").val("");
		document.getElementById("prm_phy_gene").checked = false;
		cri.options[0].selected = true;
	}
	if((e-s) >= 19999){e=s+19999;} 
	$("#prm_phy_s").val(s);
	$("#prm_phy_e").val(e);

	// Set parameters
	var o = new Object(JSON.parse(storage.getItem("_Chrs")));
	var en = new Object(JSON.parse(storage.getItem("_Env")));
	var ld="";
	var sl = document.getElementById("flk_len_phy");
	var res = document.getElementById("phy_result");
	var len = e-s+1;

	for (var i=0; i<o.length; i++) ld = ld+"<option value='"+o[i].id+"'>"+en.chromosome_name+o[i].id+"</option>";
	$('#prm_phy_chr').find('option').remove().end().append(ld);
	$("#prm_phy_chr").val(Objects.Chr);
	$("#prm_phy_qual").val(storage.getItem("_QUAL"));
	$("#prm_phy_dp").val(storage.getItem("_DP"));
	$("#prm_phy_list").val(_getList("db"));
	var l=new Object(JSON.parse(storage.getItem('_Lists')));
        var d=new Object(JSON.parse(storage.getItem('_ListsDeleted')));
        var ls="";
        var ld="";
        var ss="";
  	var phenohash = new Array();
	if(phenotypeFlg) {
  		phenoexp = storage.getItem("_Phenoexp");
  		phenoexps = phenoexp.split("|");
  		//var phenohash = new Array();
  		for(i=0; i<phenoexps.length;i++) {
        		phenotmp = phenoexps[i].split(",");
        		phenohash[phenotmp[0]] = phenotmp[1];
  		}
	}	

        _appendTitleWOption();
	$('#prm_tw').val(storage.getItem('_TitleW'));
        $('#prm_switch_name').val(storage.getItem('_Name'));
        $('#prm_switch_sub').val(storage.getItem('_NameSub'));
        for (var i=0;i<l.length;i++){
                if ( Objects.Name == "id" ) {
                        ss=l[i].id
                        ss2=l[i].id
                } else {
                        ss=l[i].name
                        if (ss.length > 15) {
                                ss2 = ss.substr(0,14) + "~";
                        } else {
				ss2 = ss;
			}
                }
		var st = "";
		if(!phenotypeFlg) {
			 phenohash[l[i].id] = "";
			 phenohash[l[i].name] = "";
		}
		if (phenohash[l[i].id] === undefined) {
                	st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss2.replace(/^\s+|\s+$/g, ""), l[i].variety.replace(/^\s+|\s+$/g, ""), l[i].grp.replace(/^\s+|\s+$/g, ""), "").replace(/\s/g,"&nbsp;");
                	ls=ls+"<option value='"+l[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+l[i].variety.replace(/^\s+|\s+$/g, "")+"|"+l[i].grp.replace(/^\s+|\s+$/g, "")+"|"+""+"'>"+st+"</option>";
		} else {
                	st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss2.replace(/^\s+|\s+$/g, ""), l[i].variety.replace(/^\s+|\s+$/g, ""), l[i].grp.replace(/^\s+|\s+$/g, ""), phenohash[l[i].id].replace(/^\s+|\s+$/g, "")).replace(/\s/g,"&nbsp;");
                	ls=ls+"<option value='"+l[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+l[i].variety.replace(/^\s+|\s+$/g, "")+"|"+l[i].grp.replace(/^\s+|\s+$/g, "")+"|"+phenohash[l[i].id].replace(/^\s+|\s+$/g, "")+"'>"+st+"</option>";
		}	
	}
        for (var i=0;i<d.length;i++){
                if ( Objects.Name == "id" ) {
                        ld=ld+"<option value='"+d[i].id+"'>"+d[i].id+"</option>";
                } else {
                        ld=ld+"<option value='"+d[i].id+"'>"+d[i].name+"</option>";
                }
        }
        $('#idlst').find('option').remove().end().append(ls);
        $('#tree_qry').find('option').remove().end().append(ld);
	storage.setItem("_usePhylo",ls);
	//select phenotype
	if (phenotypeFlg) {
           var strname = storage.getItem("_Phenotype");
	   var phenoname = "";
        if (strname.length > 13) {
                loop = Math.ceil(strname.length /13);
                for (var i=0;i<loop;i++) {
                        start = 13 * i;
                        end = 13 * (i + 1);
                        phenoname += strname.substring(start,end)+ "<br>";
                }
        } else {
                phenoname = strname;
        }
	}
        //button for sorting
        var butSort = "<button class=\"asc\" style=\"width:135px;\" id=\"pSort\"  onClick=\"_sort_accession_phylo(1,'asc')\" >ID/Name</button>\
                <button class=\"asc\" id=\"pSort2\" style=\"width:125px;\" onClick=\"_sort_accession_phylo(2,'asc')\">Variety</button>\
                <button class=\"asc\" id=\"pSort3\" style=\"width:125px;\" onClick=\"_sort_accession_phylo(3,'asc')\">Subvariety</button>\
                <button class=\"asc\" id=\"pSort4\" style=\"width:125px;\" onClick=\"_sort_accession_phylo(4,'asc')\">" + phenoname + "</button>";
        $('#run_sortings').html(butSort);

        $('button.asc').button({
                icons: {
                        secondary: 'ui-icon-triangle-1-n'
                }
        });
        $('button.desc').button({
                icons: {
                        secondary: 'ui-icon-triangle-1-s'
                }
        });

	if (len > 20000){
		len = 20000;
	}else if (len < 0){
		len = 0;
	}
	sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+parseInt(len)+"&nbsp;bp";
	res.innerHTML = "";
	_dialog_phy_len();
	_changePosID();
	_setClickPhenotypePhyloEvent();
}

//////////////////////////////////////////////////////////////////////////////////////
//sequence length for phylogenetic analysis

function _dialog_phy_len(){
	var s = document.getElementById("prm_phy_s");
	var e = document.getElementById("prm_phy_e");
	var dp = document.getElementById("prm_phy_dp");
	var q = document.getElementById("prm_phy_qual");
	var sub = document.getElementById("phy_submit");
	var sl = document.getElementById("flk_len_phy");
	var idmsg = document.getElementById("phy_id_msg");
	var vdp = dp.value;
	var vq = q.value;
	var len = e.value-s.value+1;
	var sv =s.value;
	var ev =e.value;
	idmsg.innerHTML = "";
	if(s.checkValidity() && e.checkValidity() && sv!=0 && ev!=0 && len > 0 && len <= 20000){
		sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+parseInt(len)+"&nbsp;bp";
		sub.disabled = false;
		passed = 1;
        } else {
                if (!s.checkValidity() || !e.checkValidity()) {
                        len="<font color=\"#FF0000\">Please input postion!</font>";
                        sl.innerHTML = len;
			sub.disabled = true;
		} else if (len > 20000){
			len = 20000;
			e.value=(parseInt(sv)+19999);
			sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+parseInt(len)+"&nbsp;bp";
/*
                        len="<font color=\"#FF0000\">Maximum size between start and end is 20,000 bp.</font>";
                        sl.innerHTML = len;
                        sub.innerHTML = "<input id=\"phy_submit\" type=\"submit\" value=\"Run\" disabled=\"true\">";
*/
		} else if (len <= 0){
			//len = 0;
			len="<font color=\"#FF0000\">Please check start-postion and end-postion.</font>";
			//sl.innerHTML = parseInt(len);
			sl.innerHTML = len;
			sub.disabled = true;
		}
	}
        if (passed == 1) {
                var qualmsg = document.getElementById("flk_qual_phy");
                var dpmsg = document.getElementById("flk_dp_phy");

                if(dp.checkValidity() && q.checkValidity() && vdp>=0 && vq>=0){
                        qualmsg.innerHTML = "";
                        dpmsg.innerHTML = "";
                        sub.disabled = false;
			passed = 2;
                } else {
                        if (!dp.checkValidity() || vdp<0) {
                                dpmsg.innerHTML = "<font color=\"#FF0000\">DEPTH value is invalid!</font>";
				sub.disabled = true;
                        } else if ( !q.checkValidity() || vq<0) {
                                qualmsg.innerHTML = "<font color=\"#FF0000\">Quality value is invalid!</font>";
				sub.disabled = true;
                        }
                }
        }
        if (passed == 2) {
                if(document.getElementById("prm_phy_cri").value == 1) {
                        var objidv = document.getElementById("prm_phy_objid").value;
                        if(objidv == "") {
                                idmsg.innerHTML = "<font color=\"#FF0000\">Input a annotaion id for phylogenetic analysis.</font>";
				sub.disabled = true;
                        } else if(objidv.indexOf('<script>') != -1){
                                idmsg.innerHTML = "<font color=\"#FF0000\">Input paramater is invalid.</font>";
				sub.disabled = true;
                        } else {
                                valgene = _validateGene(objidv);
                                if (!valgene) {
                                        idmsg.innerHTML = "<font color=\"#FF0000\">This Gene ID is invalid.</font>";
					sub.disabled = true;
                                } else {
                                        var pos = valgene.split(",");
                                        var st = pos[0];
                                        var ed = pos[1];
					var chr = pos[2];
					if ($("#prm_phy_gene").prop("checked") == true) {
						cdslen = _getCDSlength(objidv);
						len = parseInt(cdslen);
					} else {
                                        	len = parseInt(ed)-parseInt(st)+1;
					}
					$("#prm_phy_chr").val(chr);
					$("#prm_phy_s").val(st);
					$("#prm_phy_e").val(ed);
                                        idmsg.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+parseInt(len)+"&nbsp;bp";
					sub.disabled = false;
                                }
                        }
                }
        }
}

function _changePosID() {
        if (document.getElementById("prm_phy_cri").value == 0 && document.getElementById("prm_phy_gene").checked === true) {
                document.getElementById("prm_phy_gene").checked = false;
        }

        var elmcri = document.getElementById("prm_phy_cri");
        var elmid = document.getElementById("prm_phy_objid");
        var elmchr = document.getElementById("prm_phy_chr");
        var elms = document.getElementById("prm_phy_s");
        var elme = document.getElementById("prm_phy_e");
        var elmgene = document.getElementById("prm_phy_gene");
	var sl = document.getElementById("flk_len_phy");
	var sub = document.getElementById("phy_submit");
        if(elmcri.value == 0){
                elmchr.disabled = false;
                elms.disabled = false;
                elme.disabled = false;
                elmid.disabled = true;
                elmgene.disabled = true;
                elmid.value = "";
                $("#phy_id_msg").empty();
/*
                if (elmid.value == "") {
                        var blk = storage.getItem("_Block");
                        var s = parseInt(Objects.Pos-1)*_cvtZoom(Objects.Zoom)+1;
                        var e = s+(blk*_cvtZoom(Objects.Zoom))-1;
                        if (e-s < 20000) {
                                len = parseInt(e) - parseInt(s)+1;
                                elms.value=parseInt(s);
                                elme.value=parseInt(e);
                        } else {
                                var stpos=parseInt(storage.getItem("_Pos")-1) * _cvtZoom(storage.getItem("_Zoom")) + 1;
                                len = 20000;
                                elms.value=parseInt(stpos);
                                elme.value=(parseInt(stpos)+19999);
                        }
                        $("#prm_phy_chr").val(storage.getItem("_Chr"));
                        $("#phy_id_msg").val(storage.getItem("_Chr"));
                }
                sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+parseInt(len)+"&nbsp;bp";
*/
        }else{
                elmid.disabled = false;
                elmgene.disabled = false;
                if (elmid.value == "") {
/*
                        var blk = storage.getItem("_Block");
                        var s = parseInt(Objects.Pos-1)*_cvtZoom(Objects.Zoom)+1;
                        var e = s+(blk*_cvtZoom(Objects.Zoom))-1;
                        if (e-s < 19999) {
                                len = parseInt(e) - parseInt(s)+1;
                                elms.value=parseInt(s);
                                elme.value=parseInt(e);
                        } else {
                                var stpos=parseInt(storage.getItem("_Pos")-1) * _cvtZoom(storage.getItem("_Zoom")) + 1;
                                len = 20000;
                                elms.value=parseInt(stpos);
                                elme.value=(parseInt(stpos)+19999);
                        }
                        sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+parseInt(len)+"&nbsp;bp";
*/
                        $("#phy_id_msg").append("<font color=\"#FF0000\">Input a annotaion id for phylogenetic analysis.</font>");
                }
		sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;" + (parseInt(elme.value) - parseInt(elms.value) + 1) + "&nbsp;bp";

                elmchr.disabled = true;
                elms.disabled = true;
                elme.disabled = true;
        }
	sub.disabled = false;
}
//////////////////////////////////////////////////////////////////////////////////////
//  dialog "BLAST" add kasadera
//////////////////////////////////////////////////////////////////////////////////////
function _dialog_blast(primer3ArrayForBLASTLeft,primer3ArrayForBLASTRight,p3_track){
  /*
  $("#dialog_blast").dialog({
    autoOpen: true,
    modal: false,
    width: 850,
    maxHeight: window.innerHeight-15,
    draggable: true,
    resizable: true,
    position: {
    	of:'body',
        at:'top',
        my:'center'
    }
  });
  */
        storage.setItem("_runBlast",0);
        
	var blastpos = '';
	var blastflg = '';
        for(var i=0; i<minPos.length; i++) {
            if(minPos[i] == 'blast') {
                    blastpos = i;
                    blastflg = 1;
            }
        }
	if (blastflg == 1) {
        	for(var i=blastpos; i<minPos.length; i++) {
            		if (minPos[i+1] !== undefined) {
                	    minPos[i] = minPos[i+1];
            		} else {
                	    minPos.pop();
            		}
			leftpos = (parseInt(175)*(parseInt(i))+ parseInt(5)*(parseInt(i+1)))+'px';
            		$("."+minPos[i+1]+"_window").css('left',leftpos);
        	}
	}
	changeDialogZindex(".blast_window");	
/*
	winFront[winFront.length] = 'blast';
	for (var i = 0; i < winFront.length; i++) {
		$("."+winFront[i]+"_window").css('z-index',1000+i);
	}
*/
	$("#blastSetting").slideUp();
        $('#blst_opt.open').toggleClass('open close');
        $('#blst_opt.close').toggleClass('ui-icon-triangle-1-s ui-icon-triangle-1-e');
        $('#blst_opt.close').removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');
        $("#blastHistArea").slideUp();
        $('#blst_hist.open').toggleClass('open close');
        $('#blst_hist.close').toggleClass('ui-icon-triangle-1-s ui-icon-triangle-1-e');
        $('#blst_hist.close').removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');

        $(".blast_window").css('height', '372px');
        $(".blast_content").css('height', '329px');
        $(".blast_window").css('max-height', '372px');
        $(".blast_content").css('max-height', '329px');

	$(".blast_window").css('display','inline-block');
	$('#p3result').remove();
        if($(".under_blast").hasClass('fa-window-restore')){
		$(".under_blast").toggleClass('fa-window-restore fa-window-minimize');
        }
        if($("#dialog_blast").hasClass('minimized')){
                $("#dialog_blast").toggleClass('minimized');
                $("#dialog_blast").css('top','0px');
                //$("#dialog_blast").css('position','fixed');
                $(".blast_content").css('display','inline-block');
                $("#dialog_blast").css('width','800px');
		$(".blast_content").css('width','796px');
                $("#blast_title").css('width','788px');
                $("#blast_title").css('max-width','788px');
		$("#dialog_blast").css('min-width','178px');
		$("#dialog_blast").css('min-height','42px');
                $("#blast_title").css('top','4px');
                $("#blast_title").css('left','4px');
                $("#dialog_blast .minimize").css('top','9px');
                $("#dialog_blast .close").css('top','9px');
		document.getElementById("bname").innerHTML = "&nbsp;&nbsp;BLAST";
                document.getElementById("bname").style.fontSize = "20px";
		$("#dialog_blast").css('height','');
        }
	if(primer3ArrayForBLASTLeft === undefined) {
        	blastQryArea="<textarea id=\"blast_qryarea\" cols=60 rows=4></textarea>";
	}else {
        	blastQryArea="<textarea id=\"blast_qryarea\" cols=60 rows=4>"+">left\n"+primer3ArrayForBLASTLeft+"\n"+">Right\n"+primer3ArrayForBLASTRight+"</textarea>";
	}
	$('#blastQry').html(blastQryArea);
	$('#p3result').empty();
	$('#dialog_blast').append("<input type=\"hidden\" id=\"p3result\" value=\""+p3_track+"\">");
	_sessionBlastStart();
};

function _dialog_blast_len(){
        var ws = document.getElementById("blast_word_size");
        var mm = document.getElementById("max_matches");
        var ev = document.getElementById("blast_eval");
        var wsm = document.getElementById("bls_ws_msg");
        var mmm = document.getElementById("bls_mm_msg");
        var evm = document.getElementById("bls_ev_msg");
        var sub = document.getElementById("blast_submit");
        var wsv = ws.value;
        var mmv = mm.value;
        var evv = ev.value;
        var passed = 0;
        if(ws.checkValidity() && mm.checkValidity() && ev.checkValidity() && wsv>=1 && mmv>=0 && evv>0){
                wsm.innerHTML = "";
                mmm.innerHTML = "";
                evm.innerHTML = "";
                sub.disabled = false;
//                sub.innerHTML = "<button type=\"submit\" name=\"blast_submit\" onclick=\"_runBlast();\">Run</button>";
                passed = 1;
        } else {
                if (!ws.checkValidity()) {
                        wsm.innerHTML = "<font color=\"#FF0000\">Please input word size!</font>";
                        sub.disabled = true;
//                        sub.innerHTML = "<button type=\"submit\" name=\"blast_submit\" onclick=\"_runBlast();\" disabled = \"true\">Run</button>";
                } else if (!mm.checkValidity()) {
                        mmm.innerHTML = "<font color=\"#FF0000\">Please input max matches!</font>";
                        sub.disabled = true;
//                        sub.innerHTML = "<button type=\"submit\" name=\"blast_submit\" onclick=\"_runBlast();\" disabled = \"true\">Run</button>";
                } else if (!ev.checkValidity() || !isFinite(evv) || evv<0) {
                        evm.innerHTML = "<font color=\"#FF0000\">Please input E-value!</font>";
                        sub.disabled = true;
//                        sub.innerHTML = "<button type=\"submit\" name=\"blast_submit\" onclick=\"_runBlast();\" disabled = \"true\">Run</button>";
                }
        }
}

//dialog "_dialog_primer3"
function _dialog_p3(str){
	/*
	$("#dialog_p3").dialog({
		autoOpen: true,
		modal: false,
		width: 800,
		maxHeight: window.innerHeight-15,
		draggable: true,
		resizable: true,
		position: {
			of:'body',
			at:'top',
			my:'center'
		}
	});
	*/
	var p3pos = '';
	var p3flg = '';
        for(var i=0; i<minPos.length; i++) {
            if(minPos[i] == 'p3') {
                    p3pos = i;
                    p3flg = 1;
            }
        }
	if(p3flg == 1) {
        	for(var i=p3pos; i<minPos.length; i++) {
            		if (minPos[i+1] !== undefined) {
                	    minPos[i] = minPos[i+1];
            		} else {
                	    minPos.pop();
            		}
            		leftpos = (parseInt(175)*(parseInt(i))+ parseInt(5)*(parseInt(i+1)))+'px';
            		$("."+minPos[i+1]+"_window").css('left',leftpos);
        	}
	}

        $("#dialog_p3").css('height',$("#tasuke").height()-20);
        $(".p3_content").css('height',$("#tasuke").height()-63);

        $("#dialog_p3").css('max-height', "1240px");
        $(".p3_content").css('max-height', "1197px");
//        $(".p3_content").css('max-height',$("#tasuke").height()-60);
//        $("#dialog_p3").css('max-height',$("#tasuke").height()-22);

	$(".p3_window").css('display','inline-block');
        if($(".under_p3").hasClass('fa-window-restore')){
                $(".under_p3").toggleClass('fa-window-restore fa-window-minimize');
        }
	if($("#dialog_p3").hasClass('minimized')){
		$("#dialog_p3").toggleClass('minimized');
        	$("#dialog_p3").css('top','0px');
        	//$("#dialog_p3").css('position','fixed');
        	$(".p3_content").css('display','inline-block');
		$("#dialog_p3").css('width','800px');
		$("#dialog_p3").css('min-height','34px');
		//$("#dialog_p3").css('max-width','800px');
		$("#dialog_p3").css('min-width','286px');
		$(".p3_content").css('width','800px');
		$(".p3_content").css('max-width','800px');
		$(".p3_content").css('min-width','286px');
		$("#p3_title").css('width','798px');
		$("#p3_title").css('max-width','798px');
		$("#p3_title").css('min-width','284px');
		$("#p3_title").css('left','4px');
		$("#p3_title").css('top','4px');
                $("#dialog_p3 .minimize").css('top','7px');
                $("#dialog_p3 .close").css('top','7px');
		document.getElementById("p3name").innerHTML = "&nbsp;&nbsp;Primer designing";
		document.getElementById("p3name").style.fontSize = "20px";
	}
	changeDialogZindex(".p3_window");
/*
        winFront[winFront.length] = 'p3';
        for (var i = 0; i < winFront.length; i++) {
                $("."+winFront[i]+"_window").css('z-index',1000+i);
        }
*/	
        //define target site
	var blk=storage.getItem("_Block");
	var highlightRegions;
	try { highlightRegions = JSON.parse(storage.getItem("_RegHighlights")); } catch (e) {}
	if( !(highlightRegions instanceof Array) ) highlightRegions = [];
	dlgchk = str.split("---BLS---");
	var s = parseInt(Objects.Pos-1)*_cvtZoom(Objects.Zoom)+1;
	var e = s+(blk*_cvtZoom(Objects.Zoom))-1;
	if((e-s) >= 99){e=s+99;}
	if(!isNaN(dlgchk[1]) && !isNaN(dlgchk[2])) {
		// Pick primers
		s = parseInt(dlgchk[1]);
		e = parseInt(dlgchk[2]);
	} else if(highlightRegions.length > 0) {
		// Highlight region
		if(highlightRegions[0].chr == Objects.Chr) {
			s = parseInt(highlightRegions[0].st);
			e = parseInt(highlightRegions[0].en);
		}
	}
	$("#prm_rp3_tgt").val(s);
	$("#prm_rp3_tgt_e").val(e);
	$("#prm_p3_tgt").val(s);
	$("#prm_p3_tgt_e").val(e);

	var minProductSize = e - s + 1;
		if(minProductSize < 100) minProductSize = 100;
	var maxProductSize = 500 + minProductSize + 500;
	        if(maxProductSize > 50000) maxProductSize = 50000;

	$("#prm_rp3_prdmi").val(minProductSize);
	$("#prm_rp3_prdmx").val(maxProductSize);
        $("#prm_epcr_prdmi").val(minProductSize);
        $("#prm_epcr_prdmx").val(maxProductSize);

	//for exporting sequence 
	var strarray = str.split("|");
	var variant=strarray[3];
	var q=storage.getItem("_QUAL");
	var dp=storage.getItem("_DP");
	var s = s-500;
	var e = e+500;
	if (s < 1){s=1;}
	$("input[name=prm_p3_var]").val(variant);
	$("input[name=prm_p3_qual]").val(q);
	$("input[name=prm_p3_dp]").val(dp);
	$("input[name=prm_p3_flk]").val(500);
//	$("#prm_p3_flk").val(500);
	$("input[name=prm_p3_s]").val(s);
	$("input[name=prm_p3_e]").val(e);

	// Set chromosome
	var o=new Object(JSON.parse(storage.getItem("_Chrs")));
	var en=new Object(JSON.parse(storage.getItem("_Env")));
	if($('#prm_rp3_chr').find('option').length === 0) {
		for (var i=0;i<o.length;i++) {
			var opt = new Option(en.chromosome_name + o[i].id, o[i].id, false, false);
			$('#prm_rp3_chr').append(opt).trigger('change');

			var opt2 = new Option(en.chromosome_name + o[i].id, o[i].id, false, false);
			$('#prm_p3_chr').append(opt2).trigger('change');
		}
/*
		var ld="";
		for (var i=0;i<o.length;i++) ld = ld + "<option value='" + o[i].id + "'>" + en.chromosome_name + o[i].id + "</option>";
		$('#prm_rp3_chr').find('option').remove().end().append(ld);
		$('#prm_p3_chr').find('option').remove().end().append(ld);
*/
	}
	$('#prm_rp3_chr').val(Objects.Chr).trigger('change');
	$('#prm_p3_chr').val(Objects.Chr).trigger('change');
//	$('#prm_rp3_chr').val(Objects.Chr);
//	$('#prm_p3_chr').val(Objects.Chr);

	//Form & param
	var name=storage.getItem("_Name");
	var nameS=storage.getItem("_NameSub");
	$("#prm_p3_name").val(name);
	$("#prm_p3_nameS").val(nameS);
	$("#prm_p3_ref").val(en.reference_name);
	$('#dialog_p3').tabs();

	//dynamic contents
	var chr = document.getElementById("_Chr");
	var sl = document.getElementById("flk_len");
	var len = 500;
	var flk5=len;
	var flk3=len;
	if((s-len) < 0){flk5=s-(s-len);}
	if((e+len) > parseInt(_last_Chr("1b",chr))){flk3=e-(e+len);}
	sl.innerHTML = "5\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+parseInt(flk5)+"&nbsp;bp<br>3\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+parseInt(flk3)+"&nbsp;bp";
	_dialog_p3_len();
	_dialog_rp3_len();
	var res = document.getElementById("p3_query_res");
	res.innerHTML="";
/*
	if($("#p3Setting").is(":hidden") != true){
		$("#p3Setting").hide();
	}
*/
	if($("#p3HistArea").is(":hidden") != true){
		$("#p3HistArea").hide();
	}

	_dialog_rp3_len();

	_sessionStart();
	_helpEvent();
	_helpEvent2();
}
/*
function _initp3Dlg() {
	$("#prm_rp3_flk").val("500");
	$("#prm_p3_flk").val("500");
	$("#prm_rp3_avd").val("0");
	$("#prm_p3_avd").val("0");
	var element = document.getElementById("prm_rp3_Ns");
        var elements = element.Ns_selection;
        elements[0].checked = true;
        _showVarsite(1);
	var element2 = document.getElementById("prm_rp3_DN");
        var elements2 = element2.DN_selection;
        elements2[0].checked = true;
	_hideDPmenu(0);
	$("#prm_NA_ratio").val("0");
	$("#prm_NA_num").val("0");
	$("#prm_rp3_prdmi").val("100");
	$("#prm_rp3_prdmx").val("300");
	$("#prm_rp3_sizopt").val("20");
	$("#prm_rp3_sizmax").val("27");
	$("#prm_rp3_sizmin").val("18");
	$("#prm_rp3_tmopt").val("60");
	$("#prm_rp3_tmmx").val("63");
	$("#prm_rp3_tmmi").val("57");
	$("#prm_rp3_tmdif").val("1");
	var element3 = document.getElementById("prm_epcr_onoff");
        var elements3 = element3.epcr_selection;
        elements3[0].checked = true;
        _hideePCRsite(0);
	$("#prm_epcr_prdmi").val("100");
	$("#prm_epcr_prdmx").val("300");
	$("#prm_epcr_tmmx").val("63");
        $("#prm_epcr_tmmi").val("57");
        $("#prm_epcr_KCl").val("50");
        $("#prm_epcr_MgCl2").val("1.5");
        $("#prm_epcr_dNTP").val("0.6");
        $("#prm_epcr_annealing").val("50");
        $("#prm_rp3_lowmsk").val("0");
	var element4 = document.getElementById("prm_rp3_Ns2");
        var elements4 = element4.Ns2_selection;
        elements4[0].checked = true;
        _showVarsite2(1);
}
*/	

//For run Primer3
function _slideP3Setting(){
	if ($("#p3Setting").is(":hidden")) {
		$("#p3Setting").slideDown("fast");
		$('#p3_set.close').toggleClass('open');
		$('#p3_set.close').removeClass('close');
		$('#p3_set.open').toggleClass('ui-icon-triangle-1-e ui-icon-triangle-1-s');
	} else {
		$("#p3Setting").slideUp();
		$('#p3_set.open').toggleClass('close');
		$('#p3_set.open').removeClass('open');
		$('#p3_set.close').toggleClass('ui-icon-triangle-1-s ui-icon-triangle-1-e');
	}
}

function _hideVarsite(val){
        if (val==0) {
                $(".varsite").slideUp();
        }
}


function _showVarsite(val){
        if (val==1) {
                $(".varsite").slideDown("fast");
	}
}

function _hideDPmenu(val){
        if (val==0) {
                $(".DPmenu").slideUp();
        }
}


function _showDPmenu(val){
        if (val==1) {
                $(".DPmenu").slideDown("fast");
        }
}

function _hideVarsite2(val){
	if(val==0) {
		$(".varsite2").slideUp();
        }
}

function _hideePCRsite(val){
        if (val==0) {
		$("input[name='epcr_selection']:eq(1)").prop('checked',true);
                $("#epcrSetting").slideUp();
		$('#ePCR_tri.open').toggleClass('close');
                $('#ePCR_tri.open').removeClass('open');
		if ($("#ePCR_tri").hasClass("ui-icon-triangle-1-s")) {
                	$('#ePCR_tri.close').toggleClass('ui-icon-triangle-1-s ui-icon-triangle-1-e');
		}
        }
}


function _showePCRsite(val){
        if (val==1) {
		$("input[name='epcr_selection']:eq(0)").prop('checked',true);
                $("#epcrSetting").slideDown("fast");
		$('#ePCR_tri.close').toggleClass('open');
                $('#ePCR_tri.close').removeClass('close');
		if ($("#ePCR_tri").hasClass("ui-icon-triangle-1-e")) {
                	$('#ePCR_tri.open').toggleClass('ui-icon-triangle-1-e ui-icon-triangle-1-s');
		}
        }
}

function _showVarsite2(val){
        if (val==1) {
                $(".varsite2").slideDown("fast");
        }
}

function _slideP3History(){
	if ($("#p3HistArea").is(":hidden")) {
		$("#p3HistArea").slideDown("fast");
                $('#p3_tri.close').toggleClass('open');
                $('#p3_tri.close').removeClass('close');
                $('#p3_tri.open').toggleClass('ui-icon-triangle-1-e ui-icon-triangle-1-s');
	} else {
		$("#p3HistArea").slideUp();
                $('#p3_tri.open').toggleClass('close');
                $('#p3_tri.open').removeClass('open');
                $('#p3_tri.close').toggleClass('ui-icon-triangle-1-s ui-icon-triangle-1-e');
	}
}

function _slideBlastHistory(){
        if ($("#blastHistArea").is(":hidden")) {
                $("#blastHistArea").slideDown("fast");
    		$('#blst_hist.close').toggleClass('open');
    		$('#blst_hist.close').removeClass('close');
    		$('#blst_hist.open').toggleClass('ui-icon-triangle-1-e ui-icon-triangle-1-s');
		if (storage.getItem("_blstHistFlg") == 1 || $("#blst_opt").hasClass("open")) {
			collapseBlastDialog(false);
/*
			$(".blast_window").css('height', ($("#tasuke").height()-20) + 'px');
			$(".blast_content").css('height', ($("#tasuke").height()-63) + 'px');

    			$(".blast_window").css('max-height', $("#tasuke").height()-20);
    			$(".blast_content").css('max-height', $("#tasuke").height()-63);
    			$(window).resize(function() {
        			if(!($(".blast_window").hasClass('minimized'))){
                			$(".blast_window").css('height', $("#tasuke").height()-20);
                			$(".blast_window").css('max-height', $("#tasuke").height()-20);
                			$(".blast_content").css('height', $("#tasuke").height()-63);
                			$(".blast_content").css('max-height', $("#tasuke").height()-63);
				}
			 });
*/
		}
        } else {
                $("#blastHistArea").slideUp();
                $('#blst_hist.open').toggleClass('close');
                $('#blst_hist.open').removeClass('open');
                $('#blst_hist.close').toggleClass('ui-icon-triangle-1-s ui-icon-triangle-1-e');
		if (storage.getItem("_runBlast") == 0 && $("#blst_opt").hasClass("close")) {
			collapseBlastDialog(true);
/*
			$(".blast_window").css('max-height', '382px');
   	 		$(".blast_content").css('max-height', '339px');
                	$(window).resize(function() {
                		$(".blast_window").css('max-height', '382px');
                		$(".blast_content").css('max-height', '339px');
                	});
*/
		} else if (storage.getItem("_runBlast") == 1 || $("#blst_opt").hasClass("open")){
			collapseBlastDialog(false);
/*
                        $(".blast_window").css('height', ($("#tasuke").height()-20) + 'px');
                        $(".blast_content").css('height', ($("#tasuke").height()-63) + 'px');
                        $(".blast_window").css('max-height', $("#tasuke").height()-20);
                        $(".blast_content").css('max-height', $("#tasuke").height()-63);
                        $(window).resize(function() {
                                if(!($(".blast_window").hasClass('minimized'))){
                                        $(".blast_window").css('height', $("#tasuke").height()-20);
                                        $(".blast_window").css('max-height', $("#tasuke").height()-20);
                                        $(".blast_content").css('height', $("#tasuke").height()-63);
                                        $(".blast_content").css('max-height', $("#tasuke").height()-63);
                                }
                         });
*/
		}
        }
}
function _slideBlast(){
  if ($("#blastSetting").is(":hidden")) {
    $("#blastSetting").slideDown("fast");
    $('#blst_opt.close').toggleClass('close open');
    $('#blst_opt.open').toggleClass('ui-icon-triangle-1-e ui-icon-triangle-1-s');

    collapseBlastDialog(false);
/*
    $(".blast_window").css('height', ($("#tasuke").height()-20) + 'px');
    $(".blast_content").css('height', ($("#tasuke").height()-63) + 'px');

    $(".blast_window").css('max-height', $("#tasuke").height()-20);
    $(".blast_content").css('max-height', $("#tasuke").height()-63);
    $(window).resize(function() {
        if(!($(".blast_window").hasClass('minimized'))){
                $(".blast_window").css('height', $("#tasuke").height()-20);
                $(".blast_window").css('max-height', $("#tasuke").height()-20);
                $(".blast_content").css('height', $("#tasuke").height()-63);
                $(".blast_content").css('max-height', $("#tasuke").height()-63);
        }
    });
*/
  } else {
    $("#blastSetting").slideUp();
    $('#blst_opt.open').toggleClass('open close');
    $('#blst_opt.close').toggleClass('ui-icon-triangle-1-s ui-icon-triangle-1-e');
    if (storage.getItem("_runBlast") != 1) {
	collapseBlastDialog(true);
/*
   	$(".blast_window").css('max-height', '382px');
   	$(".blast_content").css('max-height', '339px');
    	$(window).resize(function() {
      		$(".blast_window").css('max-height', '382px');
      		$(".blast_content").css('max-height', '339px');
    	});
*/
    }
  }
}

/*
function _slideePCR(){
  if ($("#epcrSetting").is(":hidden")) {
    $("#epcrSetting").slideDown("fast");
  } else {
    $("#epcrSetting").slideUp();
  }
}
*/

function _slideePCRTable(count) {
  if ($("#epcrTable"+count).is(":hidden")) {
    $("#epcrTable"+count).slideDown("fast");
  } else {
    $("#epcrTable"+count).slideUp();
  }
}
/*
function _formOnOFF(val){
  if (val==0){
    for(i=0;i<document.epcrSet.elements.length;i++){
      document.epcrSet.elements[i].disabled = "true"; // 入力不可
    }
  } else if (val==1){
    for(i=0;i<document.epcrSet.elements.length;i++){
      document.epcrSet.elements[i].disabled = ""; // 入力可能
    }
  }
}
*/

function _switchCosts(scores) {
	var score = scores.options[scores.selectedIndex].value;
        var select = document.getElementById('gap_costs');
        select.textContent = null;
        var selectBox = _selectPairs(score);
        for (var i in selectBox) {
                var option = document.createElement('option');
                option.setAttribute('value',i);
                option.innerHTML = _escapeHTML(selectBox[i]);
                select.appendChild(option);
        }
}

function _selectPairs(scores) {
if(scores == "1,-2") {
                var selectBox = {
                        '5,2' : 'Existence: 5 Extension: 2',
                        '2,2' : 'Existence: 2 Extension: 2',
                        '1,2' : 'Existence: 1 Extension: 2',
                        '0,2' : 'Existence: 0 Extension: 2',
                        '3,1' : 'Existence: 3 Extension: 1',
                        '2,1' : 'Existence: 2 Extension: 1',
                        '1,1' : 'Existence: 1 Extension: 1',
                };
        } else if (scores == "1,-3") {
                var selectBox = {
                        '5,2' : 'Existence: 5 Extension: 2',
                        '2,2' : 'Existence: 2 Extension: 2',
                        '1,2' : 'Existence: 1 Extension: 2',
                        '0,2' : 'Existence: 0 Extension: 2',
                        '2,1' : 'Existence: 2 Extension: 1',
                        '1,1' : 'Existence: 1 Extension: 1',
                };
        } else if (scores == "1,-4") {
                var selectBox = {
                        '5,2' : 'Existence: 5 Extension: 2',
                        '1,2' : 'Existence: 1 Extension: 2',
                        '0,2' : 'Existence: 0 Extension: 2',
                        '2,1' : 'Existence: 2 Extension: 1',
                        '1,1' : 'Existence: 1 Extension: 1',
                };
        } else if (scores == "2,-3") {
                var selectBox = {
                        '4,4' : 'Existence: 4 Extension: 4',
                        '2,4' : 'Existence: 2 Extension: 4',
                        '0,4' : 'Existence: 0 Extension: 4',
                        '3,3' : 'Existence: 3 Extension: 3',
                        '6,2' : 'Existence: 6 Extension: 2',
                        '5,2' : 'Existence: 5 Extension: 2',
                        '4,2' : 'Existence: 4 Extension: 2',
                        '2,2' : 'Existence: 2 Extension: 2',
                };
        } else if (scores == "4,-5") {
                var selectBox = {
                        '12,8' : 'Existence: 12 Extension: 8',
                        '6,5' : 'Existence: 6 Extension: 5',
                        '5,5' : 'Existence: 5 Extension: 5',
                        '4,5' : 'Existence: 4 Extension: 5',
                        '3,5' : 'Existence: 3 Extension: 5',
                };
        } else if (scores == "1,-1") {
                var selectBox = {
                        '5,2' : 'Existence: 5 Extension: 2',
                        '3,2' : 'Existence: 3 Extension: 2',
                        '2,2' : 'Existence: 2 Extension: 2',
                        '1,2' : 'Existence: 1 Extension: 2',
                        '0,2' : 'Existence: 0 Extension: 2',
                        '4,1' : 'Existence: 4 Extension: 1',
                        '3,1' : 'Existence: 3 Extension: 1',
                        '2,1' : 'Existence: 2 Extension: 1',
                };
        }
        return(selectBox);
}

//Validate sequence length for primer template  

function _dialog_p3_len(){
//console.log("Test:_dialog_p3_len");
        var sub = document.getElementById("p3_submit");
        var tgterr = document.getElementById("tgt_len_err2");
        var flk = document.getElementById("prm_p3_flk");
        var sl = document.getElementById("flk_len");
        var tgt = document.getElementById("prm_p3_tgt");
        var tgte = document.getElementById("prm_p3_tgt_e");
        var dp = document.getElementById("prm_p3_dp");
        var q = document.getElementById("prm_p3_qual");
        var chr = document.getElementById("prm_p3_chr");
        var avd = document.getElementById("prm_p3_avd");
        var avderr = document.getElementById("avd_err2");
        var qterr = document.getElementById("qt_err2");
        var dperr = document.getElementById("dp_err2");
        var avdv = parseInt(avd.value);
        var vdp = parseInt(dp.value);
        var vq = parseInt(q.value);
        var flkv = parseInt(flk.value);
        var tgtv = parseInt(tgt.value);
        var tgtev = parseInt(tgte.value);
        var string="";
        var passed=0;

        if(tgt.checkValidity() && tgte.checkValidity() && tgtv!=0 && tgtev!=0 && tgtev >= tgtv && tgtev <= parseInt(_last_Chr("1b",chr.value))){
                tgterr.innerHTML = "";
                avderr.innerHTML = "";
                qterr.innerHTML = "";
                dperr.innerHTML = "";
                if((tgtv-flkv) < 0){flk5=tgtv-1;}
                if((tgtev+flkv) > parseInt(_last_Chr("1b",chr.value))){flk3=parseInt(_last_Chr("1b",chr.value))-tgtev-1;}
                //if((tgtev-tgtv) <= 9999){
                if((tgtev-tgtv+flkv*2) <= 49999){
                        var flk5=flkv;
                        var flk3=flkv;
                        if((tgtv-flkv) < 0){flk5=tgtv-1;}
                        if((tgtev+flkv) > parseInt(_last_Chr("1b",chr.value))){flk3=parseInt(_last_Chr("1b",chr.value))-tgtev;}
                        sl.innerHTML = "5\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk5+"&nbsp;bp<br>3\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk3+"&nbsp;bp";
			sub.disabled = false;
                        passed=1;
                }else if (!flk.checkValidity() || flkv<0) {
                        string="<font color=\"#FF0000\">Invalid value.</font>";
                        sl.innerHTML = string;
			sub.disabled = true;
                        passed = 0;
                }else{
                        string="<font color=\"#FF0000\">Target + flanking region is too long!<br>Maximum size of target + flanking region is 50,000 bp.</font>";
                        tgterr.innerHTML = string;
                        var flk5=flkv;
                        var flk3=flkv;
                        if((tgtv-flkv) < 0){flk5=tgtv-1;}
                        if((tgtev+flkv) > parseInt(_last_Chr("1b",chr.value))){flk3=parseInt(_last_Chr("1b",chr.value))-tgtev;}
                        sl.innerHTML = "5\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk5+"&nbsp;bp<br>3\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk3+"&nbsp;bp";
			sub.disabled = true;
                        passed=0;
                }
        }else{
                string="<font color=\"#FF0000\">Invalid value. Please input target position!</font>";
                sl.innerHTML = string;
		sub.disabled = true;
                passed=0;
        }

        var flk5=flkv;
        var flk3=flkv;
        if(passed == 1){
                if(avd.checkValidity() && dp.checkValidity() && q.checkValidity() && vdp>=0 && vq>=0 && avdv>=0 && flkv >= avdv){
			sub.disabled = false;
//                        sub.innerHTML = "<button type=\"submit\" name=\"prm_p3_submit\" onClick=\"_genPrimer3Query();\" >Export</button>";
                } else{
                        if (!avd.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Avoid sites around the target (bp).</font>";
                                avderr.innerHTML = string;
			} else if (!q.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Quality.</font>";
                                qterr.innerHTML = string;
                        } else if (!dp.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in DEPTH.</font>";
                                dperr.innerHTML = string;
			}
			sub.disabled = true;
		}
        }
        $("#prm_p3_s").val(tgtv-flk5);
        $("#prm_p3_e").val(parseInt(tgtev)+parseInt(flk3));
}


//Validate sequence length for primer template  

function _dialog_rp3_len(flg){
//console.log("Test:_dialog_rp3_len");
	var sub = document.getElementById("rp3_submit");
	var flk = document.getElementById("prm_rp3_flk");
	var sl = document.getElementById("flk_len_r");
	var tgt = document.getElementById("prm_rp3_tgt");
	var tgte = document.getElementById("prm_rp3_tgt_e");
	var tgterr = document.getElementById("tgt_len_err");
	var chr = document.getElementById("prm_rp3_chr");
	var avd = document.getElementById("prm_rp3_avd");
	var avderr = document.getElementById("avd_err");
	var dp = document.getElementById("prm_rp3_dp");
	var q = document.getElementById("prm_rp3_qual");
	var qterr = document.getElementById("qt_err");
	var dperr = document.getElementById("dp_err");
	var rdperr = document.getElementById("rdp_err");
	var ndperr = document.getElementById("ndp_err");
	var genseterr = document.getElementById("gen_set_err");
	var epcrerr = document.getElementById("epcr_err");
        var dp_ratio = document.getElementById("prm_NA_ratio");
        var dp_num = document.getElementById("prm_NA_num");
	var avdv = parseInt(avd.value);
	var vdp = parseInt(dp.value);
	var vq = parseInt(q.value);
	var prdmi = document.getElementById("prm_rp3_prdmi");
	var prdmx = document.getElementById("prm_rp3_prdmx");
	var sizeopt = document.getElementById("prm_rp3_sizopt");
	var sizmax = document.getElementById("prm_rp3_sizmax");
	var sizmin = document.getElementById("prm_rp3_sizmin");
	var tmopt = document.getElementById("prm_rp3_tmopt");
	var tmmx = document.getElementById("prm_rp3_tmmx");
	var tmmi = document.getElementById("prm_rp3_tmmi");
	var tmdif = document.getElementById("prm_rp3_tmdif");
	var lowmsk = document.getElementById("prm_rp3_lowmsk");
        var epcrmi = document.getElementById("prm_epcr_prdmi");
        var epcrmx = document.getElementById("prm_epcr_prdmx");
        var epcrtmmx = document.getElementById("prm_epcr_tmmx");
        var epcrtmmi = document.getElementById("prm_epcr_tmmi");
        var kcl = document.getElementById("prm_epcr_KCl");
        var mgcl2 = document.getElementById("prm_epcr_MgCl2");
        var dntp = document.getElementById("prm_epcr_dNTP");
        var anling = document.getElementById("prm_epcr_annealing");
	var flkv = parseInt(flk.value);
	var tgtv = parseInt(tgt.value);
	var tgtev = parseInt(tgte.value);
	var prdmxv = parseInt(prdmx.value);
	var prdmiv = parseInt(prdmi.value);
        var sizeoptv = parseInt(sizeopt.value);
        var sizmaxv = parseInt(sizmax.value);
        var sizminv = parseInt(sizmin.value);
	var tmoptv = parseInt(tmopt.value);
	var tmmxv = parseInt(tmmx.value);
	var tmmiv = parseInt(tmmi.value);
	var tmdifv = parseInt(tmdif.value);
	var epcrmiv = parseInt(epcrmi.value);
	var epcrmxv = parseInt(epcrmx.value);
        var epcrtmmxv = parseInt(epcrtmmx.value);
        var epcrtmmiv = parseInt(epcrtmmi.value);

	var string="";
	var passed=0;
	if(flg === undefined) {
		flg = "";
	}

	if(tgt.checkValidity() && tgte.checkValidity() && tgtv!=0 && tgtev!=0 && tgtev >= tgtv && tgtev <= parseInt(_last_Chr("1b",chr.value))){
		//if((tgtev-tgtv) <= 9999){
		if((tgtev-tgtv+flkv*2) <= 49999){
			tgterr.innerHTML ="";
			avderr.innerHTML ="";
			qterr.innerHTML ="";
			dperr.innerHTML ="";
			rdperr.innerHTML ="";
			ndperr.innerHTML ="";
			genseterr.innerHTML ="";
			epcrerr.innerHTML ="";
                        var flk5=flkv;
                        var flk3=flkv;
                        if((tgtv-flkv) < 0){flk5=tgtv-1;}
                        if((tgtev+flkv) > parseInt(_last_Chr("1b",chr.value))){flk3=parseInt(_last_Chr("1b",chr.value))-tgtev;}
                        sl.innerHTML = "5\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk5+"&nbsp;bp<br>3\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk3+"&nbsp;bp";
                        sub.disabled = false;
			passed=1;
                }else if (!flk.checkValidity() || flkv<0) {
                        string="<font color=\"#FF0000\">Please input flanking region length!</font>";
                        sl.innerHTML = string;
			sub.disabled = true;
                        passed=0;
		}else{
                        string="<font color=\"#FF0000\">Target + flanking region is too long!<br>Maximum size of target + flanking region is 50,000 bp.</font>";
                        tgterr.innerHTML = string;
                        var flk5=flkv;
                        var flk3=flkv;
                        if((tgtv-flkv) < 0){flk5=tgtv-1;}
                        if((tgtev+flkv) > parseInt(_last_Chr("1b",chr.value))){flk3=parseInt(_last_Chr("1b",chr.value))-tgtev;}
                        sl.innerHTML = "5\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk5+"&nbsp;bp<br>3\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk3+"&nbsp;bp";
			sub.disabled = true;
                        passed=0;
		}
	}else{
		string="<font color=\"#FF0000\">Invalid value. Please input target position!</font>";
		tgterr.innerHTML = string;
		sub.disabled = true;
		passed=0;
	}

        var flk5=flkv;
        var flk3=flkv;
        if(passed == 1){
                if(avd.checkValidity() && dp.checkValidity() && q.checkValidity() && prdmi.checkValidity() && prdmx.checkValidity() && sizeopt.checkValidity()
                                && sizmax.checkValidity() && sizmin.checkValidity() && tmopt.checkValidity() && tmmx.checkValidity() && tmmi.checkValidity()  && tmdif.checkValidity()
                                && lowmsk.checkValidity() && vdp>=0 && vq>=0 && avdv>=0 && tmdifv >= 0 && flkv >= avdv && prdmxv >= prdmiv
                                && sizminv <= sizeoptv && sizeoptv <= sizmaxv && sizminv <= sizmaxv && tmmiv <= tmmxv && tmmiv <= tmoptv && tmoptv <= tmmxv){
			sub.disabled = false;
//                        sub.innerHTML = "<button type=\"submit\" name=\"prm_rp3_submit\" onClick=\"_runPrimer3();\" >Run</button>";
                        passed=2;
                } else{
                        if (!avd.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Avoid sites around the target (bp).</font>";
                                avderr.innerHTML = string;
                        } else if (flkv < avdv) {
                                string="<font color=\"#FF0000\">Flanking region is shorter than avoiding sites.</font>";
                                avderr.innerHTML = string;
                        } else if (!q.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Quality.</font>";
                                qterr.innerHTML = string;
                        } else if (!dp.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in DEPTH.</font>";
                                dperr.innerHTML = string;
                        } else if (!prdmi.checkValidity() || !prdmx.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Product size range.</font>";
                                genseterr.innerHTML = string;
                        } else if (prdmxv < prdmiv) {
                                string="<font color=\"#FF0000\">Product min size is larger than Product max size.</font>";
                                genseterr.innerHTML = string;
                        } else if (!sizeopt.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer optimum size.</font>";
                                genseterr.innerHTML = string;
                        } else if (!sizmax.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer max size.</font>";
                                genseterr.innerHTML = string;
                        } else if (!sizmin.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer min size.</font>";
                                genseterr.innerHTML = string;
                        } else if (sizminv > sizeoptv || sizeoptv > sizmaxv || sizminv > sizmaxv) {
                                string="<font color=\"#FF0000\">Primer size setting is invalid.</font>";
                                genseterr.innerHTML = string;
                        } else if (tmmiv > tmmxv || tmmiv > tmoptv || tmoptv > tmmxv) {
                                string="<font color=\"#FF0000\">Primer TM setting is invalid.</font>";
                                genseterr.innerHTML = string;
                        } else if (!tmopt.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer optimum TM.</font>";
                                genseterr.innerHTML = string;
                        } else if (!tmmx.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer max TM.</font>";
                                genseterr.innerHTML = string;
                        } else if (!tmmi.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer min TM.</font>";
                                genseterr.innerHTML = string;
                        } else if (!tmdif.checkValidity() || tmdifv < 0) {
				string="<font color=\"#FF0000\">Invalid value in Max TM diffrence.</font>";
                                genseterr.innerHTML = string;
			}
                        //genseterr.innerHTML = string;
			sub.disabled = true;
                        passed=0;
                }
        }

        var dp_ratio_v = parseFloat(dp_ratio.value);
        var dp_num_v = parseInt(dp_num.value);
        accnum=_getList("db").length;

        if(passed == 2){
                if(dp_ratio.checkValidity() && dp_num.checkValidity() && dp_ratio_v>=0 && dp_num_v>=0 && dp_ratio_v<=1 && dp_num_v <= accnum) {
                        if(flg == 1) {
                                dp_num =Math.floor(accnum * dp_ratio_v);
                                $("#prm_NA_num").val(dp_num);
                        } else if(flg ==2) {
                                var dp_num2 = dp_num_v * 100;
                                dp_ratio_pre =dp_num2 / accnum ;
                                dp_ratio = Math.round(dp_ratio_pre)/100;
                                $("#prm_NA_ratio").val(dp_ratio);
                        }
			sub.disabled = false;
//                        sub.innerHTML = "<button type=\"submit\" name=\"prm_rp3_submit\" onClick=\"_runPrimer3();\" >Run</button>";
                        passed = 3;
                } else {
                        if (!dp_ratio.checkValidity()) {
                                if (dp_ratio_v>1 || dp_ratio_v < 0) {
                                        string="<font color=\"#FF0000\">Ratio of \"DEPTH = NA\" accessions is between 0 to 1.</font>";
                                        rdperr.innerHTML = string;
                                } else {
                                        string="<font color=\"#FF0000\">Invalid value on Ratio of \"DEPTH = NA\" accessions.</font>";
                                        rdperr.innerHTML = string;
                                }
                        } else if (!dp_num.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Number of \"DEPTH = NA\" accessions.</font>";
                                ndperr.innerHTML = string;
                        } else if (dp_num_v > accnum || dp_num_v < 0) {
                                string="<font color=\"#FF0000\">Number of \"DEPTH = NA\" accessions is between 0 to "+accnum+".</font>";
                                 ndperr.innerHTML = string;
                        }
			sub.disabled = true;
                        passed = 0;
                }
        }

        $("#prm_rp3_s").val(tgtv-flk5);
        $("#prm_rp3_e").val(parseInt(tgtev)+parseInt(flk3));

        if (passed == 3) {
                if(epcrmi.checkValidity() && epcrmx.checkValidity() && epcrtmmx.checkValidity() && epcrtmmi.checkValidity() && kcl.checkValidity() && mgcl2.checkValidity() && dntp.checkValidity() && anling.checkValidity() && epcrmxv >= epcrmiv && epcrtmmxv >= epcrtmmiv) {
			sub.disabled = false;
                } else {
                        if(!epcrmi.checkValidity() || !epcrmx.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Product size range.</font>";
                                epcrerr.innerHTML = string;
                        } else if (epcrmxv < epcrmiv) {
                                string="<font color=\"#FF0000\">Product min size is larger than Product max size.</font>";
                                epcrerr.innerHTML = string;
                        } else if(!epcrtmmx.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer max TM.</font>";
                                epcrerr.innerHTML = string;
                        } else if(!epcrtmmi.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Primer min TM.</font>";
                                epcrerr.innerHTML = string;
                        } else if (epcrtmmxv < epcrtmmiv) {
                                string="<font color=\"#FF0000\">Product min TM is larger than Product max TM.</font>";
                                epcrerr.innerHTML = string;
                        } else if(!kcl.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Concentration of monovalent cations.</font>";
                                epcrerr.innerHTML = string;
                        } else if(!mgcl2.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Concentration of divalent cations.</font>";
                                epcrerr.innerHTML = string;
                        } else if(!dntp.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Concentration of dNTPs(mM).</font>";
                                epcrerr.innerHTML = string;
                        } else if(!anling.checkValidity()) {
                                string="<font color=\"#FF0000\">Invalid value in Annealing oligo concentration(nM).</font>";
                                epcrerr.innerHTML = string;
                        }
			sub.disabled = true;
                        passed=0;
                }
        }

        $("#prm_rp3_s").val(tgtv-flk5);
        $("#prm_rp3_e").val(parseInt(tgtev)+parseInt(flk3));
}


//dialog "_changeRef"

function _dialog_changeRef(i){
	$("#prm_chref").val(i);
	$("#dialog_chref").dialog({
		autoOpen: true,
		modal: true,
		width: 470,
		draggable: true,
		resizable: true
	});	
	var cr = document.getElementById("chref_ac");
	var o=new Object(JSON.parse(storage.getItem('_Lists')));
	var label = storage.getItem("_Name");
	if(Objects.Onebase=="off"){
		if ( storage.getItem("_Ref") != o[i].db ) {
			if(label == "id"){
				cr.innerHTML = "Change&nbsp;the&nbsp;reference&nbsp;sequence&nbsp;to&nbsp;<font color=\"red\">"+_escapeHTML(o[i].id)+"<\/font>.";
			} else{
				cr.innerHTML = "Change&nbsp;the&nbsp;reference&nbsp;sequence&nbsp;to&nbsp;<font color=\"red\">"+_escapeHTML(o[i].name)+"<\/font>.";
			}
		} else {
			cr.innerHTML = "Reset&nbsp;reference&nbsp;sequence.";
		}
	}else{
//		cr.innerHTML = "This&nbsp;function&nbsp;is&nbsp;disabled&nbsp;when&nbsp;the&nbsp;Block&nbsp;mode&nbsp;is&nbsp;turned&nbsp;off.";
		cr.innerHTML = "Turn ON Block mode to enable this function.";
	}
}


//Close dialog:changing reference

function _dlg_chref_cancel() {
	$("#dialog_chref").dialog('close');
}

//Downloading FASTA
function _dialog_fa(str){
	/*
	$("#dialog_fa").dialog({
		autoOpen: true,
		modal: true,
		width: 650,
		draggable: true,
		resizable: true
	});
	*/

        var p3flg = '';
        for(var i=0; i<minPos.length; i++) {
            if(minPos[i] == 'fasta') {
                    p3pos = i;
                    p3flg = 1;
            }
        }
        if(p3flg == 1) {
                for(var i=p3pos; i<minPos.length; i++) {
                        if (minPos[i+1] !== undefined) {
                            minPos[i] = minPos[i+1];
                        } else {
                            minPos.pop();
                        }
                        leftpos = (parseInt(175)*(parseInt(i))+ parseInt(5)*(parseInt(i+1)))+'px';
                        $("."+minPos[i+1]+"_window").css('left',leftpos);
                }
        }
	changeDialogZindex(".fasta_window");
/*
        winFront[winFront.length] = 'fasta';
        for (var i = 0; i < winFront.length; i++) {
                $("."+winFront[i]+"_window").css('z-index',1000+i);
        }
*/
        if($(".under_fasta").hasClass('fa-window-restore')){
                $(".under_fasta").toggleClass('fa-window-restore fa-window-minimize');
        }
	var $fadlgH = $("#tasuke").height() - 20;
	if ($fadlgH > 544 ) {
		$fadlgH = 483;
//		$fadlgH = 543;
	} 
        $("#dialog_fa").css('height',$fadlgH);
	$(".fasta_content").css('height',$fadlgH-43);

        $("#dialog_fa").css('max-height', 543);
        $(".fasta_content").css('max-height', 500);
//        $("#dialog_fa").css('max-height',$fadlgH);
//        $(".fasta_content").css('max-height',$fadlgH-43);

        $("#dialog_fa").css('display','inline-block');

        if($("#dialog_fa").hasClass('minimized')){
                $("#dialog_fa").toggleClass('minimized');
                $("#dialog_fa").css('top','0px');
                //$("#dialog_fa").css('position','fixed');
                $(".fasta_content").css('display','inline-block');
                $("#dialog_fa").css('width','');
                $("#dialog_fa").css('min-height','42px');
                $("#dialog_fa").css('min-width','178px');
                $("#fasta_title").css('width','848px');
                $("#fasta_title").css('max-width','848px');
                $("#fasta_title").css('top','4px');
                $("#fasta_title").css('left','4px');
                $("#dialog_fa .minimize").css('top','9px');
                $("#dialog_fa .close").css('top','9px');
                $(".fasta_content").css('width','');
                $("#dialog_fa").css('height','');
                $(".fasta_content").css('height','');
                $("#prm_keyword").val('');
                $("#prm_position").val('');
                document.getElementById("fastaname").innerHTML = "&nbsp;&nbsp;Exporting FASTA";
                document.getElementById("fastaname").style.fontSize = "20px";
        }

	var s=parseInt(Objects.Pos-1)*_cvtZoom(Objects.Zoom)+1;
	var blk=storage.getItem("_Block");
	var e=s+(blk*_cvtZoom(Objects.Zoom))-1;
	var highlightRegions;
	try { highlightRegions = JSON.parse(storage.getItem("_RegHighlights")); } catch (e) {}
	if( !(highlightRegions instanceof Array) ) highlightRegions = [];
	if(str){
		var params = str.split(",");
		s = parseInt(params[0]);
		e = parseInt(params[1]);
	} else if(highlightRegions.length > 0 && highlightRegions[0].chr == Objects.Chr) {
		s = parseInt(highlightRegions[0].st);
		e = parseInt(highlightRegions[0].en);
	}
	if((e-s) >= 19999){e=s+19999;}
	$("#prm_fa_s").val(s);
	$("#prm_fa_e").val(e);

	// Set parameters
	var o=new Object(JSON.parse(storage.getItem("_Chrs")));
	var en=new Object(JSON.parse(storage.getItem("_Env")));
	var ld="";
	var q=storage.getItem("_QUAL");
	var dp=storage.getItem("_DP");
	var name=storage.getItem("_Name");
	var nameS=storage.getItem("_NameSub");
	var sl = document.getElementById("seq_len");
	var len = e-s+1;

	for (var i=0;i<o.length;i++)ld=ld+"<option value='"+o[i].id+"'>"+en.chromosome_name+o[i].id+"</option>";
	$('#prm_fa_chr').find('option').remove().end().append(ld);
	$("#prm_fa_chr").val(Objects.Chr);
	$("#prm_fa_qual").val(q);
	$("#prm_fa_dp").val(dp);
	$("#prm_fa_list").val(_getList("db"));
	$("#prm_fa_name").val(name);
	$("#prm_fa_nameS").val(nameS);
	$("#prm_fa_ref").val(en.reference_name);
	if (len > 20000){
		len = 20000;
	}else if (len < 0){
		len = 0;
	}
	sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+parseInt(len)+"&nbsp;bp";

	_dialog_fa_len();
}


//Close dialog:fasta

function _dlg_fa_cancel() {
	$("#dialog_fa").dialog('close');
}

///////////////////////////////////////////////////////////////////////////////////
//for exporting param 
///////////////////////////////////////////////////////////////////////////////////
function _param_display(){
	var dp = document.getElementById("prm_fa_dp");
	var q = document.getElementById("prm_fa_qual");
	var w = document.getElementById("prm_fa_width");
	var vw = w.value;
	var vdp = dp.value;
	var vq = q.value;
	var string = "";
	var errqt = document.getElementById("err_qt");
        var errdp = document.getElementById("err_dp");
        var errlb = document.getElementById("err_lb");
	errqt.innerHTML = string;
	errdp.innerHTML = string;
	errlb.innerHTML = string;
	var sub = document.getElementById("fa_submit");

	if(dp.checkValidity() && q.checkValidity() && w.checkValidity() && vdp!=0 && vq!=0){
		sub.disabled = false;
	}
	if (!(q.checkValidity()) || vq == "") {
		string = "<font color=\"#FF0000\">Invalid value in Quality.</font>";
		errqt.innerHTML = string;
		sub.disabled = true;
	} 
	if (!(dp.checkValidity()) || vdp == "") {
                string = "<font color=\"#FF0000\">Invalid value in DEPTH.</font>";
                errdp.innerHTML = string;
		sub.disabled = true;
        }
        if (!(w.checkValidity()) || vw == "") {
                string = "<font color=\"#FF0000\">Invalid value in Line break.</font>";
                errlb.innerHTML = string;
		sub.disabled = true;
        }
}

//////////////////////////////////////////////////////////////////////////////////////
//sequence length

function _dialog_fa_len(){
	var s = document.getElementById("prm_fa_s");
	var e = document.getElementById("prm_fa_e");
	var len = e.value-s.value+1;
	var sub = document.getElementById("fa_submit");
	var sl = document.getElementById("seq_len");
	var sv =s.value;
	var ev =e.value;

	if(s.checkValidity() && e.checkValidity() && sv!=0 && ev!=0){
		sub.disabled = false;
		//if (len > 20000){
		if (len > 200000){
			len = 200000;
			e.value=(parseInt(sv)+199999);
			sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+len+"&nbsp;bp";
		} else if (len <= 0){
			//len = 0;
			len="<font color=\"#FF0000\">Please check start-postion and end-postion.</font>";
			sl.innerHTML = len;
			sub.disabled = true;
		} else{
			sl.innerHTML = "Sequence&nbsp;length&nbsp;:&nbsp;&nbsp;"+len+"&nbsp;bp";
		}
	}else{
		len="<font color=\"#FF0000\">Please input postion!</font>";
		sl.innerHTML = len;
		sub.disabled = true;
	}
}


//Downloading CSV
//Check the seq range of exporting csv

function pushBtn(num) {
	var sl = document.getElementById("csv_msg");
	if (num == 0) {
		_dialog_csv_len();
		$("#prm_csv_keyword").val('');
		$("#prm_csv_keyword").prop("disabled",true);
		$("#prm_csv_s").prop("disabled",false);
		$("#prm_csv_e").prop("disabled",false);
		sl.innerHTML = "";
	} else if (num == 1) {
		_dialog_csv_len();
		var s=parseInt(Objects.Pos-1)*_cvtZoom(Objects.Zoom)+1;
        	var e=s+1999;
        	$("#prm_csv_s").val(s);
        	$("#prm_csv_e").val(e);
		$("#prm_csv_keyword").prop("disabled",false);
                $("#prm_csv_s").prop("disabled",true);
                $("#prm_csv_e").prop("disabled",true);
        	sl.innerHTML = "";
        };
}
function _dialog_csv_len(){
        var sub = document.getElementById("csv_submit");
        var sl = document.getElementById("csv_msg");
        var sl2 = document.getElementById("csv_id_msg");
        var qmsg = document.getElementById("csv_q");
        var dpmsg = document.getElementById("csv_dp");
        var chr = document.getElementById("prm_csv_chr");
        var tgt = document.getElementById("prm_csv_s");
        var tgte = document.getElementById("prm_csv_e");
        var id = document.getElementById("prm_csv_keyword");
        var dp = document.getElementById("prm_csv_dp");
        var q = document.getElementById("prm_csv_qual");
        var vdp = parseInt(dp.value);
        var vq = parseInt(q.value);
        var tgtv = parseInt(tgt.value);
        var tgtev = parseInt(tgte.value);
	var idv = id.value;
        var string="";
        var passed=0;
        sl.innerHTML = string;
        sl2.innerHTML = string;
        qmsg.innerHTML = string;
        dpmsg.innerHTML = string;

	if ($('input[name=prm_pos_id]:eq(0)').prop('checked')) { //Position checked
        	if(tgt.checkValidity() && tgte.checkValidity() && tgtv>0 && tgtev>0 && tgtev >= tgtv){
                	if((tgtev-tgtv) <= 199999){
                                sub.disabled = false;
                        	passed=1;
                	}else{
                        	string="<font color=\"#FF0000\">Target is too long!<br>Maximum size is 200,000 bp.</font>";
                        	sl.innerHTML = string;
                                sub.disabled = true;
                        	passed=0;
                	}
        	}else{
                	string="<font color=\"#FF0000\">Invalid value. Please input target position!</font>";
                	sl.innerHTML = string;
                        sub.disabled = true;
                	passed=0;
        	}
	} else if ($('input[name=prm_pos_id]:eq(1)').prop('checked')) { //ID checked
		if (id.checkValidity() && !(idv.match(/<script>/))&& idv!="") {
                        sub.disabled = false;
                        passed=1;
		} else if (!id.checkValidity() || idv == "") {
			string="<font color=\"#FF0000\">Please input accession id!</font>";
                        sl2.innerHTML = string;
                        sub.disabled = true;
                        passed=0;
		} else if (idv.match(/<script>/)) {
			string="<font color=\"#FF0000\">Invalid value. Please input the correct accession id!</font>";
                        sl2.innerHTML = string;
                        sub.disabled = true;
                        passed=0;
		}
	}
        if (passed==1) {
                if(q.checkValidity() && vq>0){
                        sub.disabled = false;
                        passed=2;
                } else {
                        string="<font color=\"#FF0000\">Invalid value. Please input target quality!</font>";
                        qmsg.innerHTML = string;
                        sub.disabled = true;
                        passed=0;
                }
        }
        if (passed==2) {
                if(dp.checkValidity() && vdp>0){
                        sub.disabled = false;
                } else {
                        string="<font color=\"#FF0000\">Invalid value. Please input target depth!</font>";
                        dpmsg.innerHTML = string;
                        sub.disabled = true;
                }
        }
}

function _dialog_csv(str){
	$("#dialog_csv").dialog({
		autoOpen: true,
		modal: true,
		width: 500,
		draggable: true,
		resizable: true
	});
	var ajaxloader = document.getElementById("csv_ajaxloader");
	ajaxloader.innerHTML = "";
	$('input[name=prm_pos_id]:eq(0)').prop('checked', true);
	pushBtn(0);
	var sub = document.getElementById("csv_submit");
	sub.disabled = false;
//	sub.innerHTML =  "<button type=\"submit\" name=\"csv_submit\" onClick=\"_genCSV();\" >Export</button>";
	var s=parseInt(Objects.Pos-1)*_cvtZoom(Objects.Zoom)+1;
	//var e=s+1999;
	var e=s+19999;
	var highlightRegions;
	try { highlightRegions = JSON.parse(storage.getItem("_RegHighlights")); } catch (e) {}
	if( !(highlightRegions instanceof Array) ) highlightRegions = [];
	if(str){
		var params = str.split(",");
		s = parseInt(params[0]);
		e = parseInt(params[1]);
	} else if(highlightRegions.length > 0 && highlightRegions[0].chr == Objects.Chr){
		s = parseInt(highlightRegions[0].st);
		e = parseInt(highlightRegions[0].en);
	}
	$("#prm_csv_s").val(s);
	$("#prm_csv_e").val(e);

	// Set parameters
	var o=new Object(JSON.parse(storage.getItem("_Chrs")));
	var en=new Object(JSON.parse(storage.getItem("_Env")));
	$('#prm_csv_chr').find('option').remove();
	for (var i=0;i<o.length;i++) {
		if(Objects.Chr === o[i].id) {
			$('#prm_csv_chr').append("<option value='" + o[i].id + "' selected>" + en.chromosome_name + o[i].id + "</option>");
		} else {
			$('#prm_csv_chr').append("<option value='" + o[i].id + "'>" + en.chromosome_name + o[i].id + "</option>");
		}
	}
/*
	var ld="";
	for (var i=0;i<o.length;i++) {
console.log("Test:" + o[i].id);
		ld=ld+"<option value='"+o[i].id+"'>"+en.chromosome_name+o[i].id+"</option>";
	}
	$('#prm_csv_chr').find('option').remove().end().append(ld);
	$("#prm_csv_chr").val(Objects.Chr);
*/
	var q=storage.getItem("_QUAL");
	$("#prm_csv_qual").val(q);
	var dp=storage.getItem("_DP");
	$("#prm_csv_dp").val(dp);
	$("#prm_csv_list").val(_getList("db"));

//	_changeEffGrpForm("expfilter_effgrp");

	_dialog_csv_len();
}


//Close dialog:csv

function _dlg_csv_cancel() {
	$("#dialog_csv").dialog('close');
}


//Managing of accession lists

function _dialog_list(){
	var dialog = $("#dialog_list").dialog({
		autoOpen: true,
		modal: false,
		width: 800,
		maxHeight: window.innerHeight-15,
		draggable: true,
		resizable: true,
                position: {
                        of:'body',
                        at:'top',
                        my:'center'
                },
		dialogClass: 'ui-dialog-accession-manager'
	});
//	dialog.parent().css('opacity', '0.9');
	setClickEventToDialog(dialog, '.ui-dialog-accession-manager');
	
	changeDialogZindex(".ui-dialog-accession-manager");
	_dlg_make_list();
	_dlg_title_color();
	$('#prm_list_upfile').replaceWith('<input type="file" id="prm_list_upfile" size="30" accept="text/plain" onChange="_validateAccList(this.files)">');
	_setClickCloseEvent();
}

function _dlg_title_color(){
	var col = new Object(JSON.parse(storage.getItem("_GrpCol")));
	var dest_subtitle = storage.getItem("_NameSub");
	if(dest_subtitle == "subvariety"){dest_subtitle = "grp";}
	var grps = _getList(dest_subtitle).filter(function (x, i, self) {
		return self.indexOf(x) === i;
	});
	var selectbox = "";
	for(var i=0; i<grps.length; i++){
		selectbox += "<option value='"+grps[i]+"'>"+grps[i]+"</option>";
	}
	if(storage.getItem("_ColorCode") == "on"){
		document.getElementById("prm_grpcol_switch").options[1].selected = true;
	}else{
		document.getElementById("prm_grpcol_switch").options[0].selected = true;
	}
	$('select[name=prm_grpcol_grp]').find('option').remove().end().append(selectbox);
	_update_dlg_title_color_grp();
	$("#prm_grpcol_col").val(col[$("select[name=prm_grpcol_grp]").val()]);
	$("#prm_grpcol_col").ColorPicker({
		onSubmit: function(hsb, hex, rgb, el) {
			$(el).val("#"+hex);
			$(el).ColorPickerHide();
			var col = new Object(JSON.parse(storage.getItem("_GrpCol")));
			col[$("select[name=prm_grpcol_grp]").val()] = "#"+hex;
			storage.setItem("_GrpCol",JSON.stringify(col));
			_update_dlg_title_color_grp();
			_drawCanvas();
		},
		onBeforeShow: function () {
			$(this).ColorPickerSetColor(this.value);
		}
	}).bind('keyup', function(){
		$(this).ColorPickerSetColor(this.value);
	});
}

function _update_dlg_title_color_grp(){
	var col = new Object(JSON.parse(storage.getItem("_GrpCol")));
	$("span[id=prm_grpcol_ind]").css("color",_getTitleColor($("select[name=prm_grpcol_grp]").val()));
	$("#prm_grpcol_col").val(col[$("select[name=prm_grpcol_grp]").val()]);
}

function _reset_dlg_title_color_grp(){
	_setTitleColor();
	$("#prm_grpcol_ind").css('color','rgb(250, 143, 143)');
	$("#prm_grpcol_col").val('#fa8f8f');
	_drawCanvas();
}

function _appendTitleWOption() {
	var matchOption = $('#prm_tw option').filter(function(index){
		return $(this).val() == storage.getItem('_TitleW');
	});
	if(!matchOption || !matchOption.val()) {
		$('#prm_tw').append('<option value="' + storage.getItem('_TitleW') +'">' + storage.getItem('_TitleW') + 'px</option>');
	}
}
function _dlg_make_list(){
	var l=new Object(JSON.parse(storage.getItem('_Lists')));
	var d=new Object(JSON.parse(storage.getItem('_ListsDeleted')));
	var ls="";
	var ld="";
	var ss="";

        _appendTitleWOption();
	$('#prm_tw').val(storage.getItem('_TitleW'));
	$('#prm_switch_name').val(storage.getItem('_Name'));
	$('#prm_switch_sub').val(storage.getItem('_NameSub'));
 	var phenohash = new Array();
	if(phenotypeFlg) {
		phenoexp = storage.getItem("_Phenoexp");
        	phenoexps = phenoexp.split("|");
 		var phenohash = new Array();
  		for(i=0; i<phenoexps.length;i++) {
        		phenotmp = phenoexps[i].split(",");
        		phenohash[phenotmp[0]] = phenotmp[1];
  		}
	}
	var convertId = [];
	for (var i=0;i<l.length;i++){
		id = l[i].id;
		name = l[i].name;
		convertId[name] = id;
	}
	for (var i=0;i<l.length;i++){
		if ( Objects.Name == "id" ) {
			ss=l[i].id
		} else {
			ss=l[i].name
			if (ss.length > 15) {
				ss = ss.substr(0,14) + "~";
			}
                }
		if(!phenotypeFlg) {
			phenohash[l[i].id] = "";
			phenohash[l[i].name] = "";
		}
		
		if (phenohash[l[i].id] === undefined) {
			var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss.replace(/^\s+|\s+$/g, ""), l[i].variety.replace(/^\s+|\s+$/g, ""), l[i].grp.replace(/^\s+|\s+$/g, ""), "").replace(/\s/g,"&nbsp;");
			ls=ls+"<option value='"+l[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+l[i].variety.replace(/^\s+|\s+$/g, "")+"|"+l[i].grp.replace(/^\s+|\s+$/g, "")+"|"+""+"'>"+st+"</option>";
		} else {
			//var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss.replace(/^\s+|\s+$/g, ""), l[i].variety.replace(/^\s+|\s+$/g, ""), l[i].grp.replace(/^\s+|\s+$/g, ""), l[i].origin.replace(/^\s+|\s+$/g, ""), l[i].type.replace(/^\s+|\s+$/g, "")).replace(/\s/g,"&nbsp;");
			//var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss.replace(/^\s+|\s+$/g, ""), l[i].variety.replace(/^\s+|\s+$/g, ""), l[i].grp.replace(/^\s+|\s+$/g, ""), l[i].pheno.replace(/^\s+|\s+$/g, "")).replace(/\s/g,"&nbsp;");
			var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss.replace(/^\s+|\s+$/g, ""), l[i].variety.replace(/^\s+|\s+$/g, ""), l[i].grp.replace(/^\s+|\s+$/g, ""), phenohash[l[i].id].replace(/^\s+|\s+$/g, "")).replace(/\s/g,"&nbsp;");
			//ls=ls+"<option value='"+l[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+l[i].variety.replace(/^\s+|\s+$/g, "")+"|"+l[i].grp.replace(/^\s+|\s+$/g, "")+"|"+l[i].origin.replace(/^\s+|\s+$/g, "")+"|"+l[i].type.replace(/^\s+|\s+$/g, "")+"'>"+st+"</option>";
			//ls=ls+"<option value='"+l[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+l[i].variety.replace(/^\s+|\s+$/g, "")+"|"+l[i].grp.replace(/^\s+|\s+$/g, "")+"|"+l[i].pheno.replace(/^\s+|\s+$/g, "")+"'>"+st+"</option>";
			ls=ls+"<option value='"+l[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+l[i].variety.replace(/^\s+|\s+$/g, "")+"|"+l[i].grp.replace(/^\s+|\s+$/g, "")+"|"+phenohash[l[i].id].replace(/^\s+|\s+$/g, "")+"'>"+st+"</option>";
		}
	}
	for (var i=0;i<d.length;i++){
		if ( Objects.Name == "id" ) {
			ld=ld+"<option value='"+d[i].id+"|"+d[i].name.replace(/^\s+|\s+$/g, "")+"|"+d[i].variety.replace(/^\s+|\s+$/g, "")+"|"+d[i].grp.replace(/^\s+|\s+$/g, "")+"|"+d[i].origin.replace(/^\s+|\s+$/g, "")+"|"+d[i].type.replace(/^\s+|\s+$/g, "")+"'>"+d[i].id+"</option>";
		} else {
			ld=ld+"<option class=\"hideqry\" value='"+d[i].id+"|"+d[i].name.replace(/^\s+|\s+$/g, "")+"|"+d[i].variety.replace(/^\s+|\s+$/g, "")+"|"+d[i].grp.replace(/^\s+|\s+$/g, "")+"|"+d[i].origin.replace(/^\s+|\s+$/g, "")+"|"+d[i].type.replace(/^\s+|\s+$/g, "")+"'>"+d[i].name+"</option>";
			//ld=ld+"<option class=\"hideqry\" value='"+ss.replace(/^\s+|\s+$/g, "")+"|"+d[i].id+"|"+d[i].variety.replace(/^\s+|\s+$/g, "")+"|"+d[i].grp.replace(/^\s+|\s+$/g, "")+"|"+d[i].origin.replace(/^\s+|\s+$/g, "")+"|"+d[i].type.replace(/^\s+|\s+$/g, "")+"'>"+d[i].name+"</option>";
		}
	}
	$('#lstBox1').find('option').remove().end().append(ls);
	$('#lstBox2').find('option').remove().end().append(ld);

        if (phenotypeFlg) {
           var strname = storage.getItem("_Phenotype");
           var phenoname = "";
           if (strname.length > 16) {
                loop = Math.ceil(strname.length /16);
                for (var i=0;i<loop;i++) {
                        start = 16 * i;
                        end = 16 * (i + 1);
                        phenoname += strname.substring(start,end)+ "<br>";
                }
            } else {
                phenoname = strname;
            }
        }
	//button for sorting
	var butSort = "<button class=\"asc\" style=\"width:115px;\" id=\"bSort\"  onClick=\"_sort_accession_list(1,'asc')\" >ID/Name</button>\
		<button class=\"asc\" id=\"bSort2\" style=\"width:115px;\" onClick=\"_sort_accession_list(2,'asc')\">Variety</button>\
		<button class=\"asc\" id=\"bSort3\" style=\"width:115px;\" onClick=\"_sort_accession_list(3,'asc')\">Subvariety</button>\
		<button class=\"asc\" id=\"bSort4\" style=\"width:134px;\" onClick=\"_sort_accession_list(4,'asc')\">"+phenoname+"</button>";
	$('#run_sorting').html(butSort);
	$('button.asc').button({
		icons: {
			secondary: 'ui-icon-triangle-1-n'
		}
	});
	$('button.desc').button({
		icons: {
			secondary: 'ui-icon-triangle-1-s'
		}
	});
	_setClickPhenotypePhyloEvent();
}


function _fitDialogHeightToWindow(dialogObj, contentObj) {
    if(dialogObj.is(':hidden')) return;

    var windowHeight = parseInt($('#tasuke').css('height')) - 20;
    var dialogBottom = parseInt(dialogObj.css('top')) + parseInt(dialogObj.css('height'));
    if(windowHeight < dialogBottom) {
        var dialogHeight = windowHeight - parseInt(dialogObj.css('top')) + 1;
        dialogObj.css('height', dialogHeight);

        var contentHeight = dialogHeight - 43;
        contentObj.css('height', contentHeight);
//console.log(dialogObj.attr('id') + ":" + dialogObj.css('top') + "+" + dialogObj.css('height') + "=" + dialogBottom + "/" + windowHeight);
    }
}

//Set accession sorting event
$(document).ready(function() {
	$('#prm_list_init').click(function(e) {
		storage.setItem("_Lists",storage.getItem("_Lists-origin"));
		storage.setItem("_ListsDeleted","[]");
		_showLoading();
		storage.removeItem("_ListsTgt");
		FROMSCROLL=false;
		_execCanvas();
		_dlg_make_list();
	});

/*
	if (storage.getItem("_runBlast") == 1) {
        	$(window).resize(function() {
        	        $(".blast_window").css('max-height', $("#mv_dlg").height());
                	$(".blast_content").css('max-height', $("#mv_dlg").height()-15);
        	});
	}
*/

	$(window).resize(function() {
		$Hlength = $(window).height() - 68;
		$Wlength = $(window).width() - 26;
		$("#phy_tree_res").css('height',$Hlength);
		$("#phy_tree_res").css('width',$Wlength);
		$("#phy_svg").css('height',$Hlength);
		$("#phy_svg").css('width',$Wlength);
		
	});

        $(window).resize(function() {
                if(!($(".phylo_window").hasClass('minimized'))){
                        _fitDialogHeightToWindow($(".phylo_window"), $(".phylo_content"));
		} else {                                        
                        $(".phylo_window").css('top', $("#bottom").offset().top +'px');
                }
        });
        $(window).resize(function() {
                if(!($(".p3_window").hasClass('minimized'))){
                        _fitDialogHeightToWindow($(".p3_window"), $('.p3_content'));
                } else {
			$(".p3_window").css('top', $("#bottom").offset().top +'px');
		}
		
        });

        $(window).resize(function() {
                if(!($(".gwas_window").hasClass('minimized'))){
                        _fitDialogHeightToWindow($(".gwas_window"), $('.gwas_content'));
                } else {
                        $(".gwas_window").css('top', $("#bottom").offset().top +'px');
                }

        });

	$(window).resize(function() {
    		if(!$(".blast_window").hasClass('minimized')){
                        if($('#result').html() || !$("#blst_opt").hasClass("close") || !$('#blst_hist').hasClass("close")) _fitDialogHeightToWindow($(".blast_window"), $('.blast_content'));
                } else {
      			$(".blast_window").css('top', $("#bottom").offset().top+'px');
    		}
  	});

        $(window).resize(function() {
                if($(".search_window").hasClass('minimized')){
                        $(".search_window").css('top', $("#bottom").offset().top+'px');
                }
        });

        $(window).resize(function() {
                if(!($(".fasta_window").hasClass('minimized'))){
                        _fitDialogHeightToWindow($(".fasta_window"), $(".fasta_content"));
                } else {
                        $(".fasta_window").css('top', $("#bottom").offset().top +'px');
                }
        });

	$('#prm_list_submit').click(function(e) {
		_reset_accession_lists();
		_showLoading();
		storage.removeItem("_ListsTgt");
		FROMSCROLL=false;
		_execCanvas();
		_dlg_make_list();
	});

	$('#btnRight').click(function(e) {
		var va=new Array();
		var phenohash = new Array();
		var selectedOpts = $('#lstBox1 option:selected');
		var o=new Object(JSON.parse(storage.getItem('_Lists-origin')));
		var ld="";
		if (selectedOpts.length == 0) {
			alert("Nothing to move.");
			e.preventDefault();
		}
		$('#lstBox2').append($(selectedOpts).clone());
		$(selectedOpts).remove();
		e.preventDefault();
		$("#lstBox2 option").each(function () {
			var valAry = $(this).val().split("|");
			va.push(valAry[0]);
		}, null);
		if(phenotypeFlg) {
  			phenoexp = storage.getItem("_Phenoexp");
  			phenoexps = phenoexp.split("|");
  			//var phenohash = new Array();
  			for(i=0; i<phenoexps.length;i++) {
        			phenotmp = phenoexps[i].split(",");
        			phenohash[phenotmp[0]] = phenotmp[1];
  			}
		}
		for (var j=0;j<va.length;j++){
			for (var i=0;i<o.length;i++){
				if ( va[j] == o[i].id ) {
					if(!phenotypeFlg) {
                                                phenohash[o[i].id] = "";
                                        }
					if ( Objects.Name == "id" ) {
						ld=ld+"<option value='"+o[i].id+"|"+o[i].id.replace(/^\s+|\s+$/g, "")+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+o[i].origin.replace(/^\s+|\s+$/g, "")+"|"+phenohash[o[i].id].replace(/^\s+|\s+$/g, "")+"'>"+o[i].id+"</option>";
					} else {
						ld=ld+"<option class=\"hideqry\" value='"+o[i].id+"|"+o[i].id.replace(/^\s+|\s+$/g, "")+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+o[i].origin.replace(/^\s+|\s+$/g, "")+"|"+phenohash[o[i].id].replace(/^\s+|\s+$/g, "")+"'>"+o[i].name+"</option>";
					}
				}
			}
		}
		$('#lstBox2').find('option').remove().end().append(ld);
	});

	$('#btnLeft').click(function(e) {
		var va=new Array();
		var o=new Object(JSON.parse(storage.getItem('_Lists-origin')));
		var ls="";
		var ss="";
		var selectedOpts = $('#lstBox2 option:selected');

		if (selectedOpts.length == 0) {
			alert("Nothing to move.");
			e.preventDefault();
		}

		$('#lstBox1').append($(selectedOpts).clone());
		$(selectedOpts).remove();
		e.preventDefault();
		$("#lstBox1 option").each(function () {
			var valAry = $(this).val().split("|");
			va.push(valAry[0]);
		}, null);
                var phenohash = new Array();
                if(phenotypeFlg) {
                        phenoexp = storage.getItem("_Phenoexp");
                        phenoexps = phenoexp.split("|");
                        for(i=0; i<phenoexps.length;i++) {
                                phenotmp = phenoexps[i].split(",");
                                phenohash[phenotmp[0]] = phenotmp[1];
                        }
                }
		for (var j=0;j<va.length;j++){
			for (var i=0;i<o.length;i++){
				if ( va[j] == o[i].id || va[j] == o[i].name) {
					if ( Objects.Name == "id" ) {
						ss=o[i].id
					} else {
						ss=o[i].name
                        			if (ss.length > 15) {
                                			ss2 = ss.substr(0,14) + "~";
                        			} else {
							ss2 = ss
						}
						ss = ss2;
					}
					if(!phenotypeFlg) {
						phenohash[o[i].id] = "";
					}
					//var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss.replace(/^\s+|\s+$/g, ""), o[i].variety.replace(/^\s+|\s+$/g, ""), o[i].grp.replace(/^\s+|\s+$/g, ""), o[i].origin.replace(/^\s+|\s+$/g, ""), o[i].pheno.replace(/^\s+|\s+$/g, "")).replace(/\s/g,"&nbsp;")
					var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss.replace(/^\s+|\s+$/g, ""), o[i].variety.replace(/^\s+|\s+$/g, ""), o[i].grp.replace(/^\s+|\s+$/g, ""), phenohash[o[i].id].replace(/^\s+|\s+$/g, "")).replace(/\s/g,"&nbsp;")
					//ls=ls+"<option value='"+o[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+o[i].origin.replace(/^\s+|\s+$/g, "")+"|"+o[i].pheno.replace(/^\s+|\s+$/g, "")+"'>"+st+"</option>"
					ls=ls+"<option value='"+o[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+phenohash[o[i].id].replace(/^\s+|\s+$/g, "")+"'>"+st+"</option>"
				}
			}
		}
		$('#lstBox1').find('option').remove().end().append(ls);
	});

        $('#addQry').click(function(e) {
                var va=new Array();
                var selectedOpts = $('#idlst option:selected');
                var o=new Object(JSON.parse(storage.getItem('_Lists-origin')));
                var ld="";
                if (selectedOpts.length == 0) {
                        alert("Nothing to move.");
                        e.preventDefault();
                }
                $('#tree_qry').append($(selectedOpts).clone());
                $(selectedOpts).remove();
                e.preventDefault();
                $("#tree_qry option").each(function () {
                        var valAry = $(this).val().split("|");
                        va.push(valAry[0]);
                }, null);
                for (var j=0;j<va.length;j++){
                        for (var i=0;i<o.length;i++){
                                if ( va[j] == o[i].id || va[j] == o[i].name) {
                                        if ( Objects.Name == "id" ) {
						//ld=ld+"<option value='"+o[i].name+"'>"+o[i].name+"</option>";
                                                ld=ld+"<option class=\"hideqry\" value='"+o[i].id+"|"+o[i].id.replace(/^\s+|\s+$/g, "")+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+o[i].origin.replace(/^\s+|\s+$/g, "")+"|"+o[i].type.replace(/^\s+|\s+$/g, "")+"'>"+o[i].id+"</option>";
                                                //ld=ld+"<option value='"+o[i].id+"'>"+o[i].id+"</option>";
                                        } else {
						//ld=ld+"<option value='"+o[i].name+"'>"+o[i].name+"</option>";
                                                //ld=ld+"<option class=\"hideqry\" value='"+o[i].name+"|"+o[i].id.replace(/^\s+|\s+$/g, "")+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+o[i].origin.replace(/^\s+|\s+$/g, "")+"|"+o[i].type.replace(/^\s+|\s+$/g, "")+"'>"+o[i].name+"</option>";
                                                ld=ld+"<option class=\"hideqry\" value='"+o[i].id.replace(/^\s+|\s+$/g, "")+"|"+o[i].name+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+o[i].origin.replace(/^\s+|\s+$/g, "")+"|"+o[i].type.replace(/^\s+|\s+$/g, "")+"'>"+o[i].name+"</option>";
                                        }
                                }
                        }
                }
		//var idlst = $('#idlst').html();
		//storage.setItem("_usePhylo",idlst);
                $('#tree_qry').find('option').remove().end().append(ld);
		storage.setItem("_hidePhylo",ld);
        });

        $('#rmQry').click(function(e) {
                var va=new Array();
                var o=new Object(JSON.parse(storage.getItem('_Lists-origin')));
                var ls="";
                var ss="";
                var selectedOpts = $('#tree_qry option:selected');

                if (selectedOpts.length == 0) {
                        alert("Nothing to move.");
                        e.preventDefault();
                }
                $('#idlst').append($(selectedOpts).clone());
                $(selectedOpts).remove();
                e.preventDefault();
                $("#idlst option").each(function () {
                        var valAry = $(this).val().split("|");
                        va.push(valAry[0]);
                }, null);
		var phenohash = new Array();
		if (phenotypeFlg) {
                	phenoexp = storage.getItem("_Phenoexp");
                	phenoexps = phenoexp.split("|");
                	//var phenohash = new Array();
                	for(i=0; i<phenoexps.length;i++) {
                	        phenotmp = phenoexps[i].split(",");
                	        phenohash[phenotmp[0]] = phenotmp[1];
                	}
		}
                for (var j=0;j<va.length;j++){
                        for (var i=0;i<o.length;i++){
                                if ( va[j] == o[i].id  || va[j] == o[i].name) {
                                        if ( Objects.Name == "id" ) {
                                                ss=o[i].id
                                        } else {
                                                ss=o[i].name
                        			if (ss.length > 15) {
                                			ss2 = ss.substr(0,14) + "~";
                        			} else {
							ss2 = ss
						}
						ss = ss2;
                                        }
                                         //var st = $.format("%s %s %s %s", ss, o[i].variety, o[i].grp, o[i].pheno).replace(/\s/g,"&nbsp;");
					 var st = "";
                                         if(!phenotypeFlg) {
                                                 phenohash[o[i].id] = "";
                                         }
                                         st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", ss.replace(/^\s+|\s+$/g, ""), o[i].variety.replace(/^\s+|\s+$/g, ""), o[i].grp.replace(/^\s+|\s+$/g, ""), phenohash[o[i].id].replace(/^\s+|\s+$/g, "")).replace(/\s/g,"&nbsp;");
                                         ls=ls+"<option value='"+o[i].id+"|"+ss.replace(/^\s+|\s+$/g, "")+"|"+o[i].variety.replace(/^\s+|\s+$/g, "")+"|"+o[i].grp.replace(/^\s+|\s+$/g, "")+"|"+phenohash[o[i].id].replace(/^\s+|\s+$/g, "")+"'>"+st+"</option>";
                                }
                        }
                }
		var hidelst = $('#tree_qry').html();
		storage.setItem("_hidePhylo",hidelst);
                $('#idlst').find('option').remove().end().append(ls);
        });

	$.fn.reverse = [].reverse;
	$("#bUp,#bDown").click(function() {
		var $opt = $("#lstBox1 option:selected");
		if (!$opt.length) return;
		var bGoUp = (this.id == "bUp");
		if (!bGoUp) $opt.reverse();
		$opt.each(function(i) {
			var $src = $(this);
			var $dst = $src[bGoUp ? "prev" : "next"]();
			if ($dst.length && $dst[0].selected) return;
			$dst[bGoUp ? "before" : "after"]($src);
		});
	});
});

function _sort_accession_phylo(type,order){
        var ls ="";
        var keyAry = new Array();
        var valAry = new Array();
        var prtAry = new Array();
        //select phenotype
	
        if (phenotypeFlg) {
           var strname = storage.getItem("_Phenotype");
           var phenoname = "";
           if (strname.length > 13) {
                loop = Math.ceil(strname.length /13);
                for (var i=0;i<loop;i++) {
                        start = 13 * i;
                        end = 13 * (i + 1);
                        phenoname += strname.substring(start,end)+ "<br>";
                }
           } else {
                phenoname = strname;
           }
        }
        //var labels = ["ID/Name","Variety", "Sub Variety", "Type"];
        var labels = ["ID/Name","Variety", "Subvariety", phenoname];
        var orderForNext;
        var maxtype=4;
        var butSort ="";

//      type: 1=id or name, 2=variety, 3=subvariety, 4=origin
//      order: 1=asec, 2=desc

        var elm = document.getElementById("idlst");
        type=parseInt(type);
        if(type < 1 || type > 4){
                type=1;
        }

        for (var i=0;i<elm.options.length;i++) {
                var eachtext = elm.options[i].value;
                var textAry = eachtext.split("|");
                keyAry.push(textAry[type]);
                valAry.push(eachtext);
        }

        var uniqueArray = keyAry.filter(
                        function( value, index, self ){return self.indexOf( value ) == index;}
        );

        if(order=="asc"){
                if(type==4) {
                        uniqueArray.sort(function(a, b) {
                                return (parseFloat(a) > parseFloat(b)) ? 1 : -1;
                        });
                        orderForNext="desc";
                } else {
                        uniqueArray.sort();
                        orderForNext="desc";
                }
        }else{
                if(type==4) {
                        uniqueArray.sort(function(a, b) {
                                return (parseFloat(a) < parseFloat(b)) ? 1 : -1;
                        });
                        orderForNext="asc";
                } else {
                        uniqueArray.reverse();
                        orderForNext="asc";
                }
        }
        for(var x=0; x<uniqueArray.length; x++){
                var str = uniqueArray[x];
                for(var i=0; i<elm.options.length; i++){
                        var tmpAry = valAry[i].split("|");
                        if(tmpAry[type] == str){
                                prtAry.push(valAry[i]);
                        }
                }
        }
        for(var i=0; i<prtAry.length; i++){
                var str = prtAry[i].split("|");
                var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", str[1], str[2], str[3], str[4]).replace(/\s/g,"&nbsp;");
                ls=ls+"<option value='"+str[0]+"|"+str[1]+"|"+str[2]+"|"+str[3]+"|"+str[4]+"'>"+st+"</option>";
        }
        $('#idlst').find('option').remove().end().append(ls);

        for(var i=0; i<maxtype; i++){
                if(type==(i+1)) {
			if(type==1){
                        	butSort=butSort+"<button class=\""+orderForNext+"\" id=\"pSort"+parseInt(i+1)+"\" style=\"width:135px; color: blue;\" onClick=\"_sort_accession_phylo("+parseInt(i+1)+",'"+orderForNext+"')\" >"+labels[i]+"</button> ";
			} else {
                        	butSort=butSort+"<button class=\""+orderForNext+"\" id=\"pSort"+parseInt(i+1)+"\" style=\"width:125px; color: blue;\" onClick=\"_sort_accession_phylo("+parseInt(i+1)+",'"+orderForNext+"')\" >"+labels[i]+"</button> ";
			}
                }else{
			if(i==0){
                       	 	butSort=butSort+"<button class=\"asc\" id=\"pSort"+parseInt(i+1)+"\" style=\"width:135px;\" onClick=\"_sort_accession_phylo("+parseInt(i+1)+",'asc')\" >"+labels[i]+"</button> ";
			} else {
                       	 	butSort=butSort+"<button class=\"asc\" id=\"pSort"+parseInt(i+1)+"\" style=\"width:125px;\" onClick=\"_sort_accession_phylo("+parseInt(i+1)+",'asc')\" >"+labels[i]+"</button> ";
			}
                }
        }
        $('#run_sortings').html(butSort);
        $('button.asc').button({
                icons: {
                        secondary: 'ui-icon-triangle-1-n'
                }
        });
        $('button.desc').button({
                icons: {
                        secondary: 'ui-icon-triangle-1-s'
                }
        });

}


function _sort_accession_list(type,order){
	var ls ="";
	var keyAry = new Array();
	var valAry = new Array();
	var prtAry = new Array();
        //select phenotype
//	var phenoname = "";
        if (phenotypeFlg) {
           var phenoname = "";
           var strname = storage.getItem("_Phenotype");
           if (strname.length > 16) {
                loop = Math.ceil(strname.length /16);
                for (var i=0;i<loop;i++) {
                        start = 16 * i;
                        end = 16 * (i + 1);
                        phenoname += strname.substring(start,end)+ "<br>";
                }
           } else {
                phenoname = strname;
           }
        }
	//var labels = ["ID/Name","Variety", "Sub Variety", "Type"];
	var labels = ["ID/Name","Variety", "Subvariety", phenoname];	// if phenoname is undefined, button label is "undefined".
	var orderForNext;
	var maxtype=4;
	var butSort ="";

//	type: 1=id or name, 2=variety, 3=subvariety, 4=origin
//	order: 1=asec, 2=desc

	var elm = document.getElementById("lstBox1");
	type=parseInt(type);
	if(type < 1 || type > 4){
		type=1;
	}

	for (var i=0;i<elm.options.length;i++) {
		var eachtext = elm.options[i].value;
		var textAry = eachtext.split("|");
		keyAry.push(textAry[type]);
		valAry.push(eachtext);
	}

	var uniqueArray = keyAry.filter(
			function( value, index, self ){return self.indexOf( value ) == index;}
	);

	if(order=="asc"){
		if(type==4) {
			uniqueArray.sort(function(a, b) {
  				return (parseFloat(a) > parseFloat(b))  ? 1 : -1;
			});
			orderForNext="desc";
		} else {
			uniqueArray.sort();
			orderForNext="desc";
		}
	}else{
		if(type==4) {
                        uniqueArray.sort(function(a, b) {
                                return (parseFloat(a) < parseFloat(b)) ? 1 : -1;
                        });
			orderForNext="asc";
                } else {
			uniqueArray.reverse();
			orderForNext="asc";
		}
	}

	for(var x=0; x<uniqueArray.length; x++){
		var str = uniqueArray[x];
		for(var i=0; i<elm.options.length; i++){
			var tmpAry = valAry[i].split("|");
			if(tmpAry[type] == str){
				prtAry.push(valAry[i]);
			}
		}
	}
	for(var i=0; i<prtAry.length; i++){
		var str = prtAry[i].split("|");
		var st = $.format("%1$-16s %2$-16s %3$-16s %4$-16s", str[1], str[2], str[3], str[4], str[5]).replace(/\s/g,"&nbsp;");
		ls=ls+"<option value='"+str[0]+"|"+str[1]+"|"+str[2]+"|"+str[3]+"|"+str[4]+"|"+str[5]+"'>"+st+"</option>";
	}
	$('#lstBox1').find('option').remove().end().append(ls);

	for(var i=0; i<maxtype; i++){
		if(type==(i+1)) {
			if(type==4){
				butSort=butSort+"<button class=\""+orderForNext+"\" id=\"bSort\" style=\"width:134px; color: blue;\" onClick=\"_sort_accession_list("+parseInt(i+1)+",'"+orderForNext+"')\" >"+labels[i]+"</button> ";
			} else {
				butSort=butSort+"<button class=\""+orderForNext+"\" id=\"bSort\" style=\"width:115px; color: blue;\" onClick=\"_sort_accession_list("+parseInt(i+1)+",'"+orderForNext+"')\" >"+labels[i]+"</button> ";
			}	
		}else{
			if(i==3) {
				butSort=butSort+"<button class=\"asc\" id=\"bSort\" style=\"width:134px;\" onClick=\"_sort_accession_list("+parseInt(i+1)+",'asc')\" >"+labels[i]+"</button> ";
			} else {
				butSort=butSort+"<button class=\"asc\" id=\"bSort\" style=\"width:115px;\" onClick=\"_sort_accession_list("+parseInt(i+1)+",'asc')\" >"+labels[i]+"</button> ";
			}
		}
	}

	$('#run_sorting').html(butSort);
	$('button.asc').button({
		icons: {
			secondary: 'ui-icon-triangle-1-n'
		}
	});
	$('button.desc').button({
		icons: {
			secondary: 'ui-icon-triangle-1-s'
		}
	});

}

//Sort function for pheno



//Reset accession list

function _reset_accession_lists() {
	var o=new Object(JSON.parse(storage.getItem('_Lists-origin')));
	var value1=new Array();
	$("#lstBox1 option").each(function () {
		var valAry = $(this).val().split("|");
		value1.push(valAry[0]);
	}, null);

	var strDel="[";
	for (var i=0;i<value1.length;i++) {
		for (var j=0;j<o.length;j++){
			if ( value1[i] == o[j].id ){
				strDel=strDel+"{";
				strDel=strDel+"\"id\":\""+o[j].id+"\",";
				strDel=strDel+"\"db\":\""+o[j].db+"\",";
				strDel=strDel+"\"name\":\""+o[j].name+"\",";
				strDel=strDel+"\"variety\":\""+o[j].variety+"\",";
				strDel=strDel+"\"grp\":\""+o[j].grp+"\",";
				strDel=strDel+"\"origin\":\""+o[j].origin+"\",";
				strDel=strDel+"\"origin_2\":\""+o[j].origin_2+"\",";
				strDel=strDel+"\"type\":\""+o[j].type+"\",";
				strDel=strDel+"\"other_1\":\""+o[j].other_1+"\",";
				strDel=strDel+"\"other_2\":\""+o[j].other_2+"\",";
				strDel=strDel+"\"pheno\":\""+o[j].pheno+"\"";
				strDel=strDel+"}";
			}
		}
		if ( i < value1.length-1 ) {
			strDel=strDel+",";
		}
	}
	strDel=strDel+"]";
	storage.setItem("_Lists",(strDel));
	
	var value=new Array();
	$("#lstBox2 option").each(function () {
		var valAry = $(this).val().split("|");
		value.push(valAry[0]);
	}, null);
	var strDel="[";
	for (var i=0;i<value.length;i++) {
		for (var j=0;j<o.length;j++){
			if ( value[i] == o[j].id ){
				strDel=strDel+"{";
				strDel=strDel+"\"id\":\""+o[j].id+"\",";
				strDel=strDel+"\"db\":\""+o[j].db+"\",";
				strDel=strDel+"\"name\":\""+o[j].name+"\",";
				strDel=strDel+"\"variety\":\""+o[j].variety+"\",";
				strDel=strDel+"\"grp\":\""+o[j].grp+"\",";
				strDel=strDel+"\"origin\":\""+o[j].origin+"\",";
				strDel=strDel+"\"origin_2\":\""+o[j].origin_2+"\",";
				strDel=strDel+"\"type\":\""+o[j].type+"\",";
				strDel=strDel+"\"other_1\":\""+o[j].other_1+"\",";
				strDel=strDel+"\"other_2\":\""+o[j].other_2+"\",";
				strDel=strDel+"\"pheno\":\""+o[j].pheno+"\"";
				strDel=strDel+"}";
			}
		}
		if ( i < value.length-1 ) {
			strDel=strDel+",";
		}
	}
	strDel=strDel+"]";
	storage.setItem("_ListsDeleted",(strDel));
}


//Search keyword & jump position

function _dialog_go(){
	/*
	$("#dialog_go").dialog({
		autoOpen: true,
		modal: false,
		width: 800,
		ONdraggable: true,
		resizable: true
	});
	*/
	var p3flg = '';
        for(var i=0; i<minPos.length; i++) {
            if(minPos[i] == 'search') {
                    p3pos = i;
                    p3flg = 1;
            }
        }
        if(p3flg == 1) {
                for(var i=p3pos; i<minPos.length; i++) {
                        if (minPos[i+1] !== undefined) {
                            minPos[i] = minPos[i+1];
                        } else {
                            minPos.pop();
                        }
                        leftpos = (parseInt(175)*(parseInt(i))+ parseInt(5)*(parseInt(i+1)))+'px';
                        $("."+minPos[i+1]+"_window").css('left',leftpos);
                }
        }
	changeDialogZindex(".search_window");
/*
	winFront[winFront.length] = 'search';
        for (var i = 0; i < winFront.length; i++) {
                $("."+winFront[i]+"_window").css('z-index',1000+i);
        }
*/
        if($(".under_search").hasClass('fa-window-restore')){
                $(".under_search").toggleClass('fa-window-restore fa-window-minimize');
        }
        if($("#dialog_go").hasClass('minimized')){
                $("#dialog_go").toggleClass('minimized');
                $("#dialog_go").css('top','0px');
                //$("#dialog_go").css('position','fixed');
                $(".search_content").css('display','inline-block');
	        $("#dialog_go").css('width','');
		$("#dialog_go").css('min-height','42px');
		$("#dialog_go").css('min-width','178px');
                $("#search_title").css('width','848px');
                $("#search_title").css('max-width','848px');
                $("#search_title").css('top','4px');
                $("#search_title").css('left','4px');
                $("#dialog_go .minimize").css('top','9px');
                $("#dialog_go .close").css('top','9px');
                $(".search_content").css('width','');
                $("#dialog_go").css('height','');
                $(".search_content").css('height','');
                $("#prm_keyword").val('');
                $("#prm_position").val('');
		
		document.getElementById("searchname").innerHTML = "&nbsp;&nbsp;Search";
                document.getElementById("searchname").style.fontSize = "20px";
        }

	// Set chromosome
	var o=new Object(JSON.parse(storage.getItem("_Chrs")));
	var en=new Object(JSON.parse(storage.getItem("_Env")));
	var cs="";
	for (var i=0;i<o.length;i++) cs=cs+"<option value='"+o[i].id+"'>"+en.chromosome_name+o[i].id+"</option>";
	$('#prm_position_chr').find('option').remove().end().append(cs);
	$('#prm_position_chr').val(Objects.Chr);
	$('#prm_position_zoom').val(storage.getItem('_Zoom'));
	_setComboHistory()  // Set history combobox

	// Note that it is looking at the previous search word
/*
	if(storage.getItem("_HighlightVariantGene")) {
		$('#cb_highlight_keyword_variant').prop('checked', true);
	} else { 
		$('#cb_highlight_keyword_variant').prop('checked', false);
	}
*/
	if(storage.getItem("_HighlightVariantExclUpDown") === "1") {
		$('#cb_hlvar_kw_exclude_updown').prop('checked', true);
	} else {
		$('#cb_hlvar_kw_exclude_updown').prop('checked', false);
	}
}

//////////////////////////////Set options in combobox
function _setComboHistory() {
	var h=JSON.parse(storage.getItem("_History"));
	var en=JSON.parse(storage.getItem("_Env"));
	var hs="<option value=''> - </option>";
	//for (i=1;i<h.length;i++) {
	for (i=0;i<h.length;i++) {
		t=h[i].split(",");
		if(t[0]=="search") hs=hs+"<option value='"+i+"'>"+t[1]+"</option>";
		else if(t[0]=="position") {
			var spt3;
			var t2t3;
			if (t[3].match(/k/i)) {
				spt3=t[3].split("k");
				t2t3=(t[2]-1)*spt3[0]*1000+1;
			} else{
				spt3=t[3].split("b");
				t2t3=(t[2]-1)*spt3[0]+1;
			}
			hs=hs+"<option value='"+i+"'>"+en.chromosome_name+t[1]+" : "+t[2]+" - "+t[3]+"</option>";
		}
	}
	$('#prm_history_cmd').find('option').remove().end().append(hs);
}

///////////////////////////// Convert length of chromosome as zoom
function _setHistory(str){
	var a=JSON.parse(storage.getItem("_History"));
	if(a.length>20) a.pop();
	a.unshift(str);
	storage.setItem("_History",JSON.stringify(a));
	_setComboHistory();
}

//Execute history command
function _historyCmd() {
	var history=parseInt($('#prm_history_cmd').val());
	var h=JSON.parse(storage.getItem("_History"));
	var t=h[history].split(",");
	if(t[0]=="search") {
		//_execSearch(t[1]);
		geneid = t[1];
		geneinfo = _histID(t[1]);
		geneinfos = geneinfo.split(",");
		stpos = parseInt(geneinfos[0]);
		edpos = geneinfos[1];
		chr = geneinfos[2];
	} else if(t[0]=="position") {
		_setHistory(h[history]);
		chr = t[1];
	        stpos = t[2].replace(/,/g,"");
        	edpos = t[3].replace(/,/g,"");
	}
	_changeAutoPosZoom(chr, stpos, edpos);
	setRegionHighlight({"chr":chr, "st":stpos, "en":edpos});    // Region Highlight
	_showLoading();
	if(t[0]=="search") {
		_messageOnScreen("Loading position "+ geneid);
	} else if(t[0]=="position") {
		_messageOnScreen("Loading position "+ stpos + "-" + edpos);
	}	
/*
	var blks = Math.round(parseInt((edpos-stpos+1)/Objects.Block));
	var blksL = String(blks).length - 1;
	if(t[0]=="search") {
		zoomsize = Math.ceil(blks/Math.pow(10,blksL)) * Math.pow(10,blksL);
	} else if(t[0]=="position") {
		zoomsize = Math.round(blks/Math.pow(10,blksL)) * Math.pow(10,blksL);
	}
	if (zoomsize > 900) {
		z = Math.ceil(zoomsize/1000) + "k";
	} else {
	        z = parseInt(zoomsize) + "b";
	}
	p=_checkPos_Chr(stpos,z,chr);
	storage.setItem('_Chr', chr);
	storage.setItem('_Pos', p);
	storage.setItem("_Zoom", z);
        stpzoom=t[2];
        edpzoom=t[3];
	_showLoading();
	if(t[0]=="search") {
		_messageOnScreen("Loading position "+ geneid);
	} else if(t[0]=="position") {
		_messageOnScreen("Loading position "+ stpzoom + "-" + edpzoom);
	}
*/
	FROMSCROLL=false;
	_execCanvas();
}

function _histID(keyword) {
        $.ajax({
                url: "./bin/"+_backendSelector("validateGene.php"),
                type: "POST",
                cache: false,
                async: false,
                data: {
			"prm_fa_gene":keyword
                },
                success: function(data) {
                        geneinfo = data;
                }
        });
        return geneinfo;
}
function _jumpPOS(e){
	prm_pos=$('#prm_position').val();

	// "chr01:10001" -> "chr01:10001-10001"
	var res = prm_pos.match(/^([^\:\s]+)\:([\d,]+)$/);
	if(res && res.length == 3) prm_pos = prm_pos + "-" + res[2];

	// "chr01:10001-10001"
	res = prm_pos.match(/^([^\:\s]+)\:([\d,]+)\-([\d,]+)$/);
	if(res && res.length == 4) {
		jumpPosition(prm_pos);

		c = res[1];
		var stpos = res[2].replace(/,/g,"");
		var edpos = res[3].replace(/,/g,"");
		$("#pos_note").empty();
		$("#pos_note").append(c + ":" + stpos + " - " + edpos + " with " + Objects.Block + " blocks");
		FROMSCROLL=false;
		_setHistory("position," + c + "," + stpos + "," + edpos);
	} else {
		_messageOnScreen("Invalid: Position format is invalid");
	}
/*	
	var chrpos = prm_pos.split(":");
	c = chrpos[0];
	var pos = chrpos[1].split("-");
	var stpos = pos[0].replace(/,/g,"");
	var edpos = pos[1].replace(/,/g,"");
	i = stpos;
	if(!isNaN(i)&&i!=""){
		_showLoading();

		_changeAutoPosZoom(c, stpos, edpos);
		var z = storage.getItem("_Zoom");
		var p = storage.getItem("_Pos");
		if (z.match(/k/i)) {
			spzoom=z.split("k");
			stpzoom=(p-1)*spzoom[0]*1000+1;
			edpzoom=stpzoom+Objects.Block*spzoom[0]*1000-1;
		}else{
			spzoom=z.split("b");
			stpzoom=(p-1)*spzoom[0]+1;
			edpzoom=stpzoom+Objects.Block*spzoom[0]-1;
		}
		
		
		//_messageOnScreen("Loading position "+pzoom+" ["+z+"]");
		_messageOnScreen(chrpos[0]+":"+stpzoom+" - "+edpzoom+" with "+Objects.Block+" blocks");
		$("#pos_note").empty();
		$("#pos_note").append(chrpos[0]+":"+stpzoom+" - "+edpzoom+" with "+Objects.Block+" blocks");
		FROMSCROLL=false;

		setRegionHighlight({"chr":c, "st":stpos, "en":edpos});
//		addRegionHighlight({"chr":c, "st":stpos, "en":edpos});	// Region Highlight

		_execCanvas();
		//_setHistory("position,"+c+","+p+","+z);
		_setHistory("position,"+c+","+stpzoom+","+edpzoom);
	} else {
		_messageOnScreen("Input numeric code ["+i+"]");
	}
*/
//	$("#dialog_position").dialog('close');
}

function _searchID(e){
	str=$('#prm_keyword_res').val();
	ids=str.split("|");
	id=ids[0];
	_setHistory("search,"+id);
	if(!str){return;}
	if(str.length>3) {
		_execSearch(str, true);
		$('#prm_keyword_res').blur();
//		$("#dialog_keyword").dialog('close');
//		$("#dialog_go").dialog('close');
	} 
}

function _preSearchID(e){
	if(e.keyCode == 13 || ! e.keyCode){
		str=$('#prm_keyword').val();
		mode=$('#prm_opt').val();
		if(str.length>3) {
			$('#prm_keyword_res').find('OPTGROUP').remove().end();
			$('#prm_keyword_res').find('option').remove().end().append("<option value=\'\'>Searching...</option>");
			_preExecSearch(str,mode);
			$('#prm_keyword').blur();
			$('#prm_opt').blur();
		} else {
			_drawCanvas();
			_messageOnScreen("The keyword must have at least 4 characters.");
		}
//		$("#dialog_keyword").dialog('close');
	}
}


//Track manager

function _dialog_track(){
	var dialog = $("#dialog_track").dialog({
		autoOpen: true,
		modal: false,
		width: 620,
		draggable: true,
		resizable: true,
		dialogClass: 'ui-dialog-track-manager'
	});
	setClickEventToDialog(dialog, '.ui-dialog-track-manager');
	$('#dialog_track').empty();
	$('#dialog_track').append(_html_track());

	changeDialogZindex(".ui-dialog-track-manager");
}

function _html_track(){
	var t=new Object(JSON.parse(storage.getItem('_Tracks')));
	if ( !t.length ) {
		$('#dialog_track').append("<br><br><font color='red'>Track is empty.</font>");
	} else {
		var str="<table width='100%'><tr height='40'><th width='31%' align='left'>Track name</th><th width='23%' align='left'>View</th><th width='13%' align='left'>Row</th><th width='13%' align='left'>Order</th><th width='20%' align='left'>Color <input type='submit' name='_track_c_' value='Apply' onClick='_changeColorTrack(this)' style='width: 50px;'></td></th></tr>";
		for (var i=0;i<t.length;i++){
			str=str+"<tr><td><label>"+(i+1)+". "+t[i].track+"</label></td>";
			str=str+"<td><select name='_track_v_"+i+"' onChange='_changeViewTrack(this)'>";
			if ( t[i].p == 1 ) { 
				str=str+"<option value='on' selected>ON</option>";
				str=str+"<option value='off'>OFF</option>";
			} else {
				str=str+"<option value='on'>ON</option>";
				str=str+"<option value='off' selected>OFF</option>";
			}
			str=str+"</select></td>";
			str=str+"<td><select name='_track_d_"+i+"' onChange='_changeDepthTrack(this)'>";
			if ( t[i].h == 1 ) {
				str=str+"<option value='1' selected>fold</option>";
				str=str+"<option value='4'>expand</option>";
			} else {
				str=str+"<option value='1'>fold</option>";
				str=str+"<option value='4' selected>expand</option>";
			}
			str=str+"</select></td>";
			str=str+"<td><select name='_track_s_"+i+"' onChange='_changeSortTrack(this)'>";
			for (var j=0; j<t.length; j++ ) {
				if ( i == j ) {
					str=str+"<option value='"+j+"' selected>"+(j+1)+"</option>";
				} else {
					str=str+"<option value='"+j+"'>"+(j+1)+"</option>";
				}
			}
			str=str+"</select></td>";
			str=str+"<td><input type='text' name='_track_c_"+i+"' value='"+t[i].c+"' style='width: 70px;'>";
		}
		str=str+"</table>";
		str=str+"<br>";
	}
	return str;
}

function _changeColorTrack(Obj) {
	var t=new Object(JSON.parse(storage.getItem('_Tracks')));
	var str="[";
	for ( var i=0; i<t.length; i++ ) {
		str=str+"{";
		str=str+"\"track\":\""+t[i].track+"\",";
		str=str+"\"p\":\""+t[i].p+"\",";
		str=str+"\"h\":\""+t[i].h+"\",";
		str=str+"\"c\":\""+$("input[name='_track_c_"+i+"']").val()+"\",";
		str=str+"\"s\":\""+i+"\"}";
		if ( i < t.length-1 ) {
			str=str+",";
		}
	}
	str=str+"]";
	storage.setItem("_Tracks",str);
	_drawCanvas();
}

function _changeViewTrack(Obj) {
	var n=Obj.name.split("_");			// "_track_v_1"
	var v=Obj.options[Obj.selectedIndex].value;	// on/off
	var t=new Object(JSON.parse(storage.getItem('_Tracks')));

	var cmp = "1";
	if ( v == "off" ) {cmp = "0";}

	t[n[3]].p = cmp;
	storage.setItem("_Tracks", JSON.stringify(t));
/*
	var cmp = "1";
	if ( v == "off" ) {cmp = "0";}

	for ( var i=0; i<t.length; i++ ) {
		if ( t[i].s == n[3] ) {
			t[i].p = cmp;
		}
		t[i].s = i
	}
	storage.setItem("_Tracks", JSON.stringify(t));
*/

/*
	var str="[";

	for ( var i=0; i<t.length; i++ ) {
		str=str+"{";
		str=str+"\"track\":\""+t[i].track+"\",";
		if ( t[i].s == n[3] ){
			str=str+"\"p\":\""+cmp+"\",";
		} else {
			str=str+"\"p\":\""+t[i].p+"\",";
		}
		str=str+"\"h\":\""+t[i].h+"\",";
		str=str+"\"c\":\""+t[i].c+"\",";
		str=str+"\"s\":\""+i+"\"}";
		if ( i < t.length-1 ) {
			str=str+",";
		}
	}
	str=str+"]";
	storage.setItem("_Tracks",str);
*/
	_drawCanvas();
}

function _changeDepthTrack(Obj) {
	var n=Obj.name.split("_");
	var v=parseInt(Obj.options[Obj.selectedIndex].value);
	var t=new Object(JSON.parse(storage.getItem('_Tracks')));
	var str="[";

	for ( var i=0; i<t.length; i++ ) {
		str=str+"{";
		str=str+"\"track\":\""+t[i].track+"\",";
		str=str+"\"p\":\""+t[i].p+"\",";
		if ( t[i].s == n[3] ){
			str=str+"\"h\":\""+v+"\",";
		} else {
			str=str+"\"h\":\""+t[i].h+"\",";
		}
		str=str+"\"c\":\""+t[i].c+"\",";
		str=str+"\"s\":\""+i+"\"}";
		if ( i < t.length-1 ) {
			str=str+",";
		}
	}
	str=str+"]";
	storage.setItem("_Tracks",str);
	_drawCanvas();
}

function _changeSortTrack(Obj) {
	var n=Obj.name.split("_");	// fromTrack(ex. "track_s_2")
	var v=parseInt(Obj.options[Obj.selectedIndex].value);	// distTrackIndex
	var t=new Object(JSON.parse(storage.getItem('_Tracks')));
/*
	var a=new Array();

	for ( var i=0; i<t.length; i++ ) {
		a[i] = i;	// a[fromIndex] = distindex 
	}
	a[n[3]]=v; 
	a[v]=n[3];
*/
	// Swap fromIndex and distIndex
	var fromTrack = storage.getItem('_Track_'+n[3]);
	var distTrack = storage.getItem('_Track_'+v);
 
//	var tmp = storage.getItem('_Track_'+n[3]);
	storage.setItem("_Track_"+n[3], distTrack);
	storage.setItem("_Track_"+v, fromTrack);

	var tracksFromRef = t[n[3]];
	var tracksDistRef = t[v];
	t[n[3]] = tracksDistRef;
	t[v] = tracksFromRef;
/*
	var str="[";
	for ( var i=0; i<a.length; i++ ) {
		for (var j=0;j<t.length;j++) {
			if ( a[i] == t[j].s ){
				str=str+"{";
				str=str+"\"track\":\""+t[j].track+"\",";
				str=str+"\"p\":\""+t[j].p+"\",";
				str=str+"\"h\":\""+t[j].h+"\",";
				str=str+"\"c\":\""+t[j].c+"\",";
				str=str+"\"s\":\""+i+"\"}";
			}
		}
		if ( i < a.length-1 ) {
			str=str+",";
		}
	}
	str=str+"]";

	storage.setItem("_Tracks",str);
*/
	storage.setItem("_Tracks", JSON.stringify(t));
	$('#dialog_track').empty();
	$('#dialog_track').append(_html_track());
	_drawCanvas();
}


//Help

function _dialog_manual(){
	$("#dialog_manual").dialog({
		autoOpen: true,
		modal: false,
		width: 700,
		draggable: true,
		//height: 625,
		resizable: true
	});
}


//About

function _dialog_about(){
	$("#dialog_about").dialog({
		autoOpen: true,
		modal: true,
		width: 400,
		height: 450,
		draggable: true,
		resizable: true
	});
}

//About Tools

function _dialog_about_PRIMER(){
        $("#dialog_about_PRIMER").dialog({
                autoOpen: true,
                modal: true,
                width: 450,
                draggable: true,
                resizable: true
        });
}

function _dialog_about_blast(){
        $("#dialog_about_blast").dialog({
                autoOpen: true,
                modal: true,
                width: 450,
                draggable: true,
                resizable: true
        });
}

function _dialog_about_phytree(){
        $("#dialog_about_phytree").dialog({
                autoOpen: true,
                modal: true,
                width: 450,
                draggable: true,
                resizable: true
        });
}

//About Tools

function _dialog_tutrial(){
        $("#dialog_tutrial").dialog({
                autoOpen: true,
                modal: true,
                width: 650,
                height: 600,
                draggable: true,
                resizable: true
        });
}

//Citation

function _dialog_citation(){
	$("#dialog_citation").dialog({
		autoOpen: true,
		modal: true,
		width: 650,
		draggable: true,
		resizable: true
	});
}


function _dialog_changechr() {
	$('#prm_chr').prop('disabled', true);

//	var selectedVal = $('#prm_chr').val();
	var selectedVal = $('#prm_chr  option:selected').text();
	$("#dialog_changechr").dialog({
		autoOpen: true,
		modal: true,
		width: 270,
		height: 280,
		draggable: false,
		resizable: false,
		close: function (event) { $('#prm_chr').prop('disabled', false); }
	});
	var txtform = $('#dialog_changechr_keyword');
	txtform.val(selectedVal);

	_searchAndSetAllChrs();
	txtform.focus();
}

function _searchAndSetAllChrs() {
	_searchChrsByKeyword(null);
}
function _searchAndSetChrs() {
	var keyword = $('#dialog_changechr_keyword').val();
	_searchChrsByKeyword(keyword);
}

var onLoadChangeChr = 0;	// Prohibit multiple execution of Chr search
function _searchChrsByKeyword(keyword) {
	if(onLoadChangeChr == 1) {
		console.log("Skip _searchChrsByKeyword");
		return;
	}

	onLoadChangeChr = 1;
	var en = new Object(JSON.parse(storage.getItem("_Env")));
	if(keyword) keyword = keyword.replace(new RegExp('^' + en.chromosome_name), '');

	var chrs = JSON.parse(storage.getItem("_Chrs"));
	var prematchRegexp = new RegExp('^' + keyword)
	var ld = "";
	for(var i=0, chrsLen=chrs.length; i<chrsLen; i++) {
		if(!keyword || prematchRegexp.test(chrs[i].id)) {
			ld = ld + "<option value='" + chrs[i].id + "'>" + en.chromosome_name + chrs[i].id + "</option>";
		} 
	}
	$('select#dialog_changechr_list').find('option').remove().end().append(ld);
	onLoadChangeChr = 0;
/*
	onLoadChangeChr = 1;
	$.ajax({
		url: "./bin/chr.php",
		type: "POST",
		cache: false,
		data: {
			"keyword":keyword
		}
	}).done(function(data){
		if(data != null){
			var chrs = new Object(JSON.parse(data));
			var chrsLen = chrs.length;
			if(chrsLen > 0) {
				var ld = "";
				for(var i=0; i<chrsLen; i++) {
					var chr = chrs[i];
					ld = ld + "<option value='" + chr.id + "'>" + en.chromosome_name + chr.id + "</option>";
				}
				$('select#dialog_changechr_list').find('option').remove().end().append(ld);
			} else {
				$('select#dialog_changechr_list').find('option').remove();
			}
		}
		onLoadChangeChr = 0;
	}).fail(function(data){
		onLoadChangeChr = 0;
	});
*/
}
function _changeChrPulldown() {
	var selected = $('select#dialog_changechr_list').val();
	$("select#dialog_changechr_list option").attr("selected", false);
	$('#dialog_changechr').dialog('close');
	$('#prm_chr').prop('disabled', false);
	$('#prm_chr').val(selected).change();	// Change event is not executed just by setting val(). Explicitly change().
}

//Reset to browser
function _dialog_reset(){
	$("#dialog_reset").dialog({
		autoOpen: true,
		modal: true,
		width: 320,
		draggable: true,
		resizable: false
//		resizable: true
	});
}

function _dlg_reset_cancel() {
	$("#dialog_reset").dialog('close');
}

function _dlg_reset_confirm() {
	storage.clear();
	//_initCache();
	location.replace('./');
}


//Variants filter

function _dialog_filter(){
	var dialog = $("#dialog_filter").dialog({
		autoOpen: true,
		modal: false,
		width: 350,
		draggable: true,
		resizable: true,
		dialogClass: 'ui-dialog-variant-filter'
	});
	setClickEventToDialog(dialog, '.ui-dialog-variant-filter');
	$('#prm_quality').val(storage.getItem('_QUAL'));
	$('#prm_depth').val(storage.getItem('_DP'));
	$('#prm_dp4').val(storage.getItem('_DP4'));

	_syncVariantDefaultButton();

	_changeEffGrpForm('filter_effgrp');
	changeDialogZindex(".ui-dialog-variant-filter");
}

/////////////////////////////////////////////// Output messages and reload Canvas
/*
function _reloadCanvas(msg) {
	_showLoading();
	_messageOnScreen(msg);
	FROMSCROLL=false;
	_execCanvas();
}
*/

/////////////////////////////////////////////// Clear hilighted gene variant
function _clearHighlightedGeneVariant() {
	var highlightVariantGene = storage.getItem("_HighlightVariantGene");

	storage.setItem("_HighlightVariantGene", "");
//	storage.setItem("_HighlightVariantExclUpDown","");
	_reloadCanvas("Clear variant highlight : " + highlightVariantGene);
}

/////////////////////////////////////////////// Change variant Default
function _changeVariantDefault() {
	storage.setItem("_EffGrps", JSON.stringify(_getEffNoFilterArray()));
	storage.setItem("_QUAL", String(DEF_QUAL));
	storage.setItem("_DP", String(DEF_DP));
	storage.setItem("_DP4", String(DEF_DP4));

	// Don't change() because it's very heavy.
	$('#prm_quality').val(String(DEF_QUAL));
	$('#prm_depth').val(String(DEF_DP));
	$('#prm_dp4').val(String(DEF_DP4));
	_changeEffGrpForm('filter_effgrp');

	_syncVariantDefaultButton();

	_reloadCanvas("Reset variant filter");
//	_execCanvas();
}
/////////////////////////////////////////////// Change variant QUAL
function _changeQUAL(){
	var qual=$('#prm_quality').val();
	storage.setItem("_QUAL", qual);
	_reloadCanvas("Changing filter: Quality > "+qual);

	_syncVariantDefaultButton();
}
/////////////////////////////////////////////// Change variant DEPTH
function _changeDEPTH(){
	var dp=$('#prm_depth').val();
	storage.setItem("_DP", dp);
	_reloadCanvas("Changing filter: Depth > "+dp);

	_syncVariantDefaultButton();
}

/////////////////////////////////////////////// Change variant DP4
function _changeDP4(){
	var dp=$('#prm_dp4').val();
	storage.setItem("_DP4", dp);
	_reloadCanvas("Changing filter: Depth of Alternative allele > "+dp);

	_syncVariantDefaultButton();
}

/////////////////////////////////////////////// Change variant EffImpact
function _changeEffGrp() {
	storage.setItem("_EffGrps", JSON.stringify(_getEffGrpArray("filter_effgrp")));
	_reloadCanvas("Changing filter: SnpEff Variant impact");

	_syncVariantDefaultButton();
}
function _changeEffGrpForm(idPrefix) {
        var impact2checked = _getEffFilterMap();
        for(key in impact2checked) {
                var checkBox = "";
                if(key === "-1") {
                        checkBox = '#' + idPrefix + 'None';
                } else {
                        checkBox = '#' + idPrefix + key;
                }
//                $(checkBox).prop("checked", impact2checked[key]).change();	// Very heavy processing
                $(checkBox).prop("checked", impact2checked[key]);
        }
}
function _getEffGrpArray(idPrefix) {
	var chk3 = $("#" + idPrefix + "3").prop("checked");
	var chk2 = $("#" + idPrefix + "2").prop("checked");
	var chk1 = $("#" + idPrefix + "1").prop("checked");
	var chk0 = $("#" + idPrefix + "0").prop("checked");
	var chkNone = $("#" + idPrefix + "None").prop("checked");

	var array = [];
	if(chk3) array.push(3);
        if(chk2) array.push(2);
        if(chk1) array.push(1);
        if(chk0) array.push(0);
	if(chkNone) array.push(-1);
	return array;
}
function _syncVariantDefaultButton() {
	if(isVariantFiltered()) {
		$('#btn_variant_default').prop("disabled", false);
	} else {
		$('#btn_variant_default').prop("disabled", true);
	}
}

//Options view: block

function _dialog_theme(){
	$("#dialog_theme").dialog({
		autoOpen: true,
		modal: true,
		width: 300,
		draggable: true,
		resizable: true
	});
	$('#prm_bgc').val(storage.getItem('_Color'));
}

/////////////////////////////////////////////// Change color
function _changeColor(){
	var color=$('#prm_bgc').val();
	storage.setItem("_Color", color);
	location.reload();
}

/////////////////////////////////////////////// Change amino acids
function _changeAmino(){
	if (storage.getItem("_Amino") == "on"){
		storage.setItem("_Amino", "off");
	} else {
		storage.setItem("_Amino", "on");
	}
	_drawCanvas();
}

/////////////////////////////////////////////// Change indicator
function _changeIndicator(){
	if (storage.getItem("_Indicator") == "on"){
		storage.setItem("_Indicator", "off");
		var element = document.getElementById("cvs_ind"); 
		element.style.width = '0px'; 
		element.style.height = '0px'; 
		$('#prm_idc').val("off");
	} else {
		storage.setItem("_Indicator", "on");
		var element = document.getElementById("cvs_ind"); 
		element.style.width = '150px'; 
		element.style.height = '135px'; 
		$('#prm_idc').val("on");
	}
	_drawCanvas();
}

/////////////////////////////////////////////// Synchronize content width
function _syncContentWidth() {
	contentW = getContentWidth();
	$("#track").css('width',contentW);
	$("#GWAS_plot").css('width',contentW);
	$("#content").css('width',contentW);
	$("#content2").css('width',contentW);
}

/////////////////////////////////////////////// Change title width
function _changeTitleW(){
	var prewidth=storage.getItem("_TitleW");
	var width=$('#prm_tw').val();
	storage.setItem("_TitleW", width);
        _syncContentWidth();
/*
	contentW = $("#content").width() + (width - prewidth);
	$("#track").css('width',contentW);
        $("#GWAS_plot").css('width',contentW);
        $("#content").css('width',contentW);
        $("#content2").css('width',contentW);
*/
        titlew = parseInt(storage.getItem("_TitleW"))+parseInt(3);
        titlew2 = parseInt(storage.getItem("_TitleW"))+parseInt(1);
        $(".title").css('width',parseInt(titlew));
        $(".title2").css('width',parseInt(titlew2));
	$("#ind").css({'left':'','top':''});
	var preleft;
	if ($("#indicator").css('left') == 'auto') {
		preleft = parseInt(0);
	} else {
		preleft = parseInt($("#indicator").css('left'));
	}
	var indleft = parseInt(preleft)+parseInt(width)-parseInt(prewidth)+'px';
	$("#indicator").css({'position':'absolute','left':indleft,'buttom':'70px'});
	_messageOnScreen("Changing width of title: "+width+" pixel");
	_drawCanvas();
}

/////////////////////////////////////////////// Change title with ID or Name
function _changeTitleID(){
	//var name=$('#prm_switch_name').val();
	storage.setItem("_Name",$('#prm_switch_name').val());
	var name = storage.getItem("_Name");
	if(name == "id") {
		var prewidth=storage.getItem("_TitleW");
		var width=180;
        	storage.setItem("_TitleW", width);
                _syncContentWidth();
/*
        	contentW = $("#content").width() + (width - prewidth);
        	$("#track").css('width',contentW);
        	$("#content").css('width',contentW);
        	$("#content2").css('width',contentW);
*/
        	titlew = parseInt(storage.getItem("_TitleW"))+parseInt(3);
        	titlew2 = parseInt(storage.getItem("_TitleW"))+parseInt(1);
        	$(".title").css('width',parseInt(titlew));
        	$(".title2").css('width',parseInt(titlew2));
        	//_messageOnScreen("Changing width of title: "+width+" pixel");
        	_drawCanvas();

	} else if (name == "name") {
		var prewidth=storage.getItem("_TitleW");
		var width=220;
        	storage.setItem("_TitleW", width);
                _syncContentWidth();
/*
        	contentW = $("#content").width() + (width - prewidth);
        	$("#track").css('width',contentW);
        	$("#content").css('width',contentW);
        	$("#content2").css('width',contentW);
*/
        	titlew = parseInt(storage.getItem("_TitleW"))+parseInt(3);
        	titlew2 = parseInt(storage.getItem("_TitleW"))+parseInt(1);
        	$(".title").css('width',parseInt(titlew));
        	$(".title2").css('width',parseInt(titlew2));
        	_messageOnScreen("Changing width of title: "+width+" pixel");
        	_drawCanvas();
	}

	_drawCanvas();
	_dlg_make_list();
}

/////////////////////////////////////////////// Change title with ID or Name
function _changeTitleVariety(){
	storage.setItem("_NameSub",$('#prm_switch_sub').val());
	_setTitleColor();
	_dlg_title_color();
	//_update_dlg_title_color_grp();
	_drawTitleColor();
}


//Dialog: Cell information

function _dialog_infocell(str){
	var dialog = $("#dialog_infocell").dialog({
		autoOpen: true,
		modal: false,
		width: 900,
		maxHeight: 600,
		draggable: true,
		resizable: true,
		dialogClass: 'ui-dialog-infocell'
	});
	setClickEventToDialog(dialog, '.ui-dialog-infocell');
	$('#dialog_cellinformation').empty();
	$('#dialog_cellinformation').append(str);

	changeDialogZindex(".ui-dialog-infocell");
}


//Dialog: Blocks

function _dialog_block(){
	var dialog = $("#dialog_block").dialog({
		autoOpen: true,
		modal: false,
		width: 300,
		draggable: true,
		resizable: true,
		dialogClass: 'ui-dialog-block-options'
	});
	setClickEventToDialog(dialog, '.ui-dialog-block-options');
	$('#prm_bn').val(storage.getItem('_Block'));
	$('#prm_bh').val(storage.getItem('_BlockH'));
	$('#prm_bw').val(storage.getItem('_BlockW'));

	changeDialogZindex(".ui-dialog-block-options");
}


/////////////////////////////////////////////// Change column(load block)
function _changeBlock(){
	bn = parseInt(storage.getItem("_Block"));
	blkw = parseInt(storage.getItem("_BlockW"));
	var col=parseInt($('#prm_bn').val());
	storage.setItem('_Block', String(col));
	_syncContentWidth();
/*
        contentW = $("#content").width() + (col - bn) * blkw;
        $("#track").css('width',contentW);
        $("#GWAS_plot").css('width',contentW);
        $("#content").css('width',contentW);
        $("#content2").css('width',contentW);
*/
	if(Objects.Pos+col>_last(Objects.Zoom)) storage.setItem('_Pos',String(_last(Objects.Zoom)-col+1));
	titlew = parseInt(storage.getItem("_TitleW"))+parseInt(3);
	titlew2 = parseInt(storage.getItem("_TitleW"))+parseInt(7);
	$(".title").css('width',parseInt(titlew));
	$(".title2").css('width',parseInt(titlew2));
	plotw = parseInt(blkw) * parseInt(col) + parseInt(32);
	$("#plotcvs").css('width',plotw);
	$("#ind").css({'left':'','top':''});
	_showLoading();
	_messageOnScreen("Changing "+Objects.Block+" to "+col+" blocks");
	FROMSCROLL=false;
	_execCanvas();
}

/////////////////////////////////////////////// Change block width
function _changeBlockW(){
        bn = parseInt(storage.getItem("_Block"));
        blkw = parseInt(storage.getItem("_BlockW"));
	var width=parseInt($('#prm_bw').val());
	storage.setItem("_BlockW", width);
	_syncContentWidth();
/*
        contentW = $("#content").width() + (width - blkw) * bn;
        $("#track").css('width',contentW);
        $("#GWAS_plot").css('width',contentW);
        $("#content").css('width',contentW);
        $("#content2").css('width',contentW);
*/
        titlew = parseInt(storage.getItem("_TitleW"))+parseInt(3);
        titlew2 = parseInt(storage.getItem("_TitleW"))+parseInt(7);
        $(".title").css('width',parseInt(titlew));
        $(".title2").css('width',parseInt(titlew2));
        plotw = parseInt(bn) * parseInt(width) + parseInt(32);
        $("#plotcvs").css('width',plotw);
	$("#ind").css({'left':'','top':''});
	_messageOnScreen("Changing width of block: "+width+" pixel");
	setTimeout("_drawCanvas()", 500);
}

/////////////////////////////////////////////// Change block height
function _changeBlockH(){
	var height=$('#prm_bh').val();
	storage.setItem("_BlockH", height);
	_messageOnScreen("Changing width of height: "+height+" pixel");
	setTimeout("_drawCanvas()", 500);
}


//Effect level list

function _dialog_list_effect(){
	$("#dialog_list_effect").dialog({
		autoOpen: true,
		modal: false,
		width: 350,
		draggable: true,
		resizable: true
	});
}

/////////////////////////////////////////////// Clear Highlight
function _dialog_clearHighlight() {
	var regHighlightsStr = storage.getItem("_RegHighlights");
	if(regHighlightsStr && JSON.parse(regHighlightsStr).length > 0) {
		clearRegionHighlight();

//		FROMSCROLL=false;
		_drawCanvas();
//		_execCanvas();
//		setTimeout("render()", 500);
//		setTimeout("_drawCanvas()", 500);
	} else {
		return void(0);
//		return false;
	}
}
function _dialog_clearVariantHighlight() {
	var highlightVariantGene = storage.getItem("_HighlightVariantGene");
	if(highlightVariantGene) {
		_clearHighlightedGeneVariant();
/*
		storage.setItem("_HighlightVariantGene", "");
//		storage.setItem("_HighlightVariantExclUpDown","");
		_reloadCanvas("Clear variant highlight : " + highlightVariantGene);
*/
	} else {
		return void(0);
//		return false;
	}
}
function _dialog_clearVariantFilter() {
	if(isVariantFiltered()) {
		_changeVariantDefault();
	} else {
		return void(0);
//		return false;
	}
}

/////////////////////////////////////////////// Change color depth for Custom track
function _dialog_colorManager(){
	var en=new Object(JSON.parse(storage.getItem("_Env")));
	var valArrayPct = _genArrayForColManPct();
	var valArray = _genArrayForColMan();
	var KeyRelation = _genKeyRelateColMan(valArray);
	var KeyRelationPct = _genKeyRelateColMan(valArrayPct);
	var zoom= storage.getItem("_Zoom");
	$("#cstm_slider_name").text(en.cstm_name);
	var snp_max=(en.snp_100k/100000)*100;
	var indel_max=_getMaxGraINDEL()/_cvtZoom(storage.getItem("_Zoom"))*100;
	var depth_max=en.depth_max;
	var cstm_max=en.cstm_max;
	var snp_min=(en.snp_min/100000)*100;
	var indel_min=(en.indel_min/100000)*100;
	if("snp_min_rate" in Objects){snp_min=Objects.snp_min_rate*100;}
	if("indel_min_rate" in Objects){indel_min=Objects.indel_min_rate*100;}
	var depth_min=en.depth_min;
	var cstm_min=en.cstm_min;

	if(_isUndefined(KeyRelation[depth_max])){depth_max=roundBasedOnArray(depth_max,valArray);}
	if(_isUndefined(KeyRelation[depth_min])){depth_min=roundBasedOnArray(depth_min,valArray);}
	if(_isUndefined(KeyRelation[cstm_max])){depth_max=roundBasedOnArray(cstm_max,valArray);}
	if(_isUndefined(KeyRelation[cstm_min])){cstm_min=roundBasedOnArray(cstm_min,valArray);}
	if(_isUndefined(KeyRelationPct[snp_max])){snp_max=roundBasedOnArray(snp_max,valArrayPct);}
	if(_isUndefined(KeyRelationPct[snp_min])){snp_min=roundBasedOnArray(snp_min,valArrayPct);}
	if(_isUndefined(KeyRelationPct[indel_max])){indel_max=roundBasedOnArray(indel_max,valArrayPct);}
	if(_isUndefined(KeyRelationPct[indel_min])){indel_min=roundBasedOnArray(indel_min,valArrayPct);}
	$("#snp_slider_range_view").text("Range: "+(snp_min)+"% - "+(snp_max)+"%");
	$("#indel_slider_range_view").text("Range: "+(indel_min)+"% - "+(indel_max)+"%");
	$("#depth_slider_range_view").text("Range: "+valArray[KeyRelation[depth_min]]+" - "+valArray[KeyRelation[depth_max]]);
	$("#cstm_slider_range_view").text("Range: "+valArray[KeyRelation[cstm_min]]+" - "+valArray[KeyRelation[cstm_max]]);
	$("#manager_snp_max").val(en.snp_max_col);
	$("#manager_snp_min").val(en.snp_min_col);
	$("#manager_indel_max").val(en.indel_max_col);
	$("#manager_indel_min").val(en.indel_min_col);
	$("#manager_depth_max").val(en.depth_max_col);
	$("#manager_depth_min").val(en.depth_min_col);
	$("#manager_cstm_max").val(en.cstm_max_col);
	$("#manager_cstm_min").val(en.cstm_min_col);
	_drawManagerInd();

	var colormDialog = $("#dialog_color_manager").dialog({
		autoOpen: true,
		modal: false,
		width: 650,
		maxHeight: window.innerHeight-15,
		draggable: true,
		resizable: true,
    		position: {
        		of:'body',
        		at:'top',
       	 		my:'center'
    		},
		dialogClass: 'ui-dialog-color-manager'
	});
	setClickEventToDialog(colormDialog, '.ui-dialog-color-manager');
	changeDialogZindex('.ui-dialog-color-manager');

	var colorObjects=["#manager_snp_max","#manager_snp_min","#manager_indel_max","#manager_indel_min","#manager_depth_max","#manager_depth_min","#manager_cstm_max","#manager_cstm_min"];
	for(var b=0; b<colorObjects.length; b++){
		$(colorObjects[b]).ColorPicker({
			onSubmit: function(hsb, hex, rgb, el) {
				$(el).val("#"+hex);
				$(el).ColorPickerHide();
				_drawManagerInd(1);
			},
			onBeforeShow: function () {
				$(this).ColorPickerSetColor(this.value);
			}
		}).bind('keyup', function(){
			$(this).ColorPickerSetColor(this.value);
		});
	}

	$(function() {
		$( "#snp_slider_range" ).slider({
			range: true,
			min: 0,
			max: valArrayPct.length-1,
			values: [ KeyRelationPct[snp_min], KeyRelationPct[snp_max] ],
			slide: function( event, ui ) {
				if(ui.values[0] >= ui.values[1]){return false;}
				$("#snp_slider_min").val(valArrayPct[ui.values[0]]);
				$("#snp_slider_max").val(valArrayPct[ui.values[1]]);
				$("#snp_slider_range_view").text("Range: "+valArrayPct[ui.values[0]]+"% - "+valArrayPct[ui.values[1]]+"%");
				_changeRangeOfGrad("snp");
			}
		});
		$("#snp_slider_min").val(valArrayPct[$( "#snp_slider_range" ).slider( "values", 0 )]);
		$("#snp_slider_max").val(valArrayPct[$( "#snp_slider_range" ).slider( "values", 1 )]);
	});
	$(function() {
		$( "#indel_slider_range" ).slider({
			range: true,
			min: 0,
			max: valArrayPct.length-1,
			values: [ KeyRelationPct[indel_min], KeyRelationPct[indel_max] ],
			slide: function( event, ui ) {
				if(ui.values[0] >= ui.values[1]){return false;}
				$("#indel_slider_min").val(valArrayPct[ui.values[0]]);
				$("#indel_slider_max").val(valArrayPct[ui.values[1]]);
				$("#indel_slider_range_view").text("Range: "+valArrayPct[ui.values[0]]+"% - "+valArrayPct[ui.values[1]]+"%");
				_changeRangeOfGrad("indel");
			}
		});
		$("#indel_slider_min").val(valArrayPct[$( "#indel_slider_range" ).slider( "values", 0 )]);
		$("#indel_slider_max").val(valArrayPct[$( "#indel_slider_range" ).slider( "values", 1 )]);
	});
	$(function() {
		$( "#depth_slider_range" ).slider({
			range: true,
			min: 0,
			max: valArray.length-1,
			values: [ KeyRelation[depth_min], KeyRelation[depth_max] ],
			slide: function( event, ui ) {
				if(ui.values[0] >= ui.values[1]){return false;}
				$("#depth_slider_min").val(valArray[ui.values[0]]);
				$("#depth_slider_max").val(valArray[ui.values[1]]);
				$("#depth_slider_range_view").text("Range: "+valArray[ui.values[0]]+" - "+valArray[ui.values[1]]);
				_changeRangeOfGrad("depth");
			}
		});
		$("#depth_slider_min").val(valArray[$( "#depth_slider_range" ).slider( "values", 0 )]);
		$("#depth_slider_max").val(valArray[$( "#depth_slider_range" ).slider( "values", 1 )]);
	});
	$(function() {
		$( "#cstm_slider_range" ).slider({
			range: true,
			min: 0,
			max: valArray.length-1,
			values: [ KeyRelation[cstm_min], KeyRelation[cstm_max] ],
			slide: function( event, ui ) {
				if(ui.values[0] >= ui.values[1]){return false;}
				$("#cstm_slider_min").val(valArray[ui.values[0]]);
				$("#cstm_slider_max").val(valArray[ui.values[1]]);
				$("#cstm_slider_range_view").text("Range :"+valArray[ui.values[0]]+" - "+valArray[ui.values[1]]);
				_changeRangeOfGrad("cstm");
			}
		});
		$("#cstm_slider_min").val(valArray[$( "#cstm_slider_range" ).slider( "values", 0 )]);
		$("#cstm_slider_max").val(valArray[$( "#cstm_slider_range" ).slider( "values", 1 )]);
	});
}

function _resetColorEnv(){
	if("snp_min_rate" in Objects){delete Objects.snp_min_rate;}
	if("indel_min_rate" in Objects){delete Objects.indel_min_rate;}
	_execEnv();
	_drawCanvas();
	_dialog_colorManager();
}

function roundBasedOnArray(val,array){
	var ret="";
	for(var a=0; a<array.length; a++){
		if(array[a] > val){
			var left=a-1;
			if(a<1){left=0;}
			var right=a;
			left=Math.abs(val-left);
			right=Math.abs(val-right);
			if(left >= right){
				ret=array[a];
			}else{
				ret=array[a-1];
			}
			break;
		}
	}
	if(val < array[0]){ret=array[0];}
	return ret;
}

function _genArrayForColMan(){
	var valArray=[0,1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,200,250,300,400,500,600,700,800,900,1000,1500,2000,2500,3000,4000,5000];
	return valArray;
}  

function _genArrayForColManPct(){
	var valArray=[0.001,0.002,0.005,0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10];//percent
	return valArray;
} 

function _genKeyRelateColMan(a){
	var KeyRelation= new Object();
	for(var i=0; i<a.length; i++){
		KeyRelation[a[i]]=i;
	}
	return KeyRelation;
}

function _windowGffClose(){
	var elementcell = document.getElementById("cellinf");
	var elementcellDoc = document.getElementById("cellinf_doc"); 
	elementcellDoc.innerHTML = "";
	elementcellDoc.style.border = "none"; 
	elementcell.style.top = '1px'; 
	elementcell.style.left = '1px';
	elementcellDoc.style.width = 1+"px";
	elementcellDoc.style.height = 1+"px";
	elementcellDoc.style.backgroundColor = 'rgba(0,0,0,0)';
	ctx10.clearRect(0, 0, cvs10.width, cvs10.height);
	ctx10.fillStyle='rgba(0,0,0,0)';
	ctx10.fillRect(0,0,cvs10.width,cvs10.height);
}

function _dialog_phenotypes(){
	var p3flg = '';
        for(var i=0; i<minPos.length; i++) {
            if(minPos[i] == 'gwas') {
                    p3pos = i;
                    p3flg = 1;
            }
        }
        if(p3flg == 1) {
                for(var i=p3pos; i<minPos.length; i++) {
                        if (minPos[i+1] !== undefined) {
                            minPos[i] = minPos[i+1];
                        } else {
                            minPos.pop();
                        }
                        leftpos = (parseInt(175)*(parseInt(i))+ parseInt(5)*(parseInt(i+1)))+'px';
                        $("."+minPos[i+1]+"_window").css('left',leftpos);
                }
        }

        $("#dialog_phenotypes").css('height',$("#tasuke").height() - 20);
        $(".gwas_content").css('height',$("#tasuke").height()-63);

        $("#dialog_phenotypes").css('max-height', "2048px");
        $(".gwas_content").css('max-height', "2005px");
//        $("#dialog_phenotypes").css('max-height',$("#tasuke").height() - 20);
//        $(".gwas_content").css('max-height',$("#tasuke").height()-63);

        $("#dialog_phenotypes").css('display','inline-block');
	$(".effgrp_checkbox").prop('checked',true);
	if ($('input[name=changeSort]:eq(0)').prop('checked')) {
		$('input[name=changeSort]:eq(1)').prop('checked',true);
	}
        if($(".under_gwas").hasClass('fa-window-restore')){
		$(".under_gwas").toggleClass('fa-window-restore fa-window-minimize');
	}
        if($("#dialog_phenotypes").hasClass('minimized')){
                $("#dialog_phenotypes").toggleClass('minimized');
                $("#dialog_phenotypes").css('top','0px');
                //$("#dialog_phenotypes").css('position','fixed');
                $(".gwas_content").css('display','inline-block');
                $(".gwas_content").css('background-color','white');
                $("#dialog_phenotypes").css('width','1020px');
                $("#dialog_phenotypes").css('min-width','178px');
                $("#dialog_phenotypes").css('min-height','42px');
                $("#gwas_title").css('width','1008px');
                $("#gwas_title").css('max-width','1008px');
                $("#gwas_title").css('top','4px');
                $("#gwas_title").css('left','4px');
                $("#dialog_phenotypes .minimize").css('top','9px');
                $("#dialog_phenotypes .close").css('top','9px');
                $(".gwas_content").css('width','1016px');
		document.getElementById("gname").innerHTML = "&nbsp;&nbsp;GWAS";
                document.getElementById("gname").style.fontSize = "20px";
        }
	changeDialogZindex(".gwas_window");
/*
        winFront[winFront.length] = 'gwas';
        for (var i = 0; i < winFront.length; i++) {
                $("."+winFront[i]+"_window").css('z-index',parseInt(1000+i));
        }
*/
	$('#select_phenotype_div').empty();
	$('#choose_pheno').empty();
	var o=new Object(JSON.parse(storage.getItem("_Phenotypes")));
        var selected_phenotype = storage.getItem("_Phenotype");
	var useragent = storage.getItem("_UA");
	var select_phenotype_html = "<table><tr>";
	//if (useragent.toString().indexOf("chrome") > 0) {
		//$('#select_phenotype_div').css({'overflow':'scroll','white-space': 'nowrap','max-width':'550px','max-height':'90px','border':'1px solid black','margin-top':'10px'});
		$('#select_phenotype_div').css({'overflow':'scroll','white-space': 'nowrap','width':'770px','max-height':'90px','border':'1px solid black','margin-top':'10px'});
		for(var i=0;i<o.length;i++){
			select_phenotype_html += "<td><label for=\"gwasd_radio_pheno_" + i + "\" style=\"white-space: nowrap;\">" +
				"<input type=\"radio\" id=\"gwasd_radio_pheno_" + i + "\" class=\"phenotype_radio\" name=\"select_phenotype\" value=\"" + o[i].phenotype + "\"";
			if(o[i].phenotype == selected_phenotype){
				select_phenotype_html += " checked";
			}
			select_phenotype_html += ">" + o[i].phenotype + "</label></td>";
			if(i%4 == 3) {
                                if(i < o.length) {
                                        select_phenotype_html += "</tr><tr>";
                                } else {
                                        select_phenotype_html += "</tr>";
                                }
                        }

/*

			if (i%3 == 2) {
				select_phenotype_html += "</br>";
			} else {
				select_phenotype_html += "&#009;";
			}
*/
		}
		select_phenotype_html += "</table>";
		$('#select_phenotype_div').append(select_phenotype_html);
/*
	} else {
		var select_phenotype_html = "<form><select name=\"phenotype\">";
                for(var i=0;i<o.length;i++){
                        select_phenotype_html += "<option class=\"phenotype_radio\" name=\"select_phenotype\" value=\"" + o[i].phenotype + "\"";
                        if(o[i].phenotype == selected_phenotype){
                                select_phenotype_html += " selected";
                        }
                        select_phenotype_html += ">" + o[i].phenotype + "</option>";
                }
                select_phenotype_html += "</select>";
                $('#select_phenotype_div').append(select_phenotype_html);
	}
*/
	storage.setItem("_Sort","Probability");
	var selected_chr = "all";
	make_phenotype_gene_table(selected_chr,selected_phenotype,"Probability");
	_setClickPhenotypeRadioEvent();
	_setClickSnpEffCheckboxEvent();
	//_setClickEffGrpCheckboxEvent();
	_filterEffGrpEvent();
	_setClickCloseEvent();
	var phenotype_png_name = selected_phenotype.replace(/\s+/g, "_");
	_createGWAS(selected_phenotype);
	//$("#plot_img").attr("src", "images/plot/plot_" + phenotype_png_name + ".png");
/*
	$("#dialog_phenotypes").dialog({
		autoOpen: true,
		//modal: true,
		modal: false,
		width: 855,
		maxHeight: window.innerHeight-15,
		draggable: true,
		resizable: true,
                position: {
                        of:'body',
                        at:'top',
                        my:'center'
                }
	});
*/
}

function make_phenotype_gene_table(selected_chr,selected_phenotype,sort_term){
	if ( $.fn.dataTable.isDataTable("#phenotype_gene_table") ) {
		$('#phenotype_gene_table').DataTable().destroy();
	}
	$('#phenotype_gene_table').empty();
/*
	var phenotype_gene_table_html = '<thead><tr><th>Chr</th><th>Pos</th><th>Probability(-log<sub><small>10</small></sub>)</th><th>Gene ID</th><th>Name</th><th>SnpEff Impact level<span onclick="_dialog_list_effect();"><img src="./images/info_label.png" width="11px"></span></th></tr></thead>';
	phenotype_gene_table_html += '<tfoot><tr><th>Chr</th><th>Pos</th><th>Probability(-log<sub><small>10</small></sub>)</th><th>Gene ID</th><th>Name</th><th>SnpEff Impact level<span onclick="_dialog_list_effect();"><img src="./images/info_label.png" width="11px"></span></th></tr></tfoot>';
	$("#phenotype_gene_table").append(phenotype_gene_table_html);
*/
/*
	paging = document.getElementsByName("phenotype_gene_table_length")[0].value;
	storage.setItem('_Paging',paging);
	if(storage.getItem('_Paging') === undefined) {
		storage.setItem('_Paging','10');
	}
	var paging = storage.getItem('_Paging');
*/
	var en = new Object(JSON.parse(storage.getItem("_Env")));

	var thSnpeff = "SnpEff Impact level<span onclick=\"_dialog_list_effect();\"><img src=\"./images/info_label.png\" width=\"11px\"></span>";
	$('#phenotype_gene_table').DataTable( {
		"destroy": true,
		"processing": true,
		"serverSide": true,
		"searching": false,
		"ordering": false,
		"displayLength": 25,
		"ajax": {
			"url": "./bin/phenotype_gene.php",
			"type": "POST",
			"data": function ( d ) {
				d.chr = selected_chr;
				d.sort_term = sort_term;
				d.prm_phenotype = selected_phenotype;
				d.prm_effgrps = $("input[name='effgrp_checkbox']:checked").map(function(){
                                        return $(this).val();
                                }).get();
			},
			"complete": function() {

			}
		},
		columnDefs: [
			{ "targets": 0, "name": "chr", "title": "Chr", 
				"data": function (row, type, set, meta) {
					return "<div align=\"center\">" + en.chromosome_name + row[0] + "</div>";
				}},
			{ "targets": 1, "name": "pos", "title": "Pos", 
				"data": function (row, type, set, meta) {
					return "<div align=\"center\"><a href=\"javascript:_moveVarpos('" + row[0] + "|" + row[1] + "');\"title=Move this position.\">" + row[2] + "</a></div>";
				}},
			{ "targets": 2, "name": "pobability", "title": "Probability(-log<sub><small>10</small>)", 
				"data": function (row, type, set, meta) {
					return "<div align=\"center\">" + row[3] + "</div>";
				}},
			{ "targets": 3, "name": "geneid", "title": "Gene ID", 
				"data": function (row, type, set, meta) {
					return "<span class=\"GeneID\">" + row[4] + "</span>";
				}},
			{ "targets": 4, "name": "name", "title": "Name", 
				"data": function (row, type, set, meta) {
					return "<span class=\"Name\">" + row[5] + "</span>"
				}},
			{ "targets": 5, "name": "snpeff", "title": thSnpeff, "data": 6},
		]
	});
//	var pheno_chr = "<span><font style=\"font-size:14px\">Select<br>chromosome</font></span><br>";
        //var pheno_chr = "<select id=\"pheno_chr\" style=\"width:100px;font-size:20px\" onchange=\"javascript:_createGWAS('"+selected_phenotype+"');\"><option value=\"all\">all</option>";

/*
console.log("Test:" + $("#pheno_chr").children('option').length + " <= " + selected_chr);
	if($("#pheno_chr").children('option').length === 0) {
		$("#pheno_chr").append(new Option('all', 'all', true, false));
		var o=new Object(JSON.parse(storage.getItem("_Chrs")));
		for (i=0;i<o.length;i++) {
			$("#pheno_chr").append(new Option(en.chromosome_name + o[i].id, o[i].id, false, false));
		}
console.log("Test2:" + $("#pheno_chr").children('option').length);
	}
	$("#pheno_chr").select2().val(selected_chr);	// selected 
*/
	$("#pheno_chr").off("change");
	$("#pheno_chr").find('option').remove();
	if(selected_chr === "all") {
		$("#pheno_chr").append("<option value='all' selected>all</option>");
	}else {
		$("#pheno_chr").append("<option value='all'>all</option>");
	}

	var o=new Object(JSON.parse(storage.getItem("_Chrs")));
	for (i=0;i<o.length;i++) {
		if (selected_chr === o[i].id) {
			$("#pheno_chr").append("<option value=\"" + o[i].id + "\" selected>" + en.chromosome_name + o[i].id + "</option>");
		} else {
			$("#pheno_chr").append("<option value=\"" + o[i].id + "\">" + en.chromosome_name + o[i].id + "</option>");
		}
	}
	$("#pheno_chr").on("change", function() {_changeChrPheno(selected_phenotype);});
/*
	if(selected_chr == "all") {
        	pheno_chr += "<select id=\"pheno_chr\" class=\"js-example-basic-single\" style=\"width:80px;font-size:18px\" onchange=\"javascript:_changeChrPheno('"+selected_phenotype+"');\"><option value=\"all\" selected>all</option>";
	} else {
		
        	pheno_chr += "<select id=\"pheno_chr\" class=\"js-example-basic-single\" style=\"width:80px;font-size:18px\" onchange=\"javascript:_changeChrPheno('"+selected_phenotype+"');\" ><option value=\"all\">all</option>";
	}
        for (i=0;i<o.length;i++) {
		if (selected_chr == o[i].id) {
                	pheno_chr += "<option value=\""+o[i].id+"\" selected>"+o[i].id+"</option>"
		} else {
                	pheno_chr += "<option value=\""+o[i].id+"\">"+o[i].id+"</option>"
        	}
	}
        pheno_chr += "</select>";
        $('#pheno_chr_div').html(pheno_chr);
*/
}

function make_phenotype_gene_eff_table(selected_phenotype){
	if ( $.fn.dataTable.isDataTable("#phenotype_gene_table") ) {
		$('#phenotype_gene_table').DataTable().destroy();
	}
	$('#phenotype_gene_table').empty();
	var phenotype_gene_table_html = '<thead><tr><th>Species</th><th>Chr</th><th>Pos</th><th>Prob</th><th>Gene ID</th><th>Name</th><th>Description</th><th>Eff Name</th><th>Eff Group</th></tr></thead>';
	phenotype_gene_table_html += '<tfoot><tr><th>Species</th><th>Chr</th><th>Pos</th><th>Prob</th><th>Gene ID</th><th>Name</th><th>Description</th><th>Eff Name</th><th>Eff Group</th></tr></tfoot>';
	$("#phenotype_gene_table").append(phenotype_gene_table_html);
	$('#phenotype_gene_table').DataTable( {
		"destroy": true,
		"processing": true,
		"serverSide": true,
		"searching": false,
		"ordering": false,
		"ajax": {
			"url": "./bin/phenotype_gene_eff.php",
			"type": "POST",
			"data": function(d){
				d.prm_phenotype = selected_phenotype;
				d.prm_effgrps = $("input[name='effgrp_checkbox']:checked").map(function(){
					return $(this).val();
				}).get();
			},
			"complete": function() {

			}
		}
	});
}	 

function _dialog_gwas_plot(){    
	$("#dialog_gwas_plot").dialog({
		autoOpen: true,
		modal: true,
		width: 500,
		draggable: true,
		resizable: true
	});
}
/*
function _dialog_phenotype_paper(i){
	var o=new Object(JSON.parse(storage.getItem('_Lists')));
	var paper_array = _getPhenotypePapers(o[i].id, storage.getItem("_Phenotype"));
	var phenotype_paper_html = '';
	$("#phenotype_paper_div").empty();
	for(var j = 0; j < paper_array.length; j++){
		phenotype_paper_html += '<div id="paper_' + j + '_div" class="paper_div">';
		phenotype_paper_html += '<div id="paper_' + j + '_title_str_div" class="paper_dialog_head_div">Title</div>';
		phenotype_paper_html += '<div id="paper_' + j + '_title_div" class="paper_dialog_content_div">' + paper_array[j].title + '</div>';
		phenotype_paper_html += '<div id="paper_' + j + '_author_str_div" class="paper_dialog_head_div">Author</div>';
		phenotype_paper_html += '<div id="paper_' + j + '_author_div" class="paper_dialog_content_div">' + paper_array[j].author + '</div>';
		phenotype_paper_html += '<div id="paper_' + j + '_pmid_str_div" class="paper_dialog_head_div">PMID</div>';
		phenotype_paper_html += '<div id="paper_' + j + '_pmid_div"  class="paper_dialog_content_div"><a href="http://www.ncbi.nlm.nih.gov/pubmed/' + paper_array[j].PMID + '" target="_blank">' + paper_array[j].PMID + '</a></div>';
		phenotype_paper_html += '<div id="paper_' + j + '_abst_str_div" class="paper_dialog_head_div">Abstract</div>';
		phenotype_paper_html += '<div id="paper_' + j + '_abst_div"  class="paper_dialog_content_div">' + paper_array[j].abst + '</div></div>';
	}
	if (phenotype_paper_html=='') {
		phenotype_paper_html += '<br><br><font size="4">There is no paper information about this phenotype.</font><br><br><br>';
	}
	$("#phenotype_paper_div").append(phenotype_paper_html);
	$("#dialog_phenotype_paper").dialog({
		autoOpen: true,
		modal: true,
		width: 500,
		draggable: true,
		resizable: true
	});
}
*/
function _SyncPrimer32Expseq() {
        chr = $("#prm_rp3_chr").val();
        tgts = $("#prm_rp3_tgt").val();
        tgte = $("#prm_rp3_tgt_e").val();
        flk = $("#prm_rp3_flk").val();
	sl = document.getElementById("flk_len");
        avd = $("#prm_rp3_avd").val();
        //Ns = $("#prm_rp3_Ns").val();
	form = document.forms.prm_rp3_Ns;
	Ns = form.Ns_selection.value;
        qual = $("#prm_rp3_qual").val();
        dp = $("#prm_rp3_dp").val();
	$("#prm_p3_chr").val(chr).trigger('change');
//	$("#prm_p3_chr").select2().val(chr).change();	// Does not work properly in IE
//        $("#prm_p3_chr").val(chr);
        $("#prm_p3_tgt").val(tgts);
        $("#prm_p3_tgt_e").val(tgte);
        $("#prm_p3_flk").val(flk);
        $("#prm_p3_avd").val(avd);
        $("#prm_p3_Ns").val(Ns);
        $("#prm_p3_qual").val(qual);
        $("#prm_p3_dp").val(dp);
        $("#prm_p3_s").val(parseInt(tgts)-parseInt(flk));
        $("#prm_p3_e").val(parseInt(tgte)+parseInt(flk));
        flk5=parseInt(flk);
        flk3=parseInt(flk);
        if((parseInt(tgts)-flk) < 0){flk5=parseInt(tgts)-1;}
         sl.innerHTML = "5\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk5+"&nbsp;bp<br>3\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk3+"&nbsp;bp";
	if(Ns==1) {
		_showVarsite2(Ns);
                var element = document.getElementById( "prm_rp3_Ns2" ) ;
                var elements = element.Ns2_selection ;
                elements[0].checked = true;
	} else if (Ns==0) {
		_hideVarsite2(Ns);
                var element = document.getElementById( "prm_rp3_Ns2" ) ;
                var elements = element.Ns2_selection ;
                elements[1].checked = true;
	}
	_dialog_p3_len();
}

//TODO _dialog_rp3_len is called twice
function _SyncExpseq2Primer3() {
        chr = $("#prm_p3_chr").val();
        tgts = $("#prm_p3_tgt").val();
        tgte = $("#prm_p3_tgt_e").val();
        flk = $("#prm_p3_flk").val();
	sl = document.getElementById("flk_len");
        avd = $("#prm_p3_avd").val();
        //Ns = $("#prm_p3_Ns").val();
        form = document.forms.prm_rp3_Ns2;
        Ns = form.Ns2_selection.value;
        qual = $("#prm_p3_qual").val();
        dp = $("#prm_p3_dp").val();
	$("#prm_rp3_chr").val(chr).trigger('change');
//	$("#prm_rp3_chr").select2().val(chr).change();	// Does not work properly in IE
//        $("#prm_rp3_chr").val(chr);
        $("#prm_rp3_tgt").val(tgts);
        $("#prm_rp3_tgt_e").val(tgte);
        $("#prm_rp3_flk").val(flk);
        $("#prm_rp3_avd").val(avd);
        $("#prm_rp3_Ns").val(Ns);
        $("#prm_rp3_qual").val(qual);
        $("#prm_rp3_dp").val(dp);
        $("#prm_rp3_s").val(parseInt(tgts)-parseInt(flk));
        $("#prm_rp3_e").val(parseInt(tgte)+parseInt(flk));
        flk5=parseInt(flk);
        flk3=parseInt(flk);
        if((parseInt(tgts)-flk) < 0){flk5=parseInt(tgts)-1;}
        if((parseInt(tgte)+flk) > parseInt(_last_Chr("1b",chr.value))){flk3=parseInt(_last_Chr("1b",chr.value))-parseInt(tgte);}
         sl.innerHTML = "5\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk5+"&nbsp;bp<br>3\'&nbsp;flanking&nbsp;&nbsp;region:&nbsp;&nbsp;"+flk3+"&nbsp;bp";
        if(Ns==1) {
                _showVarsite(Ns);
		var element = document.getElementById( "prm_rp3_Ns" ) ;
		var elements = element.Ns_selection ;
		elements[0].checked = true;
        } else if (Ns==0) {
                _hideVarsite(Ns);
		var element = document.getElementById( "prm_rp3_Ns" ) ;
                var elements = element.Ns_selection ;
                elements[1].checked = true;
        }
	_dialog_rp3_len();
}

function _checkNs(lprm_from,lprm_to,rprm_from,lprm_to,chrv) {
	var Nspos = "";
	$.ajax({
        	url: "./bin/"+_backendSelector("checkNs.php"),
                type: "POST",
                cache: false,
		async: false,
                data: {
                	"prm_lprm_from":lprm_from,
                        "prm_lprm_to":lprm_to,
                        "prm_rprm_from":rprm_from,
                        "prm_rprm_to":rprm_to,
                        //"prm_s_from":s_from,
                        //"prm_s_to":s_to,
                        "prm_chr":chrv,
                        "prm_list":_getList("db").toString()
                },
                success: function(data) {
			Nspos = data;
                }
	});
	 return Nspos;
}

function _createHelp(text_id){
	document.getElementById("dialog_p3").onclick = function(e) {
        	var elementcell = document.getElementById("helptext");
        	var elementcellDoc = document.getElementById("helptextDoc");
		var boux = e.pageX;
		var bouy = e.pageY;
		elementcell.style.position = "fixed";
		elementcell.style.left = (boux-5)+'px';
        	elementcell.style.top = (bouy+8)+'px';
                //elementcellDoc.style.width = (180)+"px";
                elementcellDoc.style.height = (18)+"px";
                elementcellDoc.style.backgroundColor = 'white';
		if($.isNumeric(text_id)) {
			if(text_id==1) {
				elementcellDoc.style.width = (180)+"px";
				str = "<font>&nbsp;Target for primer designing</font>";
			} else if (text_id==2) {
                                elementcellDoc.style.width = (235)+"px";
                                str = "<font>&nbsp;Primer is selected from this region.</font>";
                        } else if (text_id==3) {                                                                elementcellDoc.style.width = (290)+"px";
                                str = "<font>&nbsp;Primer does not overlap around the target.</font>";
                        } else if (text_id==4) {                               
                                elementcellDoc.style.width = (260)+"px";
                                str = "<font>&nbsp;Variant sites are replaced by 'N' letter.</font>";
                        } else if (text_id==5) {
                                elementcellDoc.style.width = (290)+"px";
                                str = "<font>&nbsp;Quality threshold for variant sites masking.</font>";
			} else if (text_id==6) {
                                elementcellDoc.style.width = (290)+"px";
                                str = "<font>&nbsp;Depth threshold for variant sites masking.</font>";
			} else if (text_id==7) {
                                elementcellDoc.style.width = (165)+"px";
                                str = "<font>&nbsp;mask as \"N\" in the input</font>";
			} else if (text_id==8) {
                                elementcellDoc.style.width = (160)+"px";
                                str = "<font>&nbsp;only highlight in results</font>";
			} else if (text_id==9) {
                                elementcellDoc.style.width = (300)+"px";
				elementcellDoc.style.height = (36)+"px";
                                str = "<font>&nbsp;Using the e-PCR option, you can check the specificity of the primer predicted primer3.</font>";
                        }
	        	elementcellDoc.innerHTML = str;
       	        	elementcellDoc.style.border = "solid 1px black";
		} else {
			elementcellDoc.style.backgroundColor = "";
			str = "";
                        elementcellDoc.innerHTML = str;
                        elementcellDoc.style.border = "";
		}
		text_id = "";
	}
}

function _createHelp2(text_id){
        document.getElementById("dialog_p3").onclick = function(e) {
                var elementcell = document.getElementById("helptext2");
                var elementcellDoc = document.getElementById("helptextDoc2");
                var boux = e.pageX;
                var bouy = e.pageY;
                elementcell.style.position = "fixed";
                elementcell.style.left = (boux-5)+'px';
                elementcell.style.top = (bouy+8)+'px';
                //elementcellDoc.style.width = (180)+"px";
                elementcellDoc.style.height = (18)+"px";
                elementcellDoc.style.backgroundColor = 'white';
                if($.isNumeric(text_id)) {
                        if(text_id==1) {
                                elementcellDoc.style.width = (180)+"px";
                                str = "<font>&nbsp;Target for primer designing</font>";
                        } else if (text_id==2) {
                                elementcellDoc.style.width = (235)+"px";
                                str = "<font>&nbsp;Primer is selected from this region.</font>";
                        } else if (text_id==3) {                                                                e
lementcellDoc.style.width = (290)+"px";
                                str = "<font>&nbsp;Primer does not overlap around the target.</font>";
                        } else if (text_id==4) {
                                elementcellDoc.style.width = (260)+"px";
                                str = "<font>&nbsp;Variant sites are replaced by 'N' letter.</font>";
                        } else if (text_id==5) {
                                elementcellDoc.style.width = (290)+"px";
                                str = "<font>&nbsp;Quality threshold for variant sites masking.</font>";
                        } else if (text_id==6) {
                                elementcellDoc.style.width = (290)+"px";
                                str = "<font>&nbsp;Depth threshold for variant sites masking.</font>";
                        }
                        elementcellDoc.innerHTML = str;
                        elementcellDoc.style.border = "solid 1px black";
                } else {
                        elementcellDoc.style.backgroundColor = "";
                        str = "";
                        elementcellDoc.innerHTML = str;
                        elementcellDoc.style.border = "";
                }
                text_id = "";
        }
}

function _helpEvent() {
	$(".help_tgt").mouseover(function(){
		///nothing///
	}).mouseout(function() {
		var elementcellDoc = document.getElementById("helptextDoc");
		elementcellDoc.style.backgroundColor = "";
        	str = "";
        	elementcellDoc.innerHTML = str;
        	elementcellDoc.style.border = "";
	});
}

function _helpEvent2() {
        $(".help_tgt").mouseover(function(){
                ///nothing///
        }).mouseout(function() {
                var elementcellDoc = document.getElementById("helptextDoc2");
                elementcellDoc.style.backgroundColor = "";
                str = "";
                elementcellDoc.innerHTML = str;
                elementcellDoc.style.border = "";
        });
}

function searchOnTrack() {
	var query = document.getElementById("searchTrk").value;

	// "chr01:10001" -> "chr01:10001-10001"
        var res = query.match(/^([^\:\s]+)\:([\d,]+)$/);
        if(res && res.length == 3) query = query + "-" + res[2];

	// "chr01:10001-10001"
        res = query.match(/^([^\:\s]+)\:([\d,]+)\-([\d,]+)$/);
        if(res && res.length == 4) {
//	if(/:/.test(query)) {
		jumpPosition(query);
	} else {
		$(".search_window").css('display','inline-block');
		document.getElementById("prm_keyword").value=query;
		_dialog_go();
		_preSearchID(1);
	}
}
function jumpPosition(query) {
        //search chromosome pos//
                qpos = query;
                query = "all|";
                var chrpos = qpos.split(":");
                var posinfos = chrpos[1].split("-");
		prm_fa_s = posinfos[0].replace(/,/g,"");
		prm_fa_e = posinfos[1].replace(/,/g,"");
		//validate chr and pos keyword
		$.ajax({
                	url: "./bin/"+_backendSelector("validateChr.php"),
                	type: "POST",
                	cache: false,
                	data: {
				"prm_fa_chr":chrpos[0],
                        	"prm_fa_s":prm_fa_s,
                        	"prm_fa_e":prm_fa_e,
                        	"prm_blk":storage.getItem("_Block")
			},
			success: function(data) {
			 	var errflgs = data;
				var errstr = "";
				if (errflgs != "") {
					if (errflgs.match(/1/)) {
						errstr = "Invalid:string is entered on the position!!";
					} 
					if (errflgs.match(/2/)) {
						if(errstr != "") {
							errstr += "<br>Invalid:start position and end position is reversed!!";
						} else {
							errstr += "Invalid:start position and end position is reversed!!";
						}
					}
                                        if (errflgs.match(/3/)) {
						if(errstr != "") {
							errstr += "<br>Invalid:the length between start to end is longer than " + parseInt(100000*storage.getItem("_Block")) +"bp!!";
						} else {
							errstr = "Invalid:the length between start to end is longer than " + parseInt(100000*storage.getItem("_Block")) +"bp!!";
						}
                                        }
                                        if (errflgs.match(/4/)) {
						if (!errflgs.match(/5/)) {
							if(errstr != "") {
                                                		errstr += "<br>Invalid:the position you entered is out of range on this chromosome!!";
							} else {
                                                		errstr = "Invalid:the position you entered is out of range on this chromosome!!";
							}
						}
                                        }
                                        if (errflgs.match(/5/)) {
						if(errstr != "") {
                                                	errstr += "<br>Invalid:this chromosomeis not registered!!";
						} else {
                                                	errstr = "Invalid:this chromosomeis not registered!!";
						}
                                        }
					_messageOnScreen(errstr);
				} else {
					_changeAutoPosZoom(chrpos[0], prm_fa_s, prm_fa_e);
					setRegionHighlight({"chr":chrpos[0], "st":prm_fa_s, "en":prm_fa_e});	// Region Highlight
//                                        addRegionHighlight({"chr":chrpos[0], "st":prm_fa_s, "en":prm_fa_e});	// Region Highlight
                			_changeChromosomeSearch(chrpos[0]+":"+posinfos[0]+"bp - "+posinfos[1]+"bp"+" with 100blocks");
				}
			}
		});
}

function _dialog_gwas_btn(){
        prm_effgrps = $("input[name='effgrp_checkbox']:checked").map(function(){
                return $(this).val();
        }).get();
        sub = document.getElementById("filterbtn");
        if(prm_effgrps.length > 0) {
                sub.innerHTML = '<button type=\"submit\" id=\"filterbtn\" value=\"refresh\">Refresh</button>';
        } else {
                sub.innerHTML = '<button type=\"submit\" id=\"filterbtn\" value=\"refresh\" disabled>Refresh</button>';
        }
}

function _validateGene(gene) {
        gene = _escapeHTML(gene);
        res = "";
        $.ajax({
                url: "./bin/"+_backendSelector("validateGene.php"),
                type: "POST",
                async:false,
                cache: false,
                data: {
                        "prm_fa_gene":gene,
                },
                success: function(data) {
                        res=data;
                }
        });
        return res;
}

function _getCDSlength(gene) {
        gene = _escapeHTML(gene);
        length = "";
        $.ajax({
                url: "./bin/"+_backendSelector("getCDSLength.php"),
                type: "POST",
                async:false,
                cache: false,
                data: {
                        "prm_fa_gene":gene,
                },
                success: function(data) {
                        length=data;
                }
        });
        return length;
}

function _createGWAS(phenostr) {
	var chrstr = $('#pheno_chr').val();
	var phenotype = phenostr;
        $.ajax({
        	url: "./bin/getQqdata.php",
                type: "POST",
                cache: false,
                async: false,
                data: {
                	"chr": chrstr,
                        "phenotype":phenotype
                },
                success: function(datas) {
                        forplot = datas;
                }
        });
        var json = JSON.parse(forplot);
        var chrs = json['chrs'];
        var forplots = json['probs'];
//        forplots = forplot.split("|");
        var chrinfo = {};
        var chrtotal = 0;
        for(var i=0, chrLen=chrs.length; i<chrLen; i++) {
                chrinfo[chrs[i][0]] = {ind:i, size:chrs[i][1]};
                chrtotal++;
        }
//        var datas = "[";
        var prechr="";
//        var pnum = forplots.length - 1;
        var colornum = 0;
        var tickary = [];
	var xmax;
	if (chrstr == "all") {
		zrange = [0, chrtotal];
		xmax = chrtotal;
		for(var i=0; i<chrtotal; i++) {
			tickary.push([i, chrs[i][0]]);
		}
	} else {
		zrange = [0, chrs[0][1]];
		xmax = chrs[0][1];
		var unit = 5000000;
		var loop = 0;
		while(true) {
			tickary.push([unit*loop, String(unit*loop)]);
			loop++;
			if(unit * loop > chrs[0][1]) break;
		}
	}

	var d2 = [];
	for (var i = 0, forplotsLen=forplots.length; i<forplotsLen; i++) {
//        for (var i = 0; i<forplots.length;i++) {
//        	var forplotss = forplots[i].split("--SPL--");
//                var chrpos = forplotss[2];
//		var chrlen = forplotss[3];
//		var posinfo = chrpos.split(" ");
//		var chr = posinfo[0];
		var chr = forplots[i][0];
		if(!chrinfo[chr]) continue;

		var chrlen = chrinfo[chr]['size'];
		var pos = forplots[i][1];
		if(pos > chrlen) continue;

		var prob = forplots[i][2];
                var color="";

		var plotx;
		if (chrstr == "all") {
			if (prechr != chr) colornum += 1;
			plotx = pos / chrinfo[chr]['size'] + chrinfo[chr]['ind'];
		} else {
			plotx = pos;
		}
/*
		if (chrstr == "all") {
                	if (prechr != chr) {
                       		tickary.push([colornum, chr]);
                       		colornum += 1;
                	}
		} else {
			tickary = Math.floor(chrlen/5000000);
		}
*/
                if (colornum %2 == 0) {
                	color = "#00bfff";
                } else if ( colornum % 2 == 1) {
                	color = "#00ffff";
                }

                prechr = chr;

		var label = chr + " " + pos.toLocaleString();
		d2.push( {label:label, color:color, points:{fillColor:color}, data: [[plotx, prob]]} );
//		datas += "{\"label\":\"" + label + "\",\"color\":\"" + color + "\",\"points\":{\"fillColor\":\"" + color + "\"},\"data\":[[" + plotx + "," + prob + "]]},";
/*
                datas += "{\"label\":\"" + chrpos + "\",\"color\":\"" + color + "\",\"points\":{\"fillColor\":\"" + color + "\"},\"data\":[[" + forplotss[0] + "," + forplotss[1] + "]]},";
                if (i == pnum) {
                	datas = datas.slice(0,-1);
                        datas += "]";
                }
*/
	}
        var labelopt = "axisLabel: \"Chromosome and Position\"";
        titlediv = document.getElementById("title");
	if (chrstr == "all") {
        	titlediv.innerHTML = phenotype;
	} else {
		titlediv.innerHTML = phenotype+":"+chrstr;
	}
        var data = d2;
/*
	var o=new Object(JSON.parse(storage.getItem("_Chrs")));
	if(chrstr == "all") {
		zrange = [0, o.length];
	} else {
		zrange = [0, chrlen];
	}
*/
        var options = {
        	series: {
                	points: {
                        	show: true,
                        	fill: true,
				radius: 3
                        }
                },
                grid: {
                   	hoverable: true,
                      	clickable: true
                },
                legend: {
                        show: false
                },
                xaxis: {
                	color: "black",
                        axisLabel: "Chromosome and Position",
                        ticks:tickary,
                        min: 0,
                        max: xmax,
                        axisLabelUseCanvas: true,
                        axisLabelFontSizePixels: 12,
                        axisLabelFontFamily: 'Verdana, Arial',
                        axisLabelPadding: 10,
                        zoomRange:zrange,
                        panRange:zrange,
               	},
                yaxis: {
                  	color: "black",
                        axisLabel: "P-value(-log10)",
                        axisLabelUseCanvas: true,
                        axisLabelFontSizePixels: 12,
                        axisLabelFontFamily: 'Hebratica, Arial',
                        axisLabelPadding: 5,
                        zoomRange: false,
                        panRange: false,
             	},
                zoom: {
                        interactive: true
                },
                pan: {
                        interactive: true
                }
   	};

        var plot = $.plot("#placeholder", data, options);

        $("#placeholder").bind("plotselected", function (event, ranges) {
        	$.each(plot.getXAxes(), function(_, axis) {
        		var opts = axis.options;
       			opts.min = ranges.xaxis.from;
               		opts.max = ranges.xaxis.to;
       		});
        	plot.setupGrid();
        	plot.draw();
        	plot.clearSelection();
    	});

        $("#placeholder").bind("plotpan", function (event, plot) {
             	var axes = plot.getAxes();
        });

        $("#placeholder").bind("plotzoom", function (event, plot) {
               	var axes = plot.getAxes();
        });
        $("<div id='tooltip' onclick=\"\"></div>").css({
         	position: "absolute",
                display: "none",
                border: "1px solid #fdd",
                padding: "2px",
               	"background-color": "#fee",
                opacity: 0.80
       	}).appendTo("body");

        $("#placeholder").bind("plothover", function (event, pos, item) {
        	if (item) {
                      	var x = item.datapoint[0],
                            y = item.datapoint[1].toFixed(4);

                        //$("#tooltip").html("position : "+item.series.label+"<br>phtnotype : "+ phenotype + "<br> p-value\(-log10\) : "+y)
                        $("#tooltip").html("position : "+item.series.label+"<br>phenotype : "+ phenotype + "<br> p-value\(-log10\) : "+y+"<input type=\"hidden\" id=\"tippos\" value=\""+item.series.label+"\"/>")

                                     .css({top: item.pageY+5, left: item.pageX+5})
                                     .fadeIn(200);
           	} else {
                    	$("#tooltip").hide();
                }
     	});

        var isiPad = navigator.userAgent.match(/iPad/i) != null;
        var isiPhone = navigator.userAgent.match(/iPhone/i) != null;
        var isAndroid = navigator.userAgent.match(/Android/i) != null;
        if (isiPad || isiPhone || isAndroid) {    //iPad & iPhone & Android
                $(document).bind("click","#tooltip",function () {
                        var tipdoc = document.getElementById("tippos");
                        var tippos = tipdoc.value;
                        var labels = tippos.split(" ");
                        var chr = labels[0];
                        var pos = labels[1];
                        pos = pos.replace(/,/g,"");
                        _moveVarpos(chr+"|"+pos);
                });
        } else {
                $("#placeholder").bind("plotclick", function (event, pos, item) {
                        if (item) {
                                var label = item.series.label;
                                var labels = label.split(" ");
                                var chr = labels[0];
                                var pos = labels[1];
                                pos = pos.replace(/,/g,"");
                                _moveVarpos(chr+"|"+pos);
                        }
                });
        }


	$('#placeholder').bind('touchstart', function(){
		$(window).on('touchmove.noScroll', function(e) {
			e.preventDefault();
		});
	});

	$('#placeholder').bind('touchend', function(){
		$(window).off('.noScroll');
	});
	
	var movePoint = { x: 0, y: 0 };
	$('#placeholder').bind('gesturestart', function(ev){
		movePoint.x = ev.originalEvent.layerX;
		movePoint.y = ev.originalEvent.layerY;
	});
					
	$('#placeholder').bind('gesturechange', function(ev){
		var scale = ev.originalEvent.scale;
		var lX = ev.originalEvent.layerX;
		var lY = ev.originalEvent.layerY;
		var position = { "left": lX, "top": lY };
		plot.zoom({"amount": scale, "center": position});
		var moveP = { "left": movePoint.x - lX, "top": movePoint.y - lY};
		plot.pan(moveP);
		movePoint.x = ev.originalEvent.layerX;
		movePoint.y = ev.originalEvent.layerY;
	});
	return chrstr;
}

function _syncChrPheno() {
	var selected_phenotype = storage.getItem("_Phenotype");
	_changeChrPheno(selected_phenotype);
}
function _changeChrPheno(phenotype) {
	var chr = _createGWAS(phenotype);
	var sort = storage.getItem("_Sort");
	make_phenotype_gene_table(chr,phenotype,sort);
}

$(document).ready(function() {
  var sub = document.getElementById("phy_submit");
  $('#phy_submit').click(function(){
	sub.disabled = true;	// Button無効化.
	$.ajax({
                url: "./bin/checkPid.php",
        }).done(function (response) {
        	//Ajax通信が成功した場合に呼び出されるメソッド
        	//デバッグ用 アラートとコンソール
        	if (response['snum'] > 1 || response['sflg'] != "") {
			alert("This program is too busy.");
		} else {
		        var idlstDoc = document.getElementById("idlst");
        		var qrylst = "";
        		for (i=0;i<idlstDoc.length;i++) {
                		var select = idlstDoc[i].value;
                		var selectarr = select.split("|");
                		qrylst += selectarr[0];
                		if(i<idlstDoc.length-1) {
                        		qrylst += ","
                		}
        		}

			var chr = document.getElementById("prm_phy_chr");
        		var st = document.getElementById("prm_phy_s");
        		var ed = document.getElementById("prm_phy_e");
			var numthread = JSON.parse(storage.getItem('_Env')).threadnum;
//        		var numthread = _getNumThread();
        		var ajaxloader = document.getElementById("phy_ajaxloader");
        		var res = document.getElementById("phy_result");
        		//var id = document.getElementById("prm_phy_objid").value;
        		var name=storage.getItem("_Name");

        		///check whether ID exists///
        		var isExistID = 1;
        		var idnum = "";
        		var idflag = 1;
        		if(document.getElementById("prm_phy_cri").value == 1) {
                		var id = document.getElementById("prm_phy_objid").value;
                		if(/\;|\||\&|\`|\(|\)|\<|\>|\*|\?|\{|\}|\[|\]|\!/.test(id)){
                        		var elem = document.getElementById("phy_result");
                        		elem.innerHTML = "<font style=\"font-size:18px;color:red;\">Error : Invalid value in ID!</font>";
	                	} else {
        	                	result = _checkID(id);
                	        	if(result == "Error") {
                        		        idflag = 0;
                       			}
                		}
        		}
        		if(idflag == 0) {
            			var elem = document.getElementById("phy_result");
            			elem.innerHTML = "<font style=\"font-size:18px;color:red;\">Error : Invalid value in ID!</font>";
        		} else {
                		var cds = 0;
                		if(document.getElementById("prm_phy_gene").checked){cds = document.getElementById("prm_phy_gene").value;}
                		ajaxloader.innerHTML="<img src=\"./images/loader.gif\" alt=\"Running...\" style=\"\" />Running...";
				res.innerHTML="";

	        		param =  {'sid':response['sid'],
                                	"qry_list":qrylst,
                                	"prm_phy_chr":document.getElementById("prm_phy_chr").value,
                                	"prm_phy_s":document.getElementById("prm_phy_s").value,
                                	"prm_phy_e":document.getElementById("prm_phy_e").value,
                                	"prm_phy_qual":document.getElementById("prm_phy_qual").value,
                                	"prm_phy_dp":document.getElementById("prm_phy_dp").value,
                                	"prm_phy_list":document.getElementById("prm_phy_list").value,
                                	"prm_phy_cri":document.getElementById("prm_phy_cri").value,
                                	"prm_phy_gene":cds,
                               		"prm_phy_name":name,
                               		"prm_numthread":numthread,
                               		"prm_phy_objid":document.getElementById("prm_phy_objid").value,
                                	"prm_phy_grp":Objects.NameSub
					 };
	                	$.ajax({
	                        	type: "POST",
	                        	url:"./bin/exec.php",
	                        	data:param
                		}).done(function (dataArr) {
                        		if(dataArr['status'] == 0) {
                                		ajaxloader.innerHTML = "";
						data = dataArr['result'];
                                		if(/Invalid/.test(data)) {
                                        		var elem = document.getElementById("phy_result");
                                        		elem.innerHTML = "<font style=\"font-size:18px;color:red;\">"+data+"</font>";
                                		} else {
                                        		data = data.replace(/REF/,"Reference");
                                        		var datas = data.split("|");
                                        		if(datas[3]){
                                                		res.innerHTML = _escapeHTML(datas[3]);
                                                		return;
                                        		}
                                        		var Time = new Date();
                                        		var timePrint = Time.getFullYear()+"_"+(Time.getMonth()+1)+"_"+Time.getDate();
                                        		var fileName=_escapeHTML(chr.value)+"_"+st.value+"b-"+ed.value+"b_"+timePrint;
                                        		var pop_win = window.open(
                                                        	"",
                                                  		"Phylogenetic Tree Result",
                                                  		"width=600,height=600,scrollbars=no,resizable=yes"
                                                		);
                                        		var results = _genPhyResult(data,fileName);
                                        		var retString = results.retString;
                                        		var phyResult = results.phyResult;
                                        		//var retString,phyResult = _genPhyResult(data,fileName);
                                        		//res.innerHTML = _genPhyResult(data,fileName);
                                        		res.innerHTML = phyResult;
                                        		//showtree('newick','phy_svg');
                                        		pop_win.window.document.open();
                                        		pop_win.window.document.write(
                                                		'<!DOCTYPE html>'
                                                		+'<head><title>Exporting Phylogenetic Tree</title></head>'
                                                		+'<script src="./js/jquery-2.1.4.min.js" type="text/javascript"></script>'
                                                		+'<script src="./js/jquery-ui-1.10.4.min.js" type="text/javascript"></script>'
                                                		+'<script src="./js/format4js.js" type="text/javascript"></script>'
                                                		+'<script src="./lib/treelib/treelib.js" type="text/javascript"></script>'
                                                		+'<script src="./lib/SVGPan2/SVGPan.js"></script>'
                                                                +'<script src="./js/env.js" type="text/javascript"></script>'
                                                		+'<script src="./js/tools.js" type="text/javascript"></script>'
                                                		+'<script src="./js/init.js" type="text/javascript"></script><script src="./js/dialog.js" type="text/javascript"></script><script src="./js/draw.js" type="text/javascript"></script><script src="./js/event.js" type="text/javascript"></script><script src="./js/jquery.ui.touch-punch.min.js" type="text/javascript"></script>'
                                                		//+'<body onload="showtree(\'newick\',\'phy_svg\');">'
                                                		+'<body onload="showtree(\'newick\',\'phy_svg\');">'
                                               			+ $("#phy_result").html()
                                                		+ '<input id="newick" name="newick" value="'+$("#newick").val()+'" type="hidden">'
                                                		+ '<input id="fasta" name="filename" value="'+$("#fasta").val()+'" type="hidden">'
                                                		+ '<input id="nname" name="nname" value="'+$("#nname").val()+'" type="hidden">'
                                                		+ '<input id="fname" name="fname" value="'+$("#fname").val()+'" type="hidden">'
                                                		+ '<input id="filename" name="filename" value="'+fileName+'" type="hidden">'
                                                		+'</body>'
                                                		+'</html>'
                                        		);
                                        		pop_win.window.document.close();
                                                        pop_win.focus();
                                        		res.innerHTML = retString;
                                		}
                        		}
					/*
                        		error: function(XMLHttpRequest, textStatus, errorThrown) {
                        		ajaxloader.innerHTML = XMLHttpRequest.status+" Error";
                        		}
					*/
                                }).fail(function(XMLHttpRequest, textStatus, errorThrown){
                                        alert('Error : ' + errorThrown);
                                        $("#XMLHttpRequest").html("XMLHttpRequest : " + XMLHttpRequest.status);
                                        $("#textStatus").html("textStatus : " + textStatus);
                                        $("#errorThrown").html("errorThrown : " + errorThrown);
                                }).always(function() {
                                        sub.disabled = false;
                                });
        		}
		}
    }).fail(function(XMLHttpRequest, textStatus, errorThrown){
                //Ajax通信が失敗した場合に呼び出されるメソッド
                alert('Error : ' + errorThrown);
                $("#XMLHttpRequest").html("XMLHttpRequest : " + XMLHttpRequest.status);
                $("#textStatus").html("textStatus : " + textStatus);
                $("#errorThrown").html("errorThrown : " + errorThrown);
      });
      return false;
  });
});
