function init(){ formInputs = document.getElementsByTagName("input"); var searchBtn = document.getElementById("searchBtn"); var keyword = document.getElementById("keyword"); if(searchBtn){ searchBtn.onclick = getResults; } for (var d, x=0; x < formInputs.length; x++){ addEvent(formInputs[x], "click", clickRadio); addEvent(formInputs[x], "click", checkRadio); d = document.getElementById(formInputs[x].id + "Label") if (d){ addEvent(d, "click", clickRadio); } } if (typeof results != "undefined" && results.length > 0){ // we were passed results from a previous symbol validation. draw the table immediately. updateResults(results, "stocks", 0, results.length, results.length); } else if (keyword && keyword.value != ""){ // we have a potential keyword to search on. search on it. getResults(); } clickRadio(); } function checkRadio() { var event = arguments[0] || window.event; var element = getSrcElement(event); var all = document.getElementById("exChk0"); var f = document.searchForm.exChk.length; if ( element.type == "checkbox" ) { if( element.id == "exChk0" && element.checked ) { for (x=1; x'; htm += '' htm += ''; htm += ''; //htm += ''; htm += ''; htm += ''; htm += ''; for (var r, rD, x=0; x < results.length; x++){ r = results[x]; htm += ''; htm += ""; htm += ""; htm += ""; //htm += ''; //htm += ''; //htm += ''; rD = []; rD["name"] = r.name; //rD["industry"] = r.industry; rD["exchange"] = r.exchange; dataArray.push(rD) } if (totalRows == 0){ htm += ""; } htm += "
" + r.name + " " + r.symbolILX + "
" + (r.exchange || "--") + "
No results found
"; var pagHtm = ""; //pagination if(totalRows > numRows) { var pages = Math.ceil(totalRows / numRows); var lastRow = (firstRow + numRows - 1); //XR 5: var lastRow = (firstRow + numRows); if(lastRow > totalRows) { lastRow = totalRows; } var startPage = 0; var indexStart = 0; var maxPagesShown = 10; var maxRecsPerPage = 20; var iResultsPerPage = 20; //Set pagination start & limiters if(totalRows < (maxRecsPerPage * maxPagesShown)) { maxPagesShown = Math.ceil(totalRows / maxRecsPerPage); } else if(firstRow > maxRecsPerPage * (maxPagesShown/2)) { //deeper into index start page index around if(Math.round(totalRows - firstRow)/maxRecsPerPage < (maxPagesShown/2)) {//Check for upper limit hit and back up by ten indexStart = Math.round(totalRows/maxRecsPerPage) - maxPagesShown; } else { indexStart = Math.round(firstRow/maxRecsPerPage) - (maxPagesShown/2); } } //Results Line var iLastRow = (firstRow + results.length) > totalRows ? totalRows : firstRow + results.length -1; pagHtm += "
Results: " + firstRow + " - " + iLastRow + " of " + totalRows + " | Page: "; if(firstRow > iResultsPerPage) { //Not on first page - draw "prev" if(firstRow - maxRecsPerPage <= 1) { pagHtm += "< Prev " + maxRecsPerPage + " "; } else { pagHtm += "< Prev " + maxRecsPerPage + " "; } } /* ***END XREF 4 */ for(var x = indexStart; x * maxRecsPerPage < totalRows; x++) { if(x >= (maxPagesShown + indexStart)) { break; } /* BEGIN XR 5 - 2l if((numRows * x) != firstRow) { pagHtm += "" + (x + 1) + " "; */ if(1 + (numRows * x) != firstRow) { pagHtm += "" + (x + 1) + " "; } else { pagHtm += (x + 1) + " "; } } if(firstRow + iResultsPerPage < totalRows) { //More records still - draw "next" pagHtm += " Next " + iResultsPerPage + " >"; } pagHtm += "
"; } divResult.innerHTML = htm; divResult.innerHTML += pagHtm; /* var fields = []; fields['name'] = {imgHolder:"imgHolder_name", linkId:"linkSort_name", dir:"asc", column: 1}; fields['industry'] = {imgHolder:"imgHolder_industry", linkId:"linkSort_industry", dir:"asc", column: 2}; fields['exchange'] = {imgHolder:"imgHolder_exchange", linkId:"linkSort_exchange", dir:"asc", column: 3}; */ var fields = []; fields['name'] = {imgHolder:"imgHolder_name", linkId:"linkSort_name", dir:"asc", column: 1}; fields['exchange'] = {imgHolder:"imgHolder_exchange", linkId:"linkSort_exchange", dir:"asc", column: 2}; //function sortableTable(dataObjName, dataArray, fieldObjArray, tbodyID, imageUp, imageDown, imageBlank, styleOddRows, styleEvenRows, styleSortColumnOddRow, styleSortColumnEvenRow, initialSortColumn) //Create the object that describes the table sTable = new sortableTable( "sTable", dataArray, fields, "tBody0", "https://thomson.cache.wallst.com/img/sortA.gif", "https://thomson.cache.wallst.com/img/sortD.gif", "https://thomson.cache.wallst.com/img/x.gif", "oddRow", "evenRow", "oddRowSort", "evenRowSort", "name" ); componentsComplete(); hideLoading(); /* Sortable table destroys all classes on table cells during sorting. This makes it impossible to * add any special styling (e.g. width) to certain columns. Until sortable table is changed to * be less annoying, we must a post-sorting event that will re-add the needed class to our table header cell * in order to maintain its width. */ var exchangeLink = document.getElementById(fields["exchange"].linkId); var nameLink = document.getElementById(fields["name"].linkId); var resetExchangeColClassName = function() { exchangeLink.parentNode.parentNode.className += " exchangeCol"; }; addEvent(nameLink, "click", resetExchangeColClassName); addEvent(exchangeLink, "click", resetExchangeColClassName); } function getRadioVal(name){ if(document.searchForm[name]) { for (var x=0; x < document.searchForm[name].length; x++){ if (document.searchForm[name][x].checked){ return document.searchForm[name][x].value; } } } // defaults if the form field wasn't there /* if (name == "vehicle"){ return "EQ"; } */ return false; } function getCheckedVal(name){ // return flattened string of exchanges to use var ex = []; for (var x=0; x < document.searchForm[name].length; x++){ if (document.searchForm[name][x].checked){ ex.push(document.searchForm[name][x].value); } } // if 'all' is selected, the rest are moot. if (ex.length > 1 && ex[0] == "all"){ ex.splice(1, ex.length - 1); } return ex.join(","); } addEvent(window, "load", init);