document.write('<table class="KeywordBox" id="atsearch_nazoru_popup" style="visibility:hidden; position:absolute; z-index:1000; margin: 5px 0;padding: 5px 5px;background-color: #FFFBC1;border: 1px #c0c0c0 solid;"><tr><td class="exptxt" style="text-align:left;"><span id="atsearch_nazoru_word"></span>を</td></tr><tr><td><img src="/colleguide/v2/images/scope.gif" alt="" width="17" height="18" align="absmiddle"><a href="#" id="atsearch_nazoru_search">@searchで検索</a></td></tr></table>');
var atsearch_nazoru_timeid;

document.onmouseup = function(e){
	if(navigator.userAgent.indexOf("MSIE 8.") != -1){
		return;
	}

	var selection = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text);
	selection=selection.replace(/^[\s|　]+|[\s|　]+$/g, "").replace(/[\n|\r]/g, "");
	if(atsearch_nazoru_check_object_for_display(e,selection)){
		return;
	}
	clearTimeout(atsearch_nazoru_timeid);
	var ss = "";
	if(typeof(atsearch_nazoru_ss) == 'undefined' || String(atsearch_nazoru_ss) == ""){
		ss = "nshuncolle";
	}else{
		ss = encodeURIComponent(atsearch_nazoru_ss);
	}
	var searchUrlBase = "http://search.nifty.com/cgi-bin/search.cgi?select=2&cflg=%E6%A4%9C%E7%B4%A2&Text=_keyword_&ss="+ss;
	if( atsearch_nazoru_check_str(selection) ){
		document.getElementById("atsearch_nazoru_popup").style.width = "auto";
		document.getElementById("atsearch_nazoru_popup").style.height = "auto";
		document.getElementById("atsearch_nazoru_popup").style.top = 0 +"px";
		document.getElementById("atsearch_nazoru_popup").style.left = 0 +"px";
		
		document.getElementById('atsearch_nazoru_word').innerHTML = atsearch_nazoru_htmlEscape(selection);
		document.getElementById("atsearch_nazoru_search").href = searchUrlBase.replace("_keyword_",encodeURIComponent(selection));
		
		var elementheight = document.getElementById("atsearch_nazoru_popup").offsetHeight;
		var elementwidth = document.getElementById("atsearch_nazoru_popup").offsetWidth;
		document.getElementById("atsearch_nazoru_popup").style.height = elementheight + "px";
		document.getElementById("atsearch_nazoru_popup").style.width = elementwidth + "px";
		document.getElementById("atsearch_nazoru_popup").style.top = atsearch_nazoru_getY(e,elementheight+10) +"px";
		document.getElementById("atsearch_nazoru_popup").style.left = atsearch_nazoru_getX(e,elementwidth+6) +"px";
		
		document.getElementById("atsearch_nazoru_popup").style.visibility = "visible";
		atsearch_nazoru_timeid = setTimeout(function(){document.getElementById("atsearch_nazoru_popup").style.visibility = "hidden";},5000);
	}else{
		document.getElementById("atsearch_nazoru_popup").style.visibility = "hidden";
		document.getElementById('atsearch_nazoru_word').innerHTML = "";
	}
}

/**
 * X座標取得
 */
function atsearch_nazoru_getX(e,elex)
{
	var xmin = (document.body.scrollLeft || document.documentElement.scrollLeft);
	var xmax = 0;
	var x = 0;
	var scrollbarsize = 20;
	var slidesize = -20;
	if(window.opera)
	{
		xmax = xmin + innerWidth - elex - scrollbarsize;
		x = xmin + e.clientX;
	}
	else if(document.all)
	{
		xmax = xmin + (document.documentElement.clientWidth || document.body.clientWidth) - elex;
		x = xmin + event.clientX;
	}
	else if(document.layers || document.getElementById)
	{
		xmax = xmin + innerWidth - elex - scrollbarsize;
		x = e.pageX;
	}
	x += slidesize;
	if(xmax <= x){
		x = xmax;
	}
	if(x <= xmin){
		x = xmin;
	}
	return x;
}

/**
 * Y座標取得
 */
function atsearch_nazoru_getY(e,eley)
{
	var ymin = (document.body.scrollTop || document.documentElement.scrollTop);
	var ymax = 0;
	var y = 0;
	var scrollbarsize = 20;
	var slidesize = 5;
	if(window.opera)
	{
		ymax = ymin + innerHeight - eley - scrollbarsize;
		y = ymin + e.clientY;
	}
	else if(document.all)
	{
		ymax = ymin + (document.documentElement.clientHeight || document.body.clientHeight) - eley;
		y = ymin + event.clientY;
	}
	else if(document.layers || document.getElementById)
	{
		ymax = ymin + innerHeight - eley - scrollbarsize;
		y = e.pageY;
	}
	y += slidesize;
	if(ymax <= y){
		y = ymax;
	}
	if(y <= ymin){
		y = ymin;
	}
	return y;
}

function atsearch_nazoru_check_object_for_display(e,str){
	if(!e){
		e = event;
	}
	var clbtn;
	if(e.button){
		clbtn = e.button;
	}else{
		clbtn = e.which;
	}
	if(clbtn != 1){
		return true;
	}
	
	var popstr = document.getElementById('atsearch_nazoru_word').innerHTML.replace(/\s+/g, " ");
	str = str.replace(/\s+/g, " ");
	var ele;
	if(e.srcElement){
		ele = e.srcElement;
	}else{
		ele = e.target;
	}
	if( popstr == str.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;") ){
		if(atsearch_nazoru_check_tagname(ele.tagName)){
			return true;
		}else if(navigator.userAgent.indexOf("Safari") != -1 && !ele.tagName && ele.parentNode && atsearch_nazoru_check_tagname(ele.parentNode.tagName) ){
			return true;
		}
	}
	
	return false;
}

function atsearch_nazoru_check_tagname(tag){
	var ng_name = new Array("IMG","A","OBJECT","EMBED");
	for(var i=0; i<ng_name.length; i++){
		if(tag.toUpperCase() == ng_name[i]){
			return true;
		}
	}
	return false;
}

function atsearch_nazoru_htmlEscape(str){
	if( str != null ){
		str = str.replace(/&/g,"&amp;");
		str = str.replace(/>/g,"&gt;");
		str = str.replace(/</g,"&lt;");
		str = str.replace(/'/g,"&#039;");
		str = str.replace(/"/g,"&quot;");
	}
	return str;
}

function atsearch_nazoru_countByte(str){
	var len = 0;
	for (var j=0; j < str.length; j++) {
		var c = str.charCodeAt(j);
		if( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4) ){
			len++;
		}else{
			len += 2;
		}
	}
	return len;
}

function atsearch_nazoru_check_str(str){
	if( atsearch_nazoru_countByte(str) >= 3 && atsearch_nazoru_countByte(str) < 256 ){
		return true;
	}else if(atsearch_nazoru_countByte(str) == 2){
		var c = str.charCodeAt(0);
		if( str.length != 1 ||
			( c >= 0x4e00 && c <= 0x9fff ) ||
			( c >= 0x3400 && c <= 0x4dbf ) ||
			( c >= 0x20000 && c <= 0x2a6df ) ||
			( c >= 0xf900 && c <= 0xfaff ) ||
			( c >= 0x2f800 && c <= 0x2fa1f ) ){
			return true;
		}
	}
	return false;
}
