//イベントハンドラ定義
//外部関数：tohan
//外部変数：anchorHead,lightmode
//========Click処理→search,他
	document.onclick = clickEvent;
function clickEvent(){
 if(clickCancel){return false}else{clearTimeout(clickTimer);if(document.getElementById("context")){document.getElementById("context").removeNode(true);}}
 var obj=window.event.srcElement;
 var tag=obj.tagName;
 if     (tag=="B")   {search(obj.parentElement)}   //名前
 else if(tag=="U")   {search(obj)}                 //トリップ
 else if(tag=="SPAN"){if(getID(obj)){search(obj)}} //ID
 else if(tag=="DT")  {searchRef(obj)}
 else if(tag=="A"){
  if(obj.href.match(/^http:.*#/)){window.open(obj.href,"_parent")}
  else if(obj.rel){obj.href=obj.rel}
  //A Bone補正（非表示レスの表示）
  if(anchorHead=="Res" && hidedRes(obj)){
   showModelessDialog(document.getElementsByName("ThreadURL")[0].content+tohan(obj.innerText.replace(/[>＞]/g,"")),window,"dialogWidth:"+document.body.clientWidth+"px;help:no;resizable:yes;status:no;unadorned:yes;");window.focus();
  }
  //Jane,Live補正（skin30-2Normal）＊レスジャンプがscrollIntoViewでないものに係る補正
  if(obj.href.match(/^about.*#|jumpres/)){
   var h=tohan(obj.innerText.replace(/[>＞]/g,""));
   var anchor=document.getElementsByName(anchorHead+h)[0];
   if(anchor){anchor.scrollIntoView(true);return false}
  }
  return true;
 }
 else{return}
}
//=========MouseOver処理→image,popup
	document.onmouseover = mouseOverEvent;
function mouseOverEvent() {
 var e = window.event.srcElement;
 if(e.tagName=='B' && e.innerText.match(/^([^\d０-９]*)([\d０-９]+)([^\d０-９]*.*)/)){namePopup(e,RegExp.$1,RegExp.$2,RegExp.$3);}
 if(e.tagName=='A'){
  e.href=e.href.replace(/>/g,"");
  if     (checkAnchor(e.href)==2){insButton(e);return;}
  else if(checkAnchor(e.href)==1){
   // 多段ポップアップ
   var aNum=parseInt(e.sourceIndex)+1;
   if(!document.getElementById("p"+aNum)){
    var obj=e;var onPopup;
    while(obj.tagName!="BODY"){if(obj.id.match(/p\d+/)){onPopup=true;break}else{obj=obj.parentElement}}
    if(!onPopup){removePopup()}
    makePopContent(e);return;
   }
  }
 }else{ // 多段ポップアップ消去
  var obj=e;var onPopup;
  if(obj.sourceIndex<0){obj=document.body;if(document.getElementById("popupBase")){onPopup=true;}} // namePopupとの競合でノードが外れる瞬間の回避
  while(obj.tagName!="BODY"){if(obj.id.match(/p\d+/)){onPopup=true;break}else{obj=obj.parentElement;}}
  if(onPopup){while(obj.id!=obj.parentElement.lastChild.id){obj.parentElement.lastChild.removeNode(true)}}
  else       {removePopup()}
 }
}
//=========MouseMove処理→menuOver(),tpOver()
	document.onmousemove=mouseMoveEvent;
var waited=false;//command表示後trueにし、選択後にfalseにする。
var viewed=false;//thumb読込み後trueにし、thumbPanelに乗降後falseにする。
function mouseMoveEvent() {
 if(!document.getElementById("controlPanel")){
  var nHTML ="<div id='controlPanel'><input type='button' value='TOP' onclick='scroll_Top();blur()'><input type='button' value='END' onclick='scroll_End();blur()'><input type='button' value='IMG' onmouseup='imgCommand();blur()'><input type='button' value='FND' onclick='findIt(document.selection.createRange().text);blur()'></div>";
  if(document.title.match(/30-2/)){nHTML+="<div id='thumbPanel' onmouseout='viewed=false'></div><div id='viewPanel'></div>";}
  document.body.insertAdjacentHTML('afterBegin',nHTML);
 }
 menuOver();
 tpOver();
}
// コントロールパネル
function menuOver(){
 var territoryW=document.body.clientWidth-120;var territoryH=25;
 var cP=document.getElementById("controlPanel");
 if(waited){cP.style.visibility="visible";return}
 if(event.y<territoryH && event.x>territoryW){cP.style.visibility="visible";}else{cP.style.visibility="hidden";}
}
// サムネイルパネル
function tpOver(){
 if(document.title.match(/30-3/) || !lightmode){return}
 var territoryW=document.body.clientWidth-120;var territoryH=20;
 var tP=document.getElementById("thumbPanel");
 if(document.getElementById("viewPanel").firstChild || viewed){tP.style.visibility="visible";return}
 if(event.y>territoryH && event.x>territoryW){tP.style.visibility="visible";}else{tP.style.visibility="hidden";}
}
// TOP,END
function scroll_Top(){document.getElementsByTagName("DL")[0].firstChild.scrollIntoView(true);}
function scroll_End(){document.getElementsByTagName("DL")[0].lastChild.scrollIntoView(true);}
// IMG
function imgCommand(mode,s){
 if(!waited){
  var nHTML='<div id="command" onclick="clearCommand()"><input type="button" onclick="allImageLoad(\'all\')" value="全レス一括読込"><br><input type="button" onclick="allImageLoad(\'new\')" value="新レス一括読込"><br></div>';
  event.srcElement.parentElement.insertAdjacentHTML('beforeEnd',nHTML);
  if(document.title.match(/30-2/)){
   if(!lightmode){document.getElementById("command").insertAdjacentHTML('afterBegin','<input type="button" onclick="changePanel()" value="パネル切替"><br>')}
   document.getElementById("command").insertAdjacentHTML('beforeEnd','<input type="button" onclick="changeMode()" value="モード切替">')
  }
  waited=true;
 }else{
  clearCommand();
 }
}
function clearCommand(){
 waited=false;
 event.srcElement.parentElement.removeNode(true);
}
//=========左長押処理→copyMenu()
	document.onmousedown=mousedownEvent;
var clickCancel,e,ex,ey,clickTimer;
function mousedownEvent(){
 var obj=e=event.srcElement;ex=event.x;ey=event.y;
 if(document.getElementById("context") && obj.innerText==document.getElementById("context").name){return}
 clickCancel=false;
 if(obj.nextSibling && obj.nextSibling.tagName=="U" && event.button==1){
  clickTimer=setTimeout("copyMenu()",500);
 }
}
//コピーメニュー→colorChange(),search::copyText()
function copyMenu(){
 clickCancel=true; clearTimeout(clickTimer);
 if(document.getElementById("context")){document.getElementById("context").removeNode(true);}
 var nHTML='<div id="context" name="'+e.innerText+'"><div onclick="copyText(\'res\')" onmouseover="colorChange()" onmouseout="colorChange()">レスをコピー</div><div onclick="copyText(\'name\')" onmouseover="colorChange()" onmouseout="colorChange()">名前をコピー</div><div onclick="copyText(\'id\')" onmouseover="colorChange()" onmouseout="colorChange()">IDをコピー</div></div>';
 document.body.insertAdjacentHTML("afterBegin",nHTML);
 var context=document.getElementById("context");
 context.style.pixelLeft=document.body.scrollLeft+ex
 context.style.pixelTop =document.body.scrollTop+ey;
 context.style.visibility="visible";
}
function colorChange(){
 var style=event.srcElement.style;
 if(event.type=="mouseout"){style.backgroundColor="Menu";     style.color="MenuText";}
 else                      {style.backgroundColor="Highlight";style.color="HighlightText";}
}

//=========キーボード入力（skin30-2でのキー無効の回避＋α）
	document.onkeydown=key;
function key(){
 var dl=document.getElementsByTagName("DL").item(0);
 var code=event.keyCode;
 if     (code=="32" && !event.shiftKey || code=="34"){dl.scrollTop+=dl.offsetHeight;}
 else if(code=="32" && event.shiftKey  || code=="33"){dl.scrollTop-=dl.offsetHeight;}
 else if(code=="40"){dl.scrollTop+=36;}
 else if(code=="38"){dl.scrollTop-=36;return true;}
 else if(code=="36"){scroll_Top()}
 else if(code=="35"){scroll_End()}
 else if(code=="73" && event.shiftKey){changePanel();return false;} // shift+I
 else if(code=="70" && event.shiftKey){document.getElementById("controlPanel").childNodes[3].click();return false;} // shift+F
 else if(code=="78" && event.shiftKey && firstNew){firstNew.scrollIntoView(true)} // shift+N
 else if(code=="82" && event.shiftKey && event.ctrlKey){ // ctrl+shift+R
  //かちゅ〜しゃ補正（板更新のショートカットキー）
  if(!document.getElementsByName("ThreadURL")[0].content && anchorHead=="a"){ //anchorHeadがLiveと共通なので、ThreadURLの不存在を利用
   if(!t_url){threadurl();}
   window.open("http://"+t_domain+"/"+t_bbs+"/","_blank");
   return false;
  }
 }
}

//=========Load（代替）処理（各Footerもしくは、Headerでのループから呼出し）
var firstNew;
function moveToNew(gRC){
 if(gRC>0){gRC++}else{gRC=1}
 firstNew=document.getElementsByName(anchorHead+gRC)[0];
 if(firstNew){
  if(firstNew.parentElement.tagName=="DD"){firstNew=firstNew.parentElement.nextSibling}
  firstNew.scrollIntoView(true);
 }
 else        {document.getElementsByTagName("DL")[0].lastChild.scrollIntoView(true);}
}
