/* 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<wordsRange) {
                if (-1 != rng.text.search(/\S/) ) {
                        str += rng.text ;
                        afterWordsCount++;
                }
                if (rng.move("word", 1)) rng.expand("word");
                else bLastWord = true;
        }


        if (str.length > 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;
        }
}

