/**
 * Funciones Js de Asocars
 */
var form                    = null;
var formPreinspeccion       = null;
var formVisita       = null;
var _result                 = '';
var aux;
var acord = new Array()

window.addEvent('domready', function() {
    if((aux = $("nav")))
     var myMenu = new MenuMatic();

    if($('pestanas'))        
        var tabs = new SimpleTabs('pestanas', {
		selector: 'h4'
        });
    
    if($('accordion1'))
        acord.include(new Accordion('#accordion1 h5', '#accordion1 div', {
            show:0
        }));

    if($('accordion2'))
        acord.include(new Accordion('#accordion2 h5', '#accordion2 div', {
            show:0
        }));

    if($('accordion3'))
        acord.include(new Accordion('#accordion3 h5', '#accordion3 div', {
            show:0
        }));    

    if($('fecha_i')) {
        Calendar.setup({
        inputField     :    "fecha_i",
         ifFormat     :     "%Y-%m-%d",
         button     :    "lanzador1"
        });
    }
    
    if($('fecha_f')) {
        Calendar.setup({
        inputField     :    "fecha_f",
         ifFormat     :     "%Y-%m-%d",
         button     :    "lanzador2"
        });
    }    

    if($('savePreinspeccion'))
        formPreinspeccion = new FormCheck('savePreinspeccion', {
           display : {
               listErrorsAtTop  :   true,
               errorsLocation   :   2,
               fadeDuration     :   1000,
               scrollToFirst    :   false,
               addClassErrorToField	: 1,
               indicateErrors   :   2
           },
           errorClass : "errors" ,
           fieldErrorClass : "errors"
        });
    if($('saveEmpresa'))
     form = new FormCheck('saveEmpresa', {
         display : {
               addClassErrorToField	: 1
         },
         fieldErrorClass : "errors"
     });
     if($('formReports'))
      form = new FormCheck('formReports', {
         display : {
               addClassErrorToField	: 1
         },
         fieldErrorClass : "errors"
      });
    if($('saveEstablecimiento'))
     form = new FormCheck('saveEstablecimiento', {
         display : {
               addClassErrorToField	: 1
         },
         fieldErrorClass : "errors"
     });
    if($('saveUser'))
     form = new FormCheck('saveUser', {
         display : {
               addClassErrorToField	: 1
         },
         fieldErrorClass : "errors"
     });
    if($('formSave'))
     form = new FormCheck('formSave', {
         display : {
               addClassErrorToField	: 1
         },
         fieldErrorClass : "errors"
     });
    if($('saveVisita'))
     formVisita = new FormCheck('saveVisita', {
           display : {
               listErrorsAtTop  :   true,
               errorsLocation   :   2,
               fadeDuration     :   1000,
               scrollToFirst    :   false,
               addClassErrorToField	: 1,
               indicateErrors   :   2
           },
           errorClass : "errors" ,
           fieldErrorClass : "errors"
        });
    checkform();

    if((aux = $('capacidad')))
        aux.addEvent('change', function(){
            updateCapacidad('cellCapacidadInstalada','cellBeneficio', '.capacidad', 'Value')
        });
        
    if((aux = $('residuosSolidos')))
        aux.addEvent('change', function(){
            addTextFields('cellResiduosSolidos','residuoSolido', '.residuosSolidos', formVisita, 'Value')
        });    

    if((aux=$('residuosPeligrosos')))
        aux.addEvent('change', function(){
            addTextFields('cellResiduosPeligrosos','residuoPeligroso', '.residuosPeligrosos', formVisita, 'Value');
        });
    var buttonHead = $('buttonHead');
    var buttonsFoot = $('buttonsFoot');
    
    if($('pestanas')) {
        if(buttonHead)
           buttonHead.setStyle('width',$('pestanas').getSize().x);
        if($('pestanas').getElement('ul')){
           $('pestanas').getElement('ul').setStyle('width',$('pestanas').getSize().x-2);
        }
        if(buttonsFoot)
           buttonsFoot.setStyle('width',$('pestanas').getSize().x-2);
    }

    if($('list')) {
        if(buttonHead) {
           buttonHead.setStyle('width',$('list').getSize().x-25);
           if(Browser.Engine.trident)
            buttonHead.setStyle('width',$('list').getSize().x-30);
        }
        if(buttonsFoot) {
           if(buttonsFoot.getSize().x<=$('list').getSize().x )
            buttonsFoot.setStyle('width',$('list').getSize().x-8);
          
        }
    }

    if($('O2161') && $('O2162') && $('O3163')) {
        $('O2161').addEvent('click', function() {
           activarNoAplica($('O2161'), $('O2162'), $('O3163'));
        });
        $('O2162').addEvent('click', function() {
           activarNoAplica($('O2161'), $('O2162'), $('O3163'));
        });

        if($('O1161')) {
            $('O1161').addEvent('click', function() {
                activarNoAplica($('O2161'), $('O2162'), $('O3163'));
            });
        }

        if($('O1162')) {
            $('O1162').addEvent('click', function() {
                activarNoAplica($('O2161'), $('O2162'), $('O3163'));
            });
        }
    }
 });

/**
 * 
 * @param f
 * @return
 */
function nombreEmp(f) {
      if(f.tempresa[0].checked) {
          f.nombre.value = f.nombre1.value;
          f.nombre2.disabled = true;          
          f.nombre1.disabled = false;
          f.nombre1.focus();

      } else if(f.tempresa[1].checked) {
          f.nombre.value = f.nombre2.value;
          f.nombre1.disabled = true;          
          f.nombre2.disabled = false;
          f.nombre2.focus();
      }      
}

/**
 * Recarga el listado de Municipios utilizando ajax
 * @param e
 * @return
 */
function updateMunicipios(e) {
    // The response comes back as a bunch-o-JSON
    var listaMunicipios = eval("(" + e + ")")	// evaluate JSON

    if (listaMunicipios) {
        var rselect = $('municipio.id');

        // Clear all previous options
        var l = rselect.length;
        while (l > 0) {
            l--;
            $(rselect.options[l]).dispose();
        }
        var opt;
        opt = new Element('option', {
            text: 'Seleccione un municipio',
            value: 'null'
        });
        opt.inject(rselect);
        
        // Rebuild the select
        for (var i=0; i < listaMunicipios.length; i++) {
            var municipio = listaMunicipios[i];
            opt = new Element('option', {
                text: municipio.nombre,
                value: ''+municipio.id
            });
            opt.text = municipio.nombre;
            opt.value = municipio.id;
            opt.inject(rselect);
        }
        rselect = $('subdivisionPolitica.id');
        if(rselect) {
            l = rselect.length;
            while (l > 0) {
                    l--;
                    $(rselect.options[l]).dispose();
            }            
            opt = new Element('option', {
                text: 'Seleccione un Municipio',
                value: 'null'
            });
            opt.inject(rselect);
        }
    }
}

/**
 * Recarga el listado de Municipios utilizando ajax
 * @param e
 * @return
 */
function updateVeredas(e) {	
    var listaVeredas = eval("(" + e + ")")    
    if (listaVeredas) {
        var rselect = $('subdivisionPolitica.id');

        var l = rselect.length;
        while (l > 0) {
                l--;
                $(rselect.options[l]).dispose();
        }
        var opt;
        opt = new Element('option', {
            text: 'Seleccione un Barrio/Vereda',
            value: 'null'
        });
        opt.inject(rselect);

        // Rebuild the select
        for (var i=0; i < listaVeredas.length; i++) {
            var vereda = listaVeredas[i];
            opt = new Element('option', {
                text: vereda.nombre,
                value: vereda.id
            });
            opt.inject(rselect);  
        }
    }
}

function updateEmpresaPreinspeccion(e, link) {
    var empresa = eval("(" + e + ")")
    var n;
    if((n = $('nitEmpresa'))) {
        n.empty();
        if(empresa.nit)
         n.appendText(empresa.nit+" - " +empresa.codigoVerifNit);
    }

    if((n = $('nombreRepEmpresa'))) {
        n.empty();
        if(empresa.nombreRepresentanteLegal)
         n.appendText(empresa.nombreRepresentanteLegal);
    }

    new Request.JSON({url: link,
        async:true,
        evalScripts:true,
        onSuccess: function(responseJSON, responseText) {
            updateEsteblecimientosList(responseText);            
        },
        data:'empresaId=' + (empresa.id? empresa.id:'')
    }).send();
    
}

function updateEsteblecimientosList(e) {
    var listaEstablecimientos = eval("(" + e + ")")	// evaluate JSON
    var n;
    if((n = $('nitEstablecimiento'))) {
        n.empty();
    }

    if((n = $('nombreRepEstablecimiento'))) {
        n.empty();
    }

    if (listaEstablecimientos) {
        var rselect =$('establecimiento');

        // Clear all previous options
        var l = rselect.length;
        while (l > 0) {
            l--;
            $(rselect.options[l]).dispose();
        }

        var opt;
        opt = new Element('option', {
            text: 'Seleccione Establecimiento',
            value: 'null'
        });
        opt.inject(rselect);
        
        // Rebuild the select
        for (var i=0; i < listaEstablecimientos.length; i++) {
            var establecimiento = listaEstablecimientos[i];
            opt = new Element('option', {
                text: establecimiento.nombre,
                value: establecimiento.id
            });
            opt.inject(rselect);
        }
    }
}

function updateEstablecimientoPreinspeccion(e) {
    var establecimiento = eval("(" + e + ")")
    var n;
    if((n = $('nitEstablecimiento'))) {
        n.empty();
        if(establecimiento.nit)
         n.appendText(establecimiento.nit+" - " +establecimiento.codigoVerifNit);
    }

    if((n = $('nombreRepEstablecimiento'))) {
        n.empty();
        if(establecimiento.nombreRepresentanteLegal)
         n.appendText(establecimiento.nombreRepresentanteLegal);
    }
}

function activarBeneficio(capacidad, id, beneficio) {    
    if(capacidad.value!='') {
        if($(id))
            $(id).disabled=false;
        if($(beneficio)) {
            $(beneficio).disabled=false;
            $(beneficio).addClass("validate['required','number']");
            form.register($(beneficio));
        }
    } else {
        if($(id))
            $(id).disabled=true;
        if($(beneficio)) {
            $(beneficio).disabled=true;
            $(beneficio).removeClass("validate['required','number']");
            form.dispose($(beneficio));
        }
    }
}

function otraReferencia(tipo_ref, el, URL, sel, titleSel, URL2, URL3) {
    var e = $(el).getParent();    
    e.empty();    
    var input = new Element('input', {
       id : 'nombreReferencia'+tipo_ref,
       name:'nombreReferencia'+tipo_ref,
       type: "text",
       'styles': {
           'display': 'inline'
       },
       'events': {
           'blur': function() {
                if(this.value=='') {
                    e.empty();
                    new Element('a',{
                        href    :   'javascript:void(0)',
                        html    :   'Otro...',
                        'events' : {
                            'click' : function() {
                                otraReferencia(tipo_ref, this, URL, sel, titleSel, URL2, URL3);
                            }
                        }
                    }).inject(e);
                }
            }            
       }       
    });
    input.inject(e);
    input.focus();
    var agregar = new Element('a', {
        href    :   'javascript:void(0)',
        html    :   'Añadir',
        'events': {
            'click': function(){
                if(input.value!='') {
                      var req;
                      req = new Request.JSON({url: URL3,
                      async:false,
                      evalScripts:true,
                      onRequest: function(){
                        loading(true)
                      },
                      onComplete: function(){
                        loading(false)
                      },
                      onSuccess: function(responseJSON, responseText) {
                        _result = eval("("+responseText+")");
                      },
                      data:'nombre=' + input.value+"&otroId="+tipo_ref
                     });
                     req.send();
                     
                     if(_result!='') {
                        alert("El Nombre ya esta registrado, por favor verifique los datos");
                        _result='';
                        e.empty();
                        new Element('a',{
                            href    :   'javascript:void(0)',
                            html    :   'Otro...',
                            'events' : {
                                'click' : function() {
                                    otraReferencia(tipo_ref, this, URL, sel, titleSel, URL2, URL3);
                                }
                            }
                        }).inject(e);
                        return;
                     }
                     new Request.JSON({url: URL,
                         async:false,
                         evalScripts:true,
                         onRequest: function(){
                            loading(true)
                         },
                         onComplete: function(){
                            loading(false)
                         },
                         onSuccess: function(responseJSON, responseText) {
                            new Request.JSON({url: URL2,
                                 async:true,
                                 evalScripts:true,
                                 onRequest: function(){
                                    loading(true)
                                 },
                                 onComplete: function(){
                                    loading(false)
                                 },
                                 onSuccess: function(responseJSON, responseText) {
                                     updateListaTipo(responseText, sel, titleSel, input.value);
                                 },
                                 data:'id='+tipo_ref
                            }).send();
                            e.empty();
                            new Element('a',{
                                href    :   'javascript:void(0)',
                                html    :   'Otro...',
                                'events' : {
                                    'click' : function() {
                                        otraReferencia(tipo_ref, this, URL, sel, titleSel, URL2, URL3);
                                    }
                                }
                            }).inject(e);
                         },
                         data:'nombre=' + input.value+'&ref.id='+tipo_ref
                     }).send();
                } else {
                   alert('Debe ingresar un nombre');
                }
            }            
        }
    });
    agregar.inject(e);    
}

function updateListaTipo(e, rselect, titleSel, nom) {
    var listaTipos = eval("(" + e + ")")	// evaluate JSON
    var sel = null;
    var i;
    sel = $(rselect);
    
    if(sel.type!='select-one' && sel.type!='select-multiple') {
        var es = $$('.'+rselect);        
        for (i=0; i<es.length; i++) {
            if((es[i].type == 'select-multiple' || es[i].type == 'select-multiple') && es[i].id==rselect) {
                sel = es[i];
                break;
            }
        }
        if(i==es.length)
         sel=null;
    }

    if (listaTipos && sel) {
        // Clear all previous options
        var l = sel.length;
        while (l > 0) {
                l--;
                $(sel.options[l]).dispose();
        }
        var opt;
        if(titleSel!='') {
            opt = new Element('option', {
                text: titleSel,
                value: 'null'
            });
            opt.inject(sel);
        }
        // Rebuild the select
        for (i=0; i < listaTipos.length; i++) {
            var tipo = listaTipos[i];
            opt = new Element('option', {
                text: tipo.nombre,
                value: ''+tipo.id
            });           
            
            if(nom==opt.getProperty('text'))
              opt.setProperty('selected', true);
            opt.inject(sel);
        }
    if(Browser.Engine.trident && sel.onchange)
        sel.onchange.attempt()
    else
        sel.fireEvent('change');
    }
}

function checkform() {
    var elements = document.getElementsByTagName('input');    
    var n;
    var s;
    for(i=0;i< elements.length;i++) {        
        if(elements[i].type=='checkbox') {            
            s = elements[i].name + 'Descripcion';            
            if((n = $(''+s))) {                
                n.disabled=!elements[i].checked;
            }
        }        
    }    
}

function setEstadoLegalEnabled(e, nActo, fActo, vActo, oActo) {
    formPreinspeccion.dispose($(oActo));
    switch(parseInt(e.value)) {
        case 1: case 3:
           if($(vActo)) {
             $(vActo).disabled = false;
             if(!$(vActo).hasClass("validate['digit[1900,2200]']"))
                  $(vActo).addClass("validate['digit[1900,2200]']");
             formPreinspeccion.register($(vActo));
           }
           if($(nActo))
              $(nActo).disabled = false;            
              
           if($(fActo)) {               
               $(fActo).disabled = false;
               if(!$(fActo).hasClass("validate['%checkfecha']"))
                   $(fActo).addClass("validate['%checkfecha']");
               $(fActo).addEvent('blur', function() {
                   formatearFecha($(fActo));
               });
               formPreinspeccion.register($(fActo));
            }                       
         break;
        case 2:
            if($(vActo))
              $(vActo).disabled = true;            
            if($(fActo)) {
              $(fActo).disabled = true;
              $(fActo).removeEvents('blur');
              $(fActo).value='';
            }
            if($(nActo))
              $(nActo).disabled = true;            
            if($(fActo))
             formPreinspeccion.dispose($(fActo));            
         break;
    }
    if(!$(oActo).hasClass("validate['required']"))
     $(oActo).addClass("validate['required']");
    formPreinspeccion.register($(oActo));
}

function setTipoCumplimientoEnabled(e, oCump) {
    formVisita.dispose($(oCump));
    if(!$(oCump).hasClass("validate['required']"))
     $(oCump).addClass("validate['required']");
    formVisita.register($(oCump));
}

function checklatitud(e)  {   
    if (!e.value.test(/^[-+]?\d{1,2}-\d{1,2}-\d{1,2}\.?\d*$/)) {
        e.errors.push("Debe estar en formato Ej: Para 12º11'12.25\" escribir 12-11-12.25"+
            "<br/>Para latitud norte use una latitud positiva Ej: Para 12º11'12.25 N\" escribir 12-11-12.25"+
            "<br/>Para latitud sur use una latitud negativa Ej: Para -4º11'12.25 S\" escribir -4-11-12.25");
        return false;
    } else {
        var parent = e.getParent();
        var e1 = parent.getElement('.latitud')
        var lati;
        if(e.value.charAt(0)=='-')
         lati = e.value.substr(1);
        else
         lati = e.value;
        var lat = lati.split(/-/)
        var limS = 12+30/60+40/3600;
        var limI = -4-13/60-30/3600;
        var val = parseFloat(lat[0]) + parseFloat(lat[1])/60 + parseFloat(lat[2])/3600;
        if(e.value.charAt(0)=='-')
            val*=-1;
        if(val>limS || val<limI) {
            e.errors.push("Debe ser una latitud valida para Colombia<br/> Debe estar entre [-4°13'30\"] y [12°30'40\"]");
            return false;
        } else if(parseInt(lat[1])>59){
            e.errors.push("Los minutos deben estar entre 0 y 59");
            return false;
        } else if(!(parseFloat(lat[2])<60.0)){
            e.errors.push("Los segundos deben estar entre 0 y 59");
            return false;
        } else {
            e1.value= ''+val;
            return true;
        }
    }
}

function checklongitud(e)  {
    if (!e.value.test(/^[-+]?\d{1,2}-\d{1,2}-\d{1,2}\.?\d*$/)) {
        e.errors.push("Debe estar en formato<br/>Ej: -68º11'12.25\" escribir -68-11-12.25"+
                      "<br/>Para longitud este use una longitud positiva Ej: Para 12º11'12.25 E\" escribir 12-11-12.25"+
                      "<br/>Para longitud oeste use una longitud negativa Ej: Para -68º11'12.25 O\" escribir -68-11-12.25");
        return false;
    } else {
        var parent = e.getParent();
        var e1 = parent.getElement('.longitud')
         var longi;
        if(e.value.charAt(0)=='-')
         longi = e.value.substr(1);
        else
         longi = e.value;
        var lon = longi.split(/-/)
        var limS = -66-50/60-54/3600;
        var limI = -79-1/60-23/3600;
        var val = parseFloat(lon[0]) + parseFloat(lon[1])/60 + parseFloat(lon[2])/3600;
        if(e.value.charAt(0)=='-')
            val*=-1;
        if(val>limS || val<limI) {
            e.errors.push("Debe ser una longitud valida para Colombia<br/> Debe estar entre [-79°1'23\"] y [-66°50'54\"]");
            return false;
        } else if(parseInt(lon[1])>59){
            e.errors.push("Los minutos deben estar entre 0 y 59");
            return false;
        } else if(!(parseFloat(lon[2])<60.0)){
            e.errors.push("Los segundos deben estar entre 0 y 59");
            return false;
        } else {
            e1.value= ''+val;
            return true;
        }
    }
}

function checknit(e) {    
    if(e.value.length>0 && isNaN(e.value.charAt(e.value.length-1)))
      e.value = e.value.substr(0,e.value.length-1);
}

function updateCapacidad(capacidad,beneficio, e1, sufVal) {
    var e = null;
    var es = $$(e1);
    var cap = $(capacidad);
    var ben = $(beneficio);
    var trC, tdC, trB, tdB;
    var label, text;
    var i,j=0;
    for (i=0; i<es.length; i++) {
        if(es[i].type == 'select-multiple') {
            e = es[i];
            break;
        }
    }
    if(cap && ben && e) {
        for(i=0; i<e.options.length; i++) {
            if($('capacidad'+e.options[i].value))
              form.dispose($('capacidad'+e.options[i].value));
            if($('beneficio'+e.options[i].value))
              form.dispose($('beneficio'+e.options[i].value));
        }
        for(i=0; i<e.options.length; i++) {
            if(e.options[i].selected && e.options[i].value=='ninguno') {
                for(j=0; j<e.options.length; j++) {
                    e.options[j].selected = false;
                }
                cap.empty();
                ben.empty();
                return
            }
        }
        cap.empty();
        ben.empty();
        for(i=0; i<e.options.length; i++) {
            if(j%4==0) {
                trC = new Element('tr');
                trC.inject(cap);
                trB = new Element('tr');
                trB.inject(ben);
            }
            if(e.options[i].selected) {
                tdC = new Element('td');
                label = new Element('label', {
                    'for': 'capacidad'+e.options[i].value,
                    html : e.options[i].text
                });
                label.inject(tdC);
                tdC.inject(trC)

                tdC = new Element('td');                
                text = new Element('input', {
                    id : 'capacidad'+e.options[i].value,
                    name:'capacidad'+e.options[i].value,
                    type: "text",
                    'class': "validate['number']"
                });
                if($('capacidad'+sufVal+e.options[i].value))
                    text.value = $('capacidad'+sufVal+e.options[i].value).value;
                text.inject(tdC);                
                tdC.inject(trC);
                form.register($('capacidad'+e.options[i].value));

                tdB = new Element('td');
                label = new Element('label', {
                    'for': 'beneficio'+e.options[i].value,
                    html : e.options[i].text
                });
                label.inject(tdB);
                tdB.inject(trB)

                tdB = new Element('td');
                text = new Element('input', {
                    id : 'beneficio'+e.options[i].value,
                    name:'beneficio'+e.options[i].value,
                    type: "text",
                    'class': "validate['number']"
                });
                if($('beneficio'+sufVal+e.options[i].value))
                    text.value = $('beneficio'+sufVal+e.options[i].value).value;
                text.inject(tdB);
                tdB.inject(trB);                
                form.register($('beneficio'+e.options[i].value));
                j++;
            }
        }
    }    
}

function checkNitExist(e) {
    var req;
    if(e.value!='') {
         req = new Request.JSON({url: $('URLgetByNit').value,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
            _result = eval("("+responseText+")");            
         },
         data:'nit=' + e.value+'&dv='+$('codigoVerifNit').value+"&id="+($('id')? $('id').value:'')
        });
        req.send();
    }
    if(_result!='') {
        e.errors.push("El NIT ya esta registrado, por favor verifique los datos");
        return false;
    } else {
        _result='';
        return true;
    }
}

function loading(t) {
    var n = $('log-res');
    var x,y;
    if(t) {
        if($('mb_contents') && $('mb_contents').getSize().x!=0 && $('mb_contents').getSize().y!=0) {
          x = parseInt(($('mb_contents').getSize().x-100)/2);
          y = parseInt(($('mb_contents').getSize().y-100)/2);
        } else {
          x = parseInt(($(window).getSize().x-100)/2);
          y = parseInt(($(window).getSize().y-100)/2);
        }
        n.setStyles({
          visibility:'visible',
          left: x ,
          top: y
        });
    }
    else{        
        n.setStyles({
          visibility:'hidden',
          left: 0 ,
          top: 0
        });
    }
}

function checkNombreExist(e) {
    var req;
    if(e.value!='') {
         req = new Request.JSON({url: $('URLgetByNombre').value,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
            _result = eval("("+responseText+")");
         },
         data:'nombre=' + e.value+'&municipioId='+$('municipio.id').options[$('municipio.id').selectedIndex].value+"&id="+($('id')? $('id').value:'')
        });
        req.send();
    }
    if(_result!='') {
        if($('municipio.id').options[$('municipio.id').selectedIndex].value!='null')
            e.errors.push("El Nombre ya esta registrado en ese municipio<br/>Por favor verifique los datos");
        else e.errors.push("El Nombre ya esta registrado<br/>Por favor verifique los datos");
        return false;
    } else {
        _result='';
        return true;
    }
}

function checkfecha(e) {
 
    if(!e.value.test(/^\d{4}-\d{2}-\d{2}$/)) {
        if(e.errors)
         e.errors.push("La fecha debe estar en formato yyyy-mm-dd");
        return false;
    } else {
        var fecha = e.value.split('-');
        if(fecha.length==3) {
            if(parseFloat(fecha[0])<1900 || parseFloat(fecha[0])>2100) {
                if(e.errors)
                 e.errors.push("El año debe estar entre 1900 y 2100");
                return false;
            } else if(parseFloat(fecha[1])<1 || parseFloat(fecha[1])>12) {
                if(e.errors)
                 e.errors.push("El mes debe estar entre 01 y 12");
                return false;
            } else {
                switch(parseFloat(fecha[1])) {
                    case 1: case 3: case 5:
                    case 7: case 8: case 10: case 12:
                         if(parseFloat(fecha[2])<1 || parseFloat(fecha[2])>31) {
                              if(e.errors)
                               e.errors.push("El día debe estar entre 01 y 31");
                              return false;
                         }
                     break;
                    case 4: case 6: case 9: case 11:
                         if(parseFloat(fecha[2])<1 || parseFloat(fecha[2])>30) {
                              if(e.errors)
                               e.errors.push("El día debe estar entre 01 y 30");
                              return false;
                         }
                     break;
                    case 2:
                        if(parseInt(fecha[0])%4==0 && (parseFloat(fecha[2])<1 || parseFloat(fecha[2])>29)) {
                              if(e.errors)
                               e.errors.push("El día debe estar entre 01 y 29");
                              return false;
                        } else if(parseFloat(fecha[2])<1 || parseFloat(fecha[2])>28) {
                              if(e.errors)
                               e.errors.push("El día debe estar entre 01 y 28");
                              return false;
                        }
                     break;
                }
            }
        }
    }
    return true;
}

function formatearFecha(e) {
    if(e.value.test(/^\d{4}$/)) {
        e.value = e.value + '-01-01'
        return;
    } else if(e.value.test(/^\d{4}-\d{2}$/)) {
        e.value = e.value + '-01'
    }
}

function cambiarEstadoPreinspeccion(id, oldState, newState, URL, clean, state) {
    var i=0;    
    new Request.JSON({url: URL,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
             if(eval("("+responseText+")")=='') {
                if(clean)
                  for(i=0; i<clean.length; i++) {
                    if($(clean[i])){
                        $(clean[i]).empty();
                        $(clean[i]).setProperty('html', '------');
                    }
                  }
                 if($(state)) {
                     $(state).empty();
                     $(state).setProperty('html', newState);
                 }
             } else {
                 var error = eval("("+responseText+")")
                 alert(error.error)
             }
         },
         data:'id='+id+'&oldState='+oldState+'&newState='+newState
     }).send();
}

function addTextFields(tBod, nam, e1, form, sufVal) {
    var e = null;
    var es = $$(e1);
    var tBody = $(tBod);
    var trC, tdC;
    var label, text;
    var i,j=0;
    for (i=0; i<es.length; i++) {
        if(es[i].type == 'select-multiple') {
            e = es[i];
            break;
        }
    }
    if(tBody && e) {
        for(i=0; i<e.options.length; i++) {
            if($(nam+e.options[i].value))
              form.dispose($(nam+e.options[i].value));
        }
        for(i=0; i<e.options.length; i++) {
            if(e.options[i].selected && e.options[i].value=='ninguno') {
                for(j=0; j<e.options.length; j++) {
                    e.options[j].selected = false;
                }
                tBody.empty();
                return
            }            
        }
        j=0;
        tBody.empty();       
        for(i=0; i<e.options.length; i++) {
            if(j%3==0) {
                trC = new Element('tr');
                trC.inject(tBody);
                
            }
            if(e.options[i].selected) {
                tdC = new Element('td');
                label = new Element('label', {
                    'for': nam+e.options[i].value,
                    html : e.options[i].text
                });
                label.inject(tdC);
                tdC.inject(trC)

                tdC = new Element('td');
                text = new Element('input', {
                    id : nam+e.options[i].value,
                    name: nam+e.options[i].value,
                    title:e.options[i].text,
                    type: "text",
                    'class': "validate['number']"
                });
                if($(nam+sufVal+e.options[i].value))
                    text.value = $(nam+sufVal+e.options[i].value).value;
                text.inject(tdC);
                tdC.inject(trC);
                form.register($(nam+e.options[i].value));
                j++;
            }
        }
    }
}

function loadPreinspeccionAnterior(URL, e) {
    e.form.action = URL;
    e.form.submit();
}

function addFecha(inp, sel) {
    var input = $(inp);
    var select =  $(sel);
    var i;
    var ban = true;
    if(input && select && (select.type == 'select-multiple' || select.type == 'select-one')) {
        for(i=0; i<select.length && ban; i++) {
            if(select.options[i].text==input.value)
                ban=false;
        }

        if(checkfecha(input) && ban) {
            var opt = new Element('option', {
                text: input.value,
                value: input.value                
            });            
            opt.inject(select);
            for(i=0; i<select.length; i++) {
                select.options[i].selected = (i!=0);
            }
            input.value='';
        }
        else alert('Debe ser una fecha valida, formato (yyyy-mm-dd), y no debe estar repetida');
    }
}

function removeFecha(sel) {    
    var select =  $(sel);
    var i;    
    if(select && (select.type == 'select-multiple' || select.type == 'select-one')) {
        for(i=0; i<select.length; i++) {
            if(select.options[i].selected)
                $(select.options[i]).dispose();
        }
    }
}

function selectFecha(select) {
    var i;
    if(select && (select.type == 'select-multiple' || select.type == 'select-one')) {
        for(i=0; i<select.length; i++) {
            select.options[i].selected=(i!=0);
        }
    }
    return true;
}

function updateTipoSubdivision(responseText, sel){
    var tipo = eval("("+responseText+")");
    var select =  $(sel);
    var parent = select.getParent();
    var oldSpans = parent.getChildren('span');
    oldSpans.dispose();
    if(tipo){
        var span = new Element('span',{
            text: tipo.tipo
        });
        span.inject(parent);
    }
}

function clonarTabla(tab, link) {
    var i;
    var hidden = $('numPeticion')
    hidden.value = parseFloat(hidden.value)+1
    var table =  $(tab);
    var parent = table.getParent();
    var a = table.getElement('a');
    a.setStyle('visibility','visible');
    var y = parent.getSize().y;
    var newTable = table.clone();

    var inputs;
    var obs;
    inputs = newTable.getElements('textarea');
    for(i=0;i<inputs.length;i++) {        
        if(inputs[i].hasClass('errors')) 
          inputs[i].removeClass('errors');
        inputs[i].value = '';
        inputs[i].setProperty('title', 'Observacion en queja o reclamo '+hidden.value);
        obs = inputs[i];
    }

    inputs = newTable.getElements('input');
    for(i=0;i<inputs.length;i++) {
        if(inputs[i].type=='text') {
            if(inputs[i].hasClass('errors'))
             inputs[i].removeClass('errors');
            inputs[i].value = '';
            if(inputs[i].getProperty('name')=='fPeticion1') {
                formPreinspeccion.dispose(inputs[i]);                
                inputs[i].setProperty('name', 'fPeticion'+hidden.value);
                inputs[i].setProperty('title', 'Fecha Peticion '+hidden.value);
                formPreinspeccion.register(inputs[i]);
            }
            if(inputs[i].getProperty('name')=='vPeticion1') {
                formPreinspeccion.dispose(inputs[i]);
                inputs[i].setProperty('name', 'vPeticion'+hidden.value);
                inputs[i].setProperty('title', 'Vigencia Peticion '+hidden.value);
                formPreinspeccion.register(inputs[i]);
            }
        }
        else if(inputs[i].type=='radio') {
            inputs[i].setProperty('name', 'P'+hidden.value);
            inputs[i].checked = false;
            inputs[i].addEvent('click', function() {
                regObservacionQueja(obs);
            });
        }
    }

    inputs = newTable.getElements('div');
    for(i=0;i<inputs.length;i++) {
        inputs[i].dispose();
    }
    newTable.inject(parent);
    parent.set('tween', {duration: 'long'});
    newTable.set('opacity',0);
    newTable.fade('in');
    parent.tween('height', (y+table.getSize().y+20));    
    a.setStyle('visibility', 'hidden');
    $(link).setStyle('visibility', 'hidden');
}

function regObservacionQueja(obs) {
    var observ = $(obs);
    if(observ) {
        formPreinspeccion.dispose(observ);
        if(!observ.hasClass("validate['required']"))
           observ.addClass("validate['required']");
        formPreinspeccion.register(observ);
    }    
}

function addBarrio(newBarrio, vereda, barrio, departamento, municipio, URL, URL2, URL3) {
    var oBarrio = $(barrio);
    var oVereda = $(vereda);
    var tipo
    if(oBarrio && oBarrio.checked)
        tipo = 'Barrio'
    else if(oVereda && oVereda.checked)
        tipo = 'Vereda'
    else {
        alert('Debe escoger barrio o vereda')
        return
    }

    var nombre = $(newBarrio);
    if(!nombre || nombre.value=='') {
        alert('Debe ingresar un nombre de barrio/vereda');
        return;
    }

    var dpto = $(departamento)
    if( !dpto || dpto.selectedIndex < 1) {
        alert('Debe elegir un Departamento');
        return;
    }

    var mpio = $(municipio)
    if( !mpio || mpio.selectedIndex < 1) {
        alert('Debe elegir un Municipio');
        return;
    }

    var req = new Request.JSON({url: URL3,
        async:false,
        evalScripts:true,
        onRequest: function(){
            loading(true)
        },
        onComplete: function(){
            loading(false)
        },
        onSuccess: function(responseJSON, responseText) {
            _result = eval("("+responseText+")");
        },
        data:'nombre=' + nombre.value +'&municipioId=' + mpio.options[mpio.selectedIndex].value
        });
    req.send();

    if(_result!='') {
        alert('Ese nombre ya esta registrado para ese municipio');
        _result = ''
        return;
    }
    _result = ''
    new Request.JSON({url: URL,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
            var ver = eval("("+ responseText +")");            
            new Request.JSON({url: URL2,
                async:true,
                evalScripts:true,
                onRequest: function(){
                    loading(true)
                 },
                 onComplete: function(){
                    loading(false)
                 },
                onSuccess: function(responseJSON, responseText) {
                    updateVeredasAdd(responseText, ver.id)
                },
                data:'id='+ver.municipio.id
            }).send();            
         },
         data:'nombre=' + nombre.value+'&tipo='+tipo +'&municipio.id='+ mpio.options[mpio.selectedIndex].value
     }).send();
     nombre.value='';
}

function updateVeredasAdd(e, ver) {    
    var listaVeredas =  eval("(" + e + ")");    
    if (listaVeredas) {
        var rselect = $('subdivisionPolitica.id');

        var l = rselect.length;
        while (l > 0) {
                l--;
                $(rselect.options[l]).dispose();
        }
        var opt;
        opt = new Element('option', {
            text: 'Seleccione un Barrio/Vereda',
            value: 'null'
        });
        opt.inject(rselect);

        // Rebuild the select
        for (var i=0; i < listaVeredas.length; i++) {
            var vereda = listaVeredas[i];
            opt = new Element('option', {
                text: vereda.nombre,
                value: vereda.id
            });
            if(ver == opt.value) {
                opt.selected = true;
            }
            opt.inject(rselect);
        }
    }
}

function checkCCExist(e) {
    var req;
    if(e.value!='') {
         req = new Request.JSON({url: $('URLgetByCC').value,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
            _result = eval("("+responseText+")");
         },
         data:'cc=' + e.value+"&id="+($('id')? $('id').value:'')
        });
        req.send();
    }
    if(_result!='') {
        e.errors.push("El Usuario ya esta registrado, por favor verifique los datos");
        return false;
    } else {
        _result='';
        return true;
    }
}

function checkLoginExist(e) {
    var req;
    if(e.value!='') {
         req = new Request.JSON({url: $('URLgetByLogin').value,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
            _result = eval("("+responseText+")");
         },
         data:'login=' + e.value+"&id="+($('id')? $('id').value:'')
        });
        req.send();
    }
    if(_result!='') {
        e.errors.push("Ese login ya esta registrado, por favor verifique los datos");
        return false;
    } else {
        _result='';
        return true;
    }
}

function checkNombreGralExist(e) {
    var req;
    if(e.value!='') {
         req = new Request.JSON({url: $('URLgetByNombre').value,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
            _result = eval("("+responseText+")");
         },
         data:'nombre=' + e.value+($('id')? ("&id="+$('id').value):'')+($('otroId')? ("&otroId="+$('otroId').value):'&-1')
        });
        req.send();
    }
    if(_result!='') {
        e.errors.push("El Nombre ya esta registrado<br/>Por favor verifique los datos");
        return false;
    } else {
        _result='';
        return true;
    }
}

function checkCodigoGralExist(e) {
    var req;
    if(e.value!='') {
         req = new Request.JSON({url: $('URLgetByCodigo').value,
         async:false,
         evalScripts:true,
         onRequest: function(){
            loading(true)
         },
         onComplete: function(){
            loading(false)
         },
         onSuccess: function(responseJSON, responseText) {
            _result = eval("("+responseText+")");
         },
         data:'codigo=' + e.value+($('id')? ("&id="+$('id').value):'')
        });
        req.send();
    }
    if(_result!='') {
        e.errors.push("El Código ya esta registrado<br/>Por favor verifique los datos");
        return false;
    } else {
        _result='';
        return true;
    }
}

function changeOtroValue(e, otro) {
    var el = $(e);
    var other = $(otro);
    if(other && el) {
        if(el.type!='select-one' || el.type!='select-multiple') {
            other.value = el.options[el.selectedIndex].value;
        }
    }
}

function changeSelect(sel, value){
    var select = $(sel);
    var i;
    if(select && (select.type!='select-one' || select.type!='select-multiple')) {
        for(i=0;i<select.length; i++) {
            if(select.options[i].value==value) {
                select.options[i].selected = true;
                select.fireEvent('change');
            }
        }
    }
}

function verOpcion(dpto, mpio, autoridadAmbiental, op) {
    var depar = $(dpto);
    var munic = $(mpio);
    var autoridad = $(autoridadAmbiental);
    if(depar && munic && autoridad) {
        switch(op){
            case 0:
                depar.setStyle('display','none');
                munic.setStyle('display','none');
                autoridad.setStyle('display','none');
             break;
            case 1:
                depar.setStyle('display','inline-block');
                munic.setStyle('display','none');
                autoridad.setStyle('display','none');
             break;
            case 2:
                depar.setStyle('display','none');
                munic.setStyle('display','inline-block');
                autoridad.setStyle('display','none');
             break;
            case 3:
                depar.setStyle('display','none');
                munic.setStyle('display','none');
                autoridad.setStyle('display','inline-block');
             break;
        }
    }
}

function verReporte(a1, formStr) {
    var form1 = $(formStr);
    var a = $(a1);
    form.dispose($('departamento'));
    form.dispose($('municipio.id'));

    if($('tipo1') && $('tipo1').checked && form1.reportCode.options[form1.reportCode.selectedIndex].value!='null') {
        form1._file.value = form1.reportCode.options[form1.reportCode.selectedIndex].value+$('tipo1').value;
        form1._format.value=a.title;
        form1.setProperty('name', form1._file.value);
        form1.submit();
    } else if($('tipo2') && $('tipo2').checked && form1.reportCode.options[form1.reportCode.selectedIndex].value!='null') {
        form1._file.value = form1.reportCode.options[form1.reportCode.selectedIndex].value+$('tipo2').value;
        form1._format.value=a.title;
        form1.setProperty('name', form1._file.value);
        $('id').value =$('departamentoU').options[$('departamentoU').selectedIndex].value;
        form.dispose($('departamentoU'));
        form1.submit();
    } else if($('tipo3') && $('tipo3').checked && form1.reportCode.options[form1.reportCode.selectedIndex].value!='null') {
        form1._file.value = form1.reportCode.options[form1.reportCode.selectedIndex].value+$('tipo3').value;
        form1._format.value=a.title;
        form1.setProperty('name', form1._file.value);
        $('id').value =$('municipio.id').options[$('municipio.id').selectedIndex].value;
        form.register($('departamento'));
        form.register($('municipio.id'));
        form1.submit();
    } else if($('tipo4') && $('tipo4').checked && form1.reportCode.options[form1.reportCode.selectedIndex].value!='null') {
        form1._file.value = form1.reportCode.options[form1.reportCode.selectedIndex].value+$('tipo4').value;
        form1._format.value=a.title;
        form1.setProperty('name', form1._file.value);
        $('id').value =$('autoridad.id').options[$('autoridad.id').selectedIndex].value;
        form1.submit();
    }    
}

function checkimages(e) {
    if(!e.value.test(/^.*\.((jpg)|(gif)|(png)|)$/)) {
        e.errors.push("El archivo debe ser una imagen con extension jpg, gif o png");
        return false;
    }
    return true;
}

function activarNoAplica(n1, n2, na) {
    na.checked = n1.checked && n2.checked;
}

