Large

Facebook Mousehunt Horn Alerter

By osbron Last update Mar 30, 2011 — Installed 53,051 times.

There are 66 previous versions of this script.

// ==UserScript==
// @name           Facebook Mousehunt Horn Alerter
// @version        2.21a
// @namespace      http://userscripts.org/scripts/show/53943
// @description    Alerts you when the horn is ready to sound... Script Homepage: http://userscripts.org/scripts/show/53943
// @include        http://apps.facebook.com/mousehunt/*
// @include        http://apps.new.facebook.com/mousehunt/*
// ==/UserScript==
var versionNumber="2.21a";
var adIDName="pagelet_ego_pane";
// **************************************************************************************************************************
// ***              This script is the original script written by the author on userscripts userID: "osbron"              ***
// ***              NOTE THAT I DO NOT TOLERATE ANY VARIANTS OR COPIES OF EITHER PART OR WHOLE OF THIS SCRIPT             ***
// ***                                                       ...                                                          ***
// ***    If you would like to copy any part of this script, please add a reference in your script to the address below   ***
// ***                                       http://userscripts.org/scripts/show/53943                                    ***
// **************************************************************************************************************************

// === BLACKLIST OF PEOPLE WHO COPIED THIS SCRIPT W/O adding references ===
// 								- CURRENTLY NONE -
//
// ** To remove your name from the blacklist, please add references, then contact me via userscripts mail **
// Note that I periodically check for variants of my script and update my blacklist...

//GM_deleteValue('nobaitAlertDisabled');
// >>>*** Start of active code ***<<<

var timervalue = -1;
var Cmin, Rmins;
var Csec, Rsecs;
var titleOriginal=document.title;
var addTime, oldTime;
var firstPage=0;
var lastTimer;
var runOnce=0;
var initialAlertState;
var initialBaitAlertState;

// Ad removal
var sidebar_ads = document.getElementById("netego_organic");
if(sidebar_ads==null)
	sidebar_ads=document.getElementById(adIDName);

function loadSidebar(){
if(sidebar_ads!=null){
sidebar_ads.innerHTML="<br><u><b>Useful Links</b></u>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><a href='http://mhwiki.hitgrab.com/wiki/index.php/Main_Page' target='_blank'><font color='#abcdef'><b>MhWiki</b></font></a>";
if(location.href=="http://apps.facebook.com/mousehunt/travel.php")
	sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><a href='http://furoma.com/travel_planner.php' target='_blank'><font color='#abcdef'><b><u>Travel Planner</u></b></font></a>";
else
	sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><a href='http://furoma.com/travel_planner.php' target='_blank'><font color='#abcdef'><b>Travel Planner</b></font></a>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><a href='http://www.facebook.com/pages/Facebook-Mousehunt-Horn-Alerter/130287697010759' target='_blank'><font color='#abcdef'><b>Facebook Script Page</b></font></a>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><a href='http://www.facebook.com/pages/Facebook-Mousehunt-Horn-Alerter/130287697010759?v=app_2373072738' target='_blank'><font color='#abcdef'><b>Report a bug</b></font></a>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><a href='http://userscripts.org/scripts/show/53943' target='_blank'><font color='#abcdef'><b>Script Homepage (For Updating)</b></font></a>";

sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><br><u><b>Options</b></u>";
if(GM_getValue('alertDisabled', '0')==0)
	sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><form><input type='checkbox' name='alertTrue' checked> - Alert when ready (horn)</form>";
else
   sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><form><input type='checkbox' name='alertTrue'> - Alert when ready (horn)</form>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<div id='refreshReminder' style='color:red;font-weight:bold'></div>";
if(GM_getValue('nobaitAlertDisabled', '0')==0)
	sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<form><input type='checkbox' name='nobaitAlertTrue' checked> - Alert when no bait</form>";
else
   sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<form><input type='checkbox' name='nobaitAlertTrue'> - Alert when no bait</form>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<div id='nobaitRefreshReminder' style='color:red;font-weight:bold'></div>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><form onsubmit=window.open('http://mhwiki.hitgrab.com/wiki/index.php?title=Special%3ASearch&search='+document.getElementById('search').value+'&go=Go')><input type=text id='search'><br><input type='submit' value='Search MHWiki'></form><small>The page will refresh when you search...</small>";
sidebar_ads.innerHTML=sidebar_ads.innerHTML+"<br><br><i>You are using MH Horn Alerter <b>V"+versionNumber+"</b></i>";
}
}
loadSidebar();

var hornIndex = document.body.innerHTML.indexOf("next_activeturn_seconds");
timervalue=parseInt(document.body.innerHTML.substring(hornIndex+26,hornIndex+29));

var puzzleString = document.body.innerHTML.indexOf("has_puzzle");
var puzzleValue= document.body.innerHTML.substring(puzzleString+13,puzzleString+17);

if(document.getElementById('app10337532241_huntTimer')!=null){
var builtInTimer = document.getElementById('app10337532241_huntTimer');
}

if (document.body.innerHTML.indexOf("app10337532241_hud_location")!=null){
   var locationId = document.body.innerHTML.indexOf("app10337532241_hud_location");
   var locationIndex=document.getElementById('app10337532241_hud_location');
   var locationString=document.body.innerHTML.substring(locationId+54,locationId+84);
   var huntLocation=locationString.substring(0, locationString.indexOf('<')+1);
   var displayString=locationString.substring(0, locationString.indexOf('<'));
   var i;
   for(i=0; i<huntLocation.indexOf('<'); i++){
   	if(huntLocation[i]=='\'')
			huntLocation=huntLocation.substring(0,i)+huntLocation.substring(i+1,huntLocation.indexOf('<')+1);
   }
   huntLocation=huntLocation.substring(0, huntLocation.indexOf('<'));
   locationIndex.innerHTML="<a href='http://mhwiki.hitgrab.com/wiki/index.php/"+huntLocation+"' target='_blank'><u><font color='#abcdef'>"+displayString+"</font></u></a>";
}
/*
if(timervalue>895 && timervalue<=900)
	lastTimer=timervalue-5;
else
	lastTimer=timervalue;
*/
lastTimer=timervalue;
function getHornTime(){
	timervalue=parseInt(unsafeWindow.a10337532241_user?unsafeWindow.a10337532241_user.next_activeturn_seconds:-1);
   if(timervalue>=0 && timervalue!=lastTimer){
      /*
      if(timervalue>895 && timervalue<=900)
      	lastTimer=timervalue-5;
      else
      	lastTimer=timervalue;
      */
      lastTimer=timervalue;
   	mainFunction();
   }
   else{
   	builtInTimer = document.getElementById('app10337532241_huntTimer');
      if(builtInTimer!=null)
   	builtInTimer.innerHTML="<span style='font-size: 10px'>Sound your horn!</span>";
      if (puzzleValue!='true')
   		document.title="Horn READY! | "+titleOriginal;
   	else
   		document.title="King's Reward! | "+titleOriginal;
   	setTimeout(function(){getHornTime();}, 200);
   }
}
function updateTitle(Rmins, Rsecs){
	if(Rsecs<=-1){
   	Rsecs=59;
   }
   var Szero = "";
   var currTime=new Date().getSeconds();
   Rsecs=addTime-currTime;
   if(Rsecs>=60)
   	Rsecs-=60;
   if(Rsecs<0)
   	Rsecs+=60;
   if(oldTime<Rsecs)
   	Rmins--;
   oldTime=Rsecs;

   if(firstPage==1){
		GM_setValue('titleLastUpdated', new Date().getTime()+'');
   }
   else{
   	if (parseInt(GM_getValue('titleLastUpdated', '0')) + 5000 <= (new Date().getTime())){
      	GM_setValue('titleLastUpdated', new Date().getTime()+'');
         if(GM_getValue('alertDisabled', '0')==0)
 				setTimeout(function() {alert("Hunter's Horn READY");if(location.href.search("#")==-1){window.location=location.href+"#";}else{window.location=location.href;}} , ((Rmins*60000)+(Rsecs*1000)+1000));
   		firstPage=1;
   	}
   }
   if(runOnce==0){
   	if(document.getElementById('refreshReminder')!=null){
      	runOnce=1;
         if(document.getElementsByName('alertTrue')[0].checked)
         	initialAlertState=1;
         else
         	initialAlertState=0;
         if(document.getElementsByName('nobaitAlertTrue')[0].checked)
            initialBaitAlertState=1;
         else
         	initialBaitAlertState=0;
      }
   }

   if(Rsecs<10)
   	Szero="0";
   if(Rmins<0 || (Rmins==0 && Rsecs<=0)){
   	document.title="Horn READY! | "+titleOriginal;
      builtInTimer = document.getElementById('app10337532241_huntTimer');
      if(builtInTimer!=null)
      builtInTimer.innerHTML="<span style='font-size: 10px'>Sound your horn!</span>";
      setTimeout(getHornTime(), 500);
   }
   else{
      document.title=Rmins+":"+Szero+Rsecs+" min | "+titleOriginal;
      builtInTimer = document.getElementById('app10337532241_huntTimer');
      if(builtInTimer!=null)
      builtInTimer.innerHTML="<span style='font-size: 10px'>Next Hunt: </span>"+Rmins+":"+Szero+Rsecs+" <span style='font-size: 10px'>mins</span>";
      if(document.getElementById('refreshReminder')!=null){
      	if(document.getElementsByName('alertTrue')[0].checked && GM_getValue('alertDisabled', '0')==1){
         	if(initialAlertState==0){
      			GM_setValue('alertDisabled', '0');
            }
            else{
            	document.getElementsByName('alertTrue')[0].checked=false;
            }
            runOnce=0;
         	document.getElementById('refreshReminder').innerHTML="Please reload the page for<br>changes to take effect";
	      }
      	else if(document.getElementsByName('alertTrue')[0].checked==false && GM_getValue('alertDisabled', '0')==0){
         	if(initialAlertState==1){
      			GM_setValue('alertDisabled', '1');
            }
            else{
            	document.getElementsByName('alertTrue')[0].checked=true;
            }
            runOnce=0;
         	document.getElementById('refreshReminder').innerHTML="Please reload the page for<br>changes to take effect";
	      }
	      if(document.getElementsByName('nobaitAlertTrue')[0].checked && GM_getValue('nobaitAlertDisabled', '0')==1){
         	if(initialBaitAlertState==0){
      			GM_setValue('nobaitAlertDisabled', '0');
            }
            else{
            	document.getElementsByName('nobaitAlertTrue')[0].checked=false;
            }
            runOnce=0;
	         document.getElementById('nobaitRefreshReminder').innerHTML="Please reload the page for<br>changes to take effect";
	      }
	      else if(document.getElementsByName('nobaitAlertTrue')[0].checked==false && GM_getValue('nobaitAlertDisabled', '0')==0){
         	if(initialBaitAlertState==1){
      			GM_setValue('nobaitAlertDisabled', '1');
            }
            else{
            	document.getElementsByName('nobaitAlertTrue')[0].checked=true;
            }
            runOnce=0;
	         document.getElementById('nobaitRefreshReminder').innerHTML="Please reload the page for<br>changes to take effect";
	      }
      }
      else{
      	sidebar_ads=document.getElementById(adIDName);
         loadSidebar();
      }
   }

   if (puzzleValue=='true') {
		document.title="King's Reward! | "+titleOriginal;
      Rsecs=0;
      Rmins=0;
   }

   if(!(Rsecs<=0 && Rmins<=0)){
   	if(firstPage==1)
   		setTimeout(function(){updateTitle(Rmins, Rsecs-1);},100);
      else
      	setTimeout(function(){updateTitle(Rmins, Rsecs-1);},500);
   }
   else
   	getHornTime();
}

function mainFunction(){
if (document.getElementById('app10337532241_hud_titlebar')!=null){
	var titleBar = document.getElementById('app10337532241_hud_titlebar');
	var DisplayProgress = document.getElementById('app10337532241_hud_titlePercentage');
	if(titleBar.title.indexOf('%')>2)
		DisplayProgress.innerHTML = titleBar.title.substring(0, titleBar.title.indexOf('%'));
	else
   	DisplayProgress.innerHTML = titleBar.title.substring(0, titleBar.title.indexOf('%'))+".00";
}
var baitQty = document.getElementById('app10337532241_hud_baitQuantity');
if((baitQty==null || baitQty==0) && GM_getValue('baitAlerted', '0')==0){
	GM_setValue('baitAlerted', 1);
   if(GM_getValue('nobaitAlertDisabled', '0')==0)
		alert("Out of Bait!\nPlease rearm new bait");
}
else if(baitQty!=null && baitQty!=0)
	GM_setValue('baitAlerted', 0);

if(timervalue > 0)
{
   firstPage=0;
	if (parseInt(GM_getValue('titleLastUpdated', '0')) + 800 <= (new Date().getTime())){
   	firstPage=1;
   }
   Cmin = new Date().getMinutes();
   Csec = new Date().getSeconds();
   //calculate timeoutvalue in milliseconds
   timeoutvalue = (parseInt(timervalue)) * 1000;
   //coverts it to minutes and seconds for display purposes
   Rmins = parseInt(timervalue/60);
   Rsecs = timervalue%60;
   addTime=Rsecs+Csec;
   oldTime=99999;

   // Title Timer starts
   updateTitle(Rmins, Rsecs);

   if(firstPage==1){
   	// Alerts when the horn is ready to sound
      if(GM_getValue('alertDisabled', '0')==0)
   		setTimeout(function() {alert("Hunter's Horn READY");if(location.href.search("#")==-1){window.location=location.href+"#";}else{window.location=location.href;}} , timeoutvalue);
   }
}
else{
   getHornTime();
}
}
mainFunction();