var d = document;
var RollActual  = null;       //  obj al la imagen que está haciendo rallOver actualmente
var RollActualsrc = null;    // src de la imagen original del obj RallActual
var carpeta_imagenes = "./Imagenes/ro/";        // Carpeta donde s e guardan las imagenes
                                             // OJO Poner la barra final en el nombre de la carpeta
var tipo_imagen = ".png"          // extension a usa en el nombre de las imagenes
var ImagenesRo  = Array();        // Array con todas la imagenes que se precargan
var total_imagenes    = 0;
var imagenes_cargadas = 0;



var mantenido   = false;
var src_orig_mantenido = null;
var obj_orig_mantenido = null;

//  Realiza la precarga de imagenes
//   ej : precargarImagenes(img1, img2.....imgn);
function precargaImagenes() {

    var Argumentos = precargaImagenes.arguments;

    for(var i=0; i < Argumentos.length; i++) {
        //alert(Argumentos[i]);
        indiceTabla = ImagenesRo.length;
        d.ImagenesRo[indiceTabla]     = new Image();
        d.ImagenesRo[indiceTabla].src = carpeta_imagenes +
                              Argumentos[i] +
                              tipo_imagen;
    }

}

// Como argumento se debe pasar el nombre de la foto con el path completo
function precargaImagenesNombre() {

    var Argumentos    = precargaImagenesNombre.arguments;
    total_imagenes    = Argumentos.length;
    //alert('total_imagenes ' + total_imagenes + '<br>');
    imagenes_cargadas = 0;
    //ImagenesRo = new Array(Argumentos.length);

    for(var i=0; i < total_imagenes; i++) {
        //alert(Argumentos[i]);
        indiceTabla = ImagenesRo.length;
        ImagenesRo[indiceTabla]     = new Image();
        ImagenesRo[indiceTabla].src = Argumentos[i];
        // Esperar a que se cargue la imagen
        // alert("Cargando imagen: " + Argumentos[i]);
        setTimeout('controlPrecargaImagen('+indiceTabla+')' ,i*100);
    }

}
// indice es el indice al array ImagenesRo
function controlPrecargaImagen(indice) {

    //d.write('cargando imagen ' + ImagenesRo[indice].src + '<br>');
    if ( ! ImagenesRo[indice].complete ) {
        setTimeout('controlPrecargaImagen('+indice+')', 100);
    }
    else {
        imagenes_cargadas++;
        //document.write("imagenes_cargadas: " + imagenes_cargadas + '<br>');
        //alert ("imagen " + d.ImagenesRo[indice].src + " precargada.");
    }

}
function inicioRO(objImagen) {
    // Las imagenes de roll over estan en una carpeta determinada y
    //                           se llaman igual que la existente
    //objImagen   = d.images[nomImagen];
    //alert ("inicioRO")
    ponerDedo(objImagen);

    if ( mantenido && RollActual == obj_orig_mantenido ) {
        return;
    }
    RollActual    = objImagen;            // guardar los datos del src original
    RollActualsrc = objImagen.src;        // guardar los datos del src original
    ultima_pos    = objImagen.src.lastIndexOf("/") + 1;
    nombreImg     = objImagen.src.substring(ultima_pos,objImagen.src.length);
    pathImg       = objImagen.src.substring(0,ultima_pos);
    objImagen.src = pathImg + "ro/" + nombreImg;
    //alert("NombreFic: " + nombreImg +  "\nPath Fichero: " + pathImg);

}

function finRO() {

    if (RollActual == null) {
        return;
    }

/**     alert ( "finRo(): " +
             "\n\tmantenido         : " + mantenido);
**/
    if ( mantenido ) {
        if ( RollActual == obj_orig_mantenido ) {
            return;
        }
    }
    // alert ("finRO: d.RollActualsrc = " + d.RollActualsrc);
    RollActual.src = RollActualsrc;

    RollActual      = null;
    RollActualsrc   = null;
}

function mantenerRo() {

/**     alert ( "mantenerRo(): " +
             "\n\tmantenido         : " + mantenido +
             "\n\tobj_orig_mantenido: " + obj_orig_mantenido +
             "\n\tsrc_orig_mantenido: " + src_orig_mantenido +
             "\n\RollActual         : " + RollActual         +
             "\n\RollActualsrc      : " + RollActualsrc
             );
**/

    obj_orig_mantenido = RollActual;
    src_orig_mantenido = RollActualsrc;
    mantenido = true;
     alert ( "salida de mantenerRo(): " +
             "\n\tmantenido         : " + mantenido +
             "\n\tobj_orig_mantenido: " + obj_orig_mantenido +
             "\n\tsrc_orig_mantenido: " + src_orig_mantenido +
             "\n\RollActual         : " + RollActual         +
             "\n\RollActualsrc      : " + RollActualsrc
             );

}

function finMantenerRo() {

/**    alert ( "finMantenerRo(): " +
            "\n\tmantenido         : " + mantenido +
            "\n\tobj_orig_mantenido: " + obj_orig_mantenido +
            "\n\tsrc_orig_mantenido: " + src_orig_mantenido
            );
**/            
    if ( mantenido == false ) {
        return;
    }
    obj_orig_mantenido.src = src_orig_mantenido
    obj_orig_mantenido = null;
    src_orig_mantenido = null;
    mantenido = false;

}
//****************************************************************************
//****************************************************************************
// RollMenu:
//     Actua igual que un ro imagen normal pero al sacar el cursor de
//   boton este se mantiene en estado roll hasta que se entra en otro
//   opcion del mismo menú
//      Totas las variables y/o funcionesde este apartado empiezan por rm_
//****************************************************************************
var rm_obj_opcion_activa = null;         // Objeto que está activado actualmente
var rm_obj_opcion_activa_src = null;     // Imagen original del objeto activado
var rm_carpeta_img   = "Imagenes/";      // Carpeta donde estan los imagenes normales
var rm_carpeta_roll  = "Imagenes/ro/";   // Carpeta donde estan los imagenes ro
var rm_carpeta_sele  = "Imagenes/selec/";   // Carpeta donde estan los imagenes ro

function rm_activarOpcion(objImagen) {

    ponerDedo(objImagen);

    if ( rm_obj_opcion_activa != null ) {
        rm_desactivarOpcion();
    }

    rm_obj_opcion_activa     = objImagen;            // guardar los datos del src original
    rm_obj_opcion_activa_src = objImagen.src;        // guardar los datos del src original
    ultima_pos               = objImagen.src.lastIndexOf("/") + 1;
    nombreImg                = objImagen.src.substring(ultima_pos,objImagen.src.length);
//    pathImg       = objImagen.src.substring(0,ultima_pos);
    objImagen.src            = rm_carpeta_roll + nombreImg;
    //alert("NombreFic: " + nombreImg +  "\nPath Fichero: " + pathImg);

}

function rm_desactivarOpcion() {

    if ( rm_obj_opcion_activa == null ) {
        return;
    }

    rm_obj_opcion_activa.src = rm_obj_opcion_activa_src;

    rm_obj_opcion_activa      = null;
    rm_obj_opcion_activa_src  = null;

}

//****************************************************************************
//****************************************************************************
var RollColorObj      = null;     //  obj  que está haciendo rollOverColor actualmente
var RollColorOriginal = null;    // Color original del objeto

function inicioROColor(que_obj,que_color) {

    ponerDedo(que_obj);

    RollColorObj      = que_obj;
    RollColorOriginal = RollColorObj.style.color;            // guardar los datos del src original
    //alert("RollColorActual" + RollColorActual);
    RollColorObj.style.color = que_color
    return false;

}

function finROColor() {

    if (RollColorObj == null) {
        return;
    }
    RollColorObj.style.color = RollColorOriginal

    RollColorOriginal = null;
    RollColorObj      = null;
}



//****************************************************************************
//****************************************************************************
// Se encarga de poner como cursor la imagen del dedo
function ponerDedo($en_que_objeto) {

    //alert("Entro en poner dedo");
    // Detectar el navegador
    getById = document.getElementById?true:false;
    layers = document.layers?true:false;
    ns4 = ((this.layers) && (!this.getById));
    ns6 = ((navigator.userAgent.indexOf('Netscape6') != -1) && (this.getById));
    moz = ((navigator.appName.indexOf('Netscape') != -1) && (this.getById) && (!this.ns6));
    ie  = ((!this.layers) && (this.getById) && (!(this.ns6 || this.moz)));
    opera = window.opera?true:false;

    var icono = 'pointer';
    if ( ie ) {
        icono = 'hand';
    }

    var c_actual = $en_que_objeto.style.cursor;
    if ( c_actual == icono ) {
        //alert("Ya es igual");
        return true;
    }
    //alert("NO es igual");

    $en_que_objeto.style.cursor = icono;
    return true;

}
