/*---------------------------------------------------------------------------------
    CORE DEFINITION
---------------------------------------------------------------------------------*/

var system = function(settings){
    
    this.task = new Array();
        
    this.addTask = function(call){
        
                
        var newId = this.task.length;

        this.task.push({
            
            taskName : this.getTaskName(call.settings.applicationName, call.settings.applicationSubName, newId),
            call : call
        });
        
        task_number = this.task.length;
        
        return newId;
        
         
    }
    
    /*-------------------------------------------------------------------------------------------
    ---------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------- GET VARIABILI */
    
    this.getTask = function(idTask){
        return this.task[idTask];
    } 
    
    this.getTaskTaskName = function(taskName){
        var taskVar = this.getTaskVarTaskName(taskName);
        return this.task[taskVar.idTask];
    }   
    
    this.getTaskName = function(applicationName,applicationSubName,idTask){
        return applicationName+'---'+applicationSubName+'---'+idTask;
    }
    
    this.getTaskNameIdTask = function(idTask){
        return this.task[idTask].taskName;        
    }
    
    this.getTaskVarIdTask = function(idTask){
        var array = this.task[idTask].taskName.split("---"); 
        var taskVar = { applicationName : array[0] , applicationSubName : array[1] , idTask : array[2] };
        return taskVar;     
    }
    
    this.getTaskVarTaskName = function(taskName){
        var array = taskName.split("---"); 
        var taskVar = { applicationName : array[0] , applicationSubName : array[1] , idTask : array[2] };
        return taskVar;     
    }
    

    
    /*-------------------------------------------------------------------------------------------
    ---------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------- ACTION */
    
    this.reloadTaskName = function(taskName,extraParams,settings){
       

       var task = this.getTaskTaskName(taskName);
       if (settings) task.call.settings = jQuery.extend(task.call.settings,settings);
       /*
       if (task.call.settings.wrapContent == true) core.css.wrapContent({action:'close'});
       if (task.call.settings.myDialog == true) core.css.myDialog({action:'close'});
       */
       task.call.extraParams = jQuery.extend(task.call.extraParams,extraParams);
       task.call.__constructor(); 
       
       
    } 
    
    this.removeTask = function(taskName,onComplete){
                
        if(onComplete === undefined){
            var onComplete = function(){};
        }
               
        var task = this.getTaskTaskName(taskName);
        
        //console.log(task.call.extra.action);
        
        // chiudi il dialog
        if (task.call.settings.dialog) {
            $("."+task.taskName).dialog('close');
        }
        
        
        if (task.call.settings.myDialog) {
            core.css.myDialog({ action : 'close' , app : task.call.settings.myDialog.app });
        }
        
        
        // elimina il div
        if (task.call.settings.responseElement && task.call.settings.responseView) {
            $("."+task.taskName).remove();
        } 
        
        onComplete();
        
        
        //this.task[task.call.settings.idTask] = false;
         
    }
    
    this.removeTaskEgual = function(taskName,taskNameEsclusion){
        
        var task = this.getTaskTaskName(taskName);
        
        // chiudi i task uguali
        
        for (var i=0; i < this.task.length; i++)
        {
            if(this.task[i]){
                if (this.task[i].call.settings.applicationSubName == task.call.settings.applicationSubName && 
                                  this.task[i].call.settings.applicationName == task.call.settings.applicationName  ){
                    
                    if (this.task[i].taskName != taskNameEsclusion){ 
                        this.removeTask(this.task[i].taskName);
                    }
                    
                }
            }
        }                         
         
    }
    
    this.removeTaskApplication = function(taskName){
        
        var task = this.getTaskTaskName(taskName);
        
        // chiudi i task di questa applicazione
        
        for (var i=0; i < this.task.length; i++)
        {
            if(this.task[i]){
                if (this.task[i].call.settings.applicationName == task.call.settings.applicationName){
                    this.removeTask(this.task[i].taskName);
                }
            }
        }
         
    }
    
};

