var reRow = new RegExp(/^row_(.*)$/);
var reDel = new RegExp(/^del_(.*)$/);
var reMenu = new RegExp(/^mnu_(.*)$/);
var reToggle = new RegExp(/^toggle_(.*)$/);
var reStatus = new RegExp(/^status_(.*)$/);
var LOCAL_COUNTRY = 1;

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

/** 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);
			// parchecito para IE (como siempre!)
			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 temp = Array();
	for (var i=0; i<this.length; i++) {
		if (this[i] != param) {
			temp.push(this[i]);
		}
	}
	return temp;
}

/** 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 = ', ';
	}
	
	/*for ( var i = 0; i < campos.length; i++){
		alert("Eti: " + etiquetas[i]);
		alert("campo: " + campos[i]);
	}*/
	
	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,3}|[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;
	}
}

var homeSearch = function () {
	var form = document.fSearchHome;
	if (form != null) {
		form.onsubmit = doSearch;
	}
}

var doSearch = function () {
	var complete = false;
	var reSel = new RegExp(/^select/);
	var ambito = null;
	for (i=0; i<this.elements.length; i++) {
		if(reSel.test(this.elements[i].type) && this.elements[i].selectedIndex > 0) {
			complete = true;
		}
	}
	if (!complete){
		alert("Por favor, selecciona alguna opciÃ³n de bÃºsqueda.");
		return false;
	} else {
		// si es busqueda en todo el web, cambia la action
		var ambito = document.fSearchHome.ambito;
		if (ambito != null) {
			// mira si estÃ¡ checkeado el r_all
			var r_all = document.getElementById("r_all");
			if (r_all.checked) {
				this.id_sector.value = 0;
				this.action = "/ofertas/resultado_busqueda.php";
			}
		}
		this.submit();
	}
}

var menuEvents = function () {
	var mnus = document.getElementsByTagName("ul");

	for (i=0; i<mnus.length; i++) {
		if (reMenu.test(mnus[i].id)) {
			// lista de li
			var lis = mnus[i].getElementsByTagName("li");
			for (j=0; j<lis.length; j++) {
				lis[j].onmouseover = mnuOver;
				lis[j].onmouseout = mnuOut;
				lis[j].onclick = mnuClick;
			}
		}
	}
}

var updateEvents = function () {
	alert("Datos actualizados");
}

var userEvents = function () {
	var arrCookie = document.cookie.split(";"),
	sessReg = /PHPSESSID/,
	is_session = false,
	url = "/ajax/custom_user_info.php",
	_data = {};
	
	for (var i=0; i<arrCookie.length; i++) {
		if (sessReg.test(arrCookie[i])) {
			is_session = true;
		}
	}
	if (is_session) {
	$.ajax({
		url: url, 
		type: 'get', 
		dataType: "json", 
		data: _data, 
		success: customizeUI
		});
	}
	return false;
}

var customizeUI = function (resp) {
	if (resp.login === 1) {
		$("#login .first").html("<a href=\""+resp.link+"\">"+resp.username+"</a>");
		$("#login .last").html("<a href=\""+resp.link+"exit.php\">Cerrar sesión</a>");
		if (resp.tipo === 'candidata') {
			$("#info-login-user").val(resp.email);
		}
	}
}

var mnuClass = "";

var mnuOver = function () {
	if ((this.className != 'current') && (this.className != 'inactive')) {
		mnuClass = this.className;
		this.className = 'over';
	}
}

var mnuOut = function () {
	if ((this.className != 'current') && (this.className != 'inactive')) {
		this.className = mnuClass;
	}
}

var mnuClick = function () {
	// obtiene el href de su link
	var link = this.getElementsByTagName("a")[0];
	if (link != null) {
		document.location = link.href;
	}
}

/** Efectos de rollover sobre listas **/
var classname = '';

var rowEvents = function () {
	var trs = document.getElementsByTagName("tr");
	for (i=0; i<trs.length; i++) {
		if (reRow.test(trs[i].id)) {
			trs[i].onmouseover = function() {
				classname = this.className;
				this.className = 'over';
			}
			trs[i].onmouseout = function() {
				this.className = classname;
			}
		}
	}
}

/**
 * Actualiza el inner html de un elemento
 */
var updateH = function (item_name, nu_title) {
	var item = document.getElementById(item_name);
	if (item != null) {
		item.innerHTML = nu_title;
	}
}

var InputField={
	formatea:function(clase) {
		var fields = document.getElementsByTagName("INPUT");
		for (i=0; i<fields.length; i++) {
			if ((fields[i].type == "text") || (fields[i].type == "password")) {
				fields[i].className = clase;
			}
		}
		return false;
	}
}

/**
 * abre una ventana flotante
 * tomado de http://www.webtoolkit.info/javascript-open-window.html
 */

function openWindow(anchor, options) {
 
	var args = '';
 
	if (typeof(options) == 'undefined') { var options = new Object(); }
	if (typeof(options.name) == 'undefined') { options.name = 'win' + Math.round(Math.random()*100000); }
 
	if (typeof(options.height) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
		args += "height=" + options.height + ",";
	}
 
	if (typeof(options.width) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
		args += "width=" + options.width + ",";
	}
 
	if (typeof(options.fullscreen) != 'undefined') {
		args += "width=" + screen.availWidth + ",";
		args += "height=" + screen.availHeight + ",";
	}
 
	if (typeof(options.center) == 'undefined') {
		options.x = 0;
		options.y = 0;
		args += "screenx=" + options.x + ",";
		args += "screeny=" + options.y + ",";
		args += "left=" + options.x + ",";
		args += "top=" + options.y + ",";
	}
 
	if (typeof(options.center) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
		options.y=Math.floor((screen.availHeight-(options.height || screen.height))/2)-(screen.height-screen.availHeight);
		options.x=Math.floor((screen.availWidth-(options.width || screen.width))/2)-(screen.width-screen.availWidth);
		args += "screenx=" + options.x + ",";
		args += "screeny=" + options.y + ",";
		args += "left=" + options.x + ",";
		args += "top=" + options.y + ",";
	}
 
	if (typeof(options.scrollbars) != 'undefined') { args += "scrollbars=1,"; }
	if (typeof(options.menubar) != 'undefined') { args += "menubar=1,"; }
	if (typeof(options.locationbar) != 'undefined') { args += "location=1,"; }
	if (typeof(options.resizable) != 'undefined') { args += "resizable=1,"; }
 
	var win = window.open(anchor, options.name, args);
	return false;
 
}


/** LOCALE **/
var msgFillLoginPwd = "Por favor, rellena email y contraseña.";
var msgValidEmail = "Por favor, indica una dirección de email válida";
