
$.postJSON = function(url, data, callback) {
	$.post(url, data, callback, "json");
};

function lh(){

    this.wwwDir = WWW_DIR_JAVASCRIPT;
          
    this.setwwwDir = function (wwwdir){
        this.wwwDir = wwwdir;
    }
    
	
	this.abstractDialog = function(element_id,title,url)
	{
	    if ($("#"+element_id).hasClass("ui-dialog-content"))
	    {	    
	       $("#"+element_id).dialog('open');
	       
	    } else {	
	     
        $("#"+element_id).load(url).dialog({
             title: title,
             modal: true,
             autoOpen: true,                 
             width: 500
          }); 
	    }
	   
	}   
    
}

var lhinst = new lh();
var sessionHash;

function fc(swfinstance)
{
	this.wwwDir = WWW_DIR_JAVASCRIPT;
	this.swfinstance = swfinstance;
	this.sessionHash = '';
	//Que with url files and local files total
	this.fileUploadQueTotal = 0;
	
	this.urlFileCount = 0;
	
	this.filesQue = new Array();
	
	this.hasFlashQue = false;
	this.hasUrlQue = false;
	this.hasUrlInput = false;
		
}

// Makes initial checks before uploading
fc.prototype.startUpload = function(instance)
{
	var swfinst = this.swfinstance;
	
	var thisinstance = this;
	
	if ($('#ReceiverMail').val() != '')
	{
	    $('#ConvertButton').attr('disabled','disabled');
	    
		//alert(this.wwwDir);
		$.postJSON(this.wwwDir+"fileconversion/checkmail/",{'Email':$('#ReceiverMail').val(),'KeepFor' : $('#KeepForID').val()},function(data){
			
			if (data.error == 'false')
			{	
			    if (swfinst.getStats().files_queued > 0) 			    
			    thisinstance.hasFlashQue = true;
			    	
			    // Test if all removed url files ?		    
			    if (thisinstance.filesQue.length > 0)
			    thisinstance.hasUrlQue = true;
			    
			    $('#errorsList').remove();		    
			    sessionHash = data.sessionhash;
				swfinst.addPostParam('sessionupload',data.sessionhash);
				swfinst.startUpload();				
				thisinstance.startUrlUpload();
				
			}
			else {
			    $('#ConvertButton').removeAttr('disabled');
			    
			    if ($('#errorsList').size() == 0) $('#divSWFUploadUI').prepend('<div id="errorsList"></div>');
			    $('#errorsList').html(data.result);
			  
			}
			
		});
	} else {
	    $('#ReceiverMail').focus();
		alert(translations.enteremail);
	}
}

fc.prototype.startUrlUpload = function()
{    
  var fileUrl = '';
  
  if (this.filesQue.length > 0) this.hasUrlInput = true;
  var instance = this;  
  
  while ((this.filesQue.length) > 0)
  {      
      fileUrl = this.filesQue.pop();
      if (fileUrl != undefined)   
      {  
          $.postJSON(this.wwwDir+"fileconversion/uploadurl/"+sessionHash,{'fileurl':fileUrl.url,'convertTo':fileUrl.convertTo,'fileID':fileUrl.fileID},function(data){
              instance.urlUploaded(data.fileID);
          }); 
      }
  }
}

fc.prototype.urlUploaded = function(fileID)
{
    $('#fileURUploadID'+fileID).fadeOut(2000,function(){	    
	    $(this).remove();	    
	});
    
	if (this.filesQue.length == 0)
	{
	    this.hasUrlQue = false;
        this.uploadComplete();
	}
}

fc.prototype.addRemoteFileQue = function()
{
    if ($('#URLUpload').val() != '')
    {
        this.urlFileCount++;
        var filesQue;
        filesQue = this.filesQue;
        var instance = this;
               
        $.postJSON(this.wwwDir+"fileconversion/fileuploadcontainerurl/"+this.urlFileCount,{'filename':$('#URLUpload').val()},function(data){
    			
    			if (data.error == false)  
    		    {    		        
    		            		        
        			$('#fsUploadProgress').append(data.result);	
        			filesQue[data.fileid] = {'url':data.url_file,'convertTo':$('#ConvertToURL'+data.fileid).val(),'fileID':data.fileid};        			       			     				    
        			$('#ConvertButton').removeAttr('disabled');
        			
		            $('#chooseFile').hide();
		            
		            
                	$('#cancelLinkURL'+data.fileid).click(function(){	
                		instance.cancelUploadURL(data.fileid);
                		return false;
                	});
	
		            $('#ConvertToURL'+data.fileid).change(function(){
                		instance.changeConvertTo(data.fileid,$(this).val());
                	});
		    
    		    } else {
    		            
    		        $('#fsUploadProgress').append(data.result);		        
    		        $('#progressContainer'+data.fileid).attr('class','progressContainer red');
                	$('#progressBarInProgress'+data.fileid).attr('class','progressBarError');
                	$('#fileURUploadID'+data.fileid).fadeOut(5000,function(){	    
                	    $(this).remove();	    
                	});
    		    }
    			
    		});
    }
}

fc.prototype.cancelUploadURL = function(fileID)
{
    this.filesQue.splice(fileID, 1); 
               
    $('#progressContainer'+fileID).attr('class','progressContainer red');
	$('#progressBarInProgress'+fileID).attr('class','progressBarError');
	$('#fileURUploadID'+fileID).fadeOut(2000,function(){	    
	    $(this).remove();	    
	});
	
	if (this.getLengthURL() == 0 && this.swfinstance.getStats().files_queued == 0)
	{
	    $('#ConvertButton').attr('disabled','disabled');
	    $('#chooseFile').show();
	    $('#chooseFile').html(translations.choosefilesfirst);   
	}
	
}

fc.prototype.getLengthURL = function()
{
    var count = 0;
	for (key in this.filesQue)	
	{
	    count++;
	}
	return count;
}

fc.prototype.changeConvertTo = function(id,value)
{
    this.filesQue[id].convertTo = value;
}

fc.prototype.flashQueCancel = function()
{
    if (this.getLengthURL() == 0 && this.swfinstance.getStats().files_queued == 0)
	{
        $('#ConvertButton').attr('disabled','disabled');
        $('#chooseFile').show();
        $('#chooseFile').html(translations.choosefilesfirst);
	}
}


fc.prototype.flashQueCompleted = function()
{    
	this.hasFlashQue = false;	    
	this.uploadComplete();	
}

// Upload complete
fc.prototype.uploadComplete = function()
{   
    if (this.hasFlashQue == false && this.hasUrlQue == false)
    {
       if (sessionHash != '')
       {
            var hasUrlInput = this.hasUrlInput > 0 ? '1' : '0';        
        	$.postJSON(this.wwwDir+"fileconversion/sessiondone/"+sessionHash+"/"+hasUrlInput,{},function(data){
        						
        		});
        	sessionHash = '';
        	
           $('#ReceiverMail').val('');
	       $('#ConvertButton').attr('disabled','disabled');
	       $('#chooseFile').show();
	       $('#chooseFile').html(translations.alluploaded);	       
       }
       
       
	
    }
}