var globalCallbacks = {
	onCreate: function(){
		$('cargando').show();
	},
	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			$('cargando').hide();
		}
	}
};
Ajax.Responders.register(globalCallbacks);

var fechas_key;
var dates=[];
var AfaTabla=Class.create();
AfaTabla.prototype = {
    id_show     :   '',
    id_input    :   '',
    id_tabla    :   '',
    id_trigger  :   '',
    
	initialize: function(id_tabla, id_show, id_input, id_trigger){
		this.id_tabla=id_tabla;
                this.id_show=id_show;
                this.id_input=id_input;
                this.id_trigger=id_trigger;
                this.setupCal();
                },
        
        ultima: function() {
                var yo=this;
                var id_input=this.id_input;
                var id_tabla=this.id_tabla;
                var id_show=this.id_show;
                var ufecha='';
                var url=V2cms_core.getContextPath+'afa-tablas/'+id_tabla+'.do';
                var parms="tk="+new Date().getTime()+"&mode=ultimaFecha";
                new Ajax.Request(url, {method:'get', parameters:parms,
                    onSuccess: function(transport) {
                            ufecha=transport.responseText;
                            $(id_input).value=ufecha;
                            var xx=Date.parseDate(ufecha, "%d-%m-%Y");
                            yo.get(ufecha,id_tabla);
                            $(id_show).appendChild(document.createTextNode(xx.print('%A, %B %d, %Y')));
                        }
                });
	},
	
        setupCal    :   function() {
                var yo=this;
                var id_tabla=this.id_tabla;
                var id_input=this.id_input;
                var id_trigger=this.id_trigger;
                var id_show=this.id_show;
                Calendar.setup({
                    date           :    new Date(),
                    inputField     :    id_input,
                    button         :    id_trigger,
                    displayArea    :    id_show,
                    daFormat       :    "%A, %B %d, %Y",
                    ifFormat       :    "%d-%m-%Y",
                    align          :    "Br",
                    electric       :    false,
                    singleClick    :    true,
                    weekNumbers    :    false,
                    dateStatusFunc :    function(date, y, m, d) {
                        var key=id_tabla+'_'+y+'_'+m;
                        if(key!=fechas_key) {yo.loadAllowedDates(m, y, V2cms_core.getContextPath+'afa-tablas/'+id_tabla+'.do'); fechas_key=key;}
                            if(dates.indexOf(d)<0) return true;
                        return false;
                        }
                    });
                },
                
        get: function(fecha, div) {
            var id_tabla=this.id_tabla;
            var url=V2cms_core.getContextPath+'afa-tablas/'+id_tabla+'.do';
            var parms="tk="+new Date().getTime()+"&mode=get"+"&fecha="+fecha;
            var myAjax=new Ajax.Updater( {success: div}, url, { method: 'get', parameters: parms, 
		onFailure: function(){
		    $(div).innerHTML='No hay información disponible para esta fecha';
		}
		});
        },
        
        loadAllowedDates: function(actualMonth, actualYear, url){
            var pars='mode=fechas&mes='+(actualMonth+1)+'&anio='+actualYear;
            var myAjax=new Ajax.Request(url, {
                method:'get', parameters:pars,
                onSuccess: function(transport) {
                    eval("var respuesta=" + transport.responseText);
                    var cant=respuesta.fechas.length;
                    dates=new Array();
                    for(x=0;x<cant;x++){
                        dates.push(respuesta.fechas[x].dia);
                    }
                    calendar.refresh();
                }
            });
        }

};


var AfaTablaProduccion=Class.create();
AfaTablaProduccion.prototype = {
    urlBase: null,
    id_tabla: null,
    id_select: null,
    id_div: null,

    initialize: function(id_tabla, id_select, id_div) {
        this.id_tabla=id_tabla;
        this.id_select=id_select;
        this.id_div=id_div;
        this.urlBase=V2cms_core.getContextPath+'afa-tablas/'+id_tabla+'.do';
        this.loadFechas();
    },

    loadFechas: function() {
        var me=this;
        var parms="mode=fechas";
        var fe=new Ajax.Request(this.urlBase, { 
            method: 'get',
            parameters:parms,
            onSuccess: function(transport) {
                var pp=new Array();
                pp = unescape(eval(transport.responseText)).split(",");
                var selfechas=$(me.id_select);
                selfechas.options.length=0;
                for (i=0; i<pp.length; i++){
                    var newOp=new Option(pp[i], pp[i]);
                    selfechas.options[i]=newOp;
                }
                selfechas.options[0].selected=true;
                me.get(selfechas.options[0].value, me.id_div);
            }
        });

    },

    get: function(fecha, div) {
        var url=this.urlBase;
        var parms="tk="+new Date().getTime() + "&mode=get" + "&fecha="+fecha;
        var myAjax=new Ajax.Updater({success: div}, url, { method: 'get', parameters: parms, onFailure: this.reportError});
    }
};
