Portfolio Return Decomposition

Barra gives factor weights for a common set of factors, for each asset. Given a long-short portfolio, is there a way I can combine the individual factor weights to get the factor exposures for the overall portfolio? Ideally, I want to be able to make statements like "10% of the portfolio returns are due to Factor x".

1. How would I calculate the portfolio weights, as the \$value of asset i divided by the sum of the \$ values of all assets, or should I divide by the sum of the absolute \\$ values?