{"id":774,"date":"2016-05-14T12:09:17","date_gmt":"2016-05-14T10:09:17","guid":{"rendered":"http:\/\/www.rensrottier.nl\/?p=774"},"modified":"2016-05-14T20:58:13","modified_gmt":"2016-05-14T18:58:13","slug":"waartoe","status":"publish","type":"post","link":"http:\/\/www.rensrottier.nl\/?p=774","title":{"rendered":"Waartoe"},"content":{"rendered":"<figure id=\"attachment_776\" aria-describedby=\"caption-attachment-776\" style=\"width: 300px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-776\" src=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-300x163.png\" alt=\"Simon Sinek\" width=\"300\" height=\"163\" srcset=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-300x163.png 300w, http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek.png 304w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-776\" class=\"wp-caption-text\">Simon Sinek<\/figcaption><\/figure>\n<p>Wat is het geheim van organisaties die jarenlang goed presteren?<\/p>\n<p>Wat maakt dat de ene leider veel invloed krijgt, inspirerend is, gevolgd wordt en een andere die mogelijk intelligenter en ijveriger is, niet of nauwelijks?<\/p>\n<p>Een docent aan de \u00a0Columbia university in New York, Simon Sinek, die zelf geplaagd werd door een gebrek aan motivatie in zijn werk, onderzocht dit probleem. En kwam tot een verbluffend, simpel antwoord.<\/p>\n<p>Inspirerende en invloedrijke leiders en toporganisaties zijn diep doordrongen van het WAARTOE. Ze beginnen bij de kern van de door Simon Sinek bedachte golden circle. En ze zorgen ervoor dat ze daarbij blijven. Ze hebben een diepe drijfveer, een WAAROM, een MISSIE en die communiceren ze heel goed en doen dingen die wij die missie passen.<\/p>\n<p>In zijn onderzoek ontdekte Sinek dat de meeste leiders en bedrijven te veel bezig zijn met het HOW, de processen, hoe we het moeten organiseren en het WHAT, de resultaten, wat het moet opbrengen.<\/p>\n<p>Maar Inspirerende leiders, organisaties die jaren aan de top van hun sector staan, werken van binnen naar buiten.<\/p>\n<p>Bedrijven die het bovenmatig goed doen, ontdekte Sinek, zijn WHY bedrijven. Ze hebben bijzonder scherp Waartoe ze op aarde zijn. En vervolgens zoeken ze mensen die daarbij passen, richten ze hun processen zo in dat alleen al daarin het WHY van hun bedrijf getoond wordt en zijn ze streng en scherp op alles wat hen van dit waartoe afhoudt.<\/p>\n<p>Het WAARTOE is wat ons mensen inspireert en waarom we ergens willen werken. Het WAARTOE maakt een organisatie aantrekkelijk.<\/p>\n<p>Mensen met een sterk WHY \u2013 zijn inspirerend, raken je hart, je wil ze volgen en onderdeel worden van hun idee\u00ebnwereld.<\/p>\n<figure id=\"attachment_775\" aria-describedby=\"caption-attachment-775\" style=\"width: 300px\" class=\"wp-caption alignright\"><a href=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-circle.png\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-775 size-medium\" src=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-circle-300x237.png\" alt=\"sinek circle\" width=\"300\" height=\"237\" srcset=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-circle-300x237.png 300w, http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-circle.png 1002w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-775\" class=\"wp-caption-text\">The golden circle<\/figcaption><\/figure>\n<p>Organisaties die \u2013 in deze cirkel gedacht &#8211; van buiten naar binnen werken, doen de dingen in de verkeerde volgorde. Ze richten zich niet op de belangrijkste dingen, maar zetten dingen die op de 2e of 3e plaats moeten staan centraal. De pijl staat de verkeerde kant op. Daarom noemt iemand anders dit \u2018verdraaide organisaties\u2019.<\/p>\n<p>Het valt niet moeilijk om dit soort tendensen bij anderen waar te nemen.<\/p>\n<p>In de zorg b.v. is het duidelijk dat de persoonlijk aandacht voor de client of de patient sterk is afgenomen. Ziekenhuizen sturen op resultaten en personeel is vooral druk met protocollen, zorgplannen en verslaglegging.<\/p>\n<p>Ze bij jezelf zien is moeilijk en ze aanpakken vergt durf en veel energie.<\/p>\n<p>Als leidinggevende trap je makkelijk in de val om zo druk te zijn met de resultaten en hoe we het doen, dat je vergeet waarom we het doen en of het wel nodig is dat we het doen. Over het waartoe denken kost meer moeite. Terwijl daar wel onze diepste drijfveer ligt.<\/p>\n<p>Als je als docent een les moet voorbereiden of een studiedag als onderwijsadviseur, heb je snel de werkvormen te pakken en ook wel de inhouden, maar de vraag wat het doel van deze les of studiedag is, is vaak moeilijker onder woorden te brengen. En daar gaat het toch wel om: wat is de bijdrage van deze les aan de ontwikkeling van mijn studenten?<\/p>\n<p>Als je niet oppast verlies je in de drukte uit het oog waar ook alweer om ging?<\/p>\n<p>Leidinggevenden en bestuurders zijn allereerst verantwoordelijk om bij de missie, het waartoe van de organisatie, te blijven. En alles zo in te richten en de budgetten zo te besteden, dat die missie gerealiseerd wordt. Hoe beter dit lukt hoe helderder medewerkers weten waar het om gaat en hoe beter het gevoel kan ontstaan dat je samen ergens voor staat.<\/p>\n<p>We hebben trouwens allemaal, persoonlijk ook zo\u2019n WAARTOE nodig. Een reden waarom je \u2019s morgens naar je werk komt.<\/p>\n<p>En er kunnen persoonlijke omstandigheden zijn waardoor je jezelf die vraag gaat stellen.<\/p>\n<p>Als je vermoeid raakt van je werk b.v., het allemaal niet meer vanzelf gaat, als werk je veel energie kost, het niet meer is en voelt zoals vroeger.<\/p>\n<p>Of als het juist heel goed gaat, je merkt dat je je ontwikkelt, dat je groeit in je vak, maar dat er steeds maar meer op je bordje komt en je niet alles meer overziet.<\/p>\n<p>Of als je ouder wordt en het werk niet meer vanzelf gaat, je ook wel wat uitkijkt naar het eind van de loopbaan, maar dat tijdstip ondertussen vooruit geschoven is.<\/p>\n<p>Of als je nadenkt over een andere baan of een andere plek in de organisatie, als je uitgekeken bent op wat je nu doet, je geen inspiratie meer ervaart.<\/p>\n<p>Dan is het goed om voor jezelf na te denken over de vraag naar het waartoe van je werk en wat je daarin wil betekenen.<\/p>\n<p>Diezelfde vraag kan ook zomaar op teamniveau spelen of het kan\u00a0 nodig zijn om die op teamniveau uit te spreken en te onderzoeken. Binnen je vakgroep, je thuisbasisteam, een minorenteam, een afdelingsteam, een ondersteunende afdeling.<\/p>\n<p>Waartoe zijn we er? Wat is onze drijfveer, onze toegevoegde waarde? In een team kun je je <a href=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-boek.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignright wp-image-777 size-medium\" src=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-boek-195x300.jpg\" alt=\"sinek boek\" width=\"195\" height=\"300\" srcset=\"http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-boek-195x300.jpg 195w, http:\/\/www.rensrottier.nl\/wp-content\/uploads\/sinek-boek.jpg 546w\" sizes=\"(max-width: 195px) 100vw, 195px\" \/><\/a>ook zo druk maken met de dagelijkse dingen, dat je het waartoe kwijtraakt. Dat gaat ten koste \u00a0van de motivatie, de groepssfeer en de flow om met elkaar iets moois neer te zetten. Door deze vraag op de agenda te zetten kun je ook weer komen bij je diepere motivatie van waaruit je je werk wil doen.<\/p>\n<p>Ik wil ons allemaal daarom uitnodigen om in deze spiegel te kijken. De WAARTOE-vraag te stellen voor jezelf, in je team en voor Driestar educatief. En wees niet tevreden met gemakkelijke antwoorden, denk erover na, voer het gesprek, en als we dan tot ongemakkelijke conclusies komen, laten we die onder ogen zien en die ook omzetten in acties om de pijl de andere kant op te laten wijzen. Een kompas dat alleen naar zichzelf verwijst brengt ons geen stap verder. Een kompas dat waar je je ook bevindt altijd naar het noorden verwijst helpt om koers te houden en keuzen te maken.<\/p>\n<p>Ik ben ervan overtuigd dat de periode waarin we nu zijn, veel onzekerheden voor DE meebrengt. Ik denk aan Onderwijsdvies die in een moeilijke fase verkeert. Maar ook aan de opleidingen die komende jaren te maken krijgen met veel druk kwaliteit en het project binnen de Vereniging Hogescholen om dmv afspraken en evt. samenvoeging, een duurzaam model ontstaan voor alle lerarenopleidingen in Nederalnd. Ik denk ook aan ondersteunende afdelingen, waar veel van gevaagd wordt, vragen ook veranderen en we tegelijkertijd moeten bezuinigingen op de overhead in onze organisatie.<\/p>\n<p>In al die situatie helpt het om met elkaar het gesprek aan te gaan over WAARTOE, omdat we daardoor beter onze keuzen kunnen maken.<\/p>\n<p>Bij dat gesprek over het WAARTOE hebben we als DE wel groot een voordeel.<\/p>\n<p>We weten wat de zin is van ons bestaan. Waar we vandaan komen en waar we naar toe gaan. We weten dat ons leven geen toeval is, maar geleid wordt door een goeddoende God en Vader, die hemel en aarde schiep en onderhoudt en ons in dat grote geheel van Zijn koninkrijk een plek geeft. En die plek is voor wat ons werk betreft en voor wat dit moment betreft, hier binnen dit instituut als onderdeel van dit team. Daar mogen we ons als christen wortelen, onze plek vinden en ook gestalte geven aan ons christenzijn.<\/p>\n<p>We hebben ook een waartoe, omdat we werken bij een organisatie die zich inzet voor christelijk onderwijs. En dat is een buitengewoon zinvol WAARTOE. Dit heeft zin en geeft zin aan ons werk. We doen het niet voor onszelf, voor de winst of voor aanzien. We doen het voor kinderen, leerlingen, jongeren, die we het allerbelangrijkste willen geven wat zij in hun ontwikkeling kunnen meekrijgen: een christelijke school die hen vormt, onderwijst, richtingsbesef bijbrengt, hen op het spoor zet van Gods koninkrijk, met het verlangen en in de verwachting, dat zij hun hoop op God gaan stellen.<\/p>\n<p>Dat WAARTOE hebben we ook weer opnieuw proberen op te schrijven in het begin van ons <a href=\"https:\/\/issuu.com\/driestareducatief\/docs\/driestar_educatief_-_strategisch_be\" target=\"_blank\">SBP 2020<\/a>.<\/p>\n<p>Na het WAARTOE, onze MISSIE, bevat bevat het SBP ook de koers en de route op weg naar 2020.<\/p>\n<p>Onderweg daarnaar toe moeten ons steeds afvragen of we altijd de pijl de goede kant op hebben.<\/p>\n<p>En waar dat niet zo is moeten we dat veranderen, opdat we blijven bij onze koers, onze missie zullen realiseren een aantrekkelijke werkgever zijn en een instituut waar we opleidingen en diensten leveren die van goede kwaliteit zijn.<\/p>\n<p>Ik nodig jullie vooral ook uit om kritisch mee te denken, je ervaringen, denkkracht, energie mee te laten werken om een scherper waartoe, een betere organisatie, een duidelijker profiel te krijgen.<\/p>\n<p>En ook om niet te schromen om als het waartoe dat van ons vraagt de dingen echt anders te gaan doen.<\/p>\n<p>In afhankelijkheid van de zegen van de Heere, brengen we DE 2020 in de vaart, de naam komt nog, maar het schip gaat varen en we bidden:\u00a0 &#8216;Bevestig het werk van onze handen, over ons, ja, het werk van onze handen,\u00a0 bevestig dat\u2019.<\/p>\n<p><em>Deze tekst heb ik uitgesproken op de eerste schooldag van het jaar 2016 als nieuwjaarsrede vanuit het college van bestuur. <\/em><\/p>\n<p>&nbsp;<\/p>\n<div id=\"evernote-post-clip-content\" style=\"display: none;\">\n<div id=\"postClipContainer\" class=\"yui3-cssreset\">\n<div class=\"closeCross\"><\/div>\n<div class=\"evn-error-message\">\n<p class=\"evn-error-desc\">Het knipsel kan niet opgeslagen worden<\/p>\n<p id=\"evn-show-logs\">Crashrapport bekijken<\/p>\n<\/div>\n<div class=\"clippedMessage\">Geknipt naar standaard notitieboek<\/div>\n<div class=\"noteTitle\">Naamloze notitie<\/div>\n<div id=\"shareButtons\">\n<div id=\"linkedin\" class=\"shareButton\"><\/div>\n<div id=\"facebook\" class=\"shareButton\"><\/div>\n<div id=\"twitter\" class=\"shareButton\"><\/div>\n<div id=\"weibo\" class=\"shareButton\"><\/div>\n<div id=\"clipboard\" class=\"shareButton\"><\/div>\n<p><!--\n\n\n<div class=\"shareButton\" id=\"email\"><\/div>\n\n\n--><\/p>\n<\/div>\n<div id=\"evn-clipboardCopy-container\">\n<div class=\"evn-pcp-divider\"><\/div>\n<div class=\"evn-pcp-clipboard-message\">Bron-link<\/div>\n<p><input class=\"evn-pcp-clipboard-input\" readonly=\"readonly\" type=\"text\" \/><\/p>\n<div class=\"evn-pcp-clipboard-button bottom\">Kopi\u00ebren naar Klembord<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\nif ( typeof Evernote == 'undefined' ) {\n    \/**\n     * Represents global evernote context (namespace).\n     * All objects should be a part of this namespace.\n     * @type {Object}\n     *\/\n    Evernote = {};\n}\nEvernote.inherit = function( childConstructor, parentClassOrObject, includeConstructorDefs ) {\n    if ( parentClassOrObject.constructor == Function ) {\n        \/\/ Normal Inheritance\n        childConstructor.prototype = new parentClassOrObject;\n        childConstructor.prototype.constructor = childConstructor;\n        childConstructor.prototype.parent = parentClassOrObject.prototype;\n        childConstructor.constructor.parent = parentClassOrObject;\n    }\n    else {\n        \/\/ Pure Virtual Inheritance\n        childConstructor.prototype = parentClassOrObject;\n        childConstructor.prototype.constructor = childConstructor;\n        childConstructor.prototype.parent = parentClassOrObject;\n        childConstructor.constructor.parent = parentClassOrObject;\n    }\n\n    if ( includeConstructorDefs ) {\n        for ( var i in parentClassOrObject.prototype.constructor ) {\n            if ( i != \"parent\" &#038;&#038; i != \"prototype\" &#038;&#038; parentClassOrObject.constructor[i] != parentClassOrObject.prototype.constructor[ i ]\n                &#038;&#038; typeof childConstructor.prototype.constructor[ i ] == 'undefined' ) {\n                childConstructor.prototype.constructor[ i ] = parentClassOrObject.prototype.constructor[ i ];\n            }\n        }\n    }\n\n    if ( typeof childConstructor.handleInheritance == 'function' ) {\n        childConstructor.handleInheritance.apply( childConstructor, arguments );\n    }\n\n    if ( typeof childConstructor.prototype.handleInheritance == 'function' ) {\n        childConstructor.prototype.handleInheritance.apply( childConstructor, arguments );\n    }\n\n    return childConstructor;\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\nEvernote.EnClipper = {\n\n    enClipperProcessId: -1,\n\n    init: function() {\n        Evernote.ResponseReceiver.subscribe(this);\n        Evernote.Addin.getProcessID(document);\n        Evernote.Addin.allowSetForegroundWindow(this.enClipperProcessId);\n    },\n\n    onDataReceived: function(data) {\n        if(data &#038;&#038; (data.type == \"process_id\")) {\n            Evernote.EnClipper.enClipperProcessId = data.data | 0;\n        }\n    }\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\nEvernote.AsyncEngine = {\n    _requests : {},\n    _requestIDCounter: 0,\n\n    addRequest : function(callback, args) {\n        this._requestIDCounter++;\n        this._requests[this._requestIDCounter] =\n            {\n                callbackFunc: callback,\n                callbackArgs: args\n            };\n        return this._requestIDCounter;\n    },\n\n    removeRequest : function(requestID) {\n        this._requests[requestID] = null;\n        delete this._requests[requestID];\n    },\n\n    commonCallback : function(requestID, result) {\n        var object = Evernote.AsyncEngine._requests[requestID];\n        if (object &#038;&#038; object.callbackFunc) {\n            object.callbackFunc(result, object.callbackArgs);\n            Evernote.AsyncEngine.removeRequest(requestID);\n        }\n        return 0;\n    }\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/**\n * Proxy object for Evernote ActiveX component\n * @type {Object}\n *\/\nEvernote.Addin = {\n    _addon : null,\n    isAuthenticated: true,\n\n    init : function(addin) {\n        this._addon = addin;\n    },\n\n    \/**\n     * Injects css specified by filename to specified document.\n     * @param fileName - path to css\n     * @param doc - document object\n     *\/\n    injectStyleSheet : function(doc, fileName) {\n        try {\n            this._addon.InjectStyleSheet(doc, fileName)\n        } catch (e) {\n            Evernote.Logger.error( \"Addin.InjectStyleSheet() failed \" + e );\n        }\n    },\n\n    \/**\n     * Injects script content to specified document\n     * @param doc - document object\n     * @param content - content of the script file\n     *\/\n    injectScript : function(doc, content) {\n        try {\n            this._addon.InjectScript( doc, content );\n        }\n        catch ( e ) {\n            Evernote.Logger.error( \"Addin.injectScript() failed \" + e );\n        }\n    },\n\n    \/**\n     * Loads file content from disk\n     * @param url - path to the file\n     *\/\n    loadFile : function(url) {\n        try {\n            return this._addon.LoadFile( url );\n        } catch (e) {\n            Evernote.Logger.error( \"Addin.loadFile() failed \" + e );\n        }\n    },\n\n    \/**\n     * Append message to log file with specified level.\n     * Supported levels:\n     *  0 - debug\n     *  1 - info\n     *  2 - warning\n     *  3 - error\n     *  4 - critical\n     * @param logLevel\n     * @param message\n     *\/\n    log : function(logLevel, message)\n    {\n        try {\n            this._addon.Log(logLevel, message)\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to log message '\" + message + \"' to the log file due to error: \" + e);\n        }\n    },\n\n    \/**\n     * Opens new note window.\n     *\/\n    openNewNote : function() {\n        try {\n            this._addon.CreateNewNote();\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to open new note window due to error: \" + e);\n        }\n    },\n\n    \/**\n     * Return path to directory on local filesystem for specified type.\n     * @param type - type of directory to return. Currently supported types:\n     *  options - directory, where options configuration is stored.\n     *  resources - directory, where resources are located (images, scripts, etc.)\n     *\/\n    getPath : function(type)\n    {\n        try {\n            return this._addon.GetAddinPath(type);\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to clip full page due to error \" + e);\n        }\n    },\n\n    \/**\n     * Returns localized message by code.\n     * @param code - number of message in resource file.\n     *\/\n    getLocalizedMessage : function(code) {\n        try {\n            return this._addon.GetLocalizedString(code) || 'l10n_error';\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to retrieve localized message due to error \" + e);\n        }\n    },\n\n    clipNote : function(content, options, sourceUrl, imageUrls, silent, doc ) {\n        var isSilentClip = silent ? 1 : 0;\n        var images = imageUrls;\n        if(!(images instanceof Array)) {\n            images = [imageUrls];\n        }\n        try {\n            var notebookUid = options.notebookUid | 0;\n            try {\n                notebookUid = options.notebookUid() | 0;\n            } catch(e) {\n                \/\/Notebook uid is not a function, but just an integer that we saved on previous step, ignore exception here\n            }\n            this.ensureAuthenticated();\n            Evernote.Logger.debug(\"Clip to \" + (notebookUid) + \" with tags: \" + options.tags.join(\",\") + \" ; comment: \" + options.comments);\n            return this._addon.ClipNote(options.title, content, sourceUrl, isSilentClip, images.join(\"#\") , notebookUid, options.tags.join(\",\"), \"\", doc,\"EvernoteGlobalReceiver\");\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to clipNote due to error \" + e);\n        }\n    },\n\n    getCursorXPosition : function() {\n        try {\n            return this._addon.GetCursorXPosition();\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to retrieve localized message due to error \" + e);\n            throw e;\n        }\n\n    },\n\n    \/**\n     * Call Addin to get all notebooks (global \"EvernoteGlobalReceiver\" function is called with response)\n     * @param document - document object\n     *\/\n    getNotebooks : function(document) {\n        this.ensureAuthenticated();\n        this._addon.GetNotebooks(document, \"EvernoteGlobalReceiver\", Evernote.NotebookTypes.PERSONAL);\n        this.ensureAuthenticated();\n        this._addon.GetNotebooks(document, \"EvernoteGlobalReceiver\", Evernote.NotebookTypes.BUSINESS);\n        this.ensureAuthenticated();\n        this._addon.GetNotebooks(document, \"EvernoteGlobalReceiver\", Evernote.NotebookTypes.LINKED);\n    },\n\n    \/**\n     * Call Addin to get all personal tags (global \"EvernoteGlobalReceiver\" function is called with response)\n     * @param document - document object\n     *\/\n    getTags : function(document) {\n        this.ensureAuthenticated();\n        this._addon.GetTags(document, \"EvernoteGlobalReceiver\");\n    },\n\n    \/**\n     * Call Addin to get linked notebook tags (global \"EvernoteGlobalReceiver\" function is called with response)\n     * @param document - document object\n     *\/\n    getLinkedTags : function(document, notebookUid) {\n        this.ensureAuthenticated();\n        this._addon.GetLinkedNotebooksTags(document, \"EvernoteGlobalReceiver\", notebookUid);\n    },\n\n    \/**\n     * Returns document location address\n     * @param document - DOM document\n     * @return {*}\n     *\/\n    getDocumentHref: function(document) {\n        return this._addon.GetDocumentHref(document);\n    },\n\n    allowSetForegroundWindow: function(id) {\n        this._addon.AllowSetForegroundWindow(id);\n    },\n\n    getProcessID: function(doc) {\n        this.ensureAuthenticated();\n        this._addon.GetProcessID(doc, \"EvernoteGlobalReceiver\");\n    },\n\n    resetAuthenticatedState: function() {\n        this.isAuthenticated = true;\n    },\n\n    \/\/This function should be called before every call to Addin that will establish connection with EvernoteClipper process.\n    ensureAuthenticated: function() {\n        if(!this.isAuthenticated) {\n            throw new Evernote.AuthenticatedException(\"User is not authorized\");\n        }\n    },\n\n    processError: function(error) {\n        if(error.code == Evernote.ErrorCodes.AUTHENTICATION_ERROR) {\n            this.isAuthenticated = false;\n        }\n        return false;\n    },\n\n    getEvernoteVersion: function(document) {\n        this._addon.GetEvernoteVersion(document, \"EvernoteGlobalReceiver\");\n    },\n\n    getServerLocation: function() {\n        try {\n            return this._addon.GetServerLocation();\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to get Evernote server location due to error: \" + e);\n        }\n    },\n\n    getEvernoteVersionAsync: function(callback) {\n        var requestID;\n        try\n        {\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            this._addon.GetEvernoteVersionAsync( Evernote.AsyncEngine.commonCallback, requestID );\n        } catch(e) {\n            Evernote.AsyncEngine.removeRequest(requestID);\n            Evernote.Logger.error(\"Failed to get Evernote version (async) due to error: \" + e);\n        }\n    },\n\n    getNotebooksAsync : function(callback) {\n        this.ensureAuthenticated();\n        var requestID;\n        try\n        {\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            this._addon.GetNotebooksAsync( Evernote.AsyncEngine.commonCallback, requestID, Evernote.NotebookTypes.PERSONAL);\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            this._addon.GetNotebooksAsync( Evernote.AsyncEngine.commonCallback, requestID, Evernote.NotebookTypes.BUSINESS);\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            this._addon.GetNotebooksAsync( Evernote.AsyncEngine.commonCallback, requestID, Evernote.NotebookTypes.LINKED);\n        } catch(e) {\n            Evernote.AsyncEngine.removeRequest(requestID);\n            Evernote.Logger.error(\"Failed to get notebooks (async) due to error: \" + e);\n        }\n    },\n\n    getTagsAsync : function(callback) {\n        this.ensureAuthenticated();\n        var requestID;\n        try\n        {\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            this._addon.GetTagsAsync( Evernote.AsyncEngine.commonCallback, requestID );\n        } catch(e) {\n            Evernote.AsyncEngine.removeRequest(requestID);\n            Evernote.Logger.error(\"Failed to get tags (async) due to error: \" + e);\n        }\n    },\n\n    getLinkedTagsAsync : function(callback, args, notebookUid) {\n        this.ensureAuthenticated();\n        var requestID;\n        try\n        {\n            requestID = Evernote.AsyncEngine.addRequest(callback, args);\n            this._addon.GetLinkedNotebooksTagsAsync( Evernote.AsyncEngine.commonCallback, requestID, notebookUid );\n        } catch(e) {\n            Evernote.AsyncEngine.removeRequest(requestID);\n            Evernote.Logger.error(\"Failed to get notebooks tags (async) due to error: \" + e);\n        }\n    },\n\n    clipNoteAsync : function(callback, content, options, sourceUrl, imageUrls, silent) {\n        var isSilentClip = silent ? 1 : 0;\n        var images = imageUrls;\n        if(!(images instanceof Array)) {\n            images = [imageUrls];\n        }\n        var requestID;\n        try {\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            var notebookUid = options.notebookUid | 0;\n            try {\n                notebookUid = options.notebookUid() | 0;\n            } catch(e) {\n\n            }\n            this.ensureAuthenticated();\n            Evernote.Logger.debug(\"Clip to \" + (notebookUid) + \" with tags: \" + options.tags.join(\",\") + \" ; comment: \" + options.comments);\n            this._addon.ClipNoteAsync(Evernote.AsyncEngine.commonCallback, requestID, options.title, content, sourceUrl, isSilentClip, images.join(\"#\") , notebookUid, options.tags.join(\",\"), \"\");\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to clipNote due to error \" + e);\n        }\n    },\n\n    \/**\n     * Performs security (HTTPS - Port: 443) asynchronous POST request. Example: https:\/\/www.evernote.com\/Login.action\n     * @param callback\n     * @param url Example: \"www.evernote.com\"\n     * @param urlNamedObject Example: \"Login.action\"\n     * @param data - data for \"POST\" request\n     * @constructor\n     *\/\n    asyncWebRequest : function(callback, url, urlNamedObject, data) {\n        var requestID;\n        try\n        {\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            this._addon.AsyncWebRequest( Evernote.AsyncEngine.commonCallback, requestID, url, urlNamedObject, data);\n        } catch(e) {\n            Evernote.AsyncEngine.removeRequest(requestID);\n            Evernote.Logger.error(\"Failed to exec async web request due to error: \" + e);\n        }\n    },\n\n    clipImageAsync : function(options, callback, url, imageBase64) {\n        var requestID;\n        try\n        {\n            requestID = Evernote.AsyncEngine.addRequest(callback);\n            var notebookUid = options.notebookUid | 0;\n            try {\n                notebookUid = options.notebookUid() | 0;\n            } catch(e) {\n            }\n            this._addon.ClipImageAsync(Evernote.AsyncEngine.commonCallback, requestID, notebookUid, options.title, url, options.tags.join(\",\"), options.comments, imageBase64);\n        } catch(e) {\n            Evernote.AsyncEngine.removeRequest(requestID);\n            Evernote.Logger.error(\"Failed to exec async web request due to error: \" + e);\n        }\n    },\n\n    getScreenshotBase64 : function(doc, coord) {\n        try {\n            return this._addon.GetScreenshotBase64Ex(doc, coord[0], coord[1], coord[2], coord[3]);\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to get screnshot due to error: \" + e);\n        }\n    },\n\n    openLocalFile : function(logPath, flags)\n    {\n        try {\n            if (!flags)\n                flags = 1;\n\n            this._addon.OpenLocalFile(document, logPath, flags);\n        } catch (e) {\n            Evernote.Logger.error(\"Failed to open local file due to error \" + e);\n        }\n    },\n\n    getLastLoginUser : function() {\n        try {\n            return this._addon.GetLastLoginUser();\n        } catch (e) {\n            Evernote.Logger.error( \"GetLastLoginUser failed \" + e );\n        }\n        return null;\n    }\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\nEvernote.FileLogger = {\n    _addin : Evernote.Addin,\n\n    _log : function(level, message) {\n        if(level >= this.level)\n            this._addin.log(level, \"JS: \" + message);\n    },\n\n    debug : function(message) {\n        try {\n            this._log(0, message);\n        } catch(e) {\n            if(this._next) {\n                this._next.debug(message);\n            }\n        }\n    },\n\n    info : function(message) {\n        try {\n            this._log(1, message);\n        } catch(e) {\n            if(this._next) {\n                this._next.info(message);\n            }\n        }\n    },\n\n    warn : function(message) {\n        try {\n            this._log(2, message);\n        } catch(e) {\n            if(this._next) {\n                this._next.warn(message);\n            }\n        }\n    },\n\n    error : function(message) {\n        try {\n            this._log(3, message);\n        } catch(e) {\n            if(this._next) {\n                this._next.error(message);\n            }\n        }\n    },\n\n    setNext : function(logger) {\n        this._next = logger;\n        this._next.setLevel(this.level);\n    },\n\n    setLevel : function(level) {\n        this.level = level;\n    }\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\nEvernote.ConsoleLogger = {\n    debug : function(message) {\n        if(this.level >= Evernote.LoggerConfigurator.DEBUG) {\n            try {\n                console.info(message);\n            } catch(e) {\n                if(this._next) {\n                    this._next.debug(message);\n                }\n            }\n        }\n    },\n\n    info : function(message) {\n        if(this.level >= Evernote.LoggerConfigurator.INFO) {\n            try {\n                console.info(message);\n            } catch(e) {\n                if(this._next) {\n                    this._next.info(message);\n                }\n            }\n        }\n    },\n\n    warn : function(message) {\n        if(this.level >= Evernote.LoggerConfigurator.WARN) {\n            try {\n                console.warn(message);\n            } catch(e) {\n                if(this._next) {\n                    this._next.warn(message);\n                }\n            }\n        }\n    },\n\n    error : function(message) {\n        if(this.level >= Evernote.LoggerConfigurator.ERROR) {\n            try {\n                console.error(message);\n            } catch(e) {\n                if(this._next) {\n                    this._next.error(message);\n                }\n            }\n        }\n    },\n\n    setNext : function(logger) {\n        this._next = logger;\n    },\n\n    setLevel : function(level) {\n        this.level = level;\n    }\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\nEvernote.AlertLogger = {\n    debug : function(message) {\n        alert(\"Debug: \" + message);\n    },\n\n    info : function(message) {\n        alert(\"Info: \" + message);\n    },\n\n    warn : function(message) {\n        alert(\"Warn: \" + message);\n    },\n\n    error : function(message) {\n        alert(\"Error: \" + message);\n    }\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\nEvernote.LoggerConfigurator = {\n\n    DEBUG : 0,\n    INFO : 1,\n    WARN: 2,\n    ERROR: 3,\n\n    getLogger : function() {\n        var logger = Evernote.FileLogger;\n        if(logger) {\n            logger.setLevel(this.WARN);\n            Evernote.ConsoleLogger.setNext(Evernote.AlertLogger);\n            logger.setNext(Evernote.ConsoleLogger);\n            return logger;\n        }\n        return Evernote.ConsoleLogger;\n    }\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/**\n * Represents page context (have permissions to access and modify DOM objects)\n *\/\n\ntry {\n\n    PageContext = {\n        url: (location &#038;&#038; location.href) ? location.href : document.location.href,\n        title: document.title,\n\n        META: \"evernote-webclipper-extension\",\n\n        getFavIconUrl : function() {\n            var links = document.getElementsByTagName(\"link\");\n            var i;\n            for (i = 0; i < links.length; i++) {\n                if (links[i].rel) {\n                    var rels = links[i].rel.toLowerCase().split(\/\\s+\/);\n                    if (Evernote.ArrayExtension.indexOf(rels, \"icon\") !== -1) {\n                        \/\/ Found it!\n                        return links[i].href;\n                    }\n                }\n            }\n            \/\/Try to get it from google web site\n            var re = new RegExp( \"^[^:]+:\\\/+([^\\\/\" + \":\" + \"]+).*$\" );\n            var domain = PageContext.url.replace( re, \"$1\" );\n            return \"http:\/\/www.google.com\/s2\/favicons?domain=\" + domain.toLowerCase();\n        },\n\n        injectAdditionalTags : function() {\n            var url = document.location.href;\n            if ( url.match( \/^https?:\\\/\\\/[a-z0-9-+\\.]*(evernote|yinxiang)\\.com\\\/\/i ) ) {\n                try {\n                    var metas = document.getElementsByTagName( \"meta\" );\n                    for ( var i = 0; i < metas.length; ++i ) {\n                        if ( metas[i].name == PageContext.META ) {\n                            return;\n                        }\n                    }\n\n                    var meta = document.createElement( \"meta\" );\n                    meta.name = PageContext.META;\n                    meta.content = \"installed\";\n\n                    var head = document.head;\n                    if ( head ) {\n                        head.appendChild( meta );\n                    }\n\n                    if ( document.body ) {\n                        document.body.className += ((document.body.className) ? \" \" : \"\") + PageContext.META;\n                    }\n                }\n                catch ( e ) {\n                    alert( \"PageContext.injectAdditionalTags() failed: \" + e );\n                    throw e;\n                }\n            }\n        }\n    };\n    if((document.readyState == \"complete\" || document.readyState == \"interactive\") &#038;&#038; !window.PageContext) {\n        PageContext.injectAdditionalTags();\n    }\n} catch(e) {\n    \/\/Just ignore exception here\n}\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/**\n * String constants used in the project.\n * @type {Object}\n *\/\nConstants = {\n    CLIP_DIALOG_ID : \"evernote-content\",\n    CLIP_DIALOG_NEW_ID : \"evernote-popup-container\",\n    OPTIONS_DIALOG_ID : \"evernote-options-content\",\n    ATTR_DIALOG_ID : \"evernote-attributes-content\",\n    SHARE_DIALOG_ID : \"evernote-share-content\",\n    POST_CLIP_DIALOG_ID : \"evernote-post-clip-content\",\n    EXPAND_SIGN : '+',\n    CONTRACT_SIGN : '&#8211;',\n    NEW_LINE: '\\n'\n};\n\nBrowserNavConstants  = {\n    \/\/ full list:  http:\/\/msdn.microsoft.com\/en-us\/library\/aa768360(v=vs.85).aspx\n    NAVOPENINNEWWINDOW : 0x1,\n    NAVOPENNEWTAB : 0x0800,\n    NAVOPENINBACKGROUNDTAB : 0x1000,\n    NAVOPENNEWFOREGROUNDTAB : 0x10000\n};\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/*! jQuery v1.7.2 jquery.com | jquery.org\/license *\/\n(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f(\"<\"+a+\">\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ck||(ck=c.createElement(\"iframe\"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?\"<!doctype html>\":\"\")+\"<html><body>\"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&#038;&#038;(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h==\"string\"&#038;&#038;(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"&#038;&#038;l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0&#038;&#038;(n=o);break}}}}!n&#038;&#038;!p&#038;&#038;f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0&#038;&#038;(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&#038;&#038;(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b&#038;&#038;(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]&#038;&#038;e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&#038;&#038;f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+\"[\"+(typeof e==\"object\"?b:\"\")+\"]\",e,c,d)});else if(!c&#038;&#038;f.type(b)===\"object\")for(var e in b)b_(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&#038;&#038;((g[d]?a:e||(e={}))[d]=c[d]);e&#038;&#038;f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&#038;&#038;(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"&#038;&#038;(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&#038;&#038;!g[\"*\"]&#038;&#038;(l=bZ(a,c,d,e,\"*\",g));return l}function bY(a){return function(b,c){typeof b!=\"string\"&#038;&#038;(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=\/^\\+\/.test(h),j&#038;&#038;(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function bB(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?1:0,g=4;if(d>0){if(c!==\"border\")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,\"padding\"+bx[e]))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0;return d+\"px\"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,\"padding\"+bx[e]))||0,c!==\"padding\"&#038;&#038;(d+=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0),c===\"margin\"&#038;&#038;(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+\"px\"}function bo(a){var b=c.createElement(\"div\");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||\"\").toLowerCase();b===\"input\"?bm(a):b!==\"script\"&#038;&#038;typeof a.getElementsByTagName!=\"undefined\"&#038;&#038;f.grep(a.getElementsByTagName(\"input\"),bm)}function bm(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bk(a,b){var c;b.nodeType===1&#038;&#038;(b.clearAttributes&#038;&#038;b.clearAttributes(),b.mergeAttributes&#038;&#038;b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c===\"object\"?b.outerHTML=a.outerHTML:c!==\"input\"||a.type!==\"checkbox\"&#038;&#038;a.type!==\"radio\"?c===\"option\"?b.selected=a.defaultSelected:c===\"input\"||c===\"textarea\"?b.defaultValue=a.defaultValue:c===\"script\"&#038;&#038;b.text!==a.text&#038;&#038;(b.text=a.text):(a.checked&#038;&#038;(b.defaultChecked=b.checked=a.checked),b.value!==a.value&#038;&#038;(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute(\"_submit_attached\"),b.removeAttribute(\"_change_attached\"))}function bj(a,b){if(b.nodeType===1&#038;&#038;!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&#038;&#038;(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function U(a){var b=V.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h&#038;&#038;(c===\"queue\"||!f._data(a,e))&#038;&#038;(c===\"mark\"||!f._data(a,g))&#038;&#038;setTimeout(function(){!f._data(a,e)&#038;&#038;!f._data(a,g)&#038;&#038;(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b===\"data\"&#038;&#038;f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function l(a,c,d){if(d===b&#038;&#038;a.nodeType===1){var e=\"data-\"+c.replace(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(\/\\s+\/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=\/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)\/,j=\/\\S\/,k=\/^\\s+\/,l=\/\\s+$\/,m=\/^<(\\w+)\\s*\\\/?>(?:<\\\/\\1>)?$\/,n=\/^[\\],:{}\\s]*$\/,o=\/\\\\(?:[\"\\\\\\\/bfnrt]|u[0-9a-fA-F]{4})\/g,p=\/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?\/g,q=\/(?:^|:|,)(?:\\s*\\[)+\/g,r=\/(webkit)[ \\\/]([\\w.]+)\/,s=\/(opera)(?:.*version)?[ \\\/]([\\w.]+)\/,t=\/(msie) ([\\w.]+)\/,u=\/(mozilla)(?:.*? rv:([\\w.]+))?\/,v=\/-([a-z]|[0-9])\/ig,w=\/^-ms-\/,x=function(a,b){return(b+\"\").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"&#038;&#038;!d&#038;&#038;c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"<\"||a.charAt(a.length-1)!==\">\"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&#038;&#038;(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&#038;&#038;h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&#038;&#038;(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.7.2\",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b&#038;&#038;(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"&#038;&#038;(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"&#038;&#038;!e.isFunction(i)&#038;&#038;(i={}),k===j&#038;&#038;(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&#038;&#038;f&#038;&#038;(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&#038;&#038;e.isArray(d)?d:[]):h=d&#038;&#038;e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&#038;&#038;(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&#038;&#038;(a.$=g),b&#038;&#038;a.jQuery===e&#038;&#038;(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&#038;&#038;!--e.readyWait||a!==!0&#038;&#038;!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&#038;&#038;--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&#038;&#038;e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&#038;&#038;b&#038;&#038;J()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a!=null&#038;&#038;a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&#038;&#038;isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&#038;&#038;!D.call(a,\"constructor\")&#038;&#038;!D.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON&#038;&#038;a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){if(typeof c!=\"string\"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text\/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)&#038;&#038;e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b&#038;&#038;j.test(b)&#038;&#038;(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:function(a,b){return a.nodeName&#038;&#038;a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?\"\":G.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&#038;&#038;b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&#038;&#038;d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&#038;&#038;typeof j==\"number\"&#038;&#038;(j>0&#038;&#038;a[0]&#038;&#038;a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&#038;&#038;(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&#038;&#038;(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&#038;&#038;typeof d==\"object\"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&#038;&#038;e.isFunction(f),k&#038;&#038;(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf(\"compatible\")<0&#038;&#038;u.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&#038;&#038;f instanceof e&#038;&#038;!(f instanceof a)&#038;&#038;(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){I[\"[object \"+b+\"]\"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&#038;&#038;(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&#038;&#038;(e.browser.safari=!0),j.test(\"\u00c2\u00a0\")&#038;&#038;(k=\/^[\\s\\xA0]+\/,l=\/[\\s\\xA0]+$\/),h=e(c),c.addEventListener?B=function(){c.removeEventListener(\"DOMContentLoaded\",B,!1),e.ready()}:c.attachEvent&#038;&#038;(B=function(){c.readyState===\"complete\"&#038;&#038;(c.detachEvent(\"onreadystatechange\",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h===\"array\"?n(g):h===\"function\"&#038;&#038;(!a.unique||!p.has(g))&#038;&#038;c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&#038;&#038;m<l;m++)if(c[m].apply(b,f)===!1&#038;&#038;a.stopOnFalse){e=!0;break}j=!1,c&#038;&#038;(a.once?e===!0?p.disable():c=[]:d&#038;&#038;d.length&#038;&#038;(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&#038;&#038;e!==!0&#038;&#038;(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&#038;&#038;f<=l&#038;&#038;(l--,f<=m&#038;&#038;m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&#038;&#038;p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&#038;&#038;(j?a.once||d.push([b,c]):(!a.once||!e)&#038;&#038;o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks(\"once memory\"),c=f.Callbacks(\"once memory\"),d=f.Callbacks(\"memory\"),e=\"pending\",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[b,\"reject\"],progress:[c,\"notify\"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&#038;&#038;f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+\"With\"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+\"With\"]=g[j].fireWith;i.done(function(){e=\"resolved\"},c.disable,d.lock).fail(function(){e=\"rejected\"},b.disable,d.lock),a&#038;&#038;a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&#038;&#038;a&#038;&#038;f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&#038;&#038;b[c].promise&#038;&#038;f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&#038;&#038;j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement(\"div\"),q=c.documentElement;p.setAttribute(\"className\",\"t\"),p.innerHTML=\"   \t\n\t<link\/>\n\n\n\n<table><\/table>\n\n\n\n\n<a href='\/a' style='top:1px;float:left;opacity:.55;'>a<\/a><input type='checkbox'\/>\",d=p.getElementsByTagName(\"*\"),e=p.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=p.getElementsByTagName(\"input\")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName(\"tbody\").length,htmlSerialize:!!p.getElementsByTagName(\"link\").length,style:\/top\/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"\/a\",opacity:\/^0.55\/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:p.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5Clone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"<:nav><\/:nav>\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode===\"CSS1Compat\",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&#038;&#038;p.attachEvent&#038;&#038;p.fireEvent&#038;&#038;(p.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),i.setAttribute(\"name\",\"t\"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m=\"on\"+n,o=m in p,o||(p.setAttribute(m,\"return;\"),o=typeof p[m]==\"function\"),b[n+\"Bubbles\"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName(\"body\")[0];!u||(m=1,t=\"padding:0;margin:0;border:\",r=\"position:absolute;top:0;left:0;width:1px;height:1px;\",s=t+\"0;visibility:hidden;\",n=\"style='\"+r+t+\"5px solid #000;\",q=\"\n\n\n\n<div \"+n+\"display:block;'>\n\n\n\n<div style='\"+t+\"0;display:block;overflow:hidden;'><\/div>\n\n\n\n<\/div>\n\n\n\n\n\"+\"\n\n\n\n<table \"+n+\"' cellpadding='0' cellspacing='0'>\"+\"\n\n\n\n<tr>\n\n\n\n<td><\/td>\n\n\n\n<\/tr>\n\n\n\n<\/table>\n\n\n\n\n\",d=c.createElement(\"div\"),d.style.cssText=s+\"width:0;height:0;position:static;top:0;margin-top:\"+m+\"px\",u.insertBefore(d,u.firstChild),p=c.createElement(\"div\"),d.appendChild(p),p.innerHTML=\"\n\n\n\n<table>\n\n\n\n<tr>\n\n\n\n<td style='\"+t+\"0;display:none'><\/td>\n\n\n\n\n\n\n<td>t<\/td>\n\n\n\n<\/tr>\n\n\n\n<\/table>\n\n\n\n\n\",k=p.getElementsByTagName(\"td\"),o=k[0].offsetHeight===0,k[0].style.display=\"\",k[1].style.display=\"none\",b.reliableHiddenOffsets=o&#038;&#038;k[0].offsetHeight===0,a.getComputedStyle&#038;&#038;(p.innerHTML=\"\",l=c.createElement(\"div\"),l.style.width=\"0\",l.style.marginRight=\"0\",p.style.width=\"2px\",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!=\"undefined\"&#038;&#038;(p.innerHTML=\"\",p.style.width=p.style.padding=\"1px\",p.style.border=0,p.style.overflow=\"hidden\",p.style.display=\"inline\",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display=\"block\",p.style.overflow=\"visible\",p.innerHTML=\"\n\n\n\n<div style='width:5px;'><\/div>\n\n\n\n\n\",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position=\"fixed\",g.style.top=\"20px\",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top=\"\",e.style.overflow=\"hidden\",e.style.position=\"relative\",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&#038;&#038;(p.style.marginTop=\"1%\",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!==\"1%\"),typeof d.style.zoom!=\"undefined\"&#038;&#038;(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=\/^(?:\\{.*\\}|\\[.*\\])$\/,k=\/([A-Z])\/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(\/\\D\/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&#038;&#038;!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&#038;&#038;j,o=c===\"events\";if((!n||!m[n]||!o&#038;&#038;!e&#038;&#038;!m[n].data)&#038;&#038;k&#038;&#038;d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&#038;&#038;(h[f.camelCase(c)]=d);if(o&#038;&#038;!h[c])return g.events;k?(i=h[c],i==null&#038;&#038;(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&#038;&#038;(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&#038;&#038;a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&#038;&#038;!f._data(j,\"parsedAttrs\")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf(\"data-\")===0&#038;&#038;(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,\"parsedAttrs\",!0)}}return m}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});d=a.split(\".\",2),d[1]=d[1]?\".\"+d[1]:\"\",e=d[1]+\"!\";return f.access(this,function(c){if(c===b){m=this.triggerHandler(\"getData\"+e,[d[0]]),m===b&#038;&#038;j&#038;&#038;(m=f.data(j,a),m=l(j,a,m));return m===b&#038;&#038;d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler(\"setData\"+e,d),f.data(this,a,c),b.triggerHandler(\"changeData\"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&#038;&#038;(b=(b||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&#038;&#038;(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c&#038;&#038;(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"&#038;&#038;(d=c.shift()),d&#038;&#038;(b===\"fx\"&#038;&#038;c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!=\"string\"&#038;&#038;(c=a,a=\"fx\",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a===\"fx\"&#038;&#038;b[0]!==\"inprogress\"&#038;&#038;f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"&#038;&#038;(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&#038;&#038;f.data(e[g],i,f.Callbacks(\"once memory\"),!0))h++,l.add(m);m();return d.promise(c)}});var o=\/[\\n\\t\\r]\/g,p=\/\\s+\/,q=\/\\r\/g,r=\/^(?:button|input)$\/i,s=\/^(?:button|input|object|select|textarea)$\/i,t=\/^a(?:rea)?$\/i,u=\/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$\/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&#038;&#038;typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&#038;&#038;b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h<i;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&#038;&#038;typeof a==\"string\"||a===b){c=(a||\"\").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&#038;&#038;g.className)if(a){h=(\" \"+g.className+\" \").replace(o,\" \");for(i=0,j=c.length;i<j;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className&#038;&#038;f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&#038;&#038;(\" \"+this[c].className+\" \").replace(o,\" \").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)&#038;&#038;(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&#038;&#038;\"get\"in c&#038;&#038;(d=c.get(g,\"value\"))!==b)return d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&#038;&#038;(f.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)&#038;&#038;(!e.parentNode.disabled||!f.nodeName(e.parentNode,\"optgroup\"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&#038;&#038;!h.length&#038;&#038;i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&#038;&#038;j!==3&#038;&#038;j!==8&#038;&#038;j!==2){if(e&#038;&#038;c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&#038;&#038;(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&#038;&#038;\"set\"in h&#038;&#038;i&#038;&#038;(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,\"\"+d);return d}if(h&#038;&#038;\"get\"in h&#038;&#038;i&#038;&#038;(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&#038;&#038;a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&#038;&#038;(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,\"\"),a.removeAttribute(v?e:c),h&#038;&#038;c in a&#038;&#038;(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&#038;&#038;a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue&#038;&#038;b===\"radio\"&#038;&#038;f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c&#038;&#038;(a.value=c);return b}}},value:{get:function(a,b){if(w&#038;&#038;f.nodeName(a,\"button\"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&#038;&#038;f.nodeName(a,\"button\"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&#038;&#038;i!==3&#038;&#038;i!==8&#038;&#038;i!==2){h=i!==1||!f.isXMLDoc(a),h&#038;&#038;(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&#038;&#038;\"set\"in g&#038;&#038;(e=g.set(a,d,c))!==b?e:a[c]=d:g&#038;&#038;\"get\"in g&#038;&#038;(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c&#038;&#038;c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&#038;&#038;a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!=\"boolean\"&#038;&#038;(d=a.getAttributeNode(c))&#038;&#038;d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&#038;&#038;(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&#038;&#038;(y[c]?d.nodeValue!==\"\":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.attrHooks.tabindex.set=w.set,f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===\"\"&#038;&#038;(b=\"false\"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&#038;&#038;(b.selectedIndex,b.parentNode&#038;&#038;b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype=\"encoding\"),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=\/^(?:textarea|input|select)$\/i,A=\/^([^\\.]*)?(?:\\.(.+))?$\/,B=\/(?:^|\\s)hover(\\.\\S+)?\\b\/,C=\/^key\/,D=\/^(?:mouse|contextmenu)|click\/,E=\/^(?:focusinfocus|focusoutblur)$\/,F=\/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$\/,G=function(\na){var b=F.exec(a);b&#038;&#038;(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]&#038;&#038;new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&#038;&#038;(!b[2]||(c.id||{}).value===b[2])&#038;&#038;(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&#038;&#038;(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!=\"undefined\"&#038;&#038;(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(\" \");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||\"\").split(\".\").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&#038;&#038;G(g),namespace:n.join(\".\")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&#038;&#038;a.attachEvent(\"on\"+m,i)}s.add&#038;&#038;(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&#038;&#038;f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&#038;&#038;!!(o=g.events)){b=f.trim(I(b||\"\")).split(\" \");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp(\"(^|\\\\.)\"+l.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&#038;&#038;(!c||c.guid===s.guid)&#038;&#038;(!l||l.test(s.namespace))&#038;&#038;(!d||d===s.selector||d===\"**\"&#038;&#038;s.selector)&#038;&#038;(r.splice(n--,1),s.selector&#038;&#038;r.delegateCount--,p.remove&#038;&#038;p.remove.call(a,s));r.length===0&#038;&#038;m!==r.length&#038;&#038;((!p.teardown||p.teardown.call(a,l)===!1)&#038;&#038;f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&#038;&#038;(q=g.handle,q&#038;&#038;(q.elem=null),f.removeData(a,[\"events\",\"handle\"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&#038;&#038;e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf(\"!\")>=0&#038;&#038;(h=h.slice(0,-1),k=!0),h.indexOf(\".\")>=0&#038;&#038;(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&#038;&#038;!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")<0?\"on\"+h:\"\";if(!e){j=f.cache;for(l in j)j[l].events&#038;&#038;j[l].events[h]&#038;&#038;f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&#038;&#038;p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&#038;&#038;!p.noBubble&#038;&#038;!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&#038;&#038;n===e.ownerDocument&#038;&#038;r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&#038;&#038;!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,\"events\")||{})[c.type]&#038;&#038;f._data(m,\"handle\"),q&#038;&#038;q.apply(m,d),q=o&#038;&#038;m[o],q&#038;&#038;f.acceptData(m)&#038;&#038;q.apply(m,d)===!1&#038;&#038;c.preventDefault();c.type=h,!g&#038;&#038;!c.isDefaultPrevented()&#038;&#038;(!p._default||p._default.apply(e.ownerDocument,d)===!1)&#038;&#038;(h!==\"click\"||!f.nodeName(e,\"a\"))&#038;&#038;f.acceptData(e)&#038;&#038;o&#038;&#038;e[h]&#038;&#038;(h!==\"focus\"&#038;&#038;h!==\"blur\"||c.target.offsetWidth!==0)&#038;&#038;!f.isWindow(e)&#038;&#038;(n=e[o],n&#038;&#038;(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&#038;&#038;(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,\"events\")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&#038;&#038;!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&#038;&#038;(!c.button||c.type!==\"click\")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&#038;&#038;(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&#038;&#038;r.push(s);r.length&#038;&#038;j.push({elem:m,matches:r})}}d.length>e&#038;&#038;j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&#038;&#038;!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&#038;&#038;!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&#038;&#038;!s.namespace||c.namespace_re&#038;&#038;c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&#038;&#038;(c.result=o,o===!1&#038;&#038;(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&#038;&#038;i.postDispatch.call(this,c);return c.result}},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){a.which==null&#038;&#038;(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&#038;&#038;d.clientX!=null&#038;&#038;(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&#038;&#038;f.scrollLeft||g&#038;&#038;g.scrollLeft||0)-(f&#038;&#038;f.clientLeft||g&#038;&#038;g.clientLeft||0),a.pageY=d.clientY+(f&#038;&#038;f.scrollTop||g&#038;&#038;g.scrollTop||0)-(f&#038;&#038;f.clientTop||g&#038;&#038;g.clientTop||0)),!a.relatedTarget&#038;&#038;i&#038;&#038;(a.relatedTarget=i===a.target?d.toElement:i),!a.which&#038;&#038;h!==b&#038;&#038;(a.which=h&#038;1?1:h&#038;2?3:h&#038;4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&#038;&#038;(a.target=a.target.parentNode),a.metaKey===b&#038;&#038;(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&#038;&#038;(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&#038;&#038;(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&#038;&#038;c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&#038;&#038;a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&#038;&#038;a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&#038;&#038;a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&#038;&#038;a.getPreventDefault()?K:J):this.type=a,b&#038;&#038;f.extend(this,b),this.timeStamp=a&#038;&#038;a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&#038;&#038;a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&#038;&#038;!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,\"form\"))return!1;f.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=f.nodeName(c,\"input\")||f.nodeName(c,\"button\")?c.form:b;d&#038;&#038;!d._submit_attached&#038;&#038;(f.event.add(d,\"submit._submit\",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&#038;&#038;(delete a._submit_bubble,this.parentNode&#038;&#038;!a.isTrigger&#038;&#038;f.event.simulate(\"submit\",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,\"form\"))return!1;f.event.remove(this,\"._submit\")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")f.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"&#038;&#038;(this._just_changed=!0)}),f.event.add(this,\"click._change\",function(a){this._just_changed&#038;&#038;!a.isTrigger&#038;&#038;(this._just_changed=!1,f.event.simulate(\"change\",this,a,!0))});return!1}f.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;z.test(b.nodeName)&#038;&#038;!b._change_attached&#038;&#038;(f.event.add(b,\"change._change\",function(a){this.parentNode&#038;&#038;!a.isSimulated&#038;&#038;!a.isTrigger&#038;&#038;f.event.simulate(\"change\",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"&#038;&#038;b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,\"._change\");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&#038;&#038;c.addEventListener(a,e,!0)},teardown:function(){--d===0&#038;&#038;c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a==\"object\"){typeof c!=\"string\"&#038;&#038;(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&#038;&#038;e==null?(e=c,d=c=b):e==null&#038;&#038;(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&#038;&#038;(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&#038;&#038;a.preventDefault&#038;&#038;a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+\".\"+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a==\"object\"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;d===!1&#038;&#038;(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||\"**\",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"**\"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,\"lastToggle\"+a.guid)||0)%d;f._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null&#038;&#038;(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&#038;&#038;(f.attrFn[b]=!0),C.test(b)&#038;&#038;(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&#038;&#038;(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!=\"string\"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&#038;&#038;!g&#038;&#038;(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=\/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)\/g,d=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=\/\\\\\/g,k=\/\\r\\n\/g,l=\/\\W\/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&#038;&#038;d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&#038;&#038;p.exec(b))if(w.length===2&#038;&#038;o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&#038;&#038;(b+=w.shift()),j=y(b,j,f)}else{!f&#038;&#038;w.length>1&#038;&#038;d.nodeType===9&#038;&#038;!v&#038;&#038;o.match.ID.test(w[0])&#038;&#038;!o.match.ID.test(w[w.length-1])&#038;&#038;(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&#038;&#038;(w[0]===\"~\"||w[0]===\"+\")&#038;&#038;d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q=\"\",r==null&#038;&#038;(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.apply(e,k);else if(d&#038;&#038;d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&#038;&#038;(k[t]===!0||k[t].nodeType===1&#038;&#038;m.contains(d,k[t]))&#038;&#038;e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&#038;&#038;k[t].nodeType===1&#038;&#038;e.push(j[t]);else s(k,e);l&#038;&#038;(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&#038;&#038;a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(j,\"\"),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&#038;&#038;c[0]&#038;&#038;m.isXML(c[0]);while(a&#038;&#038;c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&#038;&#038;f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)===\"\\\\\")continue;s===r&#038;&#038;(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&#038;&#038;(i=k(j,f,n,s),p=e^i,d&#038;&#038;i!=null?p?g=!0:s[n]=!1:p&#038;&#038;(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],\"\");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e=\"\";if(d){if(d===1||d===9||d===11){if(typeof a.textContent==\"string\")return a.textContent;if(typeof a.innerText==\"string\")return a.innerText.replace(k,\"\");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&#038;&#038;(e+=n(c));return e},o=m.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:\/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\/,CLASS:\/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\/,NAME:\/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]\/,ATTR:\/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]\/,TAG:\/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)\/,CHILD:\/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?\/,POS:\/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)\/,PSEUDO:\/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?\/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c&#038;&#038;!l.test(b),e=c&#038;&#038;!d;d&#038;&#038;(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&#038;&#038;h.nodeType!==1);a[f]=e||h&#038;&#038;h.nodeName.toLowerCase()===b?h||!1:h===b}e&#038;&#038;m.filter(b,a,!0)},\">\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d&#038;&#038;!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&#038;&#038;(a[e]=d?c.parentNode:c.parentNode===b);d&#038;&#038;m.filter(b,a,!0)}},\"\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"&#038;&#038;!l.test(b)&#038;&#038;(b=b.toLowerCase(),d=b,g=w),g(\"parentNode\",b,f,a,d,c)},\"~\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"&#038;&#038;!l.test(b)&#038;&#038;(b=b.toLowerCase(),d=b,g=w),g(\"previousSibling\",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"&#038;&#038;!c){var d=b.getElementById(a[1]);return d&#038;&#038;d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute(\"name\")===a[1]&#038;&#038;c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(j,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&#038;&#038;(e^(h.className&#038;&#038;(\" \"+h.className+\" \").replace(\/[\\t\\n\\r]\/g,\" \").indexOf(a)>=0)?c||d.push(h):c&#038;&#038;(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){return a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||m.error(a[0]),a[2]=a[2].replace(\/^\\+|\\s*\/g,\"\");var b=\/(-?)(\\d*)(?:n([+\\-]?\\d*))?\/.exec(a[2]===\"even\"&#038;&#038;\"2n\"||a[2]===\"odd\"&#038;&#038;\"2n+1\"||!\/\\D\/.test(a[2])&#038;&#038;\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&#038;&#038;m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,\"\");!f&#038;&#038;o.attrMap[g]&#038;&#038;(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(j,\"\"),a[2]===\"~=\"&#038;&#038;(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length>1||\/^\\w\/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&#038;&#038;a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&#038;&#038;a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return\/h\\d\/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"&#038;&#038;\"text\"===c&#038;&#038;(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"&#038;&#038;\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"&#038;&#038;\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"&#038;&#038;\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"&#038;&#038;\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")&#038;&#038;\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"&#038;&#038;\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")&#038;&#038;\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"&#038;&#038;\"button\"===a.type||b===\"button\"},input:function(a){return\/input|select|textarea|button\/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])>=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case\"only\":case\"first\":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k===\"first\")return!0;l=a;case\"last\":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case\"nth\":c=b[2],e=b[3];if(c===1&#038;&#038;e===0)return!0;f=b[0],g=a.parentNode;if(g&#038;&#038;(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&#038;&#038;(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&#038;&#038;j\/c>=0}},ID:function(a,b){return a.nodeType===1&#038;&#038;a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"&#038;&#038;a.nodeType===1||!!a.nodeName&#038;&#038;a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f&#038;&#038;m.attr?d!=null:f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)>=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)>=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e&#038;&#038;d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+\/(?![^\\[]*\\])(?![^\\(]*\\))\/.source),o.leftMatch[r]=new RegExp(\/(^(?:.|\\r|\\n)*?)\/.source+o.match[r].source.replace(\/\\\\(\\d+)\/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&#038;4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&#038;&#038;b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&#038;&#038;k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"<a name='\"+d+\"'\/>\",e.insertBefore(a,e.firstChild),c.getElementById(d)&#038;&#038;(o.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"&#038;&#038;!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"&#038;&#038;e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"&#038;&#038;a.getAttributeNode(\"id\");return a.nodeType===1&#038;&#038;c&#038;&#038;c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length>0&#038;&#038;(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&#038;&#038;d.push(c[e]);c=d}return c}),a.innerHTML=\"<a href='#'><\/a>\",a.firstChild&#038;&#038;typeof a.firstChild.getAttribute!=\"undefined\"&#038;&#038;a.firstChild.getAttribute(\"href\")!==\"#\"&#038;&#038;(o.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll&#038;&#038;function(){var a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\n\n\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=function(b,e,f,g){e=e||c;if(!g&#038;&#038;!m.isXML(e)){var h=\/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)\/.exec(b);if(h&#038;&#038;(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&#038;&#038;o.find.CLASS&#038;&#038;e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"&#038;&#038;e.body)return s([e.body],f);if(h&#038;&#038;h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&#038;&#038;e.nodeName.toLowerCase()!==\"object\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=\/^\\s*[+~]\/.test(b);l?n=n.replace(\/'\/g,\"\\\\$&#038;\"):e.setAttribute(\"id\",n),q&#038;&#038;p&#038;&#038;(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(\/\\=\\s*([^'\"\\]]*)\\s*\\]\/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&#038;&#038;!\/!=\/.test(c)){var f=b.call(a,c);if(f||!d||a.document&#038;&#038;a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\n\n\n\n<div class='test e'><\/div>\n\n\n\n\n\n\n<div class='test'><\/div>\n\n\n\n\n\";if(!!a.getElementsByClassName&#038;&#038;a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"&#038;&#038;!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&#038;&#038;(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&#038;16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[\":\"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=\/Until$\/,M=\/^(?:parents|prevUntil|prevAll)\/,N=\/,\/,O=\/^.[^:#\\[\\.,]*$\/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(T(this,a,!0),\"filter\",a)},is:function(a){return!!a&#038;&#038;(typeof a==\"string\"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&#038;&#038;g.ownerDocument&#038;&#038;g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&#038;&#038;c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]&#038;&#038;this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a&#038;&#038;a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&#038;&#038;b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&#038;&#038;typeof d==\"string\"&#038;&#038;(e=f.filter(d,e)),e=this.length>1&#038;&#038;!R[a]?f.unique(e):e,(this.length>1||N.test(d))&#038;&#038;M.test(a)&#038;&#038;(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c&#038;&#038;(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&#038;&#038;g.nodeType!==9&#038;&#038;(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&#038;&#038;e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&#038;&#038;++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&#038;&#038;a!==b&#038;&#038;c.push(a);return c}});var V=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",W=\/ jQuery\\d+=\"(?:\\d+|null)\"\/g,X=\/^\\s+\/,Y=\/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\\/>\/ig,Z=\/<([\\w:]+)\/,$=\/\n\n\n<tbody\/i,_=\/<|&#038;#?\\w+;\/,ba=\/<(?:script|style)\/i,bb=\/<(?:script|object|embed|option|style)\/i,bc=new RegExp(\"<(?:\"+V+\")[\\\\s\/>]\",\"i\"),bd=\/checked\\s*(?:[^=]|=\\s*.checked.)\/i,be=\/\\\/(java|ecma)script\/i,bf=\/^\\s*<!(?:\\[CDATA\\[|\\-\\-)\/,bg={option:[1,\"<select multiple='multiple'>\",\"<\/select>\"],legend:[1,\"\n\n\n\n<fieldset>\",\"<\/fieldset>\n\n\n\n\n\"],thead:[1,\"\n\n\n\n<table>\",\"<\/table>\n\n\n\n\n\"],tr:[2,\"\n\n\n\n<table>\n\n\n\n<tbody>\",\"<\/tbody>\n\n\n\n<\/table>\n\n\n\n\n\"],td:[3,\"\n\n\n\n<table>\n\n\n\n<tbody>\n\n\n\n<tr>\",\"<\/tr>\n\n\n\n<\/tbody>\n\n\n\n<\/table>\n\n\n\n\n\"],col:[2,\"\n\n\n\n<table>\n\n\n\n<tbody><\/tbody>\n\n\n\n\n\n<colgroup>\",\"<\/colgroup>\n\n\n<\/table>\n\n\n\n\n\"],area:[1,\"\n\n\n<map>\",\"<\/map>\n\n\n\n\"],_default:[0,\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div\n\n\n\n<div>\",\"<\/div>\n\n\n\n\n\"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&#038;&#038;this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&#038;&#038;b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&#038;&#038;a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&#038;&#038;this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&#038;&#038;this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&#038;&#038;this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f\n.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]&#038;&#038;this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&#038;&#038;d.nodeType===1&#038;&#038;(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode&#038;&#038;d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&#038;&#038;f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"&#038;&#038;!ba.test(a)&#038;&#038;(f.support.leadingWhitespace||!X.test(a))&#038;&#038;!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"<$1><\/$2>\");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&#038;&#038;(f.cleanData(c.getElementsByTagName(\"*\")),c.innerHTML=a);c=0}catch(g){}}c&#038;&#038;this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&#038;&#038;this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"&#038;&#038;(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&#038;&#038;arguments.length===3&#038;&#038;typeof j==\"string\"&#038;&#038;bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&#038;&#038;j.parentNode,f.support.parentNode&#038;&#038;i&#038;&#038;i.nodeType===11&#038;&#038;i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&#038;&#038;f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&#038;&#038;l<n?f.clone(h,!0,!0):h)}k.length&#038;&#038;f.each(k,function(a,b){b.src?f.ajax({type:\"GET\",global:!1,url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bf,\"\/*$0*\/\")),b.parentNode&#038;&#038;b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&#038;&#038;b[0]&#038;&#038;(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&#038;&#038;typeof j==\"string\"&#038;&#038;j.length<512&#038;&#038;i===c&#038;&#038;j.charAt(0)===\"<\"&#038;&#038;!bb.test(j)&#038;&#038;(f.support.checkClone||!bd.test(j))&#038;&#038;(f.support.html5Clone||!bc.test(j))&#038;&#038;(g=!0,h=f.fragments[j],h&#038;&#038;h!==1&#038;&#038;(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&#038;&#038;(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&#038;&#038;this[0].parentNode;if(g&#038;&#038;g.nodeType===11&#038;&#038;g.childNodes.length===1&#038;&#038;e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test(\"<\"+a.nodeName+\">\")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&#038;&#038;(a.nodeType===1||a.nodeType===11)&#038;&#038;!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&#038;&#038;bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement==\"undefined\"&#038;&#038;(b=b.ownerDocument||b[0]&#038;&#038;b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l==\"number\"&#038;&#038;(l+=\"\");if(!l)continue;if(typeof l==\"string\")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,\"<$1><\/$2>\");var m=(Z.exec(l)||[\"\",\"\"])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement(\"div\"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m===\"table\"&#038;&#038;!s?p.firstChild&#038;&#038;p.firstChild.childNodes:n[1]===\"\n\n\n\n<table>\"&#038;&#038;!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],\"tbody\")&#038;&#038;!t[i].childNodes.length&#038;&#038;t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&#038;&#038;X.test(l)&#038;&#038;p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&#038;&#038;(p.parentNode.removeChild(p),q.length>0&#038;&#038;(r=q[q.length-1],r&#038;&#038;r.parentNode&#038;&#038;r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&#038;&#038;typeof (u=l.length)==\"number\")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&#038;&#038;f.nodeName(h,\"script\")&#038;&#038;(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName(\"script\"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&#038;&#038;f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&#038;&#038;b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&#038;&#038;(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&#038;&#038;i.removeAttribute(f.expando),delete d[c]}}}});var bp=\/alpha\\([^)]*\\)\/i,bq=\/opacity=([^)]*)\/,br=\/([A-Z]|^ms)\/g,bs=\/^[\\-+]?(?:\\d*\\.)?\\d+$\/i,bt=\/^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$\/i,bu=\/^([\\-+])=([\\-+.\\de]+)\/,bv=\/^margin\/,bw={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bx=[\"Top\",\"Right\",\"Bottom\",\"Left\"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,\"opacity\");return c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!!a&#038;&#038;a.nodeType!==3&#038;&#038;a.nodeType!==8&#038;&#038;!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&#038;&#038;\"get\"in k&#038;&#038;(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"&#038;&#038;(g=bu.exec(d))&#038;&#038;(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h===\"number\"&#038;&#038;isNaN(d))return;h===\"number\"&#038;&#038;!f.cssNumber[i]&#038;&#038;(d+=\"px\");if(!k||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"&#038;&#038;(c=\"float\");if(g&#038;&#038;\"get\"in g&#038;&#038;(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&#038;&#038;c.defaultView.getComputedStyle&#038;&#038;(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)&#038;&#038;(e=d.getComputedStyle(a,null))&#038;&#038;(c=e.getPropertyValue(b),c===\"\"&#038;&#038;!f.contains(a.ownerDocument.documentElement,a)&#038;&#038;(c=f.style(a,b))),!f.support.pixelMargin&#038;&#038;e&#038;&#038;bv.test(b)&#038;&#038;bt.test(c)&#038;&#038;(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&#038;&#038;(bA=function(a,b){var c,d,e,f=a.currentStyle&#038;&#038;a.currentStyle[b],g=a.style;f==null&#038;&#038;g&#038;&#038;(e=g[b])&#038;&#038;(f=e),bt.test(f)&#038;&#038;(c=g.left,d=a.runtimeStyle&#038;&#038;a.runtimeStyle.left,d&#038;&#038;(a.runtimeStyle.left=a.currentStyle.left),g.left=b===\"fontSize\"?\"1em\":f,f=g.pixelLeft+\"px\",g.left=c,d&#038;&#038;(a.runtimeStyle.left=d));return f===\"\"?\"auto\":f}),by=bz||bA,f.each([\"height\",\"width\"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+\"px\":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&#038;&#038;a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)\/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d&#038;&#038;d.filter||c.filter||\"\";c.zoom=1;if(b>=1&#038;&#038;f.trim(g.replace(bp,\"\"))===\"\"){c.removeAttribute(\"filter\");if(d&#038;&#038;!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:\"inline-block\"},function(){return b?by(a,\"margin-right\"):a.style.marginRight})}})}),f.expr&#038;&#038;f.expr.filters&#038;&#038;(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&#038;&#038;c===0||!f.support.reliableHiddenOffsets&#038;&#038;(a.style&#038;&#038;a.style.display||f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.split(\" \"):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=\/%20\/g,bD=\/\\[\\]$\/,bE=\/\\r?\\n\/g,bF=\/#.*$\/,bG=\/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$\/mg,bH=\/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$\/i,bI=\/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$\/,bJ=\/^(?:GET|HEAD)$\/,bK=\/^\\\/\\\/\/,bL=\/\\?\/,bM=\/<script\\b[^<]*(?:(?!<\\\/script>)<[^<]*)*<\\\/script>\/gi,bN=\/^(?:select|textarea)\/i,bO=\/\\s+\/,bP=\/([?&#038;])_=[^&#038;]*\/,bQ=\/^([\\w\\+\\.\\-]+:)(?:\\\/\\\/([^\\\/?#:]*)(?::(\\d+))?)?\/,bR=f.fn.load,bS={},bT={},bU,bV,bW=[\"*\/\"]+[\"*\"];try{bU=e.href}catch(bX){bU=c.createElement(\"a\"),bU.href=\"\",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"string\"&#038;&#038;bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(\" \");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c&#038;&#038;(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"&#038;&#038;(c=f.param(c,f.ajaxSettings.traditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&#038;&#038;(a.done(function(a){c=a}),i.html(g?f(\"\n\n\n\n<div>\").append(c.replace(bM,\"\")).find(g):c)),d&#038;&#038;i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&#038;&#038;!this.disabled&#038;&#038;(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,\"\\r\\n\")}}):{name:b.name,value:c.replace(bE,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&#038;&#038;(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"script\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:\"GET\",contentType:\"application\/x-www-form-urlencoded; charset=UTF-8\",processData:!0,async:!0,accepts:{xml:\"application\/xml, text\/xml\",html:\"text\/html\",text:\"text\/plain\",json:\"application\/json, text\/javascript\",\"*\":bW},contents:{xml:\/xml\/,html:\/html\/,json:\/json\/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&#038;&#038;clearTimeout(q),p=b,n=m||\"\",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&#038;&#038;a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w=\"notmodified\",o=!0;else try{r=cb(d,x),w=\"success\",o=!0}catch(A){w=\"parsererror\",u=A}}else{u=w;if(!w||a)w=\"error\",a<0&#038;&#038;(a=0)}v.status=a,v.statusText=\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&#038;&#038;g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&#038;&#038;(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxStop\"))}}typeof a==\"object\"&#038;&#038;(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&#038;&#038;(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"abort\",p&#038;&#038;p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\"\").replace(bF,\"\").replace(bK,bV[1]+\"\/\/\"),d.dataTypes=f.trim(d.dataType||\"*\").toLowerCase().split(bO),d.crossDomain==null&#038;&#038;(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&#038;&#038;r[2]==bV[2]&#038;&#038;(r[3]||(r[1]===\"http:\"?80:443))==(bV[3]||(bV[1]===\"http:\"?80:443)))),d.data&#038;&#038;d.processData&#038;&#038;typeof d.data!=\"string\"&#038;&#038;(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&#038;&#038;f.active++===0&#038;&#038;f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data&#038;&#038;(d.url+=(bL.test(d.url)?\"&#038;\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,\"$1_=\"+x);d.url=y+(y===d.url?(bL.test(d.url)?\"&#038;\":\"?\")+\"_=\"+x:\"\")}}(d.data&#038;&#038;d.hasContent&#038;&#038;d.contentType!==!1||c.contentType)&#038;&#038;v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified&#038;&#038;(k=k||d.url,f.lastModified[k]&#038;&#038;v.setRequestHeader(\"If-Modified-Since\",f.lastModified[k]),f.etag[k]&#038;&#038;v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequestHeader(\"Accept\",d.dataTypes[0]&#038;&#038;d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bW+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&#038;&#038;(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readyState=1,t&#038;&#038;g.trigger(\"ajaxSend\",[v,d]),d.async&#038;&#038;d.timeout>0&#038;&#038;(q=setTimeout(function(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b&#038;&#038;(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&#038;&#038;!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join(\"&#038;\").replace(bC,\"+\")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=\/(\\=)\\?(&#038;|$)|\\?\\?\/i;f.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cc++}}),f.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e=typeof b.data==\"string\"&#038;&#038;\/^application\\\/x\\-www\\-form\\-urlencoded\/.test(b.contentType);if(b.dataTypes[0]===\"jsonp\"||b.jsonp!==!1&#038;&#038;(cd.test(b.url)||e&#038;&#038;cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1&#038;&#038;(j=j.replace(cd,l),b.url===j&#038;&#038;(e&#038;&#038;(k=k.replace(cd,l)),b.data===k&#038;&#038;(j+=(\/\\?\/.test(j)?\"&#038;\":\"?\")+b.jsonp+\"=\"+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&#038;&#038;f.isFunction(i)&#038;&#038;a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}),f.ajaxSetup({accepts:{script:\"text\/javascript, application\/javascript, application\/ecmascript, application\/x-ecmascript\"},contents:{script:\/javascript|ecmascript\/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter(\"script\",function(a){a.cache===b&#038;&#038;(a.cache=!1),a.crossDomain&#038;&#038;(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElement;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.scriptCharset&#038;&#038;(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||\/loaded|complete\/.test(d.readyState))d.onload=d.onreadystatechange=null,e&#038;&#038;d.parentNode&#038;&#038;e.removeChild(d),d=b,c||g(200,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d&#038;&#038;d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&#038;&#038;ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&#038;&#038;\"withCredentials\"in a})}(f.ajaxSettings.xhr()),f.support.ajax&#038;&#038;f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&#038;&#038;h.overrideMimeType&#038;&#038;h.overrideMimeType(c.mimeType),!c.crossDomain&#038;&#038;!e[\"X-Requested-With\"]&#038;&#038;(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&#038;&#038;c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&#038;&#038;(e||h.readyState===4)){d=b,i&#038;&#038;(h.onreadystatechange=f.noop,ce&#038;&#038;delete cg[i]);if(e)h.readyState!==4&#038;&#038;h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&#038;&#038;n.documentElement&#038;&#038;(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=\"\"}!j&#038;&#038;c.isLocal&#038;&#038;!c.crossDomain?j=m.text?200:404:j===1223&#038;&#038;(j=204)}}}catch(p){e||g(-1,p)}m&#038;&#038;g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&#038;&#038;(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&#038;&#038;d(0,1)}}}});var cj={},ck,cl,cm=\/^(?:toggle|show|hide)$\/,cn=\/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$\/i,co,cp=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct(\"show\",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&#038;&#038;(e=d.style.display,!f._data(d,\"olddisplay\")&#038;&#038;e===\"none\"&#038;&#038;(e=d.style.display=\"\"),(e===\"\"&#038;&#038;f.css(d,\"display\")===\"none\"||!f.contains(d.ownerDocument.documentElement,d))&#038;&#038;f._data(d,\"olddisplay\",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.style.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct(\"hide\",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&#038;&#038;(e=f.css(d,\"display\"),e!==\"none\"&#038;&#038;!f._data(d,\"olddisplay\")&#038;&#038;f._data(d,\"olddisplay\",e));for(g=0;g<h;g++)this[g].style&#038;&#038;(this[g].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)&#038;&#038;f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(ct(\"toggle\",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&#038;&#038;f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&#038;&#038;f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&#038;&#038;(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&#038;&#038;\"expand\"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&#038;&#038;b.specialEasing[g]||b.easing||\"swing\";if(h===\"hide\"&#038;&#038;d||h===\"show\"&#038;&#038;!d)return b.complete.call(this);c&#038;&#038;(g===\"height\"||g===\"width\")&#038;&#038;(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,\"display\")===\"inline\"&#038;&#038;f.css(this,\"float\")===\"none\"&#038;&#038;(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)===\"inline\"?this.style.display=\"inline-block\":this.style.zoom=1))}b.overflow!=null&#038;&#038;(this.style.overflow=\"hidden\");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,\"toggle\"+i)||(h===\"toggle\"?d?\"show\":\"hide\":0),q?(f._data(this,\"toggle\"+i,q===\"show\"?\"hide\":\"show\"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?\"\":\"px\"),p!==\"px\"&#038;&#038;(f.style(this,i,(o||1)+p),n=(o||1)\/j.cur()*n,f.style(this,i,n+p)),m[1]&#038;&#038;(o=(m[1]===\"-=\"?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,\"\"));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!=\"string\"&#038;&#038;(d=c,c=a,a=b),c&#038;&#038;a!==!1&#038;&#038;this.queue(a||\"fx\",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&#038;&#038;g[b].stop&#038;&#038;b.indexOf(\".run\")===b.length-4&#038;&#038;h(this,g,b);else g[b=a+\".run\"]&#038;&#038;g[b].stop&#038;&#038;h(this,g,b);for(b=e.length;b--;)e[b].elem===this&#038;&#038;(a==null||e[b].queue===a)&#038;&#038;(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&#038;&#038;f.dequeue(this,a)})}}),f.each({slideDown:ct(\"show\",1),slideUp:ct(\"hide\",1),slideToggle:ct(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&#038;&#038;typeof a==\"object\"?f.extend({},a):{complete:c||!c&#038;&#038;b||f.isFunction(a)&#038;&#038;a,duration:a,easing:c&#038;&#038;b||b&#038;&#038;!f.isFunction(b)&#038;&#038;b};d.duration=f.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&#038;&#038;d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&#038;&#038;f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)\/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&#038;&#038;this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&#038;&#038;(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?\"\":\"px\"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,\"fxshow\"+e.prop)===b&#038;&#038;(e.options.hide?f._data(e.elem,\"fxshow\"+e.prop,e.start):e.options.show&#038;&#038;f._data(e.elem,\"fxshow\"+e.prop,e.end))},h()&#038;&#038;f.timers.push(h)&#038;&#038;!co&#038;&#038;(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,\"fxshow\"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&#038;&#038;(g=!1);if(g){i.overflow!=null&#038;&#038;!f.support.shrinkWrapBlocks&#038;&#038;f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"overflow\"+b]=i.overflow[a]}),i.hide&#038;&#038;f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.removeData(h,\"toggle\"+b,!0);d=i.complete,d&#038;&#038;(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c\/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&#038;&#038;b[c]===a&#038;&#038;b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.style&#038;&#038;a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf(\"margin\")&#038;&#038;(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&#038;&#038;f.expr.filters&#038;&#038;(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=\/^t(?:able|d|h)$\/i,cx=\/^(?:body|html)$\/i;\"getBoundingClientRect\"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&#038;&#038;c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&#038;&#038;c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&#038;&#038;a!==h&#038;&#038;a!==c){if(f.support.fixedPosition&#038;&#038;j.position===\"fixed\")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&#038;&#038;(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&#038;&#038;(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&#038;&#038;(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&#038;&#038;d.overflow!==\"visible\"&#038;&#038;(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position===\"relative\"||j.position===\"static\")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&#038;&#038;j.position===\"fixed\"&#038;&#038;(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&#038;&#038;c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&#038;&#038;(b+=parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d===\"static\"&#038;&#038;(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")&#038;&#038;f.inArray(\"auto\",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&#038;&#038;(b=b.call(a,c,g)),b.top!=null&#038;&#038;(k.top=b.top-g.top+m),b.left!=null&#038;&#038;(k.left=b.left-g.left+n),\"using\"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&#038;&#038;!cx.test(a.nodeName)&#038;&#038;f.css(a,\"position\")===\"static\")a=a.offsetParent;return a})}}),f.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=\/Y\/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&#038;&#038;h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:\"height\",Width:\"width\"},function(a,c){var d=\"client\"+a,e=\"scroll\"+a,g=\"offset\"+a;f.fn[\"inner\"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,\"padding\")):this[c]():null},f.fn[\"outer\"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?\"margin\":\"border\")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&#038;&#038;j||i.body&#038;&#038;i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define==\"function\"&#038;&#038;define.amd&#038;&#038;define.amd.jQuery&#038;&#038;define(\"jquery\",[],function(){return f})})(window);\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/*!\n * ClearlyComponent\n * Offer up Clearly's content detection algorithm as an embeddable component.\n *\n * http:\/\/evernote.com\/clearly\/\n * Copyright 2012, Evernote Corporation\n *\n * Requires:\n *   window.jQueryForClearlyComponent -- an instance of jQuery\n *\n * Definition:\n *   window.ClearlyComponent\n *     getContentElementAndHTML(_windowObject, _callbackFunction) {\n *       _callbackFunction({\n *         '_elements':     [ (nodeObjects) ],\n *         '_html':         (string),\n *         '_title':        (string),\n *         '_multiPage':    (bool),\n *         '_rtl':          (bool)\n *       });\n *     }\n *     getOtherPagesHTML(_callbackFunction) {\n *       _callbackFunction(\n *         [\n *           {\n *             '_html': (string),\n *             '_url': (string) \n *           }\n *         ]\n *       );\n *     }\n *\/\nfunction initClearly( window ) { \/* override window object and undefined *\/\n\n    \/\/  set main objects\n    \/\/  ================\n        var $C = { 'version': '3335.890.162' };\n        var $ = window.jQueryForClearlyComponent;\n        var $R = { 'component': true };\n\n    \/\/  getContentElementAndHTML\n    \/\/  ========================\n        $C.getContentElementAndHTML = function (_windowObject, _callbackFunction)\n        {\n            \/\/  we're basically duplicating $R.getContent__find\n            \/\/  ===============================================\n\n            \/\/\tget content\n            \/\/\t===========\n                var \n                    _found = $R.getContent__findInPage($R.win),\n                    _targetNode = _found._targetCandidate.__node,\n                    _$targetNode = $(_targetNode),\n                    _aboveNodes = []\n                ;\n\n            \/\/\tRTL\n            \/\/\t===\n                switch (true)\n                {\n                    case (_$targetNode.attr('dir') == 'rtl'):\n                    case (_$targetNode.css('direction') == 'rtl'):\n                        $R.makeRTL();\n                        break;\n                }\n\n            \/\/  get html\n            \/\/  ========\n                var \n                    _foundHTML = _found._html,\n                    _firstFragmentBefore = $R.getContent__nextPage__getFirstFragment(_foundHTML),\n                    _documentTitle = ($R.document.title > '' ? $R.document.title : '')\n                ;\n\n            \/\/  get title\n            \/\/  =========\n\n                \/\/  has title already?\n                _foundHTML = $R.getContent__find__isolateTitleInHTML(_foundHTML, _documentTitle);\n                $R.articleTitle = $R.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                $R.debugPrint('TitleSource', 'target');\n\n                \/\/  get html above?\n                if ($R.articleTitle > ''); else\n                {\n\n    \/\/  get html above target?\n    \/\/  ======================\n\n    \/\/  global vars:\n    \/\/      _found\n    \/\/      _foundHTML\n    \/\/      _documentTitle\n    \/\/      _aboveNodes\n\n    var \n        _prevNode = _found._targetCandidate.__node,\n        _prevHTML = '',\n        _aboveHTML = '',\n        _differentTargets = (_found._firstCandidate.__node != _found._targetCandidate.__node)\n    ;\n\n    (function () \n    {\n\n        while (true)\n        {\n            \/\/  the end?\n            switch (true)\n            {\n                case (_prevNode.tagName &#038;&#038; (_prevNode.tagName.toLowerCase() == 'body')):\n                case (_differentTargets &#038;&#038; (_prevNode == _found._firstCandidate.__node)):\n                    \/\/  enough is enough\n                    return;\n            }\n\n            \/\/  up or sideways?\n            if (_prevNode.previousSibling); else\n            {\n                _prevNode = _prevNode.parentNode;\n                continue;\n            }\n\n            \/\/\tprevious\n            _prevNode = _prevNode.previousSibling;\n\n            \/\/\toutline -- element might be re-outlined, when buildHTML is invoked\n            if ($R.debug) { $R.debugOutline(_prevNode, 'target', 'add-above'); }\n\n            \/\/\tget html; add\n            _prevHTML = $R.getContent__buildHTMLForNode(_prevNode, 'above-the-target');\n            _aboveHTML = _prevHTML + _aboveHTML;\n            _aboveNodes.unshift(_prevNode);\n\n            \/\/  isolate title\n            _aboveHTML = $R.getContent__find__isolateTitleInHTML(_aboveHTML, _documentTitle);\n\n            \/\/\tfinished?\n            switch (true)\n            {\n                case ($R.measureText__getTextLength(_aboveHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ')) > (65 * 3 * 3)):\n                case ($R.getContent__find__hasIsolatedTitleInHTML(_aboveHTML)):\n                    return;\n            }\n        }\n\n    })();\n\n    \/\/  is what we found any good?\n    \/\/  ==========================\n    switch (true)\n    {\n        case ($R.getContent__find__hasIsolatedTitleInHTML(_aboveHTML)):\n        case (_differentTargets &#038;&#038; (_aboveHTML.split('<a ').length < 3) &#038;&#038; ($R.measureText__getTextLength(_aboveHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ')) < (65 * 3))):\n            _foundHTML = _aboveHTML + _foundHTML;\n            break;\n\n        default:\n            _aboveHTML = '';\n            _aboveNodes = [];\n            break;\n    }\n\n                    $R.articleTitle = $R.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                    $R.debugPrint('TitleSource', 'above_HTML');\n\n                    \/\/  get document title?\n                    if ($R.articleTitle > ''); else\n                    {\n\n    \/\/  if all else failed, get document title\n    \/\/  ======================================\n\n    \/\/  global vars:\n    \/\/      _foundHTML\n    \/\/      _documentTitle\n\n    (function ()\n    {\n        \/\/  return?\n        \/\/  =======\n            if (_documentTitle > ''); else { return; }\n\n        \/\/  vars\n            var\n                _doc_title_parts = [],\n                _doc_title_pregs =\n                [\n                    \/( [-][-] |( [-] )|( [>][>] )|( [<][<] )|( [|] )|( [\\\/] ))\/i,\n                    \/(([:] ))\/i\n                ]\n            ;\n\n        \/\/\tloop through pregs\n        \/\/  ==================\n            for (var i=0, _i=_doc_title_pregs.length; i<_i; i++)\n            {\n                \/\/\tsplit\n                _doc_title_parts = _documentTitle.split(_doc_title_pregs[i]);\n\n                \/\/\tbreak if we managed a split\n                if (_doc_title_parts.length > 1) { break; }\n            }\n\n        \/\/\tsort title parts -- longer goes higher up -- i.e. towards 0\n        \/\/\t================\n            _doc_title_parts.sort(function (a, b)\n            {\n                switch (true)\n                {\n                    case (a.length > b.length): return -1;\n                    case (a.length < b.length): return 1;\n                    default: return 0;\n                }\n            });\n\n        \/\/\tset title -- first part, if more than one word; otherwise, whole\n        \/\/  =========\n            _foundHTML = ''\n\n                + $R.articleTitleMarker__start\n                +   (_doc_title_parts[0].split(\/\\s+\/i).length > 1 ? _doc_title_parts[0] : _documentTitle) \n                + $R.articleTitleMarker__end \n\n                + _foundHTML\n            ;\n\n    })();\n                        $R.articleTitle = $R.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                        $R.debugPrint('TitleSource', 'document_title');\n                    }\n                }\n\n            \/\/\tremember\n            \/\/\t========\n                $R.debugRemember['theTarget'] = _found._targetCandidate.__node;\n                $R.debugRemember['firstCandidate'] = _found._firstCandidate.__node;\n\n            \/\/\tnext\n            \/\/\t====\n                $C._nextPages = [];\n\n                $R.nextPage__firstFragment__firstPage = _firstFragmentBefore;\n                $R.nextPage__firstFragment__lastPage = $R.getContent__nextPage__getFirstFragment(_foundHTML);;\n\n                $R.nextPage__loadedPages = [$R.win.location.href];\n                $R.getContent__nextPage__find($R.win, _found._links);\n\n            \/\/\tresult\n            var\n                _result = {\n                    '_html': _foundHTML,\n                    '_title': $R.articleTitle,\n                    '_multiPage': ($R.nextPage__loadedPages.length > 1),\n                    '_rtl': $R.rtl\n                }\n            ;\n\n            \/\/  add elements\n            _result['_elements'] = _aboveNodes;\n            _result['_elements'].push(_found._targetCandidate.__node);\n\n            \/\/  return\n            _callbackFunction(_result);\n        };\n\n    \/\/  getOtherPagesHTML\n    \/\/  =================\n        $C.getOtherPagesHTML = function (_callbackFunction)\n        {\n            \/\/  curent length\n            var \n                _currentLength = $C._nextPages.length\n                _checkFunction = function ()\n                {\n                    if ($C._nextPages.length == _currentLength)\n                    {\n                        \/\/  return\n                        _callbackFunction($C._nextPages);\n                    }\n                    else\n                    {\n                        \/\/  reset\n                        _currentLength = $C._nextPages.length;\n                        window.setTimeout(_checkFunction, 2000);\n                    }\n                }\n            ;\n\n            \/\/  set first timeout\n            window.setTimeout(_checkFunction, 2000);\n        };\n\n    \/\/  includes -- bind to $R\n    \/\/  ========\n\n        \/\/  target\n        \/\/  ======\n\n            \/\/  globals\n            \/\/  =======\n                $R.win = window;\n                $R.document = window.document;\n\n                $R.$win = $($R.win);\n                $R.$document = $($R.document);\n\n            \/\/\tinit\n            \/\/\t====\n\n    \/\/  version\n    \/\/  =======\n        $R.version = '3335.890.162';\n\n\t\/\/\tpaths\t\n\t\/\/\t=====\n\t\t$R.paths = \n\t\t{\n\t\t\t'main':\t\t'none',\n\t\t\t'evernote':\t'https:\/\/www.evernote.com\/'\n\t\t};\n\n\t\/\/\tversioning\n\t\/\/\t==========\n\t\t$R.versioning =\n\t\t{\n\t\t\t'file_name_bulk_js': \t\t    'bulk.js',\n\t\t\t'file_name_bulk_css':\t\t    'bulk.css',\n\t\t\t'file_name_jQuery_js':\t\t    'jQuery.js',\n\t\t\t'file_name_miniColors_js':\t    'jquery.miniColors.js',\n\t\t\t'file_name_miniColors_css':\t    'jquery.miniColors.css',\n\t\t\t'file_name_flexSelect_js':\t    'jquery.flexSelect.js',\n\t\t\t'file_name_liquidMetal_js':\t    'liquidMetal.js',\n\t\t\t'file_name_flexSelect_css':\t    'flexSelect.css',\n\n            'file_name_base--theme-1_css':\t'base--theme-1.css',\n            'file_name_base--theme-2_css':\t'base--theme-2.css',\n            'file_name_base--theme-3_css':\t'base--theme-3.css',\n            'file_name_base--blueprint_css':'base--theme-blueprint.css'\n\t\t};\n\n            \/\/\twrite\n            \/\/\t=====\n                var \n                    _body = $R.document.getElementsByTagName('body')[0],\n                    _component__next_pages_container_element = $R.document.createElement('div'),\n                    _component__in_page_css_element = $R.document.createElement('style'),\n                    _component__in_page_css_text = ''\n                    +\t'#next_pages_container { '\n                    +\t\t'width: 5px; hight: 5px; '\n                    +\t\t'position: absolute; '\n                    +\t\t'top: -100px; left: -100px; '\n                    +\t\t'z-index: 2147483647 !important; '\n                    +\t'} '\n                ;\n                    if(!_body) {\n                        _body = $R.document.getElementsByTagName(\"frameset\")[0];\n                    }\n\n                \/\/  css\n                \/\/  ===\n                    _component__in_page_css_element.setAttribute('id', '_clearly_component__css');\n                    _component__in_page_css_element.setAttribute('type', 'text\/css');\n\n                    if (_component__in_page_css_element.styleSheet) { _component__in_page_css_element.styleSheet.cssText = _component__in_page_css_text; }\n                    else { _component__in_page_css_element.appendChild(document.createTextNode(_component__in_page_css_text)); }\n\n                    _body.appendChild(_component__in_page_css_element);\n\n                \/\/  next pages\n                \/\/  ==========\n                    _component__next_pages_container_element.setAttribute('id', '_clearly_component__next_pages_container');\n                    _body.appendChild(_component__next_pages_container_element);\n                    $R.$nextPages = $('#_clearly_component__next_pages_container');\n\n        \/\/  bulk\n        \/\/  ====\n\n            \/\/\tdebug\n            \/\/\t=====\n\n\t\/\/\tdefaults to false\n\tif ($R.debug); else { $R.debug = false; }\n\n\t\/\/\tmake it faster -- when not debugging\n\t\/\/\t==============\n\tif (!($R.debug))\n\t{\n\t\t$R.debugRemember = {};\n\n\t\t$R.writeLog \t\t= function () { return false; };\n\t\t$R.log \t\t\t\t= function () { return false; };\n\n\t\t$R.debugTimerStart \t= function () { return false; };\n\t\t$R.debugTimerEnd \t= function () { return false; };\n\n\t\t$R.debugPrint \t\t= function () { return false; };\n\t\t$R.printDebugOutput = function () { return false; };\n\n\t\t$R.debugOutline \t= function () { return false; };\n\t}\n\telse\n\t{\n\t\t\/\/\tremember stuff\n\t\t\t$R.debugRemember = {};\n\n\t\t\/\/\tvars\n\t\t\/\/\t====\n\t\t\t$R.debugStuff = [];\n\t\t\t$R.debugTimers = [];\n\n\t\t\/\/\twrite log\n\t\t\/\/\t=========\n\t\t\t$R.initializeWriteLogFunction = function ()\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (!(!($R.win.console &#038;&#038; $R.win.console.log))):\n\t\t\t\t\t\t$R.writeLog = function (msg) { $R.win.console.log(msg); };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase (!(!($R.win.opera &#038;&#038; $R.win.opera.postError))):\n\t\t\t\t\t\t$R.writeLog = function (msg) { $R.win.opera.postError(msg); };\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t$R.writeLog = function (msg) {};\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\/\/\tlog\n\t\t\/\/\t===\n\t\t\t$R.initializeWriteLogFunction();\n\t\t\t$R.log = function ()\n\t\t\t{\n                if ($R.debug); else { return; }\n\n\t\t\t\tfor (var i=0, il=arguments.length; i<il ; i++)\n\t\t\t\t\t{ $R.writeLog(arguments[i]); }\n\n\t\t\t\t$R.writeLog('-----------------------------------------');\n\t\t\t};\n\n\t\t\/\/\toutline\n\t\t\/\/\t=======\n\t\t\t$R.debugOutline = function (_element, _category, _reason)\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n                    case (!$R.debug):\n\t\t\t\t\tcase (!(_element.nodeType === 1)):\n\t\t\t\t\tcase (!(_element.tagName > '')):\n\t\t\t\t\tcase (_element.tagName.toLowerCase() == 'onject'):\n\t\t\t\t\tcase (_element.tagName.toLowerCase() == 'embed'):\n\t\t\t\t\t\treturn;\n                }\n\n                var \n                    _outline = '#ff5500',\n                    _background = 'rgba(255, 85, 0, 0.5)'\n                ;\n\n                \/\/  choose\n                switch (true)\n                {\n                    case (_category == 'target' &#038;&#038; _reason == 'first'):\n                        _outline = '#00cc00';\n                        _background = 'rgba(0, 255, 0, 0.5)';\n                        break;\n\n                    case (_category == 'target' &#038;&#038; _reason == 'second'):\n                        _outline = '#0000cc';\n                        _background = 'rgba(0, 0, 255, 0.5)';\n                        break;\n\n                    \/\/  =====\n\n                    case (_category == 'target' &#038;&#038; _reason == 'next-page'):\n                        _outline = '#FF80C0';\n                        _background = 'rgba(255, 128, 192, 0.5)';\n                        break;\n\n                    case (_category == 'target' &#038;&#038; _reason == 'add-above'):\n                        _outline = '#804000';\n                        _background = 'rgba(128, 64, 0, 0.5)';\n                        break;\n\n                    \/\/  =====\n\n                    case (_category == 'clean-before' &#038;&#038; _reason == 'floating'):\n                        _outline = '#808080';\n                        _background = 'rgba(128, 128, 128, 0.5)';\n                        break;\n\n                    case (_category == 'clean-after' &#038;&#038; _reason == 'missing-density'):\n                        _outline = '#C0C0C0';\n                        _background = 'rgba(192, 192, 192, 0.5)';\n                        break;\n\n                    case (_category == 'clean-after' || _category == 'clean-before'):\n                        _outline = '#000000';\n                        _background = 'rgba(0, 0, 0, 0.5)';\n                        break;\n                }\n\n                \/\/  do\n                $(_element).attr('readable__outline', (_category + ': ' + _reason));\n                $(_element).css({\n                    'outline': '5px solid ' + _outline,\n                    'background-color': '' + _background\n                });\n\t\t\t};\n\n            $R.debugBackground = function (_element, _category, _reason)\n            {\n                if ($R.debug); else { return; }\n\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (!(_element.nodeType === 1)):\n\t\t\t\t\tcase (!(_element.tagName > '')):\n\t\t\t\t\tcase (_element.tagName.toLowerCase() == 'onject'):\n\t\t\t\t\tcase (_element.tagName.toLowerCase() == 'embed'):\n\t\t\t\t\t\t\/\/\tdon't outline\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _color = 'transparent';\n\t\t\t\t\t\tswitch (true)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase (_category == 'target' &#038;&#038; _reason == 'first'): \t\t\t\t_color = '';\tbreak;\n\t\t\t\t\t\t\tcase (_category == 'target' &#038;&#038; _reason == 'second'): \t\t\t\t_color = '';\tbreak;\n\n\t\t\t\t\t\t\tcase (_category == 'target' &#038;&#038; _reason == 'next-page'):\t\t\t\t_color = '#FF80C0'; break;\n\t\t\t\t\t\t\tcase (_category == 'target' &#038;&#038; _reason == 'add-above'): \t\t\t_color = '#804000'; break;\n\n\t\t\t\t\t\t\tcase (_category == 'clean-before' &#038;&#038; _reason == 'floating'): \t\t_color = '#808080'; break;\n\t\t\t\t\t\t\tcase (_category == 'clean-after' &#038;&#038; _reason == 'missing-density'): \t_color = '#C0C0C0'; break;\n\n\t\t\t\t\t\t\tcase (_category == 'clean-after' || _category == 'clean-before'):\t_color = '#000000'; break;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$(_element).css('outline','5px solid '+_color);\n\t\t\t\t\t\t$(_element).attr('readable__outline', (_category + ': ' + _reason));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n            };\n\n\t\t\/\/\ttimers\n\t\t\/\/\t======\n\t\t\t$R.debugTimerStart = function (timerName)\n\t\t\t{\n\t\t\t\t$R.debugTimers.push({\n\t\t\t\t\t'name': timerName,\n\t\t\t\t\t'start': (new Date()).getTime()\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t$R.debugTimerEnd = function ()\n\t\t\t{\n\t\t\t\tvar _t = $R.debugTimers.pop(), _time = ((new Date()).getTime() - _t.start);\n\t\t\t\t$R.log('TIMER \/ '+_t.name+': ' + _time);\n\t\t\t\treturn _time;\n\t\t\t};\n\n\t\t\/\/\toutput -- will be shown in Show function\n\t\t\/\/\t======\n\t\t\t$R.debugPrint = function (_key, _value)\n\t\t\t\t{ $R.debugStuff[_key] = _value; };\n\n\t\t\t$R.printDebugOutput = function ()\n\t\t\t{\n\t\t\t\t\/\/\treturn\n\t\t\t\t\tif ($R.debug); else { return; }\n\t\t\t\t\tif ($R.customScript) { return; }\n\n\t\t\t\t\/\/\tfirst\n\t\t\t\t\tvar _first =\n\t\t\t\t\t[\n                        'Language',\n\t\t\t\t\t\t'ExploreAndGetStuff',\n\t\t\t\t\t\t'ProcessFirst',\n\t\t\t\t\t\t'ProcessSecond',\n\t\t\t\t\t\t'BuildHTML',\n\t\t\t\t\t\t'BuildHTMLPregs',\n                        'PointsFirst',\n                        'PointsSecond',\n                        'Target',\n\t\t\t\t\t\t'NextPage',\n                        'TitleSource'\n\t\t\t\t\t];\n\n\t\t\t\t\/\/\tget and clean\n\t\t\t\t\t_$debug = $('#debugOutput');\n\t\t\t\t\t_$debug.html('');\n\n\t\t\t\t\/\/\twrite\n\t\t\t\t\tvar _debug_write = function (_key, _value)\n\t\t\t\t\t{\n\t\t\t\t\t\t_$debug.append(''\n\t\t\t\t\t\t\t+ '\n\n\n\n<tr>'\n\t\t\t\t\t\t\t+ \t'\n\n\n\n<td class=\"caption\">'\n\t\t\t\t\t\t\t+\t\t_key\n\t\t\t\t\t\t\t+ \t'<\/td>\n\n\n\n\n'\n\t\t\t\t\t\t\t+ \t'\n\n\n\n<td id=\"debugOutput__value__'+_key+'\" class=\"value\">'\n\t\t\t\t\t\t\t+\t\t_value\n\t\t\t\t\t\t\t+ \t'<\/td>\n\n\n\n\n'\n\t\t\t\t\t\t\t+ '<\/tr>\n\n\n\n\n'\t\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\/\/\tfirst\n\t\t\t\t\tfor (var i=0, _i=_first.length; i<_i; i++)\n\t\t\t\t\t\t{ _debug_write(_first[i], $R.debugStuff[_first[i]]); delete($R.debugStuff[_first[i]]); }\n\n\t\t\t\t\/\/\tthe rest\n\t\t\t\t\tfor (var _k in $R.debugStuff)\n\t\t\t\t\t\t{ _debug_write(_k, $R.debugStuff[_k]); }\n\n\t\t\t\t\/\/\tend; stop\n\t\t\t\t\t$R.debugPrint = function () {};\n\t\t\t\t\t$R.printDebugOutput = function () {};\n\t\t\t};\n\n\t\t\/\/\tscriptable scrolling\n\t\t\t$R.debugScroll__before1 = function () { $R.win.scrollTo(0, 0); };\n\t\t\t$R.debugScroll__before2 = function () { $R.win.scrollTo(0, $R.$win.height()); };\n\t\t\t$R.debugScroll__before3 = function () { if ($($R.debugRemember['theTarget']).height() > 0) { $R.debugRemember['theTarget'].scrollIntoView(false); } else { $R.debugRemember['firstCandidate'].scrollIntoView(false); } $R.win.scrollBy(0, 100); };\n\n\t\t\t$R.debugScroll__after1 = function () { window.scrollTo(0, 0); };\n\t\t\t$R.debugScroll__after2 = function () { window.scrollTo(0, $R.$win.height()); };\n\t\t\t$R.debugScroll__after3 = function () { $('#page1').get(0).scrollIntoView(false); window.scrollBy(0, 100); };\n\t}\n\n                $R.debug = false;\n\n            \/\/\tenvironment\n            \/\/\t===========\n\n\t\/\/\tenvirontment\n\t\/\/\t============\n\n\t\t$R.mac = (!$R.iOS &#038;&#038; ($R.win.navigator.userAgent.match(\/Macintosh\/i) != null));\n\n        \/\/  get browser\n\n\/\/  var -- gets filled in\n\/\/  ===\n    var __the_browser = 'unknown';\n\n\/\/  possible values -- in this order\n\/\/  ===============\n\/*\n    firefox\n    safari\n    chrome\n    internet_explorer\n    opera\n\n    iphone\n    ipad\n\n    android\n    dolphin\n    firefox_mobile\n    chrome_mobile\n\n    windows_phone\n*\/    \n\n\/\/  doing work    \n\/\/  ==========\n    __the_browser = (function ()\n    {\n        \/\/  ua string\n        \/\/  =========\n            var _ua = window.navigator.userAgent.toLowerCase();\n\n        \/\/  cases\n        \/\/  =====\n\n            if ((_ua.indexOf('windows phone') > -1))                            { return 'windows_phone'; }\n\n            if ((_ua.indexOf('chrome') > -1) &#038;&#038; (_ua.indexOf('android') > -1))  { return 'chrome_mobile'; }\n            if ((_ua.indexOf('firefox') > -1) &#038;&#038; (_ua.indexOf('fennec') > -1))  { return 'firefox_mobile'; }\n            if ((_ua.indexOf('dolfin') > -1) || (_ua.indexOf('dolphin') > -1))  { return 'dolphin'; }\n            if ((_ua.indexOf('android') > -1))                                  { return 'android'; }\n\n            if ((_ua.indexOf('ipad') > -1))                                     { return 'ipad'; }\n            if ((_ua.indexOf('iphone') > -1))                                   { return 'iphone'; }\n\n            if ($.browser.opera)                                                { return 'opera'; }\n            if ($.browser.msie)                                                 { return 'internet_explorer'; }\n            if ($.browser.webkit &#038;&#038; (_ua.indexOf('chrome') > -1))               { return 'chrome'; }\n            if ($.browser.webkit &#038;&#038; (_ua.indexOf('safari') > -1))               { return 'safari'; }\n            if ($.browser.mozilla)                                              { return 'firefox'; }\n    })();\n        $R.browser = __the_browser;\n\n    \/\/  language specific stuff\n    \/\/  =======================\n\n        \/\/  default\n        $R.language = 'general';\n\n        \/\/  the text - start with title\n        var _test_text = ' ' + $R.document.title;\n\n        \/\/  add couple of random paragraphs, divs\n        var \n            _ps = $R.document.getElementsByTagName('p'),\n            _ds = $R.document.getElementsByTagName('div')\n        ;\n\n        \/\/  add\n        for (var i=0; i<5; i++) { _test_text += ' ' + $(_ps[Math.floor(Math.random()*_ps.length)]).text(); }\n        for (var i=0; i<5; i++) { _test_text += ' ' + $(_ds[Math.floor(Math.random()*_ds.length)]).text(); }\n\n        \/\/  check\n        switch (true)\n        {\n        \/\/    case ($R.win.location.host.match(\/\\.jp$\/i) != null):\n        \/\/    case ($R.win.location.host.match(\/\\.cn$\/i) != null):\n        \/\/    case ($R.win.location.host.match(\/\\.tw$\/i) != null):\n        \/\/    case ($R.win.location.host.match(\/\\.hk$\/i) != null):\n        \/\/    case ($R.win.location.host.match(\/\\.kr$\/i) != null):\n\n            case (_test_text.match(\/([\\u3000])\/gi) != null):\n            case (_test_text.match(\/([\\u3001])\/gi) != null):\n            case (_test_text.match(\/([\\u3002])\/gi) != null):\n            case (_test_text.match(\/([\\u301C])\/gi) != null):\n\n                $R.language = 'cjk';\n                break;\n        }\n\n        \/\/  in case we stop\n        $R.debugPrint('Language', $R.language);\n\n            \/\/\trtl\n            \/\/\t===\n\n\t\/\/\tvar\n\t\/\/\t===\n\t\t$R.rtl = false;\n\n\t\/\/\tfunctions\n\t\/\/\t=========\n\t\t$R.makeRTL = function ()\n\t\t{\n            \/\/  set\n\t\t\t$R.rtl = true;\n\n            \/\/  as component; return\n            if ($R.component) { return; }\n\n            $('#curtain__rtl__radio__rtl').get(0).checked = true;\n            $('#curtain__rtl__radio__ltr').get(0).checked = false;\n\n            $('html')\n\t\t\t\t.attr('dir', 'rtl')\n\t\t\t\t.addClass('couldBeRTL')\n\t\t\t\t.addClass('rtl');\n\n            $R.$pages\n                .attr('dir', 'rtl')\n                .addClass('rtl');\n\t\t};\n\n\t\t$R.makeNotRTL = function ()\n\t\t{\n            \/\/  set\n\t\t\t$R.rtl = false;\n\n            \/\/  as component; return\n            if ($R.component) { return; }\n\n\t\t\t$('#curtain__rtl__radio__rtl').get(0).checked = false;\n\t\t\t$('#curtain__rtl__radio__ltr').get(0).checked = true;\n\n            $('html')\n\t\t\t\t.attr('dir', '')\n\t\t\t\t.removeClass('rtl');\n\n            $R.$pages\n                .attr('dir', '')\n                .removeClass('rtl');\n\t\t};\n\n\t\/\/\tdetect\n\t\/\/\t======\n\t\t(function ()\n\t\t{\n\t\t\t\/\/\tdefinitely rtl\n\t\t\t$R.$document.find('html, body').each(function (_i, _e)\n\t\t\t{\n\t\t\t\tswitch (true) {\n\t\t\t\t\tcase ($(_e).attr('dir') == 'rtl'):\n\t\t\t\t\tcase ($(_e).css('direction') == 'rtl'):\n\n\t\t\t\t\tcase ($(_e).attr('lang') == 'he'):\n\t\t\t\t\tcase ($(_e).attr('lang') == 'he-il'):\n\t\t\t\t\tcase ($(_e).attr('lang') == 'ar'):\n\t\t\t\t\tcase ($(_e).attr('lang') == 'ur'):\n\n\t\t\t\t\t\t$R.makeRTL();\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t\/\/\tmaybe rtl\n            \/\/  =========\n            if ($R.component); else\n            {\n                if ((!$R.rtl) &#038;&#038; ($R.$document.find(\"div[dir='rtl'], table[dir='rtl'], td[dir='rtl']\").length > 0))\n                    { $('html').addClass('couldBeRTL'); }\n            }\n\t\t})();\n\n\t\/\/\tevents\n\t\/\/\t======\n        if ($R.component); else\n        {\n            $('#curtain__rtl__radio__rtl').change(function(){ $R.makeRTL(); return false; });\n            $('#curtain__rtl__radio__ltr').change(function(){ $R.makeNotRTL(); return false; });\n        }\n\n            \/\/\tmeasure text\n            \/\/\t============\n\n\t\/\/\tasian languages\n\t\/\/\t===============\n\t\/\/\thttp:\/\/msdn.microsoft.com\/en-us\/goglobal\/bb688158\n\t\/\/\thttp:\/\/en.wikipedia.org\/wiki\/Japanese_punctuation\n\t\/\/\thttp:\/\/en.wikipedia.org\/wiki\/Japanese_typographic_symbols\n\t\/\/\thttp:\/\/unicode.org\/charts\/PDF\/U3000.pdf\n\t\/\/\tCJK: Chnese, Japanese, Korean -- HAN character set\n\n\t\/\/\tlength\n\t\/\/\t======\n\t\t$R.measureText__getTextLength = function (_the_text)\n\t\t{\n\t\t\tvar _text = _the_text;\n\n\t\t\t\t_text = _text.replace(\/[\\s\\n\\r]+\/gi, '');\n\t\t\t\t\/\/_text = _text.replace(\/\\d+\/, '');\n\n\t\t\treturn _text.length;\n\t\t};\n\n\t\/\/\tword count\n\t\/\/\t==========\n\t\t$R.measureText__getWordCount = function (_the_text)\n\t\t{\n\t\t\tvar _text = _the_text;\n\n\t\t\t\/\/\tdo stuff\n\t\t\t\/\/\t========\n\t\t\t\t_text = _text.replace(\/[\\s\\n\\r]+\/gi, ' ');\n\n\t\t\t\t_text = _text.replace(\/([.,?!:;()\\[\\]'\"\"-])\/gi, ' $1 ');\n\n\t\t\t\t_text = _text.replace(\/([\\u3000])\/gi, \t\t\t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u3001])\/gi, \t\t\t\t'[=words(2)]');\n\t\t\t\t_text = _text.replace(\/([\\u3002])\/gi, \t\t\t\t'[=words(4)]');\n\t\t\t\t_text = _text.replace(\/([\\u301C])\/gi, \t\t\t\t'[=words(2)]');\n\t\t\t\t_text = _text.replace(\/([\\u2026|\\u2025])\/gi, \t\t'[=words(2)]');\n\t\t\t\t_text = _text.replace(\/([\\u30FB\\uFF65])\/gi, \t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u300C\\u300D])\/gi, \t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u300E\\u300F])\/gi,\t\t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u3014\\u3015])\/gi,\t\t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u3008\\u3009])\/gi,\t\t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u300A\\u300B])\/gi, \t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u3010\\u3011])\/gi, \t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u3016\\u3017])\/gi, \t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u3018\\u3019])\/gi, \t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u301A\\u301B])\/gi, \t\t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u301D\\u301E\\u301F])\/gi, \t'[=words(1)]');\n\t\t\t\t_text = _text.replace(\/([\\u30A0])\/gi, \t\t\t\t'[=words(1)]');\n\n\t\t\t\/\/\tcount\n\t\t\t\/\/\t=====\n\t\t\t\tvar \n\t\t\t\t\t_count = 0,\n\t\t\t\t\t_words_match = _text.match(\/([^\\s\\d]{3,})\/gi)\n\t\t\t\t;\t\n\n\t\t\t\t\/\/\tadd match\n\t\t\t\t_count += (_words_match != null ? _words_match.length : 0);\n\n\t\t\t\t\/\/\tadd manual count\n\t\t\t\t_text.replace(\/\\[=words\\((\\d)\\)\\]\/, function (_match, _plus) { _count += (5 * parseInt(_plus)); });\n\n\t\t\t\/\/\treturn\n\t\t\t\/\/\t======\n\t\t\t\treturn _count;\n\t\t};\n\n\t\/\/\tlevenshtein\n\t\/\/\t===========\t\n\t\t$R.levenshteinDistance = function (str1, str2)\n\t\t{\n\t\t\tvar l1 = str1.length, l2 = str2.length;\n\t\t\tif (Math.min(l1, l2) === 0)\n\t\t\t\t{ return Math.max(l1, l2); }\n\n\t\t\tvar i = 0, j = 0, d = [];\n\t\t\tfor (i = 0 ; i <= l1 ; i++)\n\t\t\t{\n\t\t\t\td[i] = [];\n\t\t\t\td[i][0] = i;\n\t\t\t}\n\n\t\t\tfor (j = 0 ; j <= l2 ; j++)\n\t\t\t\t{ d[0][j] = j; }\n\n\t\t\tfor (i = 1 ; i <= l1 ; i++)\n\t\t\t{\n\t\t\t\tfor (j = 1 ; j <= l2 ; j++)\n\t\t\t\t{\n\t\t\t\t\td[i][j] = Math.min\n\t\t\t\t\t(\n\t\t\t\t\t\td[i - 1][j] + 1,\n\t\t\t\t\t\td[i][j - 1] + 1, \n\t\t\t\t\t\td[i - 1][j - 1] + (str1.charAt(i - 1) === str2.charAt(j - 1) ? 0 : 1)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn d[l1][l2];\n\t\t};\n\n            \/\/\tcontent\n            \/\/\t=======\n\n\t$R.footnotedLinksCount = 0;\n\n\t$R.getContent = function ()\n\t{\n\t\t\/\/\thomepage?\n\t\tif ($R.win.location.href == ($R.win.location.protocol + '\/\/' + $R.win.location.host + '\/'))\n\t\t\t{ $('html').addClass('showTips'); }\n\n\t\t\/\/\tselection or whole\n\t\tswitch (true)\n\t\t{\n\t\t\tcase ($R.getContent__manualSelection()):\n\t\t\tcase ($R.getContent__find()):\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\t\/\/\tdebug\n\t\t$R.printDebugOutput();\n\n\t\t\/\/\tshow content\n\t\t$R.showContent();\n\t};\n\n\t$R.getContent__manualSelection = function ()\n\t{\n\t\tvar \n\t\t\t_selection = $R.sel.getSelection($R.win),\n\t\t\t_range = $R.sel.getRange(_selection),\n\t\t\t_html = $R.sel.getRangeHTML(_range),\n\t\t\t_text = $R.sel.getRangeText(_range)\n\t\t;\n\n\t\tif (_html > '' &#038;&#038; _text > ''); else\n\t\t{\n\t\t\t_html = null;\n\t\t\t_text = null;\n\n\t\t\t$R.$document.find('frame, iframe').each(function (_i, _e)\n\t\t\t{\n\t\t\t\tif (_e.getAttribute('id') == 'readable_iframe') { return; }\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tvar\n\t\t\t\t\t\t__doc = $(_e).contents().get(0),\n\t\t\t\t\t\t__win = $R.sel.getWindowFromDocument(__doc),\n\t\t\t\t\t\t__selection = $R.sel.getSelection(__win),\n\t\t\t\t\t\t__range = $R.sel.getRange(__selection),\n\t\t\t\t\t\t__html = $R.sel.getRangeHTML(__range),\n\t\t\t\t\t\t__text = $R.sel.getRangeText(__range)\n\t\t\t\t\t;\n\n\t\t\t\t\tif (__html > '' &#038;&#038; __text > '')\n\t\t\t\t\t{\n\t\t\t\t\t\t_html = __html;\n\t\t\t\t\t\t_text = __text;\n\n\t\t\t\t\t\t\/\/ stop the each\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e) { }\n\t\t\t});\n\t\t}\n\n\t\t\/\/\thaven't found anything\t\t\n\t\tif (_html > '' &#038;&#038; _text > ''); else { return false; }\n\n\t\t\/\/\tprobably selected something by mistake\n\t\tif ($R.measureText__getTextLength(_text) > (65 * 3 * 1.5)); else { return false; }\n\n\t\t\/\/\tdisplay\n\t\t\/\/\t=======\n\t\t\t$R.$pages.html('');\n\t\t\t$R.displayPageHTML(_html, 1, 'selection');\n\n\t\t\/\/\treturn true\n\t\treturn true;\n\t};\n\n\/\/\tfunctions\n\/\/\t=========\n\n\t$R.sel = {};\n\n\t$R.sel.getWindowFromDocument = function (theDocument)\n\t{\n\t\tif (theDocument); else { return null; }\n\n\t\tif ('defaultView' in theDocument) {\n\t\t\targuments.calee = function (theDocument) {\n\t\t\t\tif (theDocument); else { return null; }\n\t\t\t\treturn theDocument.defaultView;\n\t\t\t};\n\t\t}\n\t\telse if ('parentWindow' in theDocument) {\n\t\t\targuments.calee = function (theDocument) {\n\t\t\t\tif (theDocument); else { return null; }\n\t\t\t\treturn theDocument.parentWindow;\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\targuments.calee = function (theDocument) {\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\treturn arguments.calee(theDocument);\n\t};\n\n\t$R.sel.getSelection = function (theWindow)\n\t{\n\t\tif (theWindow); else { return null; }\n\n\t\tif ('getSelection' in theWindow) {\n\t\t\targuments.calee = function (theWindow) {\n\t\t\t\tif (theWindow); else { return null; }\n\t\t\t\treturn theWindow.getSelection();\n\t\t\t};\n\t\t}\n\t\telse if ('selection' in theWindow.document) {\n\t\t\targuments.calee = function (theWindow) {\n\t\t\t\tif (theWindow); else { return null; }\n\t\t\t\treturn theWindow.document.selection;\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\targuments.calee = function (theWindow) {\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\treturn arguments.calee(theWindow);\n\t};\n\n\t$R.sel.getRange = function (selection)\n\t{\n\t\tif (selection); else { return null; }\n\n\t\tif ('getRangeAt' in selection) {\n\t\t\targuments.calee = function (selection) {\n\t\t\t\tif (selection); else { return null; }\n\t\t\t\tif (selection.rangeCount > 0) { return selection.getRangeAt(0); }\n\t\t\t\telse { return null; }\n\t\t\t\t\/\/\tdoesn't work in old versions of safari \n\t\t\t\t\/\/\t... I don't care\n\t\t\t};\n\t\t}\n\t\telse if ('createRange' in selection) {\n\t\t\targuments.calee = function (selection) {\n\t\t\t\tif (selection); else { return null; }\n\t\t\t\treturn selection.createRange();\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\targuments.calee = function (selection) {\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\treturn arguments.calee(selection);\n\t};\n\n\t$R.sel.getRangeHTML = function (range)\n\t{\n\t\tif (range); else { return null; }\n\n\t\tif ('htmlText' in range) {\n\t\t\targuments.calee = function (range) {\n\t\t\t\tif (range); else { return null; }\n\t\t\t\treturn range.htmlText;\n\t\t\t};\n\t\t}\n\t\telse if ('surroundContents' in range) {\n\t\t\targuments.calee = function (range) {\n\t\t\t\tif (range); else { return null; }\n\t\t\t\tvar dummy = range.commonAncestorContainer.ownerDocument.createElement(\"div\");\n\t\t\t\tdummy.appendChild(range.cloneContents());\n\t\t\t\treturn dummy.innerHTML;\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\targuments.calee = function (range) {\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\treturn arguments.calee(range);\n\t};\n\n\t$R.sel.getRangeText = function (range)\n\t{\n\t\tif (range); else { return null; }\n\n\t\tif ('text' in range) {\n\t\t\targuments.calee = function (range) {\n\t\t\t\tif (range); else { return null; }\n\t\t\t\treturn range.text;\n\t\t\t};\n\t\t}\n\t\telse if ('surroundContents' in range) {\n\t\t\targuments.calee = function (range) {\n\t\t\t\tif (range); else { return null; }\n\t\t\t\tvar dummy = range.commonAncestorContainer.ownerDocument.createElement(\"div\");\n\t\t\t\tdummy.appendChild(range.cloneContents());\n\t\t\t\treturn dummy.textContent;\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\targuments.calee = function (range) {\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\treturn arguments.calee(range);\n\t};\n\n\t\/\/\toptions\n\t\/\/\t=======\n\t\t$R.parsingOptions =\n\t\t{\n\t\t\t'_elements_ignore': \t\t\t'|button|input|select|textarea|optgroup|command|datalist|--|frame|frameset|noframes|--|style|link|script|noscript|--|canvas|applet|map|--|marquee|area|base|',\n\t\t\t'_elements_ignore_tag': \t\t'|form|fieldset|details|dir|--|center|font|span|',\n\t\t\t'_elements_self_closing': \t\t'|br|hr|--|img|--|col|--|source|--|embed|param|--|iframe|',\n\t\t\t'_elements_visible': \t\t\t'|article|section|--|ul|ol|li|dd|--|table|tr|td|--|div|--|p|--|h1|h2|h3|h4|h5|h6|--|span|',\n\t\t\t'_elements_too_much_content': \t'|b|i|em|strong|--|h1|h2|h3|h4|h5|--|td|',\n\t\t\t'_elements_container': \t\t\t'|body|--|article|section|--|div|--|td|--|li|--|dd|dt|',\n\t\t\t'_elements_link_density':\t\t'|div|--|table|ul|ol|--|section|aside|header|',\n\t\t\t'_elements_floating':\t\t\t'|div|--|table|',\n\t\t\t'_elements_above_target_ignore':'|br|--|ul|ol|dl|--|table|',\n\t\t\t'_elements_keep_attributes':\n\t\t\t{\n\t\t\t\t'a': \t\t['href', 'title', 'name'],\n\t\t\t\t'img': \t\t['src', 'width', 'height', 'alt', 'title'],\n\n\t\t\t\t'video': \t['src', 'width', 'height', 'poster', 'audio', 'preload', 'autoplay', 'loop', 'controls'],\n\t\t\t\t'audio': \t['src', 'preload', 'autoplay', 'loop', 'controls'],\t\t \n\t\t\t\t'source': \t['src', 'type'],\n\n\t\t\t\t'object': \t['data', 'type', 'width', 'height', 'classid', 'codebase', 'codetype'],\t\t\t\t\t\t\n\t\t\t\t'param': \t['name', 'value'],\n\t\t\t\t'embed': \t['src', 'type', 'width', 'height', 'flashvars', 'allowscriptaccess', 'allowfullscreen', 'bgcolor'],\n\n\t\t\t\t'iframe':\t['src', 'width', 'height', 'frameborder', 'scrolling'],\n\n\t\t\t\t'td':\t\t['colspan', 'rowspan'],\t\t\t\n\t\t\t\t'th':\t\t['colspan', 'rowspan']\n\t\t\t}\n\t\t};\n\n\t\/\/\tnext page keywords -- (?? charCodeAt() > 127)\n\t\/\/\t==================\n\t\t$R.nextPage__captionKeywords = \n\t\t[\n\t\t\t\/* english *\/\n\t\t\t'next page', 'next',\n\n\t\t\t\/* german *\/\n\t\t\t'vorw&#228;rts', 'weiter',\n\n\t\t\t\/* japanese *\/\n\t\t\t'&#27425;&#12408;'\n\t\t];\n\n\t\t$R.nextPage__captionKeywords__not =\n\t\t[\n\t\t\t\/* english *\/\n\t\t\t'article', 'story', 'post', 'comment', 'section', 'chapter'\n\n\t\t];\n\n\t\/\/\tskip links\n\t\/\/\t==========\n\t\t$R.skipStuffFromDomains__links = \n\t\t[\n\t\t\t'doubleclick.net',\n            'fastclick.net',\n\t\t\t'adbrite.com',\n\t\t\t'adbureau.net',\n\t\t\t'admob.com',\n\t\t\t'bannersxchange.com',\n\t\t\t'buysellads.com',\n\t\t\t'impact-ad.jp',\n\t\t\t'atdmt.com',\n\t\t\t'advertising.com',\n\t\t\t'itmedia.jp',\n\t\t\t'microad.jp',\n\t\t\t'serving-sys.com',\n            'adplan-ds.com'\n\t\t];\n\n\t\/\/\tskip images\n\t\/\/\t===========\n\t\t$R.skipStuffFromDomain__images = \n\t\t[\n\t\t\t'googlesyndication.com',\n            'fastclick.net',\n\t\t\t'.2mdn.net',\n\t\t\t'de17a.com',\n\t\t\t'content.aimatch.com',\n\t\t\t'bannersxchange.com',\n\t\t\t'buysellads.com',\n\t\t\t'impact-ad.jp',\n\t\t\t'atdmt.com',\n\t\t\t'advertising.com',\n\t\t\t'itmedia.jp',\n\t\t\t'microad.jp',\n\t\t\t'serving-sys.com',\n            'adplan-ds.com'\n\t\t];\n\n\t\/\/\tkeep video\n\t\/\/\t==========\n\n\t\t$R.keepStuffFromDomain__video = \n\t\t[\n\t\t\t'youtube.com',\n\t\t\t'youtube-nocookie.com',\n\n\t\t\t'vimeo.com',\n\t\t\t'hulu.com',\n\t\t\t'yahoo.com',\n\t\t\t'flickr.com',\n\t\t\t'newsnetz.ch'\n\t\t];\n\n\t$R.getContent__exploreNodeAndGetStuff = function (_nodeToExplore, _justExploring)\n\t{\n\t\tvar\t\n\t\t\t_global__element_index = 0,\n\n\t\t\t_global__inside_link = false,\n\t\t\t_global__inside_link__element_index = 0,\n\n\t\t\t_global__length__above_plain_text = 0,\n\t\t\t_global__count__above_plain_words = 0,\n\t\t\t_global__length__above_links_text = 0,\n\t\t\t_global__count__above_links_words = 0,\n            _global__count__above_candidates = 0,\n            _global__count__above_containers = 0,\n\t\t\t_global__above__plain_text = '',\n\t\t\t_global__above__links_text = '',\n\n\t\t\t_return__containers = [],\n\t\t\t_return__candidates = [],\n\t\t\t_return__links = []\n\t\t;\n\n\t\t\/\/\trecursive function\n\t\t\/\/\t==================\n\t\tvar _recursive = function (_node)\n\t\t{\n\t\t\t\/\/\tincrement index\n\t\t\t\/\/\tstarts with 1\n\t\t\t_global__element_index++;\n\n\t\t\tvar \n\t\t\t\t_tag_name = (_node.nodeType === 3 ? '#text' : ((_node.nodeType === 1 &#038;&#038; _node.tagName &#038;&#038; _node.tagName > '') ? _node.tagName.toLowerCase() : '#invalid')),\n\t\t\t\t_result =\n\t\t\t\t{\n\t\t\t\t\t'__index': _global__element_index, \n\t\t\t\t\t'__node': _node, \n\n\t\t\t\t\t'_is__container': \t\t($R.parsingOptions._elements_container.indexOf('|'+_tag_name+'|') > -1),\n\t\t\t\t\t'_is__candidate': \t\tfalse,\n\t\t\t\t\t'_is__text': \t\t\tfalse,\n\t\t\t\t\t'_is__link': \t\t\tfalse,\n\t\t\t\t\t'_is__link_skip': \t\tfalse,\n\t\t\t\t\t'_is__image_small': \tfalse,\n\t\t\t\t\t'_is__image_medium': \tfalse,\n\t\t\t\t\t'_is__image_large': \tfalse,\n\t\t\t\t\t'_is__image_skip': \t\tfalse,\n\n\t\t\t\t\t'_debug__above__plain_text': _global__above__plain_text,\n\t\t\t\t\t'_debug__above__links_text': _global__above__links_text,\n\n\t\t\t\t\t'_length__above_plain_text': _global__length__above_plain_text,\n\t\t\t\t\t'_count__above_plain_words': _global__count__above_plain_words,\n\n\t\t\t\t\t'_length__above_links_text': _global__length__above_links_text,\n\t\t\t\t\t'_count__above_links_words': _global__count__above_links_words,\n\n\t\t\t\t\t'_length__above_all_text': \t(_global__length__above_plain_text + _global__length__above_links_text),\n\t\t\t\t\t'_count__above_all_words': \t(_global__count__above_plain_words + _global__count__above_links_words),\n\n                    '_count__above_candidates': _global__count__above_candidates,\n                    '_count__above_containers': _global__count__above_containers,\n\n\t\t\t\t\t'_length__plain_text': 0,\n\t\t\t\t\t'_count__plain_words': 0,\n\n\t\t\t\t\t'_length__links_text': 0,\n\t\t\t\t\t'_count__links_words': 0,\n\n\t\t\t\t\t'_length__all_text': 0,\n\t\t\t\t\t'_count__all_words': 0,\n\n\t\t\t\t\t'_count__containers': 0,\n\t\t\t\t\t'_count__candidates': 0,\n\n\t\t\t\t\t'_count__links': 0,\n\t\t\t\t\t'_count__links_skip': 0,\n\n\t\t\t\t\t'_count__images_small': 0,\n\t\t\t\t\t'_count__images_medium': 0,\n\t\t\t\t\t'_count__images_large': 0,\n\t\t\t\t\t'_count__images_skip': 0\n\t\t\t\t};\n\n\t\t\t\/\/\tfast return\n\t\t\t\/\/\t===========\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase ((_tag_name == '#invalid')):\n\t\t\t\t\tcase (($R.parsingOptions._elements_ignore.indexOf('|'+_tag_name+'|') > -1)):\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tcase (($R.parsingOptions._elements_visible.indexOf('|'+_tag_name+'|') > -1)):\n\n\t\/\/\tincluded inline\n\t\/\/\t_node, _tag_name must be defined\n\t\/\/\twill return, if node is hidden\n\n\tswitch (true)\n\t{\n\t\tcase (_node.offsetWidth > 0):\n\t\tcase (_node.offsetHeight > 0):\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_node.offsetLeft > 0):\n\t\t\t\tcase (_node.offsetTop > 0):\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n                    \/\/  exclude inline DIVs -- which, stupidly, don't have a width\/height\n                    if ((_tag_name == 'div') &#038;&#038; ((_node.style.display || $.css( _node, \"display\" )) == 'inline'))\n                        { break; }\n\n                    \/\/  it's hidden; exit current scope\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\/\/\tself-closing -- with some exceptions\n\t\t\t\t\tcase ($R.parsingOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1):\n\t\t\t\t\t\tswitch (true)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase ((_tag_name == 'img')): break;\n\t\t\t\t\t\t\tdefault: return;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\/\/\tdo stuff\n\t\t\t\/\/\t========\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\t\/\/\ttext node\n\t\t\t\t\t\/\/\t=========\n\t\t\t\t\t\tcase ((_tag_name == '#text')):\n\t\t\t\t\t\t\t\/\/\tmark\n\t\t\t\t\t\t\t_result._is__text = true;\n\n\t\t\t\t\t\t\t\/\/\tget\n\t\t\t\t\t\t\tvar _nodeText = _node.nodeValue;\n\n\t\t\t\t\t\t\t\/\/\tresult\n\t\t\t\t\t\t\t_result._length__plain_text = $R.measureText__getTextLength(_nodeText);\n\t\t\t\t\t\t\t_result._count__plain_words = $R.measureText__getWordCount(_nodeText);\n\n\t\t\t\t\t\t\tif (_global__inside_link)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_global__length__above_links_text += _result._length__plain_text;\n\t\t\t\t\t\t\t\t_global__count__above_links_words += _result._count__plain_words;\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (false &#038;&#038; $R.debug) { _global__above__links_text += ' ' + _nodeText; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_global__length__above_plain_text += _result._length__plain_text;\n\t\t\t\t\t\t\t\t_global__count__above_plain_words += _result._count__plain_words;\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (false &#038;&#038; $R.debug) { _global__above__plain_text += ' ' + _nodeText; }\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/\treturn text\n\t\t\t\t\t\t\treturn _result;\n\n\t\t\t\t\t\/\/\tlink\n\t\t\t\t\t\/\/\t====\n                    case (_tag_name == 'a'):\n                        var _href = \"\";\n                        try {\n                            _href = _node.href;\n                        } catch(e) {\n                            Evernote.Logger.warn(\"Clearly: failed to get href of link element\" + e);\n                        }\n\n\t\t\t\t\t\t\t\/\/\tsanity\n\t\t\t\t\t\t\tif (_href > ''); else { break; }\n\t\t\t\t\t\t\tif (_href.indexOf); else { break; }\n\n\t\t\t\t\t\t\t_result._is__link = true;\n\n\t\t\t\t\t\t\t\/\/\tskip\n\t\t\t\t\t\t\tfor (var i=0, _i=$R.skipStuffFromDomains__links.length; i<_i; i++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (_node.href.indexOf($R.skipStuffFromDomains__links[i]) > -1)\n\t\t\t\t\t\t\t\t\t{ _result._is__link_skip = true; break; }\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/\tinside link\n\t\t\t\t\t\t\tif (_global__inside_link); else\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_global__inside_link = true;\n\t\t\t\t\t\t\t\t_global__inside_link__element_index = _result.__index;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/\tdone\n\t\t\t\t\t\t\t_return__links.push(_result);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\/\/\timage\n\t\t\t\t\t\/\/\t=====\n\t\t\t\t\t\tcase (_tag_name == 'img'):\n\n\t\t\t\t\t\t\t\/\/\tskip\n\t\t\t\t\t\t\t\/\/\t====\n\t\t\t\t\t\t\t\tif (_node.src &#038;&#038; _node.src.indexOf)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfor (var i=0, _i=$R.skipStuffFromDomain__images.length; i<_i; i++)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (_node.src.indexOf($R.skipStuffFromDomain__images[i]) > -1)\n\t\t\t\t\t\t\t\t\t\t\t{ _result._is__image_skip = true; break; }\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/\tsize\n\t\t\t\t\t\t\t\/\/\t====\n\t\t\t\t\t\t\t\tvar\t_width = $(_node).width(), _height = $(_node).height();\n\t\t\t\t\t\t\t\tswitch (true)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase ((_width * _height) >= 50000):\n\t\t\t\t\t\t\t\t\tcase ((_width >= 350) &#038;&#038; (_height >= 75)):\n\t\t\t\t\t\t\t\t\t\t_result._is__image_large = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase ((_width * _height) >= 20000):\n\t\t\t\t\t\t\t\t\tcase ((_width >= 150) &#038;&#038; (_height >= 150)):\n\t\t\t\t\t\t\t\t\t\t_result._is__image_medium = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tcase ((_width <= 5) &#038;&#038; (_height <= 5)):\n\t\t\t\t\t\t\t\t\t\t_result._is__image_skip = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t_result._is__image_small = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\/\/\tchild nodes\n\t\t\t\/\/\t===========\n\t\t\t\tfor (var i=0, _i=_node.childNodes.length; i<_i; i++)\n\t\t\t\t{\n\t\t\t\t\tvar \n\t\t\t\t\t\t_child = _node.childNodes[i],\n\t\t\t\t\t\t_child_result = _recursive(_child)\n\t\t\t\t\t;\n\n\t\t\t\t\t\/\/\tif false, continue\n\t\t\t\t\t\/\/\t==================\n\t\t\t\t\t\tif (_child_result); else { continue; }\n\n\t\t\t\t\t\/\/\tadd to result\n\t\t\t\t\t\/\/\t=============\n\t\t\t\t\t\t_result._count__links += \t\t\t_child_result._count__links + \t\t\t(_child_result._is__link ? 1 : 0);\n\t\t\t\t\t\t_result._count__links_skip += \t\t_child_result._count__links_skip + \t\t(_child_result._is__link_skip ? 1 : 0);\n\n\t\t\t\t\t\t_result._count__images_small += \t_child_result._count__images_small + \t(_child_result._is__image_small ? 1 : 0);\n\t\t\t\t\t\t_result._count__images_medium += \t_child_result._count__images_medium + \t(_child_result._is__image_medium ? 1 : 0);\n\t\t\t\t\t\t_result._count__images_large += \t_child_result._count__images_large + \t(_child_result._is__image_large ? 1 : 0);\n\t\t\t\t\t\t_result._count__images_skip += \t\t_child_result._count__images_skip + \t(_child_result._is__image_skip ? 1 : 0);\n\n\t\t\t\t\t\t_result._count__containers += \t\t_child_result._count__containers + \t\t(_child_result._is__container ? 1 : 0);\n\t\t\t\t\t\t_result._count__candidates += \t\t_child_result._count__candidates + \t\t(_child_result._is__candidate ? 1 : 0);\n\n\t\t\t\t\t\t_result._length__all_text += \t\t_child_result._length__plain_text + \t_child_result._length__links_text;\n\t\t\t\t\t\t_result._count__all_words += \t\t_child_result._count__plain_words + \t_child_result._count__links_words;\n\n\t\t\t\t\t\t\/\/\tplain text \/ link text\n\t\t\t\t\t\t\/\/\t======================\n\t\t\t\t\t\t\tswitch (true)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcase (_child_result._is__link):\n\t\t\t\t\t\t\t\t\t\/\/\tno text to add\n\t\t\t\t\t\t\t\t\t_result._length__links_text += (_child_result._length__plain_text + _child_result._length__links_text);\n\t\t\t\t\t\t\t\t\t_result._count__links_words += (_child_result._count__plain_words + _child_result._count__links_words);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t_result._length__plain_text += \t\t\t_child_result._length__plain_text;\n\t\t\t\t\t\t\t\t\t_result._count__plain_words += \t\t\t_child_result._count__plain_words;\n\t\t\t\t\t\t\t\t\t_result._length__links_text += \t\t\t_child_result._length__links_text;\n\t\t\t\t\t\t\t\t\t_result._count__links_words += \t\t\t_child_result._count__links_words;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\/\/\tafter child nodes\n\t\t\t\/\/\t=================\n\n\t\t\t\t\/\/\tmark as not in link anymore\n\t\t\t\t\/\/\t===========================\n\t\t\t\t\tif (true\n\t\t\t\t\t\t&#038;&#038; (_result._is__link) \n\t\t\t\t\t\t&#038;&#038; (_global__inside_link__element_index == _result.__index)\n\t\t\t\t\t) {\n\t\t\t\t\t\t_global__inside_link = false;\n\t\t\t\t\t\t_global__inside_link__element_index = 0;\n\t\t\t\t\t}\n\n\t\t\t\/\/\tadd to containers\n\t\t\t\/\/\t=================\n\t\t\t\tif (_result._is__container || ((_result.__index == 1) &#038;&#038; (_justExploring == true)))\n\t\t\t\t{\n\t\t\t\t\t\/\/\tadd to containers\n\t\t\t\t\t_return__containers.push(_result);\n\n                    \/\/  increase above containers\n                    if (_result._is__container) { _global__count__above_containers++; }\n\n\t\t\t\t\t\/\/\tadd to candidates\n\t\t\t\t\tif (_justExploring); else\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (true)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase (($R.language != 'cjk') &#038;&#038; ((_result._count__links * 2) >= _result._count__plain_words)):  \/* link ratio *\/\n\n                            case (($R.language != 'cjk') &#038;&#038; (_result._length__plain_text < (65 \/ 3))):  \/* text length *\/\n\t\t\t\t\t\t\tcase (($R.language != 'cjk') &#038;&#038; (_result._count__plain_words < 5)):\t\t\t\/* words *\/\n\n                            case (($R.language == 'cjk') &#038;&#038; (_result._length__plain_text < 10)):\t    \/* text length *\/\n\t\t\t\t\t\t\tcase (($R.language == 'cjk') &#038;&#038; (_result._count__plain_words < 2)):\t\t\t\/* words *\/\n\n\t\t\t\t\t\t\t\/\/case (_result._length__plain_text == 0):    \/* no text *\/\n\t\t\t\t\t\t\t\/\/case (_result._count__plain_words == 0):    \/* no words *\/\n\n                            \/\/case (($R.language == 'cjk') &#038;&#038; ((_result._length__plain_text \/ 65 \/ 3) < 0.1)):\t\t\t\t\/* paragrahs of 3 lines *\/\n\t\t\t\t\t\t\t\/\/case (($R.language != 'cjk') &#038;&#038; ((_result._count__plain_words \/ 50) < 0.5)):\t\t\t\t\t\/* paragraphs of 50 words *\/\n\n                                \/\/\tnot a valid candidate\n                                \/\/if (_tag_name == 'div') { $R.log('bad candidate', _result.__node); }\n\n                                break;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\/\/\tgood candidate\n\t\t\t\t\t\t\t\t_result._is__candidate = true;\n\t\t\t\t\t\t\t\t_return__candidates.push(_result);\n\n                                \/\/  increase above candidates\n                                _global__count__above_candidates++;\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\/\/\tspecial case for body -- if it was just skipped\n\t\t\t\t\t\t\/\/\t=====================\n\t\t\t\t\t\t\tif ((_result.__index == 1) &#038;&#038; !(_result._is__candidate))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_result._is__candidate = true;\n\t\t\t\t\t\t\t\t_result._is__bad = true;\n\t\t\t\t\t\t\t\t_return__candidates.push(_result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\/\/\treturn\n\t\t\t\/\/\t======\n\t\t\t\treturn _result;\n\t\t};\n\n\t\t\/\/\tactually do it\n\t\t\/\/\t==============\n\t\t\t_recursive(_nodeToExplore);\n\n\t\t\/\/\tjust exploring -- return first thing\n\t\t\/\/\t==============\n\t\t\tif (_justExploring) { return _return__containers.pop(); }\n\n\t\t\/\/\treturn containers list\n\t\t\/\/\t======================\n\t\t\treturn {\n\t\t\t\t'_containers': \t_return__containers,\n\t\t\t\t'_candidates': \t_return__candidates,\n\t\t\t\t'_links': \t\t_return__links\n\t\t\t};\n\t};\n\n\t$R.getContent__processCandidates = function (_candidatesToProcess)\n\t{\n\t\t\/\/\tprocess this var\n\t\t\/\/\t================\n\t\t\tvar _candidates = _candidatesToProcess;\n\n\t\t\/\/\tsort _candidates -- the lower in the dom, the closer to position 0\n\t\t\/\/\t================\n\t\t\t_candidates.sort(function (a, b)\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (a.__index < b.__index): return -1;\n\t\t\t\t\tcase (a.__index > b.__index): return 1;\n\t\t\t\t\tdefault: return 0;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\/\/\tget first\n\t\t\/\/\t=========\n\t\t\tvar\t_main = _candidates[0]\n\t\t\tif ($R.debug) { $R.log('should be body', _main, _main.__node); }\n\n\t\t\/\/\tpieces of text\n\t\t\/\/\tand points computation\n\t\t\/\/\t======================\n\t\t\tfor (var i=0, _i=_candidates.length; i<_i; i++)\n\t\t\t{\n\t\t\t\t\/\/\tpieces\n\t\t\t\t\/\/\t======\n\t\t\t\t\tvar \n\t\t\t\t\t\t_count__pieces = 0,\n\t\t\t\t\t\t_array__pieces = []\n\t\t\t\t\t;\n\n\t\t\t\t\tfor (var k=i, _k=_candidates.length; k<_k; k++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (_candidates[k]._count__candidates > 0) { continue; }\n\t\t\t\t\t\tif ($.contains(_candidates[i].__node, _candidates[k].__node)); else { continue; }\n\n\t\t\t\t\t\t\/\/\tstore piece, if in debug mode\n\t\t\t\t\t\tif ($R.debug) { _array__pieces.push(_candidates[k]); }\n\n\t\t\t\t\t\t\/\/\tincement pieces count\n\t\t\t\t\t\t_count__pieces++;\n\t\t\t\t\t}\n\n\t\t\t\t\/\/\tcandidate details\n\t\t\t\t\/\/\t=================\n\t\t\t\t\t_candidates[i]['__candidate_details'] = $R.getContent__computeDetailsForCandidate(_candidates[i], _main);\n\n\t\t\t\t\/\/\tpieces -- do this here because _main doesn't yet have a pieces count\n\t\t\t\t\/\/\t======\n\n\t\t\t\t\t\/\/\tset pieces\n\t\t\t\t\t_candidates[i]['_count__pieces'] = _count__pieces;\n\t\t\t\t\t_candidates[i]['_array__pieces'] = _array__pieces;\n\n\t\t\t\t\t\/\/\tpieces ratio\n\t\t\t\t\t_candidates[i]['__candidate_details']['_ratio__count__pieces_to_total_pieces'] = (_count__pieces \/ (_candidates[0]._count__pieces + 1));\n\n                \/\/  check some more\n                \/\/  ===============\n                \/*    switch (true)\n                    {\n                        case (($R.language != 'cjk') &#038;&#038; (_candidates[i]['__candidate_details']['_ratio__length__links_text_to_plain_text'] > 1)):\n                        case (($R.language != 'cjk') &#038;&#038; (_candidates[i]['__candidate_details']['_ratio__count__links_words_to_plain_words'] > 1)):\n                            _candidates[i]._is__bad = true;\n                            break;\n                    }*\/\n\n\t\t\t\t\/\/\tpoints\n\t\t\t\t\/\/\t======\n\t\t\t\t\t_candidates[i].__points_history = $R.getContent__computePointsForCandidate(_candidates[i], _main);\n\t\t\t\t\t_candidates[i].__points = _candidates[i].__points_history[0];\n\t\t\t}\n\n\t\t\/\/\tsort _candidates -- the more points, the closer to position 0\n\t\t\/\/\t================\n\t\t\t_candidates.sort(function (a, b)\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (a.__points > b.__points): return -1;\n\t\t\t\t\tcase (a.__points < b.__points): return 1;\n\t\t\t\t\tdefault: return 0;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\/\/\treturn\n\t\t\/\/\t======\n\t\t\treturn _candidates;\t\n\t};\n\n\t$R.getContent__computeDetailsForCandidate = function (_e, _main)\n\t{\n\t\tvar _r = {};\n\n\t\t\/\/\tbad candidate\n\t\t\/\/\t=============\n\t\t\tif (_e._is__bad) { return _r; }\n\n\t\t\/\/\tparagraphs\n\t\t\/\/\t==========\n\t\t\t_r['_count__lines_of_65_characters'] = (_e._length__plain_text \/ 65);\n\t\t\t_r['_count__paragraphs_of_3_lines'] =  (_r._count__lines_of_65_characters \/ 3);\n\t\t\t_r['_count__paragraphs_of_5_lines'] =  (_r._count__lines_of_65_characters \/ 5);\n\n\t\t\t_r['_count__paragraphs_of_50_words'] = (_e._count__plain_words \/ 50);\n\t\t\t_r['_count__paragraphs_of_80_words'] = (_e._count__plain_words \/ 80);\n\n\t\t\/\/\ttotal text\n\t\t\/\/\t==========\n\t\t\t_r['_ratio__length__plain_text_to_total_plain_text'] =  (_e._length__plain_text \/ _main._length__plain_text);\n\t\t\t_r['_ratio__count__plain_words_to_total_plain_words'] = (_e._count__plain_words \/ _main._count__plain_words);\n\n\t\t\/\/\tlinks\n\t\t\/\/\t=====\n\t\t\t_r['_ratio__length__links_text_to_plain_text'] =  (_e._length__links_text \/ _e._length__plain_text);\n\t\t\t_r['_ratio__count__links_words_to_plain_words'] = (_e._count__links_words \/ _e._count__plain_words);\n\n\t\t\t_r['_ratio__length__links_text_to_all_text'] =  (_e._length__links_text \/ _e._length__all_text);\n\t\t\t_r['_ratio__count__links_words_to_all_words'] = (_e._count__links_words \/ _e._count__all_words);\n\n\t\t\t_r['_ratio__length__links_text_to_total_links_text'] =  (_e._length__links_text \/ (_main._length__links_text + 1));\n\t\t\t_r['_ratio__count__links_words_to_total_links_words'] = (_e._count__links_words \/ (_main._count__links_words + 1));\n\n\t\t\t_r['_ratio__count__links_to_total_links'] = (_e._count__links \/ (_main._count__links + 1));\n\t\t\t_r['_ratio__count__links_to_plain_words'] = ((_e._count__links * 2) \/ _e._count__plain_words);\n\n\t\t\/\/\ttext above\n\t\t\/\/\t==========\n            var \n                _divide__candidates = Math.max(2, Math.ceil(_e._count__above_candidates * 0.5)),\n\n                _above_text = ((0\n                    + (_e._length__above_plain_text * 1)\n                    + (_e._length__above_plain_text \/ _divide__candidates)\n                ) \/ 2),\n\n                _above_words = ((0\n                    + (_e._count__above_plain_words * 1)\n                    + (_e._count__above_plain_words \/ _divide__candidates)\n                ) \/ 2)\n            ;\n\n\t\t\t_r['_ratio__length__above_plain_text_to_total_plain_text'] =  (_above_text \/ _main._length__plain_text);\n\t\t\t_r['_ratio__count__above_plain_words_to_total_plain_words'] = (_above_words \/ _main._count__plain_words);\n\n\t\t\/\/\tcandidates\n\t\t\/\/\t==========\n\t\t\t_r['_ratio__count__candidates_to_total_candidates'] = (_e._count__candidates \/ (_main._count__candidates + 1));\n\t\t\t_r['_ratio__count__containers_to_total_containers'] = (_e._count__containers \/ (_main._count__containers + 1));\n\n\t\t\/\/\treturn\n\t\t\/\/\t======\n\t\t\treturn _r;\n\t};\n\n\t$R.getContent__computePointsForCandidate = function (_e, _main)\n\t{\n\t\tvar \n\t\t\t_details = _e.__candidate_details,\n\t\t\t_points_history = [],\n            _really_big = ((_main._length__plain_text \/ 65) > 250)\n\t\t;\n\n\t\t\/\/\tbad candidate\n\t\tif (_e._is__bad) { return [0]; }\n\n\t\t\/\/\tthe basics\n\t\t\/\/\t==========\n\t\t\t_points_history.unshift(((0\n\t\t\t\t+ (_details._count__paragraphs_of_3_lines)\n\t\t\t\t+ (_details._count__paragraphs_of_5_lines * 1.5)\n\t\t\t\t+ (_details._count__paragraphs_of_50_words)\n\t\t\t\t+ (_details._count__paragraphs_of_80_words * 1.5)\n\t\t\t\t+ (_e._count__images_large * 3)\n\t\t\t\t- ((_e._count__images_skip + _e._count__images_small) * 0.5)\n\t\t\t) * 1000));\n\n            \/\/  negative\n            if (_points_history[0] < 0) { return [0]; }\n\n        \/\/  candidates, containers, pieces\n        \/\/  ==============================\n            var \n                _divide__pieces =     Math.max(5,  Math.ceil(_e._count__pieces *     0.25)),\n                _divide__candidates = Math.max(5,  Math.ceil(_e._count__candidates * 0.25)),\n                _divide__containers = Math.max(10, Math.ceil(_e._count__containers * 0.25))\n            ;\n\n            _points_history.unshift(((0\n                + (_points_history[0] * 3)\n                + (_points_history[0] \/ _divide__pieces)\n                + (_points_history[0] \/ _divide__candidates)\n                + (_points_history[0] \/ _divide__containers)\n            ) \/ 6));\n\n\t\t\/\/\ttotal text\n\t\t\/\/\t==========\n\t\t\t$R.getContent__computePointsForCandidate__do(0.10, 2, (1 - (1 - _details._ratio__length__plain_text_to_total_plain_text)), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.10, 2, (1 - (1 - _details._ratio__count__plain_words_to_total_plain_words)), _points_history);\n\n            if (_really_big) {\n            $R.getContent__computePointsForCandidate__do(0.10, 4, (1 - (1 - _details._ratio__length__plain_text_to_total_plain_text)), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.10, 4, (1 - (1 - _details._ratio__count__plain_words_to_total_plain_words)), _points_history);\n            }\n\n\t\t\/\/\ttext above\n\t\t\/\/\t==========\n\t\t\t$R.getContent__computePointsForCandidate__do(0.10, 5, (1 - _details._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.10, 5, (1 - _details._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n            if (_really_big) {\n            $R.getContent__computePointsForCandidate__do(0.10, 10, (1 - _details._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.10, 10, (1 - _details._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n            }\n\n\t\t\/\/\tlinks outer\n\t\t\/\/\t===========\n            $R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__length__links_text_to_total_links_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__links_words_to_total_links_words), _points_history);\n\n            $R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__links_to_total_links), _points_history);\n\n        \/\/  links inner\n        \/\/  ===========\n            var __lr = ($R.language == 'cjk' ? 0.75 : 0.50);\n\n            $R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__length__links_text_to_plain_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_words_to_plain_words), _points_history);\n\n            $R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__length__links_text_to_all_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_words_to_all_words), _points_history);\n\n            $R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_to_plain_words), _points_history);\n\n\t\t\/\/\tcandidates, containers, pieces\n\t\t\/\/\t==============================\n\t\t\t$R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__candidates_to_total_candidates), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__containers_to_total_containers), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__pieces_to_total_pieces), _points_history);\n\n\t\t\/\/\treturn -- will get [0] as the actual final points\n\t\t\/\/\t======\n\t\t\treturn _points_history;\n\t};\n\n\t$R.getContent__processCandidatesSecond = function (_processedCandidates)\n\t{\n\t\tvar \n\t\t\t_candidates = _processedCandidates,\n\t\t\t_main = _candidates[0]\n\t\t;\n\n\t\t\/\/\tonly get children of target\n\t\t\/\/\t===========================\n\t\t\t_candidates = $.map(_candidates, function (_element, _index)\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (!(_index > 0)):\n\t\t\t\t\tcase (!($.contains(_main.__node, _element.__node))):\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn _element;\n\t\t\t\t}\n\t\t\t});\n\n            \/\/  add main - to amke sure the result is never blank\n            _candidates.unshift(_main);\n\n\t\t\/\/\tsort _candidates -- the lower in the dom, the closer to position 0\n\t\t\/\/\t================\n\t\t\t_candidates.sort(function (a, b)\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (a.__index < b.__index): return -1;\n\t\t\t\t\tcase (a.__index > b.__index): return 1;\n\t\t\t\t\tdefault: return 0;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\/\/\tsecond candidate computation\n\t\t\/\/\t============================\n\t\t\tfor (var i=0, _i=_candidates.length; i<_i; i++)\n\t\t\t{\n\t\t\t\t\/\/\tadditional numbers\n\t\t\t\t\/\/\t==================\n\t\t\t\t\t_candidates[i].__second_length__above_plain_text = (_candidates[i]._length__above_plain_text - _main._length__above_plain_text);\n\t\t\t\t\t_candidates[i].__second_count__above_plain_words = (_candidates[i]._count__above_plain_words - _main._count__above_plain_words);\n\n\t\t\t\t\/\/\tcandidate details\n\t\t\t\t\/\/\t=================\n\t\t\t\t\t_candidates[i]['__candidate_details_second'] = $R.getContent__computeDetailsForCandidateSecond(_candidates[i], _main);\n\n\t\t\t\t\/\/\tcheck some more\n\t\t\t\t\/\/\t===============\n\t\t\t\t\/*\tswitch (true)\n\t\t\t\t\t{\n                        case (!(_candidates[i]['__candidate_details_second']['_ratio__count__plain_words_to_total_plain_words'] > 0.05)):\n\t\t\t\t\t\tcase (!(_candidates[i]['__candidate_details_second']['_ratio__length__plain_text_to_total_plain_text'] > 0.05)):\n\n\t\t\t\t\t\t\/\/case (!(_candidates[i]['__candidate_details_second']['_ratio__count__above_plain_words_to_total_plain_words'] < 0.1)):\n\t\t\t\t\t\t\/\/case (!(_candidates[i]['__candidate_details_second']['_ratio__length__above_plain_text_to_total_plain_text'] < 0.1)):\n\n                        \/\/case (_candidates[i]['__candidate_details_second']['_ratio__length__above_plain_text_to_plain_text'] > 1):\n                        \/\/case (_candidates[i]['__candidate_details_second']['_ratio__count__above_plain_words_to_plain_words'] > 1):\n\n                            _candidates[i]._is__bad = true;\n\t\t\t\t\t\t\t\/\/\twil set points to 0, in points computation function\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}*\/\n\n\t\t\t\t\/\/\tpoints\n\t\t\t\t\/\/\t======\n\t\t\t\t\t_candidates[i].__points_history_second = $R.getContent__computePointsForCandidateSecond(_candidates[i], _main);\n\t\t\t\t\t_candidates[i].__points_second = _candidates[i].__points_history_second[0];\n\t\t\t}\n\n\t\t\/\/\tsort _candidates -- the more points, the closer to position 0\n\t\t\/\/\t================\n\t\t\t_candidates.sort(function (a, b)\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (a.__points_second > b.__points_second): return -1;\n\t\t\t\t\tcase (a.__points_second < b.__points_second): return 1;\n\t\t\t\t\tdefault: return 0;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\/\/\treturn\n\t\t\/\/\t======\n\t\t\treturn _candidates;\t\n\t};\n\n\t$R.getContent__computeDetailsForCandidateSecond = function (_e, _main)\n\t{\n\t\tvar _r = {};\n\n\t\t\/\/\tbad candidate\n\t\t\/\/\t=============\n\t\t\tif (_e._is__bad) { return _r; }\n\n\t\t\/\/\ttotal text\n\t\t\/\/\t==========\n\t\t\t_r['_ratio__length__plain_text_to_total_plain_text'] = \t(_e._length__plain_text \/ _main._length__plain_text);\n\t\t\t_r['_ratio__count__plain_words_to_total_plain_words'] = (_e._count__plain_words \/ _main._count__plain_words);\n\n\t\t\/\/\tlinks\n\t\t\/\/\t=====\n\t\t\t_r['_ratio__length__links_text_to_all_text'] =\t(_e._length__links_text \/ _e._length__all_text);\n\t\t\t_r['_ratio__count__links_words_to_all_words'] = (_e._count__links_words \/ _e._count__all_words);\n\n\t\t\t_r['_ratio__length__links_text_to_total_links_text'] = \t(_e._length__links_text \/ (_main._length__links_text + 1));\n\t\t\t_r['_ratio__count__links_words_to_total_links_words'] = (_e._count__links_words \/ (_main._count__links_words + 1));\n\n\t\t\t_r['_ratio__count__links_to_total_links'] = (_e._count__links \/ (_main._count__links + 1));\n\t\t\t_r['_ratio__count__links_to_plain_words'] = ((_e._count__links * 2) \/ _e._count__plain_words);\n\n\t\t\/\/\ttext above\n\t\t\/\/\t==========\n\n            var \n                _divide__candidates = Math.max(2, Math.ceil((_e._count__above_candidates - _main._count__above_candidates) * 0.5)),\n\n                _above_text = ((0\n                    + (_e.__second_length__above_plain_text * 1)\n                    + (_e.__second_length__above_plain_text \/ _divide__candidates)\n                ) \/ 2),\n\n                _above_words = ((0\n                    + (_e.__second_count__above_plain_words * 1)\n                    + (_e.__second_count__above_plain_words \/ _divide__candidates)\n                ) \/ 2)\n            ;\n\n\t\t\t_r['_ratio__length__above_plain_text_to_total_plain_text'] =  (_above_text \/ _main._length__plain_text);\n\t\t\t_r['_ratio__count__above_plain_words_to_total_plain_words'] = (_above_words \/ _main._count__plain_words);\n\n\t\t\t_r['_ratio__length__above_plain_text_to_plain_text'] = \t(_above_text \/ _e._length__plain_text);\n\t\t\t_r['_ratio__count__above_plain_words_to_plain_words'] = (_above_words \/ _e._count__plain_words);\n\n\t\t\/\/\tcandidates\n\t\t\/\/\t==========\n\t\t\t_r['_ratio__count__candidates_to_total_candidates'] = (Math.max(0, (_e._count__candidates - (_main._count__candidates * 0.25))) \/ (_main._count__candidates + 1));\n\t\t\t_r['_ratio__count__containers_to_total_containers'] = (Math.max(0, (_e._count__containers - (_main._count__containers * 0.25))) \/ (_main._count__containers + 1));\n\t\t\t_r['_ratio__count__pieces_to_total_pieces'] =         (Math.max(0, (_e._count__pieces - (_main._count__pieces * 0.25))) \/ (_main._count__pieces + 1));\n\n\t\t\/\/\treturn\n\t\t\/\/\t======\n\t\t\treturn _r;\n\t};\n\n\t$R.getContent__computePointsForCandidateSecond = function (_e, _main)\n\t{\n\t\tvar \n\t\t\t_details = _e.__candidate_details,\n\t\t\t_details_second = _e.__candidate_details_second,\n\t\t\t_points_history = []\n\t\t;\n\n\t\t\/\/\tbad candidate\n\t\tif (_e._is__bad) { return [0]; }\n\n\t\t\/\/\tget initial points\n\t\t\/\/\t==================\n\t\t\t_points_history.unshift(_e.__points_history[(_e.__points_history.length-1)]);\n\n        \/\/  candidates, containers, pieces\n        \/\/  ==============================\n            var \n                _divide__pieces =     Math.max(5,  Math.ceil(_e._count__pieces *     0.25)),\n                _divide__candidates = Math.max(5,  Math.ceil(_e._count__candidates * 0.25)),\n                _divide__containers = Math.max(10, Math.ceil(_e._count__containers * 0.25))\n            ;\n\n            _points_history.unshift(((0\n                + (_points_history[0] * 3)\n                + ((_points_history[0] \/ _divide__pieces) * 2)\n                + ((_points_history[0] \/ _divide__candidates) * 2)\n                + ((_points_history[0] \/ _divide__containers) * 2)\n            ) \/ 9));\n\n\t\t\/\/\ttotal text\n\t\t\/\/\t==========\n\t\t\t$R.getContent__computePointsForCandidate__do(0.50, 1, (1 - (1 - _details_second._ratio__length__plain_text_to_total_plain_text)), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.50, 1, (1 - (1 - _details_second._ratio__count__plain_words_to_total_plain_words)), _points_history);\n\n\t\t\/\/\ttext above\n\t\t\/\/\t==========\n            var __ar = ($R.language == 'cjk' ? 0.50 : 0.10);\n\n\t\t\t$R.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n\t\t\t$R.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__length__above_plain_text_to_plain_text), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__count__above_plain_words_to_plain_words), _points_history);\n\n\t\t\/\/\tlinks outer\n\t\t\/\/\t===========\n\t\t\t$R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details_second._ratio__count__links_to_total_links), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details_second._ratio__length__links_text_to_total_links_text), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details_second._ratio__count__links_words_to_total_links_words), _points_history);\n\n\t\t\/\/\tlinks inner\n\t\t\/\/\t===========\n            var __lr = ($R.language == 'cjk' ? 0.75 : 0.50);\n\n\t\t\t$R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__length__links_text_to_plain_text), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_words_to_plain_words), _points_history);\n\n\t\t\t$R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details_second._ratio__length__links_text_to_all_text), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details_second._ratio__count__links_words_to_all_words), _points_history);\n\n\t\t\t$R.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details_second._ratio__count__links_to_plain_words), _points_history);\n\n\t\t\/\/\tcandidates, containers, pieces\n\t\t\/\/\t==============================\n\t\t\t$R.getContent__computePointsForCandidate__do(0.10, 2, (1 - _details_second._ratio__count__candidates_to_total_candidates), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.10, 2, (1 - _details_second._ratio__count__containers_to_total_containers), _points_history);\n\t\t\t$R.getContent__computePointsForCandidate__do(0.10, 2, (1 - _details_second._ratio__count__pieces_to_total_pieces), _points_history);\n\n\t\t\/\/\treturn -- will get [0] as the actual final points\n\t\t\/\/\t======\n\t\t\treturn _points_history;\n\t};\n\n\t$R.getContent__computePointsForCandidateThird = function (_e, _main)\n\t{\n\t\tvar \n\t\t\t_details = _e.__candidate_details,\n\t\t\t_details_second = _e.__candidate_details_second,\n\t\t\t_points_history = []\n\t\t;\n\n\t\t\/\/\tbad candidate\n\t\tif (_e._is__bad) { return [0]; }\n\n\t\t\/\/\tget initial points\n\t\t\/\/\t==================\n\t\t\t_points_history.unshift(_e.__points_history[(_e.__points_history.length-1)]);\n\n        \/\/  candidates, containers, pieces\n        \/\/  ==============================\n            var \n                _divide__pieces =     Math.max(2, Math.ceil(_e._count__pieces *     0.25)),\n                _divide__candidates = Math.max(2, Math.ceil(_e._count__candidates * 0.25)),\n                _divide__containers = Math.max(4, Math.ceil(_e._count__containers * 0.25))\n            ;\n\n            _points_history.unshift(((0\n                + (_points_history[0] * 3)\n                + ((_points_history[0] \/ _divide__pieces) * 2)\n                + ((_points_history[0] \/ _divide__candidates) * 2)\n                + ((_points_history[0] \/ _divide__containers) * 2)\n            ) \/ 9));\n\n        \/\/  total text\n        \/\/  ==========\n            $R.getContent__computePointsForCandidate__do(0.75, 1, (1 - (1 - _details_second._ratio__length__plain_text_to_total_plain_text)), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.75, 1, (1 - (1 - _details_second._ratio__count__plain_words_to_total_plain_words)), _points_history);\n\n        \/\/\ttext above\n        \/\/\t==========\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n            $R.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n            $R.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__length__above_plain_text_to_plain_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__count__above_plain_words_to_plain_words), _points_history);\n\n        \/\/\tlinks inner\n        \/\/\t===========\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__length__links_text_to_all_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__links_words_to_all_words), _points_history);\n\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__length__links_text_to_plain_text), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__links_words_to_plain_words), _points_history);\n\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__links_to_plain_words), _points_history);\n\n        \/\/\tcandidates, containers, pieces\n        \/\/\t==============================\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__candidates_to_total_candidates), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__containers_to_total_containers), _points_history);\n            $R.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__pieces_to_total_pieces), _points_history);\n\n\t\t\/\/\treturn -- will get [0] as the actual final points\n\t\t\/\/\t======\n\t\t\treturn _points_history;\n    };\n\n    $R.getContent__computePointsForCandidate__do = function (_ratio_remaining, _power, _ratio, _points_history)\n    {\n        var \n            _points_remaining = (_points_history[0] * _ratio_remaining),\n            _points_to_compute = (_points_history[0] - _points_remaining)\n        ;\n\n        if (_ratio < 0)\n        {\n            \/\/_points_return = (0.75 * _points_remaining);\n            _points_return = _points_remaining;\n        }\n        else\n        {\n            _points_return = 0\n                + _points_remaining\n                + (_points_to_compute * Math.pow(_ratio, _power))\n            ;\n        }\n\n        \/\/\tadd\n        _points_history.unshift(_points_return);\n    };\n\n\t$R.getContent__buildHTMLForNode = function (_nodeToBuildHTMLFor, _custom_mode)\n\t{\n\t\tvar \n\t\t\t_global__element_index = 0,\n\t\t\t_global__the_html = '',\n\t\t\t_global__exploreNodeToBuildHTMLFor = $R.getContent__exploreNodeAndGetStuff(_nodeToBuildHTMLFor, true)\n\t\t;\n\n\t\t\/\/\tcustom\n\t\t\/\/\t======\n\t\tswitch (_custom_mode)\n\t\t{\n\t\t\tcase 'above-the-target':\n\t\t\t\t_global__exploreNodeToBuildHTMLFor = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t\/\/\trecursive function\n\t\t\/\/\t==================\n\t\tvar _recursive = function (_node)\n\t\t{\n\t\t\t\/\/\tincrement index -- starts with 1\n\t\t\t\/\/\t===============\n\t\t\t\t_global__element_index++;\n\n\t\t\t\/\/\tvars\n\t\t\t\/\/\t====\n\t\t\t\tvar \n\t\t\t\t\t_explored = false,\n\t\t\t\t\t_tag_name = (_node.nodeType === 3 ? '#text' : ((_node.nodeType === 1 &#038;&#038; _node.tagName &#038;&#038; _node.tagName > '') ? _node.tagName.toLowerCase() : '#invalid')),\n\t\t\t\t\t_pos__start__before = 0,\n\t\t\t\t\t_pos__start__after = 0,\n\t\t\t\t\t_pos__end__before = 0,\n\t\t\t\t\t_pos__end__after = 0\n\t\t\t\t;\n\n\t\t\t\/\/\tfast return\n\t\t\t\/\/\t===========\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase ((_tag_name == '#invalid')):\n\t\t\t\t\tcase (($R.parsingOptions._elements_ignore.indexOf('|'+_tag_name+'|') > -1)):\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tcase (_tag_name == '#text'):\n\t\t\t\t\t\t_global__the_html += _node.nodeValue\n\t\t\t\t\t\t\t.replace(\/<\/gi, '&lt;')\n\t\t\t\t\t\t\t.replace(\/>\/gi, '&gt;')\n\t\t\t\t\t\t;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\/\/\thidden\n\t\t\t\/\/\t======\n\t\t\t\tif ($R.parsingOptions._elements_visible.indexOf('|'+_tag_name+'|') > -1)\n\t\t\t\t\t{ \t\n\t\/\/\tincluded inline\n\t\/\/\t_node, _tag_name must be defined\n\t\/\/\twill return, if node is hidden\n\n\tswitch (true)\n\t{\n\t\tcase (_node.offsetWidth > 0):\n\t\tcase (_node.offsetHeight > 0):\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_node.offsetLeft > 0):\n\t\t\t\tcase (_node.offsetTop > 0):\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n                    \/\/  exclude inline DIVs -- which, stupidly, don't have a width\/height\n                    if ((_tag_name == 'div') &#038;&#038; ((_node.style.display || $.css( _node, \"display\" )) == 'inline'))\n                        { break; }\n\n                    \/\/  it's hidden; exit current scope\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak;\n\t}\n }\n\n\t\t\t\/\/\tclean -- before\n\t\t\t\/\/\t=====\n\n\t\/\/\tjust a return will skip the whol element\n\t\/\/\tincluding children\n\n\t\/\/\tobjects, embeds, iframes\n\t\/\/\t========================\n\t\tswitch (_tag_name)\n\t\t{\n\t\t\tcase ('object'):\n\t\t\tcase ('embed'):\n\t\t\tcase ('iframe'):\n\t\t\t\tvar \n\t\t\t\t\t_src = (_tag_name == 'object' ? $(_node).find(\"param[name='movie']\").attr('value') : $(_node).attr('src')),\n\t\t\t\t\t_skip = ((_src > '') ? false : true)\n\t\t\t\t;\n\n\t\t\t\tif (_skip); else\n\t\t\t\t{\n\t\t\t\t\t\/\/\tdefault skip\n\t\t\t\t\t_skip = true;\n\n\t\t\t\t\t\/\/\tloop\n\t\t\t\t\tfor (var i=0, _i=$R.keepStuffFromDomain__video.length; i<_i; i++)\n\t\t\t\t\t\t{ if (_src.indexOf($R.keepStuffFromDomain__video[i]) > -1) { _skip = false; break; } }\n\t\t\t\t}\n\n\t\t\t\t\/\/\tskip?\n\t\t\t\tif (_skip)\n\t\t\t\t\t{ $R.debugOutline(_node, 'clean-before', 'object-embed-iframe'); return; }\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\/\/\tskipped link\n\t\/\/\t============\n\t\tif (_tag_name == 'a' || _tag_name == 'li')\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_explored._is__link_skip):\n\t\t\t\tcase (((_explored._count__images_small + _explored._count__images_skip) > 0) &#038;&#038; (_explored._length__plain_text < 65)):\n\t\t\t\t\t$R.debugOutline(_node, 'clean-before', 'skip-link');\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\/\/\tlink density\n\t\/\/\t============\n\t\tif ($R.parsingOptions._elements_link_density.indexOf('|'+_tag_name+'|') > -1)\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tswitch (true)\n\t\t\t{\n                case (_explored._length__plain_text > (65 * 3 * 2)):\n                case ($R.language == 'cjk' &#038;&#038; (_explored._length__plain_text > (65 * 3 * 1))):\n\t\t\t\tcase (!(_explored._count__links > 1)):\n\t\t\t\tcase (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.5):\n\t\t\t\tcase (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._count__plain_words \/ _global__exploreNodeToBuildHTMLFor._count__plain_words) > 0.5):\n\t\t\t\tcase ((_explored._length__plain_text == 0) &#038;&#038; (_explored._count__links == 1) &#038;&#038; (_explored._length__links_text < 65)):\n\t\t\t\tcase ((_explored._length__plain_text < 25) &#038;&#038; ((_explored._count__images_large + _explored._count__images_medium) > 0)):\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ((_explored._length__links_text \/ _explored._length__all_text) < 0.5):\n\t\t\t\t\tif (_explored._count__links > 0); else { break; }\n\t\t\t\t\tif (_explored._count__links_skip > 0); else { break; }\n\t\t\t\t\tif (((_explored._count__links_skip \/ _explored._count__links) > 0.25) &#038;&#038; (_explored._length__links_text \/ _explored._length__all_text) < 0.05) { break; }\n\n\t\t\t\tdefault:\n\t\t\t\t\t$R.debugOutline(_node, 'clean-before', 'link-density');\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\t\n\n\t\/\/\tfloating\n\t\/\/\t========\n\t\tif ($R.parsingOptions._elements_floating.indexOf('|'+_tag_name+'|') > -1)\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_explored._length__plain_text > (65 * 3 * 2)):\n                case ($R.language == 'cjk' &#038;&#038; (_explored._length__plain_text > (65 * 3 * 1))):\n\t\t\t\tcase (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.25):\n\t\t\t\tcase (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._count__plain_words \/ _global__exploreNodeToBuildHTMLFor._count__plain_words) > 0.25):\n\t\t\t\tcase ((_explored._length__plain_text < 25) &#038;&#038; (_explored._length__links_text < 25) &#038;&#038; ((_explored._count__images_large + _explored._count__images_medium) > 0)):\n\t\t\t\tcase (_node.getElementsByTagName &#038;&#038; (_explored._length__plain_text < (65 * 3 * 1)) &#038;&#038; ((_node.getElementsByTagName('h1').length + _node.getElementsByTagName('h2').length + _node.getElementsByTagName('h3').length + _node.getElementsByTagName('h4').length) > 0)):\n                    break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tvar _float = $(_node).css('float');\n\t\t\t\t\tif (_float == 'left' || _float == 'right'); else { break; }\n\t\t\t\t\tif ((_explored._length__links_text == 0) &#038;&#038; ((_explored._count__images_large + _explored._count__images_medium) > 0)) { break; }\n\n\t\t\t\t\t$R.debugOutline(_node, 'clean-before', 'floating');\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\/\/\tabove target\n\t\/\/\t============\n\t\tif (_custom_mode == 'above-the-target')\n\t\t{\n            \/\/  is ignored?\n\t\t\tif ($R.parsingOptions._elements_above_target_ignore.indexOf('|'+_tag_name+'|') > -1)\n\t\t\t\t{ $R.debugOutline(_node, 'clean-before', 'above-target'); return; }\n\n            \/\/  is image?\n\t\t\tif (_tag_name == 'img')\n\t\t\t{\n\t\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\t\tif (_explored._is__image_large); else\n\t\t\t\t\t{ $R.debugOutline(_node, 'clean-before', 'above-target'); return; }\n\t\t\t}\n\n            \/\/  has too many links?\n            \/\/if (_node.getElementsByTagName &#038;&#038; _node.getElementsByTagName('a').length > 5)\n            \/\/    { $R.debugOutline(_node, 'clean-before', 'above-target'); return; }\n\t\t}\n\n    \/\/  headers that are images\n    \/\/  =======================\n\t\tif (_tag_name.match(\/^h(1|2|3|4|5|6)$\/gi))\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase ((_explored._length__plain_text < 10) &#038;&#038; ((_explored._count__images_small + _explored._count__images_medium + _explored._count__images_large + _explored._count__images_skip) > 0)):\n\t\t\t\t\t$R.debugOutline(_node, 'clean-before', 'skip-heading');\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t\t\/\/\tstart tag\n\t\t\t\/\/\t=========\n\t\t\t\tif ($R.parsingOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1); else\n\t\t\t\t{\n\t\t\t\t\t\/* mark *\/\t_pos__start__before = _global__the_html.length;\n\t\t\t\t\t\/* add *\/\t_global__the_html += '<'+_tag_name;\n\n\t\t\t\t\t\/\/\tattributes\n\t\t\t\t\t\/\/\t==========\n\n\t\/\/\tallowed attributes\n\t\/\/\t==================\n\t\tif (_tag_name in $R.parsingOptions._elements_keep_attributes)\n\t\t{\n\t\t\tfor (var i=0, _i=$R.parsingOptions._elements_keep_attributes[_tag_name].length; i<_i; i++)\n\t\t\t{\n\t\t\t\tvar \n\t\t\t\t\t_attribute_name = $R.parsingOptions._elements_keep_attributes[_tag_name][i],\n\t\t\t\t\t_attribute_value = _node.getAttribute(_attribute_name)\n\t\t\t\t;\n\n\t\t\t\t\/\/\tif present\n\t\t\t\tif (_attribute_value > '')\n\t\t\t\t\t{ _global__the_html += ' '+_attribute_name+'=\"'+(_attribute_value)+'\"'; }\n\t\t\t}\n\t\t}\n\n\t\/\/\tkeep ID for all elements\n\t\/\/\t========================\n\t\tvar _id_attribute = _node.getAttribute('id');\n\t\tif (_id_attribute > '')\n\t\t\t{ _global__the_html += ' id=\"'+_id_attribute+'\"'; }\n\n\t\/\/\tlinks target NEW\n\t\/\/\t================\n\t\tif (_tag_name == 'a')\n\t\t\t{ _global__the_html += ' target=\"_blank\"'; }\n\n\t\t\t\t\t\/\/\tclose start\n\t\t\t\t\t\/\/\t===========\n\t\t\t\t\t\tif ($R.parsingOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1) { _global__the_html += ' \/>'; }\n\t\t\t\t\t\telse { _global__the_html += '>';}\n\n\t\t\t\t\t\/* mark *\/ _pos__start__after = _global__the_html.length;\n\t\t\t\t}\n\n\t\t\t\/\/\tchild nodes\n\t\t\t\/\/\t===========\n\t\t\t\tif ($R.parsingOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1); else\n\t\t\t\t{\n\t\t\t\t\tfor (var i=0, _i=_node.childNodes.length; i<_i; i++)\n\t\t\t\t\t\t{ _recursive(_node.childNodes[i]); }\n\t\t\t\t}\n\n\t\t\t\/\/\tend tag\n\t\t\t\/\/\t=======\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (($R.parsingOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1)):\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tcase (($R.parsingOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1)):\n\t\t\t\t\t\t\/* mark *\/ \t_pos__end__before = _global__the_html.length;\n\t\t\t\t\t\t\/* mark *\/ \t_pos__end__after = _global__the_html.length;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t\/* mark *\/ \t_pos__end__before = _global__the_html.length;\n\t\t\t\t\t\t\/* end *\/ \t_global__the_html += '<\/'+_tag_name+'>';\n\t\t\t\t\t\t\/* mark *\/ \t_pos__end__after = _global__the_html.length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\/\/\tclean -- after\n\t\t\t\/\/\t=====\n\n\t\/\/\twe need to actually cut things out of \n\t\/\/\t\"_global__the_html\", for stuff to not be there\n\n\t\/\/\tlargeObject classes\n\t\/\/\t===================\n\t\tif (_tag_name == 'iframe' || _tag_name == 'embed' || _tag_name == 'object')\n\t\t{\n\t\t\t_global__the_html = ''\n\t\t\t\t+ _global__the_html.substr(0, _pos__start__before)\n\t\t\t\t+ '\n\n\n\n<div class=\"readableLargeObjectContainer\">'\n\t\t\t\t+ \t_global__the_html.substr(_pos__start__before, (_pos__end__after - _pos__start__before))\n\t\t\t\t+ '<\/div>\n\n\n\n\n'\n\t\t\t;\n\t\t\treturn;\n\t\t}\n\n\t\/\/\tadd image classes\n\t\/\/\t=================\n\t\tif (_tag_name == 'img')\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_explored._is__image_skip):\n\t\t\t\t\t$R.debugOutline(_node, 'clean-after', 'skip-img');\n\t\t\t\t\t_global__the_html = _global__the_html.substr(0, _pos__start__before);\n\t\t\t\t\treturn;\n\n\t\t\t\tcase (_explored._is__image_large):\n\n                    \/\/  add float class -- for images too narrow\/tall\n                    \/\/  remove width\/height -- only for large images\n\n                    \/\/  http:\/\/www.wired.com\/threatlevel\/2011\/05\/gps-gallery\/?pid=89&#038;viewall=true\n                    \/\/  http:\/\/david-smith.org\/blog\/2012\/03\/10\/ios-5-dot-1-upgrade-stats\/index.html\n                    \/\/  http:\/\/www.turntablekitchen.com\/2012\/04\/dutch-baby-with-caramelized-vanilla-bean-pears-moving-through-the-decades\/\n\n                    _global__the_html = ''\n\t\t\t\t\t\t+ _global__the_html.substr(0, _pos__start__before)\n\t\t\t\t\t\t+ '\n\n\n\n<div class=\"readableLargeImageContainer'\n\t\t\t\t\t\t+ \t(($(_node).width() <= 250) &#038;&#038; ($(_node).height() >= 250) ? ' float' : '')\n\t\t\t\t\t\t+ '\">'\n\t\t\t\t\t\t+ \t_global__the_html.substr(_pos__start__before, (_pos__end__after - _pos__start__before)).replace(\/width=\"([^=]+?)\"\/gi, '').replace(\/height=\"([^=]+?)\"\/gi, '')\n\t\t\t\t\t\t+ '<\/div>\n\n\n\n\n'\n\t\t\t\t\t;\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\/\/\tlarge images in links\n\t\/\/\t=====================\n\t\tif (_tag_name == 'a')\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_explored._count__images_large == 1):\n\t\t\t\t\t_global__the_html = ''\n\t\t\t\t\t\t+ _global__the_html.substr(0, _pos__start__after-1)\n\t\t\t\t\t\t+ ' class=\"readableLinkWithLargeImage\">'\n\t\t\t\t\t\t+ \t_global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n\t\t\t\t\t\t+ '<\/a>'\n\t\t\t\t\t;\n\t\t\t\t\treturn;\n\n\t\t\t\tcase (_explored._count__images_medium == 1):\n\t\t\t\t\t_global__the_html = ''\n\t\t\t\t\t\t+ _global__the_html.substr(0, _pos__start__after-1)\n\t\t\t\t\t\t+ ' class=\"readableLinkWithMediumImage\">'\n\t\t\t\t\t\t+ \t_global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n\t\t\t\t\t\t+ '<\/a>'\n\t\t\t\t\t;\n\t\t\t\t\treturn;\n\t\t\t}\t\t\n\t\t}\n\n\t\/\/\ttoo much content\n\t\/\/\t================\n\t\tif ($R.parsingOptions._elements_too_much_content.indexOf('|'+_tag_name+'|') > -1)\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_tag_name == 'h1' &#038;&#038; (_explored._length__all_text > (65 * 2))):\n\t\t\t\tcase (_tag_name == 'h2' &#038;&#038; (_explored._length__all_text > (65 * 2 * 3))):\n\t\t\t\tcase ((_tag_name.match(\/^h(3|4|5|6)$\/) != null) &#038;&#038; (_explored._length__all_text > (65 * 2 * 5))):\n\t\t\t\tcase ((_tag_name.match(\/^(b|i|em|strong)$\/) != null) &#038;&#038; (_explored._length__all_text > (65 * 5 * 5))):\n\t\t\t\t\t$R.debugOutline(_node, 'clean-after', 'too-much-content');\n\t\t\t\t\t_global__the_html = ''\n\t\t\t\t\t\t+ _global__the_html.substr(0, _pos__start__before)\n\t\t\t\t\t\t+ _global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n\t\t\t\t\t;\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\t\t\n\n\t\/\/\tempty elements\n\t\/\/\t==============\n\t\tswitch (true)\n\t\t{\n\t\t\tcase (($R.parsingOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1)):\n\t\t\tcase (($R.parsingOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1)):\n\t\t\tcase (_tag_name == 'td'):\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tvar _contents = _global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after));\n\t\t\t\t\t_contents = _contents.replace(\/(<br \\\/>)\/gi, '');\n\t\t\t\t\t_contents = _contents.replace(\/(\n\n\n\n\n<hr \\\/>\n\n\n\n)\/gi, '');\n\n                    \/\/  for rows, clear empty cells\n                    if (_tag_name == 'tr')\n                    {\n                        _contents = _contents.replace(\/\n<td[^>]*?>\/gi, '');\n                        _contents = _contents.replace(\/<\\\/td>\/gi, '');\n                    }\n\n                    \/\/  for tables, clear empty rows\n                    if (_tag_name == 'table')\n                    {\n                        _contents = _contents.replace(\/\n<tr[^>]*?>\/gi, '');\n                        _contents = _contents.replace(\/<\\\/tr>\/gi, '');\n                    }\n\n\t\t\t\tvar _contentsLength = $R.measureText__getTextLength(_contents);\n\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (_contentsLength == 0 &#038;&#038; _tag_name == 'p'):\n\t\t\t\t\t\t_global__the_html = _global__the_html.substr(0, _pos__start__before) + '\n\n';\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tcase (_contentsLength == 0):\n\t\t\t\t\tcase ((_contentsLength < 5) &#038;&#038; ($R.parsingOptions._elements_visible.indexOf('|'+_tag_name+'|') > -1)):\n\t\t\t\t\t\t$R.debugOutline(_node, 'clean-after', 'blank');\n\t\t\t\t\t\t_global__the_html = _global__the_html.substr(0, _pos__start__before);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\/\/\ttoo much missing\n\t\/\/\t================\n\t\tif ($R.parsingOptions._elements_link_density.indexOf('|'+_tag_name+'|') > -1)\n\t\t{\n\t\t\t_explored = (_explored || $R.getContent__exploreNodeAndGetStuff(_node, true));\n\t\t\tvar\n\t\t\t\t_contents = _global__the_html\n\t\t\t\t\t\t\t.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n\t\t\t\t\t\t\t\t.replace(\/(<([^>]+)>)\/gi, ''),\n\t\t\t\t_contentsLength = $R.measureText__getTextLength(_contents),\n\t\t\t\t_initialLength = 0\n\t\t\t\t\t+ _explored._length__all_text \n\t\t\t\t\t+ (_explored._count__images_small \t\t\t\t\t* 10)\n\t\t\t\t\t+ (_explored._count__images_skip \t\t\t\t\t* 10)\n\t\t\t\t\t+ (_node.getElementsByTagName('iframe').length \t\t* 10)\n\t\t\t\t\t+ (_node.getElementsByTagName('object').length \t\t* 10)\n\t\t\t\t\t+ (_node.getElementsByTagName('embed').length \t\t* 10)\n\t\t\t\t\t+ (_node.getElementsByTagName('button').length \t\t* 10)\n\t\t\t\t\t+ (_node.getElementsByTagName('input').length \t\t* 10)\n\t\t\t\t\t+ (_node.getElementsByTagName('select').length \t\t* 10)\n\t\t\t\t\t+ (_node.getElementsByTagName('textarea').length \t* 10)\n\t\t\t;\n\n\t\t\t\/\/\ttoo much missing\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (!(_contentsLength > 0)):\n\t\t\t\tcase (!(_initialLength > 0)):\n\t\t\t\tcase (!((_contentsLength \/ _initialLength) < 0.5)):\n\t\t\t\tcase (!(($R.language == 'cjk') &#038;&#038; (_contentsLength \/ _initialLength) < 0.1)):\n\t\t\t\tcase ((_global__exploreNodeToBuildHTMLFor &#038;&#038; ((_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.25))):\n\t\t\t\tcase (($R.language == 'cjk') &#038;&#038; (_global__exploreNodeToBuildHTMLFor &#038;&#038; ((_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.1))):\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\t$R.debugOutline(_node, 'clean-after', 'missing-density');\n\t\t\t\t\t_global__the_html = _global__the_html.substr(0, _pos__start__before);\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t\t\/\/\treturn\n\t\t\t\treturn;\n\t\t};\n\n\t\t\/\/\tactually do it\n\t\t_recursive(_nodeToBuildHTMLFor);\n\n\t\t\/\/\treturn html\n\t\treturn _global__the_html;\n\t};\n\n    \/\/  article title marker\n    \/\/  ====================\n    $R.articleTitleMarker__start = '\n\n\n\n<div id=\"articleHeader\">\n\n\n\n<h1>';\n    $R.articleTitleMarker__end = '<\/h1>\n\n\n\n<\/div>\n\n\n\n\n';\n\n    \/\/  article title check function\n    \/\/  ============================\n    $R.getContent__find__hasIsolatedTitleInHTML = function (_html)\n    {\n        return (_html.substr(0, $R.articleTitleMarker__start.length) == $R.articleTitleMarker__start);\n    };\n\n    \/\/  article title get function\n    \/\/  ============================\n    $R.getContent__find__getIsolatedTitleInHTML = function (_html)\n    {\n        \/\/  is it there?\n        if ($R.getContent__find__hasIsolatedTitleInHTML(_html)); else { return ''; }\n\n        \/\/  regex\n        var \n            _getTitleRegex = new RegExp($R.articleTitleMarker__start + '(.*?)' + $R.articleTitleMarker__end, 'i'),\n            _getTitleMatch = _html.match(_getTitleRegex)\n        ;\n\n        \/\/  match?\n        if (_getTitleMatch); else { return ''; }\n\n        \/\/  return\n        return _getTitleMatch[1];\n    };\n\n    \/\/  find title in arbitrary html\n    \/\/  ============================\n    $R.getContent__find__isolateTitleInHTML = function (_html, _document_title)\n    {\n        \/\/  can't just use (h1|h2|h3|etc) -- we want to try them in a certain order\n        \/\/  =============================\n        var\n            _heading_pregs = [\n                \/<(h1)[^>]*?>([\\s\\S]+?)<\\\/\\1>\/gi,\n                \/<(h2)[^>]*?>([\\s\\S]+?)<\\\/\\1>\/gi,\n                \/<(h3|h4|h5|h6)[^>]*?>([\\s\\S]+?)<\\\/\\1>\/gi\n            ],\n            _secondary_headings = '|h2|h3|h4|h5|h6|',\n            _search_document_title = ' ' + _document_title.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ') + ' '\n        ;\n\n        \/\/  loop pregs\n        \/\/  ==========\n        for (var i=0, _i=_heading_pregs.length; i<_i; i++)\n        {\n            \/\/  exec\n            var _match = _heading_pregs[i].exec(_html);\n\n            \/\/  return?\n            switch (true)\n            {\n                case (!(_match)):\n                case (!(_heading_pregs[i].lastIndex > -1)):\n                    \/\/  will continue loop\n                    break;\n\n                default:\n\n                    \/\/  measurements\n                    var\n                        _heading_end_pos = _heading_pregs[i].lastIndex,\n                        _heading_start_pos = (_heading_end_pos - _match[0].length),\n\n                        _heading_type = _match[1],\n                        _heading_text = _match[2].replace(\/<\\s*br[^>]*>\/gi, '').replace(\/[\\n\\r]+\/gi, ''),\n                        _heading_text_plain = _heading_text.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ');\n                        _heading_length = $R.measureText__getTextLength(_heading_text_plain),\n                        _heading_words = [],\n\n                        _to_heading_text = _html.substr(0, _heading_start_pos),\n                        _to_heading_length = $R.measureText__getTextLength(_to_heading_text.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' '))\n                    ;\n\n                    \/\/  return?\n                    switch (true)\n                    {\n                        case (!(_heading_length > 5)):\n                        case (!(_heading_length < (65 * 3))):\n                        case (!(_to_heading_length < (65 * 3 * 2))):\n                            \/\/  will continue for loop\n                            break;\n\n                        case ((_secondary_headings.indexOf('|' + _heading_type + '|') > -1)):\n                            \/\/  words in this heading\n                            _heading_words = _heading_text_plain.split(' ');\n\n                            \/\/  count words present in title\n                            for (var j=0, _j=_heading_words.length, _matched_words=''; j<_j; j++) {\n                                if (_search_document_title.indexOf(' ' + _heading_words[j] + ' ') > -1) {\n                                    _matched_words += _heading_words[j] + ' ';\n                                }\n                            }\n\n                            \/\/  break continues for loop\n                            \/\/  nothing goes to switch's default\n                            \/\/  ================================\n\n                                \/\/  no break?\n                                var _no_break = false;\n                                switch (true)\n                                {\n                                    \/\/  if it's big enough, and it's a substring of the title, it's good\n                                    case ((_heading_length > 20) &#038;&#038; (_search_document_title.indexOf(_heading_text_plain) > -1)):\n\n                                    \/\/  if it's slightly smaler, but is exactly at the begging or the end\n                                    case ((_heading_length > 10) &#038;&#038; ((_search_document_title.indexOf(_heading_text_plain) == 1) || (_search_document_title.indexOf(_heading_text_plain) == (_search_document_title.length - 1 - _heading_text_plain.length)))):\n\n                                        _no_break = true;\n                                        break;\n                                }\n\n                                \/\/  break?\n                                var _break = false;\n                                switch (true)\n                                {\n                                    \/\/  no break?\n                                    case (_no_break):\n                                        break;\n\n                                    \/\/ heading too long? -- if not h2\n                                    case ((_heading_length > ((_search_document_title.length - 2) * 2)) &#038;&#038; (_heading_type != 'h2')):\n\n                                    \/\/  heading long enough?\n                                    case ((_heading_length < Math.ceil((_search_document_title.length - 2) * 0.50))):\n\n                                    \/\/  enough words matched?\n                                    case ((_heading_length < 25) &#038;&#038; (_matched_words.length < Math.ceil(_heading_length * 0.75))):\n                                    case ((_heading_length < 50) &#038;&#038; (_matched_words.length < Math.ceil(_heading_length * 0.65))):\n                                    case ((_matched_words.length < Math.ceil(_heading_length * 0.55))):\n\n                                        _break = true;\n                                        break;\n                                }\n\n                                \/\/  break?\n                                if (_break) { break; }\n\n                        default:\n                            \/\/  this is the title -- do isolation; return\n                            \/\/  =================\n                            return ''\n\n                                + $R.articleTitleMarker__start\n                                +   _heading_text \n                                + $R.articleTitleMarker__end\n\n                                + _html.substr(_heading_end_pos)\n                            ;\n                    }\n\n                    break;\n            }\n        }\n\n        \/\/  return unmodified\n        return _html;\n    };\n\n\t$R.getContent__find = function ()\n\t{\n\t\t\/\/\tget content\n\t\t\/\/\t===========\n\t\t\tvar \n\t\t\t\t_found = $R.getContent__findInPage($R.win),\n\t\t\t\t_targetNode = _found._targetCandidate.__node,\n\t\t\t\t_$targetNode = $(_targetNode),\n                _aboveNodes = []\n\t\t\t;\n\n\t\t\/\/\tRTL\n\t\t\/\/\t===\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (_$targetNode.attr('dir') == 'rtl'):\n\t\t\t\tcase (_$targetNode.css('direction') == 'rtl'):\n\t\t\t\t\t$R.makeRTL();\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\/\/  get html\n        \/\/  ========\n            var \n                _foundHTML = _found._html,\n                _firstFragmentBefore = $R.getContent__nextPage__getFirstFragment(_foundHTML),\n                _documentTitle = ($R.document.title > '' ? $R.document.title : '')\n            ;\n\n        \/\/  get title\n        \/\/  =========\n\n            \/\/  has title already?\n            _foundHTML = $R.getContent__find__isolateTitleInHTML(_foundHTML, _documentTitle);\n            $R.articleTitle = $R.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n            $R.debugPrint('TitleSource', 'target');\n\n            \/\/  get html above?\n            if ($R.articleTitle > ''); else\n            {\n\n    \/\/  get html above target?\n    \/\/  ======================\n\n    \/\/  global vars:\n    \/\/      _found\n    \/\/      _foundHTML\n    \/\/      _documentTitle\n    \/\/      _aboveNodes\n\n    var \n        _prevNode = _found._targetCandidate.__node,\n        _prevHTML = '',\n        _aboveHTML = '',\n        _differentTargets = (_found._firstCandidate.__node != _found._targetCandidate.__node)\n    ;\n\n    (function () \n    {\n\n        while (true)\n        {\n            \/\/  the end?\n            switch (true)\n            {\n                case (_prevNode.tagName &#038;&#038; (_prevNode.tagName.toLowerCase() == 'body')):\n                case (_differentTargets &#038;&#038; (_prevNode == _found._firstCandidate.__node)):\n                    \/\/  enough is enough\n                    return;\n            }\n\n            \/\/  up or sideways?\n            if (_prevNode.previousSibling); else\n            {\n                _prevNode = _prevNode.parentNode;\n                continue;\n            }\n\n            \/\/\tprevious\n            _prevNode = _prevNode.previousSibling;\n\n            \/\/\toutline -- element might be re-outlined, when buildHTML is invoked\n            if ($R.debug) { $R.debugOutline(_prevNode, 'target', 'add-above'); }\n\n            \/\/\tget html; add\n            _prevHTML = $R.getContent__buildHTMLForNode(_prevNode, 'above-the-target');\n            _aboveHTML = _prevHTML + _aboveHTML;\n            _aboveNodes.unshift(_prevNode);\n\n            \/\/  isolate title\n            _aboveHTML = $R.getContent__find__isolateTitleInHTML(_aboveHTML, _documentTitle);\n\n            \/\/\tfinished?\n            switch (true)\n            {\n                case ($R.measureText__getTextLength(_aboveHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ')) > (65 * 3 * 3)):\n                case ($R.getContent__find__hasIsolatedTitleInHTML(_aboveHTML)):\n                    return;\n            }\n        }\n\n    })();\n\n    \/\/  is what we found any good?\n    \/\/  ==========================\n    switch (true)\n    {\n        case ($R.getContent__find__hasIsolatedTitleInHTML(_aboveHTML)):\n        case (_differentTargets &#038;&#038; (_aboveHTML.split('<a ').length < 3) &#038;&#038; ($R.measureText__getTextLength(_aboveHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ')) < (65 * 3))):\n            _foundHTML = _aboveHTML + _foundHTML;\n            break;\n\n        default:\n            _aboveHTML = '';\n            _aboveNodes = [];\n            break;\n    }\n\n                $R.articleTitle = $R.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                $R.debugPrint('TitleSource', 'above_HTML');\n\n                \/\/  get document title?\n                if ($R.articleTitle > ''); else\n                {\n\n    \/\/  if all else failed, get document title\n    \/\/  ======================================\n\n    \/\/  global vars:\n    \/\/      _foundHTML\n    \/\/      _documentTitle\n\n    (function ()\n    {\n        \/\/  return?\n        \/\/  =======\n            if (_documentTitle > ''); else { return; }\n\n        \/\/  vars\n            var\n                _doc_title_parts = [],\n                _doc_title_pregs =\n                [\n                    \/( [-][-] |( [-] )|( [>][>] )|( [<][<] )|( [|] )|( [\\\/] ))\/i,\n                    \/(([:] ))\/i\n                ]\n            ;\n\n        \/\/\tloop through pregs\n        \/\/  ==================\n            for (var i=0, _i=_doc_title_pregs.length; i<_i; i++)\n            {\n                \/\/\tsplit\n                _doc_title_parts = _documentTitle.split(_doc_title_pregs[i]);\n\n                \/\/\tbreak if we managed a split\n                if (_doc_title_parts.length > 1) { break; }\n            }\n\n        \/\/\tsort title parts -- longer goes higher up -- i.e. towards 0\n        \/\/\t================\n            _doc_title_parts.sort(function (a, b)\n            {\n                switch (true)\n                {\n                    case (a.length > b.length): return -1;\n                    case (a.length < b.length): return 1;\n                    default: return 0;\n                }\n            });\n\n        \/\/\tset title -- first part, if more than one word; otherwise, whole\n        \/\/  =========\n            _foundHTML = ''\n\n                + $R.articleTitleMarker__start\n                +   (_doc_title_parts[0].split(\/\\s+\/i).length > 1 ? _doc_title_parts[0] : _documentTitle) \n                + $R.articleTitleMarker__end \n\n                + _foundHTML\n            ;\n\n    })();\n                    $R.articleTitle = $R.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                    $R.debugPrint('TitleSource', 'document_title');\n                }\n            }\n\n\t\t\/\/\tdisplay\n\t\t\/\/\t=======\n\t\t\t$R.$pages.html('');\n\t\t\t$R.displayPageHTML(_foundHTML, 1, $R.win.location.href);\n\n\t\t\/\/\tremember\n\t\t\/\/\t========\n\t\t\t$R.debugRemember['theTarget'] = _found._targetCandidate.__node;\n\t\t\t$R.debugRemember['firstCandidate'] = _found._firstCandidate.__node;\n\n\t\t\/\/\tnext\n\t\t\/\/\t====\n            $R.nextPage__firstFragment__firstPage = _firstFragmentBefore;\n            $R.nextPage__firstFragment__lastPage = $R.getContent__nextPage__getFirstFragment(_foundHTML);;\n\n\t\t\t$R.nextPage__loadedPages = [$R.win.location.href];\n\t\t\t$R.getContent__nextPage__find($R.win, _found._links);\n\n\t\t\/\/\treturn\n\t\treturn true;\n\t};\n\n\t$R.getContent__findInPage = function (_pageWindow)\n\t{\n\t\t\/\/\tcalculations\n\t\t\/\/\t============\n\n\t\t\tvar\n\t\t\t\t_firstCandidate = false,\n\t\t\t\t_secondCandidate = false,\n\t\t\t\t_targetCandidate = false\n\t\t\t;\n\n\t\t\t$R.debugTimerStart('ExploreAndGetStuff');\n\t\t\t\tvar\t_stuff = $R.getContent__exploreNodeAndGetStuff(_pageWindow.document.body);\n\t\t\t$R.debugPrint('ExploreAndGetStuff', $R.debugTimerEnd()+'ms');\n\n\t\t\t$R.debugTimerStart('ProcessFirst');\n\t\t\t\tvar _processedCandidates = $R.getContent__processCandidates(_stuff._candidates);\n\t\t\t\t_firstCandidate = _processedCandidates[0];\n\t\t\t\t_targetCandidate = _firstCandidate;\n\t\t\t$R.debugPrint('ProcessFirst', $R.debugTimerEnd()+'ms');\n\n            \/\/  debug\n\t\t\tif ($R.debug)\n\t\t\t{\n                \/\/  debug first candidates\n                $R.log('First 5 Main Candidates:');\n\t\t\t\tfor (var x in _processedCandidates)\n                {\n                    if (x == 5) { break; }\n                    $R.log(_processedCandidates[x], _processedCandidates[x].__node);\n                }\n\n                \/\/  highlight first\n                $R.debugOutline(_firstCandidate.__node, 'target', 'first');\n            }\n\n            \/\/  in case we stop\n            $R.debugPrint('Target', 'first');\n\n\t\t\t\/\/  do second?\n\t\t\tswitch (true)\n\t\t\t{\n\t\t\t\tcase (!(_firstCandidate._count__containers > 0)):\n\t\t\t\tcase (!(_firstCandidate._count__candidates > 0)):\n\t\t\t\tcase (!(_firstCandidate._count__pieces > 0)):\n\t\t\t\tcase (!(_firstCandidate._count__containers > 25)):\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n                    $R.debugTimerStart('ProcessSecond');\n                        var _processedCandidatesSecond = $R.getContent__processCandidatesSecond(_processedCandidates);\n                        _secondCandidate = _processedCandidatesSecond[0];\n                    $R.debugPrint('ProcessSecond', $R.debugTimerEnd()+'ms');\n\n                    \/\/  they're the same\n                    if (_firstCandidate.__node == _secondCandidate.__node) { break; }\n\n                    \/\/  debug\n                    if ($R.debug)\n                    {\n                        \/\/  log second candidates\n                        $R.log('First 5 Second Candidates:');\n                        for (var x in _processedCandidatesSecond)\n                        {\n                            if (x == 5) { break; }\n                            $R.log(_processedCandidatesSecond[x], _processedCandidatesSecond[x].__node);\n                        }\n\n                        \/\/  highlight second\n                        $R.debugOutline(_secondCandidate.__node, 'target', 'second');\n                    }\n\n                    \/\/  compute again\n                    \/\/  =============\n                        _firstCandidate['__points_history_final'] = $R.getContent__computePointsForCandidateThird(_firstCandidate, _firstCandidate);\n                        _firstCandidate['__points_final'] = _firstCandidate.__points_history_final[0];\n\n                        _secondCandidate['__points_history_final'] = $R.getContent__computePointsForCandidateThird(_secondCandidate, _firstCandidate);\n                        _secondCandidate['__points_final'] = _secondCandidate.__points_history_final[0];\n\n                    \/\/  log results\n                    \/\/  ===========\n                        if ($R.debug)\n                        {\n                            $R.log('The 2 Candidates:');\n                            $R.log(_firstCandidate);\n                            $R.log(_secondCandidate);\n                        }\n\n                    \/\/  are we selecting _second?\n                    \/\/  =========================\n                        switch (true)\n                        {\n                            case ((_secondCandidate.__candidate_details._count__lines_of_65_characters < 20) &#038;&#038; (_secondCandidate.__points_final \/ _firstCandidate.__points_final) > 1):\n                            case ((_secondCandidate.__candidate_details._count__lines_of_65_characters > 20) &#038;&#038; (_secondCandidate.__points_final \/ _firstCandidate.__points_final) > 0.9):\n                            case ((_secondCandidate.__candidate_details._count__lines_of_65_characters > 50) &#038;&#038; (_secondCandidate.__points_final \/ _firstCandidate.__points_final) > 0.75):\n                                _targetCandidate = _secondCandidate;\n                                $R.debugPrint('Target', 'second');\n                                break;\n                        }\n\n                    \/\/  print points\n                    \/\/  ============\n                        if ($R.debug)\n                        {\n                            $R.debugPrint('PointsFirst', _firstCandidate['__points_history_final'][0].toFixed(2));\n                            $R.debugPrint('PointsSecond', _secondCandidate['__points_history_final'][0].toFixed(2));\n                        }\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n            \/\/  highlight target\n            \/\/  ================\n                if ($R.debug)\n                {\n                    $(_targetCandidate.__node).css({\n                        'box-shadow': \n                            'inset 0px 0px 50px rgba(255, 255, 0, 0.95), 0px 0px 50px rgba(255, 255, 0, 0.95)'\n                    });\n                }\n\n\t\t\/\/\tget html\n\t\t\/\/\t========\n\t\t\t$R.debugTimerStart('BuildHTML');\n\t\t\t\tvar _html = $R.getContent__buildHTMLForNode(_targetCandidate.__node, 'the-target');\n\t\t\t\t\t_html = _html.substr((_html.indexOf('>')+1))\n                    _html = _html.substr(0, _html.lastIndexOf('<'));\n\t\t\t$R.debugPrint('BuildHTML', $R.debugTimerEnd()+'ms');\n\n\t\t\t$R.debugTimerStart('BuildHTMLPregs');\n\t\t\t\t_html = _html.replace(\/<(blockquote|div|p|td|li)([^>]*)>(\\s*<br \\\/>)+\/gi, '<$1$2>');\n\t\t\t\t_html = _html.replace(\/(<br \\\/>\\s*)+<\\\/(blockquote|div|p|td|li)>\/gi, '<\/$2>');\n\t\t\t\t_html = _html.replace(\/(<br \\\/>\\s*)+<(blockquote|div|h\\d|ol|p|table|ul|li)([^>]*)>\/gi, '<$2$3>');\n\t\t\t\t_html = _html.replace(\/<\\\/(blockquote|div|h\\d|ol|p|table|ul|li)>(\\s*<br \\\/>)+\/gi, '<\/$1>');\n\t\t\t\t_html = _html.replace(\/(\n\n\n\n\n<hr \\\/>\n\n\n\n\\s*\n\n\n\n\n<hr \\\/>\n\n\n\n\\s*)+\/gi, '\n\n\n\n\n<hr \/>\n\n\n\n\n\n');\n\t\t\t\t_html = _html.replace(\/(<br \\\/>\\s*<br \\\/>\\s*)+\/gi, '\n\n');\n\t\t\t$R.debugPrint('BuildHTMLPregs', $R.debugTimerEnd()+'ms');\n\n\t\t\/\/\treturn\n\t\t\/\/\t======\n\t\t\treturn {\n\t\t\t\t'_html': _html,\n\t\t\t\t'_links': _stuff._links,\n\t\t\t\t'_targetCandidate': _targetCandidate,\n\t\t\t\t'_firstCandidate': _firstCandidate\n\t\t\t};\n\t};\n\n    \/\/  get first page fragment\n    \/\/  =======================\n\n        $R.getContent__nextPage__getFirstFragment = function (_html)\n        {\n            \/\/  remove all tags\n            _html = _html.replace(\/<[^>]+?>\/gi, '');\n\n            \/\/  normalize spaces\n            _html = _html.replace(\/\\s+\/gi, ' ');\n\n            \/\/  return first 1000 characters\n            return _html.substr(0, 2000);\n        };\n\n    \/\/  get link parts\n    \/\/  ==============\n\n        \/\/  substr starting with the first slash after \/\/\n\t\t$R.getURLPath = function (_url)\n\t\t{\n\t\t\treturn _url.substr(_url.indexOf('\/', (_url.indexOf('\/\/') + 2)));\n\t\t};\n\n        \/\/  substr until the first slash after \/\/\n\t\t$R.getURLDomain = function (_url)\n\t\t{\n\t\t\treturn _url.substr(0, _url.indexOf('\/', (_url.indexOf('\/\/') + 2)))\n\t\t};\n\n\t\/\/\tfind\n\t\/\/\t====\n\t\t$R.getContent__nextPage__find = function (_currentPageWindow, _linksInCurrentPage)\n\t\t{\n\t\t\t\/\/\tpage id\n\t\t\t\tvar _pageNr = ($R.nextPage__loadedPages.length + 1);\n\n\t\t\t\/\/\tget\n\t\t\t\/\/\t===\n\t\t\t\tvar _possible = [];\n\t\t\t\tif (_possible.length > 0); else { _possible = $R.getContent__nextPage__find__possible(_currentPageWindow, _linksInCurrentPage, 0.5); }\n\t\t\t\t\/\/if (_possible.length > 0); else { _possible = $R.getContent__nextPage__find__possible(_currentPageWindow, _linksInCurrentPage, 0.50); }\n\n\t\t\t\t\/\/\tnone\n\t\t\t\tif (_possible.length > 0); else\n\t\t\t\t\t{ if ($R.debug) { $R.log('no next link found'); } return; }\n\n\t\t\t\tif ($R.debug) { $R.log('possible next', _possible); }\n\n\t\t\t\/\/\tthe one\n\t\t\t\/\/\t=======\n\t\t\t\tvar _nextLink = false;\n\n\t\t\t\/\/\tnext keyword?\n\t\t\t\/\/\t=============\n\t\t\t\t(function ()\n\t\t\t\t{\n\t\t\t\t\tif (_nextLink) { return; }\n\n\t\t\t\t\tfor (var i=0, _i=_possible.length; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var j=0, _j=$R.nextPage__captionKeywords.length; j<_j; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (_possible[i]._caption.indexOf($R.nextPage__captionKeywords[j]) > -1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\/\/\tlength\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\tif (_possible[i]._caption.length > $R.nextPage__captionKeywords[j].length * 2)\n\t\t\t\t\t\t\t\t\t\t{ continue; }\n\n\t\t\t\t\t\t\t\t\/\/\tnot keywords\n\t\t\t\t\t\t\t\t\/\/\t============\n\t\t\t\t\t\t\t\t\tfor (var z=0, _z=$R.nextPage__captionKeywords__not.length; z<_z; z++)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (_possible[i]._caption.indexOf($R.nextPage__captionKeywords__not[z]) > -1)\n\t\t\t\t\t\t\t\t\t\t\t{ _nextLink = false; return; }\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\/\/\tgot it\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\t_nextLink = _possible[i];\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})();\t\n\n\t\t\t\/\/\tcaption matched page number\n\t\t\t\/\/\t===========================\n\t\t\t\t(function ()\n\t\t\t\t{\n\t\t\t\t\tif (_nextLink) { return; }\n\n\t\t\t\t\tfor (var i=0, _i=_possible.length; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (_possible[i]._caption == (''+_pageNr))\n\t\t\t\t\t\t\t{ _nextLink = _possible[i]; return; }\n\t\t\t\t\t}\n\t\t\t\t})();\n\n\t\t\t\/\/\tnext keyword in title\n\t\t\t\/\/\t=====================\n\t\t\t\t(function ()\n\t\t\t\t{\n\t\t\t\t\tif (_nextLink) { return; }\n\n\t\t\t\t\tfor (var i=0, _i=_possible.length; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\t\/\/\tsanity\n\t\t\t\t\t\tif (_possible[i]._title > ''); else { continue; }\n\t\t\t\t\t\tif ($R.measureText__getTextLength(_possible[i]._caption) <= 2); else { continue; }\n\n\t\t\t\t\t\tfor (var j=0, _j=$R.nextPage__captionKeywords.length; j<_j; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (_possible[i]._title.indexOf($R.nextPage__captionKeywords[j]) > -1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\/\/\tlength\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\tif (_possible[i]._title.length > $R.nextPage__captionKeywords[j].length * 2)\n\t\t\t\t\t\t\t\t\t\t{ continue; }\n\n\t\t\t\t\t\t\t\t\/\/\tnot keywords\n\t\t\t\t\t\t\t\t\/\/\t============\n\t\t\t\t\t\t\t\t\tfor (var z=0, _z=$R.nextPage__captionKeywords__not.length; z<_z; z++)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (_possible[i]._title.indexOf($R.nextPage__captionKeywords__not[z]) > -1)\n\t\t\t\t\t\t\t\t\t\t\t{ _nextLink = false; return; }\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\/\/\tgot it\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\t_nextLink = _possible[i];\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})();\n\n\t\t\t\/\/\treturn?\n\t\t\t\/\/\t=======\n\t\t\t\tif (_nextLink); else { return; }\n\n\t\t\t\/\/\tmark\n\t\t\t\/\/\t====\n\t\t\t\t$R.debugPrint('NextPage', 'true');\n\n\t\t\t\tif ($R.debug)\n\t\t\t\t{\n\t\t\t\t\t$R.debugOutline(_nextLink._node, 'target', 'next-page');\n\t\t\t\t\t$R.log('NextPage Link', _nextLink, _nextLink._node);\n\t\t\t\t}\n\n\t\t\t\/\/\tprocess page\n\t\t\t\/\/\t============\n\t\t\t\t$R.getContent__nextPage__loadToFrame(_pageNr, _nextLink._href);\n\t\t\t\t$R.nextPage__loadedPages.push(_nextLink._href);\n\t\t};\n\n\t\/\/\tfind with similarity\n\t\/\/\t====================\n\t\t$R.getContent__nextPage__find__possible = function (_currentPageWindow, _linksInCurrentPage, _distanceFactor)\n\t\t{\n\t\t\tvar \n\t\t\t\t_mainPageHref = $R.win.location.href,\n\t\t\t\t_mainPageDomain = $R.getURLDomain(_mainPageHref),\n\t\t\t\t_mainPagePath = $R.getURLPath(_mainPageHref)\n\t\t\t;\n\n\t\t\tvar _links = $.map\n\t\t\t(\n\t\t\t\t_linksInCurrentPage,\n\t\t\t\tfunction (_element, _index)\n\t\t\t\t{\n\t\t\t\t\tvar \n\t\t\t\t\t\t_href = _element.__node.href,\n\t\t\t\t\t\t_path = $R.getURLPath(_href),\n\t\t\t\t\t\t_title = (_element.__node.title > '' ? _element.__node.title.toLowerCase() : ''),\n\t\t\t\t\t\t_caption = _element.__node.innerHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\&#038;[^\\&\\s;]{1,10};\/gi, '').replace(\/\\s+\/gi, ' ').replace(\/^ \/, '').replace(\/ $\/, '').toLowerCase(),\n\t\t\t\t\t\t_distance = $R.levenshteinDistance(_mainPagePath, _path)\n\t\t\t\t\t;\n\n\t\t\t\t\tvar _caption2 = '';\n\t\t\t\t\tfor (var i=0, _i=_caption.length, _code=0; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\t_code = _caption.charCodeAt(i);\n\t\t\t\t\t\t_caption2 += (_code > 127 ? ('&#'+_code+';') : _caption.charAt(i));\n\t\t\t\t\t}\n\t\t\t\t\t_caption = _caption2;\n\n\t\t\t\t\tswitch (true)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase (!(_href > '')):\n\t\t\t\t\t\tcase (_mainPageHref.length > _href.length):\n\t\t\t\t\t\tcase (_mainPageDomain != $R.getURLDomain(_href)):\n\t\t\t\t\t\tcase (_href.substr(_mainPageHref.length).substr(0, 1) == '#'):\n\t\t\t\t\t\tcase (_distance > Math.ceil(_distanceFactor * _path.length)):\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\/\/\tskip if already loaded as next page\n\t\t\t\t\t\t\tfor (var i=0, _i=$R.nextPage__loadedPages.length; i<_i; i++)\n\t\t\t\t\t\t\t\t{ if ($R.nextPage__loadedPages[i] == _href) { return null; } }\n\n\t\t\t\t\t\t\t\/\/\treturn\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t'_node': _element.__node,\n\t\t\t\t\t\t\t\t'_href': _href,\n\t\t\t\t\t\t\t\t'_title': _title,\n\t\t\t\t\t\t\t\t'_caption': _caption,\n\t\t\t\t\t\t\t\t'_distance': _distance\n\t\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t\/\/\tsort -- the less points, the closer to position 0\n\t\t\t\/\/\t====\n\t\t\t\t_links.sort(function (a, b)\n\t\t\t\t{\n\t\t\t\t\tswitch (true)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase (a._distance < b._distance): return -1;\n\t\t\t\t\t\tcase (a._distance > b._distance): return 1;\n\t\t\t\t\t\tdefault: return 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\/\/\treturn\n\t\t\t\treturn _links;\n\t\t};\n\n\t\/\/\tload to frame\n\t\/\/\t=============\n\t\t$R.getContent__nextPage__loadToFrame = function (_pageNr, _nextPageURL)\n\t\t{\n\t\t\t\/\/\tdo ajax\n\t\t\t\/\/\t=======\n\t\t\t\t$.ajax\n\t\t\t\t({\n\t\t\t\t\t'url' : _nextPageURL,\n\n\t\t\t\t\t'type' : 'GET',\n\t\t\t\t\t'dataType' : 'html',\n\t\t\t\t\t'async' : true,\n\t\t\t\t\t'timeout': (10 * 1000),\n\n\t\t\t\t\t\/\/'headers': { 'Referrer': _nextPageURL },\n\n\t\t\t\t\t'success' : function (_response, _textStatus, _xhr)\t{ $R.getContent__nextPage__ajaxComplete(_pageNr, _response, _textStatus, _xhr); },\n\t\t\t\t\t'error' : \tfunction (_xhr, _textStatus, _error)\t{ $R.getContent__nextPage__ajaxError(_pageNr, _xhr, _textStatus, _error); }\n\t\t\t\t});\n\t\t};\n\n\t\/\/\tajax calbacks\n\t\/\/\t=============\n\t\t$R.getContent__nextPage__ajaxError = function (_pageNr, _xhr, _textStatus, _error)\n\t\t{\n\t\t};\n\n\t\t$R.getContent__nextPage__ajaxComplete = function (_pageNr, _response, _textStatus, _xhr)\n\t\t{\n\t\t\t\/\/\tvalid?\n\t\t\t\/\/\t======\n\t\t\t\tif (_response > ''); else { return; }\n\n\t\t\t\/\/\tscript\n\t\t\t\/\/\t======\n\t\t\t\tvar _script = ''\n\t\t\t\t\t+ '<script type=\"text\/javascript\">'\n\t\t\t\t\t+ ' function __this_page_loaded()'\n\t\t\t\t\t+ '\t{'\n\t\t\t\t\t+ ' \twindow.setTimeout('\n\t\t\t\t\t+ ' \t\tfunction () {'\n                    +               ($R.component ? 'window.parent.' : 'window.parent.parent.')\n                    +                   '$readable.getContent__nextPage__loadedInFrame(\"'+_pageNr+'\", window); }, '\n\t\t\t\t\t+ ' \t\t250'\n\t\t\t\t\t+ ' \t);'\n\t\t\t\t\t+ ' } '\n\n\t\t\t\t\t+ ' if (document.readyState); else { __this_page_loaded(); } '\n\n\t\t\t\t\t+ ' function __this_page_loaded_ready(delayedNrTimes)'\n\t\t\t\t\t+ ' {'\n\t\t\t\t\t+ ' \tif (document.readyState != \"complete\" &#038;&#038; delayedNrTimes < 30)'\n\t\t\t\t\t+ '\t\t\t{ setTimeout(function () { __this_page_loaded_ready(delayedNrTimes+1); }, 100); return; }'\n\n\t\t\t\t\t+ ' \t__this_page_loaded();'\n\t\t\t\t\t+ ' }'\n\n\t\t\t\t\t+ ' __this_page_loaded_ready(0);'\n\t\t\t\t\t+ '\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/*mousewheel*\/\n(function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type=\"mousewheel\",c.wheelDelta&#038;&#038;(e=c.wheelDelta\/120),c.detail&#038;&#038;(e=-c.detail\/3),h=e,c.axis!==undefined&#038;&#038;c.axis===c.HORIZONTAL_AXIS&#038;&#038;(h=0,g=-1*e),c.wheelDeltaY!==undefined&#038;&#038;(h=c.wheelDeltaY\/120),c.wheelDeltaX!==undefined&#038;&#038;(g=-1*c.wheelDeltaX\/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=[\"DOMMouseScroll\",\"mousewheel\"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})})(jQuery);\n\/*custom scrollbar*\/\n(function(c){var b={init:function(e){var f={set_width:false,set_height:false,horizontalScroll:false,scrollInertia:950,mouseWheel:true,mouseWheelPixels:\"auto\",autoDraggerLength:true,autoHideScrollbar:false,alwaysShowScrollbar:false,snapAmount:null,snapOffset:0,scrollButtons:{enable:false,scrollType:\"continuous\",scrollSpeed:\"auto\",scrollAmount:40},advanced:{updateOnBrowserResize:true,updateOnContentResize:false,autoExpandHorizontalScroll:false,autoScrollOnFocus:true,normalizeMouseWheelDelta:false},contentTouchScroll:true,callbacks:{onScrollStart:function(){},onScroll:function(){},onTotalScroll:function(){},onTotalScrollBack:function(){},onTotalScrollOffset:0,onTotalScrollBackOffset:0,whileScrolling:function(){}},theme:\"light\"},e=c.extend(true,f,e);return this.each(function(){var m=c(this);if(e.set_width){m.css(\"width\",e.set_width)}if(e.set_height){m.css(\"height\",e.set_height)}if(!c(document).data(\"mCustomScrollbar-index\")){c(document).data(\"mCustomScrollbar-index\",\"1\")}else{var t=parseInt(c(document).data(\"mCustomScrollbar-index\"));c(document).data(\"mCustomScrollbar-index\",t+1)}m.wrapInner(\"\n\n\n\n<div class='mCustomScrollBox mCS-\"+e.theme+\"' id='mCSB_\"+c(document).data(\"mCustomScrollbar-index\")+\"' style='position:relative; height:100%; overflow:hidden; max-width:100%;' \/>\").addClass(\"mCustomScrollbar _mCS_\"+c(document).data(\"mCustomScrollbar-index\"));var g=m.children(\".mCustomScrollBox\");if(e.horizontalScroll){g.addClass(\"mCSB_horizontal\").wrapInner(\"\n\n\n\n<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' \/>\");var k=g.children(\".mCSB_h_wrapper\");k.wrapInner(\"\n\n\n\n<div class='mCSB_container' style='position:absolute; left:0;' \/>\").children(\".mCSB_container\").css({width:k.children().outerWidth(),position:\"relative\"}).unwrap()}else{g.wrapInner(\"\n\n\n\n<div class='mCSB_container' style='position:relative; top:0;' \/>\")}var o=g.children(\".mCSB_container\");if(c.support.touch){o.addClass(\"mCS_touch\")}o.after(\"\n\n\n\n<div class='mCSB_scrollTools' style='position:absolute;'>\n\n\n\n<div class='mCSB_draggerContainer'>\n\n\n\n<div class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'>\n\n\n\n<div class='mCSB_dragger_bar' style='position:relative;'><\/div>\n\n\n\n<\/div>\n\n\n\n\n\n\n<div class='mCSB_draggerRail'><\/div>\n\n\n\n<\/div>\n\n\n\n<\/div>\n\n\n\n\n\");var l=g.children(\".mCSB_scrollTools\"),h=l.children(\".mCSB_draggerContainer\"),q=h.children(\".mCSB_dragger\");if(e.horizontalScroll){q.data(\"minDraggerWidth\",q.width())}else{q.data(\"minDraggerHeight\",q.height())}if(e.scrollButtons.enable){if(e.horizontalScroll){l.prepend(\"<a class='mCSB_buttonLeft' oncontextmenu='return false;'><\/a>\").append(\"<a class='mCSB_buttonRight' oncontextmenu='return false;'><\/a>\")}else{l.prepend(\"<a class='mCSB_buttonUp' oncontextmenu='return false;'><\/a>\").append(\"<a class='mCSB_buttonDown' oncontextmenu='return false;'><\/a>\")}}g.bind(\"scroll\",function(){if(!m.is(\".mCS_disabled\")){g.scrollTop(0).scrollLeft(0)}});m.data({mCS_Init:true,mCustomScrollbarIndex:c(document).data(\"mCustomScrollbar-index\"),horizontalScroll:e.horizontalScroll,scrollInertia:e.scrollInertia,scrollEasing:\"mcsEaseOut\",mouseWheel:e.mouseWheel,mouseWheelPixels:e.mouseWheelPixels,autoDraggerLength:e.autoDraggerLength,autoHideScrollbar:e.autoHideScrollbar,alwaysShowScrollbar:e.alwaysShowScrollbar,snapAmount:e.snapAmount,snapOffset:e.snapOffset,scrollButtons_enable:e.scrollButtons.enable,scrollButtons_scrollType:e.scrollButtons.scrollType,scrollButtons_scrollSpeed:e.scrollButtons.scrollSpeed,scrollButtons_scrollAmount:e.scrollButtons.scrollAmount,autoExpandHorizontalScroll:e.advanced.autoExpandHorizontalScroll,autoScrollOnFocus:e.advanced.autoScrollOnFocus,normalizeMouseWheelDelta:e.advanced.normalizeMouseWheelDelta,contentTouchScroll:e.contentTouchScroll,onScrollStart_Callback:e.callbacks.onScrollStart,onScroll_Callback:e.callbacks.onScroll,onTotalScroll_Callback:e.callbacks.onTotalScroll,onTotalScrollBack_Callback:e.callbacks.onTotalScrollBack,onTotalScroll_Offset:e.callbacks.onTotalScrollOffset,onTotalScrollBack_Offset:e.callbacks.onTotalScrollBackOffset,whileScrolling_Callback:e.callbacks.whileScrolling,bindEvent_scrollbar_drag:false,bindEvent_content_touch:false,bindEvent_scrollbar_click:false,bindEvent_mousewheel:false,bindEvent_buttonsContinuous_y:false,bindEvent_buttonsContinuous_x:false,bindEvent_buttonsPixels_y:false,bindEvent_buttonsPixels_x:false,bindEvent_focusin:false,bindEvent_autoHideScrollbar:false,mCSB_buttonScrollRight:false,mCSB_buttonScrollLeft:false,mCSB_buttonScrollDown:false,mCSB_buttonScrollUp:false});if(e.horizontalScroll){if(m.css(\"max-width\")!==\"none\"){if(!e.advanced.updateOnContentResize){e.advanced.updateOnContentResize=true}}}else{if(m.css(\"max-height\")!==\"none\"){var s=false,r=parseInt(m.css(\"max-height\"));if(m.css(\"max-height\").indexOf(\"%\")>=0){s=r,r=m.parent().height()*s\/100}m.css(\"overflow\",\"hidden\");g.css(\"max-height\",r)}}m.mCustomScrollbar(\"update\");if(e.advanced.updateOnBrowserResize){var i,j=c(window).width(),u=c(window).height();c(window).bind(\"resize.\"+m.data(\"mCustomScrollbarIndex\"),function(){if(i){clearTimeout(i)}i=setTimeout(function(){if(!m.is(\".mCS_disabled\")&#038;&#038;!m.is(\".mCS_destroyed\")){var w=c(window).width(),v=c(window).height();if(j!==w||u!==v){if(m.css(\"max-height\")!==\"none\"&#038;&#038;s){g.css(\"max-height\",m.parent().height()*s\/100)}m.mCustomScrollbar(\"update\");j=w;u=v}}},150)})}if(e.advanced.updateOnContentResize){var p;if(e.horizontalScroll){var n=o.outerWidth()}else{var n=o.outerHeight()}p=setInterval(function(){if(e.horizontalScroll){if(e.advanced.autoExpandHorizontalScroll){o.css({position:\"absolute\",width:\"auto\"}).wrap(\"\n\n\n\n<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' \/>\").css({width:o.outerWidth(),position:\"relative\"}).unwrap()}var v=o.outerWidth()}else{var v=o.outerHeight()}if(v!=n){m.mCustomScrollbar(\"update\");n=v}},300)}})},update:function(){var n=c(this),k=n.children(\".mCustomScrollBox\"),q=k.children(\".mCSB_container\");q.removeClass(\"mCS_no_scrollbar\");n.removeClass(\"mCS_disabled mCS_destroyed\");k.scrollTop(0).scrollLeft(0);var y=k.children(\".mCSB_scrollTools\"),o=y.children(\".mCSB_draggerContainer\"),m=o.children(\".mCSB_dragger\");if(n.data(\"horizontalScroll\")){var A=y.children(\".mCSB_buttonLeft\"),t=y.children(\".mCSB_buttonRight\"),f=k.width();if(n.data(\"autoExpandHorizontalScroll\")){q.css({position:\"absolute\",width:\"auto\"}).wrap(\"\n\n\n\n<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' \/>\").css({width:q.outerWidth(),position:\"relative\"}).unwrap()}var z=q.outerWidth()}else{var w=y.children(\".mCSB_buttonUp\"),g=y.children(\".mCSB_buttonDown\"),r=k.height(),i=q.outerHeight()}if(i>r&#038;&#038;!n.data(\"horizontalScroll\")){y.css(\"display\",\"block\");var s=o.height();if(n.data(\"autoDraggerLength\")){var u=Math.round(r\/i*s),l=m.data(\"minDraggerHeight\");if(u<=l){m.css({height:l})}else{if(u>=s-10){var p=s-10;m.css({height:p})}else{m.css({height:u})}}m.children(\".mCSB_dragger_bar\").css({\"line-height\":m.height()+\"px\"})}var B=m.height(),x=(i-r)\/(s-B);n.data(\"scrollAmount\",x).mCustomScrollbar(\"scrolling\",k,q,o,m,w,g,A,t);var D=Math.abs(q.position().top);n.mCustomScrollbar(\"scrollTo\",D,{scrollInertia:0,trigger:\"internal\"})}else{if(z>f&#038;&#038;n.data(\"horizontalScroll\")){y.css(\"display\",\"block\");var h=o.width();if(n.data(\"autoDraggerLength\")){var j=Math.round(f\/z*h),C=m.data(\"minDraggerWidth\");if(j<=C){m.css({width:C})}else{if(j>=h-10){var e=h-10;m.css({width:e})}else{m.css({width:j})}}}var v=m.width(),x=(z-f)\/(h-v);n.data(\"scrollAmount\",x).mCustomScrollbar(\"scrolling\",k,q,o,m,w,g,A,t);var D=Math.abs(q.position().left);n.mCustomScrollbar(\"scrollTo\",D,{scrollInertia:0,trigger:\"internal\"})}else{k.unbind(\"mousewheel focusin\");if(n.data(\"horizontalScroll\")){m.add(q).css(\"left\",0)}else{m.add(q).css(\"top\",0)}if(n.data(\"alwaysShowScrollbar\")){if(!n.data(\"horizontalScroll\")){m.css({height:o.height()})}else{if(n.data(\"horizontalScroll\")){m.css({width:o.width()})}}}else{y.css(\"display\",\"none\");q.addClass(\"mCS_no_scrollbar\")}n.data({bindEvent_mousewheel:false,bindEvent_focusin:false})}}},scrolling:function(i,q,n,k,A,f,D,w){var l=c(this);if(!l.data(\"bindEvent_scrollbar_drag\")){var o,p,C,z,e;if(c.support.pointer){C=\"pointerdown\";z=\"pointermove\";e=\"pointerup\"}else{if(c.support.msPointer){C=\"MSPointerDown\";z=\"MSPointerMove\";e=\"MSPointerUp\"}}if(c.support.pointer||c.support.msPointer){k.bind(C,function(K){K.preventDefault();l.data({on_drag:true});k.addClass(\"mCSB_dragger_onDrag\");var J=c(this),M=J.offset(),I=K.originalEvent.pageX-M.left,L=K.originalEvent.pageY-M.top;if(I<J.width()&#038;&#038;I>0&#038;&#038;L<J.height()&#038;&#038;L>0){o=L;p=I}});c(document).bind(z+\".\"+l.data(\"mCustomScrollbarIndex\"),function(K){K.preventDefault();if(l.data(\"on_drag\")){var J=k,M=J.offset(),I=K.originalEvent.pageX-M.left,L=K.originalEvent.pageY-M.top;G(o,p,L,I)}}).bind(e+\".\"+l.data(\"mCustomScrollbarIndex\"),function(x){l.data({on_drag:false});k.removeClass(\"mCSB_dragger_onDrag\")})}else{k.bind(\"mousedown touchstart\",function(K){K.preventDefault();K.stopImmediatePropagation();var J=c(this),N=J.offset(),I,M;if(K.type===\"touchstart\"){var L=K.originalEvent.touches[0]||K.originalEvent.changedTouches[0];I=L.pageX-N.left;M=L.pageY-N.top}else{l.data({on_drag:true});k.addClass(\"mCSB_dragger_onDrag\");I=K.pageX-N.left;M=K.pageY-N.top}if(I<J.width()&#038;&#038;I>0&#038;&#038;M<J.height()&#038;&#038;M>0){o=M;p=I}}).bind(\"touchmove\",function(K){K.preventDefault();K.stopImmediatePropagation();var N=K.originalEvent.touches[0]||K.originalEvent.changedTouches[0],J=c(this),M=J.offset(),I=N.pageX-M.left,L=N.pageY-M.top;G(o,p,L,I)});c(document).bind(\"mousemove.\"+l.data(\"mCustomScrollbarIndex\"),function(K){if(l.data(\"on_drag\")){var J=k,M=J.offset(),I=K.pageX-M.left,L=K.pageY-M.top;G(o,p,L,I)}}).bind(\"mouseup.\"+l.data(\"mCustomScrollbarIndex\"),function(x){l.data({on_drag:false});k.removeClass(\"mCSB_dragger_onDrag\")})}l.data({bindEvent_scrollbar_drag:true})}function G(J,K,L,I){if(l.data(\"horizontalScroll\")){l.mCustomScrollbar(\"scrollTo\",(k.position().left-(K))+I,{moveDragger:true,trigger:\"internal\"})}else{l.mCustomScrollbar(\"scrollTo\",(k.position().top-(J))+L,{moveDragger:true,trigger:\"internal\"})}}if(c.support.touch&#038;&#038;l.data(\"contentTouchScroll\")){if(!l.data(\"bindEvent_content_touch\")){var m,E,s,t,v,F,H;q.bind(\"touchstart\",function(x){x.stopImmediatePropagation();m=x.originalEvent.touches[0]||x.originalEvent.changedTouches[0];E=c(this);s=E.offset();v=m.pageX-s.left;t=m.pageY-s.top;F=t;H=v});q.bind(\"touchmove\",function(x){x.preventDefault();x.stopImmediatePropagation();m=x.originalEvent.touches[0]||x.originalEvent.changedTouches[0];E=c(this).parent();s=E.offset();v=m.pageX-s.left;t=m.pageY-s.top;if(l.data(\"horizontalScroll\")){l.mCustomScrollbar(\"scrollTo\",H-v,{trigger:\"internal\"})}else{l.mCustomScrollbar(\"scrollTo\",F-t,{trigger:\"internal\"})}})}}if(!l.data(\"bindEvent_scrollbar_click\")){n.bind(\"click\",function(I){var x=(I.pageY-n.offset().top)*l.data(\"scrollAmount\"),y=c(I.target);if(l.data(\"horizontalScroll\")){x=(I.pageX-n.offset().left)*l.data(\"scrollAmount\")}if(y.hasClass(\"mCSB_draggerContainer\")||y.hasClass(\"mCSB_draggerRail\")){l.mCustomScrollbar(\"scrollTo\",x,{trigger:\"internal\",scrollEasing:\"draggerRailEase\"})}});l.data({bindEvent_scrollbar_click:true})}if(l.data(\"mouseWheel\")){if(!l.data(\"bindEvent_mousewheel\")){i.bind(\"mousewheel\",function(K,M){var J,I=l.data(\"mouseWheelPixels\"),x=Math.abs(q.position().top),L=k.position().top,y=n.height()-k.height();if(l.data(\"normalizeMouseWheelDelta\")){if(M<0){M=-1}else{M=1}}if(I===\"auto\"){I=100+Math.round(l.data(\"scrollAmount\")\/2)}if(l.data(\"horizontalScroll\")){L=k.position().left;y=n.width()-k.width();x=Math.abs(q.position().left)}if((M>0&#038;&#038;L!==0)||(M<0&#038;&#038;L!==y)){K.preventDefault();K.stopImmediatePropagation()}J=x-(M*I);l.mCustomScrollbar(\"scrollTo\",J,{trigger:\"internal\"})});l.data({bindEvent_mousewheel:true})}}if(l.data(\"scrollButtons_enable\")){if(l.data(\"scrollButtons_scrollType\")===\"pixels\"){if(l.data(\"horizontalScroll\")){w.add(D).unbind(\"mousedown touchstart MSPointerDown pointerdown mouseup MSPointerUp pointerup mouseout MSPointerOut pointerout touchend\",j,h);l.data({bindEvent_buttonsContinuous_x:false});if(!l.data(\"bindEvent_buttonsPixels_x\")){w.bind(\"click\",function(x){x.preventDefault();r(Math.abs(q.position().left)+l.data(\"scrollButtons_scrollAmount\"))});D.bind(\"click\",function(x){x.preventDefault();r(Math.abs(q.position().left)-l.data(\"scrollButtons_scrollAmount\"))});l.data({bindEvent_buttonsPixels_x:true})}}else{f.add(A).unbind(\"mousedown touchstart MSPointerDown pointerdown mouseup MSPointerUp pointerup mouseout MSPointerOut pointerout touchend\",j,h);l.data({bindEvent_buttonsContinuous_y:false});if(!l.data(\"bindEvent_buttonsPixels_y\")){f.bind(\"click\",function(x){x.preventDefault();r(Math.abs(q.position().top)+l.data(\"scrollButtons_scrollAmount\"))});A.bind(\"click\",function(x){x.preventDefault();r(Math.abs(q.position().top)-l.data(\"scrollButtons_scrollAmount\"))});l.data({bindEvent_buttonsPixels_y:true})}}function r(x){if(!k.data(\"preventAction\")){k.data(\"preventAction\",true);l.mCustomScrollbar(\"scrollTo\",x,{trigger:\"internal\"})}}}else{if(l.data(\"horizontalScroll\")){w.add(D).unbind(\"click\");l.data({bindEvent_buttonsPixels_x:false});if(!l.data(\"bindEvent_buttonsContinuous_x\")){w.bind(\"mousedown touchstart MSPointerDown pointerdown\",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollRight:setInterval(function(){l.mCustomScrollbar(\"scrollTo\",Math.abs(q.position().left)+x,{trigger:\"internal\",scrollEasing:\"easeOutCirc\"})},17)})});var j=function(x){x.preventDefault();clearInterval(l.data(\"mCSB_buttonScrollRight\"))};w.bind(\"mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout\",j);D.bind(\"mousedown touchstart MSPointerDown pointerdown\",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollLeft:setInterval(function(){l.mCustomScrollbar(\"scrollTo\",Math.abs(q.position().left)-x,{trigger:\"internal\",scrollEasing:\"easeOutCirc\"})},17)})});var h=function(x){x.preventDefault();clearInterval(l.data(\"mCSB_buttonScrollLeft\"))};D.bind(\"mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout\",h);l.data({bindEvent_buttonsContinuous_x:true})}}else{f.add(A).unbind(\"click\");l.data({bindEvent_buttonsPixels_y:false});if(!l.data(\"bindEvent_buttonsContinuous_y\")){f.bind(\"mousedown touchstart MSPointerDown pointerdown\",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollDown:setInterval(function(){l.mCustomScrollbar(\"scrollTo\",Math.abs(q.position().top)+x,{trigger:\"internal\",scrollEasing:\"easeOutCirc\"})},17)})});var u=function(x){x.preventDefault();clearInterval(l.data(\"mCSB_buttonScrollDown\"))};f.bind(\"mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout\",u);A.bind(\"mousedown touchstart MSPointerDown pointerdown\",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollUp:setInterval(function(){l.mCustomScrollbar(\"scrollTo\",Math.abs(q.position().top)-x,{trigger:\"internal\",scrollEasing:\"easeOutCirc\"})},17)})});var g=function(x){x.preventDefault();clearInterval(l.data(\"mCSB_buttonScrollUp\"))};A.bind(\"mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout\",g);l.data({bindEvent_buttonsContinuous_y:true})}}function B(){var x=l.data(\"scrollButtons_scrollSpeed\");if(l.data(\"scrollButtons_scrollSpeed\")===\"auto\"){x=Math.round((l.data(\"scrollInertia\")+100)\/40)}return x}}}if(l.data(\"autoScrollOnFocus\")){if(!l.data(\"bindEvent_focusin\")){i.bind(\"focusin\",function(){i.scrollTop(0).scrollLeft(0);var x=c(document.activeElement);if(x.is(\"input,textarea,select,button,a[tabindex],area,object\")){var J=q.position().top,y=x.position().top,I=i.height()-x.outerHeight();if(l.data(\"horizontalScroll\")){J=q.position().left;y=x.position().left;I=i.width()-x.outerWidth()}if(J+y<0||J+y>I){l.mCustomScrollbar(\"scrollTo\",y,{trigger:\"internal\"})}}});l.data({bindEvent_focusin:true})}}if(l.data(\"autoHideScrollbar\")&#038;&#038;!l.data(\"alwaysShowScrollbar\")){if(!l.data(\"bindEvent_autoHideScrollbar\")){i.bind(\"mouseenter\",function(x){i.addClass(\"mCS-mouse-over\");d.showScrollbar.call(i.children(\".mCSB_scrollTools\"))}).bind(\"mouseleave touchend\",function(x){i.removeClass(\"mCS-mouse-over\");if(x.type===\"mouseleave\"){d.hideScrollbar.call(i.children(\".mCSB_scrollTools\"))}});l.data({bindEvent_autoHideScrollbar:true})}}},scrollTo:function(e,f){var i=c(this),o={moveDragger:false,trigger:\"external\",callbacks:true,scrollInertia:i.data(\"scrollInertia\"),scrollEasing:i.data(\"scrollEasing\")},f=c.extend(o,f),p,g=i.children(\".mCustomScrollBox\"),k=g.children(\".mCSB_container\"),r=g.children(\".mCSB_scrollTools\"),j=r.children(\".mCSB_draggerContainer\"),h=j.children(\".mCSB_dragger\"),t=draggerSpeed=f.scrollInertia,q,s,m,l;if(!k.hasClass(\"mCS_no_scrollbar\")){i.data({mCS_trigger:f.trigger});if(i.data(\"mCS_Init\")){f.callbacks=false}if(e||e===0){if(typeof(e)===\"number\"){if(f.moveDragger){p=e;if(i.data(\"horizontalScroll\")){e=h.position().left*i.data(\"scrollAmount\")}else{e=h.position().top*i.data(\"scrollAmount\")}draggerSpeed=0}else{p=e\/i.data(\"scrollAmount\")}}else{if(typeof(e)===\"string\"){var v;if(e===\"top\"){v=0}else{if(e===\"bottom\"&#038;&#038;!i.data(\"horizontalScroll\")){v=k.outerHeight()-g.height()}else{if(e===\"left\"){v=0}else{if(e===\"right\"&#038;&#038;i.data(\"horizontalScroll\")){v=k.outerWidth()-g.width()}else{if(e===\"first\"){v=i.find(\".mCSB_container\").find(\":first\")}else{if(e===\"last\"){v=i.find(\".mCSB_container\").find(\":last\")}else{v=i.find(e)}}}}}}if(v.length===1){if(i.data(\"horizontalScroll\")){e=v.position().left}else{e=v.position().top}p=e\/i.data(\"scrollAmount\")}else{p=e=v}}}if(i.data(\"horizontalScroll\")){if(i.data(\"onTotalScrollBack_Offset\")){s=-i.data(\"onTotalScrollBack_Offset\")}if(i.data(\"onTotalScroll_Offset\")){l=g.width()-k.outerWidth()+i.data(\"onTotalScroll_Offset\")}if(p<0){p=e=0;clearInterval(i.data(\"mCSB_buttonScrollLeft\"));if(!s){q=true}}else{if(p>=j.width()-h.width()){p=j.width()-h.width();e=g.width()-k.outerWidth();clearInterval(i.data(\"mCSB_buttonScrollRight\"));if(!l){m=true}}else{e=-e}}var n=i.data(\"snapAmount\");if(n){e=Math.round(e\/n)*n-i.data(\"snapOffset\")}d.mTweenAxis.call(this,h[0],\"left\",Math.round(p),draggerSpeed,f.scrollEasing);d.mTweenAxis.call(this,k[0],\"left\",Math.round(e),t,f.scrollEasing,{onStart:function(){if(f.callbacks&#038;&#038;!i.data(\"mCS_tweenRunning\")){u(\"onScrollStart\")}if(i.data(\"autoHideScrollbar\")&#038;&#038;!i.data(\"alwaysShowScrollbar\")){d.showScrollbar.call(r)}},onUpdate:function(){if(f.callbacks){u(\"whileScrolling\")}},onComplete:function(){if(f.callbacks){u(\"onScroll\");if(q||(s&#038;&#038;k.position().left>=s)){u(\"onTotalScrollBack\")}if(m||(l&#038;&#038;k.position().left<=l)){u(\"onTotalScroll\")}}h.data(\"preventAction\",false);i.data(\"mCS_tweenRunning\",false);if(i.data(\"autoHideScrollbar\")&#038;&#038;!i.data(\"alwaysShowScrollbar\")){if(!g.hasClass(\"mCS-mouse-over\")){d.hideScrollbar.call(r)}}}})}else{if(i.data(\"onTotalScrollBack_Offset\")){s=-i.data(\"onTotalScrollBack_Offset\")}if(i.data(\"onTotalScroll_Offset\")){l=g.height()-k.outerHeight()+i.data(\"onTotalScroll_Offset\")}if(p<0){p=e=0;clearInterval(i.data(\"mCSB_buttonScrollUp\"));if(!s){q=true}}else{if(p>=j.height()-h.height()){p=j.height()-h.height();e=g.height()-k.outerHeight();clearInterval(i.data(\"mCSB_buttonScrollDown\"));if(!l){m=true}}else{e=-e}}var n=i.data(\"snapAmount\");if(n){e=Math.round(e\/n)*n-i.data(\"snapOffset\")}d.mTweenAxis.call(this,h[0],\"top\",Math.round(p),draggerSpeed,f.scrollEasing);d.mTweenAxis.call(this,k[0],\"top\",Math.round(e),t,f.scrollEasing,{onStart:function(){if(f.callbacks&#038;&#038;!i.data(\"mCS_tweenRunning\")){u(\"onScrollStart\")}if(i.data(\"autoHideScrollbar\")&#038;&#038;!i.data(\"alwaysShowScrollbar\")){d.showScrollbar.call(r)}},onUpdate:function(){if(f.callbacks){u(\"whileScrolling\")}},onComplete:function(){if(f.callbacks){u(\"onScroll\");if(q||(s&#038;&#038;k.position().top>=s)){u(\"onTotalScrollBack\")}if(m||(l&#038;&#038;k.position().top<=l)){u(\"onTotalScroll\")}}h.data(\"preventAction\",false);i.data(\"mCS_tweenRunning\",false);if(i.data(\"autoHideScrollbar\")&#038;&#038;!i.data(\"alwaysShowScrollbar\")){if(!g.hasClass(\"mCS-mouse-over\")){d.hideScrollbar.call(r)}}}})}if(i.data(\"mCS_Init\")){i.data({mCS_Init:false})}}}function u(w){if(i.data(\"mCustomScrollbarIndex\")){this.mcs={top:k.position().top,left:k.position().left,draggerTop:h.position().top,draggerLeft:h.position().left,topPct:Math.round((100*Math.abs(k.position().top))\/Math.abs(k.outerHeight()-g.height())),leftPct:Math.round((100*Math.abs(k.position().left))\/Math.abs(k.outerWidth()-g.width()))};switch(w){case\"onScrollStart\":i.data(\"mCS_tweenRunning\",true).data(\"onScrollStart_Callback\").call(i,this.mcs);break;case\"whileScrolling\":i.data(\"whileScrolling_Callback\").call(i,this.mcs);break;case\"onScroll\":i.data(\"onScroll_Callback\").call(i,this.mcs);break;case\"onTotalScrollBack\":i.data(\"onTotalScrollBack_Callback\").call(i,this.mcs);break;case\"onTotalScroll\":i.data(\"onTotalScroll_Callback\").call(i,this.mcs);break}}}},stop:function(){var g=c(this),e=g.children().children(\".mCSB_container\"),f=g.children().children().children().children(\".mCSB_dragger\");d.mTweenAxisStop.call(this,e[0]);d.mTweenAxisStop.call(this,f[0])},disable:function(e){var j=c(this),f=j.children(\".mCustomScrollBox\"),h=f.children(\".mCSB_container\"),g=f.children(\".mCSB_scrollTools\"),i=g.children().children(\".mCSB_dragger\");f.unbind(\"mousewheel focusin mouseenter mouseleave touchend\");h.unbind(\"touchstart touchmove\");if(e){if(j.data(\"horizontalScroll\")){i.add(h).css(\"left\",0)}else{i.add(h).css(\"top\",0)}}g.css(\"display\",\"none\");h.addClass(\"mCS_no_scrollbar\");j.data({bindEvent_mousewheel:false,bindEvent_focusin:false,bindEvent_content_touch:false,bindEvent_autoHideScrollbar:false}).addClass(\"mCS_disabled\")},destroy:function(){var e=c(this);e.removeClass(\"mCustomScrollbar _mCS_\"+e.data(\"mCustomScrollbarIndex\")).addClass(\"mCS_destroyed\").children().children(\".mCSB_container\").unwrap().children().unwrap().siblings(\".mCSB_scrollTools\").remove();c(document).unbind(\"mousemove.\"+e.data(\"mCustomScrollbarIndex\")+\" mouseup.\"+e.data(\"mCustomScrollbarIndex\")+\" MSPointerMove.\"+e.data(\"mCustomScrollbarIndex\")+\" MSPointerUp.\"+e.data(\"mCustomScrollbarIndex\"));c(window).unbind(\"resize.\"+e.data(\"mCustomScrollbarIndex\"))}},d={showScrollbar:function(){this.stop().animate({opacity:1},\"fast\")},hideScrollbar:function(){this.stop().animate({opacity:0},\"fast\")},mTweenAxis:function(g,i,h,f,o,y){var y=y||{},v=y.onStart||function(){},p=y.onUpdate||function(){},w=y.onComplete||function(){};var n=t(),l,j=0,r=g.offsetTop,s=g.style;if(i===\"left\"){r=g.offsetLeft}var m=h-r;q();e();function t(){if(window.performance&#038;&#038;window.performance.now){return window.performance.now()}else{if(window.performance&#038;&#038;window.performance.webkitNow){return window.performance.webkitNow()}else{if(Date.now){return Date.now()}else{return new Date().getTime()}}}}function x(){if(!j){v.call()}j=t()-n;u();if(j>=g._time){g._time=(j>g._time)?j+l-(j-g._time):j+l-1;if(g._time<j+1){g._time=j+1}}if(g._time<f){g._id=_request(x)}else{w.call()}}function u(){if(f>0){g.currVal=k(g._time,r,m,f,o);s[i]=Math.round(g.currVal)+\"px\"}else{s[i]=h+\"px\"}p.call()}function e(){l=1000\/60;g._time=j+l;_request=(!window.requestAnimationFrame)?function(z){u();return setTimeout(z,0.01)}:window.requestAnimationFrame;g._id=_request(x)}function q(){if(g._id==null){return}if(!window.requestAnimationFrame){clearTimeout(g._id)}else{window.cancelAnimationFrame(g._id)}g._id=null}function k(B,A,F,E,C){switch(C){case\"linear\":return F*B\/E+A;break;case\"easeOutQuad\":B\/=E;return -F*B*(B-2)+A;break;case\"easeInOutQuad\":B\/=E\/2;if(B<1){return F\/2*B*B+A}B--;return -F\/2*(B*(B-2)-1)+A;break;case\"easeOutCubic\":B\/=E;B--;return F*(B*B*B+1)+A;break;case\"easeOutQuart\":B\/=E;B--;return -F*(B*B*B*B-1)+A;break;case\"easeOutQuint\":B\/=E;B--;return F*(B*B*B*B*B+1)+A;break;case\"easeOutCirc\":B\/=E;B--;return F*Math.sqrt(1-B*B)+A;break;case\"easeOutSine\":return F*Math.sin(B\/E*(Math.PI\/2))+A;break;case\"easeOutExpo\":return F*(-Math.pow(2,-10*B\/E)+1)+A;break;case\"mcsEaseOut\":var D=(B\/=E)*B,z=D*B;return A+F*(0.499999999999997*z*D+-2.5*D*D+5.5*z+-6.5*D+4*B);break;case\"draggerRailEase\":B\/=E\/2;if(B<1){return F\/2*B*B*B+A}B-=2;return F\/2*(B*B*B+2)+A;break}}},mTweenAxisStop:function(e){if(e._id==null){return}if(!window.requestAnimationFrame){clearTimeout(e._id)}else{window.cancelAnimationFrame(e._id)}e._id=null},rafPolyfill:function(){var f=[\"ms\",\"moz\",\"webkit\",\"o\"],e=f.length;while(--e>-1&#038;&#038;!window.requestAnimationFrame){window.requestAnimationFrame=window[f[e]+\"RequestAnimationFrame\"];window.cancelAnimationFrame=window[f[e]+\"CancelAnimationFrame\"]||window[f[e]+\"CancelRequestAnimationFrame\"]}}};d.rafPolyfill.call();c.support.touch=!!(\"ontouchstart\" in window);c.support.pointer=window.navigator.pointerEnabled;c.support.msPointer=window.navigator.msPointerEnabled;var a=(\"https:\"==document.location.protocol)?\"https:\":\"http:\";c.event.special.mousewheel||document.write('<script src=\"'+a+'\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery-mousewheel\/3.0.6\/jquery.mousewheel.min.js\"><\\\/script>');c.fn.mCustomScrollbar=function(e){if(b[e]){return b[e].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof e===\"object\"||!e){return b.init.apply(this,arguments)}else{c.error(\"Method \"+e+\" does not exist\")}}}})(jQuery);\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/\/ HTML5 placeholder plugin version 1.01\n\/\/ Copyright (c) 2010-The End of Time, Mike Taylor, http:\/\/miketaylr.com\n\/\/ MIT Licensed: http:\/\/www.opensource.org\/licenses\/mit-license.php\n\/\/\n\/\/ Enables cross-browser HTML5 placeholder for inputs, by first testing\n\/\/ for a native implementation before building one.\n\/\/\n\/\/\n\/\/ USAGE:\n\/\/$('input[placeholder]').placeholder();\n\n\/\/ <input type=\"text\" placeholder=\"username\">\n(function($){\n    \/\/feature detection\n    var hasPlaceholder = 'placeholder' in document.createElement('input');\n    var placeholderClass = 'evn-placeholder';\n\n    \/\/sniffy sniff sniff -- just to give extra left padding for the older\n    \/\/graphics for type=email and type=url\n    var isOldOpera = $.browser.opera &#038;&#038; $.browser.version < 10.5;\n\n    $.fn.placeholder = function(options) {\n        \/\/merge in passed in options, if any\n        var options = $.extend({}, $.fn.placeholder.defaults, options),\n        \/\/cache the original 'left' value, for use by Opera later\n            o_left = options.placeholderCSS.left;\n\n        \/\/first test for native placeholder support before continuing\n        \/\/feature detection inspired by ye olde jquery 1.4 hawtness, with paul irish\n        return (hasPlaceholder) ? this : this.each(function() {\n\n            \/\/local vars\n            var $this = $(this),\n                inputVal = $.trim($this.val()),\n                inputWidth = $this.width(),\n                inputHeight = $this.height(),\n\n            \/\/grab the inputs id for the <label @for>, or make a new one from the Date\n                inputId = (this.id) ? this.id : 'placeholder' + (+new Date()) + this.className.replace(' ',''),\n                placeholderText = options.placeholderText ? options.placeholderText : $this.attr('placeholder'),\n                placeholder = $('<label class=\"' + placeholderClass + '\" for=\\\"'+ inputId +'\\\">'+ placeholderText + '<\/label>');\n\n            \/\/stuff in some calculated values into the placeholderCSS object\n\/\/            options.placeholderCSS['width'] = inputWidth;\n            options.placeholderCSS['height'] = inputHeight;\n\n            \/\/ adjust position of placeholder\n            options.placeholderCSS.left = (isOldOpera &#038;&#038; (this.type == 'email' || this.type == 'url')) ?\n                '11%' : o_left;\n            placeholder.css(options.placeholderCSS);\n\n            \/\/place the placeholder if the input is empty\n\n            $this.wrap(options.inputWrapper);\n            $this.attr('id', inputId).after(placeholder);\n\n            if(inputVal) {\n                $this.next().hide();\n            }\n\n            \/\/hide placeholder on focus\n            $this.focus(function(){\n                $this.next().hide();\n            });\n\n            \/\/show placeholder if the input is empty\n            $this.blur(function(){\n                if (!$.trim($this.val())){\n                    $this.next().show();\n                };\n            });\n        });\n    };\n\n    \/\/expose defaults\n    $.fn.placeholder.defaults = {\n        \/\/you can pass in a custom wrapper\n        inputWrapper: '\n\n\n\n<div style=\"position:relative;\"><\/div>\n\n\n\n\n',\n        placeholderText: null,\n\n        \/\/more or less just emulating what webkit does here\n        \/\/tweak to your hearts content\n        placeholderCSS: {\n            'font':'0.75em sans-serif',\n            'color':'#bababa',\n            'position': 'absolute',\n            'left':'5px',\n            'top':'3px',\n            'overflow': 'hidden'\n        }\n    };\n})(jQuery);\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/*!\n *  ClearlyComponent__detect\n *  Evernote Clearly's content-detection algorithm as an embeddable component.\n *  Copyright 2013, Evernote Corporation\n *\n *  Usage:\n *  ======\n *\n *      \/\/ define\n *      window.ClearlyComponent__detect = {\n *          'callbacks': {\n *              'finished': someFunction(),\n *          },\n *          'window': window,\n *          'document': document,\n *          'jQuery': window.jQuery\n *      };\n *\n *      \/\/ init -- will return false, if something goes wrong\n *      window.ClearlyComponent__detect = initClearlyComponent__detect(window.ClearlyComponent__detect);\n *\n *      \/\/ call -- returns nothing; callbacks will be used\n *      window.ClearlyComponent__detect.start();\n *\n *      \/\/ publcly available\/overridable\n *      window.ClearlyComponent__detect.debug\n *      window.ClearlyComponent__detect.parseOptions\n *\n *\/\n\n\/*\n    changes:\n    ========\n        $R => $D\n        $R.win => $D.window\n        $R.parsingOptions => $D.parseOptions\n        $R.skipStuffFromDomains__links => $D.parseOptions._skip_link_from_domain\n        $R.skipStuffFromDomain__images => $D.parseOptions._skip_image_from_domain\n        $R.keepStuffFromDomain__video => $D.parseOptions._keep_video_from_domain\n        $R.getContent__processCandidates => $D.getContent__processCandidates__first\n        $R.getContent__computePointsForCandidate => $D.getContent__computePointsForCandidate__first\n        $R.getContent__computeDetailsForCandidate => $D.getContent__computeDetailsForCandidate__first\n        $R.getContent__processCandidatesSecond => $D.getContent__processCandidates__second\n        $R.getContent__computePointsForCandidateSecond => $D.getContent__computePointsForCandidate__second\n        $R.getContent__computeDetailsForCandidateSecond => $D.getContent__computeDetailsForCandidate__second\n        $R.getContent__computePointsForCandidateThird => $D.getContent__computePointsForCandidate__third\n        $R.getContent__computeDetailsForCandidateThird => $D.getContent__computeDetailsForCandidate__third\n\n    to do:\n    ======\n*\/\n\nfunction initClearlyComponent__detect(_paramInstance)\n{\n    \/\/  global instance reference {\n    \/\/  ===========================\n\n        \/\/  null; return\n        if (_paramInstance); else { return false; }\n\n        \/\/  shorthand\n        $D = _paramInstance;\n\n    \/\/  global instance reference }\n\n    \/\/  required vars {\n    \/\/  ===============\n\n        \/\/  the component instance object must already be created,\n        \/\/  when the init function is called. it must have these vars set:\n\n        switch (true)\n        {\n            case (!($D.callbacks)):\n            case (!($D.callbacks.finished)):\n\n            case (!($D.window)):\n            case (!($D.document)):\n            case (!($D.document.body)):\n\n            case (!($D.jQuery)):\n\n                if ($D.debug)\n                {\n                    console.log(!($D.callbacks));\n                    console.log(!($D.callbacks.finished));\n\n                    console.log(!($D.window));\n                    console.log(!($D.document));\n                    console.log(!($D.document.body));\n\n                    console.log(!($D.jQuery));\n                }\n\n                \/\/  something's wrong\n                return false;\n        }\n\n    \/\/  required vars }\n\n    \/\/  global vars {\n    \/\/  =============\n\n        $CJ = $D.jQuery;\n\n        $D.$window = $CJ($D.window);\n        $D.$document = $CJ($D.document);\n\n    \/\/  global vars }\n\n    \/\/  parse options {\n    \/\/  ===============   \n\n\t\t$D.parseOptions =\n\t\t{\n\t\t\t'_elements_ignore': \t\t\t        '|button|input|select|textarea|optgroup|command|datalist|--|frame|frameset|noframes|--|style|link|script|noscript|--|canvas|applet|map|--|marquee|area|base|',\n\t\t\t'_elements_ignore_id': \t\t\t\t\t'|evernote-content|evernote-attributes-content|evernote-share-content|evernoteErrorPopup|evernote-post-clip-content|',\n\t\t\t'_elements_ignore_tag': \t\t        '|form|fieldset|details|dir|--|center|font|span|',\n\n\t\t\t'_elements_container': \t\t\t        '|body|--|article|section|--|div|--|td|--|li|--|dd|dt|',\n            '_elements_self_closing': \t\t        '|br|hr|--|img|--|col|--|source|--|embed|param|--|iframe|',\n\n\t\t\t'_elements_visible': \t\t\t        '|article|section|--|ul|ol|li|dd|--|table|tr|td|--|div|--|p|--|h1|h2|h3|h4|h5|h6|--|span|',\n\t\t\t'_elements_too_much_content': \t        '|b|i|em|strong|--|h1|h2|h3|h4|h5|--|td|',\n\t\t\t'_elements_link_density':\t\t        '|div|--|table|ul|ol|--|section|aside|header|',\n\t\t\t'_elements_floating':\t\t\t        '|div|--|table|',\n\t\t\t'_elements_above_target_ignore':        '|br|--|ul|ol|dl|--|table|',\n\n            '_unskippable_attribute':               'clearly__unskippable_element',\n            '_unskippable_attribute_value':         'yes',\n\n            '_use_document_title_attribute':        'clearly__use_document_title_as_article_title',\n            '_use_document_title_attribute_value':  'yes',\n\n            '_elements_keep_attributes':\n\t\t\t{\n\t\t\t\t'a': \t\t['href', 'title', 'name'],\n\t\t\t\t'img': \t\t['src', 'width', 'height', 'alt', 'title'],\n\n\t\t\t\t'video': \t['src', 'width', 'height', 'poster', 'audio', 'preload', 'autoplay', 'loop', 'controls'],\n\t\t\t\t'audio': \t['src', 'preload', 'autoplay', 'loop', 'controls'],\t\t \n\t\t\t\t'source': \t['src', 'type'],\n\n\t\t\t\t'object': \t['data', 'type', 'width', 'height', 'classid', 'codebase', 'codetype'],\t\t\t\t\t\t\n\t\t\t\t'param': \t['name', 'value'],\n\t\t\t\t'embed': \t['src', 'type', 'width', 'height', 'flashvars', 'allowscriptaccess', 'allowfullscreen', 'bgcolor'],\n\n\t\t\t\t'iframe':\t['src', 'width', 'height', 'frameborder', 'scrolling'],\n\n\t\t\t\t'td':\t\t['colspan', 'rowspan'],\t\t\t\n\t\t\t\t'th':\t\t['colspan', 'rowspan']\n\t\t\t},\n\n\t\t\t'_skip_link_from_domain': [\n                \/* international *\/     'doubleclick.net', 'fastclick.net', 'adbrite.com', 'adbureau.net', 'admob.com', 'bannersxchange.com', 'buysellads.com', 'impact-ad.jp', 'atdmt.com', 'advertising.com', 'serving-sys.com',\n                \/* japan *\/             'itmedia.jp', 'microad.jp', 'adplan-ds.com'\n\t\t\t],\n\n\t\t\t'_skip_image_from_domain': [\n                \/* international *\/     'googlesyndication.com', 'fastclick.net', '.2mdn.net', 'de17a.com', 'content.aimatch.com', 'bannersxchange.com', 'buysellads.com', 'atdmt.com', 'advertising.com', 'serving-sys.com',\n                \/* japan *\/             'impact-ad.jp', 'itmedia.jp', 'microad.jp', 'adplan-ds.com'\n\t\t\t],\n\n\t\t\t'_keep_video_from_domain': [\n                \/* video *\/     'youtube.com', 'youtube-nocookie.com', 'vimeo.com', 'hulu.com', 'flickr.com',\n                \/* other *\/     'yahoo.com', 'newsnetz.ch'\n\t\t\t]\n\t\t};\n\n    \/\/  parse options }\n\n    \/\/  debug {\n    \/\/  =======\n\n        $D.debug = ($D.debug || false);\n\t\t$D.debugRemembered = {};\n        $D.debugTimers = [];\n\n\t\tif ($D.debug)\n\t\t{\n\t\t    \/\/  writeLog\n\t\t    \/\/  ========\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (!(!($D.window.console &#038;&#038; $D.window.console.log))):    $D.writeLog = function (msg) { $D.window.console.log(msg); };       break;\n\t\t\t\t\tcase (!(!($D.window.opera &#038;&#038; $D.window.opera.postError))):  $D.writeLog = function (msg) { $D.window.opera.postError(msg); };   break;\n\t\t\t\t\tdefault:                                                    $D.writeLog = function (msg) {};                                    break;\n\t\t\t\t}\n\n            \/\/  log\n            \/\/  ===\n                $D.log = function ()\n                {\n                    if ($D.debug); else { return; }\n                    for (var i=0, il=arguments.length; i<il ; i++) { $D.writeLog(arguments[i]); }\n                    $D.writeLog('-----------------------------------------');\n                };\n\n            \/\/  remember\n            \/\/  ========\n                $D.debugRemember = function (_k, _v)\n                {\n                    $D.debugRemembered[_k] = _v;\n                };\n\n            \/\/  outline\n            \/\/  =======\n                $D.debugOutline = function (_element, _category, _reason)\n                {\n                    var _outline = '#ff5500', _background = 'rgba(255, 85, 0, 0.5)';\n\n                    switch (true)\n                    {\n                        case (!$D.debug):\n                        case (!(_element.nodeType === 1)):\n                        case (!(_element.tagName > '')):\n                        case (_element.tagName.toLowerCase() == 'onject'):\n                        case (_element.tagName.toLowerCase() == 'embed'):\n                            return;\n                    }\n\n                    switch (true)\n                    {\n                        case (_category == 'target' &#038;&#038; _reason == 'first'):                 _outline = '#00cc00'; _background = 'rgba(0, 255, 0, 0.5)';         break;\n                        case (_category == 'target' &#038;&#038; _reason == 'second'):                _outline = '#0000cc'; _background = 'rgba(0, 0, 255, 0.5)';         break;\n\n                        case (_category == 'target' &#038;&#038; _reason == 'next-page'):             _outline = '#FF80C0'; _background = 'rgba(255, 128, 192, 0.5)';     break;\n                        case (_category == 'target' &#038;&#038; _reason == 'add-above'):             _outline = '#804000'; _background = 'rgba(128, 64, 0, 0.5)';        break;\n\n                        case (_category == 'clean-before' &#038;&#038; _reason == 'floating'):        _outline = '#808080'; _background = 'rgba(128, 128, 128, 0.5)';     break;\n                        case (_category == 'clean-after' &#038;&#038; _reason == 'missing-density'):  _outline = '#C0C0C0'; _background = 'rgba(192, 192, 192, 0.5)';     break;\n                        case (_category == 'clean-after' || _category == 'clean-before'):   _outline = '#000000'; _background = 'rgba(0, 0, 0, 0.5)';           break;\n                    }\n\n                    \/\/  do\n                    $CJ(_element).attr('readable__outline', (_category + ': ' + _reason));\n                    $CJ(_element).css({ 'outline': '5px solid ' + _outline, 'background-color': '' + _background });\n                };\n\n\t\t\/\/\ttimers\n\t\t\/\/\t======\n\n\t\t\t$D.debugTimerStart = function (timerName)\n\t\t\t{\n\t\t\t\t$D.debugTimers.push({\n\t\t\t\t\t'name': timerName,\n\t\t\t\t\t'start': (new Date()).getTime()\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t$D.debugTimerEnd = function ()\n\t\t\t{\n\t\t\t\tvar _t = $D.debugTimers.pop(), _time = ((new Date()).getTime() - _t.start);\n\t\t\t\t$D.log('TIMER \/ '+_t.name+': ' + _time);\n\t\t\t\treturn _time;\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n            $D.writeLog \t\t= function () { return false; };\n            $D.log \t\t\t\t= function () { return false; };\n            $D.debugRemember \t= function () { return false; };\n            $D.debugOutline \t= function () { return false; };\n            $D.debugTimerStart \t= function () { return false; };\n            $D.debugTimerEnd \t= function () { return false; };\n        }\n\n    \/\/  debug }\n\n    \/\/  language {\n    \/\/  ==========\n\n        \/\/  default\n        $D.language = 'general';\n\n        \/\/  text to test\n        \/\/  ============\n\n            \/\/  title\n            $D.textForlanguageDetection = $D.document.title;\n\n            \/\/  snippets\n            \/\/  ...\n\n        \/\/  check\n        \/\/  =====\n            switch (true)\n            {\n                case ($D.textForlanguageDetection.match(\/([\\u3000])\/gi) != null):\n                case ($D.textForlanguageDetection.match(\/([\\u3001])\/gi) != null):\n                case ($D.textForlanguageDetection.match(\/([\\u3002])\/gi) != null):\n                case ($D.textForlanguageDetection.match(\/([\\u301C])\/gi) != null):\n                    $D.language = 'cjk';\n                    break;\n            }\n\n    \/\/  language }\n\n    \/\/  rtl {\n    \/\/  =====\n\n        \/\/  flags\n        $D.rtl = false;\n        $D.maybeRTL = false;\n\n        \/\/  on\/off\n        $D.makeRTL = function () { $D.rtl = true; };\n        $D.makeNotRTL = function () { $D.rtl = false; };\n\n        \/\/\tdetect\n\t\t(function ()\n\t\t{\n\t\t\t\/\/\tdefinitely\n\t\t\t$D.$document.find('html, body').each(function (_i, _e)\n\t\t\t{\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase ($CJ(_e).attr('dir') == 'rtl'):\n\t\t\t\t\tcase ($CJ(_e).css('direction') == 'rtl'):\n\t\t\t\t\tcase ($CJ(_e).attr('lang') == 'he'):\n\t\t\t\t\tcase ($CJ(_e).attr('lang') == 'he-il'):\n\t\t\t\t\tcase ($CJ(_e).attr('lang') == 'ar'):\n\t\t\t\t\tcase ($CJ(_e).attr('lang') == 'ur'):\n\t\t\t\t\t\t$D.makeRTL();\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t\/\/\tmaybe?\n            if (true\n                &#038;&#038; (!$D.rtl) \n                &#038;&#038; ($D.$document.find(\"div[dir='rtl'], table[dir='rtl'], td[dir='rtl']\").length > 0)\n            ) { $D.maybeRTL = true; }\n\t\t}\n\t\t)();\n\n    \/\/  rtl }\n\n    \/\/  measure text {\n    \/\/  ==============\n\n        \/\/\tasian languages\n        \/\/\t===============\n        \/\/\t    http:\/\/msdn.microsoft.com\/en-us\/goglobal\/bb688158\n        \/\/\t    http:\/\/en.wikipedia.org\/wiki\/Japanese_punctuation\n        \/\/\t    http:\/\/en.wikipedia.org\/wiki\/Japanese_typographic_symbols\n        \/\/\t    http:\/\/unicode.org\/charts\/PDF\/U3000.pdf\n        \/\/\t    CJK: Chnese, Japanese, Korean -- HAN character set\n\n        \/\/\tlength\n        \/\/\t======\n            $D.measureText__getTextLength = function (_the_text)\n            {\n                var _text = _the_text;\n\n                    _text = _text.replace(\/[\\s\\n\\r]+\/gi, '');\n                    \/\/_text = _text.replace(\/\\d+\/, '');\n\n                return _text.length;\n            };\n\n        \/\/\tword count\n        \/\/\t==========\n            $D.measureText__getWordCount = function (_the_text)\n            {\n                var _text = _the_text;\n\n                \/\/\tdo stuff\n                \/\/\t========\n                    _text = _text.replace(\/[\\s\\n\\r]+\/gi, ' ');\n\n                    _text = _text.replace(\/([.,?!:;()\\[\\]'\"\"-])\/gi, ' $1 ');\n\n                    _text = _text.replace(\/([\\u3000])\/gi, \t\t\t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u3001])\/gi, \t\t\t\t'[=words(2)]');\n                    _text = _text.replace(\/([\\u3002])\/gi, \t\t\t\t'[=words(4)]');\n                    _text = _text.replace(\/([\\u301C])\/gi, \t\t\t\t'[=words(2)]');\n                    _text = _text.replace(\/([\\u2026|\\u2025])\/gi, \t\t'[=words(2)]');\n                    _text = _text.replace(\/([\\u30FB\\uFF65])\/gi, \t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u300C\\u300D])\/gi, \t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u300E\\u300F])\/gi,\t\t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u3014\\u3015])\/gi,\t\t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u3008\\u3009])\/gi,\t\t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u300A\\u300B])\/gi, \t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u3010\\u3011])\/gi, \t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u3016\\u3017])\/gi, \t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u3018\\u3019])\/gi, \t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u301A\\u301B])\/gi, \t\t'[=words(1)]');\n                    _text = _text.replace(\/([\\u301D\\u301E\\u301F])\/gi, \t'[=words(1)]');\n                    _text = _text.replace(\/([\\u30A0])\/gi, \t\t\t\t'[=words(1)]');\n\n                \/\/\tcount\n                \/\/\t=====\n                    var \n                        _count = 0,\n                        _words_match = _text.match(\/([^\\s\\d]{3,})\/gi)\n                    ;\t\n\n                    \/\/\tadd match\n                    _count += (_words_match != null ? _words_match.length : 0);\n\n                    \/\/\tadd manual count\n                    _text.replace(\/\\[=words\\((\\d)\\)\\]\/, function (_match, _plus) { _count += (5 * parseInt(_plus)); });\n\n                \/\/\treturn\n                \/\/\t======\n                    return _count;\n            };\n\n        \/\/\tlevenshtein\n        \/\/\t===========\t\n            $D.levenshteinDistance = function (str1, str2)\n            {\n                var l1 = str1.length, l2 = str2.length, i = 0, j = 0, d = [];\n\n                if (Math.min(l1, l2) === 0)\n                    { return Math.max(l1, l2); }\n\n                for (i = 0 ; i <= l1 ; i++)\n                    { d[i] = []; d[i][0] = i; }\n\n                for (j = 0 ; j <= l2 ; j++)\n                    { d[0][j] = j; }\n\n                for (i = 1 ; i <= l1 ; i++)\n                    { for (j = 1 ; j <= l2 ; j++) { d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + (str1.charAt(i - 1) === str2.charAt(j - 1) ? 0 : 1)); } }\n\n                return d[l1][l2];\n            };\n\n        \/\/\tget first fragment\n        \/\/\t==================\n            $D.nextPage__getFirstFragment = function (_html)\n            {\n                \/\/  remove all tags\n                _html = _html.replace(\/<[^>]+?>\/gi, '');\n\n                \/\/  normalize spaces\n                _html = _html.replace(\/\\s+\/gi, ' ');\n\n                \/\/  return first 1000 characters\n                return _html.substr(0, 2000);\n            };\n\n    \/\/  measure text }\n\n    \/\/  hidden node {\n    \/\/  =============\n\n        $D.isNodeHidden = function (_node, _tag_name)\n        {\n            switch (true)\n            {\n                case (_node.offsetWidth > 0):\n                case (_node.offsetHeight > 0):\n                    break;\n\n                default:\n                    switch (true)\n                    {\n                        case (_node.offsetLeft > 0):\n                        case (_node.offsetTop > 0):\n                            break;\n\n                        default:\n                            \/\/  exclude inline DIVs -- which, stupidly, don't have a width\/height\n                            if (true\n                                &#038;&#038; (_tag_name == 'div') \n                                &#038;&#038; ((_node.style.display || $CJ.css( _node, \"display\" )) == 'inline')\n                            ) { break; }\n\n                            \/\/  it's hidden\n                            return true;\n                    }\n                    break;\n            }\n\n            \/\/  it's not hidden\n            return false;\n        };\n\n    \/\/  hidden node }\n\n    \/\/  compute points for candidate {\n    \/\/  ==============================\n\n        $D.getContent__computePointsForCandidate__do = function (_ratio_remaining, _power, _ratio, _points_history)\n        {\n            var \n                _points_remaining = (_points_history[0] * _ratio_remaining),\n                _points_to_compute = (_points_history[0] - _points_remaining)\n            ;\n\n            if (_ratio < 0)\n            {\n                \/\/_points_return = (0.75 * _points_remaining);\n                _points_return = _points_remaining;\n            }\n            else\n            {\n                _points_return = 0\n                    + _points_remaining\n                    + (_points_to_compute * Math.pow(_ratio, _power))\n                ;\n            }\n\n            \/\/\tadd\n            _points_history.unshift(_points_return);\n        };\n\n    \/\/  compute points for candidate }\n\n    \/\/  process candidates (first) {\n    \/\/  ============================\n\n        $D.getContent__computeDetailsForCandidate__first = function (_e, _main)\n        {\n            var _r = {};\n\n            \/\/\tbad candidate\n            \/\/\t=============\n                if (_e._is__bad) { return _r; }\n\n            \/\/\tparagraphs\n            \/\/\t==========\n                _r['_count__lines_of_65_characters'] = (_e._length__plain_text \/ 65);\n                _r['_count__paragraphs_of_3_lines'] =  (_r._count__lines_of_65_characters \/ 3);\n                _r['_count__paragraphs_of_5_lines'] =  (_r._count__lines_of_65_characters \/ 5);\n\n                _r['_count__paragraphs_of_50_words'] = (_e._count__plain_words \/ 50);\n                _r['_count__paragraphs_of_80_words'] = (_e._count__plain_words \/ 80);\n\n            \/\/\ttotal text\n            \/\/\t==========\n                _r['_ratio__length__plain_text_to_total_plain_text'] =  (_e._length__plain_text \/ _main._length__plain_text);\n                _r['_ratio__count__plain_words_to_total_plain_words'] = (_e._count__plain_words \/ _main._count__plain_words);\n\n            \/\/\tlinks\n            \/\/\t=====\n                _r['_ratio__length__links_text_to_plain_text'] =  (_e._length__links_text \/ _e._length__plain_text);\n                _r['_ratio__count__links_words_to_plain_words'] = (_e._count__links_words \/ _e._count__plain_words);\n\n                _r['_ratio__length__links_text_to_all_text'] =  (_e._length__links_text \/ _e._length__all_text);\n                _r['_ratio__count__links_words_to_all_words'] = (_e._count__links_words \/ _e._count__all_words);\n\n                _r['_ratio__length__links_text_to_total_links_text'] =  (_e._length__links_text \/ (_main._length__links_text + 1));\n                _r['_ratio__count__links_words_to_total_links_words'] = (_e._count__links_words \/ (_main._count__links_words + 1));\n\n                _r['_ratio__count__links_to_total_links'] = (_e._count__links \/ (_main._count__links + 1));\n                _r['_ratio__count__links_to_plain_words'] = ((_e._count__links * 2) \/ _e._count__plain_words);\n\n            \/\/\ttext above\n            \/\/\t==========\n                var \n                    _divide__candidates = Math.max(2, Math.ceil(_e._count__above_candidates * 0.5)),\n\n                    _above_text = ((0\n                        + (_e._length__above_plain_text * 1)\n                        + (_e._length__above_plain_text \/ _divide__candidates)\n                    ) \/ 2),\n\n                    _above_words = ((0\n                        + (_e._count__above_plain_words * 1)\n                        + (_e._count__above_plain_words \/ _divide__candidates)\n                    ) \/ 2)\n                ;\n\n                _r['_ratio__length__above_plain_text_to_total_plain_text'] =  (_above_text \/ _main._length__plain_text);\n                _r['_ratio__count__above_plain_words_to_total_plain_words'] = (_above_words \/ _main._count__plain_words);\n\n            \/\/\tcandidates\n            \/\/\t==========\n                _r['_ratio__count__candidates_to_total_candidates'] = (_e._count__candidates \/ (_main._count__candidates + 1));\n                _r['_ratio__count__containers_to_total_containers'] = (_e._count__containers \/ (_main._count__containers + 1));\n\n            \/\/\treturn\n            \/\/\t======\n                return _r;\n        };    \n\n        $D.getContent__computePointsForCandidate__first = function (_e, _main)\n        {\n            var \n                _details = _e.__candidate_details,\n                _points_history = [],\n                _really_big = ((_main._length__plain_text \/ 65) > 250)\n            ;\n\n            \/\/\tbad candidate\n            if (_e._is__bad) { return [0]; }\n\n            \/\/\tthe basics\n            \/\/\t==========\n                _points_history.unshift(((0\n                    + (_details._count__paragraphs_of_3_lines)\n                    + (_details._count__paragraphs_of_5_lines * 1.5)\n                    + (_details._count__paragraphs_of_50_words)\n                    + (_details._count__paragraphs_of_80_words * 1.5)\n                    + (_e._count__images_large * 3)\n                    - ((_e._count__images_skip + _e._count__images_small) * 0.5)\n                ) * 1000));\n\n                \/\/  negative\n                if (_points_history[0] < 0) { return [0]; }\n\n            \/\/  candidates, containers, pieces\n            \/\/  ==============================\n                var \n                    _divide__pieces =     Math.max(5,  Math.ceil(_e._count__pieces *     0.25)),\n                    _divide__candidates = Math.max(5,  Math.ceil(_e._count__candidates * 0.25)),\n                    _divide__containers = Math.max(10, Math.ceil(_e._count__containers * 0.25))\n                ;\n\n                _points_history.unshift(((0\n                    + (_points_history[0] * 3)\n                    + (_points_history[0] \/ _divide__pieces)\n                    + (_points_history[0] \/ _divide__candidates)\n                    + (_points_history[0] \/ _divide__containers)\n                ) \/ 6));\n\n            \/\/\ttotal text\n            \/\/\t==========\n                $D.getContent__computePointsForCandidate__do(0.10, 2, (1 - (1 - _details._ratio__length__plain_text_to_total_plain_text)), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 2, (1 - (1 - _details._ratio__count__plain_words_to_total_plain_words)), _points_history);\n\n                if (_really_big) {\n                $D.getContent__computePointsForCandidate__do(0.10, 4, (1 - (1 - _details._ratio__length__plain_text_to_total_plain_text)), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 4, (1 - (1 - _details._ratio__count__plain_words_to_total_plain_words)), _points_history);\n                }\n\n            \/\/\ttext above\n            \/\/\t==========\n                $D.getContent__computePointsForCandidate__do(0.10, 5, (1 - _details._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 5, (1 - _details._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n                if (_really_big) {\n                $D.getContent__computePointsForCandidate__do(0.10, 10, (1 - _details._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 10, (1 - _details._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n                }\n\n            \/\/\tlinks outer\n            \/\/\t===========\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__length__links_text_to_total_links_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__links_words_to_total_links_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__links_to_total_links), _points_history);\n\n            \/\/  links inner\n            \/\/  ===========\n                var __lr = ($D.language == 'cjk' ? 0.75 : 0.50);\n\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__length__links_text_to_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_words_to_plain_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__length__links_text_to_all_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_words_to_all_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_to_plain_words), _points_history);\n\n            \/\/\tcandidates, containers, pieces\n            \/\/\t==============================\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__candidates_to_total_candidates), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__containers_to_total_containers), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details._ratio__count__pieces_to_total_pieces), _points_history);\n\n            \/\/\treturn -- will get [0] as the actual final points\n            \/\/\t======\n                return _points_history;\n        };    \n\n        $D.getContent__processCandidates__first = function (_candidatesToProcess)\n        {\n            \/\/\tprocess this var\n            \/\/\t================\n                var _candidates = _candidatesToProcess;\n\n            \/\/\tsort _candidates -- the lower in the dom, the closer to position 0\n            \/\/\t================\n                _candidates.sort(function (a, b)\n                {\n                    switch (true)\n                    {\n                        case (a.__index < b.__index): return -1;\n                        case (a.__index > b.__index): return 1;\n                        default: return 0;\n                    }\n                });\n\n            \/\/\tget first\n            \/\/\t=========\n                var\t_main = _candidates[0]\n                if ($D.debug) { $D.log('should be body', _main, _main.__node); }\n\n            \/\/\tpieces of text -- and points computation\n            \/\/\t==============\n                for (var i=0, _i=_candidates.length; i<_i; i++)\n                {\n                    \/\/\tpieces\n                    \/\/\t======\n                        var \n                            _count__pieces = 0,\n                            _array__pieces = []\n                        ;\n\n                        for (var k=i, _k=_candidates.length; k<_k; k++)\n                        {\n                            if (_candidates[k]._count__candidates > 0) { continue; }\n                            if ($CJ.contains(_candidates[i].__node, _candidates[k].__node)); else { continue; }\n\n                            \/\/\tstore piece, if in debug mode\n                            if ($D.debug) { _array__pieces.push(_candidates[k]); }\n\n                            \/\/\tincement pieces count\n                            _count__pieces++;\n                        }\n\n                    \/\/\tcandidate details\n                    \/\/\t=================\n                        _candidates[i]['__candidate_details'] = $D.getContent__computeDetailsForCandidate__first(_candidates[i], _main);\n\n                    \/\/\tpieces -- do this here because _main doesn't yet have a pieces count\n                    \/\/\t======\n\n                        \/\/\tset pieces\n                        _candidates[i]['_count__pieces'] = _count__pieces;\n                        _candidates[i]['_array__pieces'] = _array__pieces;\n\n                        \/\/\tpieces ratio\n                        _candidates[i]['__candidate_details']['_ratio__count__pieces_to_total_pieces'] = (_count__pieces \/ (_candidates[0]._count__pieces + 1));\n\n                    \/\/  check some more\n                    \/\/  ===============\n                    \/*    switch (true)\n                        {\n                            case (($D.language != 'cjk') &#038;&#038; (_candidates[i]['__candidate_details']['_ratio__length__links_text_to_plain_text'] > 1)):\n                            case (($D.language != 'cjk') &#038;&#038; (_candidates[i]['__candidate_details']['_ratio__count__links_words_to_plain_words'] > 1)):\n                                _candidates[i]._is__bad = true;\n                                break;\n                        }\n                    *\/\n\n                    \/\/\tpoints\n                    \/\/\t======\n                        _candidates[i].__points_history = $D.getContent__computePointsForCandidate__first(_candidates[i], _main);\n                        _candidates[i].__points = _candidates[i].__points_history[0];\n                }\n\n            \/\/\tsort _candidates -- the more points, the closer to position 0\n            \/\/\t================\n                _candidates.sort(function (a, b)\n                {\n                    switch (true)\n                    {\n                        case (a.__points > b.__points): return -1;\n                        case (a.__points < b.__points): return 1;\n                        default: return 0;\n                    }\n                });\n\n            \/\/\treturn\n            \/\/\t======\n                return _candidates;\t\n        };    \n\n    \/\/  process candidates (first) }\n\n    \/\/  process candidates (second) {\n    \/\/  =============================\n\n        $D.getContent__computePointsForCandidate__second = function (_e, _main)\n        {\n            var \n                _details = _e.__candidate_details,\n                _details_second = _e.__candidate_details_second,\n                _points_history = []\n            ;\n\n            \/\/\tbad candidate\n            if (_e._is__bad) { return [0]; }\n\n            \/\/\tget initial points\n            \/\/\t==================\n                _points_history.unshift(_e.__points_history[(_e.__points_history.length-1)]);\n\n            \/\/  candidates, containers, pieces\n            \/\/  ==============================\n                var \n                    _divide__pieces =     Math.max(5,  Math.ceil(_e._count__pieces *     0.25)),\n                    _divide__candidates = Math.max(5,  Math.ceil(_e._count__candidates * 0.25)),\n                    _divide__containers = Math.max(10, Math.ceil(_e._count__containers * 0.25))\n                ;\n\n                _points_history.unshift(((0\n                    + (_points_history[0] * 3)\n                    + ((_points_history[0] \/ _divide__pieces) * 2)\n                    + ((_points_history[0] \/ _divide__candidates) * 2)\n                    + ((_points_history[0] \/ _divide__containers) * 2)\n                ) \/ 9));\n\n            \/\/\ttotal text\n            \/\/\t==========\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - (1 - _details_second._ratio__length__plain_text_to_total_plain_text)), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - (1 - _details_second._ratio__count__plain_words_to_total_plain_words)), _points_history);\n\n            \/\/\ttext above\n            \/\/\t==========\n                var __ar = ($D.language == 'cjk' ? 0.50 : 0.10);\n\n                $D.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__length__above_plain_text_to_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(__ar, 1, (1 - _details_second._ratio__count__above_plain_words_to_plain_words), _points_history);\n\n            \/\/\tlinks outer\n            \/\/\t===========\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details_second._ratio__count__links_to_total_links), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details_second._ratio__length__links_text_to_total_links_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - _details_second._ratio__count__links_words_to_total_links_words), _points_history);\n\n            \/\/\tlinks inner\n            \/\/\t===========\n                var __lr = ($D.language == 'cjk' ? 0.75 : 0.50);\n\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__length__links_text_to_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details._ratio__count__links_words_to_plain_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details_second._ratio__length__links_text_to_all_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details_second._ratio__count__links_words_to_all_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(__lr, 1, (1 - _details_second._ratio__count__links_to_plain_words), _points_history);\n\n            \/\/\tcandidates, containers, pieces\n            \/\/\t==============================\n                $D.getContent__computePointsForCandidate__do(0.10, 2, (1 - _details_second._ratio__count__candidates_to_total_candidates), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 2, (1 - _details_second._ratio__count__containers_to_total_containers), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 2, (1 - _details_second._ratio__count__pieces_to_total_pieces), _points_history);\n\n            \/\/\treturn -- will get [0] as the actual final points\n            \/\/\t======\n                return _points_history;\n        };    \n\n        $D.getContent__computeDetailsForCandidate__second = function (_e, _main)\n        {\n            var _r = {};\n\n            \/\/\tbad candidate\n            \/\/\t=============\n                if (_e._is__bad) { return _r; }\n\n            \/\/\ttotal text\n            \/\/\t==========\n                _r['_ratio__length__plain_text_to_total_plain_text'] = \t(_e._length__plain_text \/ _main._length__plain_text);\n                _r['_ratio__count__plain_words_to_total_plain_words'] = (_e._count__plain_words \/ _main._count__plain_words);\n\n            \/\/\tlinks\n            \/\/\t=====\n                _r['_ratio__length__links_text_to_all_text'] =\t(_e._length__links_text \/ _e._length__all_text);\n                _r['_ratio__count__links_words_to_all_words'] = (_e._count__links_words \/ _e._count__all_words);\n\n                _r['_ratio__length__links_text_to_total_links_text'] = \t(_e._length__links_text \/ (_main._length__links_text + 1));\n                _r['_ratio__count__links_words_to_total_links_words'] = (_e._count__links_words \/ (_main._count__links_words + 1));\n\n                _r['_ratio__count__links_to_total_links'] = (_e._count__links \/ (_main._count__links + 1));\n                _r['_ratio__count__links_to_plain_words'] = ((_e._count__links * 2) \/ _e._count__plain_words);\n\n            \/\/\ttext above\n            \/\/\t==========\n                var \n                    _divide__candidates = Math.max(2, Math.ceil((_e._count__above_candidates - _main._count__above_candidates) * 0.5)),\n\n                    _above_text = ((0\n                        + (_e.__second_length__above_plain_text * 1)\n                        + (_e.__second_length__above_plain_text \/ _divide__candidates)\n                    ) \/ 2),\n\n                    _above_words = ((0\n                        + (_e.__second_count__above_plain_words * 1)\n                        + (_e.__second_count__above_plain_words \/ _divide__candidates)\n                    ) \/ 2)\n                ;\n\n                _r['_ratio__length__above_plain_text_to_total_plain_text'] =  (_above_text \/ _main._length__plain_text);\n                _r['_ratio__count__above_plain_words_to_total_plain_words'] = (_above_words \/ _main._count__plain_words);\n\n                _r['_ratio__length__above_plain_text_to_plain_text'] = \t(_above_text \/ _e._length__plain_text);\n                _r['_ratio__count__above_plain_words_to_plain_words'] = (_above_words \/ _e._count__plain_words);\n\n            \/\/\tcandidates\n            \/\/\t==========\n                _r['_ratio__count__candidates_to_total_candidates'] = (Math.max(0, (_e._count__candidates - (_main._count__candidates * 0.25))) \/ (_main._count__candidates + 1));\n                _r['_ratio__count__containers_to_total_containers'] = (Math.max(0, (_e._count__containers - (_main._count__containers * 0.25))) \/ (_main._count__containers + 1));\n                _r['_ratio__count__pieces_to_total_pieces'] =         (Math.max(0, (_e._count__pieces - (_main._count__pieces * 0.25))) \/ (_main._count__pieces + 1));\n\n            \/\/\treturn\n            \/\/\t======\n                return _r;\n        };    \n\n        $D.getContent__processCandidates__second = function (_processedCandidates)\n        {\n            var \n                _candidates = _processedCandidates,\n                _main = _candidates[0]\n            ;\n\n            \/\/\tonly get children of target\n            \/\/\t===========================\n                _candidates = $CJ.map(_candidates, function (_element, _index)\n                {\n                    switch (true)\n                    {\n                        case (!(_index > 0)):\n                        case (!($CJ.contains(_main.__node, _element.__node))):\n                            return null;\n\n                        default:\n                            return _element;\n                    }\n                });\n\n                \/\/  add main - to amke sure the result is never blank\n                _candidates.unshift(_main);\n\n            \/\/\tsort _candidates -- the lower in the dom, the closer to position 0\n            \/\/\t================\n                _candidates.sort(function (a, b)\n                {\n                    switch (true)\n                    {\n                        case (a.__index < b.__index): return -1;\n                        case (a.__index > b.__index): return 1;\n                        default: return 0;\n                    }\n                });\n\n            \/\/\tsecond candidate computation\n            \/\/\t============================\n                for (var i=0, _i=_candidates.length; i<_i; i++)\n                {\n                    \/\/\tadditional numbers\n                    \/\/\t==================\n                        _candidates[i].__second_length__above_plain_text = (_candidates[i]._length__above_plain_text - _main._length__above_plain_text);\n                        _candidates[i].__second_count__above_plain_words = (_candidates[i]._count__above_plain_words - _main._count__above_plain_words);\n\n                    \/\/\tcandidate details\n                    \/\/\t=================\n                        _candidates[i]['__candidate_details_second'] = $D.getContent__computeDetailsForCandidate__second(_candidates[i], _main);\n\n                    \/\/\tcheck some more\n                    \/\/\t===============\n                    \/*\tswitch (true)\n                        {\n                            case (!(_candidates[i]['__candidate_details_second']['_ratio__count__plain_words_to_total_plain_words'] > 0.05)):\n                            case (!(_candidates[i]['__candidate_details_second']['_ratio__length__plain_text_to_total_plain_text'] > 0.05)):\n\n                            \/\/case (!(_candidates[i]['__candidate_details_second']['_ratio__count__above_plain_words_to_total_plain_words'] < 0.1)):\n                            \/\/case (!(_candidates[i]['__candidate_details_second']['_ratio__length__above_plain_text_to_total_plain_text'] < 0.1)):\n\n                            \/\/case (_candidates[i]['__candidate_details_second']['_ratio__length__above_plain_text_to_plain_text'] > 1):\n                            \/\/case (_candidates[i]['__candidate_details_second']['_ratio__count__above_plain_words_to_plain_words'] > 1):\n\n                                _candidates[i]._is__bad = true;\n                                \/\/\twil set points to 0, in points computation function\n                                break;\n                        }\n                    *\/\n\n                    \/\/\tpoints\n                    \/\/\t======\n                        _candidates[i].__points_history_second = $D.getContent__computePointsForCandidate__second(_candidates[i], _main);\n                        _candidates[i].__points_second = _candidates[i].__points_history_second[0];\n                }\n\n            \/\/\tsort _candidates -- the more points, the closer to position 0\n            \/\/\t================\n                _candidates.sort(function (a, b)\n                {\n                    switch (true)\n                    {\n                        case (a.__points_second > b.__points_second): return -1;\n                        case (a.__points_second < b.__points_second): return 1;\n                        default: return 0;\n                    }\n                });\n\n            \/\/\treturn\n            \/\/\t======\n                return _candidates;\t\n        };    \n\n    \/\/  process candidates (second) }\n\n    \/\/  process candidates (third) {\n    \/\/  ============================\n\n        $D.getContent__computePointsForCandidate__third = function (_e, _main)\n        {\n            var \n                _details = _e.__candidate_details,\n                _details_second = _e.__candidate_details_second,\n                _points_history = []\n            ;\n\n            \/\/\tbad candidate\n            if (_e._is__bad) { return [0]; }\n\n            \/\/\tget initial points\n            \/\/\t==================\n                _points_history.unshift(_e.__points_history[(_e.__points_history.length-1)]);\n\n            \/\/  candidates, containers, pieces\n            \/\/  ==============================\n                var \n                    _divide__pieces =     Math.max(2, Math.ceil(_e._count__pieces *     0.25)),\n                    _divide__candidates = Math.max(2, Math.ceil(_e._count__candidates * 0.25)),\n                    _divide__containers = Math.max(4, Math.ceil(_e._count__containers * 0.25))\n                ;\n\n                _points_history.unshift(((0\n                    + (_points_history[0] * 3)\n                    + ((_points_history[0] \/ _divide__pieces) * 2)\n                    + ((_points_history[0] \/ _divide__candidates) * 2)\n                    + ((_points_history[0] \/ _divide__containers) * 2)\n                ) \/ 9));\n\n            \/\/  total text\n            \/\/  ==========\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - (1 - _details_second._ratio__length__plain_text_to_total_plain_text)), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.75, 1, (1 - (1 - _details_second._ratio__count__plain_words_to_total_plain_words)), _points_history);\n\n            \/\/\ttext above\n            \/\/\t==========\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__length__above_plain_text_to_total_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__count__above_plain_words_to_total_plain_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__length__above_plain_text_to_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.10, 1, (1 - _details_second._ratio__count__above_plain_words_to_plain_words), _points_history);\n\n            \/\/\tlinks inner\n            \/\/\t===========\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__length__links_text_to_all_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__links_words_to_all_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__length__links_text_to_plain_text), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__links_words_to_plain_words), _points_history);\n\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__links_to_plain_words), _points_history);\n\n            \/\/\tcandidates, containers, pieces\n            \/\/\t==============================\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__candidates_to_total_candidates), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__containers_to_total_containers), _points_history);\n                $D.getContent__computePointsForCandidate__do(0.50, 1, (1 - _details._ratio__count__pieces_to_total_pieces), _points_history);\n\n            \/\/\treturn -- will get [0] as the actual final points\n            \/\/\t======\n                return _points_history;\n        };\n\n    \/\/  process candidates (third) }\n\n    \/\/  explore node and get stuff {\n    \/\/  ============================\n\n        $D.getContent__exploreNodeAndGetStuff = function (_nodeToExplore, _justExploring)\n        {\n            var\t\n                _global__element_index = 0,\n\n                _global__inside_link = false,\n                _global__inside_link__element_index = 0,\n\n                _global__length__above_plain_text = 0,\n                _global__count__above_plain_words = 0,\n                _global__length__above_links_text = 0,\n                _global__count__above_links_words = 0,\n                _global__count__above_candidates = 0,\n                _global__count__above_containers = 0,\n                _global__above__plain_text = '',\n                _global__above__links_text = '',\n\n                _return__containers = [],\n                _return__candidates = [],\n                _return__links = []\n            ;\n\n            \/\/\trecursive function\n            \/\/\t==================\n                var _recursive = function (_node)\n                {\n                    \/\/\tincrement index\n                    \/\/\tstarts with 1\n                    _global__element_index++;\n\n                    var \n                        _tag_name = (_node.nodeType === 3 ? '#text' : ((_node.nodeType === 1 &#038;&#038; _node.tagName &#038;&#038; _node.tagName > '') ? _node.tagName.toLowerCase() : '#invalid')),\n\t\t\t\t\t\t_node_id = (_node.id),\n                        _result =\n                        {\n                            '__index': _global__element_index, \n                            '__node': _node, \n\n                            '_is__container': \t\t($D.parseOptions._elements_container.indexOf('|'+_tag_name+'|') > -1),\n                            '_is__candidate': \t\tfalse,\n                            '_is__text': \t\t\tfalse,\n                            '_is__link': \t\t\tfalse,\n                            '_is__link_skip': \t\tfalse,\n                            '_is__image_small': \tfalse,\n                            '_is__image_medium': \tfalse,\n                            '_is__image_large': \tfalse,\n                            '_is__image_skip': \t\tfalse,\n                            '_is__unskippable':     false,\n\n                            '_debug__above__plain_text': _global__above__plain_text,\n                            '_debug__above__links_text': _global__above__links_text,\n\n                            '_length__above_plain_text': _global__length__above_plain_text,\n                            '_count__above_plain_words': _global__count__above_plain_words,\n\n                            '_length__above_links_text': _global__length__above_links_text,\n                            '_count__above_links_words': _global__count__above_links_words,\n\n                            '_length__above_all_text': \t(_global__length__above_plain_text + _global__length__above_links_text),\n                            '_count__above_all_words': \t(_global__count__above_plain_words + _global__count__above_links_words),\n\n                            '_count__above_candidates': _global__count__above_candidates,\n                            '_count__above_containers': _global__count__above_containers,\n\n                            '_length__plain_text': 0,\n                            '_count__plain_words': 0,\n\n                            '_length__links_text': 0,\n                            '_count__links_words': 0,\n\n                            '_length__all_text': 0,\n                            '_count__all_words': 0,\n\n                            '_count__containers': 0,\n                            '_count__candidates': 0,\n\n                            '_count__links': 0,\n                            '_count__links_skip': 0,\n\n                            '_count__images_small': 0,\n                            '_count__images_medium': 0,\n                            '_count__images_large': 0,\n                            '_count__images_skip': 0\n                        };\n\n                    \/\/  unskippable\n                    \/\/  ===========\n                        if (false\n                            || (_result._is__container)\n                            || ($D.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1)\n                        ) {\n                            var _unskip = _node.getAttribute($D.parseOptions._unskippable_attribute);\n                            if (_unskip == $D.parseOptions._unskippable_attribute_value) { _result._is__unskippable = true; }\n                        }\n\n                    \/\/\tfast return\n                    \/\/\t===========\n                        switch (true)\n                        {\n                            case ((_tag_name == '#invalid')):\n                            case (($D.parseOptions._elements_ignore.indexOf('|'+_tag_name+'|') > -1)):\n                                return false;\n\t\t\t\t\t\t\tcase (($D.parseOptions._elements_ignore_id.indexOf('|'+_node_id+'|') > -1)):\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n                            case (($D.parseOptions._elements_visible.indexOf('|'+_tag_name+'|') > -1)):\n                                if ($D.isNodeHidden(_node, _tag_name)) { return false; }\n                                break;\n\n                            \/\/\tself-closing -- with some exceptions\n                            case ($D.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1):\n                                switch (true)\n                                {\n                                    case ((_tag_name == 'img')): break;\n                                    default: return false;\n                                }\n                                break;\n                        }\n\n                    \/\/\tdo stuff\n                    \/\/\t========\n                        switch (true)\n                        {\n                            \/\/\ttext node\n                            case ((_tag_name == '#text')):\n                                \/\/\tmark\n                                _result._is__text = true;\n\n                                \/\/\tget\n                                var _nodeText = _node.nodeValue;\n\n                                \/\/\tresult\n                                _result._length__plain_text = $D.measureText__getTextLength(_nodeText);\n                                _result._count__plain_words = $D.measureText__getWordCount(_nodeText);\n\n                                if (_global__inside_link)\n                                {\n                                    _global__length__above_links_text += _result._length__plain_text;\n                                    _global__count__above_links_words += _result._count__plain_words;\t\t\t\t\t\n                                    if (false &#038;&#038; $D.debug) { _global__above__links_text += ' ' + _nodeText; }\n                                }\n                                else\n                                {\n                                    _global__length__above_plain_text += _result._length__plain_text;\n                                    _global__count__above_plain_words += _result._count__plain_words;\t\t\t\t\t\n                                    if (false &#038;&#038; $D.debug) { _global__above__plain_text += ' ' + _nodeText; }\n                                }\n\n                                \/\/\treturn text\n                                return _result;\n\n                            \/\/\tlink\n                            case (_tag_name == 'a'):\n                                var _href = '';\n\n                                try {\n                                    _href = _node.href\n                                } catch (e) {\n                                    _href = $CJ.attr('href');\n                                }\n\n                                \/\/\tsanity\n                                if (_href > ''); else { break; }\n                                if (_href.indexOf); else { break; }\n\n                                _result._is__link = true;\n\n                                \/\/\tskip\n                                for (var i=0, _i=$D.parseOptions._skip_link_from_domain.length; i<_i; i++)\n                                {\n                                    if (_href.indexOf($D.parseOptions._skip_link_from_domain[i]) > -1)\n                                        { _result._is__link_skip = true; break; }\n                                }\n\n                                \/\/\tinside link\n                                if (_global__inside_link); else\n                                {\n                                    _global__inside_link = true;\n                                    _global__inside_link__element_index = _result.__index;\n                                }\n\n                                \/\/\tdone\n                                _return__links.push(_result);\n                                break;\n\n                            \/\/\timage\n                            case (_tag_name == 'img'):\n\n                                \/\/\tskip\n                                if (_node.src &#038;&#038; _node.src.indexOf)\n                                {\n                                    for (var i=0, _i=$D.parseOptions._skip_image_from_domain.length; i<_i; i++)\n                                    {\n                                        if (_node.src.indexOf($D.parseOptions._skip_image_from_domain[i]) > -1)\n                                            { _result._is__image_skip = true; break; }\n                                    }\n                                }\n\n                                \/\/\tsize\n                                var\t_width = $CJ(_node).width(), _height = $CJ(_node).height();\n                                switch (true)\n                                {\n                                    case ((_width * _height) >= 50000):\n                                    case ((_width >= 350) &#038;&#038; (_height >= 75)):\n                                        _result._is__image_large = true;\n                                        break;\n\n                                    case ((_width * _height) >= 20000):\n                                    case ((_width >= 150) &#038;&#038; (_height >= 150)):\n                                        _result._is__image_medium = true;\n                                        break;\n\n                                    case ((_width <= 5) &#038;&#038; (_height <= 5)):\n                                        _result._is__image_skip = true;\n                                        break;\n\n                                    default:\n                                        _result._is__image_small = true;\n                                        break;\n                                }\n\n                                break;\n                        }\n\n                    \/\/\tchild nodes\n                    \/\/\t===========\n                        for (var i=0, _i=_node.childNodes.length; i<_i; i++)\n                        {\n                            var \n                                _child = _node.childNodes[i],\n                                _child_result = _recursive(_child)\n                            ;\n\n                            \/\/\tif false, continue\n                            if (_child_result); else { continue; }\n\n                            \/\/\tadd to result\n                            _result._count__links += \t\t\t_child_result._count__links + \t\t\t(_child_result._is__link ? 1 : 0);\n                            _result._count__links_skip += \t\t_child_result._count__links_skip + \t\t(_child_result._is__link_skip ? 1 : 0);\n\n                            _result._count__images_small += \t_child_result._count__images_small + \t(_child_result._is__image_small ? 1 : 0);\n                            _result._count__images_medium += \t_child_result._count__images_medium + \t(_child_result._is__image_medium ? 1 : 0);\n                            _result._count__images_large += \t_child_result._count__images_large + \t(_child_result._is__image_large ? 1 : 0);\n                            _result._count__images_skip += \t\t_child_result._count__images_skip + \t(_child_result._is__image_skip ? 1 : 0);\n\n                            _result._count__containers += \t\t_child_result._count__containers + \t\t(_child_result._is__container ? 1 : 0);\n                            _result._count__candidates += \t\t_child_result._count__candidates + \t\t(_child_result._is__candidate ? 1 : 0);\n\n                            _result._length__all_text += \t\t_child_result._length__plain_text + \t_child_result._length__links_text;\n                            _result._count__all_words += \t\t_child_result._count__plain_words + \t_child_result._count__links_words;\n\n                            \/\/\tplain text \/ link text\n                            switch (true)\n                            {\n                                case (_child_result._is__link):\n                                    \/\/\tno text to add\n                                    _result._length__links_text += (_child_result._length__plain_text + _child_result._length__links_text);\n                                    _result._count__links_words += (_child_result._count__plain_words + _child_result._count__links_words);\n                                    break;\n\n                                default:\n                                    _result._length__plain_text += \t\t\t_child_result._length__plain_text;\n                                    _result._count__plain_words += \t\t\t_child_result._count__plain_words;\n                                    _result._length__links_text += \t\t\t_child_result._length__links_text;\n                                    _result._count__links_words += \t\t\t_child_result._count__links_words;\n                                    break;\n                            }\n                        }\n\n                    \/\/\tafter child nodes\n                    \/\/\t=================\n\n                        \/\/\tmark as not in link anymore\n                        if (true\n                            &#038;&#038; (_result._is__link) \n                            &#038;&#038; (_global__inside_link__element_index == _result.__index)\n                        ) {\n                            _global__inside_link = false;\n                            _global__inside_link__element_index = 0;\n                        }\n\n                    \/\/\tadd to containers\n                    \/\/\t=================\n                        if (_result._is__container || ((_result.__index == 1) &#038;&#038; (_justExploring == true)))\n                        {\n                            \/\/\tadd to containers\n                            _return__containers.push(_result);\n\n                            \/\/  increase above containers\n                            if (_result._is__container) { _global__count__above_containers++; }\n\n                            \/\/\tadd to candidates\n                            if (_justExploring); else\n                            {\n                                switch (true)\n                                {\n                                    case (($D.language != 'cjk') &#038;&#038; ((_result._count__links * 2) >= _result._count__plain_words)):  \/* link ratio *\/\n\n                                    case (($D.language != 'cjk') &#038;&#038; (_result._length__plain_text < (65 \/ 3))):  \/* text length *\/\n                                    case (($D.language != 'cjk') &#038;&#038; (_result._count__plain_words < 5)):\t\t\t\/* words *\/\n\n                                    case (($D.language == 'cjk') &#038;&#038; (_result._length__plain_text < 10)):\t    \/* text length *\/\n                                    case (($D.language == 'cjk') &#038;&#038; (_result._count__plain_words < 2)):\t\t\t\/* words *\/\n\n                                    \/\/case (_result._length__plain_text == 0):    \/* no text *\/\n                                    \/\/case (_result._count__plain_words == 0):    \/* no words *\/\n\n                                    \/\/case (($D.language == 'cjk') &#038;&#038; ((_result._length__plain_text \/ 65 \/ 3) < 0.1)):\t\t\t\t\/* paragrahs of 3 lines *\/\n                                    \/\/case (($D.language != 'cjk') &#038;&#038; ((_result._count__plain_words \/ 50) < 0.5)):\t\t\t\t\t\/* paragraphs of 50 words *\/\n\n                                        \/\/\tnot a valid candidate\n                                        \/\/if (_tag_name == 'div') { $D.log('bad candidate', _result.__node); }\n\n                                        break;\n\n                                    default:\n                                        \/\/\tgood candidate\n                                        _result._is__candidate = true;\n                                        _return__candidates.push(_result);\n\n                                        \/\/  increase above candidates\n                                        _global__count__above_candidates++;\n\n                                        break;\n                                }\n\n                                \/\/\tspecial case for body -- if it was just skipped\n                                \/\/\t=====================\n                                    if ((_result.__index == 1) &#038;&#038; !(_result._is__candidate))\n                                    {\n                                        _result._is__candidate = true;\n                                        _result._is__bad = true;\n                                        _return__candidates.push(_result);\n                                    }\n                            }\n                        }\n\n                    \/\/\treturn\n                    \/\/\t======\n                        return _result;\n                };\n\n            \/\/\tactually do it\n            \/\/\t==============\n                _recursive(_nodeToExplore);\n\n            \/\/\tjust exploring -- return first thing\n            \/\/\t==============\n                if (_justExploring) { return _return__containers.pop(); }\n\n            \/\/\treturn containers list\n            \/\/\t======================\n                return {\n                    '_containers': \t_return__containers,\n                    '_candidates': \t_return__candidates,\n                    '_links': \t\t_return__links\n                };\n        };\n\n    \/\/  explore node and get stuff }\n\n    \/\/  build html for node {\n    \/\/  =====================\n\n        $D.getContent__buildHTMLForNode = function (_nodeToBuildHTMLFor, _custom_mode)\n        {\n            var \n                _global__element_index = 0,\n                _global__the_html = '',\n                _global__exploreNodeToBuildHTMLFor = $D.getContent__exploreNodeAndGetStuff(_nodeToBuildHTMLFor, true)\n            ;\n\n            \/\/\tcustom\n                switch (_custom_mode)\n                {\n                    case 'above-the-target':\n                        _global__exploreNodeToBuildHTMLFor = false;\n                        break;\n                }\n\n            \/\/\trecursive function\n            \/\/\t==================\n                var _recursive = function (_node)\n                {\n                    \/\/\tincrement index -- starts with 1\n                    \/\/\t===============\n                        _global__element_index++;\n\n                    \/\/\tvars\n                    \/\/\t====\n                        var \n                            _explored = false,\n                            _tag_name = (_node.nodeType === 3 ? '#text' : ((_node.nodeType === 1 &#038;&#038; _node.tagName &#038;&#038; _node.tagName > '') ? _node.tagName.toLowerCase() : '#invalid')),\n\t\t\t\t\t\t\t_node_id = _node.id,\n                            _pos__start__before = 0,\n                            _pos__start__after = 0,\n                            _pos__end__before = 0,\n                            _pos__end__after = 0\n                        ;\n\n                    \/\/\tfast return\n                    \/\/\t===========\n                        switch (true)\n                        {\n                            case ((_tag_name == '#invalid')):\n                            case (($D.parseOptions._elements_ignore.indexOf('|'+_tag_name+'|') > -1)):\n                                return;\n\t\t\t\t\t\t\tcase (($D.parseOptions._elements_ignore_id.indexOf('|'+_node_id+'|') > -1)):\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\treturn;\t\t\t\t\t\t\t\t\t\n\n                            case (_tag_name == '#text'):\n                                _global__the_html += _node.nodeValue\n                                    .replace(\/<\/gi, '&lt;')\n                                    .replace(\/>\/gi, '&gt;')\n                                ;\n                                return;\n                        }\n\n                    \/\/\thidden\n                    \/\/\t======\n                        if (true\n                            &#038;&#038; ($D.parseOptions._elements_visible.indexOf('|'+_tag_name+'|') > -1)\n                            &#038;&#038; $D.isNodeHidden(_node, _tag_name)\n                        ) { return; }\n\n                    \/\/\tclean -- before\n                    \/\/\t=====\n\n                        \/\/\tobjects, embeds, iframes\n                        \/\/\t========================\n                            switch (_tag_name)\n                            {\n                                case ('object'):\n                                case ('embed'):\n                                case ('iframe'):\n                                    var \n                                        _src = (_tag_name == 'object' ? $CJ(_node).find(\"param[name='movie']\").attr('value') : $CJ(_node).attr('src')),\n                                        _skip = ((_src > '') ? false : true)\n                                    ;\n\n                                    if (_skip); else\n                                    {\n                                        \/\/\tdefault skip\n                                        _skip = true;\n\n                                        \/\/\tloop\n                                        for (var i=0, _i=$D.parseOptions._keep_video_from_domain.length; i<_i; i++)\n                                            { if (_src.indexOf($D.parseOptions._keep_video_from_domain[i]) > -1) { _skip = false; break; } }\n                                    }\n\n                                    \/\/\tskip?\n                                    if (_skip)\n                                    {\n                                        _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                        if (_explored &#038;&#038; _explored._is__unskippable); else\n                                        {\n                                            $D.debugOutline(_node, 'clean-before', 'object-embed-iframe');\n                                            return;\n                                        }\n                                    }\n\n                                    break;\n                            }\n\n                        \/\/\tskipped link\n                        \/\/\t============\n                            if (_tag_name == 'a' || _tag_name == 'li')\n                            {\n                                _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                if (_explored &#038;&#038; _explored._is__unskippable); else\n                                {\n                                    switch (true)\n                                    {\n                                        case (_explored._is__link_skip):\n                                        case (((_explored._count__images_small + _explored._count__images_skip) > 0) &#038;&#038; (_explored._length__plain_text < 65)):\n                                            $D.debugOutline(_node, 'clean-before', 'skip-link');\n                                            return;\n                                    }\n                                }\n                            }\n\n                        \/\/\tlink density\n                        \/\/\t============\n                            if ($D.parseOptions._elements_link_density.indexOf('|'+_tag_name+'|') > -1)\n                            {\n                                _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                if (_explored &#038;&#038; _explored._is__unskippable); else\n                                {\n                                    switch (true)\n                                    {\n                                        case (_explored._length__plain_text > (65 * 3 * 2)):\n                                        case ($D.language == 'cjk' &#038;&#038; (_explored._length__plain_text > (65 * 3 * 1))):\n                                        case (!(_explored._count__links > 1)):\n                                        case (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.5):\n                                        case (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._count__plain_words \/ _global__exploreNodeToBuildHTMLFor._count__plain_words) > 0.5):\n                                        case ((_explored._length__plain_text == 0) &#038;&#038; (_explored._count__links == 1) &#038;&#038; (_explored._length__links_text < 65)):\n                                        case ((_explored._length__plain_text < 25) &#038;&#038; ((_explored._count__images_large + _explored._count__images_medium) > 0)):\n                                            break;\n\n                                        case ((_explored._length__links_text \/ _explored._length__all_text) < 0.5):\n                                            if (_explored._count__links > 0); else { break; }\n                                            if (_explored._count__links_skip > 0); else { break; }\n                                            if (((_explored._count__links_skip \/ _explored._count__links) > 0.25) &#038;&#038; (_explored._length__links_text \/ _explored._length__all_text) < 0.05) { break; }\n\n                                        default:\n                                            $D.debugOutline(_node, 'clean-before', 'link-density');\n                                            return;\n                                    }\n                                }\n                            }\t\n\n                        \/\/\tfloating\n                        \/\/\t========\n                            if ($D.parseOptions._elements_floating.indexOf('|'+_tag_name+'|') > -1)\n                            {\n                                _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                if (_explored &#038;&#038; _explored._is__unskippable); else\n                                {\n                                    switch (true)\n                                    {\n                                        case (_explored._length__plain_text > (65 * 3 * 2)):\n                                        case ($D.language == 'cjk' &#038;&#038; (_explored._length__plain_text > (65 * 3 * 1))):\n                                        case (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.25):\n                                        case (_global__exploreNodeToBuildHTMLFor &#038;&#038; (_explored._count__plain_words \/ _global__exploreNodeToBuildHTMLFor._count__plain_words) > 0.25):\n                                        case ((_explored._length__plain_text < 25) &#038;&#038; (_explored._length__links_text < 25) &#038;&#038; ((_explored._count__images_large + _explored._count__images_medium) > 0)):\n                                        case (_node.getElementsByTagName &#038;&#038; (_explored._length__plain_text < (65 * 3 * 1)) &#038;&#038; ((_node.getElementsByTagName('h1').length + _node.getElementsByTagName('h2').length + _node.getElementsByTagName('h3').length + _node.getElementsByTagName('h4').length) > 0)):\n                                            break;\n\n                                        default:\n                                            var _float = $CJ(_node).css('float');\n                                            if (_float == 'left' || _float == 'right'); else { break; }\n                                            if ((_explored._length__links_text == 0) &#038;&#038; ((_explored._count__images_large + _explored._count__images_medium) > 0)) { break; }\n\n                                            $D.debugOutline(_node, 'clean-before', 'floating');\n                                            return;\n                                    }\n                                }\n                            }\n\n                        \/\/\tabove target\n                        \/\/\t============\n                            if (_custom_mode == 'above-the-target')\n                            {\n                                \/\/  is ignored?\n                                if ($D.parseOptions._elements_above_target_ignore.indexOf('|'+_tag_name+'|') > -1)\n                                {\n                                    _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                    if (_explored &#038;&#038; _explored._is__unskippable); else\n                                    {\n                                        $D.debugOutline(_node, 'clean-before', 'above-target');\n                                        return;\n                                    }\n                                }\n\n                                \/\/  is image?\n                                if (_tag_name == 'img')\n                                {\n                                    _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                    if (_explored &#038;&#038; _explored._is__unskippable); else\n                                    {\n                                        if (_explored._is__image_large); else\n                                        {\n                                            $D.debugOutline(_node, 'clean-before', 'above-target');\n                                            return;\n                                        }\n                                    }\n                                }\n\n                                \/\/  has too many links?\n                                \/\/if (_node.getElementsByTagName &#038;&#038; _node.getElementsByTagName('a').length > 5)\n                                \/\/    { $D.debugOutline(_node, 'clean-before', 'above-target'); return; }\n                            }\n\n                        \/\/  headers that are images\n                        \/\/  =======================\n                            if (_tag_name.match(\/^h(1|2|3|4|5|6)$\/gi))\n                            {\n                                _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                if (_explored &#038;&#038; _explored._is__unskippable); else\n                                {\n                                    switch (true)\n                                    {\n                                        case ((_explored._length__plain_text < 10) &#038;&#038; ((_explored._count__images_small + _explored._count__images_medium + _explored._count__images_large + _explored._count__images_skip) > 0)):\n                                            $D.debugOutline(_node, 'clean-before', 'skip-heading');\n                                            return;\n                                    }\n                                }\n                            }\n\n                    \/\/\tstart tag\n                    \/\/\t=========\n                        if ($D.parseOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1); else\n                        {\n                            \/* mark *\/\t_pos__start__before = _global__the_html.length;\n                            \/* add *\/\t_global__the_html += '<'+_tag_name;\n\n                            \/\/\tattributes\n                            \/\/\t==========\n\n                                \/\/\tallowed attributes\n                                if (_tag_name in $D.parseOptions._elements_keep_attributes)\n                                {\n                                    for (var i=0, _i=$D.parseOptions._elements_keep_attributes[_tag_name].length; i<_i; i++)\n                                    {\n                                        var \n                                            _attribute_name = $D.parseOptions._elements_keep_attributes[_tag_name][i],\n                                            _attribute_value = _node.getAttribute(_attribute_name)\n                                        ;\n\n                                        \/\/\tif present\n                                        if (_attribute_value > '')\n                                            { _global__the_html += ' '+_attribute_name+'=\"'+(_attribute_value)+'\"'; }\n                                    }\n                                }\n\n                                \/\/\tkeep ID for all elements\n                                var _id_attribute = _node.getAttribute('id');\n                                if (_id_attribute > '')\n                                    { _global__the_html += ' id=\"'+_id_attribute+'\"'; }\n\n                                \/\/\tlinks target NEW\n                                if (_tag_name == 'a')\n                                    { _global__the_html += ' target=\"_blank\"'; }\n\n                            \/\/\tclose start\n                            \/\/\t===========\n                                if ($D.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1) { _global__the_html += ' \/>'; }\n                                else { _global__the_html += '>';}\n\n                            \/* mark *\/ _pos__start__after = _global__the_html.length;\n                        }\n\n                    \/\/\tchild nodes\n                    \/\/\t===========\n                        if ($D.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1); else\n                        {\n                            for (var i=0, _i=_node.childNodes.length; i<_i; i++)\n                                { _recursive(_node.childNodes[i]); }\n                        }\n\n                    \/\/\tend tag\n                    \/\/\t=======\n                        switch (true)\n                        {\n                            case (($D.parseOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1)):\n                                return;\n\n                            case (($D.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1)):\n                                \/* mark *\/ \t_pos__end__before = _global__the_html.length;\n                                \/* mark *\/ \t_pos__end__after = _global__the_html.length;\n                                break;\n\n                            default:\n                                \/* mark *\/ \t_pos__end__before = _global__the_html.length;\n                                \/* end *\/ \t_global__the_html += '<\/'+_tag_name+'>';\n                                \/* mark *\/ \t_pos__end__after = _global__the_html.length;\n                                break;\n                        }\n\n                    \/\/\tclean -- after\n                    \/\/\t=====\n\n                        \/\/\tlargeObject classes\n                        if (_tag_name == 'iframe' || _tag_name == 'embed' || _tag_name == 'object')\n                        {\n                            _global__the_html = ''\n                                + _global__the_html.substr(0, _pos__start__before)\n                                + '\n\n\n\n<div class=\"readableLargeObjectContainer\">'\n                                + \t_global__the_html.substr(_pos__start__before, (_pos__end__after - _pos__start__before))\n                                + '<\/div>\n\n\n\n\n'\n                            ;\n                            return;\n                        }\n\n                        \/\/\tadd image classes\n                        if (_tag_name == 'img')\n                        {\n                            _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                            if (_explored &#038;&#038; _explored._is__unskippable); else\n                            {\n                                switch (true)\n                                {\n                                    case (_explored._is__image_skip):\n                                        $D.debugOutline(_node, 'clean-after', 'skip-img');\n                                        _global__the_html = _global__the_html.substr(0, _pos__start__before);\n                                        return;\n\n                                    case (_explored._is__image_large):\n\n                                        \/\/  add float class -- for images too narrow\/tall\n                                        \/\/  remove width\/height -- only for large images\n\n                                        \/\/  http:\/\/www.wired.com\/threatlevel\/2011\/05\/gps-gallery\/?pid=89&#038;viewall=true\n                                        \/\/  http:\/\/david-smith.org\/blog\/2012\/03\/10\/ios-5-dot-1-upgrade-stats\/index.html\n                                        \/\/  http:\/\/www.turntablekitchen.com\/2012\/04\/dutch-baby-with-caramelized-vanilla-bean-pears-moving-through-the-decades\/\n\n                                        _global__the_html = ''\n                                            + _global__the_html.substr(0, _pos__start__before)\n                                            + '\n\n\n\n<div class=\"readableLargeImageContainer'\n                                            + \t(($CJ(_node).width() <= 250) &#038;&#038; ($CJ(_node).height() >= 250) ? ' float' : '')\n                                            + '\">'\n                                            + \t_global__the_html.substr(_pos__start__before, (_pos__end__after - _pos__start__before)).replace(\/width=\"([^=]+?)\"\/gi, '').replace(\/height=\"([^=]+?)\"\/gi, '')\n                                            + '<\/div>\n\n\n\n\n'\n                                        ;\n                                        return;\n                                }\n                            }\n                        }\n\n                        \/\/\tlarge images in links\n                        if (_tag_name == 'a')\n                        {\n                            _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                            switch (true)\n                            {\n                                case (_explored._count__images_large == 1):\n                                    _global__the_html = ''\n                                        + _global__the_html.substr(0, _pos__start__after-1)\n                                        + ' class=\"readableLinkWithLargeImage\">'\n                                        + \t_global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n                                        + '<\/a>'\n                                    ;\n                                    return;\n\n                                case (_explored._count__images_medium == 1):\n                                    _global__the_html = ''\n                                        + _global__the_html.substr(0, _pos__start__after-1)\n                                        + ' class=\"readableLinkWithMediumImage\">'\n                                        + \t_global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n                                        + '<\/a>'\n                                    ;\n                                    return;\n                            }\t\t\n                        }\n\n                        \/\/\ttoo much content\n                        if ($D.parseOptions._elements_too_much_content.indexOf('|'+_tag_name+'|') > -1)\n                        {\n                            _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                            if (_explored &#038;&#038; _explored._is__unskippable); else\n                            {\n                                switch (true)\n                                {\n                                    case (_tag_name == 'h1' &#038;&#038; (_explored._length__all_text > (65 * 2))):\n                                    case (_tag_name == 'h2' &#038;&#038; (_explored._length__all_text > (65 * 2 * 3))):\n                                    case ((_tag_name.match(\/^h(3|4|5|6)$\/) != null) &#038;&#038; (_explored._length__all_text > (65 * 2 * 5))):\n                                    case ((_tag_name.match(\/^(b|i|em|strong)$\/) != null) &#038;&#038; (_explored._length__all_text > (65 * 5 * 5))):\n                                        $D.debugOutline(_node, 'clean-after', 'too-much-content');\n                                        _global__the_html = ''\n                                            + _global__the_html.substr(0, _pos__start__before)\n                                            + _global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n                                        ;\n                                        return;\n                                }\n                            }\n                        }\t\t\n\n                        \/\/\tempty elements\n                        switch (true)\n                        {\n                            case (($D.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1)):\n                            case (($D.parseOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1)):\n                            case (_tag_name == 'td'):\n                                break;\n\n                            default:\n                                var _contents = _global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after));\n                                    _contents = _contents.replace(\/(<br \\\/>)\/gi, '');\n                                    _contents = _contents.replace(\/(\n\n\n\n\n<hr \\\/>\n\n\n\n)\/gi, '');\n\n                                \/\/  for rows, clear empty cells\n                                if (_tag_name == 'tr')\n                                {\n                                    _contents = _contents.replace(\/\n<td[^>]*?>\/gi, '');\n                                    _contents = _contents.replace(\/<\\\/td>\/gi, '');\n                                }\n\n                                \/\/  for tables, clear empty rows\n                                if (_tag_name == 'table')\n                                {\n                                    _contents = _contents.replace(\/\n<tr[^>]*?>\/gi, '');\n                                    _contents = _contents.replace(\/<\\\/tr>\/gi, '');\n                                }\n\n                                var _contentsLength = $D.measureText__getTextLength(_contents);\n\n                                _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                                if (_explored &#038;&#038; _explored._is__unskippable); else\n                                {\n                                    switch (true)\n                                    {\n                                        case (_contentsLength == 0 &#038;&#038; _tag_name == 'p'):\n                                            _global__the_html = _global__the_html.substr(0, _pos__start__before) + '\n\n';\n                                            return;\n\n                                        case (_contentsLength == 0):\n                                        case ((_contentsLength < 5) &#038;&#038; ($D.parseOptions._elements_visible.indexOf('|'+_tag_name+'|') > -1)):\n                                            $D.debugOutline(_node, 'clean-after', 'blank');\n                                            _global__the_html = _global__the_html.substr(0, _pos__start__before);\n                                            return;\n                                    }\n                                }\n\n                                break;\n                        }\n\n                        \/\/\ttoo much missing\n                        if ($D.parseOptions._elements_link_density.indexOf('|'+_tag_name+'|') > -1)\n                        {\n                            _explored = (_explored || $D.getContent__exploreNodeAndGetStuff(_node, true));\n                            if (_explored &#038;&#038; _explored._is__unskippable); else\n                            {\n                                var\n                                    _contents = _global__the_html\n                                                .substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n                                                    .replace(\/(<([^>]+)>)\/gi, ''),\n                                    _contentsLength = $D.measureText__getTextLength(_contents),\n                                    _initialLength = 0\n                                        + _explored._length__all_text \n                                        + (_explored._count__images_small \t\t\t\t\t* 10)\n                                        + (_explored._count__images_skip \t\t\t\t\t* 10)\n                                        + (_node.getElementsByTagName('iframe').length \t\t* 10)\n                                        + (_node.getElementsByTagName('object').length \t\t* 10)\n                                        + (_node.getElementsByTagName('embed').length \t\t* 10)\n                                        + (_node.getElementsByTagName('button').length \t\t* 10)\n                                        + (_node.getElementsByTagName('input').length \t\t* 10)\n                                        + (_node.getElementsByTagName('select').length \t\t* 10)\n                                        + (_node.getElementsByTagName('textarea').length \t* 10)\n                                ;\n\n                                \/\/\ttoo much missing\n                                switch (true)\n                                {\n                                    case (!(_contentsLength > 0)):\n                                    case (!(_initialLength > 0)):\n                                    case (!((_contentsLength \/ _initialLength) < 0.5)):\n                                    case (!(($D.language == 'cjk') &#038;&#038; (_contentsLength \/ _initialLength) < 0.1)):\n                                    case ((_global__exploreNodeToBuildHTMLFor &#038;&#038; ((_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.25))):\n                                    case (($D.language == 'cjk') &#038;&#038; (_global__exploreNodeToBuildHTMLFor &#038;&#038; ((_explored._length__plain_text \/ _global__exploreNodeToBuildHTMLFor._length__plain_text) > 0.1))):\n                                        break;\n\n                                    default:\n                                        $D.debugOutline(_node, 'clean-after', 'missing-density');\n                                        _global__the_html = _global__the_html.substr(0, _pos__start__before);\n                                        return;\n                                }\n                            }\n                        }                \n\n                    \/\/\treturn\n                        return;\n                };\n\n            \/\/\tactually do it\n            _recursive(_nodeToBuildHTMLFor);\n\n            \/\/\treturn html\n            return _global__the_html;\n        };\n\n    \/\/  build html for node }\n\n    \/\/  isolate title in html {\n    \/\/  =======================\n\n        $D.articleTitleMarker__start = '\n\n\n\n<div id=\"articleHeader\">\n\n\n\n<h1>';\n        $D.articleTitleMarker__end = '<\/h1>\n\n\n\n<\/div>\n\n\n\n\n';\n\n        $D.getContent__find__hasIsolatedTitleInHTML = function (_html)\n        {\n            return (_html.substr(0, $D.articleTitleMarker__start.length) == $D.articleTitleMarker__start);\n        };\n\n        $D.getContent__find__getIsolatedTitleInHTML = function (_html)\n        {\n            \/\/  is it there?\n            if ($D.getContent__find__hasIsolatedTitleInHTML(_html)); else { return ''; }\n\n            \/\/  regex\n            var \n                _getTitleRegex = new RegExp($D.articleTitleMarker__start + '(.*?)' + $D.articleTitleMarker__end, 'i'),\n                _getTitleMatch = _html.match(_getTitleRegex)\n            ;\n\n            \/\/  match?\n            if (_getTitleMatch); else { return ''; }\n\n            \/\/  return\n            return _getTitleMatch[1];\n        };\n\n        $D.getContent__find__isolateTitleInHTML = function (_html, _document_title)\n        {\n            \/\/  use document title\n            if ($D.$document.find('body').attr($D.parseOptions._use_document_title_attribute) == $D.parseOptions._use_document_title_attribute_value)\n                { return _html; }\n\n            \/\/  can't just use (h1|h2|h3|etc)\n            \/\/      we want to try them in a certain order\n\n            var\n                _heading_pregs = [\n                    \/<(h1)[^>]*?>([\\s\\S]+?)<\\\/\\1>\/gi,\n                    \/<(h2)[^>]*?>([\\s\\S]+?)<\\\/\\1>\/gi,\n                    \/<(h3|h4|h5|h6)[^>]*?>([\\s\\S]+?)<\\\/\\1>\/gi\n                ],\n                _secondary_headings = '|h2|h3|h4|h5|h6|',\n                _search_document_title = ' ' + _document_title.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ') + ' '\n            ;\n\n            \/\/  loop pregs\n            for (var i=0, _i=_heading_pregs.length; i<_i; i++)\n            {\n                \/\/  exec\n                var _match = _heading_pregs[i].exec(_html);\n\n                \/\/  return?\n                switch (true)\n                {\n                    case (!(_match)):\n                    case (!(_heading_pregs[i].lastIndex > -1)):\n                        \/\/  will continue loop\n                        break;\n\n                    default:\n\n                        \/\/  measurements\n                        var\n                            _heading_end_pos = _heading_pregs[i].lastIndex,\n                            _heading_start_pos = (_heading_end_pos - _match[0].length),\n\n                            _heading_type = _match[1],\n                            _heading_text = _match[2].replace(\/<\\s*br[^>]*>\/gi, '').replace(\/[\\n\\r]+\/gi, ''),\n                            _heading_text_plain = _heading_text.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ');\n                            _heading_length = $D.measureText__getTextLength(_heading_text_plain),\n                            _heading_words = [],\n\n                            _to_heading_text = _html.substr(0, _heading_start_pos),\n                            _to_heading_length = $D.measureText__getTextLength(_to_heading_text.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' '))\n                        ;\n\n                        \/\/  return?\n                        switch (true)\n                        {\n                            case (!(_heading_length > 5)):\n                            case (!(_heading_length < (65 * 3))):\n                            case (!(_to_heading_length < (65 * 3 * 2))):\n                                \/\/  will continue for loop\n                                break;\n\n                            case ((_secondary_headings.indexOf('|' + _heading_type + '|') > -1)):\n                                \/\/  words in this heading\n                                _heading_words = _heading_text_plain.split(' ');\n\n                                \/\/  count words present in title\n                                for (var j=0, _j=_heading_words.length, _matched_words=''; j<_j; j++) {\n                                    if (_search_document_title.indexOf(' ' + _heading_words[j] + ' ') > -1) {\n                                        _matched_words += _heading_words[j] + ' ';\n                                    }\n                                }\n\n                                \/\/  break continues for loop\n                                \/\/      nothing goes to switch's default\n\n                                \/\/  no break?\n                                \/\/  =========\n                                    var _no_break = false;\n                                    switch (true)\n                                    {\n                                        \/\/  if it's big enough, and it's a substring of the title, it's good\n                                        case ((_heading_length > 20) &#038;&#038; (_search_document_title.indexOf(_heading_text_plain) > -1)):\n\n                                        \/\/  if it's slightly smaler, but is exactly at the begging or the end\n                                        case ((_heading_length > 10) &#038;&#038; ((_search_document_title.indexOf(_heading_text_plain) == 1) || (_search_document_title.indexOf(_heading_text_plain) == (_search_document_title.length - 1 - _heading_text_plain.length)))):\n\n                                            _no_break = true;\n                                            break;\n                                    }\n\n                                    \/\/  break?\n                                    \/\/  ======\n                                        var _break = false;\n                                        switch (true)\n                                        {\n                                            \/\/  no break?\n                                            case (_no_break):\n                                                break;\n\n                                            \/\/ heading too long? -- if not h2\n                                            case ((_heading_length > ((_search_document_title.length - 2) * 2)) &#038;&#038; (_heading_type != 'h2')):\n\n                                            \/\/  heading long enough?\n                                            case ((_heading_length < Math.ceil((_search_document_title.length - 2) * 0.50))):\n\n                                            \/\/  enough words matched?\n                                            case ((_heading_length < 25) &#038;&#038; (_matched_words.length < Math.ceil(_heading_length * 0.75))):\n                                            case ((_heading_length < 50) &#038;&#038; (_matched_words.length < Math.ceil(_heading_length * 0.65))):\n                                            case ((_matched_words.length < Math.ceil(_heading_length * 0.55))):\n\n                                                _break = true;\n                                                break;\n                                        }\n\n                                    \/\/  break?\n                                    \/\/  ======\n                                        if (_break) { break; }\n\n                            default:\n                                \/\/  this is the title -- do isolation; return\n                                return ''\n                                    + $D.articleTitleMarker__start\n                                    +   _heading_text \n                                    + $D.articleTitleMarker__end\n                                    + $D.getContent__find__isolateTitleInHTML__balanceDivsAtStart(_html.substr(_heading_end_pos))\n                                ;\n                        }\n\n                        break;\n                }\n            }\n\n            \/\/  return unmodified\n            return _html;\n        };\n\n        $D.getContent__find__isolateTitleInHTML__balanceDivsAtStart__substrCount = function (_haystack, _needle, _offset, _length)\n        {\n            \/\/ http:\/\/kevin.vanzonneveld.net\n            \/\/ +   original by: Kevin van Zonneveld (http:\/\/kevin.vanzonneveld.net)\n            \/\/ +   bugfixed by: Onno Marsman\n            \/\/ +   improved by: Brett Zamir (http:\/\/brett-zamir.me)\n            \/\/ +   improved by: Thomas\n            \/\/ *     example 1: substr_count('Kevin van Zonneveld', 'e');\n            \/\/ *     returns 1: 3\n            \/\/ *     example 2: substr_count('Kevin van Zonneveld', 'K', 1);\n            \/\/ *     returns 2: 0\n            \/\/ *     example 3: substr_count('Kevin van Zonneveld', 'Z', 0, 10);\n            \/\/ *     returns 3: false\n\n            var cnt = 0;\n\n            _haystack += '';\n            _needle += '';\n            if (isNaN(_offset)) { _offset = 0; }\n            if (isNaN(_length)) { _length = 0; }\n            if (_needle.length == 0) { return false; }\n\n            _offset--;\n\n            while ((_offset = _haystack.indexOf(_needle, _offset + 1)) != -1) {\n                if (_length > 0 &#038;&#038; (_offset + _needle.length) > _length) {\n                    return false;\n                }\n                cnt++;\n            }\n\n            return cnt;\n        };\n\n        $D.getContent__find__isolateTitleInHTML__balanceDivsAtStart = function (_html)\n        {\n            \/\/  easy; remove all <\/X> at begining\n            var \n                _h = _html.replace(\/^(\\s*<\\s*\\\/\\s*[^>]+>)+\/gi, ''),\n                _r = \/<\\s*\\\/\\s*([^\\s>]+?)[^>]*>\/gi,\n                _the_end_tag = '<\/div>\n\n\n\n\n',\n                _the_start_tag = '\n\n<div',\n                _end_tag_pos = -1,\n                _last_pos = 0\n            ;\n\n            \/\/  remove all unbalanced _end_tags\n            for (var _i=0; _i<100; _i++)\n            {\n                _end_tag_pos = _h.indexOf(_the_end_tag, _last_pos);\n                if (_end_tag_pos > -1); else { break; }\n\n                var \n                    _sub = _h.substr(0, _end_tag_pos),\n                    _start_tags = $D.getContent__find__isolateTitleInHTML__balanceDivsAtStart__substrCount(_sub, _the_start_tag, _last_pos),\n                    _end_tags = ((_start_tags > 0) ? (1 + $D.getContent__find__isolateTitleInHTML__balanceDivsAtStart__substrCount(_sub, _the_end_tag, _last_pos)) : false)\n                ;\n\n                if ((!(_start_tags > 0)) || (_start_tags < _end_tags))\n                {\n                    _h = ''\n                        + _h.substr(0, _end_tag_pos)\n                        + _h.substr(_end_tag_pos + _the_end_tag.length)\n                    ;\n\n                    _last_pos = _end_tag_pos;\n                }\n                else\n                {\n                    _last_pos = _end_tag_pos + 1;\n                }\n            }\n\n            $D.log(_h);\n\n            return _h;\n        };\n\n    \/\/  isolate title in html }\n\n    \/\/  find in page {\n    \/\/  ==============\n\n        $D.getContent__findInPage = function (_pageWindow)\n        {\n            \/\/\tcalculations\n            \/\/\t============\n\n                var\n                    _firstCandidate = false,\n                    _secondCandidate = false,\n                    _targetCandidate = false\n                ;\n\n                $D.debugTimerStart('ExploreAndGetStuff');\n                    var\t_stuff = $D.getContent__exploreNodeAndGetStuff(_pageWindow.document.body);\n                $D.debugRemember('ExploreAndGetStuff', $D.debugTimerEnd()+'ms');\n\n                $D.debugTimerStart('ProcessFirst');\n                    var _processedCandidates = $D.getContent__processCandidates__first(_stuff._candidates);\n                    _firstCandidate = _processedCandidates[0];\n                    _targetCandidate = _firstCandidate;\n                $D.debugRemember('ProcessFirst', $D.debugTimerEnd()+'ms');\n\n                \/\/  debug\n                if ($D.debug)\n                {\n                    \/\/  debug first candidates\n                    $D.log('First 5 Main Candidates:');\n                    for (var x in _processedCandidates)\n                    {\n                        if (x == 5) { break; }\n                        $D.log(_processedCandidates[x], _processedCandidates[x].__node);\n                    }\n\n                    \/\/  highlight first\n                    $D.debugOutline(_firstCandidate.__node, 'target', 'first');\n                }\n\n                \/\/  in case we stop\n                $D.debugRemember('Target', 'first');\n\n                \/\/  do second?\n                switch (true)\n                {\n                    case (!(_firstCandidate._count__containers > 0)):\n                    case (!(_firstCandidate._count__candidates > 0)):\n                    case (!(_firstCandidate._count__pieces > 0)):\n                    case (!(_firstCandidate._count__containers > 25)):\n                        break;\n\n                    default:\n\n                        $D.debugTimerStart('ProcessSecond');\n                            var _processedCandidatesSecond = $D.getContent__processCandidates__second(_processedCandidates);\n                            _secondCandidate = _processedCandidatesSecond[0];\n                        $D.debugRemember('ProcessSecond', $D.debugTimerEnd()+'ms');\n\n                        \/\/  they're the same\n                        if (_firstCandidate.__node == _secondCandidate.__node) { break; }\n\n                        \/\/  debug\n                        if ($D.debug)\n                        {\n                            \/\/  log second candidates\n                            $D.log('First 5 Second Candidates:');\n                            for (var x in _processedCandidatesSecond)\n                            {\n                                if (x == 5) { break; }\n                                $D.log(_processedCandidatesSecond[x], _processedCandidatesSecond[x].__node);\n                            }\n\n                            \/\/  highlight second\n                            $D.debugOutline(_secondCandidate.__node, 'target', 'second');\n                        }\n\n                        \/\/  compute again\n                        \/\/  =============\n                            _firstCandidate['__points_history_final'] = $D.getContent__computePointsForCandidate__third(_firstCandidate, _firstCandidate);\n                            _firstCandidate['__points_final'] = _firstCandidate.__points_history_final[0];\n\n                            _secondCandidate['__points_history_final'] = $D.getContent__computePointsForCandidate__third(_secondCandidate, _firstCandidate);\n                            _secondCandidate['__points_final'] = _secondCandidate.__points_history_final[0];\n\n                        \/\/  log results\n                        \/\/  ===========\n                            if ($D.debug)\n                            {\n                                $D.log('The 2 Candidates:');\n                                $D.log(_firstCandidate);\n                                $D.log(_secondCandidate);\n                            }\n\n                        \/\/  are we selecting _second?\n                        \/\/  =========================\n                            switch (true)\n                            {\n                                case ((_secondCandidate.__candidate_details._count__lines_of_65_characters < 20) &#038;&#038; (_secondCandidate.__points_final \/ _firstCandidate.__points_final) > 1):\n                                case ((_secondCandidate.__candidate_details._count__lines_of_65_characters > 20) &#038;&#038; (_secondCandidate.__points_final \/ _firstCandidate.__points_final) > 0.9):\n                                case ((_secondCandidate.__candidate_details._count__lines_of_65_characters > 50) &#038;&#038; (_secondCandidate.__points_final \/ _firstCandidate.__points_final) > 0.75):\n                                    _targetCandidate = _secondCandidate;\n                                    $D.debugRemember('Target', 'second');\n                                    break;\n                            }\n\n                        \/\/  print points\n                        \/\/  ============\n                            if ($D.debug)\n                            {\n                                $D.debugRemember('PointsFirst', _firstCandidate['__points_history_final'][0].toFixed(2));\n                                $D.debugRemember('PointsSecond', _secondCandidate['__points_history_final'][0].toFixed(2));\n                            }\n\n                        break;\n                }\n\n                \/\/  highlight target\n                \/\/  ================\n                    if ($D.debug)\n                    {\n                        $CJ(_targetCandidate.__node).css({\n                            'box-shadow': \n                                'inset 0px 0px 50px rgba(255, 255, 0, 0.95), 0px 0px 50px rgba(255, 255, 0, 0.95)'\n                        });\n                    }\n\n            \/\/\tget html\n            \/\/\t========\n                $D.debugTimerStart('BuildHTML');\n                    var _html = $D.getContent__buildHTMLForNode(_targetCandidate.__node, 'the-target');\n                        _html = _html.substr((_html.indexOf('>')+1))\n                        _html = _html.substr(0, _html.lastIndexOf('<'));\n                $D.debugRemember('BuildHTML', $D.debugTimerEnd()+'ms');\n\n                $D.debugTimerStart('BuildHTMLPregs');\n                    _html = _html.replace(\/<(blockquote|div|p|td|li)([^>]*)>(\\s*<br \\\/>)+\/gi, '<$1$2>');\n                    _html = _html.replace(\/(<br \\\/>\\s*)+<\\\/(blockquote|div|p|td|li)>\/gi, '<\/$2>');\n                    _html = _html.replace(\/(<br \\\/>\\s*)+<(blockquote|div|h\\d|ol|p|table|ul|li)([^>]*)>\/gi, '<$2$3>');\n                    _html = _html.replace(\/<\\\/(blockquote|div|h\\d|ol|p|table|ul|li)>(\\s*<br \\\/>)+\/gi, '<\/$1>');\n                    _html = _html.replace(\/(\n\n\n\n\n<hr \\\/>\n\n\n\n\\s*\n\n\n\n\n<hr \\\/>\n\n\n\n\\s*)+\/gi, '\n\n\n\n\n<hr \/>\n\n\n\n\n\n');\n                    _html = _html.replace(\/(<br \\\/>\\s*<br \\\/>\\s*)+\/gi, '\n\n');\n                $D.debugRemember('BuildHTMLPregs', $D.debugTimerEnd()+'ms');\n\n            \/\/\treturn\n            \/\/\t======\n                return {\n                    '_html': _html,\n                    '_links': _stuff._links,\n                    '_targetCandidate': _targetCandidate,\n                    '_firstCandidate': _firstCandidate\n                };\n        };\n\n    \/\/  find in page }\n\n    \/\/  start {\n    \/\/  =======\n\n        $D.start = function ()\n        {\n            \/\/\tget content\n            \/\/\t===========\n                var \n                    _found = $D.getContent__findInPage($D.window),\n                    _found_links = _found._links,\n                    _targetNode = _found._targetCandidate.__node,\n                    _$targetNode = $CJ(_targetNode),\n                    _aboveNodes = []\n                ;\n\n            \/\/\tRTL\n            \/\/\t===\n                switch (true)\n                {\n                    case (_$targetNode.attr('dir') == 'rtl'):\n                    case (_$targetNode.css('direction') == 'rtl'):\n                        $D.makeRTL();\n                        break;\n                }\n\n            \/\/  get html\n            \/\/  ========\n                var \n                    _foundHTML = _found._html,\n                    _firstFragmentBeforeProcessing = $D.nextPage__getFirstFragment(_foundHTML),\n                    _documentTitle = ($D.document.title > '' ? $D.document.title : '')\n                ;\n\n            \/\/  get title\n            \/\/  =========\n\n                \/\/  has title already?\n                _foundHTML = $D.getContent__find__isolateTitleInHTML(_foundHTML, _documentTitle);\n                $D.articleTitle = $D.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                $D.debugRemember('TitleSource', 'target');\n\n                \/\/  get html above?\n                if ($D.articleTitle > ''); else\n                {\n                    \/\/  get html above target?\n                    \/\/  ======================\n\n                        \/\/  global vars:\n                        \/\/      _found\n                        \/\/      _foundHTML\n                        \/\/      _documentTitle\n                        \/\/      _aboveNodes\n\n                        var \n                            _prevNode = _found._targetCandidate.__node,\n                            _prevHTML = '',\n                            _aboveHTML = '',\n                            _differentTargets = (_found._firstCandidate.__node != _found._targetCandidate.__node)\n                        ;\n\n                        (function () \n                        {\n\n                            while (true)\n                            {\n                                \/\/  the end?\n                                switch (true)\n                                {\n                                    case (_prevNode.tagName &#038;&#038; (_prevNode.tagName.toLowerCase() == 'body')):\n                                    case (_differentTargets &#038;&#038; (_prevNode == _found._firstCandidate.__node)):\n                                        \/\/  enough is enough\n                                        return;\n                                }\n\n                                \/\/  up or sideways?\n                                if (_prevNode.previousSibling); else\n                                {\n                                    _prevNode = _prevNode.parentNode;\n                                    continue;\n                                }\n\n                                \/\/\tprevious\n                                _prevNode = _prevNode.previousSibling;\n\n                                \/\/\toutline -- element might be re-outlined, when buildHTML is invoked\n                                if ($D.debug) { $D.debugOutline(_prevNode, 'target', 'add-above'); }\n\n                                \/\/\tget html; add\n                                _prevHTML = $D.getContent__buildHTMLForNode(_prevNode, 'above-the-target');\n                                _aboveHTML = _prevHTML + _aboveHTML;\n                                _aboveNodes.unshift(_prevNode);\n\n                                \/\/  isolate title\n                                _aboveHTML = $D.getContent__find__isolateTitleInHTML(_aboveHTML, _documentTitle);\n\n                                \/\/\tfinished?\n                                switch (true)\n                                {\n                                    case ($D.measureText__getTextLength(_aboveHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ')) > (65 * 3 * 3)):\n                                    case ($D.getContent__find__hasIsolatedTitleInHTML(_aboveHTML)):\n                                        return;\n                                }\n                            }\n\n                        })();\n\n                    \/\/  is what we found any good?\n                    \/\/  ==========================\n                        switch (true)\n                        {\n                            case ($D.getContent__find__hasIsolatedTitleInHTML(_aboveHTML)):\n                            case (_differentTargets &#038;&#038; (_aboveHTML.split('<a ').length < 3) &#038;&#038; ($D.measureText__getTextLength(_aboveHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\s+\/gi, ' ')) < (65 * 3))):\n                                _foundHTML = _aboveHTML + _foundHTML;\n                                break;\n\n                            default:\n                                _aboveHTML = '';\n                                _aboveNodes = [];\n                                break;\n                        }\n\n                    \/\/  set title\n                    \/\/  =========\n\n                        $D.articleTitle = $D.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                        $D.debugRemember('TitleSource', 'above_HTML');\n\n                        \/\/  get document title?\n                        if ($D.articleTitle > ''); else\n                        {\n                            \/\/  if all else failed, get document title\n                            \/\/  ======================================\n\n                                \/\/  global vars:\n                                \/\/      _foundHTML\n                                \/\/      _documentTitle\n\n                                (function ()\n                                {\n                                    \/\/  return?\n                                    \/\/  =======\n                                        if (_documentTitle > ''); else { return; }\n\n                                    \/\/  vars\n                                        var\n                                            _doc_title_parts = [],\n                                            _doc_title_pregs =\n                                            [\n                                                \/( [-][-] |( [-] )|( [>][>] )|( [<][<] )|( [|] )|( [\\\/] ))\/i,\n                                                \/(([:] ))\/i\n                                            ]\n                                        ;\n\n                                    \/\/\tloop through pregs\n                                    \/\/  ==================\n                                        for (var i=0, _i=_doc_title_pregs.length; i<_i; i++)\n                                        {\n                                            \/\/\tsplit\n                                            _doc_title_parts = _documentTitle.split(_doc_title_pregs[i]);\n\n                                            \/\/\tbreak if we managed a split\n                                            if (_doc_title_parts.length > 1) { break; }\n                                        }\n\n                                    \/\/\tsort title parts -- longer goes higher up -- i.e. towards 0\n                                    \/\/\t================\n                                        _doc_title_parts.sort(function (a, b)\n                                        {\n                                            switch (true)\n                                            {\n                                                case (a.length > b.length): return -1;\n                                                case (a.length < b.length): return 1;\n                                                default: return 0;\n                                            }\n                                        });\n\n                                    \/\/\tset title -- first part, if more than one word; otherwise, whole\n                                    \/\/  =========\n                                        _foundHTML = ''\n                                            + $D.articleTitleMarker__start\n                                            +   (_doc_title_parts[0].split(\/\\s+\/i).length > 1 ? _doc_title_parts[0] : _documentTitle) \n                                            + $D.articleTitleMarker__end \n                                            + _foundHTML\n                                        ;\n\n                                })();\n\n                            \/\/  set title\n                            \/\/  =========\n\n                                $D.articleTitle = $D.getContent__find__getIsolatedTitleInHTML(_foundHTML);\n                                $D.debugRemember('TitleSource', 'document_title');\n                        }\n                }\n\n            \/\/\tremember\n            \/\/\t========\n                $D.debugRemember('theTarget', _found._targetCandidate.__node);\n                $D.debugRemember('firstCandidate', _found._firstCandidate.__node);\n\n            \/\/\tresult\n            \/\/  ======\n\n                $D.nextPage__firstFragment__firstPage = _firstFragmentBeforeProcessing;\n                $D.nextPage__firstFragment__lastPage = $D.nextPage__getFirstFragment(_foundHTML);\n                $D.nextPage__firstLinks = _found_links;\n\n                var\n                    _result = {\n                        '_html': _foundHTML,\n                        '_title': $D.articleTitle,\n                        '_rtl': $D.rtl\n                    }\n                ;\n\n                \/\/  add elements\n                _result['_elements'] = _aboveNodes;\n                _result['_elements'].push(_found._targetCandidate.__node);\n\n            \/\/  return\n            \/\/  ======\n                $D.callbacks.finished(_result);\n        };\n\n    \/\/  start }    \n\n    \/\/  return self\n    \/\/  ===========\n        return $D;\n}\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/*!\n *  ClearlyComponent__highlight\n *  Evernote Clearly's highlighting algorithm\/functionality as an embeddable component.\n *  Copyright 2013, Evernote Corporation\n *\n *  Usage:\n *  ======\n *\n *      \/\/ define\n *      window.ClearlyComponent__highlight = {\n *          'callbacks': {\n *              'highlightAdded': someFunction(),\n *              'highlightDeleted': someFunction(),\n *              'arbitraryRangeExclusion': someFunction()\n *          },\n *          'settings': {\n *              'imgPath': 'string',\n *              'onInsertCSSUseThisId': 'string',\n *              'highlightingEnabledCSSClass': 'string',\n *              'highlightElementCSSClass': 'string',\n *              'highlightElementIdAttribute': 'string',\n *              'highlightElementFirstCSSClass': 'string',\n *              'highlightElementLastCSSClass': 'string',\n *              'highlightElementDeleteCSSClass': 'string',\n *              'highlightElementDeleteIdPrefix': 'string',\n *              'highlightCleanHTMLElementStart': 'string',\n *              'highlightCleanHTMLElementEnd': 'string',\n *              'elementWhichMustContainAllHighlights': _dom_element,\n *              'elementsToAttachMouseHandlersTo': [\n *                  _dom_element\n *              ]\n *          },\n *          'window': window,\n *          'document': document,\n *          'jQuery': window.jQuery\n *      };\n *\n *      \/\/ init -- will return false, if something goes wrong\n *      window.ClearlyComponent__highlight = initClearlyComponent__highlight(window.ClearlyComponent__highlight);\n *\n *      \/\/  setup\n *      window.ClearlyComponent__highlight.insertCSS();\n *      window.ClearlyComponent__highlight.addMouseHandlers();\n *\n *      \/\/  enable\n *      window.ClearlyComponent__highlight.enable();\n *\n *      \/\/ publcly available\/overridable\n *      window.ClearlyComponent__highlight.debug\n *\n *\/\n\n\/*\n    changes:\n    ========\n        $R => $H\n        $R.highlight => $H.enabled\n\n    to do:\n    ======\n*\/\n\nfunction initClearlyComponent__highlight(_paramInstance)\n{\n    \/\/  global instance reference {\n    \/\/  ===========================\n\n        \/\/  null; return\n        if (_paramInstance); else { return false; }\n\n        \/\/  shorthand\n        $H = _paramInstance;\n\n    \/\/  global instance reference }\n\n    \/\/  required vars {\n    \/\/  ===============\n\n        \/\/  the component instance object must already be created,\n        \/\/  when the init function is called. it must have these vars set:\n\n        switch (true)\n        {\n            case (!($H.settings)):\n            case (!($H.settings.imgPath)):\n\n            case (!($H.window)):\n            case (!($H.document)):\n            case (!($H.document.body)):\n\n            case (!($H.jQuery)):\n\n                if ($H.debug)\n                {\n                    console.log(!($H.settings));\n                    console.log(!($H.settings.imgPath));\n\n                    console.log(!($H.window));\n                    console.log(!($H.document));\n                    console.log(!($H.document.body));\n\n                    console.log(!($H.jQuery));\n                }\n\n                \/\/  something's wrong\n                return false;\n        }\n\n    \/\/  required vars }\n\n    \/\/  missing settings {\n    \/\/  ==================\n\n        \/\/  restrictions\n        if ($H.settings.elementWhichMustContainAllHighlights); else { $H.settings.elementWhichMustContainAllHighlights = $H.document.body; }\n        if ($H.settings.elementsToAttachMouseHandlersTo); else { $H.settings.elementsToAttachMouseHandlersTo = [$H.document.body]; }\n\n        \/\/  names for stuff\n        \/* css id *\/            if ($H.settings.onInsertCSSUseThisId); else             { $H.settings.onInsertCSSUseThisId =            'clearly_highlighting_css'; }\n        \/* enabled *\/           if ($H.settings.highlightingEnabledCSSClass); else      { $H.settings.highlightingEnabledCSSClass =     'clearly_highlighting_enabled'; }\n        \/* element id *\/        if ($H.settings.highlightElementIdAttribute); else      { $H.settings.highlightElementIdAttribute =     'clearly_highlight_id'; }\n        \/* element class *\/     if ($H.settings.highlightElementCSSClass); else         { $H.settings.highlightElementCSSClass =        'clearly_highlight_element'; }\n        \/* element (first) *\/   if ($H.settings.highlightElementFirstCSSClass); else    { $H.settings.highlightElementFirstCSSClass =   'clearly_highlight_first'; }\n        \/* element (first) *\/   if ($H.settings.highlightElementLastCSSClass); else     { $H.settings.highlightElementLastCSSClass =    'clearly_highlight_last'; }\n        \/* delete class *\/      if ($H.settings.highlightElementDeleteCSSClass); else   { $H.settings.highlightElementDeleteCSSClass =  'clearly_highlight_delete_element'; }\n        \/* delete id prefix *\/  if ($H.settings.highlightElementDeleteIdPrefix); else   { $H.settings.highlightElementDeleteIdPrefix =  'clearly_highlight_delete__'; }\n        \/* clean html start *\/  if ($H.settings.highlightCleanHTMLElementStart); else   { $H.settings.highlightCleanHTMLElementStart =  '<span style=\"-evernote-highlighted:true; background-color:#f6ee96\">'; }\n        \/* clean html end *\/    if ($H.settings.highlightCleanHTMLElementEnd); else     { $H.settings.highlightCleanHTMLElementEnd =    '<\/span>'; }\n\n    \/\/  missing settings }\n\n    \/\/  global vars {\n    \/\/  =============\n\n        $CJ = $H.jQuery;\n\n        $H.$window = $CJ($H.window);\n        $H.$document = $CJ($H.document);\n        $H.$html = $H.$document.find('html');\n        $H.$elementWhichMustContainAllHighlights = $CJ($H.settings.elementWhichMustContainAllHighlights);\n\n        $H.enabled = false;\n\n    \/\/  global vars }\n\n    \/\/  parse options {\n    \/\/  ===============   \n\n\t\t$H.parseOptions =\n\t\t{\n\t\t\t'_elements_ignore': \t\t\t        '|button|input|select|textarea|optgroup|command|datalist|--|frame|frameset|noframes|--|style|link|script|noscript|--|canvas|applet|map|--|marquee|area|base|',\n\t\t\t'_elements_ignore_tag': \t\t        '|form|fieldset|details|dir|--|center|font|span|',\n\n\t\t\t'_elements_container': \t\t\t        '|body|--|article|section|--|div|--|td|--|li|--|dd|dt|',\n            '_elements_self_closing': \t\t        '|br|hr|--|img|--|col|--|source|--|embed|param|--|iframe|',\n\n            '_elements_highlight_protect':          '|video|audio|source|--|object|param|embed|',\n\n            '_elements_keep_attributes':\n\t\t\t{\n\t\t\t\t'a': \t\t['href', 'title', 'name'],\n\t\t\t\t'img': \t\t['src', 'width', 'height', 'alt', 'title'],\n\n\t\t\t\t'video': \t['src', 'width', 'height', 'poster', 'audio', 'preload', 'autoplay', 'loop', 'controls'],\n\t\t\t\t'audio': \t['src', 'preload', 'autoplay', 'loop', 'controls'],\t\t \n\t\t\t\t'source': \t['src', 'type'],\n\n\t\t\t\t'object': \t['data', 'type', 'width', 'height', 'classid', 'codebase', 'codetype'],\t\t\t\t\t\t\n\t\t\t\t'param': \t['name', 'value'],\n\t\t\t\t'embed': \t['src', 'type', 'width', 'height', 'flashvars', 'allowscriptaccess', 'allowfullscreen', 'bgcolor'],\n\n\t\t\t\t'iframe':\t['src', 'width', 'height', 'frameborder', 'scrolling'],\n\n\t\t\t\t'td':\t\t['colspan', 'rowspan'],\t\t\t\n\t\t\t\t'th':\t\t['colspan', 'rowspan']\n\t\t\t}\n\n\t\t};\n\n    \/\/  parse options }\n\n    \/\/  debug {\n    \/\/  =======\n\n        $H.debug = ($H.debug || false);\n\n\t\tif ($H.debug)\n\t\t{\n\t\t    \/\/  writeLog\n\t\t    \/\/  ========\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (!(!($H.window.console &#038;&#038; $H.window.console.log))):    $H.writeLog = function (msg) { $H.window.console.log(msg); };       break;\n\t\t\t\t\tcase (!(!($H.window.opera &#038;&#038; $H.window.opera.postError))):  $H.writeLog = function (msg) { $H.window.opera.postError(msg); };   break;\n\t\t\t\t\tdefault:                                                    $H.writeLog = function (msg) {};                                    break;\n\t\t\t\t}\n\n            \/\/  log\n            \/\/  ===\n                $H.log = function ()\n                {\n                    if ($H.debug); else { return; }\n                    for (var i=0, il=arguments.length; i<il ; i++) { $H.writeLog(arguments[i]); }\n                    $H.writeLog('-----------------------------------------');\n                };\n\t\t}\n\t\telse\n\t\t{\n            $H.writeLog \t\t= function () { return false; };\n            $H.log \t\t\t\t= function () { return false; };\n        }\n\n    \/\/  debug }\n\n    \/\/  insert css {\n    \/\/  ============\n\n        $H.insertCSS = function ()\n        {\n            var _cssText = ''\n            +   '\/* selection *\/ '\n            +   'html.'+$H.settings.highlightingEnabledCSSClass+' ::-moz-selection { background: rgba(246, 238, 150, 0.99); } '\n            +   'html.'+$H.settings.highlightingEnabledCSSClass+' ::selection { background: rgba(246, 238, 150, 0.99); } '\n\n            +   '\/* cursor *\/ '\n            +   'html.'+$H.settings.highlightingEnabledCSSClass+' { '\n            +   '   \/* cursor and hot-spot position -- requires a default cursor, after the URL one *\/ '\n            +   '} '\n\n            +   '\/* highlight tag *\/ '\n            +   'em.'+$H.settings.highlightElementCSSClass+' { '\n            +   '   font-style: inherit !important; font-weight: inherit !important; '\n            +   '   background-repeat: repeat-x; background-position: top left; background-size: 100% 100%; '\n            +   '} '\n            +   '\/* the delete-buttons are positioned relative to this *\/ '\n            +   'em.'+$H.settings.highlightElementCSSClass+'.'+$H.settings.highlightElementFirstCSSClass+' { position: relative; } '\n\n            +   '\/* delete buttons *\/ '\n            +   'em.'+$H.settings.highlightElementCSSClass+' a.'+$H.settings.highlightElementDeleteCSSClass+' { '\n            +   '   display: none; cursor: pointer; '\n            +   '   padding: 0; margin: 0; line-height: 0; '\n            +   '   position: absolute; width: 34px; height: 34px; left: -17px; top: -17px; '\n            +   '} '\n            +   'em.'+$H.settings.highlightElementCSSClass+' a.'+$H.settings.highlightElementDeleteCSSClass+':hover { background-position: -34px 0px; } '\n            ;\n\n            \/\/  create\n            var _cssElement = $H.document.createElement('style');\n            _cssElement.setAttribute('id', $H.settings.onInsertCSSUseThisId);\n            _cssElement.setAttribute('type', 'text\/css');\n            if (_cssElement.styleSheet) { _cssElement.styleSheet.cssText = _cssText; }\n                else { _cssElement.appendChild($H.document.createTextNode(_cssText)); }\n\n            \/\/  append\n            $H.$document.find('head').append(_cssElement);\n        };\n\n    \/\/  insert css }\n\n    \/\/  selection {\n    \/\/  ===========\n\n        $H.sel = {};\n\n        $H.sel.getWindowFromDocument = function (theDocument)\n        {\n            if (theDocument); else { return null; }\n\n            if ('defaultView' in theDocument) {\n                arguments.calee = function (theDocument) {\n                    if (theDocument); else { return null; }\n                    return theDocument.defaultView;\n                };\n            }\n            else if ('parentWindow' in theDocument) {\n                arguments.calee = function (theDocument) {\n                    if (theDocument); else { return null; }\n                    return theDocument.parentWindow;\n                };\n            }\n            else {\n                arguments.calee = function (theDocument) {\n                    return null;\n                };\n            }\n\n            return arguments.calee(theDocument);\n        };\n\n        $H.sel.getSelection = function (theWindow)\n        {\n            if (theWindow); else { return null; }\n\n            if ('getSelection' in theWindow) {\n                arguments.calee = function (theWindow) {\n                    if (theWindow); else { return null; }\n                    return theWindow.getSelection();\n                };\n            }\n            else if ('selection' in theWindow.document) {\n                arguments.calee = function (theWindow) {\n                    if (theWindow); else { return null; }\n                    return theWindow.document.selection;\n                };\n            }\n            else {\n                arguments.calee = function (theWindow) {\n                    return null;\n                };\n            }\n\n            return arguments.calee(theWindow);\n        };\n\n        $H.sel.getRange = function (selection)\n        {\n            if (selection); else { return null; }\n\n            if ('getRangeAt' in selection) {\n                arguments.calee = function (selection) {\n                    if (selection); else { return null; }\n                    if (selection.rangeCount > 0) { return selection.getRangeAt(0); }\n                    else { return null; }\n                    \/\/\tdoesn't work in old versions of safari \n                    \/\/\t... I don't care\n                };\n            }\n            else if ('createRange' in selection) {\n                arguments.calee = function (selection) {\n                    if (selection); else { return null; }\n                    return selection.createRange();\n                };\n            }\n            else {\n                arguments.calee = function (selection) {\n                    return null;\n                };\n            }\n\n            return arguments.calee(selection);\n        };\n\n        $H.sel.getRangeHTML = function (range)\n        {\n            if (range); else { return null; }\n\n            if ('htmlText' in range) {\n                arguments.calee = function (range) {\n                    if (range); else { return null; }\n                    return range.htmlText;\n                };\n            }\n            else if ('surroundContents' in range) {\n                arguments.calee = function (range) {\n\n                    if (range); else { return null; }\n                    if (range.commonAncestorContainer &#038;&#038; range.commonAncestorContainer.ownerDocument); else { return null; }\n\n                    var dummy = range.commonAncestorContainer.ownerDocument.createElement(\"div\");\n                    dummy.appendChild(range.cloneContents());\n                    return dummy.innerHTML;\n                };\n            }\n            else {\n                arguments.calee = function (range) {\n                    return null;\n                };\n            }\n\n            return arguments.calee(range);\n        };\n\n        $H.sel.getRangeText = function (range)\n        {\n            if (range); else { return null; }\n\n            if ('text' in range) {\n                arguments.calee = function (range) {\n                    if (range); else { return null; }\n                    return range.text;\n                };\n            }\n            else if ('surroundContents' in range) {\n                arguments.calee = function (range) {\n\n                    if (range); else { return null; }\n                    if (range.commonAncestorContainer &#038;&#038; range.commonAncestorContainer.ownerDocument); else { return null; }\n\n                    var dummy = range.commonAncestorContainer.ownerDocument.createElement(\"div\");\n                    dummy.appendChild(range.cloneContents());\n                    return dummy.textContent;\n                };\n            }\n            else {\n                arguments.calee = function (range) {\n                    return null;\n                };\n            }\n\n            return arguments.calee(range);\n        };\n\n    \/\/  selection }\n\n    \/\/  helpers {\n    \/\/  =========\n\n        $H.rand = function (_min, _max)\n        {\n            return (Math.floor(Math.random() * (_max - _min + 1)) + _min);\n        };\n\n        $H.highlight__deleteSpansFromParents = function (_parents)\n        {\n            var _done = [], _this_done = false, _inner = '';\n\n            \/\/  main loop\n            for (var i=0, _i=_parents.length; i<_i; i++)\n            {\n                \/\/  init\n                _this_done = false;\n\n                \/\/  check\n                for (var ii=0, _ii=_done.length; ii<_ii; ii++)\n                {\n                    if (_done[ii] == _parents[i])\n                    {\n                        _this_done = true;\n                        break;\n                    }\n                }    \n\n                \/\/  skip\n                if (_this_done) { continue; }\n\n                \/\/  actually do\n                \/\/  ===========\n\n                    \/\/  add\n                    _done.push(_parents[i]);\n\n                    \/\/  get\n                    _inner = _parents[i].innerHTML;\n\n                    \/\/  check\n                    if (_inner.indexOf('<span') > -1); else { continue; }\n\n                    \/\/  replace\n                    _inner = _inner.replace(\/<span([^>]*?)>\/gi, '');\n                    _inner = _inner.replace(\/<\\\/span>\/gi, '');\n                    _parents[i].innerHTML = _inner;\n            }\n        };\n\n        $H.highlight__getDeepestTextNode = function (_node)\n        {\n            var _n = _node;\n\n            while (true)\n            {\n                switch (true)\n                {\n                    \/\/  text\n                    case (_n.nodeType &#038;&#038; _n.nodeType == 3): return _n;\n\n                    \/\/  single child\n                    case (_n.nodeType &#038;&#038; _n.nodeType == 1 &#038;&#038; _n.childNodes.length > 0): _n = _n.childNodes[0]; break;\n\n                    \/\/  no children but has sibling\n                    case (_n.nodeType &#038;&#038; _n.nodeType == 1 &#038;&#038; _n.childNodes.length == 0 &#038;&#038; _n.nextSibling): _n = _n.nextSibling; break;\n\n                    \/\/  default\n                    default: return _node;\n                }\n            }\n        };\n\n        $H.highlight__getCommonAncestorContainerForNodes = function (_node1, _node2, _fallback)\n        {\n            var _parent1 = _node1, _parent2 = _node2;\n\n            while (true)\n            {\n                \/\/  next\n                _parent1 = _parent1.parentNode;\n                _parent2 = _parent2.parentNode;\n\n                \/\/  break\n                switch (true)\n                {\n                    case (!(_parent1)):\n                    case (!(_parent2)):\n                    case (_parent1 == _fallback):\n                    case (_parent2 == _fallback):\n                        return _fallback;\n                }\n\n                \/\/  maybe\n                switch (true)\n                {\n                    case (_parent1 == _parent2): return _parent1;\n\n                    case ($CJ.contains(_parent1, _node2)): return _parent1;\n                    case ($CJ.contains(_parent2, _node1)): return _parent2;\n\n                    case ($CJ.contains(_parent1, _parent2)): return _parent1;\n                    case ($CJ.contains(_parent2, _parent1)): return _parent2;\n                }\n            }\n        };\n\n        $H.highlight__getParentElementOfNode = function (_thisNode)\n        {\n            var _element = _thisNode;\n            while (true) {\n                \/\/  correct\n                if (_element.nodeType == 1) { break; }\n\n                \/\/  continue\n                _element = _element.parentNode;\n            }\n            return _element;\n        };\n\n        $H.highlight__getParentElementOfNodeWithThisParent = function (_thisNode, _thisParent)\n        {\n            \/\/  impossible\n            switch (true)\n            {\n                case (_thisNode == _thisParent):\n                    return _thisNode;\n\n                case (!($CJ.contains(_thisParent, _thisNode))):  \/\/ always false in IE\n                    \/\/return _thisNode;\n            }\n\n            \/\/  do\n            var _element = _thisNode;\n            while (true) {\n                \/\/  correct\n                if (_element.parentNode == _thisParent) { break; }\n\n                \/\/  continue\n                _element = _element.parentNode;\n            }\n            return _element;\n        };\n\n    \/\/  helpers }\n\n    \/\/  build html for element with selected range {\n    \/\/  ============================================\n\n        $H.highlight__buildHTMLForElementWithSelectedRange = function (_elementToBuildHTMLFor, _modeToBuildHTMLIn, _rangeToBuildHTMLWith)\n        {\n            var \n                _global__element_index = 0,\n                _global__the_html = '',\n                _global__highlight_on = ((_modeToBuildHTMLIn == 'boundry-end') ? true : false)\n            ;\n\n            \/\/\trecursive function\n            \/\/\t==================\n                var _recursive = function (_node)\n                {\n                    \/\/\tincrement index -- starts with 1\n                    \/\/\t===============\n                        _global__element_index++;\n\n                    \/\/\tvars\n                    \/\/\t====\n                        var \n                            _explored = false,\n                            _tag_name = (_node.nodeType === 3 ? '#text' : ((_node.nodeType === 1 &#038;&#038; _node.tagName &#038;&#038; _node.tagName > '') ? _node.tagName.toLowerCase() : '#invalid')),\n                            _tag_is_ignored = ($H.parseOptions._elements_ignore_tag.indexOf('|'+_tag_name+'|') > -1),\n                            _tag_is_ignored = (_tag_is_ignored ? ((_tag_name == 'span') ? false : true) : false),\n                            _pos__start__before = 0,\n                            _pos__start__after = 0,\n                            _pos__end__before = 0,\n                            _pos__end__after = 0,\n                            _to_write = '',\n                            _selection_starts_here = false,\n                            _selection_ends_here = false\n                        ;\n\n                    \/\/\tfast return\n                    \/\/\t===========\n                        switch (true)\n                        {\n                            case ((_tag_name == '#invalid')):\n                            case (($H.parseOptions._elements_ignore.indexOf('|'+_tag_name+'|') > -1)):\n                                return;\n\n                            case (_tag_name == '#text'):\n                                \/\/  get value\n                                \/\/  =========\n                                    _to_write = _node.nodeValue.replace(\/<\/gi, '&lt;').replace(\/>\/gi, '&gt;');\n\n                                \/\/  mode?\n                                \/\/  =====\n                                    switch (true)\n                                    {\n                                        case (_modeToBuildHTMLIn == 'nothing'):\n                                            break;\n\n                                        case (_modeToBuildHTMLIn == 'everything'):\n                                            _to_write = ''\n                                                + '<highlight>' \n                                                +   _to_write \n                                                + '<\/highlight>'\n                                            ;\n                                            break;\n\n                                        case (_modeToBuildHTMLIn == 'boundry-start'):\n                                        case (_modeToBuildHTMLIn == 'boundry-end'):\n                                        case (_modeToBuildHTMLIn == 'boundry-both'):\n\n                                            \/\/  end of range?\n                                            \/\/  =============\n                                                if (_node == _rangeToBuildHTMLWith.endContainer)\n                                                {\n                                                    _to_write = ''\n                                                        + '<highlight>'\n                                                        +   _to_write.substr(0, _rangeToBuildHTMLWith.endOffset)\n                                                        + '<\/highlight>'\n                                                        + _to_write.substr(_rangeToBuildHTMLWith.endOffset)\n                                                    ;\n\n                                                    _global__highlight_on = false;\n                                                    _selection_ends_here = true;\n                                                }\n\n                                            \/\/  start of range?\n                                            \/\/  ===============\n                                                if (_node == _rangeToBuildHTMLWith.startContainer)\n                                                {\n                                                    _to_write = ''\n                                                        + _to_write.substr(0, _rangeToBuildHTMLWith.startOffset)\n                                                        + '<highlight>'\n                                                        +   _to_write.substr(_rangeToBuildHTMLWith.startOffset)\n                                                        + '<\/highlight>'  \n                                                    ;\n\n                                                    _global__highlight_on = true;\n                                                    _selection_starts_here = true;\n                                                }\n\n                                            \/\/  correction\n                                            \/\/  ==========\n                                                if (_selection_starts_here &#038;&#038; _selection_ends_here)\n                                                {\n                                                    _to_write = _node.nodeValue.replace(\/<\/gi, '&lt;').replace(\/>\/gi, '&gt;');\n                                                    _to_write = ''\n                                                        + _to_write.substr(0, _rangeToBuildHTMLWith.startOffset)\n                                                        + '<highlight>'\n                                                        +   _to_write.substr(_rangeToBuildHTMLWith.startOffset, (_rangeToBuildHTMLWith.endOffset - _rangeToBuildHTMLWith.startOffset))\n                                                        + '<\/highlight>'\n                                                        + _to_write.substr(_rangeToBuildHTMLWith.endOffset)\n                                                    ;\n\n                                                    _global__highlight_on = false;\n                                                }\n\n                                            \/\/  snap-to\n                                            \/\/  =======\n                                                if (_selection_starts_here &#038;&#038; (_rangeToBuildHTMLWith.startOffset > 0))\n                                                {\n                                                    \/\/  before\n                                                    _to_write = _to_write.replace(\/([ .,;?!])([a-z0-9]{1,2})<highlight>\/gi, '$1<highlight>$2');\n\n                                                    \/\/  space at begining\n                                                    _to_write = _to_write.replace(\/<highlight>([\\s])([^\\s])\/gi, '$1<highlight>$2');\n\n                                                    \/\/  too much\n                                                    _to_write = _to_write.replace(\/<highlight>([a-z0-9])([ ])([a-z0-9])\/gi, '$1$2<highlight>$3');\n                                                }\n\n                                                if (_selection_ends_here &#038;&#038; (_rangeToBuildHTMLWith.endOffset > 0))\n                                                {\n                                                    var _do_end = true;\n\n                                                    if (_rangeToBuildHTMLWith.endContainer &#038;&#038; _rangeToBuildHTMLWith.endContainer.nodeValue &#038;&#038; _rangeToBuildHTMLWith.endContainer.nodeValue.length)\n                                                        { _do_end = (_rangeToBuildHTMLWith.endOffset < _rangeToBuildHTMLWith.endContainer.nodeValue.length); }\n\n                                                    if (_do_end)\n                                                    {\n                                                        \/\/  after\n                                                        _to_write = _to_write.replace(\/<\\\/highlight>([a-z0-9]{0,2})([ .,;?!])\/gi, '$1$2<\/highlight>');\n\n                                                        \/\/  space at end\n                                                        _to_write = _to_write.replace(\/([^\\s])([\\s])<\\\/highlight>\/gi, '$1<\/highlight>$2');\n\n                                                        \/\/  too much\n                                                        _to_write = _to_write.replace(\/([ ])([a-z0-9])<\\\/highlight>([a-z0-9])\/gi, '<\/highlight>$1$2$3');\n                                                    }\n                                                }\n\n                                            \/\/  other\n                                            \/\/  =====\n                                                if (!(_selection_starts_here) &#038;&#038; !(_selection_ends_here))\n                                                {\n                                                    _to_write = _node.nodeValue.replace(\/<\/gi, '&lt;').replace(\/>\/gi, '&gt;');\n                                                    if (_global__highlight_on)\n                                                    {\n                                                        _to_write = ''\n                                                            + '<highlight>' \n                                                            +   _to_write \n                                                            + '<\/highlight>'\n                                                        ;\n                                                    }\n                                                }\n\n                                            break;\n                                    }\n\n                                \/\/  write value\n                                \/\/  ===========\n                                    _global__the_html += _to_write;\n\n                                return;\n                        }\n\n                    \/\/  range anchors are elements instead of text-nodes\n                    \/\/  ================================================\n\n                        \/\/  end of range?\n                        if ((_rangeToBuildHTMLWith.endContainer.nodeType == 1) &#038;&#038; (_node == _rangeToBuildHTMLWith.endContainer)) {\n                            _global__highlight_on = false;\n                            _selection_ends_here = true;\n                        }\n\n                        \/\/  start of range?\n                        if ((_rangeToBuildHTMLWith.startContainer.nodeType == 1) &#038;&#038; (_node == _rangeToBuildHTMLWith.startContainer)) {\n                            _global__highlight_on = true;\n                            _selection_starts_here = true;\n                        }\n\n                        \/\/  correction\n                        if (_selection_starts_here &#038;&#038; _selection_ends_here) {\n                            _global__highlight_on = false;\n                        }\n\n                    \/\/\tstart tag\n                    \/\/\t=========\n                        if (_tag_is_ignored); else\n                        {\n                            \/* mark *\/\t_pos__start__before = _global__the_html.length;\n                            \/* add *\/\t_global__the_html += '<'+_tag_name;\n\n                            \/\/\tattributes\n                            \/\/\t==========\n\n                                \/\/\tallowed attributes\n                                if (_tag_name in $H.parseOptions._elements_keep_attributes)\n                                {\n                                    for (var i=0, _i=$H.parseOptions._elements_keep_attributes[_tag_name].length; i<_i; i++)\n                                    {\n                                        var \n                                            _attribute_name = $H.parseOptions._elements_keep_attributes[_tag_name][i],\n                                            _attribute_value = _node.getAttribute(_attribute_name)\n                                        ;\n\n                                        \/\/\tif present\n                                        if (_attribute_value > '')\n                                            { _global__the_html += ' '+_attribute_name+'=\"'+(_attribute_value)+'\"'; }\n                                    }\n                                }\n\n                                \/\/\tkeep ID for all elements\n                                var _id_attribute = _node.getAttribute('id');\n                                if (_id_attribute > '')\n                                    { _global__the_html += ' id=\"'+_id_attribute+'\"'; }\n\n                                \/\/\tlinks target NEW\n                                if (_tag_name == 'a')\n                                    { _global__the_html += ' target=\"_blank\"'; }\n\n                            \/\/  add class name\n                            \/\/  ==============\n                                var _class_attribute = _node.getAttribute('class');\n                                if (_class_attribute > '')\n                                    { _global__the_html += ' class=\"'+_class_attribute+'\"'; }\n\n                            \/\/  add highlight id -- for EMs that are outside the global highlight\n                            \/\/  ================\n                                if (_tag_name == 'em' &#038;&#038; _modeToBuildHTMLIn != 'everything')\n                                {\n                                    \/\/  with a fix for when an em is the first thing inside a parent element\n\n                                    switch (true)\n                                    {\n                                        case (_global__highlight_on):\n                                        case ((_rangeToBuildHTMLWith.startOffset == 0) &#038;&#038; (_node.firstChild) &#038;&#038; (_node.firstChild == _rangeToBuildHTMLWith.startContainer)):\n                                            break;\n\n                                        default:\n                                            var _highlight_id_attribute = _node.getAttribute($H.settings.highlightElementIdAttribute);\n                                            if (_highlight_id_attribute > '')\n                                                { _global__the_html += ' '+$H.settings.highlightElementIdAttribute+'=\"'+_highlight_id_attribute+'\"'; }\n                                            break;\n                                    }\n                                }\n\n                            \/\/\tclose start\n                            \/\/\t===========\n                                if ($H.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1) { _global__the_html += ' \/>'; }\n                                else { _global__the_html += '>';}\n\n                            \/* mark *\/ _pos__start__after = _global__the_html.length;\n                        }\n\n                    \/\/\tchild nodes\n                    \/\/\t===========\n                        if ($H.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1); else\n                        {\n                            for (var i=0, _i=_node.childNodes.length; i<_i; i++)\n                                { _recursive(_node.childNodes[i]); }\n                        }\n\n                    \/\/\tend tag\n                    \/\/\t=======\n                        switch (true)\n                        {\n                            case (_tag_is_ignored):\n                                return;\n\n                            case (($H.parseOptions._elements_self_closing.indexOf('|'+_tag_name+'|') > -1)):\n                                \/* mark *\/ \t_pos__end__before = _global__the_html.length;\n                                \/* mark *\/ \t_pos__end__after = _global__the_html.length;\n                                break;\n\n                            default:\n                                \/* mark *\/ \t_pos__end__before = _global__the_html.length;\n                                \/* end *\/ \t_global__the_html += '<\/'+_tag_name+'>';\n                                \/* mark *\/ \t_pos__end__after = _global__the_html.length;\n                                break;\n                        }\n\n                    \/\/  protected elements\n                    \/\/  ==================\n                        switch (true)\n                        {\n                            \/\/  some elemnts are protected from highlighting\n                            case (($H.parseOptions._elements_highlight_protect.indexOf('|'+_tag_name+'|') > -1)):\n                            case ((_tag_name == 'em') &#038;&#038; $CJ(_node).hasClass($H.settings.highlightElementCSSClass)):\n\n                                \/\/  so, if highlights are inside an already highlighted element --or an unhighlightable one-- remove\n\n                                _global__the_html = ''\n                                    + _global__the_html.substr(0, _pos__start__after)\n                                    +   _global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n                                            .replace(\/<highlight>\/gi, '')\n                                            .replace(\/<\\\/highlight>\/gi, '')\n                                    + _global__the_html.substr(_pos__end__before)\n                                ;\n\n                                break;\n\n                            \/\/  some elements are invalid completely\n                            case ((_tag_name == 'a') &#038;&#038; (_node.className == 'deleteHighlight')):\n\n                                _global__the_html = ''\n                                    + _global__the_html.substr(0, _pos__start__before)\n                                    + _global__the_html.substr(_pos__end__after)\n                                ;\n\n                                break;\n\n                            \/\/  some elements need to have their tags ignored\n                            \/*case (_tag_name == 'span'):\n\n                                _global__the_html = ''\n                                    + _global__the_html.substr(0, _pos__start__before)\n                                    + _global__the_html.substr(_pos__start__after, (_pos__end__before - _pos__start__after))\n                                    + _global__the_html.substr(_pos__end__after)\n                                ;\n\n                                break;*\/\n                        }\n\n                    \/\/\treturn\n                        return;\n                };\n\n            \/\/\tactually do it\n            _recursive(_elementToBuildHTMLFor);\n\n            \/\/  use em, instead of highlight\n            _global__the_html = _global__the_html\n                .replace(\/<highlight>\/gi, '<em class=\"'+$H.settings.highlightElementCSSClass+'\">')\n                .replace(\/<\\\/highlight>\/gi, '<\/em>')\n            ;\n\n            \/\/\treturn\n            return _global__the_html;\n        };    \n\n    \/\/  build html for element with selected range }\n\n    \/\/  do range {\n    \/\/  ==========\n\n        $H.highlight__doRange = function (_range_to_highlight)\n        {\n            \/\/  get referrence elements\n            var\n                _commonAncestorElement = $H.highlight__getParentElementOfNode(_range_to_highlight.commonAncestorContainer),\n                _startElement = $H.highlight__getParentElementOfNodeWithThisParent(_range_to_highlight.startContainer, _commonAncestorElement),\n                _endElement = $H.highlight__getParentElementOfNodeWithThisParent(_range_to_highlight.endContainer, _commonAncestorElement)\n            ;\n\n            \/\/  range not in container element\n            if (true\n                &#038;&#038; (_commonAncestorElement.tagName) \n                &#038;&#038; !($CJ.contains($H.settings.elementWhichMustContainAllHighlights, _commonAncestorElement))\n            ) {\n                return false;\n            }\n\n            \/\/  arbitrary range exclusion\n            if ($H.callbacks.arbitraryRangeExclusion) {\n                if ($H.callbacks.arbitraryRangeExclusion(_range_to_highlight, _commonAncestorElement, _startElement, _endElement) === false) {\n                    return false;\n                }\n            }\n\n            \/* $H.log(\n                _range.startContainer, _range.endContainer, _range.startOffset, _range.endOffset, \n                _range_to_highlight, \n                _commonAncestorElement, _startElement, _endElement\n            ); *\/\n\n            \/\/  selection id\n            var _selection_id = $H.rand(1, 1000);\n            while (true)\n            {\n                \/\/  nothing found\n                if ($H.$elementWhichMustContainAllHighlights.find('em.'+$H.settings.highlightElementCSSClass+'['+$H.settings.highlightElementIdAttribute+'=\"'+_selection_id+'\"]').length > 0); else { break; }\n\n                \/\/  new id\n                _selection_id = $H.rand(1, 1000);\n            }\n\n            \/\/  chainging elements\n            \/\/  ==================\n\n                var _chaingingElements = [], _currElement = _startElement, _currChainging = false;\n\n                while (true)\n                {\n                    \/\/  object\n                    _currChainging = {\n                        '_element': _currElement,\n                        '_tagName': (_currElement.nodeType === 3 ? '#text' : ((_currElement.nodeType === 1 &#038;&#038; _currElement.tagName &#038;&#038; _currElement.tagName > '') ? _currElement.tagName.toLowerCase() : '#invalid'))\n                    };\n\n                    \/\/  add\n                    _chaingingElements.push(_currChainging);\n\n                    \/\/  break\n                    if (_currElement == _endElement) { break; }\n\n                    \/\/  next\n                    _currElement = _currElement.nextSibling;\n\n                    \/\/  error?\n                    if (_currElement); else { break; }\n                }\n\n            \/\/  rewrite elements\n            \/\/  ================\n                var _parents_to_clean = [];\n                for (var i=0, _i=_chaingingElements.length, _currElement=false; i<_i; i++)\n                {\n                    var \n                        _currElement = _chaingingElements[i],\n                        _currNode = _currElement._element,\n                        _currTag = _currElement._tagName,\n                        _boundry_mode = '',\n                        _currBuiltHTML = false,\n                        _resNode = false\n                    ;\n\n                    \/\/  get html \/ mode\n                    \/\/  ===============\n                        switch (true)\n                        {\n                            case ((_i == 1) &#038;&#038; (i == 0)):       _boundry_mode = 'boundry-both';     break;\n                            case ((_i > 1) &#038;&#038; (i == 0)):        _boundry_mode = 'boundry-start';    break;\n                            case ((_i > 1) &#038;&#038; (i == (_i-1))):   _boundry_mode = 'boundry-end';      break;\n                            default:                            _boundry_mode = 'everything';       break;\n                        }\n\n                    \/\/  get html\n                    \/\/  ========\n                        _currBuiltHTML = $H.highlight__buildHTMLForElementWithSelectedRange(_currNode, _boundry_mode, _range_to_highlight);\n\n                    \/\/  write\n                    \/\/  =====\n                        switch (true)\n                        {\n                            case ((_currTag == '#text')):\n\n                                \/\/  resulting html might be something like \"<em>something<\/em> something else\"\n                                \/\/  so we create a dummy span tag to eomcompass it, and then repalce the old text node with that\n\n                                \/\/  create\n                                var _newElement = $H.document.createElement('span');\n                                    _newElement.innerHTML = _currBuiltHTML;\n\n                                \/\/  result\n                                _resNode = _newElement;\n\n                               \/* with (Evernote.evernotePopup) {\n                                    console.log(' ~~~ highlight.js gadit before |'  + docSelection + \"|\");\n                                    console.log(' ~~~ from ' +docSelection.startOffset + ' to  ' + docSelection.endOffset);\n                                }*\/\n\n                                Evernote.Utils.sendMessageToPopup('highlightDomChangesStart');\n                                \/\/  replace\n                                _currNode.parentNode.replaceChild(_resNode, _currNode);\n\n                                Evernote.Utils.sendMessageToPopup('highlightDomChangesEnd');\n\/*\n                                with (Evernote.evernotePopup) {\n                                    console.log(' ~~~ highlight.js nagadil |'  + docSelection + \"|\");\n                                    console.log(' ~~~ from ' +docSelection.startOffset + ' to  ' + docSelection.endOffset);\n                                }*\/\n\n                                break;\n\n                            case (($H.parseOptions._elements_self_closing.indexOf('|'+_currTag+'|') > -1)):\n\n                                \/\/  result\n                                _resNode = _currNode;\n\n                                \/* nothing *\/ \/*\n                                    var _newElement = $H.document.createElement('em');\n                                        _newElement.className = $H.settings.highlightElementCSSClass;\n                                        _newElement.innerHTML = _currBuiltHTML;\n                                    _currNode.parentNode.replaceChild(_newElement, _currNode);\n                                *\/\n\n                                break;\n\n                            default:\n\n                                \/\/  result\n                                _resNode = _currNode;\n\n                                \/\/  innerHTML\n                                _currBuiltHTML = _currBuiltHTML.substr((_currBuiltHTML.indexOf('>')+1));\n                                _currBuiltHTML = _currBuiltHTML.substr(0, _currBuiltHTML.lastIndexOf('<'));\n\n                                \/\/  highlighted anything?\n                                if (_currBuiltHTML.indexOf('<em class=\"'+$H.settings.highlightElementCSSClass+'\">') > - 1); else { break; }\n\n                                \/\/  do it\n                                _currNode.innerHTML = _currBuiltHTML;\n                                break;\n                        }\n\n                    \/\/  set highlight class \n                    \/\/  ===================\n\n                        \/\/  inside node\n                        $CJ(_resNode).find('em.'+$H.settings.highlightElementCSSClass+':not(['+$H.settings.highlightElementIdAttribute+'])').attr($H.settings.highlightElementIdAttribute, _selection_id);\n\n                        \/\/  on node\n                        if ((_currTag == 'em') &#038;&#038; $CJ(_resNode).hasClass($H.settings.highlightElementCSSClass))\n                            { $CJ(_resNode).attr($H.settings.highlightElementIdAttribute, _selection_id); }\n\n                        \/\/  clean::add\n                        _parents_to_clean.push(_resNode.parentNode);\n                }\n\n                \/\/  clean::do\n                $H.highlight__deleteSpansFromParents(_parents_to_clean);\n        };\n\n    \/\/  do range }\n\n    \/\/  do current selection {\n    \/\/  ======================\n\n        $H.highlight__doCurentSelection = function ()\n        {\n            \/\/  vars\n            \/\/  ====\n                var \n                    _selection = $H.sel.getSelection($H.window),\n                    _range = $H.sel.getRange(_selection),\n                    _text = $H.sel.getRangeText(_range),\n\n                    _good_range = (_range ? {\n                        'commonAncestorContainer':  _range.commonAncestorContainer,\n                        'startContainer':           _range.startContainer,\n                        'endContainer':             _range.endContainer,\n                        'startOffset':              _range.startOffset,\n                        'endOffset':                _range.endOffset\n                    } : false)\n                ;\n\n            \/\/  some exception rules\n            \/\/  ====================\n                switch (true)\n                {\n                    case (!(_text)):\n                    case (!(_text.length > 0)):\n                    case (!(_good_range)):\n                        return false;\n                }\n\n            \/\/  some corrections\n            \/\/  ================\n\n                \/\/  Firefox fucks up -- https:\/\/developer.mozilla.org\/en\/DOM\/range.startOffset\n                \/\/  Offsets mean two differet things\n\n                \/\/  start container\n                if (_good_range.startContainer.nodeType == 1)\n                {\n                    if (_good_range.startContainer.childNodes[_good_range.startOffset])\n                    {\n                        _good_range.startContainer = _good_range.startContainer.childNodes[_good_range.startOffset];\n                        _good_range.startOffset = 0;\n                    }\n                }\n\n                \/\/  end container\n                if (_good_range.endContainer.nodeType == 1)\n                {\n                    if (_good_range.endContainer.childNodes[_good_range.endOffset])\n                    {\n                        _good_range.endContainer = _good_range.endContainer.childNodes[_good_range.endOffset];\n                        _good_range.endOffset = 0;\n                    }\n                }\n\n            \/\/  highlight range\n            \/\/  ===============\n                var _highlighted_range = $H.highlight__doRange(_good_range);\n                if (_highlighted_range === false) { return false; }\n\n            \/\/  clear selection\n            \/\/  ===============\n                try { _selection.removeAllRanges(); } catch (e) {}\n\n            \/\/  correct double highlights\n            \/\/  =========================\n                var _parents_double_to_clean = [];\n                $H.$elementWhichMustContainAllHighlights.find('em.'+$H.settings.highlightElementCSSClass+' em.'+$H.settings.highlightElementCSSClass).each(function (_i, _e)\n                {\n                    \/\/  remove inner button\n                        $CJ(_e).find('a.'+$H.settings.highlightElementDeleteCSSClass).remove();\n\n                    \/\/  create\n                    var _newElement = $H.document.createElement('span');\n                        _newElement.innerHTML = _e.innerHTML;\n\n                    \/\/  repalce\n                    _e.parentNode.replaceChild(_newElement, _e);\n\n                    \/\/  add\n                    _parents_double_to_clean.push(_newElement.parentNode);\n                });\n\n                \/\/  clean\n                $H.highlight__deleteSpansFromParents(_parents_double_to_clean);\n\n            \/\/  remove buttons and classes\n            \/\/  ==========================\n                \/\/  delete buttons\n                $H.$elementWhichMustContainAllHighlights.find('em.'+$H.settings.highlightElementCSSClass+' a.'+$H.settings.highlightElementDeleteCSSClass).remove();\n\n                \/\/  first, last\n                $H.$elementWhichMustContainAllHighlights.find('em.'+$H.settings.highlightElementCSSClass+'.'+$H.settings.highlightElementFirstCSSClass).removeClass($H.settings.highlightElementFirstCSSClass);\n                $H.$elementWhichMustContainAllHighlights.find('em.'+$H.settings.highlightElementCSSClass+'.'+$H.settings.highlightElementLastCSSClass).removeClass($H.settings.highlightElementLastCSSClass);\n\n            \/\/  add buttons and classes\n            \/\/  =======================\n                var \n                    _highlights_collection = $H.$elementWhichMustContainAllHighlights.find('em.'+$H.settings.highlightElementCSSClass),\n                    _highlights_collection_ids = [],\n                    _curr_delete_button = false\n                ;\n\n                \/\/  get all ids\n                _highlights_collection.each(function (_i, _e) {\n                    _highlights_collection_ids.push($CJ(_e).attr($H.settings.highlightElementIdAttribute));\n                });\n\n                \/\/  add button, classes\n                _highlights_collection.each(function (_i, _e)\n                {\n                    var\n                        _isFirst = (_highlights_collection_ids[(_i-1)] ? (_highlights_collection_ids[_i] != _highlights_collection_ids[(_i-1)]) : true),\n                        _isLast = (_highlights_collection_ids[(_i+1)] ? (_highlights_collection_ids[_i] != _highlights_collection_ids[(_i+1)]) : true)\n                    ;\n\n                    if (_isFirst)\n                    {\n                        \/\/  class\n                        $CJ(_e).addClass($H.settings.highlightElementFirstCSSClass);\n\n                        \/\/  create button\n                        _curr_delete_button = $H.document.createElement('a');\n                        _curr_delete_button.className = $H.settings.highlightElementDeleteCSSClass;\n                        _curr_delete_button.id = $H.settings.highlightElementDeleteIdPrefix + _highlights_collection_ids[_i];\n\n                        \/\/  add button\n                        _e.insertBefore(_curr_delete_button, _e.firstChild);\n                    }\n\n                    if (_isLast)\n                    {\n                        \/\/  class\n                        $CJ(_e).addClass($H.settings.highlightElementLastCSSClass);\n                    }\n                });\n        };\n\n    \/\/  do current selection }\n\n    \/\/  delete highlight {\n    \/\/  ==================\n\n        $H.highlight__deleteAllHighlights = function ()\n        {\n            $H.highlight__deleteHighlight('all');\n        };\n\n        $H.highlight__deleteHighlight = function (_highlight_id)\n        {\n            var \n                _expression = 'em.' + $H.settings.highlightElementCSSClass + (_highlight_id == 'all' ? '' : '['+$H.settings.highlightElementIdAttribute+'=\"'+_highlight_id+'\"]'),\n                _parents_to_clean = []\n            ;\n\n            \/\/  collection\n            $H.$elementWhichMustContainAllHighlights.find(_expression).each(function (_index, _e)\n            {\n                \/\/  create\n                var _s = $H.document.createElement('span');\n                    _s.innerHTML = _e.innerHTML;\n\n                \/\/  do\n                _e.parentNode.replaceChild(_s, _e);\n\n                \/\/  parents\n                _parents_to_clean.push(_s.parentNode);\n            });\n\n            \/\/  delete spans\n            $H.highlight__deleteSpansFromParents(_parents_to_clean);\n        };\n\n    \/\/  delete highlight }\n\n    \/\/  enable \/ disable {\n    \/\/  ==================\n\n        $H.enable = function ()\n        {\n            if ($H.enabled) { return; }\n            $H.enabled = true;\n            $H.$html.addClass($H.settings.highlightingEnabledCSSClass);\n        };\n\n        $H.disable = function ()\n        {\n            if ($H.enabled); else { return; }\n            $H.enabled = false;\n            $H.$html.removeClass($H.settings.highlightingEnabledCSSClass);\n        };\n\n    \/\/  enable \/ disable }\n\n    \/\/  add mouse handlers {\n    \/\/  ====================\n\n        \/\/  globals\n        $H.highlight__mouseUp_timeout = false;\n        $H.highlight__deleteButton__byId__mouseEnter_timeout = {};\n        $H.highlight__deleteButton__byId__mouseLeave_timeout = {};\n\n        \/\/  containers mouse up\n        $H.highlight__mouseUp = function ()\n        {\n            \/\/  not in highlight mode\n            if ($H.enabled); else { return; }\n\n            \/\/  timeout\n            $H.highlight__mouseUp_timeout = $H.window.setTimeout\n            (\n                function ()\n                {\n                    \/\/  try\n                    $H.highlight__mouseUp_timeout = false;\n                    var _didSelection = $H.highlight__doCurentSelection();\n\n                    \/\/  callback\n                    if (_didSelection === false); else {\n                        if ($H.callbacks.highlightAdded) {\n                            $H.callbacks.highlightAdded();\n                        }\n                    }\n                }, \n                250\n            );\n        };\n\n        \/\/  containers mouse down\n        $H.highlight__mouseDown = function ()\n        {\n            \/\/  not in highlight mode\n            if ($H.enabled); else { return; }\n\n            \/\/  timeout\n            $H.window.clearTimeout($H.highlight__mouseUp_timeout);\n        };\n\n        \/\/  delete buttons show\/hide\n        $H.highlight__deleteButton__show = function (_highlight_id) { $H.$elementWhichMustContainAllHighlights.find('#' + $H.settings.highlightElementDeleteIdPrefix + _highlight_id).fadeIn(250); };\n        $H.highlight__deleteButton__hide = function (_highlight_id) { $H.$elementWhichMustContainAllHighlights.find('#' + $H.settings.highlightElementDeleteIdPrefix + _highlight_id).fadeOut(250); };\n\n        \/\/  add mouse handlers\n        $H.addMouseHandlers = function ()\n        {\n            \/\/  mouse up\/down\n            for (var i=0, _i=$H.settings.elementsToAttachMouseHandlersTo.length; i<_i; i++)\n            {\n                $CJ($H.settings.elementsToAttachMouseHandlersTo[i])\n                    .mouseup($H.highlight__mouseUp)\n                    .mousedown($H.highlight__mouseDown)\n                ;\n            }\n\n            \/\/  highlight mouse enter\n            $H.$elementWhichMustContainAllHighlights.on('mouseenter', 'em.'+$H.settings.highlightElementCSSClass, function ()\n            {\n                var _highlight_id = $CJ(this).attr($H.settings.highlightElementIdAttribute);\n\n                $H.window.clearTimeout($H.highlight__deleteButton__byId__mouseLeave_timeout[_highlight_id]);\n\n                $H.highlight__deleteButton__byId__mouseEnter_timeout[_highlight_id] = $H.window.setTimeout(\n                    function ()\n                    {\n                        $H.highlight__deleteButton__byId__mouseEnter_timeout[_highlight_id] = false;\n                        $H.highlight__deleteButton__show(_highlight_id);\n                    },\n                    250\n                );\n            });\n\n            \/\/  highlight mouse leave\n            $H.$elementWhichMustContainAllHighlights.on('mouseleave', 'em.'+$H.settings.highlightElementCSSClass, function ()\n            {\n                var _highlight_id = $CJ(this).attr($H.settings.highlightElementIdAttribute);\n\n                $H.window.clearTimeout($H.highlight__deleteButton__byId__mouseEnter_timeout[_highlight_id]);\n\n                $H.highlight__deleteButton__byId__mouseLeave_timeout[_highlight_id] = $H.window.setTimeout(\n                    function ()\n                    {\n                        $H.highlight__deleteButton__byId__mouseLeave_timeout[_highlight_id] = false;\n                        $H.highlight__deleteButton__hide(_highlight_id);\n                    },\n                    250\n                );\n            });\n\n            \/\/  highlight delete click        \n            $H.$elementWhichMustContainAllHighlights.on('click', 'em.'+$H.settings.highlightElementCSSClass+' a.'+$H.settings.highlightElementDeleteCSSClass, function ()\n            {\n                \/\/  get id\n                var _id = $CJ(this.parentNode).attr($H.settings.highlightElementIdAttribute);\n\n                \/\/  remove self\n                $CJ(this).remove();\n\n                \/\/  delete\n                $H.highlight__deleteHighlight(_id);\n\n                \/\/  callback\n                if ($H.callbacks.highlightDeleted) {\n                    $H.callbacks.highlightDeleted();\n                }\n            });\n        };\n\n    \/\/  add mouse handlers }\n\n    \/\/  get clean html {\n    \/\/  ================\n\n        $H.getCleanHTML = function (_rawHTML)\n        {\n            \/\/  html\n            var _html = _rawHTML;\n\n            \/\/  remove all spans -- spans hold deleted highlights, or useless helper elements\n            _html = _html.replace(\/<span([^>]*?)>\/gi, '');\n            _html = _html.replace(\/<\\\/span>\/gi, '');\n\n            \/\/  remove highlight-delete buttons\n            var _highlight_delete_reg = new RegExp('<a ([^>]*?)'+$H.settings.highlightElementDeleteCSSClass+'([^>]*?)><\/a>', 'gi');\n            _html = _html.replace(_highlight_delete_reg, '');\n\n            \/\/  highlight element\n            var _highlight_element_reg = new RegExp('<em ([^>]*?)'+$H.settings.highlightElementCSSClass+'([^>]*?)>([^>]+?)<\/em>', 'gi');\n            _html = _html.replace(_highlight_element_reg, '<highlight>$3<\/highlight>');\n\n            \/\/  double EMs\n            var _two_highlights_reg = new RegExp('<highlight>([\\\\s\\\\S]*?)<\/highlight>([ \\\\n\\\\r\\\\t]*?)<highlight>([\\\\s\\\\S]*?)<\/highlight>', 'gi');\n            while (true &#038;&#038; _html.match(_two_highlights_reg)) {\n                _html = _html.replace(_two_highlights_reg, '<highlight>$1$3<\/highlight>');\n            }\n\n            \/\/  replace EMs\n            var _highlight_reg = new RegExp('<highlight>([\\\\s\\\\S]*?)<\/highlight>', 'gi');\n            _html = _html.replace(_highlight_reg, $H.settings.highlightCleanHTMLElementStart+'$1'+$H.settings.highlightCleanHTMLElementEnd);\n\n            return _html;\n        };\n\n    \/\/  get clean html }\t\t\n\n    \/\/  return self\n    \/\/  ===========\n        return $H;\n}\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/*!\n *  ClearlyComponent__next\n *  Evernote Clearly's next-page algorithm as an embeddable component.\n *  Copyright 2013, Evernote Corporation\n *\n *  Usage:\n *  ======\n *\n *      The Next-pages Clearly-component works hand-in-hand with the clearly Detect Component.\n *      So its init\/usage pattern needs to come after the normal init\/usage pattern for the Detect Component.\n *      Like this:\n *\n *      First \"Detect\":\n *      =============\n *\n *          \/\/ define\n *          window.ClearlyComponent__detect = {\n *              'callbacks': {\n *                  'finished': someFunction(),\n *              },\n *              'window': window,\n *              'document': document,\n *              'jQuery': window.jQuery\n *          };\n *\n *          \/\/ init -- will return false, if something goes wrong\n *          window.ClearlyComponent__detect = initClearlyComponent__detect(window.ClearlyComponent__detect);\n *\n *      Then \"Next\":\n *      ============\n *\n *          \/\/ define\n *          window.ClearlyComponent__next = {\n *              'callbacks': {\n *                  'newPageFound': someFunction()\n *              },\n *\n *              'settings': { \n *                  'onCreateNextPagesContainerUseThisId': 'string',\n *                  'onCreateNextPagesContainerDoNotInsertCSS': true\n *              },\n *\n *              'detectComponentInstance': window.ClearlyComponent__detect\n *          };\n *\n *          \/\/ init -- will return false, if something goes wrong\n *          window.ClearlyComponent__next = initClearlyComponent__next(window.ClearlyComponent__next);\n *\n *          \/\/ call -- returns nothing; callbacks will be used\n *          window.ClearlyComponent__next.createNextPagesContainer()\n *          window.ClearlyComponent__next.start();\n *\n *\/\n\n\/*\n    changes:\n    ========\n        $R => $N, $D\n*\/\n\nfunction initClearlyComponent__next(_paramInstance)\n{\n    \/\/  global instance reference {\n    \/\/  ===========================\n\n        \/\/  null; return\n        if (_paramInstance); else { return false; }\n\n        \/\/  shorthand\n        $N = _paramInstance;\n\n    \/\/  global instance reference }\n\n    \/\/  required vars {\n    \/\/  ===============\n\n        \/\/  the component instance object must already be created,\n        \/\/  when the init function is called. it must have these vars set:\n\n        switch (true)\n        {\n            case (!($N.detectComponentInstance)):\n\n            case (!($N.callbacks)):\n            case (!($N.callbacks.newPageFound)):\n\n                \/\/  something's wrong\n                return false;\n        }\n\n    \/\/  required vars }\n\n    \/\/  missing settings {\n    \/\/  ==================\n\n        if ($N.settings); else { $N.settings = {}; }\n\n        \/\/  names for stuff\n        \/* frames id *\/               if ($N.settings.onCreateNextPageFramesUseThisIdPrefix); else           { $N.settings.onCreateNextPageFramesUseThisIdPrefix =          'clearly_next_page_frame__'; }\n        \/* container id *\/            if ($N.settings.onCreateNextPagesContainerUseThisId); else             { $N.settings.onCreateNextPagesContainerUseThisId =            'clearly_next_pages_container'; }\n        \/* insert container css *\/    if ($N.settings.onCreateNextPagesContainerDoNotInsertCSS); else        { $N.settings.onCreateNextPagesContainerDoNotInsertCSS =       false; }\n        \/* frames attribute *\/        if ($N.settings.onLoadingNextPageFramesUseThisAttribute); else         { $N.settings.onLoadingNextPageFramesUseThisAttribute =        'clearly_next_page_loaded'; }\n        \/* frames attribute value *\/  if ($N.settings.onLoadingNextPageFramesUseThisAttributeValue); else    { $N.settings.onLoadingNextPageFramesUseThisAttributeValue =   'yes'; }\n\n    \/\/  missing settings }\n\n    \/\/  global vars {\n    \/\/  =============\n\n        $D = $N.detectComponentInstance;\n        $CJ = $D.jQuery;\n\n        $N.pages = [];\n\n    \/\/  global vars }\n\n    \/\/  parse options {\n    \/\/  =============   \n\n\t\t$N.parseOptions =\n\t\t{\n\t\t\t'_next_page_keywords': [\n                \/* english *\/   'next page', 'next',\n                \/* german *\/    'vorw&#228;rts', 'weiter',\n                \/* japanese *\/  '&#27425;&#12408;'\n\t\t\t],\n\n\t\t\t'_next_page_keywords_not': [\n\t\t\t    \/* english *\/   'article', 'story', 'post', 'comment', 'section', 'chapter'\n\t\t\t]\n\t\t};\n\n    \/\/  parse options }\n\n    \/\/  create next pages container {\n    \/\/  =============================\n\n        $N.createNextPagesContainer = function ()\n        {\n            \/\/  default id\n            \/\/  ==========\n                _container_id = $N.settings.onCreateNextPagesContainerUseThisId;\n\n            \/\/\tcontainer\n            \/\/\t=========\n                var _containerElement = $D.document.createElement('div');\n                    _containerElement.setAttribute('id', _container_id);\n\n            \/\/\tcss\n            \/\/\t===\n                if ($N.settings.onCreateNextPagesContainerDoNotInsertCSS); else\n                {\n                    var \n                        _cssElement = $D.document.createElement('style'),\n                        _cssText = ''\n                        +\t'#'+_container_id+' { '\n                        +\t\t'margin: 0; padding: 0; border: none; '\n                        +\t\t'position: absolute; '\n                        +\t\t'width: 10px; height: 10px; '\n                        +\t\t'top: -100px; left: -100px; '\n                        +\t'} '\n                        +\t'#'+_container_id+' iframe { '\n                        +\t\t'margin: 0; padding: 0; border: none; '\n                        +\t\t'position: absolute; '\n                        +\t\t'width: 10px; height: 10px; '\n                        +\t\t'top: -100px; left: -100px; '\n                        +\t'} '\n                    ;\n                    _cssElement.setAttribute('id', _container_id + '__css');\n                    _cssElement.setAttribute('type', 'text\/css');\n                    if (_cssElement.styleSheet) { _cssElement.styleSheet.cssText = _cssText; }\n                        else { _cssElement.appendChild($D.document.createTextNode(_cssText)); }\n                }\n\n            \/\/\twrite\n            \/\/\t=====\n                var _body = $D.document.getElementsByTagName('body')[0];\n                    \/* css *\/       if (_cssElement) { _body.appendChild(_cssElement); }\n                    \/* container *\/ _body.appendChild(_containerElement);\n\n            \/\/  set\n            \/\/  ===\n                $N.nextPages = _containerElement;\n                $N.$nextPages = $CJ($N.nextPages);\n        };\n\n    \/\/  create next pages container }\n\n\t\/\/  helpers {\n\t\/\/  =========\n\n        \/\/  substr starting with the first slash after \/\/\n\t\t$N.getURLPath = function (_url) { return _url.substr(_url.indexOf('\/', (_url.indexOf('\/\/') + 2))); };\n\n        \/\/  substr until the first slash after \/\/\n\t\t$N.getURLDomain = function (_url) { return _url.substr(0, _url.indexOf('\/', (_url.indexOf('\/\/') + 2))); };\n\n\t\/\/  helpers }\n\n\t\/\/  load page {\n\t\/\/  ===========\n\n        $N.nextPage__loadToFrame = function (_pageNr, _nextPageURL)\n        {\n            \/\/\tdo ajax\n            \/\/\t=======\n                $CJ.ajax\n                ({\n                    'url' : _nextPageURL,\n\n                    'type' : 'GET',\n                    'dataType' : 'html',\n                    'async' : true,\n                    'timeout': (10 * 1000),\n\n                    \/\/'headers': { 'Referrer': _nextPageURL },\n\n                    'success' : function (_response, _textStatus, _xhr)\t{ $N.nextPage__ajaxComplete(_pageNr, _response, _textStatus, _xhr); },\n                    'error' : \tfunction (_xhr, _textStatus, _error)\t{ $N.nextPage__ajaxError(_pageNr, _xhr, _textStatus, _error); }\n                });\n        };\n\n        $N.nextPage__ajaxError = function (_pageNr, _xhr, _textStatus, _error) { };\n\n        $N.nextPage__ajaxComplete = function (_pageNr, _response, _textStatus, _xhr)\n        {\n            \/\/\tvalid?\n            \/\/\t======\n                if (_response > ''); else { return; }\n\n            \/\/\tget html\n            \/\/\t========\n                var _html = _response;\n\n                \/\/\tnormalize\n                \/\/\t=========\n                    _html = _html.replace(\/<\\s+\/gi, '<');\n                    _html = _html.replace(\/\\s+>\/gi, '>');\n                    _html = _html.replace(\/\\s+\\\/>\/gi, '\/>');\n\n                \/\/\tremove\n                \/\/\t======\n                    _html = _html.replace(\/<script[^>]*?>([\\s\\S]*?)<\\\/script>\/gi, '');\n                    _html = _html.replace(\/<script[^>]*?\\\/>\/gi, '');\n                    _html = _html.replace(\/<noscript[^>]*?>([\\s\\S]*?)<\\\/noscript>\/gi, '');\n\n            \/\/\tappend frame\n            \/\/\t============\n                $N.$nextPages.append(''\n                    + '<iframe'\n                    + ' id=\"'+$N.settings.onCreateNextPageFramesUseThisIdPrefix+_pageNr+'\"'\n                    + ' scrolling=\"no\" frameborder=\"0\"'\n                    + '><\/iframe>'\n                );\t\t\n\n            \/\/\twrite to frame\n            \/\/\t==============\n                var _doc = $N.$nextPages.find('#'+$N.settings.onCreateNextPageFramesUseThisIdPrefix+_pageNr).contents().get(0);\n                    _doc.open();\n                    _doc.write(_html);\n                    _doc.close();\n\n            \/\/\tadd load handler\n            \/\/\t================\n                $N.$nextPages.find('#'+$N.settings.onCreateNextPageFramesUseThisIdPrefix+_pageNr).bind('load', function ()\n                {\n                    \/\/  done?\n                    if ($N.$nextPages.find('#'+$N.settings.onCreateNextPageFramesUseThisIdPrefix+_pageNr).attr($N.settings.onLoadingNextPageFramesUseThisAttribute) == $N.settings.onLoadingNextPageFramesUseThisAttributeValue) { return; }\n\n                    \/\/  can do?\n                    var _doc = $N.$nextPages.find('#'+$N.settings.onCreateNextPageFramesUseThisIdPrefix+_pageNr).contents().get(0);\n                    if (_doc); else { return; }\n                    if (_doc.readyState == 'interactive' || _doc.readyState == 'complete'); else { return; }\n\n                    \/\/  mark\n                    $N.$nextPages.find('#'+$N.settings.onCreateNextPageFramesUseThisIdPrefix+_pageNr).attr($N.settings.onLoadingNextPageFramesUseThisAttribute, $N.settings.onLoadingNextPageFramesUseThisAttributeValue);\n\n                    \/\/ do\n                    $N.nextPage__loadedInFrame(_pageNr, _doc.defaultView);                  \n                });\n        };\n\n        $N.nextPage__loadedInFrame = function (_pageNr, _pageWindow)\n        {\n            \/\/\tfind\n            \/\/\t====\n                var \n                    _found = $D.getContent__findInPage(_pageWindow),\n                    _foundHTML = _found._html,\n                    _removeTitleRegex = new RegExp($D.articleTitleMarker__start + '(.*?)' + $D.articleTitleMarker__end, 'i')\n                ;\n\n            \/\/  get first fragment\n            \/\/  ==================\n                var _firstFragment = $D.nextPage__getFirstFragment(_foundHTML);\n\n                \/\/  gets first 2000 characters\n                \/\/  diff set at 100 -- 0.05\n                switch (true)\n                {\n                    case ($D.levenshteinDistance(_firstFragment, $N.nextPage__firstFragment__firstPage) < 100):\n                    case ($D.levenshteinDistance(_firstFragment, $N.nextPage__firstFragment__lastPage) < 100):\n                        \/\/  break\n                        return false;\n\n                    default:\n                        \/\/  add to first fragemnts\n                        $N.nextPage__firstFragment__lastPage = _firstFragment;\n                        break;\n                }\n\n            \/\/  remove title -- do it twice\n            \/\/  ============\n\n                \/\/  once with document title\n                _foundHTML = $D.getContent__find__isolateTitleInHTML(_foundHTML, ($D.document.title > '' ? $D.document.title : ''));\n                _foundHTML = _foundHTML.replace(_removeTitleRegex, '');\n\n                \/\/  once with article title\n                _foundHTML = $D.getContent__find__isolateTitleInHTML(_foundHTML, $D.articleTitle);\n                _foundHTML = _foundHTML.replace(_removeTitleRegex, '');\n\n            \/\/\treturn\n            \/\/\t======\n                var _page = {\n                    '_url':         _pageWindow.location.href,\n                    '_html':        _foundHTML,\n                    '_elements':    [_found._targetCandidate.__node]\n                };\n\n                $N.pages.push(_page);\n                if ($N.callbacks.newPageFound) { $N.callbacks.newPageFound(_page); }\n\n            \/\/\tnext\n            \/\/\t====\n                $N.nextPage__find(_pageWindow, _found._links);\n        };\n\n\t\/\/  load }\n\n    \/\/  find {\n    \/\/  ======\n\n\t\t$N.nextPage__find = function (_currentPageWindow, _linksInCurrentPage)\n\t\t{\n\t\t\t\/\/\tpage id\n\t\t\t\tvar _pageNr = ($N.pages.length + 1);\n\n\t\t\t\/\/\tget\n\t\t\t\/\/\t===\n\t\t\t\tvar _possible = [];\n\t\t\t\tif (_possible.length > 0); else { _possible = $N.nextPage__find__possible(_currentPageWindow, _linksInCurrentPage, 0.5); }\n\t\t\t\t\/\/if (_possible.length > 0); else { _possible = $N.nextPage__find__possible(_currentPageWindow, _linksInCurrentPage, 0.50); }\n\n\t\t\t\t\/\/\tnone\n\t\t\t\tif (_possible.length > 0); else\n\t\t\t\t\t{ if ($D.debug) { $D.log('no next link found'); } return; }\n\n\t\t\t\t\/\/  log\n\t\t\t\tif ($D.debug) { $D.log('possible next', _possible); }\n\n\t\t\t\/\/\tthe one\n\t\t\t\/\/\t=======\n\t\t\t\tvar _nextLink = false;\n\n\t\t\t\/\/\tnext keyword?\n\t\t\t\/\/\t=============\n\t\t\t\t(function ()\n\t\t\t\t{\n\t\t\t\t\tif (_nextLink) { return; }\n\n\t\t\t\t\tfor (var i=0, _i=_possible.length; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var j=0, _j=$N.parseOptions._next_page_keywords.length; j<_j; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (_possible[i]._caption.indexOf($N.parseOptions._next_page_keywords[j]) > -1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\/\/\tlength\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\tif (_possible[i]._caption.length > $N.parseOptions._next_page_keywords[j].length * 2)\n\t\t\t\t\t\t\t\t\t\t{ continue; }\n\n\t\t\t\t\t\t\t\t\/\/\tnot keywords\n\t\t\t\t\t\t\t\t\/\/\t============\n\t\t\t\t\t\t\t\t\tfor (var z=0, _z=$N.parseOptions._next_page_keywords_not.length; z<_z; z++)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (_possible[i]._caption.indexOf($N.parseOptions._next_page_keywords_not[z]) > -1)\n\t\t\t\t\t\t\t\t\t\t\t{ _nextLink = false; return; }\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\/\/\tgot it\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\t_nextLink = _possible[i];\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})();\t\n\n\t\t\t\/\/\tcaption matched page number\n\t\t\t\/\/\t===========================\n\t\t\t\t(function ()\n\t\t\t\t{\n\t\t\t\t\tif (_nextLink) { return; }\n\n\t\t\t\t\tfor (var i=0, _i=_possible.length; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (_possible[i]._caption == (''+_pageNr))\n\t\t\t\t\t\t\t{ _nextLink = _possible[i]; return; }\n\t\t\t\t\t}\n\t\t\t\t})();\n\n\t\t\t\/\/\tnext keyword in title\n\t\t\t\/\/\t=====================\n\t\t\t\t(function ()\n\t\t\t\t{\n\t\t\t\t\tif (_nextLink) { return; }\n\n\t\t\t\t\tfor (var i=0, _i=_possible.length; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\t\/\/\tsanity\n\t\t\t\t\t\tif (_possible[i]._title > ''); else { continue; }\n\t\t\t\t\t\tif ($D.measureText__getTextLength(_possible[i]._caption) <= 2); else { continue; }\n\n\t\t\t\t\t\tfor (var j=0, _j=$N.parseOptions._next_page_keywords.length; j<_j; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (_possible[i]._title.indexOf($N.parseOptions._next_page_keywords[j]) > -1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\/\/\tlength\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\tif (_possible[i]._title.length > $N.parseOptions._next_page_keywords[j].length * 2)\n\t\t\t\t\t\t\t\t\t\t{ continue; }\n\n\t\t\t\t\t\t\t\t\/\/\tnot keywords\n\t\t\t\t\t\t\t\t\/\/\t============\n\t\t\t\t\t\t\t\t\tfor (var z=0, _z=$N.parseOptions._next_page_keywords_not.length; z<_z; z++)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (_possible[i]._title.indexOf($N.parseOptions._next_page_keywords_not[z]) > -1)\n\t\t\t\t\t\t\t\t\t\t\t{ _nextLink = false; return; }\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\/\/\tgot it\n\t\t\t\t\t\t\t\t\/\/\t======\n\t\t\t\t\t\t\t\t\t_nextLink = _possible[i];\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})();\n\n\t\t\t\/\/\treturn?\n\t\t\t\/\/\t=======\n\t\t\t\tif (_nextLink); else { return; }\n\n\t\t\t\/\/\tmark\n\t\t\t\/\/\t====\n\t\t\t\tif ($D.debug)\n\t\t\t\t{\n\t\t\t\t\t$D.debugOutline(_nextLink._node, 'target', 'next-page');\n\t\t\t\t\t$D.log('NextPage Link', _nextLink, _nextLink._node);\n\t\t\t\t}\n\n\t\t\t\/\/\tprocess page\n\t\t\t\/\/\t============\n\t\t\t\t$N.nextPage__loadToFrame(_pageNr, _nextLink._href);\n\t\t};\n\n\t\t$N.nextPage__find__possible = function (_currentPageWindow, _linksInCurrentPage, _distanceFactor)\n\t\t{\n\t\t\tvar \n\t\t\t\t_mainPageHref = $D.window.location.href,\n\t\t\t\t_mainPageDomain = $N.getURLDomain(_mainPageHref),\n\t\t\t\t_mainPagePath = $N.getURLPath(_mainPageHref)\n\t\t\t;\n\n\t\t\tvar _links = $CJ.map\n\t\t\t(\n\t\t\t\t_linksInCurrentPage,\n\t\t\t\tfunction (_element, _index)\n\t\t\t\t{\n\t\t\t\t\tvar \n\t\t\t\t\t\t_href = _element.__node.href,\n\t\t\t\t\t\t_path = $N.getURLPath(_href),\n\t\t\t\t\t\t_title = (_element.__node.title > '' ? _element.__node.title.toLowerCase() : ''),\n\t\t\t\t\t\t_caption = _element.__node.innerHTML.replace(\/<[^>]+?>\/gi, '').replace(\/\\&#038;[^\\&\\s;]{1,10};\/gi, '').replace(\/\\s+\/gi, ' ').replace(\/^ \/, '').replace(\/ $\/, '').toLowerCase(),\n\t\t\t\t\t\t_distance = $D.levenshteinDistance(_mainPagePath, _path)\n\t\t\t\t\t;\n\n\t\t\t\t\tvar _caption2 = '';\n\t\t\t\t\tfor (var i=0, _i=_caption.length, _code=0; i<_i; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\t_code = _caption.charCodeAt(i);\n\t\t\t\t\t\t_caption2 += (_code > 127 ? ('&#'+_code+';') : _caption.charAt(i));\n\t\t\t\t\t}\n\t\t\t\t\t_caption = _caption2;\n\n\t\t\t\t\tswitch (true)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase (!(_href > '')):\n\t\t\t\t\t\tcase (_mainPageHref.length > _href.length):\n\t\t\t\t\t\tcase (_mainPageDomain != $N.getURLDomain(_href)):\n\t\t\t\t\t\tcase (_href.substr(_mainPageHref.length).substr(0, 1) == '#'):\n\t\t\t\t\t\tcase (_distance > Math.ceil(_distanceFactor * _path.length)):\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\/\/\tskip if already loaded as next page\n\t\t\t\t\t\t\tfor (var i=0, _i=$N.pages.length; i<_i; i++)\n\t\t\t\t\t\t\t\t{ if ($N.pages[i]._url == _href) { return null; } }\n\n\t\t\t\t\t\t\t\/\/\treturn\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t'_node': _element.__node,\n\t\t\t\t\t\t\t\t'_href': _href,\n\t\t\t\t\t\t\t\t'_title': _title,\n\t\t\t\t\t\t\t\t'_caption': _caption,\n\t\t\t\t\t\t\t\t'_distance': _distance\n\t\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t\/\/\tsort -- the less points, the closer to position 0\n\t\t\t\/\/\t====\n\t\t\t\t_links.sort(function (a, b)\n\t\t\t\t{\n\t\t\t\t\tswitch (true)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase (a._distance < b._distance): return -1;\n\t\t\t\t\t\tcase (a._distance > b._distance): return 1;\n\t\t\t\t\t\tdefault: return 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\/\/\treturn\n\t\t\t\treturn _links;\n\t\t};\n\n    \/\/  find }\n\n    \/\/  start {\n    \/\/  =======\n\n        $N.start = function ()\n        {\n            \/\/  first fragments\n                $N.nextPage__firstFragment__firstPage = $D.nextPage__firstFragment__firstPage;\n                $N.nextPage__firstFragment__lastPage = $D.nextPage__firstFragment__lastPage;\n\n            \/\/  first page\n                $N.pages = [{ '_url': $D.window.location.href }];\n\n            \/\/  start\n                $N.nextPage__find($D.window, $D.nextPage__firstLinks);\n        };\n\n    \/\/  start }\n\n    \/\/  return self\n    \/\/  ===========\n        return $N;\n}\n\/\/ ]]><\/script><script defer=\"defer\" type=\"text\/javascript\" charset=\"ANSI\">\/\/ <![CDATA[\n\/*!\n *  ClearlyComponent__reformat\n *  Evernote Clearly's display as an embeddable component.\n *  Copyright 2013, Evernote Corporation\n *\n *  Usage:\n *  ======\n *\n *      \/\/ define\n *      window.ClearlyComponent__reformat = {\n *          'callbacks': {\n *              'frameCreated': someFunction(),\n *              'pageAdded': someFunction(),\n *          },\n *\n *          'settings': { \n *              'cssPath': 'string',\n *              'pageLabel': 'string'.\n *              'onCreateFrameUseThisId': 'string',\n *              'onCreateFrameDoNotInsertCSS': true\n *          },\n *\n *          'window': window,\n *          'document': document,\n *          'jQuery': window.jQuery\n *      };\n *\n *      \/\/ init -- will return false, if something goes wrong\n *      window.ClearlyComponent__reformat = initClearlyComponent__reformat(window.ClearlyComponent__reformat);\n *\n *      \/\/ create frame\n *      window.ClearlyComponent__detect.createFrame();\n *\n *      \/\/ apply options\n *      window.ClearlyComponent__detect.applyOptions(_options_object);\n *\n *      \/\/ add page\n *      window.ClearlyComponent__detect.addNewPage(_html, _source_url);\n *\n *\/\n\n\/*\n    changes:\n    ========\n        $R => $R\n        $R.win => $R.window\n\n    to do:\n    ======\n*\/\n\nfunction initClearlyComponent__reformat(_paramInstance)\n{\n    \/\/  global instance reference {\n    \/\/  ===========================\n\n        \/\/  null; return\n        if (_paramInstance); else { return false; }\n\n        \/\/  shorthand\n        $R = _paramInstance;\n\n    \/\/  global instance reference }\n\n    \/\/  required vars {\n    \/\/  ===============\n\n        \/\/  the component instance object must already be created,\n        \/\/  when the init function is called. it must have these vars set:\n\n        switch (true)\n        {\n            case (!($R.settings)):\n            case (!($R.settings.cssPath)):\n\n            case (!($R.window)):\n            case (!($R.document)):\n            case (!($R.document.body)):\n\n            case (!($R.jQuery)):\n\n                if ($R.debug)\n                {\n                    console.log(!($R.settings));\n                    console.log(!($R.settings.cssPath));\n\n                    console.log(!($R.window));\n                    console.log(!($R.document));\n                    console.log(!($R.document.body));\n\n                    console.log(!($R.jQuery));\n                }\n\n                \/\/  something's wrong\n                return false;\n        }\n\n    \/\/  required vars }\n\n    \/\/  missing settings {\n    \/\/  ==================\n\n        \/\/  names for stuff\n        \/* frame id *\/            if ($R.settings.onCreateFrameUseThisId); else             { $R.settings.onCreateFrameUseThisId =            'clearly_frame'; }\n        \/* insert frame css *\/    if ($R.settings.onCreateFrameDoNotInsertCSS); else        { $R.settings.onCreateFrameDoNotInsertCSS =       false; }\n        \/* page label *\/          if ($R.settings.pageLabel); else                          { $R.settings.pageLabel =                         'Page '; }\n\n    \/\/  missing settings }\n\n    \/\/  global vars {\n    \/\/  =============\n\n        $CJ = $R.jQuery;\n\n        $R.$window = $CJ($R.window);\n        $R.$document = $CJ($R.document);\n\n        $R.pagesCount = 0;\n        $R.footnotedLinksCount;\n\n        \/*\n            .iframe, .$iframe\n            .iframeWindow, .$iframeWindow\n            .iframeDocument, .$iframeDocument\n            .$iframeBackground, .$iframeBox, .$iframePages\n        *\/\n\n    \/\/  global vars }\n\n    \/\/  debug {\n    \/\/  =======\n\n        $R.debug = ($R.debug || false);\n\t\t$R.debugRemembered = {};\n        $R.debugTimers = [];\n\n\t\tif ($R.debug)\n\t\t{\n\t\t    \/\/  writeLog\n\t\t    \/\/  ========\n\t\t\t\tswitch (true)\n\t\t\t\t{\n\t\t\t\t\tcase (!(!($R.window.console &#038;&#038; $R.window.console.log))):    $R.writeLog = function (msg) { $R.window.console.log(msg); };       break;\n\t\t\t\t\tcase (!(!($R.window.opera &#038;&#038; $R.window.opera.postError))):  $R.writeLog = function (msg) { $R.window.opera.postError(msg); };   break;\n\t\t\t\t\tdefault:                                                    $R.writeLog = function (msg) {};                                    break;\n\t\t\t\t}\n\n            \/\/  log\n            \/\/  ===\n                $R.log = function ()\n                {\n                    if ($R.debug); else { return; }\n                    for (var i=0, il=arguments.length; i<il ; i++) { $R.writeLog(arguments[i]); }\n                    $R.writeLog('-----------------------------------------');\n                };\n\n            \/\/  remember\n            \/\/  ========\n                $R.debugRemember = function (_k, _v)\n                {\n                    $R.debugRemembered[_k] = _v;\n                };\n\t\t}\n\t\telse\n\t\t{\n            $R.writeLog \t\t= function () { return false; };\n            $R.log \t\t\t\t= function () { return false; };\n            $R.debugRemember \t= function () { return false; };\n        }\n\n    \/\/  debug }\n\n    \/\/  encode \/ decode {\n    \/\/  =================\n\n\t\t$R.encode = function (_string)\n\t\t{\n\t\t\t\/\/\tnone\n\t\t\tif (_string == '') { return 'none'; }\n\n\t\t\t\/\/\tencode\n\t\t\treturn encodeURIComponent(_string)\n\t\t\t\t.replace(\/!\/g, '%21')\n\t\t\t\t.replace(\/'\/g, '%27')\n\t\t\t\t.replace(\/\\(\/g, '%28')\n\t\t\t\t.replace(\/\\)\/g, '%29')\n\t\t\t\t.replace(\/\\*\/g, '%2A')\n\t\t\t;\n\t\t};\n\n\t\t$R.decode = function (_string)\n\t\t{\n\t\t\t\/\/\tnone\n\t\t\tif (_string == 'none') { return ''; }\n\n\t\t\t\/\/\tdecode\n\t\t\treturn decodeURIComponent(_string);\n\t\t};\n\n    \/\/  encode \/ decode }\n\n    \/\/  themes {\n    \/\/  ========\n\n        (function ()\n        {\n            \/\/  themes already set\n            if ($R.availableThemes) { return; } \n\n            \/\/  set themes\n            $R.availableThemes = {\n                'newsprint': {\n                    'text_font': \t\t\t$R.encode('\"PT Serif\"'),\n                    'text_font_header': \t$R.encode('\"PT Serif\"'),\n                    'text_font_monospace': \t$R.encode('Inconsolata'),\n                    'text_size': \t\t\t$R.encode('16px'),\n                    'text_line_height': \t$R.encode('1.5em'),\n                    'box_width': \t\t\t$R.encode('36em'),\n                    'color_background': \t$R.encode('#f3f2ee'),\n                    'color_text': \t\t\t$R.encode('#1f0909'),\n                    'color_links': \t\t\t$R.encode('#065588'),\n                    'text_align': \t\t\t$R.encode('normal'),\n                    'base': \t\t\t\t$R.encode('base__newsprint'),\n                    'footnote_links': \t\t$R.encode('on_print'),\n                    'large_graphics': \t\t$R.encode('do_nothing'),\n                    'custom_css': \t\t\t$R.encode(''\n                                            + '#text #articleHeader { border-color: #c5c5c5; }'\n                                            + '#text #relatedNotes { border-color: rgba(197, 197, 197, 0.5); }'\n                                            + '#text blockquote { border-color: #bababa; color: #656565; }'\n                                            + '#text thead { background-color: #dadada; }'\n                                            + '#text tr:nth-child(even) { background: #e8e7e7; }'\n                                            + '#text hr { border-color: #c5c5c5; }')\n                },\n                'notable': {\n                    'text_font': \t\t\t$R.encode('Helvetica, Arial'),\n                    'text_font_header': \t$R.encode('Helvetica, Arial'),\n                    'text_font_monospace': \t$R.encode('\"Droid Sans Mono\"'),\n                    'text_size': \t\t\t$R.encode('14px'),\n                    'text_line_height': \t$R.encode('1.5em'),\n                    'box_width': \t\t\t$R.encode('42em'),\n                    'color_background': \t$R.encode('#fff'),\n                    'color_text': \t\t\t$R.encode('#333'),\n                    'color_links': \t\t\t$R.encode('#090'),\n                    'text_align': \t\t\t$R.encode('normal'),\n                    'base': \t\t\t\t$R.encode('base__notable'),\n                    'footnote_links': \t\t$R.encode('on_print'),\n                    'large_graphics': \t\t$R.encode('do_nothing'),\n                    'custom_css': \t\t\t$R.encode(''\n                                            + '#text #articleHeader { border-color: #000; }'\n                                            + '#text #relatedNotes { border-color: rgba(0, 0, 0, 0.25); }'\n                                            + '#text h1 { color: #000; }'\n                                            + '#text h2, #text h3, #text h4, #text h5, #text h6 { color: #444; }'\n                                            + '#text blockquote { border-color: #d1d1d1; }'\n                                            + '#text thead { background-color: #444; color: #fff; }'\n                                            + '#text tr:nth-child(even) { background: #d1d1d1; }'\n                                            + '#text hr { border-color: #000; }')\n                },\n                'night_owl': {\n                    'text_font': \t\t\t$R.encode('\"PT Serif\"'),\n                    'text_font_header': \t$R.encode('\"PT Serif\"'),\n                    'text_font_monospace': \t$R.encode('Inconsolata'),\n                    'text_size': \t\t\t$R.encode('16px'),\n                    'text_line_height': \t$R.encode('1.5em'),\n                    'box_width': \t\t\t$R.encode('36em'),\n                    'color_background': \t$R.encode('#2d2d2d'),\n                    'color_text': \t\t\t$R.encode('#e3e3e3'),\n                    'color_links': \t\t\t$R.encode('#e3e3e3'),\n                    'text_align': \t\t\t$R.encode('normal'),\n                    'base': \t\t\t\t$R.encode('base__night_owl'),\n                    'footnote_links': \t\t$R.encode('on_print'),\n                    'large_graphics': \t\t$R.encode('do_nothing'),\n                    'custom_css': \t\t\t$R.encode(''\n                                            + '#text #articleHeader { border-color: #c5c5c5; }'\n                                            + '#text #relatedNotes { border-color: rgba(197, 197, 197, 0.5); }'\n                                            + '#text a:link { -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; }'\n                                            + '#text #relatedNotes a { -webkit-transition-duration: 0s; -moz-transition-duration: 0s; -o-transition-duration: 0s; }'\n                                            + '#text a:hover, #text a:active {\tcolor: #44bde8; }'\n                                            + '#text blockquote { color: #c1bfbf; border-color: #c1bfbf; }'\n                                            + '#text thead { background-color: #4f4f4f; }'\n                                            + '#text tr:nth-child(even) { background: #404040; }'\n                                            + '#text hr { border-color: #c5c5c5; }')\n                }\n            };\n        })();\n\n    \/\/  themes }\n\n    \/\/  font sizes {\n    \/\/  ============\n\n        (function ()\n        {\n            \/\/  font sizes already set\n            if ($R.availableFontSizes) { return; } \n\n            \/\/  set font sizes\n            $R.availableFontSizes = {\n                'small':    { 'newsprint': '12px', 'notable': '12px', 'night_owl': '12px' },\n                'medium':   { 'newsprint': '16px', 'notable': '16px', 'night_owl': '16px' },\n                'large':    { 'newsprint': '20px', 'notable': '20px', 'night_owl': '20px' }\n            };\n        })();\n\n    \/\/  font sizes }\n\n    \/\/  google fonts {\n    \/\/  ==============\n\n        (function ()\n        {\n            \/\/  google fonts already set\n            if ($R.availableGoogleFonts) { return; }\n\n            \/\/  set google fonts to these\n            var __google_fonts_array = [\n                \/* serif *\/ 'Arvo', 'Bentham', 'Cardo', 'Copse', 'Corben', 'Crimson Text', 'Droid Serif', 'Goudy Bookletter 1911', 'Gruppo', 'IM Fell', 'Josefin Slab', 'Kreon', 'Meddon', 'Merriweather', 'Neuton', 'OFL Sorts Mill Goudy TT', 'Old Standard TT', 'Philosopher', 'PT Serif', 'Radley', 'Tinos', 'Vollkorn',\n                \/* sans  *\/ 'Allerta', 'Anton', 'Arimo', 'Bevan', 'Buda', 'Cabin', 'Cantarell', 'Coda', 'Cuprum', 'Droid Sans', 'Geo', 'Josefin Sans', 'Lato', 'Lekton', 'Molengo', 'Nobile', 'Orbitron', 'PT Sans', 'Puritan', 'Raleway', 'Syncopate', 'Ubuntu', 'Yanone Kaffeesatz',\n                \/* fixed *\/ 'Anonymous Pro', 'Cousine', 'Droid Sans Mono', 'Inconsolata'\n            ];\n\n            \/\/  set\n            $R.availableGoogleFonts = {};\n            for (var i=0, ii=__google_fonts_array.length; i<ii; i++){\n                $R.availableGoogleFonts[__google_fonts_array[i]] = 1;\n            }\n        })();\n\n    \/\/  google fonts }\n\n    \/\/  default options {\n    \/\/  =================\n\n        $R.defaultOptions = \n        {\n            'text_font': \t\t\t$R.encode('\"PT Serif\"'),\n            'text_font_header': \t$R.encode('\"PT Serif\"'),\n            'text_font_monospace': \t$R.encode('Inconsolata'),\n            'text_size': \t\t\t$R.encode('16px'),\n            'text_line_height': \t$R.encode('1.5em'),\n            'box_width': \t\t\t$R.encode('36em'),\n            'color_background': \t$R.encode('#f3f2ee'),\n            'color_text': \t\t\t$R.encode('#1f0909'),\n            'color_links': \t\t\t$R.encode('#065588'),\n            'text_align': \t\t\t$R.encode('normal'),            \/* normal, justified *\/\n            'base': \t\t\t\t$R.encode('base__newsprint'),   \/* base__ newsprint, notable, night_owl *\/\n            'footnote_links': \t\t$R.encode('on_print'),          \/* on_print, always, never *\/\n            'large_graphics': \t\t$R.encode('do_nothing'),        \/* do_nothing, hide_on_print, hide_always *\/\n            'custom_css': \t\t\t('')\n        };\n\n    \/\/  default options }\n\n    \/\/  get css from options {\n    \/\/  ======================\n\n        $R.getCSSFromOptions = function (_options)\n        {\n            var _cssText = (''\n            +\t'#body { '\n            +\t\t'font-family: [=text_font]; '\n            +\t\t'font-size: [=text_size]; '\n            +\t\t'line-height: [=text_line_height]; '\n            +\t\t'color: [=color_text]; '\n            +\t\t'text-align: '+(_options['text_align'] == 'justified' ? 'justify' : 'left')+'; '\n            +\t'} '\n\n            +\t'#background { background-color: [=color_background]; } '\n\n            +\t'.setTextColorAsBackgroundColor { background-color: [=color_text]; } '\n            +\t'.setBackgroundColorAsTextColor { color: [=color_background]; } '\n\n            +\t'#box, .setBoxWidth { width: [=box_width]; } '\n\n            +\t'a { color: [=color_links]; } '\n            +\t'a:visited { color: [=color_text]; } '\n\n            +\t'@media print { body.footnote_links__on_print a, body.footnote_links__on_print a:hover { color: [=color_text] !important; text-decoration: none !important; } } '\n            +\t'body.footnote_links__always a, body.footnote_links__always a:hover { color: [=color_text] !important; text-decoration: none !important; } '\n\n            +\t'img { border-color: [=color_text]; } '\n            +\t'a img { border-color: [=color_links]; } '\n            +\t'a:visited img { border-color: [=color_text]; } '\n\n            +\t'h1 a, h2 a, a h1, a h2 { color: [=color_text]; } '\n            +\t'h1, h2, h3, h4, h5, h6 { font-family: [=text_font_header]; } '\n\n            +\t'pre { background-color: [=color_background]; } '\n            +\t'pre, code { font-family: [=text_font_monospace]; } '\n            +\t'hr { border-color: [=color_text]; } '\n\n            +\t'html.rtl #body #text { text-align: ' + (_options['text_align'] == 'justified' ? 'justify' : 'right')+' !important; } '\n            +\t'h1, h2, h3, h4, h5, h6 { text-align: left; } '\n            +\t'html.rtl h1, html.rtl h2, html.rtl h3, html.rtl h4, html.rtl h5, html.rtl h6 { text-align: right !important; } '\n\n            +\t'[=custom_css] '\n            ).replace(\n                \/\\[=([a-z_]+?)\\]\/gi,\n                function (_match, _key) { return _options[_key]; }\n            );\n\n            return _cssText;\n        }\n\n    \/\/  get css from options }\n\n    \/\/  apply options {\n    \/\/  ===============\n\n        \/\/\tvar\n        \/\/\t===\n\n            \/\/  _encodedOptions and _decodeOptions hold the options to be applied\n            \/\/\t$R.appliedOptions holds the options currently applied (encoded)\n            \/\/\t$R.loadedGoogleFonts holds the  currently loaded Google fonts URLs\n\n            $R.appliedOptions = {};\n            $R.loadedGoogleFonts = {};\n\n        \/\/\tapply options\n        \/\/\t=============\n            $R.applyOptions = function (_encodedOptions)\n            {\n                \/\/  possible options\n                \/\/  =================\n                    var _possible_options = $R.defaultOptions;\n\n                \/\/  our themes        \n                \/\/  ==========\n                    var _ourOwnThemes = '|theme-1|theme-2|theme-3|';\n\n                \/\/\tnull\n                \/\/\t====\n                    if (_encodedOptions); else { _encodedOptions = {}; }\n\n                \/\/  blank, invalid\n                \/\/  ==============\n                    for (var _option in _possible_options)\n                    {\n                        switch (true)\n                        {\n                            case (!(_option in _encodedOptions)):\n                            case (!(_encodedOptions[_option] > '')):\n                                \/\/  either current, or default\n                                _encodedOptions[_option] = ($R.appliedOptions[_option] ? $R.appliedOptions[_option] : _possible_options[_option]);\n                                break;\n                        }\n                    }\n\n                \/\/\twhat to do\n                \/\/\t==========\n\n                    var \n                        _resetBase = false,\n                        _resetOptions = false, \n                        _decodedOptions = {}\n                    ;\n\n                \/\/  set stuff\n                \/\/  =========\n\n                    \/\/\t_resetBase\n                    switch (true)\n                    {\n                        case (!('base' in  $R.appliedOptions)):\n                        case (!(_encodedOptions['base'] == $R.appliedOptions['base'])):\n                            _resetBase = true;\n                            break;\n                    }\n\n                    \/\/\t_resetOptions\n                    for (var _option in _possible_options)\n                    {\n                        switch (true)\n                        {\n                            case (!(_option in $R.appliedOptions)):\n                            case (!(_encodedOptions[_option] == $R.appliedOptions[_option])):\n                                _resetOptions = true;\n                                break;\n                        }\n\n                        \/\/\tstop\n                        if (_resetOptions) { break; }\n                    }\t\n\n                    \/\/\tappliedOptions and optionsToApply\n                    for (var _option in _possible_options)\n                    {\n                        $R.appliedOptions[_option] = _encodedOptions[_option];\n                        _decodedOptions[_option] = $R.decode(_encodedOptions[_option]);\n                    }\n\n                \/\/\tapply stuff\n                \/\/\t===========\n\n                    \/\/  base\n                    if (_resetBase)\n                    {\n                        \/\/\tremove old\n                        $R.$iframeDocument.find('#baseCSS').remove();\n\n                        \/\/\tadd new\n                        if (_decodedOptions['base'] > '')\n                        {\n                            $R.$iframeDocument.find('head').append(''\n                                + '\t\n\t<link id=\"baseCSS\" href=\"'\n                                + $R.settings.cssPath + _decodedOptions['base']+'.css'\n                                + '\" rel=\"stylesheet\" type=\"text\/css\" \/>'\n                            );\n                        }\n                    }\n\n                    \/\/\toptions\n                    if (_resetOptions)\n                    {\n                        var _cssText = $R.getCSSFromOptions(_decodedOptions);\n\n                        \/\/\tremove old\n                        \/\/\t==========\n                            $R.$iframeDocument.find('#optionsCSS').remove();\n\n                        \/\/\tnew\n                        \/\/\t===\n                            var _cssElement = document.createElement('style');\n                                _cssElement.setAttribute('type', 'text\/css');\n                                _cssElement.setAttribute('id', 'optionsCSS');\n\n                            if (_cssElement.styleSheet) { _cssElement.styleSheet.cssText = _cssText; }\n                                else { _cssElement.appendChild(document.createTextNode(_cssText)); }\n\n                            $R.$iframeDocument.find('head').append(_cssElement);\n\n                        \/\/\tbody classes\n                        \/\/\t============\n                            $R.$iframeDocument.find('body')\n                                .removeClass('footnote_links__on_print footnote_links__always footnote_links__never')\n                                .removeClass('large_graphics__do_nothing large_graphics__hide_on_print large_graphics__hide_always')\n                                .addClass('footnote_links__'+_decodedOptions['footnote_links'])\n                                .addClass('large_graphics__'+_decodedOptions['large_graphics'])\n                            ;\n                    }\t\n            };\n\n    \/\/  apply options }\n\n    \/\/  apply google fonts  {\n    \/\/  =====================\n\n        $R.getGoogleFontsFromOptions = function (_options)\n        {\n            var \n                _fonts = {},\n                _fonts_urls = [],\n                _check_font = function (_match, _font) {\n                    if (_font in $R.availableGoogleFonts) { _fonts[_font] = 1; }\n                }\n            ;\n\n            \/\/\tbody\n            \/\/\t====\n                _options['text_font'].replace(\/\"([^\",]+)\"\/gi, _check_font);\n                _options['text_font'].replace(\/([^\",\\s]+)\/gi, _check_font);\t\t\t\t\n\n            \/\/\theaders\n            \/\/\t=======\n                _options['text_font_header'].replace(\/\"([^\",]+)\"\/gi, _check_font);\n                _options['text_font_header'].replace(\/([^\",\\s]+)\/gi, _check_font);\t\t\t\t\n\n            \/\/\tmonospace\n            \/\/\t=========\n                _options['text_font_monospace'].replace(\/\"([^\",]+)\"\/gi, _check_font);\n                _options['text_font_monospace'].replace(\/([^\",\\s]+)\/gi, _check_font);\t\t\t\t\n\n            \/\/\tcustom css\n            \/\/\t==========\n                _options['custom_css'].replace(\/font-family: \"([^\",]+)\"\/gi, _check_font);\n                _options['custom_css'].replace(\/font-family: ([^\",\\s]+)\/gi, _check_font);\n\n            \/\/\treturn\n            \/\/\t======\n\n                \/\/\ttransform to array\n                for (var _font in _fonts)\n                {\n                    _fonts_urls.push(''\n                        + 'http:\/\/fonts.googleapis.com\/css?family='\n                        + _font.replace(\/\\s+\/g, '+')\n                        + ':regular,bold,italic'\n                    );\n                }\n\n                \/\/\treturn\n                return _fonts_urls;\n        };\n\n        $R.loadGoogleFontsRequiredByAppliedOptions = function ()\n        {\n            \/\/  decode options\n            var _decodedOptions = {};\n            for (var _option in $R.appliedOptions)\n                { _decodedOptions[_option] = $R.decode($R.appliedOptions[_option]); }\n\n            \/\/\tget\n            var _fonts_urls = $R.getGoogleFontsFromOptions(_decodedOptions);\n\n            \/\/\tapply\n            for (var i=0,_i=_fonts_urls.length; i<_i; i++) {\n                \/* loaded *\/    if ($R.loadedGoogleFonts[_fonts_urls[i]]) { continue; }\n                \/* load *\/      $R.$iframeDocument.find('head').append('\t\n\t<link href=\"'+_fonts_urls[i]+'\" rel=\"stylesheet\" type=\"text\/css\" \/>');\n                \/* mark *\/      $R.loadedGoogleFonts[_fonts_urls[i]] = 1;\n            }\n        };\n\n    \/\/  apply google fonts }\n\n    \/\/  create frame {\n    \/\/  ==============\n\n        $R.createFrame = function ()\n        {\n            \/\/  default id\n            \/\/  ==========\n                _frame_id = $R.settings.onCreateFrameUseThisId;\n\n            \/\/\tiframe\n            \/\/\t======\n                var\n                    _iframeElement = $R.document.createElement('div'),\n                    _iframeHTML = ''\n                    +\t'\n\n\n\n<div id=\"html\">'\n                    +\t    '\n\n\n\n<div id=\"body\">'\n                    +\t    \t'\n\n\n\n<div id=\"bodyContent\">'\n\n                    +\t            '\n\n\n\n<div id=\"box\">'\n                    +\t    \t        '\n\n\n\n<div id=\"box_inner\">'\n                    +\t    \t\t        '\n\n\n\n<div id=\"text\">'\n                    +\t    \t\t\t        '\n\n\n\n<div id=\"pages\"><\/div>\n\n\n\n\n'\n                    +\t    \t\t\t        '\n\n\n\n<ol id=\"footnotedLinks\"><\/ol>\n\n\n\n\n'\n                    +\t    \t\t        '\n<\/div>\n\n\n\n\n'\n                    +\t    \t        '\n<\/div>\n\n\n\n\n'\n                    +\t            '\n<\/div>\n\n\n\n\n'\n                    +\t            '\n\n\n\n<div id=\"background\"><\/div>\n\n\n\n\n'\n                    +           '\n<\/div>\n\n\n\n\n'\n                    +\t    '\n<\/div>\n\n\n\n\n'\n                    +\t'\n<\/div>\n\n\n\n\n'\n                ;\n                _iframeElement.setAttribute('id', _frame_id);\n\n            \/\/\tcss\n            \/\/\t===\n\n                if ($R.settings.onCreateFrameDoNotInsertCSS); else\n                {\n                    var \n                        _cssElement = $R.document.createElement('style'),\n                        _cssText = ''\n                        +\t'#'+_frame_id+\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wat is het geheim van organisaties die jarenlang goed presteren? Wat maakt dat de ene leider veel invloed krijgt, inspirerend is, gevolgd wordt en een andere die mogelijk intelligenter en ijveriger is, niet of nauwelijks? Een docent aan de \u00a0Columbia university in New York, Simon Sinek, die zelf geplaagd werd door een gebrek aan motivatie [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=\/wp\/v2\/posts\/774"}],"collection":[{"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=774"}],"version-history":[{"count":6,"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=\/wp\/v2\/posts\/774\/revisions"}],"predecessor-version":[{"id":786,"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=\/wp\/v2\/posts\/774\/revisions\/786"}],"wp:attachment":[{"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=774"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.rensrottier.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}