it fails to make the new mask because I haven't set the current layer to be the active item. I've tried deselecting everything, then selected the layer I'm looping through but its not workin.

//get all layer and deselect them all
var mylayers = app.project.activeItem.layers;
if(mylayers){
//alert(mylayers.length);
for(k=1; k <= mylayers.length; k++){
mylayers[k].selected = false;
}
}
//Select target layer
compElement.layers.selected = true;
//if we have a selected layer, make a new mask
if(compElement.selectedLayers){
{app.executeCommand(2367);} // 2367 : app.findMenuCommandId("New Mask")
}
Ref: similar problem
http://forums.creativecow.net/readpost/2/926692
Thanks!
-C