function NIV_goURL_findFrame(frame, target) {
	//alert(frame.name);
	var retFrame = null;
	if (frame.name == target) {
		retFrame = frame;
	} else {
		var i = 0;
		for (i = 0; i < frame.frames.length; i++) {
			if ((frame != parent) && (frame != self)) {
				retFrame = NIV_goURL_findFrame(frame.frames[i]);
				
				if (retFrame) {
					break;
				}
			}
		}
	}
	
	return retFrame;
}


function NIV_goURL(url, target) {
	var frame = null;
	
	if (!target || (target == '_self')) {
		frame = self;
	} else if (target == '_top') {
		frame = top;
	} else if (target == '_parent') {
		frame = parent;
	} else {
		// Para intentar optimizar la busqueda primero buscamos en nuestros hijo,
		// despues en nuestro padre y hermanos y por ultimo desde la raiz.
		// NOTA: Hay que comprobar este comportamiento en el navegador.
	
		//alert ("self");
		frame = NIV_goURL_findFrame(self, target);
		if (!frame) {
			//alert ("parent");
			frame = NIV_goURL_findFrame(parent, target);
		}
		if (!frame) {
			//alert ("top");
			frame = NIV_goURL_findFrame(top, target);
		}
	}

	// Como ultimo remedio abrimos una nueva ventana
	if (!frame) {
		//alert ("_blank");
		frame = window.open(url, target);
	}
	
	if (frame) {
		//alert(frame.name);
		frame.location.href = url;
	}
}
