//var root_url="http://localhost/kumbe/svn/bi.kumbe.it/";
var root_url="http://bi.kumbe.it/";

var bi_elementi_valori_di_raggruppamento = Array();
var bi_elementi_valori_da_visualizzare = Array();
var form_dimensioni_selezionate;
var fieldset_form_dimensioni=null;
var fieldset_form_campi=null;
var fieldset_form_periodo_temporale=null;
var fieldset_form_confronti=null;
var fieldset_form_filtri=null;
var filtri_gia_creati=Array();

function bi_reset_report(){
	bi_elementi_valori_di_raggruppamento = Array();
	bi_elementi_valori_da_visualizzare = Array();	
	fieldset_form_periodo_temporale=null;
	bi_render_dimensioni();
	form_dimensioni_selezionate.destroy();
	bi_crea_form();
	document.getElementById("output_report").innerHTML="";
	Ext.Msg.alert ( 'Reportistica', 'Report cancellato');
}

function bi_crea_report(){
	if(bi_elementi_valori_di_raggruppamento.length==0){
		Ext.Msg.alert ( 'Reportistica', 'Non hai scelto nessun campo di raggruppamento');
		return ;
	}
	if(bi_elementi_valori_da_visualizzare.length==0){
		Ext.Msg.alert ( 'Reportistica', 'Non hai scelto nessun valore da visualizzare');
		return ;
	}
	
	var elenco_raggruppamenti="";
	
	for(i=0;i<bi_elementi_valori_di_raggruppamento.length;i++){
		// prendo tutto quello che c'è dall'ultimo / in poi
		if(bi_elementi_valori_di_raggruppamento[i]!=false){
			var elemento = bi_elementi_valori_di_raggruppamento[i].id;
			var token = elemento.substring(elemento.lastIndexOf("/")+1);
			elenco_raggruppamenti+=token+"|";
		}
	}
	
	var elenco_campi="";

	for(i=0;i<bi_elementi_valori_da_visualizzare.length;i++){
		// prendo tutto quello che c'è dall'ultimo / in poi
		if (bi_elementi_valori_da_visualizzare[i] != false) {
			var elemento = bi_elementi_valori_da_visualizzare[i].id;
			var token = elemento.substring(elemento.lastIndexOf("/")+1);
			elenco_campi+=token+"|";
		}
	}
	
	var url_richiesta = root_url+"render.php";
	
	// new Lightbox_html.base('output_report', {closeOnOverlayClick : true });
	document.getElementById('light').style.display='block';
	document.getElementById('fade').style.display='block'
	document.getElementById("output_report").innerHTML='<img src="'+root_url+'/img/ajax-loader.gif"/>';


Ext.Ajax.request({
	url : url_richiesta , 
	method: 'POST',
	form:form_dimensioni_selezionate.getForm().getEl().dom,
	params: 
	{
		operazione: "bi",
		raggruppamenti:elenco_raggruppamenti,
		campi:elenco_campi
	},
	timeout: 10000000,
	success: function ( result, request ) { 
		document.getElementById("output_report").innerHTML=result.responseText;
	},
	failure: function ( result, request) { 
		// Ext.MessageBox.alert('Failed', result.responseText); 
		document.getElementById("output_report").innerHTML=result.responseText;
	} 
});

}

 function handle_drilldown_sequenziale(id_div,url){

document.getElementById(id_div).innerHTML='<img src="'+root_url+'/img/ajax-loader.gif"/>';

Ext.Ajax.request({
	url : url , 
	method: 'GET',
	timeout: 10000000,
	success: function ( result, request ) { 
		document.getElementById(id_div).innerHTML='<a href="#" onclick="document.getElementById(\''+id_div+'\').innerHTML=\'\';return false;"><img src="'+root_url+'/img/elimina.gif"/>Chiudi</a>';
		document.getElementById(id_div).innerHTML+=result.responseText;
	},
	failure: function ( result, request) { 
		// Ext.MessageBox.alert('Failed', result.responseText); 
		document.getElementById(id_div).innerHTML=result.responseText;
	} 
});
 }

function bi_render_dimensioni(){
    bi_resetta_form("si");
	
	for(i=0;i<bi_elementi_valori_di_raggruppamento.length;i++){
		if(bi_elementi_valori_di_raggruppamento[i]!=false){

            fieldset_form_dimensioni.add(
			new Ext.form.Checkbox({
                fieldLabel: bi_elementi_valori_di_raggruppamento[i].text,
                name: bi_elementi_valori_di_raggruppamento[i],
                inputValue: 'on',
                checked: true,
				customvar:bi_elementi_valori_di_raggruppamento[i],
		        listeners: {
					'check': function(elemento,e){
						bi_add_dimensione(elemento.customvar);
					}
				}
            }));
			bi_add_filtro(bi_elementi_valori_di_raggruppamento[i]);
		}
	}

	for(i=0;i<bi_elementi_valori_da_visualizzare.length;i++){
		if (bi_elementi_valori_da_visualizzare[i]!=false) {
            fieldset_form_campi.add(
			new Ext.form.Checkbox({
                fieldLabel: bi_elementi_valori_da_visualizzare[i].text,
                name: bi_elementi_valori_da_visualizzare[i],
				customvar:bi_elementi_valori_da_visualizzare[i],
                inputValue: 'on',
                checked: true,
		        listeners: {
					'check': function(elemento,e){
						bi_add_dimensione(elemento.customvar);
					}
				}
				
            }));
		}
	}	
	fieldset_form_campi.doLayout();

	fieldset_form_dimensioni.doLayout();

	form_dimensioni_selezionate.doLayout();

}

function bi_add_dimensione(node){
	if(node.leaf==false){
		// se è una directory non faccio nulla
		return ;
	}
	
	if (node.id.indexOf("dimensioni_disponibili/raggruppamenti") != -1) {
		var found=false;
		for (i = 0; i < bi_elementi_valori_di_raggruppamento.length; i++) {
			if(bi_elementi_valori_di_raggruppamento[i]!=false){
				if (bi_elementi_valori_di_raggruppamento[i].id == node.id) {
					bi_elementi_valori_di_raggruppamento[i] = false;
					found = true;
				}
			}
		}
		if(found==false){
			bi_elementi_valori_di_raggruppamento[bi_elementi_valori_di_raggruppamento.length]=node;
		}
	}
	else {
		var found=false;		
		for (i = 0; i < bi_elementi_valori_da_visualizzare.length; i++) {
			if (bi_elementi_valori_da_visualizzare[i] != false) {
				if (bi_elementi_valori_da_visualizzare[i].id == node.id) {
					bi_elementi_valori_da_visualizzare[i] = false;
					found = true;
				}
			}
		}
		if(found==false){
			bi_elementi_valori_da_visualizzare[bi_elementi_valori_da_visualizzare.length]=node;
		}
	}
	
	bi_render_dimensioni();
			
}


function bi_crea_dimensioni(){
            /************* DIMENSIONI DISPONIBILI ******************/           
            var dimensioni_disponibili = new Ext.tree.TreePanel({
                el:'dimensioni_disponibili',
                animate:true,
                autoScroll:true,
                //rootVisible: false,
                containerScroll: true,
				loader: new Ext.tree.TreeLoader({dataUrl:root_url+"dimensioni.php",baseParams: {operazione:'bi_richieste',operazione_interna:'dimensioni_disponibili'}}),
                dropConfig: {appendOnly:true},
		        listeners: {
					'click': function(node,e){
					 bi_add_dimensione(node);
	            }
	        }
				
            });
            // set the root node
            var root_dimensioni_disponibili = new Ext.tree.AsyncTreeNode({
                text: 'Dimensioni disponibili', 
                draggable:false, // disable root node dragging
                id:'dimensioni_disponibili',
				leaf:false
            });
            dimensioni_disponibili.setRootNode(root_dimensioni_disponibili);
			
			dimensioni_disponibili.render();

	        // add a tree sorter in folder mode
	        new Ext.tree.TreeSorter(dimensioni_disponibili, {folderSort:false});

}

function bi_crea_form(){
	
	/*resetto i valori di default*/
	fieldset_form_dimensioni=null;
	fieldset_form_campi=null;
	fieldset_form_filtri=null;
	fieldset_form_confronti=null;
	filtri_gia_creati=Array();

	bi_resetta_form();
	
	var url_richiesta = root_url+"/reportistica/";
	
	form_dimensioni_selezionate = new Ext.FormPanel({
        labelWidth: 75, // label settings here cascade unless overridden
        id: 'form_dimensioni_selezionate',
        title: 'Definizione di campi e filtri',
        bodyStyle:'padding:5px 5px 0',
        width: 400,

        items: [
		fieldset_form_periodo_temporale,
		fieldset_form_dimensioni,
		fieldset_form_campi,
		fieldset_form_filtri,
		fieldset_form_confronti
		],

        buttons: [{
            text: 'Genera il report',
    	    handler: function(){
			bi_crea_report();
		}		
        },{
			text: 'Resetta il report',
			handler: function(){
				bi_reset_report();
			}
		}]
    });
	
form_dimensioni_selezionate.render('form_dimensioni_selezionate');
	
}

function bi_resetta_form(ricrea){
  	if (typeof ricrea == "undefined") {
   	 ricrea = "no";
	}

	if(fieldset_form_dimensioni!=null){
		fieldset_form_dimensioni.destroy();
	}
	if(fieldset_form_campi!=null){
		fieldset_form_campi.destroy();
	}
	
	if (fieldset_form_periodo_temporale == null) {
		
		fieldset_form_periodo_temporale = new Ext.form.FieldSet({
			xtype: 'fieldset',
			title: 'Analisi temporale',
			collapsible: true,
			autoHeight: true,
			columns: 2,
			defaultType: 'textfield',
			items: [{
				xtype: "datefield",
				fieldLabel: "Inizio selezione",
				name: "data_inizio",
				value:"01/01/2009",
				format: "d/m/Y"
			}, {
				xtype: "datefield",
				fieldLabel: "Fine selezione",
				name: "data_fine",
				format: "d/m/Y"
			},{
                xtype: 'radiogroup',
                fieldLabel: 'Periodo temporale',
				columns: 2,
                items: [
                    {boxLabel: 'Giorni', name: 'periodo_temporale',inputValue:'giorno'},
                    {boxLabel: 'Anno e Mese', name: 'periodo_temporale', inputValue:'anno_mese'},
                    {boxLabel: 'Mese', name: 'periodo_temporale', inputValue:'mese',checked: true},
                    {boxLabel: 'Anno e Semestre', name: 'periodo_temporale',inputValue:'anno_semestre'},
                    {boxLabel: 'Semestre', name: 'periodo_temporale',inputValue:'semestre'},
                    {boxLabel: 'Anni', name: 'periodo_temporale',inputValue:'anno'}
                ]				
			}]
		});
			
	}
	
	if(fieldset_form_confronti == null){
		fieldset_form_confronti = new Ext.form.FieldSet({
			xtype: 'fieldset',
			title: 'Confronti e operazioni',
			collapsible: true,
			autoHeight: true,
			defaultType: 'checkbox',
			items: [{
                name: 'comparazione_annuale',
                fieldLabel: 'Confronto annuale',
                inputValue:'on',
                checked: true
			},{
                xtype: 'checkboxgroup',
                fieldLabel: 'Operazioni',
                columns: 2,
                width: 200,
                items: [
                    {boxLabel: 'Somma', name: 'operazioni_somma',inputValue:'on'},
                    {boxLabel: 'Differenza', name: 'operazioni_differenza', inputValue:'on'},
                    {boxLabel: 'Differenza %', name: 'operazioni_differenza_perc', inputValue:'on'},
                    {boxLabel: 'Rapporto', name: 'operazioni_rapporto',inputValue:'on'},
                    {boxLabel: 'Rapporto %', name: 'operazioni_rapporto_perc',inputValue:'on'}
                ]				
			}
			]
		});
		
	}
	
	if(fieldset_form_filtri==null){
	
		fieldset_form_filtri = new Ext.form.FieldSet({
            xtype:'fieldset',
            title: 'Filtri',
            collapsible: true,
            autoHeight:true,
            collapsed: true,
            defaultType: 'textfield'
	    });
	    
			
		}				
	fieldset_form_dimensioni = new Ext.form.FieldSet({
            xtype:'fieldset',
            title: 'Campi di raggruppamento',
            autoHeight:true,
            defaultType: 'textfield',
            collapsed: false
        });
	fieldset_form_campi = new Ext.form.FieldSet({
            xtype:'fieldset',
            title: 'Valori da visualizzare',
            autoHeight:true,
            defaultType: 'textfield',
            collapsed: false
        });
		
	if(ricrea=="si"){
		/*
		 * inserisco i fieldset dopo quello del periodo temporale
		 * */
		form_dimensioni_selezionate.insert(1,fieldset_form_campi);
		form_dimensioni_selezionate.insert(1,fieldset_form_dimensioni);
		form_dimensioni_selezionate.doLayout();
	}
	

			
}

function bi_add_filtro(elemento){
			
		var nome_campo = elemento.id.substring(elemento.id.lastIndexOf("/")+1);	

		
		if(
			nome_campo!="provincia" 
			&& nome_campo!="cliente_gruppo"
			&& nome_campo!="cliente_categoria"
			&& nome_campo!="prodotto_categoria"
			&& nome_campo!="prodotto_gruppo"
			&& nome_campo!="prodotto_codice"
			&& nome_campo!="agente"
			&& nome_campo!="filiale"
			&& nome_campo!="divisione"
			){
			return false;
		}

		//alert(form_dimensioni_selezionate.getForm().findField("filtro_"+nome_campo).name);		
		for(j=0;j<filtri_gia_creati.length;j++){
			if(filtri_gia_creati[j]==nome_campo){
				return false;
			}
		}

		// filtri_gia_creati.push(nome_campo);
		filtri_gia_creati[j]=nome_campo;
		
		var store_multiselect = new Ext.data.Store({
        // load using HTTP
        url: root_url+"filtro.php?filtro="+nome_campo,
        
        // the return will be XML, so lets set up a reader
        reader: new Ext.data.XmlReader({
            record: 'record',
            id: 'id'
        }, [{
            name: 'id'
        }, {
            name: 'desc'
        }])});
		Ext.form.Field.prototype.msgTarget = 'side';
/*
// itemselector
// multiselect
*/
		var multiselect = new Ext.ux.Multiselect({
            xtype:"multiselect",
            fieldLabel:elemento.text,
            id:"filtro_"+nome_campo,
            name:"filtro_"+nome_campo,
            dataFields:["id", "desc"], 
            valueField:"id",
            displayField:"desc",
            width:300,
            allowBlank:false,
            store:store_multiselect
			});


			multiselect.store.load();
			fieldset_form_filtri.add(multiselect);	

}

