/* modified version of original answers_embed1.js * points to nytimes.com Reference/Answers.com search * answers_embed1.js -- enables alt-click inside document and call Answers.com query * Disclaimer: This is a beta version. * Copyright (c) Answers Corporation 1999-2006. All rights reserved. */ var openBlockedPopupsInline=false; var trigger; var triggerModKey; if (typeof trigger == "undefined") trigger = "click"; // or dblclick if (typeof triggerModKey == "undefined") triggerModKey = "altKey"; var moz=false; var isOpera = navigator.userAgent.toLowerCase().indexOf("opera") != -1; if (document.all == null && document.getElementById != null && document.layers == null) { moz = true; document.addEventListener(trigger, function (e) { window.event = e;}, true); // using capture } function ActivateAnswers() { if (typeof triggerModKey != "undefined" && triggerModKey == "altKey") triggerModCond = event.altKey; else triggerModCond = true; if (!moz && window.event && triggerModCond && document && document.body) { var wordsRange = 4; var rng; rng = document.selection.createRange(); rng.collapse(); rng.expand("word"); if (rng.text.length == 0 || document.selection.type == "None") { if (event && event.srcElement && event.srcElement.isTextEdit) { rng=event.srcElement.createTextRange(); } else { var el = event.srcElement.parentTextEdit; rng = el.createTextRange(); } rng.moveToPoint(event.clientX, event.clientY); } originalRng = rng.duplicate(); rng.expand("word"); var str = ""; var iStartWord = -1; var bFirstWord, bLastWord; var afterWordsCount = 0; var beforeWordsCount = 0; // move back while (!bFirstWord && rng.text && beforeWordsCount<=wordsRange) { if (-1 != rng.text.search(/\S/) ) { str = rng.text + str; if (rng.text.search(/\s/) > -1 || iStartWord==-1) { beforeWordsCount++; iStartWord++; } } if (rng.move("word", -1)) rng.expand("word"); else bFirstWord = true; } // move forward rng = originalRng; if (rng.move("word", 1)) rng.expand("word"); else bLastWord = true; while (!bLastWord && rng.text && afterWordsCount 0 && iStartWord >= 0) LaunchWBQuery(str,iStartWord, null); event.returnValue = false; return false; } else if (triggerModCond && event.rangeParent && event.rangeParent.nodeType == document.TEXT_NODE) { var rangeOffset = event.rangeOffset; var range = document.createRange(); range.selectNode(event.rangeParent); var rngstr = range.toString(); range.detach(); // remove leading white space var nonWS = rngstr.search(/\S/); rngstr = rngstr.substr(nonWS).replace(/(\r|\n)/, " "); rangeOffset -= nonWS; // which word is the focus word - i.e. which word the rangeOffset is in var startstr = rngstr.substring(0, rangeOffset); var endstr = rngstr.substring(rangeOffset, rngstr.length); var wordlist = startstr.split(/\s+/); var wordlist2 = endstr.split(/\s+/); if (wordlist.length > 4) wordlist = wordlist.slice(wordlist.length-4); if (wordlist2.length > 5) wordlist2 = wordlist2.slice(0, 4); rngstr = wordlist.join(" ") + wordlist2.join(" "); var iStartWord = wordlist.length - 1; if (rngstr.length > 0 && iStartWord >= 0) { LaunchWBQuery(rngstr, iStartWord, null); } event.preventDefault(); event.stopPropagation(); } } function LaunchWBQuery(s, fw, myobj) { if (typeof fw == "undefined") fw = ''; if (typeof answersURL == "undefined" || answersURL == "") { if (location.host == "lac") answersURL = "http://lac/"; else answersURL = "http://query.nytimes.com/search/query?srchst=ref&query="; } if (typeof s == "undefined" || s == null) { if (typeof myobj != "undefined" && myobj != null && typeof myobj.s != "undefined") s = myobj.s.value; else s = ""; } if (s != "") { if (typeof ANSW != "undefined" && typeof (ANSW.b5) != "undefined") { if (document.documentElement && document.documentElement.scrollTop) theTop = document.documentElement.scrollTop; else if (document.body) theTop = document.body.scrollTop if (document.documentElement && document.documentElement.scrollLeft) theX = document.documentElement.scrollLeft; else if (document.body) theX = document.body.scrollLeft y = theTop + event.clientY; x = theX = event.clientX; if (typeof (ANSW.nafid) != "undefined") ANSW.b5.FireQuery(s,y,x,fw,ANSW.nafid); else ANSW.b5.FireQuery(s,y,x,fw); } else { var s_esc = ""; for (var i = 0; i< s.length;i++){ var c = s.charCodeAt(i); if (c==8216||c==8217) s_esc += "'" else if (c==8220||c==8221)s_esc+='"' else if (c==8211||c==8212)s_esc+='-' else s_esc += s.charAt(i); } var sep = answersURL.indexOf("?")<0 ? "?" : "&"; var newurl = answersURL + s_esc + sep + "fw=" + fw; var newwin = window.open(newurl,'GuruWnd','height=450,width=800,location,menubar,toolbar,status,resizable,scrollbars'); if (newwin) newwin.focus(); else if (openBlockedPopupsInline)location.href = newurl; } } else return false; } function noSelect() { if (event && event.ctrlKey && event.altKey) return false; } if (document.addEventListener) document.addEventListener(trigger, ActivateAnswers, true); else if (document.all) { if (trigger == "dblclick") document.ondblclick = ActivateAnswers; else if (trigger == "click"){ document.onclick = ActivateAnswers; document.onselectstart = noSelect; } }