﻿/* **************************************************************************
 * INICIO. CARGA DE DATOS DE LOS COMBOS
 ****************************************************************************/
//Inicio de la pagina
function iniciarPaginaSelect(){
    //Se crea la pagina con los combos
	generarSelectForm();
    
    //Limpiamos todos los datos de los SELECT cargados anteriormente
	limpiarSelects();
	ocultarTrs();

	//Seleccionamos las marcas
	mostrarMarcas();

}

function contInicio1(){
	
	//Seleccionamos las companias
	mostrarCias();

}


//Recarga de los datos al inicio de la pagina
function reiniciarPagina(parametros){
	
	//Se crea la pagina con los combos
	generarSelectForm();
	
    var param = parametros.split('&');
    var p;
    for(var a=0;a<param.length;a++){
        p = param[a].split('=');
        if(p.length>1)
            MM_findObj(p[0]).value=p[1];
    }
       
    mostrarDatosVehiculo();
    
    //cargamos los combos de años
    selectedByText(MM_findObj('slc_annoNacimientoCH'),MM_findObj('annoNacimientoCH').value);
	selectedByText(MM_findObj('slc_annoNacimientoCO'),MM_findObj('annoNacimientoCO').value);
	
	onChangeANac(MM_findObj('slc_annoNacimientoCH'));
	onChangeANac(MM_findObj('slc_annoNacimientoCO'));    
    
    //dejamos seleccionada la opcion de los SELECT del formulario
	var elems;
	var nElem;
	var elem;
	elems = document.getElementsByTagName('select');
	for(nElem=0;nElem<elems.length;nElem++){
	    elem=elems[nElem];
	    var id=elem.id;
	    var text = MM_findObj(elem.id.replace('slc_','')).value;
	    
	    selectedByText(elem,text);
	}
	
	//dejamos seleccionada la opcion de los RADIO del formulario
	elems = document.getElementsByTagName('input');
	for(nElem=0;nElem<elems.length;nElem++){
	    elem=elems[nElem];
    	if(elem.type==="radio"){
    	    var name=elem.name;
    	    var text = MM_findObj(name.replace('rd_','')).value;
    	    if(elem.value === text)
	            elem.checked=true;
	        else    elem.checked=false;
        }else if(elem.type==="text"){
	        elem.value = MM_findObj(elem.name.replace('txt_','')).value;
	    }
	    
	}
	
	
    redimensionar();	
	
	onChangeTipoVentaVeh(MM_findObj('slc_TipoVentaVehiculo'));
	if(document.getElementById('conductorOcasional').value==="S"){
	    showCondOcasional();
        setHeightGeneral(110);
	}else{
	    hiddenCondOcasional();
	    setHeightGeneral(-110);
	}
	onChangeCia(MM_findObj('slc_CodCompaniaAnterior'));
	//onChangeTitular(MM_findObj('slc_annosTitular'));
	//onChangeSinPartes(MM_findObj('slc_annosSinPartes'));
	
	
}

/* **************************************************************************
 * FIN. 
 ****************************************************************************/


/* **************************************************************************
 * INICIO. FUNCIONES DE CONTROL DE SELECT : onChange
 ****************************************************************************/
function onChangeTipoVentaVeh(elSel){

    if(elSel.value=="NU" || elSel.value=="-1") {//Antiguedad coche = oculto
        MM_findObj("tr_slc_antiguedad").className="oculto"+nav;
        MM_findObj("slc_antiguedad").attributes["validar"].value = false;
    }
    else{ //Antiguedad coche = visible
        MM_findObj("tr_slc_antiguedad").className="visible"+nav;
        MM_findObj("slc_antiguedad").attributes["validar"].value = true;
    }
    
}
function onChangeCondOcasional(elSel){
    
    if(elSel.value=="S"){ //Visible
        showCondOcasional();
        setHeightGeneral(110);
//        newHeight = document.getElementById("div_contenido").style.height.replace("px","");
//        newHeight = parseInt(newHeight) + 110;
//        //alert(newHeight);
//        if(newHeight <= heightGeneral + 110)
//            document.getElementById("div_contenido").style.height = newHeight+"px";
    }else{ //oculto
        hiddenCondOcasional();
        setHeightGeneral(-110);
    }
}
function setHeightGeneral(height)
{
    var newHeight;
    newHeight = document.getElementById("div_contenido").style.height.replace("px","");
    newHeight = parseInt(newHeight) + height;
    //alert(newHeight);
    if(height>0){
        if(newHeight <= heightGeneral + 110)
            document.getElementById("div_contenido").style.height = newHeight+"px";
    }else{
        if(newHeight >= heightGeneral)
            document.getElementById("div_contenido").style.height = newHeight+"px";
    }
}

function showCondOcasional(){
    //visible
    MM_findObj("tr_tabla_fNacimientoCO").className="visible"+nav;
    MM_findObj("tr_tabla_fExpedicionCO").className="visible"+nav;
    MM_findObj("tr_rd_sexoCO").className="visible"+nav;
    MM_findObj("tr_slc_EstCivilCO").className="visible"+nav;
    //se marca para que se valide 
    MM_findObj("slc_diaNacimientoCO").attributes["validar"].value = true;
    MM_findObj("slc_mesNacimientoCO").attributes["validar"].value = true;
    MM_findObj("slc_annoNacimientoCO").attributes["validar"].value = true;
    MM_findObj("slc_diaExpedicionCO").attributes["validar"].value = true;
    MM_findObj("slc_mesExpedicionCO").attributes["validar"].value = true;
    MM_findObj("slc_annoExpedicionCO").attributes["validar"].value = true;
    MM_findObj("rd_sexoCO")[0].attributes["validar"].value = true;
    MM_findObj("rd_sexoCO")[1].attributes["validar"].value = true;
    MM_findObj("slc_EstCivilCO").attributes["validar"].value = true;
}

function hiddenCondOcasional(){
     //oculto
    MM_findObj("tr_tabla_fNacimientoCO").className="oculto"+nav;
    MM_findObj("tr_tabla_fExpedicionCO").className="oculto"+nav;
    MM_findObj("tr_rd_sexoCO").className="oculto"+nav;
    MM_findObj("tr_slc_EstCivilCO").className="oculto"+nav;
    //se marca para que se valide 
    MM_findObj("slc_diaNacimientoCO").attributes["validar"].value = false;
    MM_findObj("slc_mesNacimientoCO").attributes["validar"].value = false;
    MM_findObj("slc_annoNacimientoCO").attributes["validar"].value = false;
    MM_findObj("slc_diaExpedicionCO").attributes["validar"].value = false;
    MM_findObj("slc_mesExpedicionCO").attributes["validar"].value = false;
    MM_findObj("slc_annoExpedicionCO").attributes["validar"].value = false;
    MM_findObj("rd_sexoCO")[0].attributes["validar"].value = false;
    MM_findObj("rd_sexoCO")[1].attributes["validar"].value = false;
    MM_findObj("slc_EstCivilCO").attributes["validar"].value = false;

}

function onChangeCia(elSel)
{
   var codCia = document.getElementById("CodCompaniaAnterior").value;
   if(elSel.value=="C9999" || elSel.value=="-1" || codCia=="C9999" || codCia=="-1" ) { 
        MM_findObj("tr_slc_annosSinPartes").className="oculto"+nav;
        MM_findObj("slc_annosSinPartes").attributes["validar"].value = false;
        MM_findObj("tr_slc_annosCompania").className="oculto"+nav;
        MM_findObj("slc_annosCompania").attributes["validar"].value = false;
        MM_findObj("tr_rd_TienesPoliza").className="oculto"+nav;
        MM_findObj("rd_TienesPoliza")[0].attributes["validar"].value = false;
        MM_findObj("rd_TienesPoliza")[1].attributes["validar"].value = false;
        MM_findObj("tr_txt_Poliza").className="oculto"+nav;
        MM_findObj("txt_Poliza").attributes["validar"].value = false;
    }else { //visible
        MM_findObj("tr_slc_annosSinPartes").className="visible"+nav;
        MM_findObj("slc_annosSinPartes").attributes["validar"].value = true;
        MM_findObj("tr_slc_annosCompania").className="visible"+nav;
        MM_findObj("slc_annosCompania").attributes["validar"].value = true;
        MM_findObj("tr_rd_TienesPoliza").className="visible"+nav;
        MM_findObj("rd_TienesPoliza")[0].attributes["validar"].value = true;
        MM_findObj("rd_TienesPoliza")[1].attributes["validar"].value = true;
        if(document.getElementById('TienesPoliza').value=="N"){
            MM_findObj("tr_txt_Poliza").className="oculto"+nav;
            MM_findObj("txt_Poliza").attributes["validar"].value = false;
            MM_findObj("txt_Poliza").value="";
        }else if(document.getElementById('TienesPoliza').value=="S"){ //visible
            MM_findObj("tr_txt_Poliza").className="visible"+nav;
            MM_findObj("txt_Poliza").attributes["validar"].value = true;
        }
    }

}
function onChangeTitular(elSel)
{
    var selCia = MM_findObj("slc_CodCompaniaAnterior");
    if(elSel.value!="0" && (selCia.value=="C9999" || selCia.value=="-1")){ //oculto
        MM_findObj("tr_slc_tomador").className="oculto"+nav;
        MM_findObj("slc_tomador").attributes["validar"].value = false;
    }else {//visible
        MM_findObj("tr_slc_tomador").className="visible"+nav;
        MM_findObj("slc_tomador").attributes["validar"].value = true;
    }
}
function onChangePoliza(elSel)
{
    if(elSel.value=="S"){ //Visible
        MM_findObj("tr_txt_Poliza").className="visible"+nav;
        MM_findObj("txt_Poliza").attributes["validar"].value = true;
        MM_findObj("txt_Poliza").value="";
    }else{ //oculto
        MM_findObj("tr_txt_Poliza").className="oculto"+nav;
        MM_findObj("txt_Poliza").attributes["validar"].value = false;
    }
}

/*
function onChangeSinPartes(elSel){
    switch(elSel.value){
        case '0': //menos de 1 año
            partesMenos1Anno();
            break;
        case '1': //1año
            partes1Anno();
            break;
        case '2':case '3':case '4': //2,3,4 años
            partes2a4Annos();
            break;
        default: //se ocultan todos
            partesMas5Annos();
            break;
    }
}

function partesMenos1Anno(){
    MM_findObj("tr_slc_partesUltimoAnno").className="visible"+nav;
    MM_findObj("tr_slc_partesAnnosAnt").className="visible"+nav;
    MM_findObj("tr_slc_partesMas2Annos").className="visible"+nav;
    MM_findObj("tr_slc_partesUlt2Annos").className="oculto"+nav;
    MM_findObj("tr_slc_partesUlt5Annos").className="oculto"+nav;
    //se modifica la validacion de todos los campos
    MM_findObj("slc_partesUltimoAnno").attributes["validar"].value=true;
    MM_findObj("slc_partesAnnosAnt").attributes["validar"].value=true;
    MM_findObj("slc_partesMas2Annos").attributes["validar"].value=true;
    MM_findObj("slc_partesUlt2Annos").attributes["validar"].value=false;
    MM_findObj("slc_partesUlt5Annos").attributes["validar"].value=false;
}

function partes1Anno(){
    MM_findObj("tr_slc_partesUltimoAnno").className="oculto"+nav;
    MM_findObj("tr_slc_partesAnnosAnt").className="oculto"+nav;
    MM_findObj("tr_slc_partesUlt2Annos").className="visible"+nav;
    MM_findObj("tr_slc_partesMas2Annos").className="visible"+nav;
    MM_findObj("tr_slc_partesUlt5Annos").className="oculto"+nav;
    //se modifica la validacion de todos los campos
    MM_findObj("slc_partesUltimoAnno").attributes["validar"].value=false;
    MM_findObj("slc_partesAnnosAnt").attributes["validar"].value=false;
    MM_findObj("slc_partesUlt2Annos").attributes["validar"].value=true;
    MM_findObj("slc_partesMas2Annos").attributes["validar"].value=true;
    MM_findObj("slc_partesUlt5Annos").attributes["validar"].value=false;
}

function partes2a4Annos(){
    MM_findObj("tr_slc_partesUltimoAnno").className="oculto"+nav;
    MM_findObj("tr_slc_partesAnnosAnt").className="oculto"+nav;
    MM_findObj("tr_slc_partesUlt2Annos").className="oculto"+nav;
    MM_findObj("tr_slc_partesMas2Annos").className="oculto"+nav;
    MM_findObj("tr_slc_partesUlt5Annos").className="visible"+nav;
    //se modifica la validacion de todos los campos
    MM_findObj("slc_partesUltimoAnno").attributes["validar"].value=false;
    MM_findObj("slc_partesAnnosAnt").attributes["validar"].value=false;
    MM_findObj("slc_partesUlt2Annos").attributes["validar"].value=false;
    MM_findObj("slc_partesMas2Annos").attributes["validar"].value=false;
    MM_findObj("slc_partesUlt5Annos").attributes["validar"].value=true;
}

function partesMas5Annos(){
    MM_findObj("tr_slc_partesUltimoAnno").className="oculto"+nav;
    MM_findObj("tr_slc_partesAnnosAnt").className="oculto"+nav;
    MM_findObj("tr_slc_partesUlt2Annos").className="oculto"+nav;
    MM_findObj("tr_slc_partesMas2Annos").className="oculto"+nav;
    MM_findObj("tr_slc_partesUlt5Annos").className="oculto"+nav;
    //se modifica la validacion de todos los campos
    MM_findObj("slc_partesUltimoAnno").attributes["validar"].value=false;
    MM_findObj("slc_partesAnnosAnt").attributes["validar"].value=false;
    MM_findObj("slc_partesUlt2Annos").attributes["validar"].value=false;
    MM_findObj("slc_partesMas2Annos").attributes["validar"].value=false;
    MM_findObj("slc_partesUlt5Annos").attributes["validar"].value=false;
}
*/
function onChangeANac(elSel){
    var _conductor=elSel.id.substring(elSel.id.length-2);
    
    if(elSel.value!=="-1"){
        var annosExp = new Array();
        var annoNac = elSel.value;
        for(iAnnos=parseInt(annoNac)+18;iAnnos<=annoActual;iAnnos++){
            annosExp.push({
                value: ""+iAnnos,
                label: ""+iAnnos});
        }
        annosExp.ordenar('label');
        annosExp.unshift (_anno);

        generarSelect(annosExp,'slc_annoExpedicion'+_conductor)
  }else{
        var sel = 'slc_annoExpedicion'+_conductor;
        MM_findObj(sel).options.length=1;
  }
}

/* **************************************************************************
 * FIN. 
 ****************************************************************************/


/* **************************************************************************
 * INICIO. FUNCIONES DE CREACION/NAVEGACION DEL FORMULARIO
 ****************************************************************************/
function generarSelectForm(){
	for(iSel=0;iSel<apartadosSelect.length;iSel++){
	    slc=apartadosSelect[iSel].select;
		//para cada apartado se genera su HTML
		generarTrHtml(apartadosSelect[iSel]);
		total = slc.length;
		for(jSel=0;jSel<total;jSel++){
		    //para cada select se crean sus opciones
		    cargarSelects(slc[jSel]);
		}
	}
}

function cargarSelects(currentSelect){
    var dSel = currentSelect.datosSelect;
    var _tipoCampo = currentSelect.campo.split('_')[0]
    if(dSel!=null){
        switch(_tipoCampo){
            case 'slc':
                generarSelect(currentSelect.datosSelect,currentSelect.campo);
                break;
            case 'tabla':
                for(var o=0;o<dSel.length;o++)
	                if(dSel[o].datosSelect!=null) 
	                    generarSelect(dSel[o].datosSelect,dSel[o].campo);
                break;
            default:break;
        }
	}else{
	    if(currentSelect.funcion!=null)  
	        currentSelect.funcion();
	}
}

function ocultarTodo(){
	for(i=0;i<apartadosSelect.length;i++){
		MM_findObj(apartadosSelect[i].nombre).style.display="none";
	}
}

function limpiarSelects()
{
	//dejamos seleccionada la primera opcion de todos los SELECT del formulario
	var elems;
	var nElem;
	var elem;
	elems = document.getElementsByTagName('select');
	for(nElem=0;nElem<elems.length;nElem++){
	    elem=elems[nElem];
	    elem.selectedIndex=0;
	}
	//desmarcamos las opciones de los RADIO
	elems = document.getElementsByTagName('input');
	for(nElem=0;nElem<elems.length;nElem++){
	    elem=elems[nElem];
	    if(elem.type==="radio")
	        elem.checked=false;
        else if(elem.type==="text")
	        elem.value="";
	}
	
	//y limpiamos combos dependientes
	limpiarSelectsDependientes("slc_marca");
	
}

function limpiarSelectsDependientes(nombreCampo)
{
    switch(nombreCampo.toLowerCase()){
        case 'slc_marca':
            if(MM_findObj("slc_modelo")!=null && typeof(MM_findObj("slc_modelo").options)!="undefined")
                generarSelect(vacio,"slc_modelo");  //MM_findObj("slc_modelo").options.length=0;
         case 'slc_modelo':
            if(MM_findObj("slc_motor")!=null && typeof(MM_findObj("slc_motor").options)!="undefined")
                generarSelect(vacio,"slc_motor");  //MM_findObj("slc_motor").options.length=0;
         case 'slc_motor':
            if(MM_findObj("slc_potcv")!=null && typeof(MM_findObj("slc_potcv").options)!="undefined")
                generarSelect(vacio,"slc_potcv");  //MM_findObj("slc_potcv").options.length=0;
         case 'slc_potcv':
            if(MM_findObj("slc_puerta")!=null && typeof(MM_findObj("slc_puerta").options)!="undefined")
                generarSelect(vacio,"slc_puerta");  //MM_findObj("slc_puerta").options.length=0;
         case 'slc_puerta':
            if(MM_findObj("slc_version")!=null && typeof(MM_findObj("slc_version").options)!="undefined")
                generarSelect(vacio,"slc_version");  //MM_findObj("slc_version").options.length=0;
        default: break;
    }
}

function ocultarTrs(){
    for(i=0;i<apartadosSelect.length;i++){
        slc=apartadosSelect[i].select;
	    total = slc.length;
	    for(j=0;j<total;j++){
		    if(slc[j].campo!=null){
		        var _tipoCampo = slc[j].campo.split('_')[0]
                switch(_tipoCampo){
                    case 'slc':
                        var elTr = MM_findObj('tr_'+slc[j].campo);
		                if(elTr!=null && typeof(slc[j].visibilidad)!="undefined" && slc[j].visibilidad!=null)
                            elTr.className=slc[j].visibilidad+nav;
                        break;
                    case 'tabla':
                        for(var o=0;o<slc[j].datosSelect.length;o++)
                            dSel = slc[j].datosSelect[o];
                            if(dSel.campo!=null) {
                                var elTr = MM_findObj('tr_'+dSel.campo);
		                        if(elTr!=null && typeof(dSel.visibilidad)!="undefined" && dSel.visibilidad!=null)
                                    elTr.className=dSel.visibilidad+nav;
                            }
                        break;
                    case 'txt': //campo cp
                        break;
                    case 'rd': //campo radio button
                        break;
                    default:break;
                }
		        var elTr = MM_findObj('tr_'+slc[j].campo);
		        if(elTr!=null && typeof(slc[j].visibilidad)!="undefined" && slc[j].visibilidad!=null)
                    elTr.className=slc[j].visibilidad+nav;
            }   
	    }
	}
    
}

/* **************************************************************************
 * FIN. 
 ****************************************************************************/


/* **************************************************************************
 * INICIO. TRATAMIENTO DE DATOS ALMACENADOS 
 ****************************************************************************/
function guardarValor(elem){

    limpiarSelectsDependientes(elem.name);
    
    var val = "";
    var splitElem = elem.name.split('_');
    var nombreCampo= splitElem[1];
    if(nombreCampo === 'marca' || nombreCampo==='version'){
        var index=elem.selectedIndex;
        val = elem[index].text;
        if(nombreCampo==='version'){
            if(index>0){
                val = arrayVersiones[index-1].version;
                //MM_findObj('version').value = arrayVersiones[index-1].version;
                MM_findObj('feclan').value = arrayVersiones[index-1].feclan.substr(0,4);
                //MM_findObj('motor').value = arrayVersiones[index-1].motor;
                MM_findObj('potcv').value = limpiarPotencia(arrayVersiones[index-1].potcv);
                MM_findObj('puerta').value = arrayVersiones[index-1].puerta;
                MM_findObj('plazas').value = arrayVersiones[index-1].plazas;
                MM_findObj('codtip').value = arrayVersiones[index-1].codtip;
                MM_findObj('codveh').value = arrayVersiones[index-1].value; //codveh;
            }
            else{
                val = "";
                MM_findObj('feclan').value = "";
                MM_findObj('potcv').value = "";
                MM_findObj('puerta').value = "";
                MM_findObj('plazas').value = "";
                MM_findObj('codtip').value = "";
                MM_findObj('codveh').value = "";
            }
        }
    }
    else{
        val = elem.value;
        if(nombreCampo==='CodPostalCirculacion' || nombreCampo==='Localidad' || nombreCampo==='CP'){
            val = elem.value;
        }
    }
    
    MM_findObj(nombreCampo).value=deformatLabel(nombreCampo,val);
   
}
function validarCP(cp){
    if(cp.length==5){
		if(isNaN(cp)){
			txt = 'El c&oacute;digo postal es incorrecto. Debe ser un n&uacute;mero de 5 digitos.'
			alert(limpiarCadena(txt, HToU));
		}else{
			MM_findObj('CodPostalCirculacion').value=cp;
            
            cod = cp.substr(0,2);
			//cod = Math.abs(cod);
			tb='mtprov';
			parametros='cod_postal='+cod;
	        obtenerRequest('consultas/obtenerLista.aspx', parametros, validarCPMunicipio, tb, 'provincia');
		}
    }
}

function validarCPMunicipio(){
	
	res=false;
    xmldoc = http_request.responseXML;
    if(xmldoc!=null)
        if(xmldoc.getElementsByTagName('root').item(0).childNodes.length>0) 
            res = true;
		
	if(!res){
		MM_findObj('Localidad').value ='';
		txt = 'C&oacute;digo postal incorrecto. No corresponde a ninguna provincia espa&ntilde;ola.';
		alert(limpiarCadena(txt, HToU));
	}
	else{
	    var localidad = xmldoc.getElementsByTagName('root').item(0).childNodes.item(0).attributes.getNamedItem('provincia').value;
    	MM_findObj('txt_Localidad').value=localidad;
	    MM_findObj('Localidad').value=localidad;
	}
}

function comprobarFormulario(){
    var isValid=comprobarRealizado();
    if(isValid){
        formatearFechas();
        document.forms[0].submit();
    }else   
        openAlert('Todos los campos son obligatorios.');

}
function comprobarRealizado(){
    var bRealizado=true;
    var bChecked=false;
    
    for(iReal=0;iReal<apartadosSelect.length;iReal++)
    {
        var datos=apartadosSelect[iReal].select;
        for(var iDat=0;iDat<datos.length;iDat++){
            var _tipoCampo = datos[iDat].campo.split('_')[0]
            switch(_tipoCampo){
                case 'slc': case 'txt':
                    if(MM_findObj(datos[iDat].campo).attributes["validar"].value==="true"
                        && (MM_findObj(datos[iDat].campo).value=="" || MM_findObj(datos[iDat].campo).value=="-1"))
                    {
                        if(datos[iDat].campo!="slc_annosSinPartes"){
                            MM_findObj(datos[iDat].campo).className = MM_findObj(datos[iDat].campo).className+" obli";
                            bRealizado = false;
                            break;
                        }
                    }
                    else
                        MM_findObj(datos[iDat].campo).className = MM_findObj(datos[iDat].campo).className.replace("obli","");
                    break;
                case 'tabla':
                    for(var o=0;o<datos[iDat].datosSelect.length;o++){
                        dSel = datos[iDat].datosSelect[o];
                        if(MM_findObj(dSel.campo).attributes["validar"].value==="true"
                            && (MM_findObj(dSel.campo).value==="" || MM_findObj(dSel.campo).value==="-1") )
                        {
                            MM_findObj(dSel.campo).className = MM_findObj(dSel.campo).className+" obli";
                            bRealizado = false;
                        }
                        else
                            MM_findObj(dSel.campo).className = MM_findObj(dSel.campo).className.replace("obli","");
                    }
                    break;
                case 'rd':
                    elRadio = MM_findObj(datos[iDat].campo);
                    for(var e=0;e<elRadio.length;e++){
                        if(elRadio[e].attributes["validar"].value==="false") bChecked=true;
                        else if(elRadio[e].checked) bChecked=true;
                    }
                    if(!bChecked)
                    {
                        //MM_findObj(datos[iDat].campo).className+="obli";
                        bRealizado = false;
                        return bRealizado;
                    }
                    break;
                default:break;
            }
        }
    }
    return bRealizado;
}

/* **************************************************************************
 * FIN. 
 ****************************************************************************/
