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 según 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++;
    }
}

/**
*Función 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ón para que cuando se presióne 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++;
    }
}

comprobarMaximo = function(formu) {
    var ses = formu.sesion.value.split(" ");
    alert(ses.length);
    return false;
}

/**
*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 inválido.\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
*/

init=function() {
    ActivarToggleCheckField();
}

EXTRAS.addEvent(window, 'load', init, false);