// JavaScript Document
/* FUNCIONS BÀSIQUES PER A FORMULARIS.
   utilitzades per al tractament dels formularis de les pàgines web de la 
   Unitat de Comunicació de la Universitat de Barcelona
   Jordi Guilleumes i Morell, U.Comunicació - UB
   desembre 2005
*/

/////////////////////////////////////////
// Funció de validació del formulari.
// Paràmetre (optatiu) : 'true'-> depura mostrant els camps i els seus valors
// Creats per Jordi Guilleumes i Morell
// Universitat de Barcelona - Unitat de Comunicació Interna
// abril de 1999
function validaFormulari( validar, depura ) {
  //Comprova si s'ha entrat el 1er paràmetre de validar. Si no, el demana:
  if ( validar == "" ) {
    validar = confirm("Vols enviar les dades del formulari?")
  }
  document.forms[0].elements["User_name"].value = document.forms[0].elements["Cognoms"].value + ", " + document.forms[0].elements["Nom"].value
  //Si s'ha de validar, fa les manipulacions necessàries dels camps:
  if ( validar ) {
    /*    if ( document.forms[0].elements["07botogr_foto"] != "E" ) {
		alert("No s'envia foto")
		document.forms[0].elements["06fitx_foto"].value = "";
		alert('document.forms[0].elements["06fitx_foto"].value == ' + document.forms[0].elements["06fitx_foto"].value )
	}
	//return true;  */
  }
  // Si s'ha passat el 2on paràmetre i no és 'false', mostra els valors dels camps passats:
  if ( depura ) { 
    sCamps = "Aquest formulari té "+ document.forms[0].elements.length + " camps.\n"
    for (i = 0; i<document.forms[0].elements.length; i++) {
      if ((document.forms[0].elements[i].type == "radio" && !(document.forms[0].elements[i].checked)) ||
		  (document.forms[0].elements[i].type == "submit") ||
		  (document.forms[0].elements[i].type == "reset")) {
         continue
      } else {
	     sCamps = sCamps + "\n " + document.forms[0].elements[i].name + " = " + document.forms[0].elements[i].value
		 if ( document.forms[0].elements[i].obligatori == "true" ) { sCamps = sCamps + " (Obligatori)" }
	  }
    }
	alert (sCamps)
  }
  return validar
}


/////////////////////////////////////////
// Funció de comprovació d'un camp d'adreça electrònica.
// Paràmetre (optatiu) : 'true'-> depura mostrant els camps i els seus valors
// Creats per Jordi Guilleumes i Morell
// Universitat de Barcelona - Unitat de Comunicació Interna
// abril de 1999
function comprovaCorreu( campActual , idioma ) {
	if (!idioma) idioma = "CA"	// El valor d'idioma per defecte és "CA" (Català).
	if ( idioma = "ES" ) { numIdioma = 10 } // Idioma castellà: suma 10
	else if ( idioma = "EN" ) { numIdioma = 20 }  // Idioma anglès: suma 20
	else { numIdioma = 0 } // resta, català: suma 0
	
	//alert ("El camp és " + campActual.name ) //Depuració: Per comporvar la validesa del paràmetre
	var formulari_actual = campActual.form
	var nomCamp = campActual.name
	var valorCamp = campActual.value
/*	var numCamp = 0
	for ( i = 0; i < formulari_actual.length; i++ ) {
		if ( formulari_actual[i].name == campActual.name ) {
			numCamp = i
			alert ("És el camp " + numCamp)
			break
		}
	} */
	//valorCamp = formulari[campActual].value
	// alert ("El valor és " + valorCamp) //Depuració: Per comporvar la validesa del paràmetre
    at_posicio = valorCamp.indexOf("@")
    dot_posicio = valorCamp.lastIndexOf(".")
	// Comprova la longitud:
    if ( valorCamp.length < 5 ) {
        errorCamp( formulari_actual, campActual, 1 + numIdioma ) //return false
    } else if (at_posicio == -1 || dot_posicio == -1 || at_posicio > dot_posicio ) {
    // Comprova '@' i '.'
    //if (at_posicio == -1 || dot_posicio == -1 || at_posicio > dot_posicio ) {
        errorCamp( formulari_actual, campActual, 2 + numIdioma ) //return false
    } else if (at_posicio == 0) {
    // Hi ha almenys un caràcter abans de '@'?
    //if (at_posicio == 0) {
        errorCamp( formulari_actual, campActual, 3 + numIdioma ) //return false
    } else if (dot_posicio - at_posicio < 2 ) {
    //  Hi ha almenys un caràcter entre '@' i '.'?
    //if (dot_posicio - at_posicio < 2 ) {
        errorCamp( formulari_actual, campActual, 4 + numIdioma ) //return false
    } else if (valorCamp.length - dot_posicio < 2) {
    // Hi ha almenys un caràcter després de '.'?
    //if (campCorreu.length - dot_posicio < 2) {
        errorCamp( formulari_actual, campActual, 5 + numIdioma ) //return false
    }
    // Otherwise, it's a valid address, so return true
    //return true
}

function errorCamp ( formulari, campActual, numError ) {
	//alert("Ara soc dins 'errorCamp'")
	var missatgesError = new Array(30)
	missatgesError[0] = "Error"
	missatgesError[1] = "Adreça electrònica errònia: massa curta"
	missatgesError[2] = "Adreça electrònica errònia: no té el format requerit"
	missatgesError[3] = "Adreça electrònica errònia: hi manca el nom d'usuari"
	missatgesError[4] = "Adreça electrònica errònia: hi manca el nom del servidor"
	missatgesError[5] = "Adreça electrònica errònia: hi manca el domini"
	// Missatges en castellà (numError + 10)
	missatgesError[10] = "Error"
	missatgesError[11] = "Correo electrónico erróneo: demasiado corto"
	missatgesError[12] = "Correo electrónico erróneo: no tiene el formato requerido"
	missatgesError[13] = "Correo electrónico erróneo: falta el nombre de usuario"
	missatgesError[14] = "Correo electrónico erróneo: falta el nombre del servidor"
	missatgesError[15] = "Correo electrónico erróneo: falta el dominio"
	// Missatges en anglès (numError + 20)
	missatgesError[20] = "Error"
	missatgesError[21] = "Incorrect email: too short"
	missatgesError[22] = "Incorrect email: incorrect format"
	missatgesError[23] = "Incorrect email: no user name"
	missatgesError[24] = "Incorrect email: no server"
	missatgesError[25] = "Incorrect email: no domain"
	
	alert( missatgesError[ numError ] )
	//alert ("I ara anem al camp " + numCamp + " amb nom " + formulari.elements[numCamp].name) //Depuració: Per comporvar la validesa del paràmetre
	//formulari.elements[numCamp].focus() // Caldria descomentar el bucle que calcula el 'numCamp'
	campActual.focus()
	return true
}

// function es_buit(string_value)
//     string_value    A string value.
//
// Returns: true if string_value is empty or null
function es_buit ( string_value ) {
    // Check for the empty string and null
    if ( string_value == "" || string_value == null ) {
        // If either, it's empty so return true
        return true
    }
    // Otherwise, it's not empty so return false
    return false
}

// funció per crear un camp no editable
function desvia_focus( campActual ) {
	var formulari_actual = campActual.form
	var total_camps = formulari_actual.elements.length
	// Hi ha més camps?
	if ( total_camps > 1 ) {
		// Si: obté l'índex del camp actual:
		for ( i = 0 ; i < total_camps ; i++ ) {
			if ( campActual.name == formulari_actual ) {
				var index_actual = i
				break
			}
		}
		//És el primer camp?
		if ( index_actual == 0 ) {
			// Si: passa el focus al segon camp:
			formulari_actual.elements[ 1 ].focus()
		} else {
			// No: passa el focus al camp anterior:
			formulari_actual.elements[ i - 1 ].focus()
		}
	}
}

function valor_radi_actiu ( grup_radi ) {
	var formulari_actual = grup_radi.form
	// Obté l'índex del botó activat:
	var index_radi = radi_actiu( grup_radi )
	//Si hi ha un botó de radi activat, en retorna el valor:
	if ( index_radi >= 0 ) {
		//var valor_radi = formulari_actual.grup_radi[index_radi].value
		var valor_radi = grup_radi[index_radi].value
		return valor_radi
	}
}

function radi_actiu ( grup_radi ) {
	// Repassa el grup i retorna el botó activat:
	for ( i = 0 ; i < grup_radi.length ; i++ ) {
		if ( grup_radi[ i ].checked ) {
			return i
		}
	}
	// Si no n'hi ha cap d'activat:
	return -1
}
	