TORONTO - The Toronto stock market was higher mid-afternoon Friday, supported by financial and mining stocks as investors hoped the spring rally still had momentum.

The S&P/TSX composite index was up 46.4 points to 10,167.9 as American economic data raised hopes that an economic recovery will be in place by the end of the year.

However, the index was well off strong triple-digit gains as energy sector gains declined along with oil prices.

Economic data Thursday improved confidence in Toronto and New York after the U.S. Conference Board said its forecast of economic activity did better than expected in May.

But on Friday, traders were taking in a Canadian retail sales report that will serve as a reminder that the economy won't likely snap back quickly.

Statistics Canada reported that retail sales fell 0.8 per cent in April to $33.5 billion, led by a 1.9 per cent drop in the automotive sector. Food-and-beverage stores followed with a one per cent decline.

The Canadian dollar moved up 0.14 of a US cent to 88.38 cents US.

Markets were headed for a losing week after the spring rally which had boosted indexes by about 40 per cent over three months stalled over concerns that the U.S. economy won't recover as quickly as hoped.

But analysts think the rally still has the potential to run even higher.

"I still think the markets, are in a bit of a consolidation mode right now . . . while we're digesting those gains over the last few months," said Paul Thornton, investment adviser at Global Maxfin Capital.

"We can see prices go a lot higher for more than three and a half months. In fact, I'm going to say the current consolidation we're in will lead to a rally beyond it."

Research In Motion Ltd. (TSX:RIM, NASDAQ:RIMM) was a weight on the TSX, down $3.84 to $82.96 after the BlackBerry maker posted a better-than-expected quarterly profit, but in its outlook for the second quarter said subscriber growth is expected to be relatively flat.

TSX energy stocks have been under pressure this week as oil prices came down from seven month highs of US$73 a barrel. On Friday, the July crude contract on the New York Mercantile Exchange lost early gains to move down $1.56 to US$69.81 a barrel on demand concerns, leaving the energy sector up a slight 0.2 per cent.

The TSX Venture Exchange gained 4.31 points to 1,118.62.

Lower energy stocks helped weaken New York markets.

The Dow Jones industrial average moved 45.2 points lower to 8,510.4.

But the Nasdaq composite index was up 11.74 points to 1,819.46 and the S&P 500 added 1.2 points to 917.15.

Traders drew some optimism from European Union leaders who said at a financial summit in Brussels that the current round of economic stimulus measures are cushioning the worst effects of the downturn and that no new ones are needed.

The financials group was the strongest TSX component, up 1.25 per cent with Royal Bank (TSX:RY) ahead 63 cents to $45.72.

CIBC shares rose 63 cents to $54.82 after the Ontario Superior Court dismissed Thursday a class-action lawsuit filed against CIBC (TSX:CM) that alleged the bank failed to pay overtime to its customer service staff.

The base metals sector ran up 1.4 per cent with the July copper contract in New York four cents lower to US$2.23 a pound. Sherritt International (TSX:S) improved nine cents to $5.47.

HudBay Minerals (TSX:HBM) declined 20 cents to $7.64 even as CEO Peter Jones told the annual meeting that the company will "aggressively" pursue development of the Lalor zinc deposit in northern Manitoba.

The August bullion contract on the Nymex was up $1.60 to US$936.20 an ounce and the gold sector moved up almost three per cent. Goldcorp Inc. (TSX:G) advanced $1.09 to $39.06.

In other corporate news, the Globe and Mail said Friday that Ottawa is refusing to give Toronto $400 million in stimulus money to help replace its aging fleet of streetcars.

The municipal government had signed a $1.2-billion dollar deal with Bombardier Inc. (TSX:BBD.B) for new streetcars but the deal is set to expire June 27 if all the funding isn't in place. Bombardier shares were off three cents to $3.34.