var so = false;
function playFile(play,file,playcat,rec_id,left) {
	var x,y;
   
   //calculate the position for the player
   var p = $(play);
   var xy = Position.cumulativeOffset(p);
   y = xy[1];
   x = xy[0] - left;
   new Ajax.Request('remote/prepare_player.php',{
   	method: 'get',
   	parameters: {file: file,rec_id: rec_id,playcat: playcat,play: play,left: left},
   	onSuccess: function(transport) {
   		//hide the poi navigation
   		var pois = document.getElementsByClassName('poi');
   		pois.each(function(poi) { poi.hide() });
   		
   		//destroy any active players
   		var players = document.getElementsByClassName('player_controls');
   		players.each(function(player) { player.replace('') });
   		
   		//render the player
   		var body = $('search_body');
   		new Insertion.Bottom(body,'<div id="controls" class="player_controls" style="position: absolute; top: ' + y + 'px; left: ' + x + 'px; width: 201px; height: 77px;"></div>');
   		so = new SWFObject('controls_alt.swf','player_movie','201','77','5','#FFFFFF');
   		so.addParam('name','player_movie');
   		so.write('controls');
   		
   		//remove any current demo descriptions
   		var details = document.getElementsByClassName('demo_description');
   		details.each(function(detail) { detail.remove() });
   		
   		//show any hidden regular descriptions
   		var descrips = document.getElementsByClassName('description');
   		descrips.each(	function(descrip) {
   			if(!descrip.visible())
   				descrip.show();
   		});
   		
   		//get the returned into into a hash
   		var t_info = eval(transport.responseText);
   		
   		//find the desciption for this announcer and hide it
   		var reg_descrip = $('description_' + t_info['rec_id']);
   		if(reg_descrip) {
	   		reg_descrip.hide();
   		
			//insert the demo links, if there are any
			if(t_info['demo_description'])
				new Insertion.After(reg_descrip,t_info['demo_description']);
		}
   	}
   });
   return true;
}