EXTRAS = {
	addEvent : function(obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, useCapture);
			return true;
		} 
		else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} 
		else {
			return false;
		}
	},	
	getElementsByClass : function(className,node) {
		if(!node) node=document;
		var refTags = document.all ? node.all : node.getElementsByTagName("*");
		var retVal = new Array();
		for(var z=0;z<refTags.length;z++) {
			if(refTags[z].className == className) 
			retVal.push(refTags[z]);
		}
		return retVal; 
	}
}

/**
*Detecta inputs con id "trigger"+n y "slave"+n+m y pone como "disabled" o no
* todos los "slave"+n+m segn el estado de "trigger"+n.
*/
ActivarToggleCheckField = function() {
   var j = 0;
   var continuarTrigger = true;
   var continuarSlave;
   while (continuarTrigger) {
        try {
            var e = document.getElementById("trigger"+j);
            var r = document.getElementById("reset");
            if(e!=null) {
                e.onchange = toggleCheckField;
                e.onfocus = toggleCheckField;
                if(r != null) {
                    r.onclick = toggleResetButton;
                }
            } else {
                continuarTrigger = false;
            }
            var i = 0;
            continuarSlave = true;
            while(continuarSlave) {
                try {
                   f = document.getElementById("slave"+j+i);
                   if(f != null) {
                       f.onchange = toggleCheckField;
                       f.onfocus = toggleCheckField;
                       f.disabled = !e.checked;
                       var k = 0;
                       var continuarSub = true;
                       while(continuarSub) {
                            try {
                                s = document.getElementById("subslave"+j+i+k);
                                if(s != null) {
                                    s.disabled = !f.checked;
                                } else {
                                    continuarSub = false;
                                }
                            } catch (exception) {
                                continuarSub = false;
                            }
                            k++;
                       }
                   } else {
                       continuarSlave = false;
                   }
                } catch (exception) {
                    continuarSlave = false;
                }
                i++;
            }
        } catch (exception) {
            continuarTrigger = false;
        }
        j++;
    }
}

/**
*Funcin del disparador para que los slave se activen y desactiven al activar o
* desactivar el trigger.
*/
toggleCheckField = function() {
   var j = 0;
   var continuarTrigger = true;
   var continuarSlave;
   while (continuarTrigger) { 
        try {
            var e = document.getElementById("trigger"+j);
                if(e==null) {
                   continuarTrigger = false;
                } else {
                    var i = 0;
                    continuarSlave = true;
                    while(continuarSlave) {
                        try {
                           f = document.getElementById("slave"+j+i);
                           if(f != null) {
                               if(e.checked == false) {
                                  tag = f.tagName;
                                  if(tag == "INPUT") {
                                    if(f.type != "checkbox" && 
                                        f.type != "radio") {
                                        f.value = "";
                                    }
                                    if(f.type == "checkbox") {
                                        f.checked = false;
                                    }
                                  } else if(tag == "TEXTAREA") {
                                        f.value = "";
                                  }
                               }
                               f.disabled = !e.checked;
                               var k=0;
                               continuarSub = true;
                               while(continuarSub) {
                                   try {
                                       s = document.getElementById("subslave"+j+i+k);
                                       if(s != null) {
                                           if(f.checked == false) {
                                               tag = s.tagName;
                                               if(tag == "INPUT") {
                                                   if(s.type != "checkbox" && 
                                                    s.type != "radio") {
                                                       s.value = "";
                                                   }
                                                   if(s.type == "checkbox") {
                                                       s.checked = false;
                                                   }
                                               } else if(tag == "TEXTAREA") {
                                                   s.value = "";
                                               }
                                           }
                                           s.disabled = !f.checked;
                                       } else {
                                           continuarSub = false;
                                       }
                                   } catch(exception) {
                                       continuarSub = false;
                                   }
                                   k++;
                               }
                           } else {
                               continuarSlave = false;
                           }
                        } catch (exception) {
                            continuarSlave = false;
                        }
                        i++;
                    }
                }
        } catch (exception) {
            continuarTrigger = false;
        }
        j++;
    }
}

/**
*Funci para que cuando se presine un reset se desactiven todos los slaves
* que existen
*/
toggleResetButton = function () {
    var i = 0;
    var j = 0;
    var continuarTrigger = true;
    var continuarSlave = true;
    var t = document.getElementById("trigger0");
    while(continuarTrigger) {
        t = document.getElementById("trigger"+j);
        if(t != null) {
            i=0;
            continuarSlave = true;
            while(continuarSlave) {
                try {
                   f = document.getElementById("slave"+j+i);
                   if(f != null) {
                       f.disabled = true;
                   } else {
                       continuarSlave = false;
                   }
                } catch (exception) {
                    continuarSlave = false;
                }
                i++;
            }
        } else {
            continuarTrigger = false;
        }
        j++;
    }
}

validarInscripcion = function(idForm) {
    var formu = document.getElementById(idForm);
    if(formu != null) {
        var enviar = true;
        var eleObligatorios = EXTRAS.getElementsByClass("obligatorio", formu);
        if(eleObligatorios != null) {
            for(var i=0; i<eleObligatorios.length && enviar; i++){
                if(!eleObligatorios[i].disabled){
                    if(eleObligatorios[i].type == "checkbox" && !eleObligatorios[i].checked) {
                        tiene = false;
                        for(var j=0; j<eleObligatorios.length && !tiene; j++) {
                            if(eleObligatorios[i].name.replace(/\d/, "") == eleObligatorios[j].name.replace(/\d/, "")
                                && eleObligatorios[j].checked) {
                                tiene = true;
                            }
                        }
                        if(!tiene) {
                            alert("Debe marcar el campo " + eleObligatorios[i].title);
                            enviar = false;
                            eleObligatorios[i].focus();
                        }
                    } else if(eleObligatorios[i].type == "radio" && !eleObligatorios[i].checked) {
                        var rad = document.getElementsByName(eleObligatorios[i].name);
                        tiene = false;
                        for(var j=0; j<rad.length && !tiene; j++) {
                            if(rad[j].checked) {
                                tiene = true;
                            }
                        }
                        if(!tiene) {
                            alert("Debe marcar el campo " + eleObligatorios[i].title);
                            enviar = false;
                            eleObligatorios[i].focus();
                        }
                    } else if(eleObligatorios[i].value == "") {
                        alert("El campo " + eleObligatorios[i].title + " es obligatorio");
                        enviar = false;
                        eleObligatorios[i].focus();
                    }
                }
            }
        }
        if(enviar) {
            formu.submit();
        }
    }
}

/**
*FUNCIONES JAVASCRIPT PARA VALIDAR FECHAS EN FORMATO dd/mm/aaaa
*/
esdigito = function(schr) {
    var scod = schr.charCodeAt(0);
    return ((scod > 47) && (scod < 58));
}

valsep = function(otxt) {
    var bok = false;
    bok = bok || ((otxt.value.charAt(2) == "/") && (otxt.value.charAt(5) == "/"));
    return bok;
}

finmes = function(otxt) {
    var nmes = parseInt(otxt.value.substr(3, 2), 10);
    var nres = 0;
    switch (nmes){
        case 1: nres = 31; break;
        case 2: nres = 29; break;
        case 3: nres = 31; break;
        case 4: nres = 30; break;
        case 5: nres = 31; break;
        case 6: nres = 30; break;
        case 7: nres = 31; break;
        case 8: nres = 31; break;
        case 9: nres = 30; break;
        case 10: nres = 31; break;
        case 11: nres = 30; break;
        case 12: nres = 31; break;
    }
    return nres;
}

valdia = function(otxt){
    var bok = false;
    var ndia = parseInt(otxt.value.substr(0, 2), 10);
    bok = bok || ((ndia >= 1) && (ndia <= finmes(otxt)));
    return bok;
}

valmes = function(otxt){
    var bok = false;
    var nmes = parseInt(otxt.value.substr(3, 2), 10);
    bok = bok || ((nmes >= 1) && (nmes <= 12));
    return bok;
}

valano = function(otxt){
    var bok = true;
    var nano = otxt.value.substr(6);
    bok = bok && (nano.length == 4);
    if (bok){
        for (var i = 0; i < nano.length; i++){
            bok = bok && esdigito(nano.charAt(i));
        }
    }
    return bok;
}

valfecha = function(otxt){
    var bok = true;
    if (otxt.value != ""){
        bok = bok && (valano(otxt));
        bok = bok && (valmes(otxt));
        bok = bok && (valdia(otxt));
        bok = bok && (valsep(otxt));
        if (!bok){
            alert("Formato de fecha invalido.\nFormato correcto (dd/mm/aaaa)");
            otxt.value = "";
            otxt.focus();
        }
    }
}

fechaMayorIgual = function(fec0, fec1) {
    var bRes = false;
    var sDia0 = fec0.substr(0, 2);
    var sMes0 = fec0.substr(3, 2);
    var sAno0 = fec0.substr(6, 4);
    var sDia1 = fec1.substr(0, 2);
    var sMes1 = fec1.substr(3, 2);
    var sAno1 = fec1.substr(6, 4);
    if (sAno0 > sAno1) {
        bRes = true;
    } else {
        if (sAno0 == sAno1) {
            if (sMes0 > sMes1) {
                bRes = true;
            } else {
                if (sMes0 == sMes1) {
                    if (sDia0 >= sDia1) {
                        bRes = true;
                    }
                }
            }
        }
    }
    return bRes;
}

fechaMenorIgual = function(fec0, fec1) {
    var bRes = false;
    var sDia0 = fec0.substr(0, 2);
    var sMes0 = fec0.substr(3, 2);
    var sAno0 = fec0.substr(6, 4);
    var sDia1 = fec1.substr(0, 2);
    var sMes1 = fec1.substr(3, 2);
    var sAno1 = fec1.substr(6, 4);
    if (sAno0 < sAno1) {
        bRes = true;
    } else {
        if (sAno0 == sAno1) {
            if (sMes0 < sMes1) {
                bRes = true;
            } else {
                if (sMes0 == sMes1) {
                    if (sDia0 <= sDia1) {
                        bRes = true;
                    }
                }
            }
        }
    }
    return bRes;
}
/**
*FIN FUNCIONES JAVASCRIPT PARA VALIDAR FECHAS EN FORMATO dd/mm/aaaa
*/

enviarDatosCeca = function() {
    try {
        var formularioCeca = document.getElementById("formularioCeca");
        if(formularioCeca != null) {
            formularioCeca.submit();
        }
    } catch (exception) {
        return true;
    }
}

/**********************************************************************************************/
/*AccionesFormularios: inicializacion del evento en los inputs para pedir confirmacin de que se*/
/*                   desea eliminar un item de informacin. Tambin detectar las etiquetas   */
/*                   'a' cuyo contenido concuerde con la cadena 'Eliminar' y pedir
/*                   confirmacin antes de realizar la accin. Tambin 
/**********************************************************************************************/
var msgConfirmacion = '';
var element;
var inputTags;
var aConfirmTags;
var aHrefs;
AccionesFormularios = function() {
    inputTags = document.getElementsByTagName("INPUT");
    aConfirmTags = document.getElementsByTagName("A");
    var contador = 0;
    var bloqueIzq = document.getElementById("contenido");
    if(inputTags != null) {
        this.confirmar = function() {
            if(!confirm(msgConfirmacion)) {
                for(var i=0; i < inputTags.length; i++){
                    if(inputTags[i].value.match(/Eliminar/g) && inputTags[i].type == "submit") {
                        inputTags[i].type= 'reset';
                    }
                }
            } else {
                for(var i=0; i < inputTags.length; i++){
                    if(inputTags[i].value.match(/eliminar/g) && (inputTags[i].type == "submit" || inputTags[i].type == "reset")) {
                        inputTags[i].type = 'submit';
                    }
                }
            }
        }
        for(var i = 0; i < inputTags.length; i++) {
            if(inputTags[i].value.match(/eliminar/g) && inputTags[i].type == "submit") {
                msgConfirmacion = '¿Seguro que desea eliminar el/los elemento(s) seleccionado(s)?';
                EXTRAS.addEvent(inputTags[i],'click',this.confirmar,true);
            }
        }
    }
    contador = 0;
    for(var j = 0; j < aConfirmTags.length; j++) {
        if(aConfirmTags[j].innerHTML.match(/eliminar/g) || (aConfirmTags[j].href.match(/eliminar/g) && !aConfirmTags[j].href.match(/#/g))) {
            msgConfirmacion = '¿Seguro que desea eliminar el/los elemento(s) seleccionado(s)?';
            var hrefActual = aConfirmTags[j].href;
            aConfirmTags[j].href = null;
            aConfirmTags[j].href = "javascript:confirmarEnlace('"+hrefActual+"');"
        }
    }
}

confirmarEnlace = function(newLocation) {
    if(confirm(msgConfirmacion)) {
        window.location.href = newLocation;
    }
}

/******************************************************************************
 * Este array contiene los id's de textareas que queramos que sean editables
 * con el editor FCK DENTRO DEL FORO
 ******************************************************************************/
var txtAreaForo = new Array('mensajeFCK');
var oFCKeditor = new Array();
var aStringInstancias = new Array();
/**
 * Funci򬟱ue intenta activar el FCK editor en todos los textareas dentro de
 * una etiqueta indicada 
 */
ActivarFCKEditor = function() {
    var txt = document.getElementsByTagName("TEXTAREA");
    if(txt != null) {
        for(var i = 0; i < txt.length; i++) {
            for(var j = 0; j < txtAreaForo.length; j++) {
                if(txtAreaForo[j] == txt[i].id) {
                    ActivarFck(txt[i].id);
                }
            }
        }
    }
}

/**
* Funcion que crea una instancia de FCK editor con el nombre especificado, si
*  dicha instancia no ha sido creada previamente.
*/
ActivarFck = function(nombreInstancia) {
    var flag = false;
    for(var i = 0; i < oFCKeditor.length; i++) {
        if(aStringInstancias[i] == nombreInstancia) {
            flag = true;
        }
    }
    if(!flag) {
        var indice = oFCKeditor.length + 1;
        aStringInstancias[indice] = nombreInstancia;
        oFCKeditor[indice] = new FCKeditor(nombreInstancia);
        oFCKeditor[indice].BasePath	= './js/fckeditor/';
        oFCKeditor[indice].Width        = '97%';
        oFCKeditor[indice].ToolbarSet = 'Basic' ;
        oFCKeditor[indice].Height	= 250;
        oFCKeditor[indice].ReplaceTextarea();
    }
}

init=function() {
    ActivarToggleCheckField();
    AccionesFormularios();
    ActivarFCKEditor();
    enviarDatosCeca();
}


EXTRAS.addEvent(window, 'load', init, false);
