function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function () {
			oldonload();
			func();
		}
	}
}

window.onload=function() {
	//Inicializar el boton de volver atras
	var objGoBack = document.getElementById("goBack");
	if (objGoBack != null) { objGoBack.onclick = function() { history.back(); return false;} }
}

/** Validacion del formulario **/

var listaCampos= new Array();
var listaEtiquetas = new Array();

var validateEvents = function () {
	listaEtiquetas = new Array();
	listaCampos = new Array();
	// etiquetas
	var labels = document.getElementsByTagName("label");
	for (i=0; i<labels.length; i++) {
		if (labels[i].className == 'required') {
			listaEtiquetas.push(labels[i].firstChild.data);
			var targetname=labels[i].getAttribute('for')?labels[i].getAttribute('for'):labels[i].getAttribute('htmlFor'); 
			var targetfield = document.getElementById(targetname);
			if (targetfield != null) {
				listaCampos.push(targetfield.name);
			}
		}
	}
}

/** Extiende el objeto Array **/
Array.prototype.in_array = in_array;
function in_array (param) {
	for (var i=0; i<this.length; i++) {
		if (this[i] == param) return true;
	}
	return false;
}

Array.prototype.remove = remove;
function remove (param) {
	var tmp = new Array();
	for (var i=0; i<this.length; i++) {
		if (this[i] != param) {
			tmp.push(this[i]);
		}
	}
	return tmp;
}

/** Validacion de formulario **/

function validaForm (nomForm, campos, etiquetas, mensaje_init, delimitador) {

var argumentos=validaForm.arguments;
if (argumentos[0] == null) {
	var nomForm = 'forms[0]';
} else {
	var nomForm = argumentos[0];
}

var campos = argumentos[1];
var etiquetas = argumentos[2];
if (argumentos[3] == '') {
	mensaje_init = 'Por favor, rellena\n';
}

if (argumentos[4] == null) {
	var delimitador = ', ';
}


var mensaje = mensaje_init;
	for ( var i = 0; i < campos.length; i++){
		switch (eval("document."+nomForm+"."+campos[i]).type.substring(0,1)){
			case "t" :	// texto o un textarea
				if (validaText(nomForm, campos[i]) == 0){
					if (mensaje == mensaje_init) {
						mensaje = mensaje+etiquetas[i];
					}else{
						mensaje = mensaje + delimitador+etiquetas[i];
					}
				}
				break;
			case "s" :	// select simple o múltiple
				if(validaSelect(nomForm, campos[i])==0){
					if (mensaje == mensaje_init) {
						mensaje = mensaje+etiquetas[i];
					}else{
						mensaje = mensaje + delimitador+etiquetas[i];
					}
				}
				break;
			case "p" :
				if (validaText(nomForm, campos[i]) == 0){
					if (mensaje == mensaje_init) {
						mensaje = mensaje+etiquetas[i];
					}else{
						mensaje = mensaje + delimitador+etiquetas[i];
					}
				}
				break;
			case "h" :
				if (validaText(nomForm, campos[i]) == 0){
					if (mensaje == mensaje_init) {
						mensaje = mensaje+etiquetas[i];
					}else{
						mensaje = mensaje + delimitador+etiquetas[i];
					}
				}
				break;				
			
			default :
				break;
		}
	}
	if (mensaje != mensaje_init) {
		alert(mensaje);
	} else {
		return 1;
	}
}

/*	Esta función valida un campo texto o textarea. Devuelve 0 si el campo está vacío o es nulo.
Devuelve 1 en caso contrario
*/
function validaText(nomForm,nomTexto) {
	if (eval("document."+nomForm+"."+nomTexto+".value") == null || eval("document."+nomForm+"."+nomTexto+".value") == "") {
		return 0;
	}
	else {
		return 1;
	}
}

/* Esta funcion valida la selección en un tag select, que debe ser diferente de la primera opción (o sea, 0)
Si se ha seleccionado algo distinto de la primera opción, devuelve 1. Si no, devuelve 0.
*/

function validaSelect(nomForm,nomSelect) {
	var indice = eval("document."+nomForm+"."+nomSelect+".selectedIndex");
	if (indice == 0) {
		return 0;
	}
	else {
		return 1;
	}
}

/* esta función comprueba que una dirección email es correcta */
function validaEmail(nomForm, nomCampo, mensaje){
	valor = eval("document."+nomForm+"."+nomCampo+".value");
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // no válidos
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; // válidos
	if (!reg1.test(valor) && reg2.test(valor)) { // si la sintaxis es correcta
		return 1;
	}
	alert(mensaje);
}

/* esta función comprueba que una lista de campos (array) son numéricos */
function validaNumericos(nomForm, listaCampos, listaEtiquetas, mensaje_init) {
	var argumentos=validaNumericos.arguments;
	var nomForm = argumentos[0];
	var campos = argumentos[1];
	var etiquetas = argumentos[2];
	if (argumentos.length == 4) {
		var mensaje_init = argumentos[3]
	} else {
		mensaje_init = 'Los siguiente campos deben ser numéricos:\n';
	}
	var mensaje = mensaje_init;	
	// bucle para validar los campos
	for ( var i = 0; i < campos.length; i++){
		var valor_campo = eval("document."+nomForm+"."+campos[i]+".value");
		if (esNumerico (valor_campo) == 0) {
			if (mensaje == mensaje_init) {
				mensaje = mensaje+etiquetas[i];
			} else{
				mensaje = mensaje + ", "+etiquetas[i];
			}		
		}
	}
	if (mensaje != mensaje_init) {
		alert(mensaje);
	} else {
		return 1;
	}

}

function esNumerico (valor) {
	var reg = /[^0123456789]/;
	if (reg.test(valor)) {
		// si hay algún caracter no numérico.
		return 0;
	} else {
		return 1;
	}
}

/* Expresiones regulares */
var reDel = new RegExp(/^del_(.*)$/);
var reToggle = new RegExp(/^toggle_(.*)$/);
var reSort = new RegExp(/^sort_(.*)$/);

/* Dictionnaire par i18n */

var msgClose = "Fermer";
var msgPleaseFill = "Merci de remplir le champs";
var msgValidEmail = "Merci d'entrer une adresse électronique valide";
var msgFillEmail = "Merci d'entrer une adresse e-mail.";
var msgFillPwd = "Merci d'entrer un mot de passe et de le confirmer";
var msgEmailNotMatch = "L'adress électronique et sa confirmation ne correspondent pas";
var msgPwdNotMatch = "Le mot de passe et sa confirmation ne correspondent pas";
var msgPassword = "Mot de passe";
var msgEmail = "Email";
var msgConfirmDelImage = "Confirmez-vous la suppression de l'image?";
var msgConfirmDelPhotographer = "Confirmez-vous la suppression du photographe de votre liste?";
var msgConfirmDelAd = "Confirmez-vous la suppression de l'annonce?";
var msgConfirmDelTag = "Confirmez-vous la suppression de l'etiquette?";
var msgDelImageProblem = "Impossible de supprimer l'image";
var msgFillComment = "Merci d'entrer un texte dans le commentaire";
var msgSendComment = "Envoyant le commentaire...";
var msgSendFile = "Envoyant le fichier...";
var msgRequestProblem = "Il y avait un problème avec la demande";
var msgVoteOk = "Merci beaucoup.\nVotre vote a été pris en compte";
var msgSendingVote = "Vote en cours d'envoi...";
var msgFillSearchCriteria = "Merci d'entrer un critère de recherche";
var msgCheckingLocations = "Géolocalisation... Ceci peut prendre quelques secondes...";
var msgFillLocation = "Merci d'entrer une localité";
var msgChooseLocation = "Les endroits suivants correspondent à vos critères de recherche. Choisissez-en un pour continuer";
var msgNoLocationResult = "Nous n'avons pas trouvé l'endroit indiqué. Vous pouvez essayer un autre lieu";
var msgDragPoing = "Vous pouvez faire glisser le curseur et utiliser les contrôles de la carte pour mieux placer votre photo";
var msgNewPhoto = "Nouvelle image";
var msgChoosePhoto = "Merci de sélectionner une image";
var msgMyGallery = "Ma galerie";
var msgUpdatingData = "Mise à jour des données";
var msgDataUpdated = "Les donées ont été actualisées";

var msgPhotographerAdded = "Le photographe a été ajouté à votre liste de favoris";
var msgPhotographeAlreadyPrsnt = "Le photographe est déjà dans votre liste de favoris";

/* Modération */

var msgHide = "cacher";
var msgShow = "montrer";

var msgConfirmDelComment = "Confirmez-vous la suppression du commentaire?";
var msgDelComment =  "Commentaire supprimé avec success."; 
var msgDelCommentProblem = "Impossible de supprimer le commentaire";

var msgConfirmNodataSend = "Confirmez-vous l'envoi sans données?\n(si la photo était Hors-sujet ou Seletionnée, elle ne le serait plus)";
var msgConfirmNotextSend = "C'est bon ajouter un texte explicatif.\nConfirmez-vous l'envoi sans aucun text?";
var msgSelectOTSubject = "Merci de choisir une raison pour l'hors-sujet";
