/* FUNCIONES PARA COMPROBAR SI LA FECHA INTRODUCIDA ES CORRECTA*/
function esDigito(sChr){
	var sCod = sChr.charCodeAt(0);
	return ((sCod > 47) && (sCod < 58));
}
function valSep(oTxt){
	var bOk = false;
	bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
	return bOk;
}
function finMes(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;
}
function valDia(oTxt){
	var bOk = false;
	var nDia = parseInt(oTxt.value.substr(0, 2), 10);
	bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
	return bOk;
}
function valMes(oTxt){
	var bOk = false;
	var nMes = parseInt(oTxt.value.substr(3, 2), 10);
	bOk = bOk || ((nMes >= 1) && (nMes <= 12));
	return bOk;
}
function valAno(oTxt){
	var bOk = true;
	var nAno = oTxt.value.substr(6);
	bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
	if (bOk){
		for (var i = 0; i < nAno.length; i++){
			bOk = bOk && esDigito(nAno.charAt(i));
		}
	}
	return bOk;
}
function valFecha(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("La fecha introducida no es correcta.");
			oTxt.value = "";
			oTxt.focus();
		}
	}
}




/* Funciones para documentos añadir nuevo archivo */
var numero = 0; //Esta es una variable de control para mantener nombres
	//diferentes de cada campo creado dinamicamente.
	evento = function (evt) { //esta funcion nos devuelve el tipo de evento disparado
	return (!evt) ? event : evt;
}

//Aqui se hace lamagia... jejeje, esta funcion crea dinamicamente los nuevos campos file
addCampo = function () { 
	//Creamos un nuevo div para que contenga el nuevo campo
	nDiv = document.createElement('div');
	//con esto se establece la clase de la div
	nDiv.className = 'archivo';
	//este es el id de la div, aqui la utilidad de la variable numero
	//nos permite darle un id unico
	nDiv.id = 'file' + (++numero);
	//creamos el input para el formulario:
	nCampo = document.createElement('input');
	//le damos un nombre, es importante que lo nombren como vector, pues todos los campos
	//compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
	nCampo.name = 'archivos[]';
	//Establecemos el tipo de campo
	nCampo.type = 'file';
	//Tamaño del campo
	nCampo.size = '30';
	//Ahora creamos un link para poder eliminar un campo que ya no deseemos
	a = document.createElement('a');
	//El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla
	a.name = nDiv.id;
	//Este link no debe ir a ningun lado
	a.href = '#';
	//Establecemos que dispare esta funcion en click
	a.onclick = elimCamp;
	//Con esto ponemos el texto del link
	a.innerHTML = 'Eliminar';
	//Bien es el momento de integrar lo que hemos creado al documento,
	//primero usamos la función appendChild para adicionar el campo file nuevo
	nDiv.appendChild(nCampo);
	//Adicionamos el Link
	nDiv.appendChild(a);
	//Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
	//con esta función obtenemos una referencia a ella para usar de nuevo appendChild
	//y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
	container = document.getElementById('adjuntos');
	container.appendChild(nDiv);
}

//con esta función eliminamos el campo cuyo link de eliminación sea presionado
elimCamp = function (evt){
	evt = evento(evt);
	nCampo = rObj(evt);
	div = document.getElementById(nCampo.name);
	div.parentNode.removeChild(div);
}

//con esta función recuperamos una instancia del objeto que disparo el evento
rObj = function (evt) { 
	return evt.srcElement ? evt.srcElement : evt.target;
}

/*
 * Filtra el campo de texto al que se le asocia este método 
 * para permitir sólo la entrada de números en coma flotante 
 * y los caracteres de borrar y movimiento.
 */
function FiltraNumericoDouble(e, campo) {
	var code;
	if(window.event) 
	{
		code = window.event.keyCode;
		if(code == 190 || code == 110 || code == 188) 
		{
			campo.value = campo.value + ".";
			return false;
		}
	}
	else 
	{
		code = e.which;
		if(code == 109 || code == 110 || code == 188) 
		{
			campo.value = campo.value + ".";
			return false;
		}	
	}
	
	if( code == 8 || code == 9 || code == 13 || code == 37 || code == 39 || code == 46 || code == 49 || code == 188 ) return true;
	else
		if( code >= 48 && code <= 57 ) return true;
		else
			if( code >= 96 && code <= 105 ) return true;
			else return false;
}

/* FUNCIONES PARA EL TRATAMIENTO DE IMAGENES */
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}
