function pi_broadcast(params){
  pageId=getPageId();
  params.page_id=pageId;
  //get listening events probably from ajax, then do them one at a time..
   new Ajax.Request('/core/event/get_listening_widgets', 
  		    {method:"post", parameters:params, onSuccess:updateListeningWidgets}); 
}

function updateListeningWidgets(transport){

  listeningWidgets = transport.responseText.evalJSON();

  for (i=0; i<listeningWidgets.length; i++){
     updateAWidget(listeningWidgets[i].target_url, 
		  listeningWidgets[i].target_params, 
		  listeningWidgets[i].target_div, 
		  listeningWidgets[i].ajax_options);
    }
}

//update a widget in same way as update self
function updateAWidget(target_url, target_params, target_div, ajax_options){
  if  ( typeof( ajax_options ) == "undefined" ) { var ajax_options = new Object }
  ajax_options.parameters = new Object;
  ajax_options.parameters.target_params =  Object.toJSON(target_params);
  new Ajax.Updater(target_div, target_url, ajax_options);
}

function getPageId(){
  page=document.getElementById("content");
  classAtt=page.className;
  re=/page_id_(\d+)/;
  result=classAtt.match(re);
  page_id=0;
  if (result!=null){
    page_id=result[1];
  }
  return page_id;

}
