Mercurial > repos > jankanis > blast2html
view Blast output page example trimmed_files/formatRes.js @ 19:67ddcb807b7d
make it work with multiple queries
author | Jan Kanis <jan.code@jankanis.nl> |
---|---|
date | Tue, 13 May 2014 18:06:36 +0200 |
parents | ffe82516a83c |
children |
line wrap: on
line source
// JScript source code /*************************new code begin *******************************************************/ function getHiddenFieldVal(elemName) { var val; var elem = document.getElementsByName(elemName); if (elem) { val = (elem.length > 1) ? elem[0].value : elem.value; } return val; } function getHiddenFieldParamString(elemName) { var ret = ""; var val = getHiddenFieldVal(elemName); if (val) { ret = "&" + elemName + "=" + val; } return ret; } function elementInViewport(el) { if (!el) return; var rect = el.getBoundingClientRect(); var myWidth = 0, myHeight = 0; if (typeof (window.innerWidth) == 'number') { //Non-IE myWidth = window.innerWidth; myHeight = window.innerHeight; } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { //IE 6+ in 'standards compliant mode' myWidth = document.documentElement.clientWidth; myHeight = document.documentElement.clientHeight; } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { //IE 4 compatible myWidth = document.body.clientWidth; myHeight = document.body.clientHeight; } //window.alert('Width = ' + myWidth); //window.alert('Height = ' + myHeight); //return (rect.top >= 0 && rect.left >= 0 && rect.bottom <= window.innerHeight && rect.right <= window.innerWidth) //return (rect.top >= 0 && rect.left >= 0 && rect.bottom <= myHeight && rect.right <= myWidth) return (rect.top >= 0 && rect.bottom <= myHeight); } function DisplayAlignFromDescription(elem) { var alignView = $("FormatForm").ALIGNMENT_VIEW; if (alignView[alignView.selectedIndex].value == "Pairwise" || alignView[alignView.selectedIndex].value == "PairwiseWithIdentities") { DisplayDynamicAlign(elem); } else { location.href = "#" + elem.getAttribute("seqID"); } } //<a class="deflnDesc" hsp=<hsp_num> ind="<index>" gi="<gi>" id="deflnDesc_gi" href="#AlnHdrgi">desc</a> //<div class="alnHdr" gi="<gi>" id="alnHdr_<index>"> function DisplayDynamicAlign(elem) { var currGi = elem.getAttribute("gi"); var currInd = elem.getAttribute("ind"); var stat = elem.getAttribute("stat"); if (!currInd || !currGi) return; if (!stat || stat == "") { //Get 4(5) aligns before currInd and 4(5) aligns after ReadCurrentSeqAligns(currInd, 5); } else if (stat == "read") { var indexes = getCurrIndexRange(currInd); if (indexes) { var msgID = "alnShow_" + indexes[0]; location.href = "#" + msgID; } } else { //error status handling } } function goToNextAlign(dtrID, next) { var currInd = parseInt($(dtrID).getAttribute("ind")); var rid = $("Rid").value; nextInd = (next) ? currInd + 1 : currInd - 1; if ($("deflnDesc_" + nextInd)) { currGi = $("deflnDesc_" + nextInd).getAttribute("seqID"); scrollToGI = currGi; if (!$("deflnDesc_" + nextInd).getAttribute("stat") || $("deflnDesc_" + nextInd).getAttribute("stat") == "") { if (!next) { ReadPrevSeqAligns(currInd, 5, scrollToGI); } else { //Use this indexes = wasAlignRead(nextInd); to determine insertAfterID in ReadNextAligns!!! ReadNextSeqAligns(currInd, 5, scrollToGI); } } else { location.href = "#" + scrollToGI; } } } function goToDefLine(dtrID) { if ($("psiInp")) { var tbl = jQuery($(dtrID)).parents(".jig-ncbigrid"); //parent table togglerID = PsiBelowThresh(tbl[0].id) ? "showDescB1" : "showDescG1"; jQuery($(togglerID)).ncbitoggler("open"); } } /* readAln.rid = rid; readAln.startIndex = parseInt(currInd); readAln.numSeq = parseInt(maxNumAligns); readAln.insertAfterID = insertAfterID; readAln.seqList = giList; readAln.scrollToSeqID = scrollToGI; */ function ReadNextSeqAligns(currInd, maxNumAligns, scrollToGI) { var lastDispIdx = 0; var rid = $("Rid").value; var readAln = new Object(); readAln.seqList = ""; //giList readAln.rid = rid; currInd = parseInt(currInd); if (currInd != 0 && $("deflnDesc_" + currInd)) { var par = utils.getParent($("aln_" + $("deflnDesc_" + currInd).getAttribute("seqID"))); //"alnShowReal_<ind> //alert(par.id); if (par) par = utils.getParent(par); //"alnShow_<ind> //alert(par.id); if (par) readAln.insertAfterID = par.id; } else { readAln.insertAfterID = "alnStart"; } readAln.startIndex = currInd + 1; readAln.numSeq = maxNumAligns; checkIfAlnExceedsThreshold(readAln, currInd, maxNumAligns, "next"); readAln.scrollToSeqID = (scrollToGI && scrollToGI != "") ? scrollToGI : ""; readAln.hspSort = 0; ReadSeqAlignByIndex(readAln); } function ReadPrevSeqAligns(currInd, maxNumAligns, scrollToGI) { var lastDispIdx = 0; var rid = $("Rid").value; var readAln = new Object(); readAln.seqList = ""; //giList readAln.rid = rid; currInd = parseInt(currInd); //sets readAln.insertAfterID and returns lastDispIdx; //Find the index of the previously displayed alignment lastDispIdx = getPrevDisplyedAlignInfo(currInd, readAln); readAln.startIndex = (currInd - lastDispIdx > maxNumAligns) ? (currInd - maxNumAligns) : lastDispIdx + 1; readAln.numSeq = currInd - readAln.startIndex; //stopIndex = currInd checkIfAlnExceedsThreshold(readAln, currInd, readAln.numSeq, "prev"); readAln.scrollToSeqID = (scrollToGI && scrollToGI != "") ? scrollToGI : $("deflnDesc_" + (currInd)).getAttribute("seqID"); readAln.hspSort = 0; ReadSeqAlignByIndex(readAln); } //When descriptions is clicked - display maxNumAligns before currInd and maxNumAligns after currInd function ReadCurrentSeqAligns(currInd, maxNumAligns) { var rid = $("Rid").value; var readAln = new Object(); readAln.seqList = ""; //giList readAln.rid = rid; currInd = parseInt(currInd); //sets readAln.insertAfterID and returns lastDispIdx; //Find the index of the previously displayed alignment var lastDispIdx = getPrevDisplyedAlignInfo(currInd, readAln); //lastDispIdx = parseInt(lastDispIdx); readAln.startIndex = (currInd - lastDispIdx > maxNumAligns) ? (currInd - maxNumAligns) : lastDispIdx + 1; readAln.numSeq = parseInt(maxNumAligns * 2); checkIfAlnExceedsThreshold(readAln, currInd, maxNumAligns, "curr"); readAln.scrollToSeqID = $("deflnDesc_" + currInd).getAttribute("seqID"); readAln.hspSort = 0; ReadSeqAlignByIndex(readAln); g_DisableAutoCheck = true; location.href = "#alnShow_" + readAln.startIndex; } function setupDynHSPParams(readAln) { var currSeqInd = readAln.startIndex; hspNum = parseInt($("deflnDesc_" + currSeqInd).getAttribute("hsp")); alnLen = parseInt($("deflnDesc_" + currSeqInd).getAttribute("len")); var maxDispLen = parseInt($("maxDispAlnLen").value);//20000 var minDispLen = parseInt($("minDispAlnLen").value);//2000 if (alnLen > maxDispLen) { var lenPerMatch = alnLen / hspNum; readAln.AlignDbPageSize = (lenPerMatch > minDispLen) ? 1 : Math.floor(minDispLen / lenPerMatch); readAln.AlignDbPageNum = 0; $("deflnDesc_" + currSeqInd).setAttribute("dynHsps", readAln.AlignDbPageSize); } } function getCurrSeqsAlnLen(currSeqInd) { var alnLen = 0; if ($("deflnDesc_" + currSeqInd) && (!$("deflnDesc_" + currSeqInd).getAttribute("stat") || $("deflnDesc_" + currSeqInd).getAttribute("stat") == "")) { alnLen = $("deflnDesc_" + currSeqInd).getAttribute("len"); } alnLen = (alnLen) ? parseInt(alnLen) : 0; return alnLen; } function checkTotalAlignLen(startIndex,stopIndex) { var dispAlnLen = 0; var maxDispLen = parseInt($("maxDispAlnLen").value); for (var i = startIndex; i <= stopIndex; i++) { alnLen = getCurrSeqsAlnLen(i); if (alnLen == 0) break; dispAlnLen += alnLen; } return dispAlnLen; } //Get total align length for seq currSeqInd and //"curr" surrounding countSeqs seqs + current, "prev" - previous countSeqs seqs, "next" - next countSeqs seqs function getTotalAlignLen(readAln, currSeqInd, countSeqs, dispType) { var startIndex = readAln.startIndex; var stopIndex = readAln.startIndex + readAln.numSeq - 1; if (dispType == "curr") {//checks countSeqs before and countSeqs after current, including current startIndex = Math.max(startIndex, currSeqInd - countSeqs); stopIndex = Math.min(stopIndex, currSeqInd + countSeqs); } else if(dispType == "prev") { startIndex = Math.max(startIndex, currSeqInd - 1 - countSeqs); stopIndex = currSeqInd - 1; } else {//next stopIndex = Math.min(stopIndex, currSeqInd + countSeqs + 1); } var totAlnLen = checkTotalAlignLen(startIndex,stopIndex); return totAlnLen; } function checkIfAlnExceedsThreshold(readAln,currSeqInd,maxNumAligns, dispType) { var maxDispLen = parseInt($("maxDispAlnLen").value); var totAlnLen = 0; var exc = false; for (var numSeq = 0; numSeq <= maxNumAligns; numSeq++) { totAlnLen = getTotalAlignLen(readAln, currSeqInd, numSeq, dispType); if(totAlnLen > maxDispLen) { break; } } if (totAlnLen > maxDispLen) { if (numSeq != 0) numSeq--; if (dispType == "curr") { readAln.startIndex = Math.max(readAln.startIndex, currSeqInd - numSeq); //prev + 1(curr) + next readAln.numSeq = (currSeqInd - readAln.startIndex) + 1 + numSeq; } else if (dispType == "prev") { readAln.startIndex = Math.max(readAln.startIndex, currSeqInd - 1 - numSeq); readAln.numSeq = numSeq + 1; } else { //"next" - readAln.startIndex stays readAln.numSeq = numSeq + 1; } if (readAln.numSeq == 1 && $("useAlignDB") && $("useAlignDB").value == "true") { setupDynHSPParams(readAln); } exc = true; } return exc; } //readAln.startIndex, readAln.numSeq, readAln.scrollToSeqID,readAln.insertAfterID should be set function ReadSeqAlignByIndex(readAln) { var numAligns = 0; for (var i = readAln.startIndex; i < readAln.startIndex + readAln.numSeq; i++) { if (!$("deflnDesc_" + i)) { break; } if (!$("deflnDesc_" + i).getAttribute("stat") || $("deflnDesc_" + i).getAttribute("stat") == "") { currGi = $("deflnDesc_" + i).getAttribute("seqFSTA"); if (readAln.seqList != "") readAln.seqList += ","; readAln.seqList += currGi; numAligns++; } else { break; } } if (readAln.seqList != "") { readAln.numSeq = parseInt(numAligns); ReadSeqAlignForSeqList(readAln); } } var g_DisplayeAlignsRanges = ""; //String in the format start1-stop1,start2-stop2... //Find the range of indexes of displayed alignments for currAlnInd //Returns array of 2 startIndex, stopIndex function getCurrIndexRange(currAlinInd) { var currRange; var ranges = g_DisplayeAlignsRanges.split(","); for (var i = 0; i < ranges.length; i++) { var indexes = ranges[i].split("-"); if (currAlinInd >= parseInt(indexes[0]) && currAlinInd <= parseInt(indexes[1])) { currRange = indexes; break; } } return currRange; } //Find the index of the previous displayed alignment function getPrevDisplyedAlignInfo(currInd, readAln) { readAln.insertAfterID = "alnStart"; lastDispIdx = 0; for (var i = currInd - 1; i >= 1; i--) { indexes = getCurrIndexRange(i); if (indexes) { lastDispIdx = indexes[1]; readAln.insertAfterID = "alnShow_" + indexes[0]; break; } } return parseInt(lastDispIdx); } //setReadStatus function setSeqAlnReadStatus(readAln, status) { for (var i = readAln.startIndex; i < readAln.startIndex + readAln.numSeq; i++) { if ($("deflnDesc_" + i)) { jQuery($($("deflnDesc_" + i))).attr("stat", status); if (status == "disp") { g_MaxDisplayedIndex = (i > g_MaxDisplayedIndex) ? i : g_MaxDisplayedIndex; } } } } /* readAln.rid = rid; readAln.seqList = giList; readAln.startIndex = parseInt(idx); readAln.insertAfterID = insertAfterID; readAln.numSeq = parseInt(numSeq); readAln.scrollToSeqID = scrollToGI; */ function SendReadSeqAlinRequest(readAln) { blastUrl = "t2g.cgi"; var rp = new RemoteDataProvider(blastUrl); rp.onSuccess = function(obj) { if ($("alignView")) utils.removeClass($("alignView"), "hidden"); if ($("alnShow_" + readAln.startIndex)) { var moreHspsLink = getNextHspsLink(readAln); jQuery($($("alnShowReal_" + readAln.startIndex))).html(obj.responseText + moreHspsLink, { 'widgets': ['ncbipopper', 'ncbitoggler'], 'configs': { 'ncbipopper': { hasArrow: true, arrowDirection: 'top' } } }); setSeqAlnReadStatus(readAln, "disp"); jQuery($("alnMsg_" + readAln.startIndex)).addClass("hidden"); //Saves start and stop indexes of loaded alignments in global variables saveIdxesForAutomaticLoad(readAln); jQuery($($("alnShowReal_" + readAln.startIndex))).find(".alnHdr").each(function(index) { var seqID = this.getAttribute("seqID"); if(seqID) initAlignBatch(seqID); }); } if (readAln.scrollToSeqID) { location.href = "#" + readAln.scrollToSeqID; } }; rp.onError = function(obj) { if ($("alignView")) utils.removeClass($("alignView"), "hidden"); jQuery($("alnMsg_" + readAln.startIndex)).addClass("hidden"); $("alnShowReal_" + readAln.startIndex).innerHTML = "<div class=\"erm\" id=\"erm_" + readAln.startIndex + "\">Error loading alignment ...<span class=\"db\">requests:" + this.iActiveRequests + " status:" + obj.status + "</span><a class=\"gbd\" href=\"#\" onclick=\"ReSubmitReadSeqAligns(event," + readAln.startIndex + ")\">Try again<\a></div>"; } var params = constructURLParams(readAln); if (readAln.numSeq == 1) { params += "&TOTAL_HSPS=" + $("deflnDesc_" + readAln.startIndex).getAttribute("hsp"); } params += "&SEQ_LIST_START=" + readAln.startIndex; var formatParams = constructFormatParams(); params += formatParams; //alert(params); rp.Request(params); } function constructURLParams(readAln) { var params; if ($("useAlignDB") && $("useAlignDB").value == "true") { var alignDbParams = "&USE_ALIGNDB=true"; var batchID = document.getElementsByName("ALIGNDB_BATCH_ID"); if (batchID) { alignDbParams += getHiddenFieldParamString("ALIGNDB_BATCH_ID"); alignDbParams += getHiddenFieldParamString("ALIGNDB_MASTER_ALIAS"); alignDbParams += getHiddenFieldParamString("ALIGNDB_CGI_HOST"); alignDbParams += getHiddenFieldParamString("ALIGNDB_CGI_PATH"); } alignDbParams += "&ALIGN_SEQ_LIST=" + readAln.seqList; alignDbParams += "&HSP_SORT=" + readAln.hspSort; if (readAln.hasOwnProperty("AlignDbPageNum")) { alignDbParams += "&ALIGNDB_PAGE_NUM=" + readAln.AlignDbPageNum; alignDbParams += "&ALIGNDB_PAGE_SIZE=" + readAln.AlignDbPageSize; alignDbParams += "&HSP_START=" + readAln.AlignDbPageSize * readAln.AlignDbPageNum; } params = "CMD=Get&RID=" + readAln.rid + "&OLD_BLAST=false&DESCRIPTIONS=0&NUM_OVERVIEW=0&DYNAMIC_FORMAT=on" + alignDbParams; } else { params = "CMD=Get&RID=" + readAln.rid + "&OLD_BLAST=false&DESCRIPTIONS=0&NUM_OVERVIEW=0&GET_SEQUENCE=on&DYNAMIC_FORMAT=on&ALIGN_SEQ_LIST=" + readAln.seqList + "&HSP_SORT=" + readAln.hspSort; } if ($("phiPtInd")) { params += "&PHI_PTTRN_INDEX=" + $("phiPtInd")[$("phiPtInd").selectedIndex].value; } return params; } /* readAln.rid = rid; readAln.seqList = giList; readAln.startIndex = parseInt(idx); readAln.insertAfterID = insertAfterID; readAln.numSeq = parseInt(numSeq); readAln.scrollToSeqID = scrollToGI; */ /*1. Draw div with id="alnShow_index" class ="alnMsg" with the message listing gis nad indexes 2. Insert another div with id="alnShowReal_index and class="alnMsgR" 3. For "alnShow_index" set atrr indexes="startInd-stopInd" 4. Set global g_MaxReadMessageIndex - max index of displayed seqalign ??? - check this 5. Add string "startInd-stopInd" to g_DisplayeAlignsRanges - comma separated indexes 6. Send read request */ function ReadSeqAlignForSeqList(readAln) { var text = "<div id=\"alnShow_" + readAln.startIndex + "\" class=\"alnMsg\"><div class=\"alnMsgS\" id=\"alnMsg_" + readAln.startIndex + "\">Loading alignment...<span class=\"db\"> for sequences " + readAln.seqList; var stopIndex = readAln.startIndex + readAln.numSeq - 1; var useAlignDB = ($("useAlignDB") && $("useAlignDB").value == "true") ? "AlignDB=on " : ""; text += " " + useAlignDB + "Reading indexes " + readAln.startIndex + "-" + stopIndex + "</span></div>"; text += "<div id=\"alnShowReal_" + readAln.startIndex + "\" class=\"alnMsgR\"></div></div>"; var debugControl = "<div id=\"debug\"></div>"; if (!$("debug")) { jQuery($($("descriptions"))).before(debugControl); } if (!$("alnShow_" + readAln.startIndex)) { jQuery($($(readAln.insertAfterID))).after(text); jQuery($($("alnShow_" + readAln.startIndex))).attr("indexes", readAln.startIndex + "-" + stopIndex); jQuery($($("alnShow_" + readAln.startIndex))).attr("seqlist", readAln.seqList); g_MaxReadMessageIndex = (readAln.startIndex > g_MaxReadMessageIndex) ? readAln.startIndex : g_MaxReadMessageIndex; setSeqAlnReadStatus(readAln, "read"); $("debug").innerHTML += ", " + useAlignDB + "Reading indexes " + readAln.startIndex + "-" + stopIndex; if (g_DisplayeAlignsRanges != "") g_DisplayeAlignsRanges += ","; g_DisplayeAlignsRanges += readAln.startIndex + "-" + stopIndex; SendReadSeqAlinRequest(readAln); } else if ($("alnShowReal_" + readAln.startIndex).innerHTML.indexOf("Error") != -1) { jQuery($("alnMsg_" + readAln.startIndex)).removeClass("hidden"); jQuery($("erm_" + readAln.startIndex)).remove(); SendReadSeqAlinRequest(readAln); } } function ReSubmitReadSeqAligns(e,currInd) { var rid = $("Rid").value; if ($("alnShow_" + currInd)) { var indexRange = jQuery($("alnShow_" + currInd)).attr("indexes"); var range = indexRange.split("-"); var readAln = new Object(); readAln.seqList = ""; //giList readAln.rid = rid; readAln.seqList = jQuery($("alnShow_" + currInd)).attr("seqlist"); readAln.startIndex = parseInt(range[0]); readAln.numSeq = parseInt(range[1]) - parseInt(range[0]) + 1; readAln.hspSort = 0; ReadSeqAlignForSeqList(readAln); utils.preventDefault(e); } } var g_MaxReadMessageIndex = 0; //alnShow_idx with the message, deflnDesc_idx with stat="read" var g_MaxDisplayedIndex = 0; //deflnDesc_idx with stat="disp" - last one in the set of N var g_DisableAutoCheck = false; var g_autoStartIdx = new Array(); var g_autoStopIdx = new Array(); function saveIdxesForAutomaticLoad(readAln) { var stopIndex = readAln.startIndex + readAln.numSeq - 1; g_autoStartIdx.push(readAln.startIndex); //1,20,25 g_autoStopIdx.push(stopIndex); //4,24,29 $("debug").innerHTML += ", displaying indexes " + readAln.startIndex + "-" + stopIndex; } function getNextHspsLink(readAln) { var moreHspsLink = "" if (readAln.hasOwnProperty("AlignDbPageNum")) { var nextPageNum = readAln.AlignDbPageNum + 1; var currHspInd = readAln.AlignDbPageSize * nextPageNum; var argstring = readAln.startIndex + "," + currHspInd; var currGi = $("deflnDesc_" + readAln.startIndex).getAttribute("seqId"); var accs = $("deflnDesc_" + readAln.startIndex).getAttribute("accs"); var totalHsps = $("deflnDesc_" + readAln.startIndex).getAttribute("hsp"); var prevHspInd = readAln.AlignDbPageSize * nextPageNum; var segs = (prevHspInd + 1) + "-" + (prevHspInd + readAln.AlignDbPageSize); var moreHspsID = "nxHsp" + currGi + "_" + (prevHspInd + 1); moreHspsLink = $("dynHspTmpl").innerHTML.replace("@moreHspsID@", moreHspsID); moreHspsLink = moreHspsLink.replace(/@accs@/g, accs); moreHspsLink = moreHspsLink.replace("@argstring@", argstring); moreHspsLink = moreHspsLink.replace(/@segs@/g, segs); moreHspsLink = moreHspsLink.replace("@totalHSP@", totalHsps); moreHspsLink = moreHspsLink.replace(/@alignDbPageSize@/g, readAln.AlignDbPageSize); moreHspsLink = moreHspsLink.replace("@aln_prev_num@", prevHspInd); moreHspsLink = moreHspsLink.replace("@alnSeqGi@", currGi); } return moreHspsLink; } function ReadNextHSPSet(currSeqInd, currHSPNum) { var readAln = new Object(); readAln.rid = $("Rid").value; readAln.seqList = $("deflnDesc_" + currSeqInd).getAttribute("seqFSTA"); readAln.gi = $("deflnDesc_" + currSeqInd).getAttribute("seqId"); dynHsps = $("deflnDesc_" + currSeqInd).getAttribute("dynHsps"); readAln.startIndex = currSeqInd; readAln.numSeq = 1; if (dynHsps) { readAln.AlignDbPageNum = parseInt(currHSPNum) / parseInt(dynHsps); readAln.AlignDbPageSize = parseInt(dynHsps); //number of HSps to retrieve } if (currHSPNum != 0) { readAln.scrollToSeqID = "hsp" + +readAln.gi + "_" + (parseInt(currHSPNum) + 1); readAln.insertAfterID = "ar_" + readAln.gi + "_" + currHSPNum; } var sortLink = $("sa_" + readAln.gi); readAln.hspSort = (sortLink) ? parseInt(sortLink[sortLink.selectedIndex].value) : 0; SendReadSeqAlinSortHSPRequest(readAln); } function ReadNextHSPSetEvt(e, currSeqInd, currHSPNum) { ReadNextHSPSet(currSeqInd, currHSPNum); utils.preventDefault(e); } function checkAutoAlignArray() { var stop = false; var start = false; var currAlignViewPos = $("alignView").getBoundingClientRect().top; if (currAlignViewPos < g_alignViewPos) {//scrolling down g_alignViewPos = currAlignViewPos; if (g_DisableAutoCheck) { g_DisableAutoCheck = false; return; } for (i = 0; i < g_autoStopIdx.length; i++) { if (elementInViewport($("alnHdr_" + $("deflnDesc_" + g_autoStopIdx[i]).getAttribute("seqID")))) { //alert("Reading more aligns scrolling down!"); var nextInd = parseInt(g_autoStopIdx[i] + 1); var currInd = g_autoStopIdx[i]; if ($("deflnDesc_" + nextInd) && (!$("deflnDesc_" + nextInd).getAttribute("stat") || $("deflnDesc_" + nextInd).getAttribute("stat") == "")) { ReadNextSeqAligns(currInd, 5); stop = true; break; } } } if (stop) g_autoStopIdx.splice(i, 1); //delete index from the array } else if (currAlignViewPos > g_alignViewPos) {//scrolling up g_alignViewPos = currAlignViewPos; //here maybe return if autoStop found!!! /* commenting automic read when scroll up */ for (i = 0; i < g_autoStartIdx.length; i++) { if (elementInViewport($("alnHdr_" + $("deflnDesc_" + g_autoStartIdx[i]).getAttribute("seqID")))) { //alert("Reading more aligns scrolling up!"); var currInd = g_autoStartIdx[i]; //Check for condition here if go there at all!!! Check if do the same thing as for ReadNext!!!! if (currInd > 1) { ReadPrevSeqAligns(currInd, 5); start = true; break; } } } if (start) g_autoStartIdx.splice(i, 1); } /*end of comment*/ } var g_alignViewPos = 0; function checkAutoAlignLoad() { checkAutoAlignArray(); if (jQuery($($(window))).scrollTop() + jQuery($($(window))).height() >= jQuery($($(document))).height() - 100) { //alert("bottom!"); if ($("alnShowReal_" + g_MaxReadMessageIndex) && $("alnShowReal_" + g_MaxReadMessageIndex).innerHTML != "") { //if(!$("alnShow_" + maxReadMessageIndex)) {//g_MaxReadMessageIndex ReadNextSeqAligns(g_MaxDisplayedIndex, 5); } } } function GetPatternLocResults() { form = $("results"); if (!form.PHI_PTTRN_INDEX) { var el = document.createElement("input"); el.name = "PHI_PTTRN_INDEX"; el.value = $("phiPtInd")[$("phiPtInd").selectedIndex].value; form.appendChild(el); } else { form.PHI_PTTRN_INDEX.value = $("phiPtInd")[$("phiPtInd").selectedIndex].value; } form.submit(); } function goToNextHSP(elem, next) { var par = jQuery(elem).parent(); //parent span with class="alnParLinks" var parts = par[0].id.split("_"); //"hsp<seqid>_hspnum "hsp207524544_2" if (parts[0].indexOf("nxHsp") != -1) { parts[0] = parts[0].replace("nxHsp", "hsp"); } nextID = (next) ? parts[0] + "_" + (parseInt(parts[1]) + 1) : parts[0] + "_" + (parseInt(parts[1]) - 1) gotoElem = jQuery($(nextID)); if (gotoElem[0]) { a = jQuery(gotoElem).offset(); window.scroll(0, a.top); } else { retrieveNextHSP(parts[0],parts[1]); } } //parts[0]//hsp<seqid>, parts[1] hspnum function retrieveNextHSP(currLinkID, currHSPNum) { var desLineID = currLinkID.replace("hsp", "dtr_"); //tr id var currSeqInd, totalHsps; jQuery($($(desLineID))).find(".deflnDesc").each(function(index) { currSeqInd = parseInt(this.getAttribute("ind")); totalHsps = parseInt(this.getAttribute("hsp")); dynHsps = this.getAttribute("dynHsps"); }); currHSPNum = parseInt(currHSPNum); if (currHSPNum < totalHsps && dynHsps) { ReadNextHSPSet(currSeqInd, currHSPNum); } } /********Adding those functions back to formatRes.js to identify Uncaught ReferenceError: getUrlCompForCheckedField is not defined error********************************/ function getUrlCompForEntryField(elem) { var url = ""; if (elem && elem.value != "") { url = "&" + elem.name + "=" + escape(elem.value); } return url; } function getUrlCompForCheckedField(elem) { var url = ""; if (elem && elem.checked) { url = "&" + elem.name + "=" + elem.value; } return url; } function getUrlCompForOptionsField(elem) { var url = ""; if (elem) { url = "&" + elem.name + "=" + elem[elem.selectedIndex].value; } return url; } /****************************************/ function constructFormatParams() { var formatParams = ""; if ($("queryList")) { formatParams += "&QUERY_INDEX=" + $("queryList")[$("queryList").selectedIndex].value; } formatParams += getUrlCompForCheckedField($("FormatForm").SHOW_LINKOUT); formatParams += getUrlCompForCheckedField($("FormatForm").SHOW_CDS_FEATURE); formatParams += getUrlCompForCheckedField($("FormatForm").NCBI_GI); formatParams += getUrlCompForOptionsField($("FormatForm").ALIGNMENT_VIEW); formatParams += getUrlCompForOptionsField($("FormatForm").MASK_CHAR); formatParams += getUrlCompForOptionsField($("FormatForm").MASK_COLOR); formatParams += getUrlCompForEntryField($("FormatForm").EXPECT_LOW); formatParams += getUrlCompForEntryField($("FormatForm").EXPECT_HIGH); formatParams += getUrlCompForEntryField($("FormatForm").PERC_IDENT_LOW); formatParams += getUrlCompForEntryField($("FormatForm").PERC_IDENT_HIGH); formatParams += getUrlCompForEntryField($("FormatForm").LINE_LENGTH); formatParams += getHiddenFieldParamString("BUILD_NAME"); var serviceType = ""; if ($("serviceType").value == "sra") { serviceType = "sra"; } else if ($("clientType").value == "TMSmart_restricted") { serviceType = "restricted"; } if (serviceType != "") { formatParams += "&BOBJSRVC=" + serviceType; } if ($("currQuery").value != "") { formatParams += "&CURR_QUERY_ID=" + $("currQuery").value; } return formatParams; } //readAln.seqList contains one gi only for this function SendReadSeqAlinSortHSPRequest(readAln) { blastUrl = "t2g.cgi"; var rp = new RemoteDataProvider(blastUrl); rp.onSuccess = function(obj) { var moreHspsLink = (readAln.hasOwnProperty("AlignDbPageNum")) ? getNextHspsLink(readAln) : ""; var alnHtml = obj.responseText + moreHspsLink; initHSPRequest(readAln, obj.responseText + moreHspsLink,false); if (readAln.scrollToSeqID) { location.href = "#" + readAln.scrollToSeqID; } }; rp.onError = function(obj) { var currHspInd = (readAln.hasOwnProperty("AlignDbPageNum")) ? readAln.AlignDbPageSize * readAln.AlignDbPageNum : 0; var msgID = "erm_" + readAln.gi + "_" + (currHspInd + 1); if (!$(msgID)) { var msg = "<div class=\"erm\" att=\"1\" id=\"" + msgID + "\">Error loading alignment ...<span class=\"db\">status:" + obj.status + "</span><a class=\"gbd\" href=\"#\" onclick=\"ReadNextHSPSetEvt(event," + readAln.startIndex + "," + currHspInd + ")\">Try again <span class=\"attmt\"></span> <\a></div>"; initHSPRequest(readAln, msg, true); } else { var attNum = parseInt($(msgID).getAttribute("att")) + 1; $(msgID).setAttribute("att", attNum); jQuery($(msgID)).find(".attmt").each(function(index) { jQuery(this).html(", attempt " + attNum); }); } } var params = constructURLParams(readAln); if (readAln.AlignDbPageSize) { params += "&TOTAL_HSPS=" + $("deflnDesc_" + readAln.startIndex).getAttribute("hsp"); } params += "&SORT_ONE_ALN=on"; var formatParams = constructFormatParams(); params += formatParams; //alert(params); rp.Request(params); } function initHSPRequest(readAln, alnHtml, err) { var currHspInd = (readAln.hasOwnProperty("AlignDbPageNum")) ? readAln.AlignDbPageSize * readAln.AlignDbPageNum : 0; if (currHspInd != 0) { readAln.insertAfterID = "ar_" + readAln.gi + "_" + currHspInd; jQuery($(readAln.insertAfterID)).after(alnHtml); moreHspsID = "nxHsp" + readAln.gi + "_" + (currHspInd + 1); jQuery($(moreHspsID)).remove(); if (!err) { errMsgID = "erm_" + readAln.gi + "_" + (currHspInd + 1); jQuery($(errMsgID)).remove(); } } else { jQuery($("alnAll_" + readAln.gi)).html(alnHtml); } } function SortHSPAlnSel(e, sortLink) {//example id="sa_207524544" var readAln = new Object(); var desLineID = sortLink.id.replace("sa", "dtr"); //tr id var seqInd; jQuery($($(desLineID))).find(".deflnDesc").each(function(index) { seqInd = this.getAttribute("ind"); }); ReadNextHSPSet(parseInt(seqInd), 0); } function configDescriptions(e,btn,dlgId) { var suffix = PsiBelowThresh(dlgId); var colmnsInfId = "cfcDsInf" + suffix; var tblID = "dscTable" + suffix; //"dscTable[_psiw]" var showAllColId = "shcl" + suffix; var chkBoxes = $C("checkbox", "type", $(dlgId), "input"); if (!utils.hasClass(btn, "cnc")) $(colmnsInfId).value = ""; for (i = 0; i < chkBoxes.length; i++) { var check; if (utils.hasClass(btn, "cnc")) {//cancel if ($(colmnsInfId).value.indexOf(chkBoxes[i].value) != -1 && !chkBoxes[i].checked) { check = true; } else if ($(colmnsInfId).value.indexOf(chkBoxes[i].value) == -1 && chkBoxes[i].checked) { check = false; } } else if (utils.hasClass(btn, "rdf") && !chkBoxes[i].checked) { check = true; } if (typeof (check) != 'undefined') { chkBoxes[i].checked = check; showHideCol(tblID,parseInt(chkBoxes[i].value), !check); } if (!utils.hasClass(btn, "cnc")) { if (chkBoxes[i].checked) { //OK if ($(colmnsInfId).value != "") $(colmnsInfId).value += ","; $(colmnsInfId).value += chkBoxes[i].value; } } } if ($(colmnsInfId).value != $(colmnsInfId).getAttribute("defval")) {//defval = "2,3,4,5,6,7,8" jQuery($(showAllColId)).removeClass("hidden"); } else { jQuery($(showAllColId)).addClass("hidden"); } var chConfig = $("cfcDsSave").value != $(colmnsInfId).value; var cfds = document.getElementsByName("CONFIG_DESCR"); if (cfds) { for (i = 0; i < cfds.length; i++) { cfds[i].value = $(colmnsInfId).value; } } $("cfcDsSave").value = $(colmnsInfId).value; if (chConfig) SaveConfigTable(); jQuery(document.body).click(); utils.preventDefault(e); } function initDescConfig() { initConfigColumns("dsConfig"); if ($("psiw") && utils.hasClass($("psiw"), "shown")) { initConfigColumns("dsConfig_psiw"); } } function initConfigColumns(cnfDlgID) { var suffix = PsiBelowThresh(cnfDlgID); //cnfDlgID is "dsConfig[_psiw]" var colmnsInfId = "cfcDsInf" + suffix; var tblID = "dscTable" + suffix; //"dscTable[_psiw]" var showAllColId = "shcl" + suffix; if (navigator.userAgent.match(/ie/i)) { if ($("FormatForm").NCBI_GI.checked || $("serviceType").value == "sra") { jQuery($(tblID)).find("th.c1").each(function(index) { db = getHiddenFieldVal("DATABASE"); var width = (db.match(/WGS/i) || db.match(/Whole_Genome_Shotgun_contigs/i)) ? "16em" : "14em"; jQuery(this).css("width", width); }); } } jQuery($(tblID)).find("tr.first").each(function(index) { jQuery(this).find("a.dcs").each(function(index) { jQuery(this).bind("click", function(e) { checkConfig(this); }); }); }); jQuery($(cnfDlgID)).find("button").each(function(index) { jQuery(this).bind("click", function(e) { configDescriptions(e, this, cnfDlgID); }); }); jQuery($(cnfDlgID)).bind("click", function(e) { e.stopPropagation(); }); $(colmnsInfId).value = getHiddenFieldVal("CONFIG_DESCR"); if ($(colmnsInfId).value == "" || $(colmnsInfId).value == "undefined") { $(colmnsInfId).value = $(colmnsInfId).getAttribute("defval"); } if ($(colmnsInfId).value != $(colmnsInfId).getAttribute("defval")) {//defval = "2,3,4,5,6,7,8" jQuery($(showAllColId)).removeClass("hidden"); } else { jQuery($(showAllColId)).addClass("hidden"); } var chkBoxes = $C("checkbox", "type", $(cnfDlgID), "input") for (i = 0; i < chkBoxes.length; i++) { jQuery(chkBoxes[i]).bind("click", configColumn); if ($(colmnsInfId).value.indexOf(chkBoxes[i].value) != -1) { chkBoxes[i].checked = true; } else { //jQuery($(tblID)).ncbigrid("hideColumn", chkBoxes[i].value); showHideCol($(tblID), chkBoxes[i].value, true); } } } function showAllCol(e,elem) { var suffix = PsiBelowThresh(elem.id); var rdf = "dscRsDf" + suffix; jQuery($(rdf)).click();//click "restore defaults' utils.preventDefault(e); } function configColumn() { var suffix = PsiBelowThresh(this.id); var tblID = "dscTable" + suffix; //"dscTable[_psiw]" cCls = "c" + this.value; if (this.checked) {//show showHideCol(tblID,parseInt(this.value), false); } else { showHideCol(tblID,parseInt(this.value), true); } } function showHideCol(tblID, columnIndex, hide) { if ($("Transcr")) { colHidden = utils.hasClass($("c" + columnIndex), "ui-ncbigrid-column-hidden"); hide = hide && !colHidden; show = !hide && colHidden; } else { show = !hide; } if (hide) { jQuery($(tblID)).ncbigrid("hideColumn", columnIndex); } else if (show) { jQuery($(tblID)).ncbigrid("showColumn", columnIndex); } if ($("Transcr") && (hide || show) ) { var colsp = parseInt($("Transcr").getAttribute("colspan")); colsp = (hide) ? colsp - 1 : colsp + 1; $("Transcr").setAttribute("colSpan", colsp); if ($("GnmSeq")) $("GnmSeq").setAttribute("colSpan", colsp); } } function checkConfig(lnk) { var cnfCol = "&CONFIG_DESCR=" + $("cfcDsSave").value; lnk.href = lnk.href + cnfCol + "#sort_mark"; } function DisplayAlignFromGraphics(seqID,e) //SeqID = gi if exists { var dflLineLinks = $C(seqID, "gi", document, "a"); for (i = 0; i < dflLineLinks.length; i++) { jQuery(dflLineLinks[i]).click(); break; } location.href = dflLineLinks[i].href; } function initDescSelect() { jQuery("#cntDesc").find("a").each(function(index) { jQuery(this).bind("click", configDescrSelect); }); jQuery("#cntSelN").click(); jQuery("#descTblCtrl").find("a[view]").each(function(index) { jQuery(this).bind("click", DisplaySelectedView); }); if ($("psiw") && utils.hasClass($("psiw"), "shown")) { jQuery("#cntDesc_psiw").find("a").each(function(index) { jQuery(this).bind("click", configDescrSelect); }); jQuery("#cntSelN_psiw").click(); jQuery("#descTblCtrl_psiw").find("a[view]").each(function(index) { jQuery(this).bind("click", DisplaySelectedView); }); } //jQuery("#dsConfig").bind("click", function(e) { e.stopPropagation(); });?? } function DisplaySelectedView(e) { if (this.getAttribute("view") == "graph") { //seqviewer ViewSelectedSeqViewer(e,this); } else { if (this.getAttribute("view") == "tree") { //seqviewer $("scrWidth").value = screen.width; $("scrHeight").value = screen.height; } ViewSelectedSeqsEx(e, this); } } function PsiBelowThresh(elemID) { var suffix = ""; if (elemID.indexOf("_psiw") != -1) { suffix = "_psiw"; } return suffix; } function ViewSelectedSeqsEx(e,elem) { var sbmForm = elem.getAttribute("frm"); var seqList = elem.getAttribute("seqList"); var cnfElem = utils.getParent(elem); //.cnf div var suffix = PsiBelowThresh(cnfElem.id); var tblID = "dscTable" + suffix; $(seqList).value = createSelseqString(tblID,true); $(seqList).value = $(seqList).value.replace(/ti:/g, ""); //For traces if ($(seqList).value.indexOf("dbSNP") != -1) { $(seqList).value = $(seqList).value.replace(/dbSNP:rs/g, ""); //For snp elem.href = $(sbmForm).action + $(seqList).value; elem.target = "new"; } else { $(sbmForm).submit(); utils.preventDefault(e); } } function ViewSelectedSeqsTree(e) { $("scrWidth").value = screen.width; $("scrHeight").value = screen.height; } function initSeqViewerGet(seqList) { if (seqList.length >= 2000) { seqList = seqList.substr(0,2000); lastComma = seqList.lastIndexOf(","); seqList = seqList.substr(0,lastComma); } $("seqViewParams").name = "RID"; $("seqViewParams").value = $("ridParam").value + "[" + seqList + "]"; } function ViewSelectedSeqViewer(e, elem) { var cnfElem = utils.getParent(elem); //.cnf div var suffix = PsiBelowThresh(cnfElem.id); var tblID = "dscTable" + suffix; //change to false when new verison of seqVier is installed in production var seqList = createSelseqString(tblID, false); $("sbmtGraphics").action = $("seqViewUrl").value; var rp = new RemoteDataProvider("url2nc.cgi"); rp.onSuccess = function(obj) { var jsnResp = JSON.parse(obj.responseText); ncid = jsnResp.ncid; if (ncid != "") { $("seqViewParams").name = "rkey"; $("seqViewParams").value = ncid; } else { initSeqViewerGet(seqList); } $("sbmtGraphics").submit(); }; rp.onError = function(obj) { initSeqViewerGet(seqList); $("sbmtGraphics").submit(); utils.preventDefault(e); } var params = $("ridParam").value + "[" + seqList + "]"; rp.Request(params, "POST"); utils.preventDefault(e); } function configDescrSelect(e) { var sel = this.getAttribute("sel"); if (sel) { var selNum = 0; var check = (sel == "all") ? true : false; var suffix = PsiBelowThresh(this.id); var tblID = "dscTable" + suffix; var toolbarID = "descTblCtrl" + suffix; var selElID = "slcNum" + suffix; jQuery($(tblID)).find("input[type='checkbox'].cb").each(function(index) { jQuery(this)[0].checked = check; if (check) selNum++; }); enableDescrLinks(selNum, toolbarID, selElID); } utils.preventDefault(e); } function enableDescrLinks(selNum, toolbarID, selElID) { jQuery($(toolbarID)).find("a[minSlct]").each(function(index) { var minSelected = this.getAttribute("minSlct"); minSelected = parseInt(minSelected); if (selNum >= minSelected) { this.removeAttribute("disabled"); } else { this.setAttribute("disabled", "disabled"); } }); $(selElID).innerHTML = selNum; } function configDescrLinks(e, elem) { ncbi.sg.ping(elem, "click", elem.checked ? "checked=true" : "checked=false"); var par = jQuery(elem).parents(".jig-ncbigrid");//parent table if (par) { var suffix = PsiBelowThresh(par[0].id); var tblID = "dscTable" + suffix; var toolbarID = "descTblCtrl" + suffix; var selElID = "slcNum" + suffix; var currSelNum = parseInt($(selElID).innerHTML); var selNum = elem.checked ? currSelNum + 1 : currSelNum - 1; enableDescrLinks(selNum, toolbarID, selElID); } } /***Download code begin****/ function initDownLoadPopup(dwnDialog) { jQuery(dwnDialog).find("button").each(function(index) { jQuery(this).bind("click", execDownLoad); }); jQuery(dwnDialog).bind("click", function(e) { e.stopPropagation(); }); } function initDescDownLoad() { initDownLoadPopup($("dsDownload")); if ($("psiw") && utils.hasClass($("psiw"), "shown")) { initDownLoadPopup($("dsDownload_psiw")); } } function initAlignDownLoad(navObj) { var seqID = navObj.seqID; var dwnDialog = $("dlgDwnl_" + seqID); jQuery(dwnDialog).find("button").each(function(index) { jQuery(this).bind("click", execDownLoad); }); var dwnFSTW = $("dwFST_" + seqID);//whole seq var dwnFSTAl = $("dwFSTAl_" + seqID);//aligned regions if(dwnFSTW) dwnFSTW.setAttribute("seqfsta", navObj.currSeqID); if(dwnFSTAl) dwnFSTAl.setAttribute("seqfsta", navObj.currSeqID); jQuery(dwnDialog).bind("click", function(e) { e.stopPropagation(); }); } function execDownLoad(e) { if (!utils.hasClass(this, "cnc")) { par = utils.getParent(this); dwnDialog = utils.getParent(par); //parent dialog with popDl class var descr = (this.id == "dw_cont" || this.id == "dw_cont_psiw") ? true : false; jQuery(dwnDialog).find("input").each(function(index) { if (this.checked) { submitDownLoad(this, descr); } }); } jQuery(document.body).click(); utils.preventDefault(e); } function submitDownLoad(radioElem, descr) { var toolURL = radioElem.getAttribute("url"); if (toolURL) { if (descr) { var getGi = radioElem.getAttribute("getGi"); getGi = (getGi) ? true : false; var tblID = "dscTable"; var suffix = PsiBelowThresh(radioElem.id); tblID += suffix; $("selDnSeqs").value = createSelseqString(tblID,getGi); } else { var seqfsta = radioElem.getAttribute("seqfsta"); $("selDnSeqs").value = (seqfsta) ? seqfsta : radioElem.getAttribute("getGi"); } var addParams = ""; if (radioElem.getAttribute("addParam")) { addParams = addDwnlParams(); } var submitName = radioElem.getAttribute("sbName") $("selDnSeqs").name = (submitName) ? submitName : "ALIGN_SEQ_LIST"; $("dwdlSubmit").action = toolURL + addParams; $("dwdlSubmit").submit(); } else { var sbFunction = radioElem.getAttribute("sbFunc"); if (sbFunction) { eval(sbFunction + "(radioElem, descr)"); } } } function initDownLoadFSTA(radioElem, descr) { if (descr) { var tblID = "dscTable"; var suffix = PsiBelowThresh(radioElem.id); tblID += suffix; $("sbmtFASTA").ALIGN_SEQ_LIST.value = createSelseqString(tblID,false); } else { $("sbmtFASTA").ALIGN_SEQ_LIST.value = radioElem.getAttribute("seqfsta"); } $("sbmtFASTA").DOWNLOAD_TYPE.value = radioElem.getAttribute("fstaDWType"); $("sbmtFASTA").DATABASE.value = getHiddenFieldVal("DATABASE"); if ($("useAlignDB") && $("useAlignDB").value == "true") {//temp checkbox var batchID = document.getElementsByName("ALIGNDB_BATCH_ID"); if (batchID) { $("sbmtFASTA").ALIGNDB_BATCH_ID.value = getHiddenFieldVal("ALIGNDB_BATCH_ID"); $("sbmtFASTA").ALIGNDB_MASTER_ALIAS.value = getHiddenFieldVal("ALIGNDB_MASTER_ALIAS"); $("sbmtFASTA").ALIGNDB_CGI_HOST.value = getHiddenFieldVal("ALIGNDB_CGI_HOST"); $("sbmtFASTA").ALIGNDB_CGI_PATH.value = getHiddenFieldVal("ALIGNDB_CGI_PATH"); } } $("sbmtFASTA").submit(); } function createSelseqString(tblID,getGi) { var selSeqs = ""; jQuery($(tblID)).find("input[type='checkbox'].cb").each(function(index) { if (jQuery(this)[0].checked) { if (selSeqs != "") selSeqs += ","; if (getGi) { selSeqs += jQuery(this)[0].value; } else { var linkID = jQuery(this)[0].id.replace("chk", "deflnDesc"); selSeqs += $(linkID).getAttribute("seqFSTA"); } } }); return selSeqs; } /***Download code end****/ /***Init navigation code begin **/ function initNavigation(navObj) { initNextAlnLink(navObj, true); initNextAlnLink(navObj, false); } function initNavInfo(navObj) { var currInd = parseInt($("dtr_" + navObj.seqID).getAttribute("ind")); nextInd = currInd + 1; prevInd = currInd - 1; navObj.currSeqID = ""; navObj.nextSeqID = ""; navObj.prevSeqID = ""; if ($("deflnDesc_" + nextInd)) { navObj.nextSeqID = $("deflnDesc_" + nextInd).getAttribute("accs"); if(navObj.nextSeqID =="") navObj.nextSeqID = $("deflnDesc_" + nextInd).getAttribute("seqFSTA"); } if ($("deflnDesc_" + prevInd)) { navObj.prevSeqID = $("deflnDesc_" + prevInd).getAttribute("accs"); if (navObj.prevSeqID == "") navObj.prevSeqID = $("deflnDesc_" + prevInd).getAttribute("seqFSTA"); } if ($("deflnDesc_" + currInd)) { navObj.currSeqID = $("deflnDesc_" + currInd).getAttribute("seqFSTA"); } } function initNextAlnLink(navObj, next) { var nextLinkEl = (next) ? $("alnNxt_" + navObj.seqID) : $("alnPrv_" + navObj.seqID); var nextSeqid = (next) ? navObj.nextSeqID : navObj.prevSeqID; if (nextLinkEl) { if (nextSeqid != "") { var text = (next) ? "next" : "previous"; nextLinkEl.setAttribute("title", "Go to " + text + " alignment for " + nextSeqid); } else { nextLinkEl.setAttribute("disabled", "disabled"); } } } function scan(link) { var init = link.getAttribute("init"); if (!init) { ncbi.sg.scanLinks(link); link.setAttribute("init","on"); } } function initWidth(seqID) { var lineLengthElem = $("FormatForm").LINE_LENGTH; var lineLength = parseInt(lineLengthElem[lineLengthElem.selectedIndex].value); if (parseInt(lineLengthElem.getAttribute("defval")) == lineLength) return; var relWidth = (lineLength > 90) ? "12%" : "15%"; var charWidth = (navigator.userAgent.match(/ie/i)) ? 8 : 7; lineLength = (lineLength + parseInt(17)) * charWidth; var width = lineLength + "px"; jQuery($("alnAll_" + seqID)).find("div.dflLnk").each(function(index) { jQuery(this).css("width", width); }); jQuery($("alnAll_" + seqID)).find("table.alnParams").each(function(index) { jQuery(this).css("width", width); }); jQuery($("relInf_" + seqID)).css("width", relWidth); } /***Init navigation code end **/ function initAlignBatch(seqID) { var navObj = new Object(); navObj.seqID = seqID; initNavInfo(navObj); initAlignDownLoad(navObj); initNavigation(navObj); ncbi.sg.scanLinks($("alnNxt_" + seqID)); ncbi.sg.scanLinks($("alnPrv_" + seqID)); if ($("serviceType").value == "vecscreen") { utils.addClass($("alnDsc_" + seqID), "hidden"); } ncbi.sg.scanLinks($("alnDwnld_" + seqID)); jQuery($("csLinks_" + seqID)).find("a").each(function(index) { ncbi.sg.scanLinks(this); }); jQuery($("relInf_" + seqID)).find("a").each(function(index) { ncbi.sg.scanLinks(this); }); jQuery($("rng_" + seqID)).find("a").each(function(index) { ncbi.sg.scanLinks(this); }); jQuery($("dln_" + seqID)).find("a").each(function(index) { ncbi.sg.scanLinks(this); }); initWidth(seqID); /* jQuery($("alnHdr_" + seqID)).find("a").each(function(index) { ncbi.sg.scanLinks(this); }); jQuery($("aln_" + seqID)).find("a").each(function(index) { ncbi.sg.scanLinks(this); }); */ } function SaveConfigTable() { blastUrl = "fmtsave.cgi"; var rp = new RemoteDataProvider(blastUrl); rp.onSuccess = function(obj) { //alert("success"); }; rp.onError = function(obj) { //alert("error"); } var program = getHiddenFieldVal("PROGRAM"); var rid = getHiddenFieldVal("RID"); var blastSpec = getHiddenFieldVal("BLAST_SPEC"); var params = "CMD=Get&RID=" + rid + "&ViewReport=on&PROGRAM=" + program + "&SAVE_INDV_FRM_OPTION=on&CONFIG_DESCR=" + $("cfcDsSave").value; if(blastSpec) { params += "&BLAST_SPEC=" + blastSpec; } rp.Request(params,"POST"); } function removeRID() { var rid = document.getElementsByName("RID"); for (var i = 0; i <= rid.length; i++) { jQuery(rid[i]).remove(); } } function initAdvancedView() { if ($("dsConfig")) { var alnView = getHiddenFieldVal("ALIGNMENT_VIEW"); if (alnView == "Pairwise" || alnView == "PairwiseWithIdentities") { var rid = getHiddenFieldVal("RID"); ReadNextSeqAligns(0, 5); g_alignViewPos = $("alignView").getBoundingClientRect().top; utils.addEvent(window, "scroll", checkAutoAlignLoad, false); } list = $("phiPtInd"); if (list) { utils.addEvent(list, "change", GetPatternLocResults, false); } initDescConfig(); initDescSelect(); initDescDownLoad(); if ($("psiInp")) { var nextIter = document.getElementsByName("NEXT_I"); for (var i = 0; i < nextIter.length; i++) { utils.addEvent(nextIter[i], "click", removeRID, false); } } } } //takes care of jQuery calls to elements that have dots in id like id= "SRA34456.3.4" function initjQry() { var oldCreate = jQuery.ui.ncbipopper.prototype._create; jQuery.ui.ncbipopper.prototype._create = function() { var destSelector = this.options.destSelector || this.options.sourceSelector || this.element.prop("hash"); this.options.destSelector = destSelector.replace(/\./g, "\\."); oldCreate.apply(this, arguments); } } utils.addEvent(window, "load", initAdvancedView, false); initjQry() /* If user agent has "safari" in it, include safari-specific stylesheet. */ if (navigator.userAgent.match(/ie/i)) { document.write("<link rel='stylesheet' type='text/css' href='css/ie-descriptions.css' media='screen'/>"); } /*****************************new code end*********************************************************************/