var Audio = [];

Audio.WAIT		=	-1;
Audio.RECORD	=	0;
Audio.PLAY		=	1;
Audio.STOP		=	2;
Audio.SUBMIT	=	3;

Audio.perform = function( action ) 
{	
	if ( !Audio.inited )
		return;
		
	$("#audioApplet")[0].sendMessage( action );
};

Audio.callBack = function() {
	// do nothing
};

Audio.inited = false;
Audio.appletHolder = null;
Audio.controlsHolder = null;

Audio.hide = function()
{
	if ( Audio.controlsHolder != null )
		Audio.controlsHolder.empty();
};

Audio.show = function( controlsHolder, userId, postId, precursorId ) 
{
	Audio.controlsHolder = controlsHolder;

	if ( !Audio.inited )
	{
		controlsHolder.html( $("<div>Applet inexistent din diferite motive.</div>").addClass("break") );
		return;
	}

	controlsHolder.empty();
	var record = $("<input type='button' id='audioRecord' />").val("Înregistrează").addClass("button leftfloat").click( function() { Audio.perform( Audio.RECORD ); } );
	var stop = $("<input type='button' id='audioStop' />").val("Opreşte").addClass("button leftfloat").click( function() { Audio.perform( Audio.STOP ); } );
	var play = $("<input type='button' id='audioPlay' />").val("Ascultă").addClass("button leftfloat").click( function() { Audio.perform( Audio.PLAY ); } );
	var controlsDiv = $("<div id='audioControls'></div>").append( record ).append( stop ).append( play );
	controlsHolder.append( controlsDiv );
	
	controlsHolder.append( $("<div></div>").addClass("break") );
	
	var audioInfoDiv = $("<div id='audioInfo'></div>").html("Apasă butonul 'Înregistrează' cînd eşti gata.");
	controlsHolder.append( audioInfoDiv );
	
	var audioErrorDiv = $("<div id='audioError'></div>").css("color","red").html("&nbsp;");
	controlsHolder.append( audioErrorDiv );
	
	controlsHolder.append( $("<small>* maxim 60 de secunde</small>") );
	controlsHolder.append( $("<br/>") );
	controlsHolder.append( $("<small>* trebuie să ai un microfon pregătit</small>") );
	controlsHolder.append( $("<div></div>").addClass("break") );
	
	$("#audioApplet")[0].setUserId( userId );
	$("#audioApplet")[0].setPostId( postId );
	$("#audioApplet")[0].setPrecursorId( precursorId );

	Audio.display();
};

Audio.setPostFelicitareId = function(postFelicitareId) 
{
	if ( !Audio.inited )
		return;
		
	$("#audioApplet")[0].setPostFelicitareId( postFelicitareId );
};

Audio.init = function( appletHolder, callBack ) 
{
	Audio.appletHolder = appletHolder;
	appletHolder.empty();
	
	var appletDiv = $("<div></div>");
	appletDiv[0].innerHTML = "<applet id='audioApplet' height='0' width='0' code='voice.Voice' archive='/static/applet/voice/voice.jar'></applet>";
	
	appletHolder.append( appletDiv );
	
	if ( callBack != null )
		Audio.callBack = callBack;
	
	try
	{
		$("#audioApplet")[0].getElapsed();
		Audio.inited = true;
	} catch(exception) {}
};

Audio.isAudioRecorded = function() 
{
	if ( !Audio.inited )
		return false;
		
	return $("#audioApplet")[0].isAudioRecorded();
};

Audio.showTime = function()
{
	if ( !Audio.inited )
		return;
		
	var elapsed = $("#audioApplet")[0].getElapsed();
	
	$("#audioInfo").html( "Înregistrezi - " + elapsed + " secunde." );
};

Audio.display = function() 
{
	if ( !Audio.inited )
		return;
		
	var status = $("#audioApplet")[0].getStatus();
	var audioRecorded = $("#audioApplet")[0].isAudioRecorded();
	var audioLength = $("#audioApplet")[0].getAudioLength();
	var audioSize = $("#audioApplet")[0].getAudioSize();
	
	$("#audioError").html( "&nbsp;" );
	
	if ( status == Audio.RECORD ) 
	{
		$("#audioInfo").html( "Înregistrezi " );
		
		$("#audioRecord").attr("disabled", "disabled");
		$("#audioStop").removeAttr("disabled");
		$("#audioPlay").attr("disabled", "disabled");
	}  
	else if ( status == Audio.PLAY ) 
	{
		$("#audioInfo").html( "Asculţi cele " + audioLength + " secunde.");
		
		$("#audioRecord").attr("disabled", "disabled");
		$("#audioStop").removeAttr("disabled");
		$("#audioPlay").attr("disabled", "disabled");
	} 
	else if ( status == Audio.SUBMIT ) 
	{
		$("#audioInfo").html( "Trimiţi la gigel" );
		
		$("#audioRecord").attr("disabled", "disabled");
		$("#audioStop").attr("disabled", "disabled");
		$("#audioPlay").attr("disabled", "disabled");
	} 
	else 
	{
		$("#audioRecord").removeAttr("disabled");	
		$("#audioStop").attr("disabled", "disabled");
		
		if ( audioRecorded ) 
		{
			$("#audioPlay").removeAttr("disabled");
			$("#audioInfo").html( "Ai înregistrat " + audioLength + " secunde." );
		} 
		else 
		{
			$("#audioPlay").attr("disabled", "disabled");
		}
	}
};
