function randomInt(ceiling) { return Math.round(Math.random()*ceiling); } function createRandomDate() { var year = randomInt(3)+2004; var month = randomInt(12); var day = randomInt(27)+1; var date = new Date(); date.setFullYear(year,month,day); return date; } var endDate = new Date(); // These functions create a random fluctuating price or vol array with proper deviation // for test purpose only function createRandomPriceArray(size) { var curPrice = randomInt(2000)+10; var prices = new Array(); for (var i=0; i 35) numFlags -= 35; else numFlags = 1; for (var j=0; j' + '' + flagChar + ' ' + "News id=" + flag.id + ''; } var ul = document.getElementById('newslist'); ul.innerHTML = html; } function Company(type,symbol,name,id) { this.type = type; // type = 0: company, 1: industry, 2: market this.symbol = symbol; this.name = name; this.id = id; } function Flag(type,id,dateFlag,ord) { this.type = type; this.id = id; this.date = new Date(dateFlag.getTime()); this.ord = ord; // 0 = 'A', 1 = 'B', etc. } function DataObj(id,endDateDataObj ,priceArray,volArray,flagArray) { this.id = id; this.endDate = new Date(endDateDataObj.getTime()); this.priceArray = priceArray; this.volArray = volArray; this.flagArray = flagArray; } function SettingObject(name, value) { this[name] = value; } function onCheck(checkbox) { flashProxy.call('loadCommand', checkbox.id, checkbox.checked ? 1 : 0); } var showChart = [false,false,false,false,false,false,false,false,false]; function onCheckTicker(checkbox) { var i = parseInt(checkbox.getAttribute('value')); if (checkbox.checked) addChart(i); else { flashProxy.call('removeCompany', companies[i].id); showChart[i] = false; } } function addChart(i) { // Create data object for company //alert(i); /*if (priceArray == null) { var size = randomInt(400) + 400; var priceArray = createRandomPriceArray(size); var volArray = createRandomVolArray(size); var flagArray = createRandomFlagArray(); if (i==0) { dataObjs[0].flagArray = flagArray; renderNewsList(); } }*/ /*alert(companies[i].id); alert(companies[i].startDate); alert(companies[i].priceArray.length); alert(companies[i].volArray.length); alert(companies[i].type); alert(companies[i].symbol); alert(companies[i].name);*/ //var dataObj = new DataObj(companies[i].id,companies[i].startDate,companies[i].priceArray,companies[i].volArray); // Send data object to Flash flashProxy.call('loadData', companies[i], dataObjs[i]); showChart[i] = true; } var showingSettings = false; var showingCompare = false; function showSettings() { if (showingSettings) return; hideCompare(); var divSettings = document.getElementById('fcsettings'); divSettings.className='shown'; var aCmdSettings = document.getElementById('cmdSettings'); aCmdSettings.setAttribute('href','javascript:hideSettings();'); aCmdSettings.blur(); var li = aCmdSettings.parentNode; li.className = 'current'; showingSettings = true; } function hideSettings() { if (!showingSettings) return; var divSettings = document.getElementById('fcsettings'); divSettings.className=''; var aCmdSettings = document.getElementById('cmdSettings'); aCmdSettings.setAttribute('href','javascript:showSettings();'); aCmdSettings.blur(); var li = aCmdSettings.parentNode; li.className = ''; showingSettings = false; } function showCompare() { if (showingCompare) return; hideSettings(); var divCompare = document.getElementById('fccompare'); divCompare.className='shown'; var aCmdCompare = document.getElementById('cmdCompare'); aCmdCompare.setAttribute('href','javascript:hideCompare();'); aCmdCompare.blur(); var li = aCmdCompare.parentNode; li.className = 'current'; showingCompare = true; } function hideCompare() { if (!showingCompare) return; var divCompare = document.getElementById('fccompare'); divCompare.className=''; var aCmdCompare = document.getElementById('cmdCompare'); aCmdCompare.setAttribute('href','javascript:showCompare();'); aCmdCompare.blur(); var li = aCmdCompare.parentNode; li.className = ''; showingCompare = false; } function renderCompareTable() { var cellsPerRow = Math.floor((companies.length-2)/2)+1; var html = ''; for (var i=1; i' + companies[i].symbol + ''; if (i%cellsPerRow == 0) html += ''; } if (companies.length == 1){ html += '
\n'; } else { html += '\n'; } var divPicker = document.getElementById('tickerPicker'); divPicker.innerHTML = html; } function onTickerInputFocus(input) { input.value = ''; input.className = 'focused'; } function onTickerInputBlur(input) { input.className = ''; } function onTickerAdded() { var i = companies.length; if (i==9) return alert("For this demo you can't compare more than 9 tickers."); var tickerInput = document.getElementById('companyCode'); var ticker = tickerInput.value; if (ticker == '') return; tickerInput.blur(); //ticker = ticker.substr(0,5); ticker = ticker.toUpperCase(); for (var j = 0; j < companies.length; j++) { if(ticker == companies[j].symbol.toUpperCase()) { return; } } //var i = companies.length; var url = ""; if (ticker == "HOSE" || ticker == "HASTC") { url = "getDataChatForMarket.do?marketCode=" + ticker; var request1 = getXMLHTTPRequest(); var response1 = getServerDataForMarket(url, request1); } if(url == ""){ for (var k = 0; k < listSectorToCheck.length; k++) { if(ticker == listSectorToCheck[k].toUpperCase()) { url = "getDataChatForSector.do?sectorID=" + ticker; //alert(url); var request1 = getXMLHTTPRequest(); var response1 = getServerDataForSector(url, request1); break; } } } if(url == ""){ for (var k = 0; k < listIndustryToCheck.length; k++) { if(ticker == listIndustryToCheck[k].toUpperCase()) { url = "getDataChatForIndustry.do?industryCode=" + ticker; var request1 = getXMLHTTPRequest(); var response1 = getServerDataForIndustry(url, request1); break; } } } if (url == "") { url = "getDataChatForCompany.do?symbol=" + ticker; var request1 = getXMLHTTPRequest(); var response1 = getServerDataForCompany(url, request1); } //var company = new Company(0,ticker,'',200+i); //companies.push(company); //addChart(i); //renderCompareTable(); //tickerInput.value = 'Enter symbol'; } var liFlagSelected = null; function hiliteFlag(id) { if (liFlagSelected != null) liFlagSelected.className = ''; liFlagSelected = document.getElementById('news'+id); liFlagSelected.className = 'selected'; } // This function is called by Flash when a flag is clicked function selectFlag(flagObj) { //alert("selectFlag"); var flag = getFlagById(flagObj[1]); //hiliteFlag(flag.id); window.location = '#news-' + flag.id; //Calling viewNew , companyProfilesId is companies[0].id //duclh selectFlagEnhance(flag.id); } //To Do: need fix function selectFlagEnhance(id) { //duclh //alert(id); if(locked) return; //nofnews = listNews.length for(var i = 0; i < listNews.length; i++){ if (listNews[i].id == id){ movedsteps = 0;// we begin from top, jumb to its position move(i); return; } } //no news id matched, we must retrieve more from server //currentPos = listNews.length; var url = "ajaxscrollnews.do?start="+nofnews+"&symbol="+symbol+"&type="+type+"&numOfNoPin="+numOfNoPin; new Ajax.Request(url,{ method: 'get' , onSuccess: function(transport) { parseNewsXML(transport.responseXML); if(listNews.length > nofnews){ //there are some news to do appendScrollNewsLayer(nofnews,"ajaxnews"); //do this task again to find out the correct news nofnews = listNews.length; selectFlagEnhance(id); }else{ //we got all, no need to retrieve again stop_retrieve = true; } } }); return; } function gotoFlag(id) { alert('gotoFlag'); //--LenTran: This line of code causes of the javaScript error //hiliteFlag(id); //flashProxy.call('selectFlag', id); } //duclh function getMartketDataForChart(url){ new Ajax.Request(url,{ method: 'get' , onSuccess: function(transport) { var xmlDomForMarket = null; var priceArrayMarket = new Array(); var volArrayMarket = new Array(); var endDateMarket = new Date(); var market = null; var flags = new Array(); xmlDomForMarket = transport.responseXML; //alert(request.responseText); if(xmlDomForMarket == null) { return; } var listVolNodeForMarket = selectNodeList(xmlDomForMarket, "/market/volume/vol-node"); for (var i = 0; i < listVolNodeForMarket.length; i++) { if (listVolNodeForMarket[i].firstChild != null) { if(volArrayMarket.length < 500){ volArrayMarket.push(listVolNodeForMarket[i].firstChild.nodeValue); } } else { volArrayMarket.push(null); } //alert(listVolNodeForMarket[i].firstChild.nodeValue); } var listPriceNodeForMarket = selectNodeList(xmlDomForMarket, "/market/price/price-node"); for (var i = 0; i < listPriceNodeForMarket.length; i++) { if (listPriceNodeForMarket[i].firstChild) { if(priceArrayMarket.length < 500){ priceArrayMarket.push(listPriceNodeForMarket[i].firstChild.nodeValue); } } else { priceArrayMarket.push(null); } //alert(listPriceNodeForMarket[i].firstChild.nodeValue); } if (priceArrayMarket.length <=0) { return; } var infoNodeForMarket = selectNodeList(xmlDomForMarket, "/market/info"); var marketId = infoNodeForMarket[0].getAttribute("id"); var marketName = infoNodeForMarket[0].getAttribute("name"); var marketSymbol = infoNodeForMarket[0].getAttribute("symbol"); var year = infoNodeForMarket[0].getAttribute("year"); var month = infoNodeForMarket[0].getAttribute("month"); var day = infoNodeForMarket[0].getAttribute("day"); //alert(marketId + " " + marketName + " " + marketSymbol); //alert(year + " " + month + " " + day); market = new Company(2, marketSymbol, marketName, marketId); endDateMarket.setFullYear(year, month - 1, day); // tickets var listNodeForTicket = selectNodeList(xmlDomForMarket, "/market/tickets/ticket"); for (var i = 0; i < listNodeForTicket.length; i++) { var id = listNodeForTicket[i].getAttribute("id"); var createdDate = listNodeForTicket[i].getAttribute("createdDate"); var date = new Date(); var year = createdDate.substring(0,4); var month = createdDate.substring(5,7); var day =createdDate.substring(8,10); //date.setFullYear(year, month - 1, day); date.setFullYear(year, month - 1, day); var flagObject = new Flag(0, id , date, i%26); flags.push(flagObject); } var dataObj = new DataObj(market.id, endDateMarket, priceArrayMarket, volArrayMarket, flags); companies.push(market); dataObjs.push(dataObj); addChart(companies.length -1); renderCompareTable(); } }); }