var m_str;var h_listed;var h_linkedfrom;var l_todo;var l_todoOutside;var l_haserr;var starturl;var ctAjaxDone;var ctAjaxErr;var toForceStop;var myInterval;function resetMstStr(lang){m_str=new Object();if(lang==="ja"){m_str['err']="エラー!";m_str['endmsg_without_err']="終了しました（エラーはありませんでした）";m_str['endmsg_with_err']="終了しました（エラーを発見）";m_str['cannot_access']="へ到達できません。";m_str['url_has_these_links']="このURLへは次のURLからリンクされています。";m_str['checking_inside']="内部リンクのチェック中";m_str['checking_outside']="外部リンク・上位リンクのチェック中"}else{m_str['err']="ERROR!";m_str['endmsg_without_err']="Operation Done (found no error)";m_str['endmsg_with_err']="Operation Done (found error)";m_str['cannot_access']="can not be accessed.";m_str['url_has_these_links']="This URL is linked by these url.";m_str['checking_inside']="Checking inside links";m_str['checking_outside']="Checking outside links"}}function writeMsg(msg){$('msg').value+=msg;try{$('msg').focus();$('msg').scrollTop=$('msg').scrollHeight}catch(e){}}function writeErrMsg(msg){$('err_msg').value+=msg}function getTimeStr(){var now=new Date();var yea=now.getYear();var mon=now.getMonth()+1;var day=now.getDate();var hou=now.getHours();var min=now.getMinutes();var sec=now.getSeconds();if(yea<1900){yea=yea+1900}if(mon<10){mon="0"+mon}if(day<10){day="0"+day}if(hou<10){hou="0"+hou}if(min<10){min="0"+min}if(sec<10){sec="0"+sec}return yea+"/"+mon+"/"+day+" "+hou+":"+min+":"+sec}function doStop(){$('btn_stop').disabled=true;toForceStop=true}function doStart(lang){$('starturl').readonly=true;$('btn_submit').disabled=true;$('btn_stop').disabled=false;$('ct_todo').innerHTML="0";$('ct_done').innerHTML="0";$('ct_err').innerHTML="0";$('msg').value="";$('err_msg').value="";$('short_msg').innerHTML="";$('block_msg').style.display="block";$('block_err_msg').style.display="none";h_listed=new Object();h_linkedfrom=new Object();l_todo=new Array();l_todoOutside=new Array();l_haserr=new Array();starturl=$('starturl').value;ctAjaxDone=0;ctAjaxErr=0;toForceStop=false;resetMstStr(lang);l_todo.push(starturl);h_listed[starturl]=1;myInterval=setInterval(doMain,2000)}function doEnd(){$('starturl').readonly=false;$('btn_submit').disabled=false;$('btn_stop').disabled=true;toForceStop=false;if(l_haserr.length===0){$('short_msg').innerHTML=m_str['endmsg_without_err']}else{$('short_msg').innerHTML=m_str['endmsg_with_err'];$('block_err_msg').style.display="block"}for(var i=0;i<l_haserr.length;i++){var url=l_haserr[i];var from=h_linkedfrom[url];var j=i+1;writeErrMsg(j+":\n");writeErrMsg(url+" "+m_str['cannot_access']+"\n");if(typeof from!=='undefined'){writeErrMsg(m_str['url_has_these_links']+"\n");writeErrMsg(from+"\n")}}clearInterval(myInterval)}function doMain(){if(parseInt(Ajax.activeRequestCount)>0){return}if(toForceStop===true){l_todo=new Array();l_todoOutside=new Array()}var url="";if(l_todo.length>0){$('short_msg').innerHTML=m_str['checking_inside'];url=l_todo.shift();writeMsg(getTimeStr()+" getting "+url+"\n");doAjax(url,true)}else if(l_todoOutside.length>0){$('short_msg').innerHTML=m_str['checking_outside'];url=l_todoOutside.shift();writeMsg(getTimeStr()+" getting "+url+"\n");doAjax(url,false)}else{doEnd()}}function doAjax(url,toParseLink){var date=new Date();var timestamp=date.getTime();var ajax=new Ajax.Request("../parse.cgi",{method:'get',parameters:'dlc_url='+encodeURIComponent(url)+"&dlc_starturl="+encodeURIComponent(starturl)+"&t="+timestamp,onException:function(res){},onComplete:function(res){},onFailure:function(res){},onSuccess:function(res){ctAjaxDone++;var lines=res.responseText.split("\n");var okng=lines.shift();if(okng==="OK"){for(var i=0;i<lines.length;i++){var wk=lines[i].split(" ");var wk_flg=wk[0];var wk_url=wk[1];if(toParseLink===true&&h_listed[wk_url]!="1"){if(wk_flg==="i"){l_todo.push(wk_url);h_listed[wk_url]=1}else if(wk_flg==="e"){l_todoOutside.push(wk_url);h_listed[wk_url]=1}}if(toParseLink===true){if(typeof h_linkedfrom[wk_url]==='undefined'){h_linkedfrom[wk_url]=""}h_linkedfrom[wk_url]+=url+"\n"}}}else{l_haserr.push(url);writeMsg("   --->>> "+m_str['err']+"\n");ctAjaxErr++}$('ct_todo').innerHTML=l_todo.length+l_todoOutside.length;$('ct_done').innerHTML=ctAjaxDone;$('ct_err').innerHTML=ctAjaxErr}})}