
var request = {
    al_completar:'',
    ctrlAJAX:'divppal',

    get_htm:function(strurl,salida,pbody,oncomplet){

        informa.work(true);

        ctrlAJAX = salida;
        if (oncomplet==undefined){oncomplet=''}
        request.al_completar=oncomplet;

        var myRequest = new Request.HTML({
            url: strurl,
            method: 'post',
            link:'ignore',
            data: pbody,
            onSuccess:this.response_srv,
            onFailure:this.response_srv_err
        });
        myRequest.send();
    },

    get_json:function(strurl,oncomplet){
        informa.work(true);

        if (oncomplet==undefined){oncomplet=''}
        request.al_completar=oncomplet;

        var jsonRequest = new Request.JSON({
            url: encodeURIComponent(strurl),
            secure:false,
			onComplete: this.response_json
        }).send();
    },
    response_json:function(responseJSON,responseText){
        informa.work(false);
        if (request.al_completar.length >0) {
            paco=request.al_completar;
            request.al_completar='';
            eval(paco);
        }
    },
    response_srv:function(responseTree, responseElements, responseHTML, responseJavaScript){
        informa.work(false);

        switch (responseHTML.split('_')[0])
        {
            case 'MSG':
                alert(responseHTML.substr(4));
                break;
            case 'POP':
                informa.aviso(responseHTML.substr(6),responseHTML.split('_')[1]);
                break;
            case 'REDIR':
                window.location = responseHTML.substr(6);
                break;
            case 'WIN':
                //alert(responseHTML.substr(4));
                window.open(responseHTML.substr(4));
                break;
            case 'PAG':
                pagina.aviso(responseHTML.substr(4),'cabecera')
            default:
                if (ctrlAJAX != '') {$(ctrlAJAX).innerHTML = responseHTML;}
                break;
        }

        if (request.al_completar.length >0) {
            paco=request.al_completar;
            request.al_completar='';
            eval(paco);
        }
    },

    response_srv_err:function(instance){
        informa.aviso(instance.responseText,2);
    }
}

var informa = {
    ef:0,
    icon:['icon_wait','icon_info','icon_error'],

    start:function(){
        if ($('dv_wait')){
            ef = new Fx.Morph($('dv_wait'), {duration: 200,link:'chain',onChainComplete:function(){informa.efect_end();}})
            $('dv_wait').removeEvents('click');
            $('dv_wait').addEvent('click', function(e){
                        informa.roller(false);
                    });
        }
    },

    work:function(si){
	    if (si==true)
	    {
		    document.body.style.cursor = "wait";
		    if ($('imgwork')) {$('imgwork').setStyle('display','block')};
	    }
	    else
	    {
		    document.body.style.cursor = "default";
		    if ($('imgwork')) {$('imgwork').setStyle('display','none')};
	    }
	    this.roller(si,'Espere por favor...');
    },
    aviso: function(tx,tipo){
        //ef.cancel;
        el=$('dv_wait');
        el.scrollIntoView(false);
        el.set('html', tx);

        desde=el.getStyle('marginTop').toInt();

        ef.start({
            'margin-top':[desde,0], 
            'backgroundColor':['#ccc','#eee']
        });
        informa.icono(tipo);
    },
    icono:function(cual){
        el=$('dv_wait');
        for (x=0;x<informa.icon.length;x++){
            el.removeClass(informa.icon[x]);
        }
        el.addClass(informa.icon[cual]);
    },
    roller: function(visible,tx){
        //ef.cancel;
	    if ($('dv_wait')){
            el = $('dv_wait');
            informa.icono(0);

            if (visible==true) {
		        if (tx!=null){el.set('html', tx);}
		        desde=el.getStyle('marginTop').toInt();
                ef.start({
                    'marginTop':[desde, 0],
                    'backgroundColor':['#ccc','#eee']
                });
            }
            else
            {
                $('dv_wait').setStyle('zIndex',0);
                ef.start({
                    'margin-top':[0,-el.getSize().y],
                    'background-Color': ['#eee','#ccc']
                });
	        }
	    }
    },
    efect_end:function(){
        el = $('dv_wait');
        if (el.getStyle('marginTop').toInt()<-1){
            el.setStyle('zIndex',0);
            el.set('html', '');
        }
        else
        {
            $('dv_wait').setStyle('zIndex',400);
        }
    }
}

var pagina={

    open: function(donde,top_mod){
        if (donde==undefined){donde='cabecera'}
        $('ddoverlay').setOpacity(0.4);
        $('ddoverlay').setStyle('display','block');

        $('pop_pagina').setStyles({
            top:$(donde).getTop()+$(donde).getHeight(),
            display:'block',
            height:0
        })
        
        lefti = $(donde).getLeft() + (950/2);
        
        if ($('dv_pagina').getWidth()>800){
            lefti-=600;
        }
        else
        {
            lefti-=(($('dv_pagina').getWidth()+40)/2);
        }

        elguiz=$('dv_pagina').getWidth()+40;
        if (elguiz>800){elguiz=800}
        
        $('pop_pagina').setStyles({
            left:lefti,
            width:elguiz
        })

        pagina.redim();
    },

    redim:function(){
        $('pop_pagina').set('tween', {duration: 300,
                onComplete:function(){
                    $('pop_pagina').scrollIntoView(false);
                }});
        $('pop_pagina').tween('height',$('dv_pagina').getHeight()+30);
    },

    close:function(no_vacies){
        $('ddoverlay').setStyle('display','none');
        $('pop_pagina').set('tween', {duration: 300,onComplete:function(){
                                                                    $('pop_pagina').setStyle('display','none');
                                                                    if (no_vacies==undefined){$('dv_pagina').empty();}}
                                                              });
        $('pop_pagina').tween('height',0);
    },
    aviso:function(txt,donde,info,delay){
        tex = new Element('div',{
                'class':'box_info',
                'html':txt,
                'styles': {
                        'margin-top': '30px',
                        'margin-bottom': '10px',
                        'min-width':'200px'
                    }
            });
        bot = new Element('div',{
                'class':'btn_gr',
                'text':'Cerrar',
                'events': {
                        'click': function(){
                            pagina.close();
                        }
                    }
            });
        $('dv_pagina').empty();
        $('dv_pagina').adopt(tex);
        if (info!=true) {$('dv_pagina').adopt(bot);}
        pagina.open(donde);
        if (delay){(function(){ pagina.close(); }).delay(5000);}
    },
    help:function(idhelp,donde){
        //pagina.redim();
        strafter='pagina.open($(\'' + donde + '\'));';
        request.get_htm('/cuv/func.aspx','dv_pagina','op=70&num='+idhelp,strafter);
    }
}

var menu_pop = {
    al_complete_pop:null,
    start:function(boton,popi,top_mod,left_mod,onclic,al_complete_pop,relative){
        if (top_mod==undefined){top_mod=0}
        if (left_mod==undefined){left_mod=0}
        if (al_complete_pop!=undefined){this.al_complete_pop=al_complete_pop}
        if (relative==undefined){relative='mn_alumno'}

        informa.start();
        eventi='mouseenter';
        if (onclic==true){eventi='click';}
        $(boton).removeEvents(eventi);

        $(boton).addEvent(eventi, function(e){
	        e = new Event(e).stop();
	        jeje=$(boton);
            $(popi).setStyles({
                top:jeje.getCoordinates(relative).top+10 + (jeje.getHeight())-top_mod,
                left:jeje.getCoordinates(relative).left+15-left_mod
            });

	        menu_pop.open(popi);
        });

        $(boton).removeEvents('mouseleave');
        $(boton).addEvent('mouseleave', function(e){
            e = new Event(e).stop();
	        menu_pop.close(e,popi);
        });

        $(popi).removeEvents('mouseleave');
        $(popi).addEvent('mouseleave', function(e){
            e = new Event(e).stop();
	        menu_pop.close(e,popi);
        });
    },

    open:function(popi){
        $(popi).setStyles({
            height:0,
            display:'block'
        })

        menu_pop.redim(popi);
        if (this.al_complete_pop!=undefined){
            eval(menu_pop.al_complete_pop);
        }
    },

    close:function(e,popi){
        if ($(popi).getStyle('display')=='none') {return}
        desde = e.target || window.event.srcElement;
        hasta = e.relatedTarget || e.event.toElement

        if (hasta){
            switch (hasta.className){
                case 'pop_menu_pop':
                    break;
                case 'pop_contenido_pop':
                    break;
                default:
                    $(popi).set('tween', {duration: 300,onComplete:function(){$(popi).setStyle('display','none')}});
                    $(popi).tween('height',0);
            }
        }
    },
    cierra:function(popi){
        if ($(popi).getStyle('display')=='none') {return}
        $(popi).set('tween', {duration: 300,onComplete:function(){$(popi).setStyle('display','none')}});
        $(popi).tween('height',0);
    },
    redim:function(popi){
        $(popi).set('tween', {duration: 300,link:'cancel'});
        $(popi).tween('height',$(popi).getFirst().getHeight());
    }
}

var solapas={

    start:function(grupo,inicial){
        if ($$('.div_grupo_solapas').length > 0) {
            solis='.div_solapa_grupo'
	        if (grupo!=undefined){
	            solis='#'+grupo+' '+solis;
	        }

            elems = $$(solis);
            elems.each(function(el, i){
	            el.addEvent('click', function(e){
                    solapas.clic(el);
	            });
	            el.addEvent('mouseenter', function(e){
	                el.setStyle('background-color','#f5f5f5');
	            });
	            el.addEvent('mouseleave', function(e){
	                el.setStyle('background-color','#fff');
	            });
	        });
	        if (inicial!=undefined){
                solapas.clic(elems[inicial]);
	        }
        }
     },

    clic:function(cual){
        grupo = cual.getParent().id;
        soles=$$('#' + grupo + ' .div_solapa_grupo');
        soles.removeClass('solapa_on');
        cual.addClass('solapa_on');

        try{
            //el contenido es de la clase del id de las solapas
            $$('#' + grupo + ' .div_solapa_grupo');
            if ($$('.'+grupo).length > 0) {
                $$('.' + grupo).setStyle('display','none');
                for (x=0;x<soles.length;x+=1){
                    if (soles[x]==cual){
                        $$('.'+grupo)[x].setStyle('display','block');
                        break;
                    }
                }
            }
        }
        catch(err){}
    }
}

var func = {

    atras:function(){
        window.history.back();
    },
    toggle_ver:function(cual){
        if ($(cual).getStyle('display') == 'block'){
            $(cual).setStyle('display','none');
        }
        else
        {
            $(cual).setStyle('display','block');
        }
    },
    link_win:function(url){
        window.open(url);
    },
    seltab:function (cual){

        $$('.TabCellSelLeft')[0].className = 'TabCellLeft';
        $$('.TabCellSel')[0].className = 'TabCell';
        $$('.TabCellSelRight')[0].className = 'TabCellRight';
        if ($$('.pn_sel').length >0){$$('.pn_sel')[0].className = 'pn_nosel';}

        $('sl_' + cual + '_1').className = 'TabCellSelLeft';
        $('sl_' + cual + '_2').className = 'TabCellSel';
        $('sl_' + cual + '_3').className = 'TabCellSelRight';
        if ($('sol_' + cual)) {$('sol_' + cual).className = 'pn_sel';}

    },

    tree_start:function(){
        $$('.tree_padre').removeEvents('click');
        $$('.tree_padre').each(function(el, i){
	        el.addEvent('click', function(e){
	            func.toggle_ver(el.getNext());
	        });
	    })

	    $$('.tree_hijo,.tree_hijo_last').removeEvents('mouseenter');
	    $$('.tree_hijo,.tree_hijo_last').removeEvents('mouseleave');

	    $$('.tree_hijo,.tree_hijo_last').each(function(el, i){
		    el.addEvent('mouseenter', function(e){
			    el.set('morph', {duration: 300, link:'cancel'});
			    el.morph({color:'#000',backgroundColor:'#eee'});
		    });

		    el.addEvent('mouseleave', function(e){
			    el.set('morph', {duration: 300, link:'cancel'});
			    el.morph({color:'#333',backgroundColor:'#fff'});
		    });
        })
    },
    sesion_on:function(){
        func.keep_alive.periodical(300000);
    },
    keep_alive:function(){
        rq_alive = new Request.HTML({
            url: '/cuv/func.aspx?op=0',
            link:'ignore'
        });
        rq_alive.send();
    },
    posicion_absoluta:function(elemento){
        rtn={top:0,left:0}
        rtn.top=$(elemento).getCoordinates().top;
        rtn.left=$(elemento).getCoordinates().left;
        return rtn;
    }
}

var paginas={

    aviso:function(txt,donde,info,delay){
        ppal = new Element('div',{
                'styles': {
                        'width':'300px'
                    }
            });
        tex = new Element('div',{
                'class':'box_info',
                'html':txt
            });
            
        bot = new Element('div',{
                'class':'btn_gr',
                'text':'Cerrar',
                'styles': {
                        'margin-left':'100px'
                    },
                'events': {
                        'click': function(){
                            pagina_actual.close();
                        }
                    }
            });

        btns = new Element('div',{
                'styles': {
                        'border-top':'1px solid #ccc',
                        'padding':'5px'
                    }
            });

        btns.adopt(bot);
        ppal.adopt(tex,btns);

        pagi=new pagina_pop('info',donde);
        
        $('info_pop_texto').adopt(ppal);
        if (info!=true) {$('info_pop_texto').adopt(btns);}
        pagina_actual.presenta();
        if (delay){(function(){ pagina_actual.close(); }).delay(5000);}
    },
    help:function(idhelp,donde){
        new pagina_pop('help',donde);
        request.get_htm('/cuv/func.aspx','help_pop_texto','op=70&new=1&num='+idhelp,'pagina_actual.presenta();');
    }
}

