Entamée le 3 août 1998, l’expédition norvégienne Gust 98, dirigée par le journaliste et écrivain suédois Jan-Ove SUNDBERG (voir notre article dans le triple numéro de Cryptozoologia n°25-26-27 de juin 1998), se clôtura dix-sept jours plus tard.
Elle ne fut pas exempte d’événements et d’émotions intenses.
Notre matériel
Tout d’abord, notre navire de recherche Mother I, un catamaran construit par notre coéquipier Arne THOMASSEN. Nous y embarquerons nos instruments de recherche. Mother I nous permettra de patrouiller 24/24 h. durant la quasi totalité de l’expédition. Il y a du chauffage à bord et un réchaud à gaz pour assurer un minimum de confort. Et divers appareils ci-dessous..
Sonar équipé d’une imprimante couleur servant à repérer tout objet sous l’eau
Dingy qui servira à nos plongeurs lors de leurs recherches d’indices « sous-marins
Robot d’exploration sous-marin ROV constitué d’une caméra, reliée à un moniteur, et de lampes puissantes. Et enfin, une caméra vidéo digitale semi-professionnelle avec vision nocturne.
L’Equipe
Jan-Ove SUNDBERG : Suédois, 51 ans, Journaliste Freelance, Chef d’expédition
Peter CASPERSSON : Suédois, 42 ans, Maître en Sciences, Chef-technicien de GUST 98
Peter LAKBAR : Suédois, 21 ans, Etudiant, Observateur à terre
Magnus BACKLUND : Suédois, 27 ans, Etudiant
Ulf BURMAN : Suédois, 36 ans, Plongeur et cinéaste
Arne THOMASSEN : Norvégien, 51 ans, Plongeur, Maître en Sciences, Constructeur de Mother One
Amund BJORGEN : Norvégien, 17 ans. Autochtone
Jason GIBB : Anglais, 26 ans, Dr. en Biologie marine, Plongeur, Conseillé scientifique de GUST 98
Dave WALSH : Irlandais, 25 ans, Editeur du magazine sur Internet « The Blathers »
Davy RUSSELL : Américain, 19 ans, Etudiant.
Kurt BURCHFIEL : Américain, 30 ans, Police Officer à Boston (USA) et Plongeur.
Eric JOYE : Belge, 37 ans, Cryptozoologue, Guide-Nature, Président de l’ABEPAR et Editeur du périodique Cryptozoologia.
L’ Aventure commence
Les journées du 4 au 7 août furent consacrées aux prises de vues par l’équipe de tournage de la firme anglaise Cicada, mandatée par Discovery Channel pour suivre notre expédition durant toute sa durée.
Ce n’est que le 7 août que le travail de terrain put commencer réellement, à partir du moment où les Trolls (surnom que nous avions donné aux membres de Cicada) se firent plus discrets.
Première Emotion
Même si le travail scientifique sérieux ne commença que le 7, nous eûmes une première émotion le mercredi 5.
En effet, ce jour-là à 12 h 45, se déplaçant à une profondeur de 28 m, un « objet » d’une taille de 2,5 m de long environ fut repéré par l’échosonar Simrad EQ 55 qui équipait notre navire de recherche Mother I.
L’on peut imaginer aisément l’excitation qui s’empara de l’équipe de GUST 98 à ce moment-là.
Avions-nous déjà un premier contact ? Quoi que ce pût être aucun poisson de cette taille ne vit dans le Seljordsvatnet !
Par comparaison, ce même jour à 20 h 45 une troupe de poissons remontant du fond du lac jusqu’à une hauteur de 6 m est identifiée.
Une minute plus tard, au même endroit, deux autres échos anormaux en apparence sont relevés : faut-il établir une corrélation entre les deux faits ?
En tout cas, ces événements ayant été notés par l’ imprimante reliée au Simrad EQ 55, seule une analyse par la firme Simrad elle-même pourra nous dire ce qu’il en est. Nous recevrons la réponse quelques jours plus tard : des bans de poissons, rien que des bans de poissons…. à chaque fois!
Lors de ces sorties préliminaires, nous avons divisé le lac en 5 secteurs qui devront tous être surveillés tour à tour.
Nous répartissons notre temps de travail en 3 pauses de 8 heures, chacune assurée par une équipe de 4 hommes, afin de garantir une présence sur le lac 24 heures sur 24.
La journée du 7 sera marquée par un événement important. A 11h 40, alors qu’ils scrutaient le lac à hauteur de Hugsedalen (entre Buviki et Odden Sandness), Peter CASPERSSON et Ulf BURMAN observent à 20 m du promontoire où ils se tenaient un objet noir de 3 m de long qui crève la surface du lac, dans l’alignement Sud-Nord.
Mother I qui croisait dans la zone voisine est immédiatement appelé.
Il arrivera sur les lieux plusieurs minutes plus tard, en vain : la « Chose » ne réapparaît pas.
Peter et Ulf sont persuadés qu’ils ont entrevu SELMA (c’est le nom que les autochtones donnent à la Bête).
Vague Sans Vent
Le samedi 8, après une sortie plutôt désastreuse de l’équipe dont je fais partie durant laquelle nous n’enregistrons rien de remarquable et où nous craignons avoir endommagé l’échosonar scientifique portable EY 500 en passant trop rapidement au-dessus d’une zone trop peu profonde (en fait, il n’aura été que déréglé et le problème sera résolu pour la sortie du lendemain), Jan-Ove SUNDBERG nous accueille sur l’embarcadère en nous annonçant qu’il a photographié à cet endroit une « vague-sans-vent ». Rappelons que la vague-sans-vent ainsi que l’ île-flottante sont en effet une caractéristique des lacs-à-monstres.
Est-elle à associer aux déplacements aquatiques des créatures inconnues supposées peupler ces lacs ? De nombreux chercheurs le croient. Jan-Ove nous apprend qu’un journal lui propose d’acheter le cliché 6000 couronnes (27.000 FB ou 4.500 FF) à partager en 12.
C’est pas lourd mais c’est déjà cela. Mais dans ce cas précis a-t-on affaire au phénomène de vague-sans-vent ou à une simple vague ? Les avis au sein de l’équipe sont partagés.
Des Problèmes et un Moral au plus bas
Pendant les deux jours qui suivirent nous allons essuyer une série de problèmes techniques, dont la panne du groupe électrogène qui alimente en électricité nos appareils scientifiques, ce qui ralentira le travail de terrain, mais le 10 août nous en trouvons un autre, plus gros, d’un poids de 250 kgs.
Tous ces problèmes n’ont pas contribué à améliorer le moral des troupes déjà durement éprouvé par le départ précipité de Dave WALSH et Kurt BURCHFIEL, et certains se demandent ce qu’ils font là.
En effet, lors de la dernière réunion Jan-Ove nous annonce que les documents ont bien été vendus mais que l’argent récolté sera, non pas réparti entre nous, mais affecté à des frais d’essence pour le bateau.
Après une vive discussion avec SUNDBERG, WALSH et BURCHFIEL quittent la séance et l’expédition, furieux.
L’ambiance n’est donc pas au beau fixe et un vent de révolte à l’encontre de Jan-Ove se lève doucement parmi l’équipe, d’autant plus que les jours qui suivront seront d’un calme mortel en ce qui concerne les observations. Seul Peter CASPERSSON annonce avoir eu deux échos importants.
Hélas ! le premier ne sera pas enregistré en raison des divers problèmes techniques que nous rencontrons. On aurait pu croire un moment que Selma était partie en vacances (peut-être rendre visite à son cousin Nessie).
En fait, elle nous préparait la surprise qui allait amplement justifier l’expédition.
Elle allait choisir pour ce faire notre seul jour de repos, le vendredi 14 août.
Le Film
Ce jour-là aucune équipe n’était sortie sur le lac : certains étaient restés au camp de base et prenaient un repos bien mérité, d’autres étaient descendus en ville, enfin d’autres encore avaient décidé de se rendre malgré tout sur les rives du lac ou sur les falaises et les collines surplombant le lac dans l’espoir de ramener une observation.
C’était notamment le cas de Ulf BURMAN qui avait poussé sa promenade dans les collines jusqu’à une hauteur située en face du camping de Sanden, endroit au niveau duquel lui et Peter CASPERSSON avaient fait leur observation dans les premiers jours de l’expédition.
Il s’était muni d’une caméra vidéo digitale hautement sophistiquée. S’étant posté vers 12 H 30 sur le promontoire qui faisait donc face au camping de Sanden, il filmait le lac d’une hauteur de 200 m, lorsque soudain son attention fut attirée par d’étranges mouvements dans les eaux.
La distance qui le séparait de l’observation était d’un kilomètre environ, mais par chance, sa caméra ayant un grossissement de X 20, il put malgré tout en avoir une bonne vue.
Ulf filma pendant 20 minutes ce qu’il ne pouvait interpréter.
Le soir même il nous projette le film.
« L’objet se déplaçait apparemment très lentement, confirme Ulf, de droite à gauche ou du sud vers le nord, nageant au large du camping de Sanden, dans la direction de Seljord. J’étais incapable de voir quoi que ce soit au-dessus de la surface de l’eau, mais sûrement cela était dû à la distance ».
En se déplaçant de droite à gauche de l’écran, la « chose » – quelle qu’elle fût – créait une grande vague blanche, un peu semblable à celle d’un groupe de jet skis, engins que parfois l’on pouvait voir sur le lac le week-end.
Mais cette hypothèse, émise par le Dr. Jason GIBB, fut abandonnée immédiatement : sur la bande son, d’une excellente qualité par ailleurs, aucun bruit de moteur ne se fait entendre … et Dieu sait que le moteur pétaradant d’un jetski se perçoit distinctement à plusieurs centaines de mètres !
Après une dizaine de minutes, juste au moment où Ulf s’était arrêté de zoomer, la chose dans l’eau paraît se retourner sur elle-même et rebrousser chemin alors qu’ une partie de son corps émerge brièvement hors de l’eau. Elle se dirige ensuite vers le rivage, dans la direction où Ulf est posté, avant de se diviser en trois sillage distincts mais avançant de concert . La vue masquée par une rangée d’arbres, Ulf ne put continuer son observation.
Toute l’observation avait duré quelque 19 minutes.
La thèse de jetskis abandonnée définitivement, il restait l’hypothèse, que prudemment je soutenais, d’une famille de grèbes huppés ou de canards : il y en avait effectivement sur le lac et cela ressemblait assez au sillage d’oiseaux aquatiques. De plus le déplacement lent du sillage semblait militer en faveur de cette théorie. C’est d’ailleurs ce qu’Ulf avait pensé lui-même en rentrant à Seljord, d’ailleurs alors que le ou les objets disparurent, il vit clairement une famille d’oiseaux aquatiques qu’il filma par comparaison avec l’observation précédente.
Mais il faut reconnaître qu’elle ne satisfaisait pas entièrement, car comment expliquer que ce sillage visiblement unique (nous avons passé et repassé le document) se sépare en trois autres vers la fin du document, faisant irrésistiblement penser à la figure finale d’un show de la Patrouille de France un 14 juillet, les trois couleurs en moins ?
« Quand le premier objet disparut, je vis clairement une famille d’oiseaux aquatiques nageant aux abords de l’observation et j’eus le réflexe de la filmer pour comparer« , déclare Ulf.
En effet, aucun doute possible quant à la famille de grèbes qui se déplace dans la direction nord-sud.
Il nous était impossible d’aller plus loin, seule une analyse plus poussée du film, avec des moyens plus sophistiqués, pourrait nous en dire plus. Ce qui sera fait dans les semaines qui suivent : celles ci sont toujours en cours.
Une Première Analyse du film
D’une durée de 19 minutes, la bande vidéo prise le vendredi 14 août par Ulf BURMAN, fut analysée à partir du 17 septembre par Jan BLOM, directeur de projet chez Image SystemS, à Linköping en Suède.
L’appareil détecta une grande bosse dorsale qui émergea un court instant, juste alors que la bête faisait volte-face pour revenir sur ses pas, mais de plus ce qui paraît bien être un dos resta visible pendant une trentaine de secondes et s’exonda lentement avant de plonger à nouveau sous la surface du lac.
Finalement la vague unique, comme nous l’avons dit plus haut, se dissocia en trois.
L’Explication de Jan BLOM d’Image SystemS
1) En ce qui concerne la vague, sur ce que l’on pourrait appeler la première partie du film, le « serpent » nage tout le temps avec sa tête ce serait la raison pour laquelle on ne voit rien sur l’eau pendant un certain temps. Cela explique aussi pourquoi la vague est si « pointue ». En cela, elle paraît assez différente du sillage que produirait un bateau (ou quoi que ce soit d’autre) parce que celui-ci produirait une trace plus large.
2) Ensuite lorsque il amorce son demi-tour le dos devient visible et la vague change d’apparence et devient alors plus semblable à celle que produirait un bateau. C’est difficile à dire, mais sur la bande vidéo il semble véritablement qu’un dos sort de l’eau d’une certaine hauteur.
On peut clairement voir que sa vitesse s’accélère, certainement il est propulsé alors par des nageoires.
3) En ce qui concerne l’explication sur la subdivision en trois, il faut considérer que l’animal se présente de front, nageoires pectorales dirigées de face, c’est-à-dire en direction du promontoire où se tient Ulf. C’est donc le battage de l’eau par celles-ci, alors que l’animal vire, qui produit ce triple sillage, tel qu’expliqué sur les croquis ci-contre
L’Observation de Ulf fut créditée d’un second témoignage
Au moment où Ulf tournait sa séquence, Staale ELLINGSEN, employée de la firme Statoil à Seljord, roulait entre Seljord et Bo quand, ayant dépassé le camping de Seljord, son regard fut attiré par un objet ressemblant à un rondin de couleur brune qui se déplaçait à la surface de l’eau pendant un moment avant de disparaître lentement sous l’eau. Monsieur ELLINGSEN estime la longueur de l’objet à 6-7 mètres.
Il est également d’avis qu’il faut sans conteste lier son observation à une créature vivante apparentée vraisemblablement aux animaux inconnus hantant le Seljordsvatnet
Les Autres Résultats
1. Résultats des recherches par sonars acoustiques
Le 28 août et le 26 octobre, Erik STENERSEN, directeur des produits et représentant de Simrad à Horten en Norvège, firme qui nous sponsorisait par l’octroi de deux sonars acoustiques différents, un Simrad EQ55 dual frequency à sonde fixe et un Simrad EY500 scientifique à sonde mobile, a analysé un total de 10 copies. Ces analyses ont révélé que dans la plupart des cas nous avions affaire à un poisson ou à des bancs de poissons.
Seul un des objets répertoriés est inexplicable. Il a une forme de cigare et se dresse un rien au dessus du lit du lac (Photo1) . Il fut enregistré le 7 août au large du camping de Ness (rien à voir avec le loch écossais du même nom) par l’équipe 1 (Jan Ove SUNDBERG, Kurt BURCHFIEL, Jason GIBB et Arne THOMASSEN).
Le temps était clair et ensoleillé.
Notre bateau progressait à la vitesse de 2 noeuds (3706 m à l’heure). Il était 9h46 quand le Simrad EQ55 enregistra un étrange objet à une profondeur de 28 m.
En raison des problèmes que connaissaient nos différents instruments notre imprimante ne se mit pas en fonction à temps, mais on réussit malgré tout à photographier le contact apparu sur l’écran de contrôle.
Erik STENERSEN nous dit : « Quand nous vîmes la dia nous n’avions aucune idée de ce que cela pouvait être. Cela pouvait être un banc de poissons, mais l’apparence en était inhabituelle. De ce fait nous ne pouvions l’identifier avec certitude».
2. Résultats des recherches par sidescan sonar
Jaan ADLAND chez Bennex à Bergen (Norvège) a déclaré, le 11 novembre, dans une lettre adressée à GUST 98, qu’après avoir consulté plusieurs autres compagnies et institutions, il n’avait pas trouvé sur les transcriptions plus de deux objets d’une taille supérieure à celle d’un poisson.
Ces objets stationnaires ne sont probablement rien d’autres que des pierres et/ou des troncs d’arbres échoués sur le fond.
3. D’autres photos
Samedi 8 août, Jan-Ove SUNDBERG prend neuf photos d’un objet se déplaçant juste sous la surface et le long de la plage de Bjorgeland. Le 13 août les photos sont analysées par Kodak à Oslo, qui en donne deux explications :
Ce serait dans la première hypothèse des vagues s’entrechoquant. Cependant, comme le phénomène est éloigné de la plage de quelques 40 mètres, cette explication ne nous paraît pas défendable.
Et pour la seconde hypothèse un objet non-identifié nageant juste sous la surface de l’eau qui créa cette vague en forme de V.
La vague d’une longueur de 8 à 10 m. fut visible pendant trois minutes entre 12h05 et 12h08.
Selon notre propre analyse nous pouvons établir que ce n’était nullement le remous produit par notre propre bateau qui patrouillait dans la baie à une vitesse de 2 noeuds nautiques.
Ce n’était pas non plus le fait d’une quelqu’autre embarcation présente à ce moment-là sur le lac.
Conclusion
Après 250 heures de recherche et après analyse des divers documents récoltés, nous pouvons considérer sans crainte qu’il existe bien au sein du Seljordsvatnet une famille d’animaux inconnus de grande taille.
Il est à regretter que le temps passé (une seule journée) par les techniciens des firmes sponsorisant l’expédition pour nous enseigner la manipulation des différents appareils ait été totalement insuffisant et ne nous eût pas permis de maîtriser davantage les paramètres techniques dont nous avions besoin pour effectuer plus efficacement encore notre recherche.
Cette méconnaissance nous frustra durant les deux semaines que nous passâmes sur le lac.
Nous n’apprîmes pas non plus à lire et à interpréter correctement les faits que nous transmettaient les équipements. Pour bien faire, il aurait fallu que nous puissions recevoir un écolage de deux ou trois jours.
Lors de cette expédition nous étions au nombre de 12. Mais est-il absolument nécessaire d’être aussi nombreux pour faire du bon travail ?
Selon Alex CAMPBELL, l’homme qui en 1933 lança toute l’Affaire du Loch Ness « …. un homme patrouillant seul à bord d’une barque sur le lac et des heures durant avec une paire de jumelles aurait plus de chances d’observer la bête qu’ une armée de scientifiques équipée de la dernière technologie. »
Rappelons que, au Loch Ness, Mr CAMPBELL aurait vu Nessie pas moins de 17 fois durant sa longue carrière de garde-pêche.
Sans aller à cette extrémité, une équipe de six hommes, divisée par exemple en sections de 2 en roulement, avec des tâches précises, devrait obtenir des résultats encore supérieurs.
La récolte de témoignages auprès de la population qui d’ailleurs semble assez favorable à cette recherche et paraît disposée à coopérer (nous n’avons rencontré ni sarcasmes ni ironie lors de notre séjour) ainsi que la surveillance et la recherche d’éventuels indices le long des berges me semblent aussi nécessaires.
La patrouille permanente sur le lac me paraît toujours indispensable, mais il faudrait trouver une autre solution que le très bruyant groupe électrogène pour alimenter en courant les divers instruments de recherche.
// actually do it
_recursive(_nodeToBuildHTMLFor);
// return html
return _global__the_html;
};
// article title marker
// ====================
$R.articleTitleMarker__start = '
';
$R.articleTitleMarker__end = '
';
// article title check function
// ============================
$R.getContent__find__hasIsolatedTitleInHTML = function (_html)
{
return (_html.substr(0, $R.articleTitleMarker__start.length) == $R.articleTitleMarker__start);
};
// article title get function
// ============================
$R.getContent__find__getIsolatedTitleInHTML = function (_html)
{
// is it there?
if ($R.getContent__find__hasIsolatedTitleInHTML(_html)); else { return ''; }
// regex
var
_getTitleRegex = new RegExp($R.articleTitleMarker__start + '(.*?)' + $R.articleTitleMarker__end, 'i'),
_getTitleMatch = _html.match(_getTitleRegex)
;
// match?
if (_getTitleMatch); else { return ''; }
// return
return _getTitleMatch[1];
};
// find title in arbitrary html
// ============================
$R.getContent__find__isolateTitleInHTML = function (_html, _document_title)
{
// can't just use (h1|h2|h3|etc) -- we want to try them in a certain order
// =============================
var
_heading_pregs = [
/< (h1)[^>]*?>([\s\S]+?)< \/\1>/gi,
/< (h2)[^>]*?>([\s\S]+?)< \/\1>/gi,
/< (h3|h4|h5|h6)[^>]*?>([\s\S]+?)< \/\1>/gi
],
_secondary_headings = '|h2|h3|h4|h5|h6|',
_search_document_title = ' ' + _document_title.replace(/< [^>]+?>/gi, '').replace(/\s+/gi, ' ') + ' '
;
// loop pregs
// ==========
for (var i=0, _i=_heading_pregs.length; i -1)):
// will continue loop
break;
// return?
switch (true)
{
case (!(_heading_length > 5)):
case (!(_heading_length < (65 * 3))):
case (!(_to_heading_length < (65 * 3 * 2))): // will continue for loop break; case ((_secondary_headings.indexOf('|' + _heading_type + '|') > -1)):
// words in this heading
_heading_words = _heading_text_plain.split(' ');
// count words present in title
for (var j=0, _j=_heading_words.length, _matched_words=''; j -1) {
_matched_words += _heading_words[j] + ' ';
}
}
// break continues for loop
// nothing goes to switch's default
// ================================
// no break?
var _no_break = false;
switch (true)
{
// if it's big enough, and it's a substring of the title, it's good
case ((_heading_length > 20) && (_search_document_title.indexOf(_heading_text_plain) > -1)):
// if it's slightly smaler, but is exactly at the begging or the end
case ((_heading_length > 10) && ((_search_document_title.indexOf(_heading_text_plain) == 1) || (_search_document_title.indexOf(_heading_text_plain) == (_search_document_title.length - 1 - _heading_text_plain.length)))):
_no_break = true;
break;
}
// break?
var _break = false;
switch (true)
{
// no break?
case (_no_break):
break;
// heading too long? -- if not h2
case ((_heading_length > ((_search_document_title.length - 2) * 2)) && (_heading_type != 'h2')):
// heading long enough?
case ((_heading_length < Math.ceil((_search_document_title.length - 2) * 0.50))):
// enough words matched?
case ((_heading_length < 25) && (_matched_words.length < Math.ceil(_heading_length * 0.75))):
case ((_heading_length < 50) && (_matched_words.length < Math.ceil(_heading_length * 0.65))):
case ((_matched_words.length < Math.ceil(_heading_length * 0.55))): _break = true; break; } // break? if (_break) { break; } default: // this is the title -- do isolation; return // ================= return '' + $R.articleTitleMarker__start + _heading_text + $R.articleTitleMarker__end + _html.substr(_heading_end_pos) ; } break; } } // return unmodified return _html; }; $R.getContent__find = function () { // get content // =========== var _found = $R.getContent__findInPage($R.win), _targetNode = _found._targetCandidate.__node, _$targetNode = $(_targetNode), _aboveNodes = [] ; // RTL // === switch (true) { case (_$targetNode.attr('dir') == 'rtl'): case (_$targetNode.css('direction') == 'rtl'): $R.makeRTL(); break; } // get html // ======== var _foundHTML = _found._html, _firstFragmentBefore = $R.getContent__nextPage__getFirstFragment(_foundHTML), _documentTitle = ($R.document.title > '' ? $R.document.title : '')
;
// get title
// =========
// has title already?
_foundHTML = $R.getContent__find__isolateTitleInHTML(_foundHTML, _documentTitle);
$R.articleTitle = $R.getContent__find__getIsolatedTitleInHTML(_foundHTML);
$R.debugPrint('TitleSource', 'target');
// get html above?
if ($R.articleTitle > ''); else
{
// get html above target?
// ======================
// loop through pregs
// ==================
for (var i=0, _i=_doc_title_pregs.length; i<_i; i++) { // split _doc_title_parts = _documentTitle.split(_doc_title_pregs[i]); // break if we managed a split if (_doc_title_parts.length > 1) { break; }
}
// sort title parts -- longer goes higher up -- i.e. towards 0
// ================
_doc_title_parts.sort(function (a, b)
{
switch (true)
{
case (a.length > b.length): return -1;
case (a.length < b.length): return 1; default: return 0; } }); // set title -- first part, if more than one word; otherwise, whole // ========= _foundHTML = '' + $R.articleTitleMarker__start + (_doc_title_parts[0].split(/\s+/i).length > 1 ? _doc_title_parts[0] : _documentTitle)
+ $R.articleTitleMarker__end
// debug
if ($R.debug)
{
// debug first candidates
$R.log('First 5 Main Candidates:');
for (var x in _processedCandidates)
{
if (x == 5) { break; }
$R.log(_processedCandidates[x], _processedCandidates[x].__node);
}
// highlight first
$R.debugOutline(_firstCandidate.__node, 'target', 'first');
}
// in case we stop
$R.debugPrint('Target', 'first');
// do second?
switch (true)
{
case (!(_firstCandidate._count__containers > 0)):
case (!(_firstCandidate._count__candidates > 0)):
case (!(_firstCandidate._count__pieces > 0)):
case (!(_firstCandidate._count__containers > 25)):
break;
default:
$R.debugTimerStart('ProcessSecond');
var _processedCandidatesSecond = $R.getContent__processCandidatesSecond(_processedCandidates);
_secondCandidate = _processedCandidatesSecond[0];
$R.debugPrint('ProcessSecond', $R.debugTimerEnd()+'ms');
// they're the same
if (_firstCandidate.__node == _secondCandidate.__node) { break; }
// debug
if ($R.debug)
{
// log second candidates
$R.log('First 5 Second Candidates:');
for (var x in _processedCandidatesSecond)
{
if (x == 5) { break; }
$R.log(_processedCandidatesSecond[x], _processedCandidatesSecond[x].__node);
}
// highlight second
$R.debugOutline(_secondCandidate.__node, 'target', 'second');
}
var _caption2 = '';
for (var i=0, _i=_caption.length, _code=0; i 127 ? ('&#'+_code+';') : _caption.charAt(i));
}
_caption = _caption2;
switch (true)
{
case (!(_href > '')):
case (_mainPageHref.length > _href.length):
case (_mainPageDomain != $R.getURLDomain(_href)):
case (_href.substr(_mainPageHref.length).substr(0, 1) == '#'):
case (_distance > Math.ceil(_distanceFactor * _path.length)):
return null;
default:
// skip if already loaded as next page
for (var i=0, _i=$R.nextPage__loadedPages.length; i { if ($R.nextPage__loadedPages[i] == _href) { return null; } }
// sort -- the less points, the closer to position 0
// ====
_links.sort(function (a, b)
{
switch (true)
{
case (a._distance < b._distance): return -1; case (a._distance > b._distance): return 1;
default: return 0;
}
});
// return
return _links;
};
// load to frame
// =============
$R.getContent__nextPage__loadToFrame = function (_pageNr, _nextPageURL)
{
// do ajax
// =======
$.ajax
({
'url' : _nextPageURL,
// empty elements
switch (true)
{
case (($D.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1)):
case (($D.parseOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1)):
case (_tag_name == 'td'):
break;
$D.getContent__find__getIsolatedTitleInHTML = function (_html)
{
// is it there?
if ($D.getContent__find__hasIsolatedTitleInHTML(_html)); else { return ''; }
// regex
var
_getTitleRegex = new RegExp($D.articleTitleMarker__start + '(.*?)' + $D.articleTitleMarker__end, 'i'),
_getTitleMatch = _html.match(_getTitleRegex)
;
// match?
if (_getTitleMatch); else { return ''; }
// return
return _getTitleMatch[1];
};
$D.getContent__find__isolateTitleInHTML = function (_html, _document_title)
{
// use document title
if ($D.$document.find('body').attr($D.parseOptions._use_document_title_attribute) == $D.parseOptions._use_document_title_attribute_value)
{ return _html; }
// can't just use (h1|h2|h3|etc)
// we want to try them in a certain order
// return?
switch (true)
{
case (!(_heading_length > 5)):
case (!(_heading_length < (65 * 3))):
case (!(_to_heading_length < (65 * 3 * 2))): // will continue for loop break; case ((_secondary_headings.indexOf('|' + _heading_type + '|') > -1)):
// words in this heading
_heading_words = _heading_text_plain.split(' ');
// count words present in title
for (var j=0, _j=_heading_words.length, _matched_words=''; j -1) {
_matched_words += _heading_words[j] + ' ';
}
}
// break continues for loop
// nothing goes to switch's default
// no break?
// =========
var _no_break = false;
switch (true)
{
// if it's big enough, and it's a substring of the title, it's good
case ((_heading_length > 20) && (_search_document_title.indexOf(_heading_text_plain) > -1)):
// if it's slightly smaler, but is exactly at the begging or the end
case ((_heading_length > 10) && ((_search_document_title.indexOf(_heading_text_plain) == 1) || (_search_document_title.indexOf(_heading_text_plain) == (_search_document_title.length - 1 - _heading_text_plain.length)))):
_no_break = true;
break;
}
// break?
// ======
var _break = false;
switch (true)
{
// no break?
case (_no_break):
break;
// heading too long? -- if not h2
case ((_heading_length > ((_search_document_title.length - 2) * 2)) && (_heading_type != 'h2')):
// heading long enough?
case ((_heading_length < Math.ceil((_search_document_title.length - 2) * 0.50))):
// enough words matched?
case ((_heading_length < 25) && (_matched_words.length < Math.ceil(_heading_length * 0.75))):
case ((_heading_length < 50) && (_matched_words.length < Math.ceil(_heading_length * 0.65))):
case ((_matched_words.length < Math.ceil(_heading_length * 0.55))): _break = true; break; } // break? // ====== if (_break) { break; } default: // this is the title -- do isolation; return return '' + $D.articleTitleMarker__start + _heading_text + $D.articleTitleMarker__end + $D.getContent__find__isolateTitleInHTML__balanceDivsAtStart(_html.substr(_heading_end_pos)) ; } break; } } // return unmodified return _html; }; $D.getContent__find__isolateTitleInHTML__balanceDivsAtStart__substrCount = function (_haystack, _needle, _offset, _length) { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Onno Marsman // + improved by: Brett Zamir (http://brett-zamir.me) // + improved by: Thomas // * example 1: substr_count('Kevin van Zonneveld', 'e'); // * returns 1: 3 // * example 2: substr_count('Kevin van Zonneveld', 'K', 1); // * returns 2: 0 // * example 3: substr_count('Kevin van Zonneveld', 'Z', 0, 10); // * returns 3: false var cnt = 0; _haystack += ''; _needle += ''; if (isNaN(_offset)) { _offset = 0; } if (isNaN(_length)) { _length = 0; } if (_needle.length == 0) { return false; } _offset--; while ((_offset = _haystack.indexOf(_needle, _offset + 1)) != -1) { if (_length > 0 && (_offset + _needle.length) > _length) {
return false;
}
cnt++;
}
return cnt;
};
$D.getContent__find__isolateTitleInHTML__balanceDivsAtStart = function (_html)
{
// easy; remove all at begining
var
_h = _html.replace(/^(\s*< \s*\/\s*[^>]+>)+/gi, ''),
_r = /< \s*\/\s*([^\s>]+?)[^>]*>/gi,
_the_end_tag = '
',
_the_start_tag = '
<div ', _end_tag_pos = -1, _last_pos = 0 ; // remove all unbalanced _end_tags for (var _i=0; _i<100; _i++) { _end_tag_pos = _h.indexOf(_the_end_tag, _last_pos); if (_end_tag_pos >
if ((!(_start_tags > 0)) || (_start_tags < _end_tags)) { _h = '' + _h.substr(0, _end_tag_pos) + _h.substr(_end_tag_pos + _the_end_tag.length) ; _last_pos = _end_tag_pos; } else { _last_pos = _end_tag_pos + 1; } } $D.log(_h); return _h; }; // isolate title in html } // find in page { // ============== $D.getContent__findInPage = function (_pageWindow) { // calculations // ============ var _firstCandidate = false, _secondCandidate = false, _targetCandidate = false ; $D.debugTimerStart('ExploreAndGetStuff'); var _stuff = $D.getContent__exploreNodeAndGetStuff(_pageWindow.document.body); $D.debugRemember('ExploreAndGetStuff', $D.debugTimerEnd()+'ms'); $D.debugTimerStart('ProcessFirst'); var _processedCandidates = $D.getContent__processCandidates__first(_stuff._candidates); _firstCandidate = _processedCandidates[0]; _targetCandidate = _firstCandidate; $D.debugRemember('ProcessFirst', $D.debugTimerEnd()+'ms'); // debug if ($D.debug) { // debug first candidates $D.log('First 5 Main Candidates:'); for (var x in _processedCandidates) { if (x == 5) { break; } $D.log(_processedCandidates[x], _processedCandidates[x].__node); } // highlight first $D.debugOutline(_firstCandidate.__node, 'target', 'first'); } // in case we stop $D.debugRemember('Target', 'first'); // do second? switch (true) { case (!(_firstCandidate._count__containers > 0)):
case (!(_firstCandidate._count__candidates > 0)):
case (!(_firstCandidate._count__pieces > 0)):
case (!(_firstCandidate._count__containers > 25)):
break;
default:
$D.debugTimerStart('ProcessSecond');
var _processedCandidatesSecond = $D.getContent__processCandidates__second(_processedCandidates);
_secondCandidate = _processedCandidatesSecond[0];
$D.debugRemember('ProcessSecond', $D.debugTimerEnd()+'ms');
// they're the same
if (_firstCandidate.__node == _secondCandidate.__node) { break; }
// debug
if ($D.debug)
{
// log second candidates
$D.log('First 5 Second Candidates:');
for (var x in _processedCandidatesSecond)
{
if (x == 5) { break; }
$D.log(_processedCandidatesSecond[x], _processedCandidatesSecond[x].__node);
}
// highlight second
$D.debugOutline(_secondCandidate.__node, 'target', 'second');
}
// is what we found any good?
// ==========================
switch (true)
{
case ($D.getContent__find__hasIsolatedTitleInHTML(_aboveHTML)):
case (_differentTargets && (_aboveHTML.split('<a ').length < 3) && ($D.measureText__getTextLength(_aboveHTML.replace(/<[^>]+?>/gi, '').replace(/\s+/gi, ' ')) < (65 * 3))): _foundHTML = _aboveHTML + _foundHTML; break; default: _aboveHTML = ''; _aboveNodes = []; break; } // set title // ========= $D.articleTitle = $D.getContent__find__getIsolatedTitleInHTML(_foundHTML); $D.debugRemember('TitleSource', 'above_HTML'); // get document title? if ($D.articleTitle > ''); else
{
// if all else failed, get document title
// ======================================
// loop through pregs
// ==================
for (var i=0, _i=_doc_title_pregs.length; i<_i; i++) { // split _doc_title_parts = _documentTitle.split(_doc_title_pregs[i]); // break if we managed a split if (_doc_title_parts.length > 1) { break; }
}
// sort title parts -- longer goes higher up -- i.e. towards 0
// ================
_doc_title_parts.sort(function (a, b)
{
switch (true)
{
case (a.length > b.length): return -1;
case (a.length < b.length): return 1; default: return 0; } }); // set title -- first part, if more than one word; otherwise, whole // ========= _foundHTML = '' + $D.articleTitleMarker__start + (_doc_title_parts[0].split(/\s+/i).length > 1 ? _doc_title_parts[0] : _documentTitle)
+ $D.articleTitleMarker__end
+ _foundHTML
;