var $C={indicator:"img/indicator_big.gif",highlightItemColor:"#ddffdd",icon_em:"img/emphasis.gif",icon_del:"img/deletion.gif",button_em:"img/button_promote.png",button_del:"img/button_demote.png",emphasis:'<img src="'+this.icon_em+'" class="emphasis icon">',deletion:'<img src="'+this.icon_del+'" class="del icon">',stopWords:{"COM":true,"NET":true,"WWW":true,"HTTP":true,"AND":true,"THE":true,"WEB":true,"FOR":true,"CGI":true,"HATENA":true,"HTML":true,"COPY":true,"RIGHTS":true,"RIGHT":true,"INFO":true,"INC":true,"TOP":true,"INDEX":true,"YAHOO":true,"GOOGLE":true,"HOME":true,"GOO":true,"ALL":true,"TEL":true,"FAX":true,"SITE":true,"ISBN":true,"MAIL":true,"PAGE":true,"ABOUT":true,"PLEASE":true,"YOU":true,"サイト":true,"ホームページ":true,"ページ":true,"ログイン":true,"ヘルプ":true},morphReg:new RegExp()};if($.browser.opera){$C.morphReg.compile("("+
"[ァ-ヴー]+"+
"|"+
"[a-zA-Z]+['-]*[a-zA-Z]+"+
"|"+
"[一-龠々〆ヵヶァ-ヴー]+?[一-龠々〆ヵヶァ-ヴーあ-ん・]*?[ぁ-ん]{2,}"+
"|"+
"[一-龠々〆ヵヶァ-ヴー]+[一-龠々〆ヵヶァ-ヴーぁ-ん]+[一-龠々〆ヵヶ]+"+
"|"+
"[0-9]{3,}[一-龠々〆ヵヶァ-ヴーa-zA-Zあ-ん]+"+
"|"+
"[0-9]{2}月[0-9]{2}日"+
"|"+
"[一-龠々〆ヵヶァ-ヴー]+[ ][一-龠々〆ヵヶァ-ヴー]+"+
"|"+
"[一-龠々〆ヵヶァ-ヴーa-zA-Z]{2,}"+
")",'g');}
else{$C.morphReg.compile("("+
"[ァ-ヴ]+[・]*[ァ-ヴー]+"+
"|"+
"[a-zA-Z]+['-]*[a-zA-Z]+"+
+"|"+
"[一-龠々〆ヵヶァ-ヴー]+?[一-龠々〆ヵヶァ-ヴーあ-ん・]*?[ぁ-ん]{2,}"+
"|"+
"[一-龠々〆ヵヶァ-ヴー]+[一-龠々〆ヵヶァ-ヴーぁ-ん]+[一-龠々〆ヵヶ]+"+
"|"+
"[0-9]{3,}[一-龠々〆ヵヶァ-ヴーa-zA-Zあ-ん]+"+
"|"+
"[0-9]{2}月[0-9]{2}日"+
"|"+
"[一-龠々〆ヵヶァ-ヴー]+[ ][一-龠々〆ヵヶァ-ヴー]+"+
"|"+
"[一-龠々〆ヵヶァ-ヴーa-zA-Z]{2,}"+
")",'g');}
function YahooSearch(){this.params="";this.callback="";this.timer="";this.initialize.apply(this,arguments);}
YahooSearch.prototype={baseUrl:"./php/request.php?",name:"yahoo",initialize:function(){},doSearch:function(params,interval,callback){this.params=params;this.callback=callback;this.url=this.buildUrl(params);setTimeout(b(this,this.sendRequest),interval);},buildUrl:function(params){var url=this.baseUrl+
"&p="+encodeURIComponent(params.query)+
"&num="+params.num+
"&lang="+params.lang;log(url);return url;},sendRequest:function(){var url=this.url;log(url);$.get(url,b(this,this.recieveResults));},recieveResults:function(response){try{var result=eval("("+response+")");var query=result.query;var num=result.num;var totalResults=result.totalResults;var rawItems=result.items;var items=[];var rank=1;for(var i=0,n=rawItems.length;i<n;i++){items.push(new YahooItem(rawItems[i],rank++));}
this.callback(items,query,totalResults,items.length);}
catch(e){this.callback([],this.params.query,0,0,this.params.block);}}};function YahooItem(){this.title="";this.s_title="";this.url="";this.s_url="";this.summary="";this.s_sumary="";this.originalRank=0;this.currentRank=0;this.element=null;this.morphed=false;this.id="";this.elm=null;this.term="";this.content="";this.initialize.apply(this,arguments);}
YahooItem.prototype={maxUrlLength:75,strongTag:"<strong>",strongCloseTag:"</strong>",initialize:function(rawItem,rank){log(rawItem.title);this.title=rawItem.title;this.s_title=$R.escapeHTML(rawItem.title);this.url=rawItem.url;this.s_url=this.url;try{this.s_url=decodeURI(this.url);}catch(e){}
this.s_url=$R.escapeHTML(this.s_url.substring(0,Math.min(75,this.s_url.length)));this.summary=rawItem.summary;this.s_summary=$R.escapeHTML(rawItem.summary);this.originalRank=rank;this.currentRank=rank;this.reranked=false;this.content=this.title+" "+this.summary;var strong=this.strongTag;var strong_close=this.strongCloseTag;for(var i=0,n=$R.queryList.length;i<n;i++){this.s_title=this.s_title.replace($R.queryRegList[i],function(match){return strong+match+strong_close;});this.s_summary=this.s_summary.replace($R.queryRegList[i],function(match){return strong+match+strong_close;});}},format:'<div class="item">\r\n'+
'<a href="'+"#url#"+'" target="_blank"><span class="title" type="title">'+"#s_title#"+'</span></a>\r\n'+
'<div class="summaryarea" type="summary">\r\n'+
'<span class="summary" type="summary">'+"#s_summary#"+'</span>\r\n'+
'</div>\r\n'+
'<span class="url" type="smallurl">'+"#s_url#"+'　元:'+"#originalRank#"+'位</span>\r\n'+
'</div>\r\n',str_url:"#url#",str_s_title:"#s_title#",str_s_summary:"#s_summary#",str_s_url:"#s_url#",str_o_rank:"#originalRank#",string_title:"title",string_url:'smallurl',string_summary:"summary",string_tag:"tag",string_original:"original",string_content:"content",string_type:"type",toHtml:function(){try{var elm=document.createElement('li');elm.id="item"+this.currentRank;this.id=elm.id;elm.setAttribute(this.string_type,this.string_content);elm.setAttribute(this.string_original,this.originalRank);var source=this.format.replace(this.str_url,this.url).
replace(this.str_s_title,this.s_title).
replace(this.str_s_summary,this.s_summary).
replace(this.str_s_url,this.s_url).
replace(this.str_o_rank,this.originalRank);elm.innerHTML=source;this.elm=elm;return elm;}catch(e){return null;}},makeElementFromSource:function(source){var elm=document.createElement('li');elm.id="item"+this.currentRank;this.id=elm.id;elm.setAttribute(this.string_type,this.string_content);elm.setAttribute(this.string_original,this.originalRank);elm.innerHTML=source;$("#result").get(0).replaceChild(this.prev,elm);this.elm=elm;this.reranked=false;},makeElementfromElement:function(element){if(this.reranked){this.elm=element;}
this.reranked=false;},isContain:function(termReg,type){var content=this.content;switch(type){case this.string_title:case this.string_summary:case this.string_tag:if(content.search(termReg)!=-1){return true;}
break;case this.string_url:if(this.url.search(termReg)!=-1){return true;}
break;}
return false;},termEmphasis:function(term,termReg,replaceReg){this.term=term;this.curElement=this.elm;this.curType="em";this.termReg=termReg;this.replaceReg=replaceReg;this.reranked=true;this.highlightKeyword(this.elm,term,"em",termReg,replaceReg);},termDeletion:function(term,termReg,replaceReg){this.term=term;this.curElement=this.elm;this.curType="del";this.termReg=termReg;this.replaceReg=replaceReg;this.reranked=true;this.highlightKeyword(this.elm,term,"del",termReg,replaceReg);},s_span:"span",s_span1:'<span type="term" value="',s_span2:'" class="',s_span3:'">',s_span4:"</span>",highlightKeyword_call:function(){var term=this.term;var type=this.curType;var element=this.curElement;var termReg=this.termReg;var replaceReg=this.replaceReg;var elms=element.childNodes;for(var i=0,n=elms.length;i<n;i++){var elm=elms[i];var nodeType=elm.nodeType;var nodeValue=elm.nodeValue;if(nodeType==3){if(nodeValue.search(termReg)!=-1){var elements=nodeValue.split(term);var span=document.createElement(s_span);var text=nodeValue.replace(replaceReg,this.s_span1+term+this.s_span2+type+this.s_span3+term+this.s_span4);span.innerHTML=text;element.replaceChild(span,elm);}}
this.curElement=elm;setTimeout(b(this,this.highlightKeyword_call()),10);}},highlightKeyword:function(element,term,type,termReg,replaceReg){var elms=element.childNodes;for(var i=0,n=elms.length;i<n;i++){var elm=elms[i];var nodeValue=elm.nodeValue;var nodeType=elm.nodeType;if(nodeType==3){if(nodeValue.search(termReg)!=-1){var elements=nodeValue.split(term);var span=document.createElement("span");var text=$R.escapeHTML(nodeValue).replace(replaceReg,function(match){return'<span nodetype="term" value="'+match+'" class="'+type+'">'+match+"</span>";});span.innerHTML=text;element.replaceChild(span,elm);}}
this.highlightKeyword(elm,term,type,termReg,replaceReg);}},doMorph_call:function(){var element=this.curMorphElement;var elms=element.childNodes;for(var i=0,n=elms.length;i<n;i++){var elm=elms[i];if(elm.nodeType==3){var text=elm.nodeValue.replace($C.morphReg,"<span class=\"morph\">$1</span>");log(text);var span=document.createElement('span');span.innerHTML=text;element.replaceChild(span,elm);var childs=span.childNodes;for(var j=0,k=childs.length;j<k;j++){if(childs[j].tagName&&childs[j].tagName.toLowerCase()=="span"){$(childs[j]).bind("click",b($E,$E.termElementClick));}}}
this.curMorphElement=elm;setTimeout(b(this,this.doMorph_call()),300);}},doMorph:function(element){var elms=element.childNodes;for(var i=0,n=elms.length;i<n;i++){var elm=elms[i];if(elm.nodeType==3){log(elm.nodeValue);var text=elm.nodeValue.replace($C.morphReg,"<span class=\"morph\">$1</span>");log(text);var span=document.createElement('span');span.innerHTML=text;element.replaceChild(span,elm);var childs=span.childNodes;for(var j=0,k=childs.length;j<k;j++){if(childs[j].tagName&&childs[j].tagName.toLowerCase()=="span"){$(childs[j]).bind($("#loading").get(0).innerHTML,b($E,$E.termElementClick));}}}
this.doMorph(elm);}}};function MorphAnalyzer(){this.query="";this.block=0;this.from_num=0;this.to_num=0;this.tfList=[];this.totalcount=0;this.callback=null;this.initialize.apply(this,arguments);}
MorphAnalyzer.prototype={minLength:2,maxLength:7,maxTerms:30,initialize:function(query,block,from_num,to_num){this.query=query;this.block=block;this.from_num=from_num;this.to_num=to_num;},callDoAnalyze:function(callback,interval){this.callback=callback;setTimeout(b(this,this.doAnalyze),interval);},include:function(tfList,target){var limit=Math.min(tfList.length,5);origin=target;for(var i=0;i<limit;i++){var term=tfList[i][0];term=term.replace(" ","");target=target.replace(" ","");if(term!=origin&&term.search(target)>=0){return true;}}
return false;},removeStopWords:function(tfList){list=[];var query=this.query.replace(/[\s ]/g,"");var count=0;var baseReg=new RegExp("["+$R.escapeRegExp(query)+"]","g");var querylen=query.length;var queryRegList=$R.queryRegList;var reg_alpha_three=new RegExp();reg_alpha_three.compile(/^[a-zA-Z0-9]{1,2}$/);var added={};for(var i=0,n=tfList.length;i<n;i++){var item=tfList[i];var term=item[0];var tf=item[1];if(query.search(term)>=0||term.search(query)>=0){continue;}
if(term.length>querylen&&term.replace(baseReg,"").length<=1){continue;}
if(added[term.toUpperCase()]){continue;}
if(term.match(reg_alpha_three)){continue;}
if($C.stopWords[term.toUpperCase()]){continue;}
if(this.include(tfList,term)){continue;}
var contain=false
for(var j=0,k=queryRegList.length;j<k;j++){if(term.match(queryRegList[j])){contain=true;break;}}
if(contain){continue;}
list.push(item);count++;added[term.toUpperCase()]=true;if(count>=this.maxTerms){break;}}
return list;},doAnalyze:function(){var tf={};for(var i=this.from_num;i<=this.to_num;i++){this.doAnalyzeItem(tf,$R.items[i]);}
var tfList=[];$.each(tf,function(key,value){tfList.push([key,value]);});tfList.sort(function(a,b){return b[1]-a[1];});tfList=this.removeStopWords(tfList);var newTfList=[];var totalcount=0;var maxCount=0.0;var minCount=100.0;var rank=1;for(i=0,n=Math.min(this.maxTerms,tfList.length);i<n;i++){maxCount=Math.max(maxCount,tfList[i][1]);minCount=Math.min(minCount,tfList[i][1]);tfList[i][2]=rank++;newTfList.push(tfList[i]);totalcount+=tfList[i][1];}
newTfList.sort(function(a,b){return b[0]<a[0];});this.tfList=newTfList;this.totalcount=totalcount;this.maxCount=maxCount;this.minCount=minCount;this.callback(this.block,this.toHtml());},format_tag:'<nobr><span type="tag" class="morph tag #tagclass#" size="#size#" style="font-size:#size#%;" count="#count#" rank="#rank#">#term#</span></nobr>\r\n',format_whitespace:' ',reg_size:/#size#/g,s_count:"#count#",s_term:"#term#",format_header:"<span>#from#位　〜　#to#位</span>",toHtml:function(){var buf=[];buf.push(this.format_header.replace("#from#",this.from_num+1).replace('#to#',this.to_num+1));buf.push('<div class="cloud" id="cloud'+this.block+'" >\r\n');for(var i=0,n=this.tfList.length;i<n;i++){var tf=this.tfList[i];var size=this.getTagSize2(tf[1],this.minCount,this.maxCount);var tagclass=this.getTagClass(size);buf.push(this.format_tag.replace(/#size#/g,size).replace(this.s_count,tf[1]).replace(this.s_term,tf[0]).replace('#tagclass#',tagclass).replace('#rank#',tf[2]));buf.push(this.format_whitespace);}
buf.push('</div>\r\n');return buf.join('');},doAnalyzeItem:function(tfList,item){var query=$R.query;var s_undefined="undefined";if((typeof item.already==s_undefined)){var already={};var content=item.content;var tokens=content.match($C.morphReg);if(tokens&&tokens.length>=1){for(var i=0,n=tokens.length;i<n;i++){var token=tokens[i];var english=false;if(already[token]){continue;}
if(token.length>=this.minLength&&token.length<=this.maxLength){if(typeof tfList[token]==s_undefined){tfList[token]=1;}
else{tfList[token]++;}
already[token]=true;}}}
item.already=already;}
else{var morphs=item.already;$.each(morphs,function(token,temp){if(typeof tfList[token]==s_undefined){tfList[token]=1;}
else{tfList[token]++;}});}},getTagSize2:function(count,min,max){var base=80;var size=80+base*(count-min)/(max-min);return Math.floor(size);},getTagClass:function(size){if(size>=160){return"tag1";}
else{return"";}}};var TagCloud={completeFlags:[],interval:200,initialize:function(){$('#tagcloud').get(0).innerHTML="";},createTagCloud:function(){var resultNum=$R.items.length;var unit=Math.ceil($R.items.length/2);var loop=Math.floor((resultNum-1)/unit)+1;var query=$R.query;this.loop=loop;this.completeFlags=new Array(loop);$.map(this.completeFlags,function(){return false});this.startTagIndicator();for(var i=0;i<loop;i++){var analyzer=new MorphAnalyzer(query,i,i*unit,Math.min(resultNum-1,(i+1)*unit-1));$("#tagcloud").append('<div id="wrap'+i+'"></div');analyzer.callDoAnalyze(b(this,this.recieveResult),this.interval*i);}},recieveResult:function(block,cloud){$("#wrap"+block).get(0).innerHTML=cloud;this.completeFlags[block]=true;if(this.checkComplete()){this.stopTagIndicator();}
else{}},checkComplete:function(){for(var i=0,n=this.completeFlags.length;i<n;i++){if(!this.completeFlags[i]){return false;}}
return true;},startTagIndicator:function(){$("#tagloading").get(0).innerHTML='<div id="indicator"><img src="'+$C.indicator+'" /></div>';},stopTagIndicator:function(){$("#tagloading").get(0).innerHTML="";}};var $T=TagCloud;var EventHandler={name:"EventHandelr",lastActiveType:"",lastBaseNode:null,selectString:"",maxRecursion:6,anchorNode:null,anchorHref:"",defaultQueryText:"検索語句を入力！",initialize:function(){$('#buttonEmphasis').bind("click",b(this,this.buttonEmphasisClick));$('#buttonDeletion').bind("click",b(this,this.buttonDeletionClick));$('#textQuery').bind("focus",b(this,this.queryFocus));},bindItems:function(){$("#result").bind('mouseup',b($E,$E.itemMouseUp));$("#result").bind('mousedown',b($E,$E.itemMouseDown));$("#result").bind('click',b($E,$E.termClick));$("#tagcloud").bind('click',b($E,$E.termElementClick));$("#tagcloud").bind('mousedown',b($E,$E.itemMouseDown));},bindHighLightEvent:function(element){var spans=element.getElementsByTagName('span');for(var i=0,n=spans.length;i<n;i++){var e=spans[i];if(e.getAttribute('class')&&e.getAttribute('class')=="em"){$(e).bind('mouseenter',b($E,$E.termEnter));$(e).bind('mouseout',b($E,$E.termLeave));}}},itemMouseDown:function(event){if(!this.isLeftButton(event)){return;}
log('mousedown');var element=event.target;$R.hideFloat();var anchor=this.getAnchorNode(element,0);if(anchor){if(anchor.isbinded){}
else{$(anchor).bind('mouseup',b($E,$E.anchorMouseUp));$(anchor).bind('mousemove',b($E,$E.anchorMouseMove));$(anchor).bind('click',b($E,$E.anchorClick));anchor.isbinded=true;}
this.removeAnchor(anchor);}
return;},itemMouseUp:function(event){if(!this.isLeftButton(event)){return;}
log('mouseup');var element=event.target;this.restoreAnchor();var lastActiveType=this.getTargetType(element,0);var selectString=this.getSelectString();if(!selectString){$R.hideFloat();return;}
log(selectString);log(lastActiveType);if(lastActiveType=="whitespace"){lastActiveType="tag";}
if((lastActiveType!="title")&&(lastActiveType!="smallurl")&&(lastActiveType!="summary")&&(lastActiveType!="tag")){return;}
log(selectString+"::"+lastActiveType);this.selectString=selectString;this.lastActiveType=lastActiveType;$R.startFloat(event.pageX,event.pageY);var base=this.getBaseNode(element,0);$E.lastBaseNode=base;if(base){$R.highlightItems(selectString,lastActiveType,this.getCurrentRank(base.id),base);}
return;},termElementClick:function(event){if(!this.isLeftButton(event)){return;}
log('term click');var element=event.target;if($R.activeElement){$($R.activeElement).removeClass('active');$R.activeElement=null;}
$(element).addClass('active');$R.activeElement=element;this.lastActiveType=this.getTargetType(element);this.selectString=$(element).text();this.lastBaseNode=this.getBaseNode(element);log(this.selectString+";; "+this.lastActiveType);$R.startFloat(event.pageX,event.pageY);},termClick:function(event){if(!this.isLeftButton(event)){return;}
var element=event.target;var base=this.getTermNode(element,0);if(base){if(this.selectString&&this.selectString.length>=1){return;}
var text=element.getAttribute('value');var suf="";switch(element.getAttribute('class')){case"em":suf="　";break;case"del":suf=" -";break;}
$('#textQuery').val($("#textQuery").val()+suf+text);$("#formarea").submit();}},termEnter:function(event){var style={"position":"absolute","top":event.pageY,"left":event.pageX}
$("#popup").css(style);$("#popup").show();},termLeave:function(event){$("#popup").hide();},anchorMouseDown:function(event){if(!this.isLeftButton(event)){return;}
if(event.button!==0){return;}
var target=event.target;if(target.tagName&&target.tagName.toLowerCase()=="a"){this.removeAnchor(target);}
else{var a=this.getAnchorNode(target,0);this.removeAnchor(a);}},anchorMouseUp:function(event){if(!this.isLeftButton(event)){return;}
this.restoreAnchor();},anchorClick:function(event){if(!this.isLeftButton(event)){return;}
var selectString=this.getSelectString();if(selectString){event.preventDefault();return;}
var element=event.target;var base=this.getBaseNode(element,0);$L.click(base);},anchorMouseMove:function(event){if(!this.isLeftButton(event)){return;}
if($.browser.safari){return;}
this.restoreAnchor();},anchorMouseOut:function(event){if(!this.isLeftButton(event)){return;}
this.restoreAnchor();},removeAnchor:function(anchor){if(anchor&&anchor.tagName&&anchor.tagName.toLowerCase()=="a"&&anchor.getAttribute('href')){this.anchorNode=anchor;this.anchorHref=anchor.getAttribute('href');anchor.removeAttribute('href');}},restoreAnchor:function(){if(this.anchorNode){this.anchorNode.setAttribute('href',this.anchorHref);this.anchorNode=null;this.anchorHref=null;}},itemMouseEnter:function(event){var element=event.target;element=this.getBaseNode(element,0);var rank=this.getCurrentRank(element.id);if(rank<=0){return;}
var item=$R.items[rank-1];if(!item.morphed){item.morphed=true;log(item.id);log(item.elm.textContent);item.curMorphElement=item.elm;setTimeout(b(item,item.doMorph_call),300);}},getCurrentRank:function(id){for(var i=0,n=$R.items.length;i<n;i++){if(id==$R.items[i].id){return i+1;}}
return 0;},buttonEmphasisClick:function(event){if(!$R.prepareRerank()){return;}
$R.rerankTimer=setTimeout(b($R,$R.termEmphasis),100);},buttonDeletionClick:function(event){if(!$R.prepareRerank()){return;}
$R.rerankTimer=setTimeout(b($R,$R.termDeletion),100);},buttonSearchKeyPress:function(event){var code=event.code;if(code==13){$R.startSearch();}},queryFocus:function(event){if(event&&event.target){if($("#textQuery").val()==this.defaultQueryText){$("#textQuery").val('');return;}
try{event.target.select();}
catch(e){}}},queryLostFocus:function(event){},getSelectString:function(){var selectString="";try{selectString=window.getSelection().toString();}
catch(e){selectString=document.selection.createRange().text;}
if(selectString){selectString=selectString.replace(/^[\s　]+|[\s　]+$/g,"");}
return selectString;},getBaseNode:function(element,depth){if(depth>=this.maxRecursion){return null;}
if(element&&element.getAttribute('type')&&(element.getAttribute('type')=="content"||element.getAttribute('type')=="tag")){return element;}
else{if(element.parentNode){return this.getBaseNode(element.parentNode,depth+1);}
else{return null;}}},getTermNode:function(element,depth){if(depth>=this.maxRecursion){return null;}
if(element&&element.getAttribute('nodetype')&&element.getAttribute('nodetype')=="term"){return element;}
else{if(element.parentNode){return this.getTermNode(element.parentNode,depth+1);}
else{return null;}}},getTargetType:function(element,depth){if(depth>=this.maxRecursion){return null;}
if(element&&element.getAttribute('type')){return element.getAttribute('type');}
else{if(element.parentNode){return this.getTargetType(element.parentNode,depth+1);}
else{return null;}}},getParentAnchorNode:function(elm,depth){if(depth>3){return null;}
if(elm&&elm.tagName.toLowerCase()=="a"){return elm;}
else{return this.getParentAnchorNode(elm.parentNode,depth+1);}},getAnchorNode:function(element,depth){if(depth>this.maxRecursion){return null;}
if(element&&element.tagName&&element.tagName.toLowerCase()=="a"){return element;}
else{if(element.parentNode){return this.getAnchorNode(element.parentNode,depth+1);}
else{return null;}}},isLeftButton:function(event){if(event.which){return event.which==1;}
else{return event.button===0;}}};var $E=EventHandler;var Logging={baseUrl:"./php/log.php",name:"log",initialize:function(){},sendLog:function(params){$.ajax({type:"GET",url:this.baseUrl,data:params,success:function(){}});},getBaseParams:function(){return{"user_id":this.user_id,"query":this.query,"num":this.num,"time":this.getDateTime()};},getDateTime:function(){var now=new Date();var year=now.getFullYear();var month=now.getMonth()+1;var day=now.getDate();var hour=now.getHours();var minute=now.getMinutes();var sec=now.getSeconds();var format=year+"-"+month+"-"+day+" "+hour+":"+minute+":"+sec;return format;},search:function(query,num){this.user_id=user_id;this.query=query;this.num=num;var params=this.getBaseParams();params.type="search";this.sendLog(params);},rerank:function(operation,attribute,term,base){var params=this.getBaseParams();params.type=operation;params.attribute=attribute;params.term=encodeURIComponent(term);switch(attribute){case"title":case"summary":case"smallurl":params.orank=base.id.replace("item","");var current_rank=$E.getCurrentRank(base.id);params.crank=$E.getCurrentRank(base.id);var item=$R.items[current_rank-1];params.url=encodeURIComponent(item.url);break;case"tag":params.tagsize=base.getAttribute('size').replace("%","");params.tagrank=base.getAttribute('rank');break;}
this.sendLog(params);},click:function(base){var params=this.getBaseParams();params.type="click";params.orank=base.id.replace("item","");var current_rank=$E.getCurrentRank(base.id);params.crank=$E.getCurrentRank(base.id);var item=$R.items[current_rank-1];params.url=encodeURIComponent(item.url);this.sendLog(params);}};var $L=Logging;function AutoComplete(){this.id="";this.textbox=null;this.initialzie.apply(this,arguments);}
AutoComplete.prototype={id:"",prevtext:"",prevquery:"",timeout:null,$textbox:null,delay:200,$suggests:null,hasFocus:false,active:-1,cache:Array(),initialzie:function(id){this.id=id;var $textbox=$("#"+id);this.$textbox=$textbox;this.cache=new Array();this.prevtext=$textbox.val();if($.browser.safari){$textbox.bind("keydown",b(this,this.onKeyDown));}
else{$textbox.bind("keypress",b(this,this.onKeyDown));}
$textbox.bind("blur",b(this,this.onBlur));$textbox.bind("focus",b(this,this.onFocus));var div=document.createElement("div");div.setAttribute("class","ac_results");div.id="suggests";$suggests=$(div);$suggests.hide();$suggests.css("position","absolute");$("body").append($suggests);this.$suggests=$suggests;this.checkValue();},onFocus:function(){this.hasFocus=true;},onBlur:function(){this.hasFocus=false;this.hideResults();},checkValue:function(){if(this.hasFocus){if(this.forceTextChange){this.prevtext=this.$textbox.val();this.forceTextChange=false;}
var val=this.$textbox.val();if(this.prevtext!=val){this.prevtext=val;this.onTextChange();}}
setTimeout(b(this,this.checkValue),200);},onKeyDown:function(event){switch(event.keyCode){case 38:event.preventDefault();this.moveSelect(-1);break;case 40:event.preventDefault();this.moveSelect(1);break;}},onTextChange:function(){var v=this.$textbox.val();v=v.replace(/^[ 　]+/,"").replace(/[ 　]+$/," ");v=v.replace("　"," ");v=v.replace(" $","#w#");v=v.replace(/[ａ-ｚＡ-Ｚ]+/,"");if(v.length>=1){if(this.prevquery==v){}
else{log("getresult::"+v+"::");this.prevquery=v;this.getResult(v);}}
else{this.hideResultsNow();}},hideResults:function(){if(this.timeout){clearTimeout(this.timeout);this.timeout=null;}
t=setTimeout(b(this,this.hideResultsNow),200);this.active=-1;this.timeout=t;},hideResultsNow:function(){this.active=-1;this.$suggests.html("")
this.$suggests.hide();},showResults:function(){var textbox=this.$textbox.get(0);var pos=this.findPos(textbox);var width=this.$textbox.width();log("width="+width);$suggests.css({width:parseInt(width)+"px",top:(pos.y+textbox.offsetHeight)+"px",left:pos.x+"px"});$suggests.show();},getResult:function(text){if(this.cache&&this.cache[text]){this.receiveResult(this.cache[text],text);}
else{req=new Request();req.get(text,b(this,this.receiveResult));}},receiveResult:function(results){log("Receive");this.renderResult(results);},format:'<ul>#s</ul>',renderResult:function(results){$
if(!results||results.length==1){this.hideResultsNow();}
var query=results.pop();this.cache[query]=results;if(results.length==1
&&this.$textbox.val()==results[0]){this.hideResultsNow();}
this.hideResultsNow();$suggest=this.$suggest;var ul=document.createElement("ul");var index=0;for(var i=0,n=results.length;i<n;i++){var li=document.createElement("li");li.innerHTML=results[i];li.setAttribute("_index",index++);ul.appendChild(li);$(li).hover(function(){$("li",ul).removeClass("ac_over");$(this).addClass("ac_over");},function(){$(this).removeClass("ac_over");});$(li).click(function(e){e.preventDefault();e.stopPropagation();$("#textQuery").val($(this).text());});}
log("Render");this.$suggests.append(ul);this.showResults();},moveSelect:function(step){var lis=$("#suggests li");if(!lis)return;var active=this.active;active+=step;if(active<0){active=lis.length-1;}
else if(active>=lis.size()){active=0}
lis.removeClass("ac_over");$(lis[active]).addClass("ac_over");var term=$(lis[active]).get(0).textContent;if(!term||term.length==1){this.hideResultsNow();return;}
this.$textbox.val($(lis[active]).get(0).textContent);this.forceTextChange=true;this.active=active;},clickTerm:function(event){var element=event.target;term=element.textContent;var li=element.parentNode;var text=li.textContent;var phrase=text.replace(term,'"'+term+'"');this.$textbox.val(phrase);},findPos:function(obj){var curleft=obj.offsetLeft||0;var curtop=obj.offsetTop||0;while(obj=obj.offsetParent){curleft+=obj.offsetLeft
curtop+=obj.offsetTop}
return{x:curleft,y:curtop};},}
Request=function(){p:null,callback=null;query=null;}
count=1;totalCount=0;Request.prototype={base:"./php/auto_complete.php",get:function(query,callback){log("start get "　+query)
this.query=query;this.callback=callback;var url=this.base+"?c="+encodeURIComponent(query)+"&count="+count;log(url);count++;$.get(url,b(this,this.receive));},receive:function(data){items=data.split(/,/g);c=Number(items[0]);log(items.length)
var results=[];log(c);for(var i=1,n=items.length;i<n;i++){results.push(items[i]);}
log("finish"+" "+c+"::"+totalCount);results.push(this.query);if(c>totalCount){totalCount=c;this.callback(results);}
else{this.callback(null,null);}},}
function b(obj,func){return function(){try{return func.apply(obj,arguments);}
catch(e){return null;}};}
function clone(obj){var f=function(){};f.prototype=obj;return new f();}
var RerankJp={debug:false,reconstructCloud:true,searchInterval:50,floatTimeout:5000,lang:"ja",enableUndo:true,maxUndo:3,header:"<div class=\"left\" id=\"header_left\"><span id=\"operation\"><strong>ウェブ検索結果</strong></span></div><div class=\"info\" id=\"info\"></div><div class=\"right\"><strong>$query$</strong> で検索した結果 <strong>$start$</strong> - <strong>$numbers$</strong> 件目 / <strong>約$totalResultsAvaiable$件</strong></div>",searching:"<strong>$query$</strong> を検索しています...",info:"<span id=\"operation\"><strong>$term$</strong> を <strong>$operation$</strong> しました</span> <span id=\"undo\" class=\"enable\">元に戻す</span>",notfound:'<span class="404"><strong>$query$</strong> に一致するページは見つかりませんでした</span>',query:null,queryList:[],queryRegList:[],num:200,items:[],completeFlags:[],lastBlock:-1,floatTimer:null,highlights:[],maxTotalResult:0,floatOffsetY:15,floatOffsetX:-15,prevOperations:[],initialize:function(){$E.initialize();if(!this.checkQuery()){this.getTrend();return false;}
this.startSearch();},clear:function(){$('#main_result').get(0).innerHTML='<ol id="result"></ol><div id="loading"></div>';$('#result_header').get(0).innerHTML="";$("#query_suggest").get(0).innerHTML="";},checkQuery:function(){if(this.getParamFromURL('p',null)){var params=this.getSearchParams();if(params.query=="検索語句を入力！"){return false;}
$("#textQuery").val($.trim(params.query));$("#num").val(this.getParamFromURL('num',"200"));if(params.lang=="en"){$("#langen").attr("checked","checked");}
return true;}
else{return false;}},startSearch:function(){var params=this.getSearchParams();this.params=params;this.query=this.params.query;var queryList=this.query.replace(/"/g,"").split(/[\s　]/g);var list=[];for(var i=0,n=queryList.length;i<n;i++){q=queryList[i].replace(/["']/g,"");q=queryList[i];if(q.length>1){list.push(q);}}
this.queryList=list;this.queryRegList=[];for(i=0,n=this.queryList.length;i<n;i++){var reg=new RegExp(this.escapeRegExp(this.queryList[i]),"ig");this.queryRegList.push(reg);}
this.num=this.params.num;this.lang=this.params.lang;this.clear();$('#result_header').get(0).innerHTML=this.searching.replace('$query$',this.escapeHTML(this.query));this.startIndicator();$L.search(this.query,this.num);var search=new YahooSearch();var p={'query':this.query,'num':this.num,'lang':this.lang}
search.doSearch(p,this.searchInterval*i,b(this,this.recieveResultBlock));this.getSuggest();},getSearchParams:function(){var query=$.trim(s_query.replace(/[+]/g,' '));query=query.replace(/[\s 　]/g," ");query=query.replace(/[ ]+/," ");var num=s_num;var lang=s_lang;var params={'query':query,'num':Number(num),'lang':lang};return params;},getParamFromURL:function(key,def){if(key=="p"){return s_query;}
else if(key=="num"){return s_num;}
else if(key=="lang"){return s_lang;}
return def},recieveResultBlock:function(items,query,totalResults,totalReturnedItems){var maxResult=Math.max(this.maxTotalResult,totalResults);this.maxTotalResult=maxResult;var source=this.makeHtml(items);if(items&&items.length>=1){$('#result').get(0).appendChild(source);this.items=items;}
var resultNum=0;if(this.items){resultNum=this.items.length;}
else{resultNum=0;}
var header=this.makeSearchHeader(query,maxResult,resultNum);$('#result_header').get(0).innerHTML=header;this.stopIndicator();$("#result_header").addClass('finish');if(!this.items||this.items.length<1){$("#result_header").get(0).innerHTML="<div class=\"left\" id=\"header_left\"><strong>ウェブ検索結果</strong></div>";$("#result").get(0).innerHTML=this.notfound.replace("$query$",this.escapeHTML(this.query));return;}
$E.bindItems();$T.createTagCloud();},makeSearchHeader:function(query,totalResult,num){return $R.header.replace("$start$",1).replace("$numbers$",num).replace("$totalResultsAvaiable$",this.number_format(totalResult)).replace("$query$",query);},makeHtml:function(items){var df=document.createDocumentFragment();for(var i=0,n=items.length;i<n;i++){df.appendChild(items[i].toHtml());}
return df;},highlightItems:function(term,type,currentRank,element){if($.browser.msie){return;}
var targets=[];if(!element){return;}
var from=Math.max(0,currentRank-5);var to_num=Math.min(this.items.length,currentRank+5);for(var i=from;i<=to_num;i++){var item=this.items[i];var elm=item.elm;if(item.isContain(term,type)){$(elm).css("backgroundColor","#ddffdd");targets.push(elm);}}
this.highlights=targets;},clearHighlight:function(){for(var i=0,n=this.highlights.length;i<n;i++){$(this.highlights[i]).css("backgroundColor","#ffffff");}
this.highlights=[];},prepareRerank:function(){this.hideFloat();if(this.rerankTimer){clearTimeout(this.rerankTimer);this.rerankTimer=null;}
var sel=this.escapeRegExp($E.selectString);var termReg;var replaceReg;try{termReg=new RegExp();replaceReg=new RegExp();termReg.compile(sel.replace(" ","[ ]?"),"i");replaceReg.compile('(<span class="(em|del)">)*'+sel.replace(" ","[ ]?")+'(</span>)*',"i");}
catch(e){log(e);return false;}
this.selectString=$E.selectString;this.termReg=termReg;this.replaceReg=replaceReg;if(this.enableUndo){if(this.prevOperations.length>=this.maxUndo){this.prevOperations.shift();}
if(this.prevOperations.length<this.maxUndo){var operation=[];operation.push($('#result').get(0).innerHTML);var master=this.items;var slave=clone(master);this.items=slave;operation.push(master);operation.push($('#operation').get(0).innerHTML);this.prevOperations.push(operation);}}
if(this.reconstructCloud){$T.initialize();}
return true;},undo:function(){if(this.prevOperations&&this.prevOperations.length>=1){var operation=this.prevOperations.pop();$('#result').get(0).innerHTML=operation[0];this.items=operation[1];var elms=$("#result").get(0).childNodes;for(var i=0,n=this.items.length;i<n;i++){this.items[i].makeElementFromSource(elms[i]);}
$('#operation').get(0).innerHTML=operation[2];}
if(this.prevOperations.length==0){$('#undo').get(0).setAttribute('class','disable');}},termEmphasis:function(){$L.rerank("emphasis",$E.lastActiveType,$E.selectString,$E.lastBaseNode);var resultNum=this.items.length;var df=document.createDocumentFragment();var upList=[];var downList=[];log('TermEmphasis::'+this.selectString+"++"+$E.lastActiveType+';;'+resultNum);var selectString=this.selectString;var type=$E.lastActiveType;var termReg=this.termReg;var replaceReg=this.replaceReg;for(var i=0;i<resultNum;i++){var item=this.items[i];var elm=item.elm;if(item.isContain(termReg,type)){item.termEmphasis(this.escapeHTML(selectString),termReg,replaceReg);df.appendChild(item.elm);upList.push(item);}
else{downList.push(item);}}
$("#result").prepend(df);this.items=upList.concat(downList);try{document.getElementById('result_header').scrollIntoView();}catch(e){}
this.lastOperation="<span class=\"emphasis\">強調</span>";this.afterRerank();},termDeletion:function(){$L.rerank("deletion",$E.lastActiveType,$E.selectString,$E.lastBaseNode);var upList=[];var downList=[];var df=document.createDocumentFragment();var selectString=this.selectString;var type=$E.lastActiveType;var termReg=this.termReg;var replaceReg=this.replaceReg;for(var i=0,n=this.items.length;i<n;i++){var item=this.items[i];var elm=item.elm;if(item.isContain(termReg,type)){item.termDeletion(this.escapeHTML(selectString),termReg,replaceReg);df.appendChild(item.elm);downList.push(item);}
else{upList.push(item);}}
$("#result").get(0).appendChild(df);this.items=upList.concat(downList);this.lastOperation="<span class=\"deletion\">削除</span>";this.afterRerank();},afterRerank:function(){var term=$E.selectString;if(term.length>12){term=term.substring(0,10)+"...";}
$('#header_left').get(0).innerHTML=this.info.replace('$term$',this.escapeHTML(term)).replace('$operation$',this.lastOperation);if(!this.enableUndo){$('#undo').get(0).innerHTML="";}
else{$('#undo').bind('click',b($R,$R.undo));}
if(this.reconstructCloud){$T.createTagCloud();}},startIndicator:function(){$("#loading").get(0).innerHTML='<div id="indicator"><img src="'+$C.indicator+'" /></div>';},stopIndicator:function(){$("#loading").get(0).innerHTML='';},startFloat:function(x,y){var emCss={"position":"absolute","top":(y-40)+"px","left":(x-20)+"px",}
var delCss={"position":"absolute","top":(y+10)+"px","left":(x-21)+"px",}
$("#buttonEmphasis").css(emCss);$("#buttonDeletion").css(delCss);$("#buttonEmphasis").show();$("#buttonDeletion").show();this.floatTimer=setTimeout(b(this,this.hideFloat),this.floatTimeout);},hideFloat:function(){if(this.floatTimer){clearTimeout(this.floatTimer);this.floatTimer=null;}
if(this.activeElement){$(this.activeElement).removeClass('active');this.activeElement=null;}
this.clearHighlight();$("#buttonEmphasis").hide();$("#buttonDeletion").hide();},getSuggest:function(){var base="./php/suggest.php?";var url=base+"p="+encodeURIComponent(this.query);$.get(url,b(this,this.receiveSuggest));},receiveSuggest:function(data){var thisurl="./index.php?";var suggests=eval("("+data+")");var items=suggests.items;var limit=Math.min(5,items.length);var basenode=document.createElement("div");if(limit>=1){var t=document.createElement("span");t.textContent="他のキーワード：";basenode.appendChild(t);for(var i=0;i<limit;i++){var url=thisurl+"p="+encodeURIComponent(items[i])　+"&num="+this.num;var s=document.createElement("span");s.setAttribute("class","suggest");var a=document.createElement("a");a.setAttribute("href",url);a.textContent=items[i];s.appendChild(a);basenode.appendChild(s);}}
else{basenode.textContent="";$("#query_suggest").hide();}
$("#query_suggest").append(basenode);},getTrend:function(){var base="./php/trend.php";$.get(base,b(this,this.receiveTrend));},receiveTrend:function(data){var thisurl="./index.php?";var suggests=eval("("+data+")");var items=suggests.items;var limit=Math.min(5,items.length);var basenode=document.createElement("div");if(limit>=1){var t=document.createElement("span");t.textContent="検索キーワード例：";basenode.appendChild(t);var num=$("#num").val();for(var i=0;i<limit;i++){var url=thisurl+"p="+encodeURIComponent(items[i])　+"&num="+num;var s=document.createElement("span");s.setAttribute("class","suggest");var a=document.createElement("a");a.setAttribute("href",url);a.textContent=items[i];s.appendChild(a);basenode.appendChild(s);}}
else{basenode.textContent="";}
$("#query_suggest").append(basenode);},number_format:function(val){return val.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g,'$1,');},a_reg:/&/g,a_str:"&amp;",b_reg:/"/g,b_str:"&quot;",c_reg:/>/g,c_str:"&gt;",d_reg:/</g,d_str:"&lt;",escapeHTML:function(str){return str.replace(this.a_reg,this.a_str).replace(this.b_reg,this.b_str).replace(this.c_reg,this.c_str).replace(this.d_reg,this.d_str);},eh:this.escapeHTML,e_a:/\./ig,s_a:"\\.",e_b:/\)/ig,s_b:"\\)",e_c:/\(/ig,s_c:"\\(",e_d:/\?/ig,s_d:"\\?",e_e:/\+/ig,e_f:/\{\}/ig,s_f:"\\{",e_g:/\}/ig,s_g:"\\}",e_h:/\*/ig,s_h:"\\*",escapeRegExp:function(str){return str.replace(this.e_a,this.s_a).replace(this.e_b,this.s_b).replace(this.e_c,this.s_c).replace(this.e_d,this.s_d).
replace(this.e_e,this.s_e).replace(this.e_f,this.s_f).replace(this.e_g,this.s_g).replace(this.e_h,this.s_h);}};function log(str){if($R&&$R.debug){$("#log").prepend(str+"<br>");}}
$R=RerankJp;$('document').ready(function(){$R.initialize();comp=new AutoComplete("textQuery");});
