/* 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 != "") {
        //var s_esc = typeof(encodeURIComponent) != "undefined" ? encodeURIComponent(s) : escape(s,1);
        var sep = answersURL.indexOf("?")<0 ? "?" : "&";
		var newurl = answersURL + s + sep + "fw=" + fw;
		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 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;
	}
}

