Greasy Fork

Mafia Reloaded Dashboard

Dashboard

目前为 2021-03-29 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/424164/916203/Mafia%20Reloaded%20Dashboard.js

// ==UserScript==
// @run-at document-idle
// @name Mafia Reloaded Dashboard
// @namespace https://mafiareloaded.com/game/
// @description Dashboard
// @include https://mafiareloaded.com/game/*
// @include https://apps.facebook.com/*
// @grant    GM_addStyle
// @grant    GM_openInTab
// @require  	http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js

//var Bar = document.getElementsByClassName("_2t-f")[0];
//console.log(document);
//alert(getCookieTest());

head = document.getElementsByTagName('head')[0];
//console.log(head);
if ( head != null )
{  
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columns { list-style-type: none; margin: 10; padding: 0; border-width: 2px; width: 788px; font-size: 11px; top: 20px; position: relative; }";
head.appendChild(style);
  
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "column { width: 100px; height: 100px; padding-bottom: 5px; padding-top: 5px; text-align: center; cursor: move; }";
head.appendChild(style);

style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columnheader { cursor: auto !important; background: linear-gradient(to bottom,#888,#444 45%,#444 55%,#333) #555 !important; }";
head.appendChild(style); 
  
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columns li { height: 20px; width: 750px; display: inline-block; color: white; background: radial-gradient(#112132 30%,#04080b) #0a141f; padding: 5px; border-radius: 10px;  border: 2px solid #224567; cursor: move; }";
head.appendChild(style);
  
style = document.createElement('style');
style.type = 'text/css';
//style.innerHTML = "#columns li span{ height: 30px; width: 150px; color: black; background-color: #ccc; padding: 5px; border-bottom: 1px solid #ddd;  border-radius: 10px;  border: 2px solid #666666; }";
style.innerHTML = "#columns li span{ height: 20px; display: inline-block; width: 80px; padding: 5px; }";
head.appendChild(style);
  
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#columns li.over {  border-top: 2px solid #099; }";
head.appendChild(style);
  
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = ".tabcontent { display: none; height: 450px; background: #111; top: 42pt !important; border-radius: 6pt; position: relative !important; border: solid 1pt #222 !important; width:800px; ;padding-left:10pt !important; padding-top: 12pt !important; }";
head.appendChild(style);
  
style = document.createElement('style');
style.type = 'text/css';
var sStyle = "#myDemonBox { position: absolute; background: black; color: white; border: 2px solid #099; border-radius: 5px; padding: 10px ; top: 50px; left:10px; width: 300px; height: 420px; resize: both; overflow:hidden; ";
sStyle += "z-Index: 999; font-size: 14.667px !important; font-weight: 1; font-family: Trebuchet MS,Tahoma,Roboto,Arial,Helvetica,sans-serif,Arial Unicode MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji !important;}";  
style.innerHTML = sStyle;
head.appendChild(style);  

style = document.createElement('style');
style.type = 'text/css';
var sStyle = "#myDemonBox label { height:30px; display: inline-block !important; font-size: 14.667px !important; font-weight: 1; font-family: Trebuchet MS,Tahoma,Roboto,Arial,Helvetica,sans-serif,Arial Unicode MS,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji !important;}";
style.innerHTML = sStyle;
head.appendChild(style);  
  
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = "#myDemonBoxheader { padding: 10px; cursor: move; background: #222; margin: -10px; height:22px; }";
head.appendChild(style);  

style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = ".myBtn { color: white; font-weight: 700;line-height: 17px;border-radius: 6px;padding: 6px 10px;background: linear-gradient(to bottom,#333,#666 45%,#333 55%,#222) #333;box-shadow: inset #777 0 0 2px 1px;text-shadow: none;-moz-user-select: none; }";
head.appendChild(style);
 
}

this.$ = this.jQuery = jQuery.noConflict(true);
// ************************* CONST CONSOLE OBJECT *********************
var CONST_ConsoleObject = "LyQ";
var CONST_vq = "ATb";

var CONST_Health = "aaa";
//var CONST_Health = "Skm";
var CONST_TotalHealth = "LRa";
var CONST_Energy = "QkC";
var CONST_TotalEnergy = "yLQ";
var CONST_Stamina = "TOP";
var CONST_TotalStamina = "pjl";
var CONST_Experience = "VZo";
var CONST_Level = "bkN";
var CONST_SkillTokens = "";
var CONST_Cash = "";

var CONST_StaminaSpanId = "id-Ewt";
var CONST_EnergySpanId = "id-sIH";
var CONST_HealthSpanId = "id-xwY";

var CONST_AttackerHealth = "Skm";
var CONST_DefenderHealth = "";

var CITY = new Array();
var CHAPTER = new Array();

var MY_LEVEL;
var myJobVar;
var teller;
var nCash;
var bJobEvent;

var CHECKED_30Jobs = 0;
var CHECKED_CriticalHits = 1;
var CHECKED_10Opponents = 2;
var CHECKED_AutoBurn = 3;
var CHECKED_Stamina = 4;
var CHECKED_Energy = 5;
var CHECKED_AutoCollect = 6;
var CHECKED_AutoBurnMastery = 7;
var CHECKED_AutoDeposit = 8;

var PROCESS_Fight = 0;
var PROCESS_Burn = 1;
var PROCESS_Mastery = 2;
// ************************* END CONST CONSOLE OBJECT *****************


// **************************

var dragSrcEl = null;

function handleDragStart(e) {
  // Target (this) element is the source node.
  dragSrcEl = this;

  e.dataTransfer.effectAllowed = 'move';
  e.dataTransfer.setData('text/html', this.outerHTML);

  this.classList.add('dragElem');
}
function handleDragOver(e) {
  if (e.preventDefault) {
    e.preventDefault(); // Necessary. Allows us to drop.
  }
  this.classList.add('over');

  e.dataTransfer.dropEffect = 'move';  // See the section on the DataTransfer object.

  return false;
}

function handleDragEnter(e) {
  // this / e.target is the current hover target.
}

function handleDragLeave(e) {
  this.classList.remove('over');  // this / e.target is previous target element.
}

function handleDrop(e) {
  // this/e.target is current target element.

  if (e.stopPropagation) {
    e.stopPropagation(); // Stops some browsers from redirecting.
  }

  // Don't do anything if dropping the same column we're dragging.
  if (dragSrcEl != this) {
    // Set the source column's HTML to the HTML of the column we dropped on.
    //alert(this.outerHTML);
    //dragSrcEl.innerHTML = this.innerHTML;
    //this.innerHTML = e.dataTransfer.getData('text/html');
    this.parentNode.removeChild(dragSrcEl);
    var dropHTML = e.dataTransfer.getData('text/html');
    this.insertAdjacentHTML('beforebegin',dropHTML);
    var dropElem = this.previousSibling;
    saveCookie();
    initJob(false);
    addDnDHandlers(dropElem);
    
  }
  this.classList.remove('over');
  return false;
}

function handleDragEnd(e) {
  // this/e.target is the source node.
  this.classList.remove('over');

  /*[].forEach.call(cols, function (col) {
    col.classList.remove('over');
  });*/
}

function addDnDHandlers(elem) {
  elem.addEventListener('dragstart', handleDragStart, false);
  elem.addEventListener('dragenter', handleDragEnter, false)
  elem.addEventListener('dragover', handleDragOver, false);
  elem.addEventListener('dragleave', handleDragLeave, false);
  elem.addEventListener('drop', handleDrop, false);
  elem.addEventListener('dragend', handleDragEnd, false);

}


// ************ draggable *****************
// ************ draggable *****************
function dragElement(elmnt) {
  var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
  if (document.getElementById(elmnt.id + "header")) {
    // if present, the header is where you move the DIV from:
    document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown;
  } else {
    // otherwise, move the DIV from anywhere inside the DIV:
    elmnt.onmousedown = dragMouseDown;
  }

  function dragMouseDown(e) {
    e = e || window.event;
    e.preventDefault();
    // get the mouse cursor position at startup:
    pos3 = e.clientX;
    pos4 = e.clientY;
    document.onmouseup = closeDragElement;
    // call a function whenever the cursor moves:
    document.onmousemove = elementDrag;
  }

  function elementDrag(e) {
    e = e || window.event;
    e.preventDefault();
    // calculate the new cursor position:
    pos1 = pos3 - e.clientX;
    pos2 = pos4 - e.clientY;
    pos3 = e.clientX;
    pos4 = e.clientY;
    // set the element's new position:
    elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
    elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
  }

  function closeDragElement() {
    // stop moving when mouse button is released:
    document.onmouseup = null;
    document.onmousemove = null;
  }
}
// ************ end draggable *************
// *************  APPEND ELEMENTS ******************

var bStopTimer = true;
var bStop = false;
var bStopJobs = false;
var bContinue = false;
var bDebug = false;
var myIntervalConsole;
var nIntervalConsole;
var bDoMastery = false;

var bRun = false;
var bStopJobs = true;
var myJobList;
var myJobMasteryList;
var nMasteryTeller = 0;
var IntervalMastery;


// DVETEST
var myTabBtn = document.createElement("a");
//myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Dashboard";
myTabBtn.href = "#";
myTabBtn.id = "dashboard";

document.body.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
 	CreateMyDiv();
}, true );



function CreateMyDiv()
{
var box = document.createElement( "div" );
box.id = "myDemonBox";

/*
box.addEventListener( 'dblclick', function () {
    box.parentNode.removeChild( box );
  	bStopTimer = true;
}, true );
*/

box.addEventListener( 'click', function (e) {
  	var elem = document.getElementById('myDemonBox');
  	if ( elem.offsetTop < 50 ) elem.offsetTop = 50;
  if ( elem.offsetLeft < 0 ) elem.offsetLeft = 0;
    setCookie("DemonPos", elem.offsetTop+","+elem.offsetLeft+","+elem.offsetWidth+","+elem.offsetHeight, 365);
}, true );

document.body.appendChild( box );
setWindowPos();

// Make the DIV element draggable:

var box2 = document.createElement( "div" );
box2.id = "myDemonBoxheader";
box2.innerText = "Mafia Reloaded Dashboard";
box.appendChild(box2);

dragElement(document.getElementById("myDemonBox"));

// ******************** CONSOLE **********************

var myConsole = document.createElement("div");
//myConsole.style.border = "solid 1px white";
myConsole.style.height = "20px";
myConsole.style.top = "20px";
myConsole.style.position = "relative";
box.appendChild(myConsole);

var mySpan = document.createElement("span");
mySpan.id = "spanHealth";
mySpan.setAttribute("class","health");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);

var myLbl = document.createElement("label");   
myLbl.style.color = "white";
myLbl.id = "myHealthLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";              
mySpan.appendChild(myLbl); 

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
myConsole.appendChild(t);  


var mySpan = document.createElement("span");
mySpan.id = "spanEnergy";
mySpan.setAttribute("class","energy");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);

var myLbl = document.createElement("label");   
myLbl.style.color = "white";
myLbl.id = "myEnergyLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";              
mySpan.appendChild(myLbl); 

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
myConsole.appendChild(t);  


var mySpan = document.createElement("span");
//id-YWi
mySpan.id = "spanStamina";
mySpan.setAttribute("class","stamina");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);

var myLbl = document.createElement("label");   
myLbl.style.color = "white";
myLbl.id = "myStaminaLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";              
mySpan.appendChild(myLbl); 

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
myConsole.appendChild(t);  

var mySpan = document.createElement("span");
mySpan.id = "spanLevel";
mySpan.setAttribute("class","level");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
myConsole.appendChild(t);  

var mySpan = document.createElement("span");
mySpan.id = "spanExperience";
mySpan.setAttribute("class","experience");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);

var myLbl = document.createElement("label");   
myLbl.style.color = "white";
myLbl.id = "myExperienceLbl";
myLbl.setAttribute('class', 'mylab');
myLbl.style.visibility = "hidden";
myLbl.innerText = "0 / 0";              
mySpan.appendChild(myLbl); 

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
myConsole.appendChild(t);  

var mySpan = document.createElement("span");
mySpan.id = "spanCash";
mySpan.innerText = "Cash ";
//mySpan.setAttribute("class","");
mySpan.style.visibility = "hidden";
myConsole.appendChild(mySpan);

var myLbl = document.createElement("label");   
//myLbl.style.color = "white";
myLbl.id = "myCashLbl";
myLbl.setAttribute('class', 'cash');
myLbl.style.visibility = "hidden";
myLbl.innerText = "$0";              
mySpan.appendChild(myLbl); 

var myLbl = document.createElement("label");   
myLbl.id = "ProcessStatus";
//myLbl.border = "solid 1px white";
myLbl.style.height = "10px";
myLbl.setAttribute("class","my");
myLbl.style.visibility = "hidden";
myLbl.innerText = "";              
myConsole.appendChild(myLbl); 

var myLbl = document.createElement("label");   
myLbl.id = "Process";
//myLbl.border = "solid 1px white";
myLbl.style.width = "50px";
myLbl.style.height = "10px";
myLbl.setAttribute("class","my");
//myLbl.style.visibility = "hidden";
myLbl.innerText = "";              
myConsole.appendChild(myLbl); 

// ******************** END CONSOLE **********************

// ********************************* TABS *****************************************

var myTabDiv = document.createElement("div");
myTabDiv.style.top = "40pt";
myTabDiv.style.width = "80%";
myTabDiv.style.position = "relative";
myTabDiv.setAttribute("class","tabs");

var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Main";
myTabBtn.href = "#";
myTabBtn.id = "tabmain";

myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
 	doTab(e,"main");
}, true );

var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Fight rival mobsters";
myTabBtn.href = "#";
myTabBtn.id = "tabfight";

myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
 	doTab(e,"fight");
}, true );


var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Energy / Stamina Burner";
myTabBtn.href = "#";
myTabBtn.id = "tabjobs";

myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
 	doTab(e,"jobs");
}, true );

box.appendChild(myTabDiv);

var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Mastery";
myTabBtn.href = "#";
myTabBtn.id = "tabmastery";

myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
 	doTab(e,"mastery");
}, true );

box.appendChild(myTabDiv);

var myTabBtn = document.createElement("a");
myTabBtn.setAttribute("class","tablinks");
myTabBtn.innerText = "Options";
myTabBtn.href = "#";
myTabBtn.id = "taboptions";

myTabDiv.appendChild(myTabBtn);
myTabBtn.addEventListener( 'click', function(e){
 	doTab(e,"options");
}, true );

box.appendChild(myTabDiv);

// ********************************* END TABS *************************************
// *************** TAB MAIN ************

var myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
myTabDiv.style.display = "block";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.id = "main";
box.appendChild(myTabDiv);

var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "25%";
fs.style.height = "180px";
fs.style.float = "left";
fs.style.borderRadius = "5px";

var legend = document.createElement ("legend");
legend.innerHTML = "Daily Checklist";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "Check30Jobs";
mySelect.type = "checkbox";
fs.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("Check30Jobs"),"30Jobs");
}, true );

var t = document.createTextNode("\u00A0");     // Create a text node
fs.appendChild(t);  

var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Perform 30 jobs";
fs.appendChild(myLabel);

var para = document.createElement("br");                  
fs.appendChild(para); 

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckCriticalHits";
mySelect.type = "checkbox";
fs.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckCriticalHits"),"CriticalHits");
}, true );

var t = document.createTextNode("\u00A0");     // Create a text node
fs.appendChild(t);  

var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Deal 10 Critical Hits";
fs.appendChild(myLabel);

var para = document.createElement("br");                  
fs.appendChild(para); 

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "Check10Opponents";
mySelect.type = "checkbox";
fs.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("Check10Opponents"),"10Opponents");
}, true );


var t = document.createTextNode("\u00A0");     // Create a text node
fs.appendChild(t);  

var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Kill 10 Opponents";
fs.appendChild(myLabel);

var para = document.createElement("br");                  
fs.appendChild(para); 
var para = document.createElement("br");                  
fs.appendChild(para); 

var myBtn = document.createElement("a");
myBtn.setAttribute("class","myBtn");
myBtn.id = "CollectDaily";
myBtn.href = "#";
myBtn.innerText = "Collect";

fs.appendChild(myBtn);

myBtn.addEventListener( 'click', doCollectDaily, true );


// *************** END TAB MAIN ************
// *************** TAB FIGHT ************

var myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
myTabDiv.style.display = "block";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.id = "fight";
box.appendChild(myTabDiv);

var myStopScript = document.createElement("a");
myStopScript.setAttribute("class","myBtn");
myStopScript.id = "stop-script-fr";
myStopScript.href = "#";
myStopScript.innerText = "Run";

myTabDiv.appendChild(myStopScript);
myStopScript.addEventListener( 'click', ToggleFight, true );

/*
var myBtn = document.createElement("a");
myBtn.setAttribute("class","myBtn");
myBtn.id = "heal";
myBtn.href = "#";
myBtn.innerText = "Heal";

myTabDiv.appendChild(myBtn);
myBtn.addEventListener( 'click', testHeal, true );
*/

var para = document.createElement("P");              
para.innerText = " ";              
myTabDiv.appendChild(para); 

var para = document.createElement("br");                  
myTabDiv.appendChild(para); 
var para = document.createElement("br");                  
myTabDiv.appendChild(para); 

var mySelect = document.createElement("input");
mySelect.id = "CheckAssignment";
mySelect.type = "checkbox";
myTabDiv.appendChild(mySelect);

/*
mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckAssignment"),true);
}, true );
*/
var t = document.createTextNode("\u00A0");     // Create a text node
myTabDiv.appendChild(t);  

var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Rivals from assignment";
myTabDiv.appendChild(myLabel);

// ***********  AUTO BURN     *****************
//var para = document.createElement("br");                  
//myTabDiv.appendChild(para); 
var para = document.createElement("br");                  
myTabDiv.appendChild(para); 

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckAutoBurn";
mySelect.type = "checkbox";
myTabDiv.appendChild(mySelect);


mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckAutoBurn"),"AutoBurn");
}, true );

var t = document.createTextNode("\u00A0");     // Create a text node
myTabDiv.appendChild(t);  

var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Burn energy when no stamina left";
myTabDiv.appendChild(myLabel);

var para = document.createElement("br");                  
myTabDiv.appendChild(para); 
var para = document.createElement("br");                  
myTabDiv.appendChild(para); 
var para = document.createElement("br");                  
myTabDiv.appendChild(para); 

// ***********  END AUTO BURN *****************

var myLbl = document.createElement("label");   
myLbl.style.color = "white";
myLbl.id = "myLabelTest";
myLbl.setAttribute('class', 'mylab');
myLbl.style.width = "80%";
myLbl.innerText = "";              
myTabDiv.appendChild(myLbl); 


var myClose = document.createElement("a");
myClose.setAttribute("class","popup-close");
myClose.setAttribute("data-id","myDemonBox");
myClose.href = "#";
myClose.innerText = "X";

box2.appendChild(myClose);

// *************** END TAB FIGHT ************
// *************** TAB JOBS ****************

myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
//myTabDiv.style.width = "880px";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.style.display = "none";
myTabDiv.style.position = "relative";
myTabDiv.id = "jobs";
box.appendChild(myTabDiv);

var myStopScript = document.createElement("a");
myStopScript.setAttribute("class","myBtn");
myStopScript.id = "AutoLvlstop-script";
myStopScript.href = "#";
myStopScript.innerText = "Run";

myTabDiv.appendChild(myStopScript);
myStopScript.addEventListener( 'click', function(){
 	bStopJobs = !bStopJobs;
  doJobs();
}, true );

var myCurJobList = document.createElement("a");
myCurJobList.setAttribute("class","myBtn");
myCurJobList.id = "current-joblist";
myCurJobList.style.display = "none";
myCurJobList.href = "#";
myCurJobList.title = "Go to the jobpage, then click this link to retrieve all jobs";
myCurJobList.innerText = "Retrieve Jobs";

myTabDiv.appendChild(myCurJobList);
myCurJobList.addEventListener( 'click', function(){
  getCurrentJobList();
}, true );

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
myTabDiv.appendChild(t);  

var myLbl = document.createElement("label");   
//myLbl.style.border = "solid 1px white";
myLbl.style.position = "absolute";
myLbl.id = "mylvlLabel";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "";              
myTabDiv.appendChild(myLbl); 

myTabDiv.appendChild(para);       
var para = document.createElement("br");                  
myTabDiv.appendChild(para); 

var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "65%";
fs.style.float = "left";
fs.style.borderRadius = "5px";

var legend = document.createElement ("legend");
legend.innerHTML = "Jobs";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);

var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "City: ";
fs.appendChild(sp);

var cmb = document.createElement("select");
cmb.id = "curCITY";

cmb.addEventListener( 'change', function(){
  initChapters(document.getElementById("curCITY").value, false);
}, true );

fs.appendChild(cmb);

var para = document.createElement("br");                  
fs.appendChild(para); 

var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "Chapter: ";
fs.appendChild(sp);

var cmb = document.createElement("select");
cmb.id = "curCHAPTER";

cmb.addEventListener( 'change', function(){
  initJobs(document.getElementById("curCHAPTER").value);
}, true );

fs.appendChild(cmb);

var para = document.createElement("br");                  
fs.appendChild(para); 

var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "Job: ";
fs.appendChild(sp);

var cmb = document.createElement("select");
cmb.id = "curJobs";
fs.appendChild(cmb);

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
fs.appendChild(t);  


var myCurJobList = document.createElement("a");
myCurJobList.setAttribute("class","myBtn");
myCurJobList.id = "addJob";
myCurJobList.href = "#";
myCurJobList.innerText = "Add Job";

fs.appendChild(myCurJobList);
myCurJobList.addEventListener( 'click', function(){
  addJob();
}, true );

var t = document.createTextNode("\u00A0\u00A0\u00A0\u00A0");     // Create a text node
fs.appendChild(t); 

//var para = document.createElement("br");                  
//myTabDiv.appendChild(para); 
var fs2 = document.createElement("fieldset");
fs2.style.boxSizing = "border-box";
fs2.style.width = "30%";
fs2.style.float = "left";
fs2.style.borderRadius = "5px";

var legend = document.createElement("legend");
legend.innerHTML = "Burn";
legend.style.padding = "5px";
fs2.appendChild (legend);
myTabDiv.appendChild(fs2);

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckStamina";
mySelect.type = "checkbox";
fs2.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckStamina"),"Stamina");
}, true );


var myLbl2 = document.createElement("label");   
myLbl2.innerText = " Stamina jobs";              
fs2.appendChild(myLbl2); 

var para = document.createElement("br");                  
fs2.appendChild(para); 
//var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
//myTabDiv.appendChild(t);  
var mySelect = document.createElement("input");
mySelect.id = "CheckEnergy";
mySelect.setAttribute("class","myCheckbox");
mySelect.type = "checkbox";
fs2.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckEnergy"),"Energy");
}, true );


var myLbl2 = document.createElement("label");   
myLbl2.innerText = " Energy jobs";              
fs2.appendChild(myLbl2); 

//var para = document.createElement("br");                  
//myTabDiv.appendChild(para); 
//var para = document.createElement("br");                  
//myTabDiv.appendChild(para); 

// ********************************* END TAB JOBS *****************************************
// *************** TAB MASTERY ************

myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
//myTabDiv.style.width = "880px";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.style.display = "none";
myTabDiv.style.position = "relative";
myTabDiv.id = "mastery";
box.appendChild(myTabDiv);

var myStopScript = document.createElement("a");
myStopScript.setAttribute("class","myBtn");
myStopScript.id = "MasteryScript";
myStopScript.href = "#";
myStopScript.innerText = "Run";

myTabDiv.appendChild(myStopScript);
myStopScript.addEventListener( 'click', function(){
  doMastery();
}, true );

var t = document.createTextNode("\u00A0\u00A0\u00A0");     // Create a text node
myTabDiv.appendChild(t);  

var myLbl = document.createElement("label");   
//myLbl.style.border = "solid 1px white";
myLbl.style.position = "absolute";
myLbl.style.left = "20px";
myLbl.style.top = "180px";
myLbl.id = "myLabelMastery";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "";              
myTabDiv.appendChild(myLbl); 

var para = document.createElement("br");                  
myTabDiv.appendChild(para); 
var para = document.createElement("br");                  
myTabDiv.appendChild(para); 

var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "25%";
fs.style.float = "left";
fs.style.borderRadius = "5px";

var legend = document.createElement ("legend");
legend.innerHTML = "Chapter";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);

var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "City: ";
fs.appendChild(sp);

var cmb = document.createElement("select");
cmb.id = "curCITYMastery";

cmb.addEventListener( 'change', function(){
  initChapters(document.getElementById("curCITYMastery").value, true);
}, true );

fs.appendChild(cmb);

var para = document.createElement("br");                  
fs.appendChild(para); 

var sp = document.createElement("span");
sp.style.width = "65px";
sp.style.height = "30px";
sp.style.display = "inline-block";
sp.innerText = "Chapter: ";
fs.appendChild(sp);

var cmb = document.createElement("select");
cmb.id = "curCHAPTERMastery";

//cmb.addEventListener( 'change', function(){
//  initJobs(document.getElementById("curCHAPTERMastery").value);
//}, true );

fs.appendChild(cmb);


var fs = document.createElement("fieldset");
fs.style.boxSizing = "border-box";
fs.style.width = "50%";
fs.style.float = "left";
fs.style.borderRadius = "5px";

var legend = document.createElement ("legend");
legend.innerHTML = "Options";
legend.style.padding = "5px";
fs.appendChild (legend);
myTabDiv.appendChild(fs);

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckAutoCollect";
mySelect.type = "checkbox";
fs.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckAutoCollect"),"AutoCollect");
}, true );

var t = document.createTextNode("\u00A0");     // Create a text node
fs.appendChild(t);  

var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Collect Reward";
fs.appendChild(myLabel);

var para = document.createElement("br");                  
fs.appendChild(para); 

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckAutoBurnMastery";
mySelect.type = "checkbox";
fs.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckAutoBurnMastery"),"AutoBurnMastery");
}, true );

var t = document.createTextNode("\u00A0");     // Create a text node
fs.appendChild(t);  

var myLabel = document.createElement("label");
myLabel.setAttribute("class", "mylab" );
myLabel.innerText = "Burn Energy / Stamina when needed to level";
fs.appendChild(myLabel);


// *************** END TAB MASTERY ************
// *************** TAB OPTIONS ************

var myTabDiv = document.createElement("div");
myTabDiv.style.top = "90px";
myTabDiv.style.position = "relative";
myTabDiv.style.padding = "10px";
myTabDiv.setAttribute("class","tabcontent");
myTabDiv.id = "options";
box.appendChild(myTabDiv);

var myLbl = document.createElement("label");   
myLbl.style.color = "white";
myLbl.style.width = "200px";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "Update console every (ms): ";              
myTabDiv.appendChild(myLbl); 


var myNumber = document.createElement("input");
myNumber.id = "ConsoleInterval";
myNumber.type = "number";
myNumber.value = "1000";
myNumber.step = "100";

myNumber.addEventListener( 'change', function(e){
  elem = document.getElementById("ConsoleInterval");
  nTmpNumber = parseInt(elem.value);
  if ( nTmpNumber > 0 )
 		setCookie("IntervalConsole",elem.value,365);
}, true );


myTabDiv.appendChild(myNumber);

var para = document.createElement("br");                  
myTabDiv.appendChild(para); 

var myLbl = document.createElement("label");   
myLbl.style.color = "white";
myLbl.style.width = "200px";
myLbl.setAttribute('class', 'mylab');
myLbl.innerText = "Retry (nr): ";              
myTabDiv.appendChild(myLbl); 


var myNumber = document.createElement("input");
myNumber.id = "NrRetry";
myNumber.type = "number";
myNumber.value = "3";
myNumber.step = "1";

myNumber.addEventListener( 'change', function(e){
  elem = document.getElementById("NrRetry");
  nTmpNumber = parseInt(elem.value);
  if ( nTmpNumber > 0 )
  {
 		setCookie("NrRetry",elem.value,365);
    nRetry = elem.value;
  }
}, true );
myTabDiv.appendChild(myNumber);

var para = document.createElement("br");                  
myTabDiv.appendChild(para); 
var para = document.createElement("br");                  
myTabDiv.appendChild(para); 

var mySelect = document.createElement("input");
mySelect.setAttribute("class","myCheckbox");
mySelect.id = "CheckDeposit";
mySelect.type = "checkbox";
myTabDiv.appendChild(mySelect);

mySelect.addEventListener( 'click', function(e){
 	doCheckbox(document.getElementById("CheckDeposit"),"Deposit");
}, true );


var myLbl2 = document.createElement("label");   
myLbl2.innerText = " Auto Deposit";              
myTabDiv.appendChild(myLbl2); 

// ************* END APPEND ELEMENTS ******************\
waitawhile();
}

var objJob;
var objFight;
var nRedID;
var nRetry = 0;
var nRetryTeller = 0;


function updateConsole()
{
  if ( !bContinue )
  {
    var sFight = "home";
  	var sAction = "view";
    var objConsole;
  
    //$.post('https://mafiareloaded.com/game/req.php', {controller: sFight,action: sAction,id: nRedID,amt:"5",zhk:"8",dvg:"404",vq: CONST_vq,geq:"0"}, function(response) 
    $.post('https://mafiareloaded.com/game/req.php', {controller: sFight,action: sAction,dvg:"404",vq: CONST_vq}, function(response) 
    {
      objConsole = response[CONST_ConsoleObject];
      if ( bDebug ) console.log(objConsole);
      setConsole( objConsole, true );
    }
    );
  }
}

var objDaily;
function doDaily(cvalue)
{
  	var sController = "home";
  	var sAction = "hbe";
    $.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,id: cvalue, dvg:"404",vq: CONST_vq}, function(response) 
    {
      //console.log(response);
      if ( response.popups.length )
      {
        console.log(response);
      	objDaily = response[CONST_ConsoleObject];
      }
    });
}

function doCollectDaily()
{
  	objDaily = null;
  
 		if ( isChecked("Check30Jobs") == true )
    {
      setTimeout( function(){doDaily("0");},2000);
    }
 		
  	if ( isChecked("CheckCriticalHits") == true )
    {
      setTimeout( function(){doDaily("1");},4000);
    }
  
  	if ( isChecked("Check10Opponents") == true )
    {
      setTimeout( function(){doDaily("2");},6000);
    }
  	
  
  if ( objDaily != null )
  {
    setTimeout(function(){setConsole( objDaily, true );},1000);
  }
  
}

function checkProcess(processid)
{
  elem = document.getElementById("Process");
  var id = elem.innerText;
  
  if ( processid != parseInt(id) && id != "" )
  {
    setLabelProcess("Another process is already running", processid);
    return false;
  }
  return true;
}

function setProcess(processid)
{
  elem = document.getElementById("Process");
  elem.innerText = processid;
}

function ToggleFight()
{
  if ( checkProcess(PROCESS_Fight) )
  {
    bContinue = !bContinue;

    var obj = document.getElementById("stop-script-fr");
    if ( !bContinue )
    {
      bStopJobs = true;
      obj.innerText = "Run";
      setProcess(null);
      //clearInterval(myJobVar);
      if ( myAutoBurn > 0 ) clearInterval(myAutoBurn);
    }
    else
    {
      obj.innerText = "Stop";
      if ( myIntervalConsole > 0 ) clearInterval(myIntervalConsole);
      nRetryTeller = 0;
      setProcess(PROCESS_Fight);
      doFight();
    }
  }
}

function getNextID(cvalue) 
{
  var name = "action=twy";
 	var nIndex = cvalue.indexOf("twy");
  
  if ( nIndex == -1 )
    return -1;
  
  var tmpValue = cvalue.substring(nIndex+4);
  var nEndID = tmpValue.indexOf('&');
  
  return parseInt(tmpValue.substring(3,nEndID));
}


function getRedID(cvalue) 
{
  var name = "action=attackview2";
 	var nIndex = cvalue.indexOf("attackview2");
  
  if ( nIndex == -1 )
    return -1;
  
  var tmpValue = cvalue.substring(nIndex);
  var nEndID = tmpValue.indexOf('">');
  
  var nBeginID = tmpValue.indexOf('id=');
  
  return parseInt(tmpValue.substring(nBeginID+3,nEndID));
}

function getYellowID(cvalue) 
{
 	var nIndex = cvalue.indexOf("assignment");
  
  if ( nIndex == -1 )
    return -1;
  
  var tmpValue = cvalue.substring(nIndex);
  var nEndID = tmpValue.indexOf('">');
  
  var nBeginID = tmpValue.indexOf('id=');
  
  return parseInt(tmpValue.substring(nBeginID+3,nEndID));
}

function doFight()
{
  var strMsg;
  
  if ( bContinue )
  {
  	doAutoDeposit();
  	$.post('https://mafiareloaded.com/game/req.php', { controller: "fight", action: "view", tab : "1", dvg: "404", vq: CONST_vq, geq : "0" }, function(response) 
    {
    strMsg = response.message;
    if ( !document.getElementById("CheckAssignment").checked )
    {
    	nRedID = getRedID(strMsg);
      var sController = "fight";
      var sAction = "attackview2";
    }
    else
    {
      console.log("get Yellow ID");
      nRedID = getYellowID(strMsg);
      var sController = "assignment";
      var sAction = "attackview";
    }
    var sDvg = "404"
      
    if ( nRedID != -1 )
    {
      
      $.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,id: nRedID,dvg:"404",vq: CONST_vq, geq:"0 "}, function(response) 
      {
	    	// Log the response to the console
    		if ( bDebug ) console.log("get redid: " + nRedID);
        //console.log(response);
  	  	strMsg = response.message;
        //setLabel(strMsg,false);
        objFight = response.cb.fight;
        if ( objFight != null )
        {
          nRetryTeller = 0;
          setTimeout(doPowerAttack,100);
          return;
        }
        else
        {
          if ( bDebug ) console.log("object fight null");
        }
        })
        .fail(function(response) 
        {
        	// retry x nr of times
        	if ( nRetryTeller < nRetry )
          {
    				setTimeout(doFight,150);
            console.log("Retry doFight: " + nRetryTeller);
            nRetryTeller++;
            return;
          }
          else
          {
            ToggleFight();
            setLabel("An error occured, please try again",false);
            return;
          }
    		});
    }
		else
    {
      setLabel("No mobsters left",false);
      ToggleFight();
      return;
    }
  });
  }
  //bContinue = true;
  return true;
}

function isRivalDead(obj)
{
  if ( bContinue )
  {
  	if ( obj.dead == true )
    {
    	if ( bDebug ) console.log("Red killed: " + nRedID );      
      //ToggleFight();
      return true;
    }
    else
    {
      setTimeout(doPowerAttack,150);
    }
  }
  return false;
}

function doNextRival(obj)
{
  strMsg = obj.redraw_data["rm-next"];
  console.log(obj);
  nRedID = -1;
  if ( strMsg.length )
  {
    // check if mobsters left
    nIndex = strMsg.indexOf("action=deposit");
    if ( nIndex != -1 )
    {
      setLabel("No mobsters left",false);
      ToggleFight();
      return;
    }
    
    console.log("do next rival");
    var sController = "fight";
    if ( isChecked("CheckAssignment") )
      var sType = "2";
    else
      var sType = "0";
      
   	var sAction = "nextmob";
    
    
    var sParam = {controller: sController,action: sAction,type: sType,dvg:"404",vq: CONST_vq,geq:"0"};
    $.post('https://mafiareloaded.com/game/req.php', sParam, function(response) 
    {
      nRedID = getNextID(response.message);
     	if ( nRedID != -1 )
      {
        console.log(nRedID);
        setTimeout(doPowerAttack,150);
      }
    });
  }
}

var nHealRetry = 0;
var nHealCount = 0;

function doHealDelay(msg)
{
  var nIndexOf = msg.indexOf("seconds");
  if ( nIndexOf != -1 )
  {
    var nBegin = msg.indexOf("<br>");
    var sMessage = msg.substring(nBegin+4);
    var nEnd = sMessage.indexOf("<br>");
    var sMessage = sMessage.substring(0,nEnd);

    
    msgArray = sMessage.split(" ");
    var seconds = msgArray[msgArray.length - 2];

    var nSeconds = parseInt(seconds) * 1000;
    nHealCount = nHealCount + 1000; 
    if ( nHealCount < nSeconds )
    {
      var nSecondCount = (nSeconds - nHealCount)/1000;
      setLabel("Waiting to heal for another " + nSecondCount + " second(s)", false );
      setTimeout(function(){ doHealDelay(msg); }, 1000); // wait 1 second
      return false;
    }

    nHealCount = 0;
    var elemProcess = document.getElementById("Process");
    if ( parseInt(elemProcess.textContent) == PROCESS_Fight )
    {
      setTimeout(doFight,1000);
      console.log("return to fight process");
      return true;
    }
  }
  return true;
}

function doHeal()
{
  var sController = "fight";  
  var sAction = "rewr";
  
  $.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction, dvg:"404",vq: CONST_vq,geq:"0"}, function(response)   
  {
    //console.log(response);
    if ( response.cb.fight.attacker[CONST_AttackerHealth] == 100 )
    {
      setTimeout(doPowerAttack,150);
    	return response.cb.fight.attacker[CONST_AttackerHealth];
    }
    else
    {
      console.log("heal delay");
      console.log(response);
      doHealDelay(response.cb.fight.attack_msg);     
      return;
    }
  })
  .fail(function(response)
  {
    console.log(response);
  });
  return -1;
}

function testHeal()
{
  var sController = "hospital";
  var sAction = "rewr";
  
  console.log("healing");
  $.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction, dvg:"404",vq: CONST_vq}, function(response) 
  {
    setProcess(PROCESS_Fight);
    console.log("heal delay");
    console.log(response);
    doHealDelay(response.popups[0]);
  });
}

function doPowerAttack()
{
  if ( isChecked("CheckAssignment") )
  {
    var sController = "assignment";
  }
  else
  {
    console.log("Fight rival mobster: " + nRedID );
    var sController = "fight";
  }
  
  var sAction = "twy";
  var objFightRed;
  var objConsole;

  if ( bContinue )
  {
    $.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,id: nRedID,amt:"5",zhk:"8",dvg:"404",vq: CONST_vq,geq:"0"}, function(response) 
    {
      
      console.log(response);
      objFightRed = response.cb.fight;
      objConsole = response[CONST_ConsoleObject];
      
      if ( bContinue ) setConsole( objConsole, true );
      
      strMsg = objFightRed.attack_msg;
      setLabel(strMsg,false);
      
      // not enough stamina
      if ( objFightRed.defender == null && objFightRed.attacker[CONST_Health] > 0 )
      {
        if ( isChecked("CheckAutoBurn"))
        {
          setLabel("Processing jobs",false);
          teller = 0;
          nStatTeller = 0;
          setProcessStatus("false");
          bStopJobs = false;
          doBurn(true);
          myAutoBurn = setInterval(checkStatus, 250);
          return;
        }
        else
        {
        	setLabel("Not enough stamina",false);
        	ToggleFight();
        	return false;        
        }
      }
      
      // no health
      var nTmpHeal = objFightRed.attacker[CONST_Health];
     	if ( nTmpHeal == 0 )
      {
        setLabel("Healing...",false);
        doHeal();
        return true;
      }
      
      // check if rival is dead
      if ( isRivalDead(objFightRed)) 
      {
        console.log("next rival");
        doNextRival(response);
        return true;
      }
      
    })
    .fail(function(response)
    {      
      console.log(response);
      return false;
    });
  }  
  return;
}

function checkStatus()
{
  var elem = document.getElementById("ProcessStatus");
  var elemProcess = document.getElementById("Process");
  if ( elem.textContent != "" )
  {
    if ( elem.textContent  == "true" )
    {
      if ( myAutoBurn > 0 ) clearInterval(myAutoBurn);
    	if ( myJobVar > 0 ) clearInterval(myJobVar);
      bStopJobs = true;
      bAutoBurn = false;
      nRetryTeller = 0;
      teller = 0;
      nStatTeller = 0;
      nMasteryTeller = 0;
      
      if ( elemProcess.textContent == "" )      
      {
        return false;
      }
      
      if ( parseInt(elemProcess.textContent) == PROCESS_Fight )
      {
      	setTimeout(doFight,200);
        console.log("return to fight process");
      	return true;
      }
      if ( parseInt(elemProcess.textContent) == PROCESS_Mastery )
      {
        console.log("return to mastery process");
        bDoMastery = false;
      	doMastery();
      	return true;
      }
    }
    return false;
  }
}

function setLabel( strMessage, bAuto )
{
  var list = document.getElementById("myLabelTest");  
  
  //console.log(bAuto + ":" + bDoMastery + "->" + strMessage);
  var elem = document.getElementById("Process");
  switch (parseInt(elem.innerText))
  {
    case PROCESS_Fight:      
      list.innerHTML = strMessage;
      break;
    case PROCESS_Burn:      
      setMyLabel( strMessage );
      break;
    case PROCESS_Mastery:
      setLabelMastery( strMessage );
      break;
  }  
}

function setLabelProcess( strMessage, process )
{
  var list = document.getElementById("myLabelTest");  
  
  switch (process)
  {
    case PROCESS_Fight:      
      list.innerHTML = strMessage;
      break;
    case PROCESS_Burn:      
      setMyLabel( strMessage );
      break;
    case PROCESS_Mastery:
      setLabelMastery( strMessage );
      break;
  }  
}

function setConsole( objConsole, cOn )
{
  var healthlist = document.getElementById("myHealthLbl");
  var healthspan = document.getElementById("spanHealth");
  
  var energylist = document.getElementById("myEnergyLbl");
  var energyspan = document.getElementById("spanEnergy");
  
  var list = document.getElementById("myStaminaLbl");
  var span = document.getElementById("spanStamina");
  
  var explist = document.getElementById("myExperienceLbl");
  var expspan = document.getElementById("spanExperience");
  var lvlspan = document.getElementById("spanLevel");
  
  var cashlist = document.getElementById("myCashLbl");
  var cashspan = document.getElementById("spanCash");
  
  if ( cOn )
  {
  	list.style.visibility = "";
    span.style.visibility = "";
    
    healthspan.style.visibility = "";
    healthlist.style.visibility = "";
    
    energyspan.style.visibility = "";
    energylist.style.visibility = "";

    cashlist.style.visibility = "";
    cashspan.style.visibility = "";

    
    explist.style.visibility = "";
    expspan.style.visibility = "";
    lvlspan.style.visibility = "";
    
  }
  else
  {
    list.style.visibility = "hidden";
    span.style.visibility = "hidden";
    
    healthlist.style.visibility = "hidden";
    healthspan.style.visibility = "hidden";
    
    energylist.style.visibility = "hidden";
    energyspan.style.visibility = "hidden";
    
    explist.style.visibility = "hidden";
    expspan.style.visibility = "hidden";
    lvlspan.style.visibility = "hidden";
    
    cashlist.style.visibility = "hidden";
    cashspan.style.visibility = "hidden";
  }
  
  if ( objConsole != null )
  {
    nHealthLeft = objConsole[CONST_Health];
    nHealth = objConsole[CONST_TotalHealth];
    nEnergyLeft = objConsole[CONST_Energy];
    nEnergy = objConsole[CONST_TotalEnergy];
    nStaminaLeft = objConsole[CONST_Stamina];
    nStamina = objConsole[CONST_TotalStamina];
    nExp = objConsole[CONST_Experience];
    nLvl = objConsole[CONST_Level];
    nCash = objConsole[CONST_Cash];
    
    nToLevel = parseInt(nLvl) * 25 - parseInt(nExp);
  	healthlist.innerText = nHealthLeft.toLocaleString('en-US', {maximumFractionDigits:2}) + "/" + nHealth.toLocaleString('en-US', {maximumFractionDigits:2});
  	energylist.innerText = nEnergyLeft.toLocaleString('en-US', {maximumFractionDigits:2}) + "/" + nEnergy.toLocaleString('en-US', {maximumFractionDigits:2});
  	list.innerHTML = nStaminaLeft.toLocaleString('en-US', {maximumFractionDigits:2}) + "/" + nStamina.toLocaleString('en-US', {maximumFractionDigits:2});
    lvlspan.innerText = "Level " + nLvl.toLocaleString('en-US', {maximumFractionDigits:2});
    explist.innerHTML = nExp.toLocaleString('en-US', {maximumFractionDigits:2}) + " <span style='color:#4ef;'>(" + nToLevel.toLocaleString('en-US', {maximumFractionDigits:2}) + " to level)</span>";
    cashlist.innerText = "$" + nCash.toLocaleString('en-US', {maximumFractionDigits:2});
  }
  else
  {
    console.log(objConsole);
  }
}


function setWindowPos()
{
  var sValue = getCookiePos();
  //console.log("cookie: " + sValue );
  
  var nPosTop = "50px";
  var nPosLeft = "10px";
  var nPosWidth = "300px";
  var nPosHeight = "420px";
  
  if ( sValue != "" )
  {
    var namesArray = sValue.split(",");
    for (i=0;i<namesArray.length;i++)
    {
      if ( i == 0 )
      {
        nPosTop = namesArray[i];
      }
      else if( i == 1 )
      {
        nPosLeft = namesArray[i];
      }
      else if( i == 2 )
      {
        nPosWidth = parseInt(namesArray[i]) - 25;
      }
      else if( i == 3 )
      {
        nPosHeight = parseInt(namesArray[i]) - 25;
      }
    }
  }
	
  //console.log(nPosTop + ":" + nPosLeft + ":" + nPosWidth + ":" + nPosHeight);
  var elem = document.getElementById("myDemonBox");
  elem.style.top = nPosTop + "px";
  elem.style.left = nPosLeft + "px";
  elem.style.width = nPosWidth + "px";
  elem.style.height = nPosHeight + "px";
}

function getCookie(cname) 
{
     
  var name = cname + "=";
  
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function getCookiePos() 
{
     
  var name = "DemonPos=";
  
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  //alert(document.domain);
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  
  document.cookie = cname + "=" + cvalue + ";" + expires + ";secure;path=/";
}

// ************************ JOBS ******************************
function getCookieChecked(cvalue,cindex) 
{
  var name = "Checked=";
  var i=0;
  
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) 
    {
      //alert(cvalue + "->" + c.substring(name.length, c.length) );
      var value = c.substring(name.length, c.length);
      //alert(value);
      var ListChecked = value.split( "," );
      setChecked(cvalue,ListChecked[cindex]);
      return ListChecked[cindex];
    }
  }
  return "";
}

function setChecked(cvalue,svalue)
{
  var elem = document.getElementById("Check" + cvalue);
  
  if ( svalue == "" || svalue == "true")
  {
    elem.checked = true;
  } 
  else
  {
    elem.checked = false;
  }
}

function isChecked(cvalue)
{
  return document.getElementById(cvalue).checked;
}

function doCheckbox(evt,cvalue)
{
  var bChecked;
  var sCookie = "";
  
  elem = document.getElementsByClassName("myCheckbox");
  for ( i=0;i<elem.length;i++)
  {
    bChecked = elem[i].checked;
    sCookie += bChecked + ",";
  }
  sCookie = sCookie.substring(0,sCookie.length-1);
  setCookie("Checked",sCookie,365);
  
  initJob(false);  
}

function MyALInit()
{  
  nEnergyJobCost = 0;
	nTmpEnergy = 0;
	nTmpStamina = 0;
	nStaminaCost = 0;
	nEnergyCost = 0;
	sJobName = "";
  
  
  sStam = getCookieChecked("Stamina", CHECKED_Stamina);
  sEnergy = getCookieChecked("Energy", CHECKED_Energy);
  sDeposit = getCookieChecked("Deposit", CHECKED_AutoDeposit);
  
  s30Jobs = getCookieChecked("30Jobs", CHECKED_30Jobs);
  s10Opponents = getCookieChecked("10Opponents", CHECKED_10Opponents);
  sCriticalHits = getCookieChecked("CriticalHits", CHECKED_CriticalHits);
  
  sCollectReward = getCookieChecked("AutoCollect",CHECKED_AutoCollect);
  sAutoBurnMastery = getCookieChecked("AutoBurnMastery",CHECKED_AutoBurnMastery);
}

function setCookieArray(cindex,cvalue)
{
  var namesArray = cvalue.split(",");
  //city, chapter, name, energy, stamina, mypars
  var sCity, sChapter, sName, sEnergy, sStamina, sPars;
  for ( i=0;i<namesArray.length;i++)
  {
    switch (i){
      case 0:
        sCity = namesArray[i];
        break;
      case 1:
        sChapter = namesArray[i];
        break;
      case 2:
        sName = namesArray[i];
        break;
      case 3:
        sEnergy = namesArray[i];
        break;
      case 4:
        sStamina = namesArray[i];
        break;
      case 5:
        sPars = namesArray[i];
        break;
    }
  }
  if ( cindex == -1 )
  {
  }
	else
  {
  	myJobs[cindex] = new MyJob(sCity,sChapter,sName,sEnergy,sStamina,sPars);
  }
}

function deleteJob(celem)
{
  var ElemLi = document.getElementById(celem);
  celem.remove();
  saveCookie();
  initJob(false);
  setMyLabel("");
}


function addJob()
{
  var nElem = parseInt(document.getElementById("curJobs").value);
  var nMaxRow = document.getElementById("columns").getElementsByClassName("column").length;
  
  if ( nElem >= 0 )
  {
    sValue = myJobList[nElem].city + ",";
    sValue += myJobList[nElem].chapter + ",";
    sValue += myJobList[nElem].name + ",";
    sValue += myJobList[nElem].energy + ",";
    sValue += myJobList[nElem].stamina + ",";
    sValue += myJobList[nElem].param;
    
    setCookie("Row"+nMaxRow,sValue,365);
    initJob(false);
    setMyLabel("'" + myJobList[nElem].name + "' added to list");
  }
}

function getCookieRow(cindex,cstamina) 
{
     
  var name = "Row" + cindex + "=";
  
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function deleteCookie()
{
  for (i=0;i<myJobs.length;i++)
  {
    document.cookie = "Row" + i + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;secure;path=/";
  }
}
function saveCookie()
{
  var Elem = document.getElementById("columns");
  var ElemLi = Elem.getElementsByClassName("column");
  var sCookie = "";
    
  deleteCookie();

  for( i=0; i < ElemLi.length; i++)
  {
    sCookie = "";
    var ElemSpan = ElemLi[i].getElementsByTagName("span");
    for ( t=0; t<ElemSpan.length-1; t++ )
    {
      if ( sCookie != "" )
        sCookie += ",";
      
      sCookie += ElemSpan[t].textContent;
    }

    setCookie("Row"+i,sCookie,365);
  }
}

function initJob(bStamina)
{
  deleteBtn();
  var elem = document.getElementById("columns"); 
  var tabElem = document.getElementById("jobs");
  if ( elem != null )
  {
  	elem.parentNode.removeChild(elem);
  }
  myJobs = new Array();
  var teller=0;
  var sValue = "";
  
  var myTable = document.createElement("ul");
  myTable.style.overflow = "auto";
  myTable.style.height = "250px";
  myTable.id = "columns";
  tabElem.appendChild(myTable);
  
  var myTr = document.createElement("li");
  myTr.id = "columnheader";
  myTable.appendChild(myTr);
  
  myLnk = document.createElement("span");
  myLnk.innerText="X";
  myLnk.style.width = "7px";
  myTr.appendChild(myLnk);

  var myTd = document.createElement("span");
  myTd.innerText = "City";
  myTr.appendChild(myTd);
  
  myTd = document.createElement("span");
  myTd.innerText = "Chapter";
  myTr.appendChild(myTd);
  
  myTd = document.createElement("span");
  myTd.style.width = "250px";
  myTd.innerText = "Job name";
  myTr.appendChild(myTd);
  
  myTd = document.createElement("span");
  myTd.innerText = "Energy";
  myTr.appendChild(myTd);
  
  myTd = document.createElement("span");
  myTd.innerText = "Stamina";
  myTr.appendChild(myTd);
  
  myTd = document.createElement("span");
  myTd.style.display = "none";
  myTd.innerText = "Params";
  myTd.style.width = "25px";
  myTr.appendChild(myTd);
  
  myTd = document.createElement("span");
  myTd.innerText = "Do Job";
  myTd.style.width = "75px";
  myTr.appendChild(myTd);
  
  
  // ***************** get cookie **********************
  sValue = getCookieRow(teller,true);
  var t=0;
  var bWriteTableRow = true;
  
  while ( sValue != "" )
  {
    setCookieArray(teller,sValue);
    nTmpStam = parseInt(myJobs[teller].stamina);
           
    if ( bWriteTableRow )
    {
      var myTr = document.createElement("li");
      myTr.setAttribute("class","column");
      myTr.setAttribute("draggable","true");
      myTr.id = "delJob" + t;
            
      if (myJobs[teller].energy != "0" && isChecked("CheckEnergy") == false )
      {
        myJobs[teller].visible = false;
	      myTr.style.display = "none";
      }
      else
      {
        myTr.style.display = "visible";
        myJobs[teller].visible = true;
      }
      if (myJobs[teller].stamina != "0" && isChecked("CheckStamina") == false )
      {
        myJobs[teller].visible = false;
	      myTr.style.display = "none";
      }
      else
      {
        myJobs[teller].visible = false;
        myTr.style.display = "visible";
      }

      myTable.appendChild(myTr);
      
      myLnk = document.createElement("a");
      myLnk.innerText="X";
      myLnk.href = "#";
      myTr.appendChild(myLnk);
      myLnk.addEventListener( 'click', function(e){
        deleteJob(e.target.closest('li'));
      }, true );
      t++;

      myTd = document.createElement("span");
      myTd.innerText = myJobs[teller].city;
      myTr.appendChild(myTd);

      myTd = document.createElement("span");
      myTd.innerText = myJobs[teller].chapter;
      myTr.appendChild(myTd);  

      myTd = document.createElement("span");
      myTd.style.width = "250px";
      myTd.innerText = myJobs[teller].name;
      myTr.appendChild(myTd);

      myTd = document.createElement("span");
      myTd.innerText = myJobs[teller].energy;
      myTr.appendChild(myTd);  
      
      myTd = document.createElement("span");
      myTd.innerText = myJobs[teller].stamina;
      myTr.appendChild(myTd);  

      myTd = document.createElement("span");
      myTd.style.display = "none";
      myTd.innerText = myJobs[teller].param;
      myTd.style.width = "25px";
      myTr.appendChild(myTd);  
      
      myTd = document.createElement("span");
      myTd.id = "doJobID";
        //***********************
        var myHref = document.createElement("a");
        myHref.id = "myJob" + teller;
        myHref.href = "#";
        myHref.innerText = "[ do Job ]";
        myHref.setAttribute('class', 'ajax_request');
        myHref.setAttribute('data-params', myJobs[teller].param);

        myTd.appendChild(myHref);
        //***********************

      myTd.style.width = "75px";
      myTr.appendChild(myTd);  
    }
    
    
    teller++;
    sValue = getCookieRow(teller);
  }
  
  var cols = document.querySelectorAll('#columns .column');
	[].forEach.call(cols, addDnDHandlers);  
}

var myVar;
var myJobs;
var nJobCost;
var bInit = true;

function setMyLabel( strMessage )
{
  var list = document.getElementById("mylvlLabel");
  list.innerHTML = strMessage;
}

function doJob(i)
{
  var JobBtn = document.getElementById("myJob" + i);
  JobBtn.click();
} 

// *************** jobs **************************
function deleteBtn()
{
	if ( myJobs != null )
  {
    for (i=0;i<myJobs.length;i++)
    {
      var myBtn = document.getElementById("myJob" + i );
      if ( myBtn != null )
      {
        myBtn.parentNode.removeChild(myBtn);
      }
    }
  }
}

function MyList(city, chapter, name, energy, stamina, mypars, mymastery) 
{
  this.city = city;
  this.chapter = chapter;
  this.name = name;
  this.energy = energy;
  this.stamina = stamina;
  this.param = mypars;
  this.mastery = mymastery;
  this.visible = true;
}

function MyJob(city, chapter, name, energy, stamina, mypars,mymastery) 
{
  this.city = city;
  this.chapter = chapter;
  this.name = name;
  this.energy = energy;
  this.stamina = stamina;
  this.param = mypars;
  this.mastery = mymastery;
  this.visible = true;
}

function deleteCookie()
{
  for (i=0;i<myJobs.length;i++)
  {
    document.cookie = "Row" + i + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;secure;path=/";
  }
}

function doJobs()
{   
  if ( checkProcess(PROCESS_Burn) )
  {
    if (bInit)
    {
      MyALInit();
      bInit = false;
    }

    var obj = document.getElementById("AutoLvlstop-script");
    teller = 0;
    nStatTeller = 0;

    if ( bStopJobs ) 
    {
      obj.innerText = "Run";
      setProcess(null);
      //clearInterval(myJobVar);
    }
    else
    {
      obj.innerText = "Stop";
      setProcess(PROCESS_Burn);
      //myJobVar = setInterval(function(){ doBurn(false); }, 300);
      doBurn(false);
    }
  }
}

function getParam( cvalue, cparam )
{
	var name = cparam + "=";
  
  var ca = cvalue.split('&');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function doAutoDeposit()
{
  if ( isChecked("CheckDeposit") && nCash > 10 )
  {
    console.log("cash " + nCash);
    var sController = "bank";
    var sAction = "deposit";
    var sAll = "1";
    
  	$.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,all: sAll, dvg:"404",vq: CONST_vq}, 
    function(response) 
    {
      	console.log(response);
      	//var objConsole = response[CONST_ConsoleObject];
      	nCash = 0;
      	//setConsole(objConsole,true);
    });
  }
}

var nStatTeller;

function checkJobCount()
{
  for ( i=0;i<myJobs.length;i++)
  {
    if ( document.getElementById("delJob" + i).style.display == "" ) // job visible return 
    {
      return true;
    }
  }
  return false;
}

function setProcessStatus(bvalue)
{
  var elem = document.getElementById("ProcessStatus");
  elem.innerText = bvalue;
}

function stopProcess(msg,processid,bAuto)
{
  nStatTeller = 0;
  sValue = "";

  if ( bAuto )
  {
    if ( bDoMastery )
    {
      setLabel(msg,bAuto);
      //doMastery();
      elem = document.getElementById("MasteryScript");
      elem.click();
    }
    else
    {
      setLabel(msg);
      elem = document.getElementById("stop-script-fr");
      elem.click();
    }
  }
  else
  {
    setLabel(msg,bAuto);
    elem = document.getElementById("AutoLvlstop-script");
    elem.click();
  }

}

function isLevelUp(obj)
{
  var nLevel;
  var nPreviousLevel;
  
  nLevel = parseInt(obj[CONST_Level]);


  nPreviousLevel = document.getElementById("spanLevel").innerText;
  nPreviousLevel = nPreviousLevel.replace("Level ","")
  nPreviousLevel = nPreviousLevel.replace(",","");
  nPreviousLevel = parseInt(nPreviousLevel);
  
  if ( nPreviousLevel != nLevel ) 
  {
    //console.log("levelup");
    return true;
  }
  
  return false;
}

function setJobStatus()
{
  var sStat = "";
  
  if ( nStatTeller < 10 )
  {
    nStatTeller++;
    for (t=0;t<nStatTeller;t++)
      sStat += ".";
  }
  else
  {
    nStatTeller = 0;
  }
	return sStat;
}

function doBurn(bAutoBurn)
{  
  var objConsole;
  var objJob;
  var sParamList;
  
  if ( !bStopJobs )
  {
    var sValue = getCookieRow(teller,true);
    setCookieArray(teller,sValue);

    var sParam = myJobs[teller].param;  
    
    var nIndexOf = sParam.indexOf("jobevent");
    if ( nIndexOf != -1 )
    {
      var sId = getParam(sParam,"id");
      var sController = getParam(sParam,"controller");
      var sAction = getParam(sParam,"action");
      sParamList = {controller: sController,action: sAction,id: sId, dvg:"404",vq: CONST_vq};
      console.log(sParamList);
    }
    else
    {
      var sController = "job";
  		var sAction = "tox";
    	var sId = getParam(sParam,"id");
    	var sTab = getParam(sParam,"tab");
      sParamList = {controller: sController,action: sAction,id: sId, tab: sTab, dvg:"404",vq: CONST_vq};
    }
    
    // check for available jobs
    if (!checkJobCount())
    {
      	var nProcessID = 0; // DVE need 3 constants
      	sMsg = "<span class='bad'>No jobs available</span>";
      	stopProcess(sMsg,nProcessID,bAutoBurn);
        setProcessStatus(false);
        return;
    }
    
    
    if ( document.getElementById("delJob" + teller).style.display == "" )
    {  
      	console.log(bAutoBurn + ":"+ bStopJobs + ":" + teller + "-> " + myJobs[teller].name);  
        $.post('https://mafiareloaded.com/game/req.php', sParamList, 
          function(response) 
          {
            objConsole = response[CONST_ConsoleObject];
            objJob = response.cb.job;            
          	
            if ( isLevelUp(objConsole) )
            {               
              doAutoDeposit();         
              setConsole(objConsole,true);
              setProcessStatus(true);
              
              if ( !bAutoBurn )
              {
              	setMyLabel("<span class='good'>You reached level " + objConsole[CONST_Level].toLocaleString('en-US', {maximumFractionDigits:2}) + "</span>");
                bStopJobs = true;
                doJobs();
                return;
              }
              if ( bAutoBurn ) 
              {
                bStopJobs = true;
                nRetryTeller = 0;
      					teller = 0;
      					nStatTeller = 0;      
                console.log("return to process");
              	return;
              }
              return;
            }
          	else
            {
              setProcessStatus(false);
            }
          	
           
          	if ( !bStopJobs )
            {
              strMsg = objJob.msg;

              nIndexOf = strMsg.indexOf('action=refill');
              //console.log( teller + "->" + myJobs.length + " job failed? " + nIndexOf);
              if ( nIndexOf > 0 )
              {        
                if ( !checkEnoughStamEnergy(teller,bAutoBurn) )
                  return false;

                // next job if available
                teller++;
                nStatTeller = 0;
              }
              else
              {
                sStat = setJobStatus();
                setLabel(myJobs[teller].name + sStat,bAutoBurn);
              }
            }
            setConsole( objConsole, true );
          	setTimeout(function(){doBurn(bAutoBurn);},250);
          	return;
          })
      		.fail(function(response)
          {
          	console.log("fail");
          	//console.log(response);
          	setLabel("An unexpected error occured, please try again",bAutoBurn);
          	bStopJobs = true;
          	if ( bDoMastery )
              doMastery();
          	else
            	doJobs();
          
            return;
        	});            
    }
    else
    {
			// next job in list      
      teller++;
      setTimeout(function(){doBurn(bAutoBurn);},250);
      return;
    }
  }
  return;
}


function checkEnoughStamEnergy(index,bAuto)
{  
  if ( index == myJobs.length - 1 && !bStopJobs )
  {
    //nTeller = 0;
    nStatTeller = 0;
    console.log("not enough stamina");
    if ( bAuto )
    {      
      setLabel("<span class='bad'>Not enough Energy/Stamina to level up</span>",bAuto);
      bAutoBurn = false;

      if ( bDoMastery )
      {
        doMastery();
        //elem = document.getElementById("MasteryScript");
        //elem.click();
      }
      else
      {
        elem = document.getElementById("stop-script-fr");
        elem.click();
      }
    }
    else
    {
      bStopJobs = true;
			doJobs();
    }          
    return false;
  }
  return true;
}

// ************************ end jobs **************************

function doTab(evt, tabName) {
  // Declare all variables
  //alert(tabName);
  var i, tabcontent, tablinks;

  // Get all elements with class="tabcontent" and hide them
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "none";
  }

  // Get all elements with class="tablinks" and remove the class "selected"
  tablinks = document.getElementsByClassName("tablinks");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].className = tablinks[i].className.replace(" selected", "");
  }

  // Show the current tab, and add an "active" class to the button that opened the tab
  document.getElementById(tabName).style.display = "block";
  //console.log(evt);
  evt.currentTarget.className += " selected";
  setCookie("Tab", tabName, 365);
} 

function getJobs(sCity,sChapter,cvalue)
{
  var sJobName;
  var sEnergy;
  var sStamina;
  var sParam;
  myJobList = new Array();
  
  //alert(cvalue);
	sChapter = sChapter.substring( 7, sChapter.length );

  var ca = cvalue.split('<div class="jrow">');
  for(var i = 1; i <ca.length; i++) 
  {
    //console.log(ca[i]);
    var c = ca[i];
    nIndexOf = c.indexOf('<div class="feed_row">');
    if ( nIndexOf != -1 ) 
    {
      c = c.substring(nIndexOf+22, c.length);
    }
    nIndexOf = c.indexOf('<div style="width:330px;">');
    if ( nIndexOf != -1 ) 
    {
      c = c.substring(nIndexOf+26, c.length);
    }
    nIndexOf = c.indexOf('<br>');
    if ( nIndexOf != -1 ) 
    {
      sJobName = c.substring(0,nIndexOf);
      c = c.substring(nIndexOf, c.length);
    }
    //console.log(sJobName);
    nIndexOf = c.indexOf('<span class="energy">');
    sEnergy = "0";
    if ( nIndexOf != -1 )
    {
      c = c.substring(nIndexOf+21, c.length)
      nEndOf = c.indexOf('</span>');
      sEnergy = c.substring(0,nEndOf);
      sEnergy = sEnergy.replace(",","");
      //console.log("energy: " + sEnergy);
      c = c.substring(nEndOf + 7, c.length );
    }
    nIndexOf = c.indexOf('<span class="stamina">');
    sStamina = "0";
    if ( nIndexOf != -1 )
    {
      c = c.substring(nIndexOf+22, c.length)
      nEndOf = c.indexOf('</span>');
      sStamina = c.substring(0,nEndOf);
      sStamina = sStamina.replace(",","");
      //console.log("stamina: " + sStamina);
      c = c.substring(nEndOf + 7, c.length );
    }
    nIndexOf = c.indexOf('data-params="');
    if ( nIndexOf != -1 )
    {
      c = c.substring(nIndexOf+13,c.length);
      nEndOf = c.indexOf('">');
      sParam = c.substring(0,nEndOf);
      //console.log("params: " + sParam);
    }
    myJobList[i-1] = new MyList(sCity,sChapter,sJobName,sEnergy,sStamina,sParam,100);
    
    //Console.log(myJobList);
    sEnergy = "";
    sStamina = "";
    sParam = "";
    sJobName = "";
  }
}

function addJobEvent()
{  
  var banner = document.getElementsByClassName("banner shadow");
  for ( i=0;i<banner.length;i++)
  {
    var sEventName = banner[i].getAttribute("aria-label");
    var elem = banner[i].getElementsByClassName("ajax_request");
  	var sParam;
  
  	for ( t=0; t<elem.length; t++)
    {
      sParam = elem[t].getAttribute("data-params");
      var nIndexOf = sParam.indexOf("controller=jobevent");
      if ( nIndexOf != -1 )
      {
        return sEventName;
      }
    }
  }  
	return ""
}

function initCombo(bMastery)
{
  CITY[0] = "Downtown";
  CHAPTER[0] = 10;

  CITY[1] = "Amsterdam";
  CHAPTER[1] = 10;

  CITY[2] = "Las Vegas";
  CHAPTER[2] = 10;

  CITY[3] = "Berlin";
  CHAPTER[3] = 10;

  CITY[4] = "Cuba";
  CHAPTER[4] = 8;
  
  var nCityLength;
  
  if ( bMastery )
  {
    CITY[5] = "JOBEVENT";
  	CHAPTER[5] = 0;
    nCityLength = 6;
  }
  else
  {
    var sJobEventName = addJobEvent();    
    if ( sJobEventName != "" )
    {
      CITY[5] = sJobEventName;
  		CHAPTER[5] = 0;
    	nCityLength = 6;
    }
    else
    {
    	nCityLength = 5;
    }
  }
  
  if ( bMastery )
    elem = document.getElementById("curCITYMastery");
  else
  	elem = document.getElementById("curCITY");
  
  for (i = nCityLength - 1; i >= 0; i--) 
  {
		elem.remove(i);
	}
  
  for (i=0;i<nCityLength;i++)
  {
    var sp = document.createElement("option");
    sp.innerText = CITY[i];
    sp.value = i;
    elem.appendChild(sp);
  }  
    
  initChapters(0, bMastery);
}

function initChapters(nMultiply,bMastery)
{
  if ( bMastery )
    var nCity = parseInt(document.getElementById("curCITYMastery").value);
 	else
  	var nCity = parseInt(document.getElementById("curCITY").value);
  
  if ( bMastery )
    var ChapterList = document.getElementById("curCHAPTERMastery");
  else
  	var ChapterList = document.getElementById("curCHAPTER");
  
	for (i = ChapterList.length - 1; i >= 0; i--) 
  {
		ChapterList.remove(i);
	}
  
  if ( bMastery )
    elem = document.getElementById("curCHAPTERMastery");
  else
  	elem = document.getElementById("curCHAPTER");
  
  for (i=0;i<CHAPTER[nCity];i++)
  {
    var sp = document.createElement("option");
    sp.innerText = "Chapter " + (i+1);
    sp.value = (nMultiply*10+(i+1));
    elem.appendChild(sp);
  }  
  if ( !bMastery ) 
  {
    //alert(document.getElementById("curCHAPTER").value);
    initJobs(document.getElementById("curCHAPTER").value);
  }
}

function initJobs(nTabs)
{
  elem = document.getElementById("curCITY");
  var nCity = parseInt(elem.value)+1;
  var strCity = elem[elem.selectedIndex].text;
  
  elem = document.getElementById("curCHAPTER");
  if ( elem.length )
  {
  	var nTab = elem.value;  
  	var strChapter = elem[elem.selectedIndex].text;
  }
  else
  {
    var nTab = "";
    strChapter = "";
  }
  
  var JobList = document.getElementById("curJobs");
	for (i = JobList.length - 1; i >= 0; i--) 
  {
		JobList.remove(i);
	}
  
  if ( !bContinue )
  {
    if ( strChapter != "" )
    {
      var sController = "job";
      var sAction = "yvr";
      var objConsole;

      $.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,loc: nCity, tab: nTab, dvg:"404",vq: CONST_vq}, function(response) 
      {
        if ( bDebug ) console.log(response);
        strMessage = response.message;
        getJobs(strCity, strChapter, strMessage);

        // fill combo jobs      
        for ( i=0;i<myJobList.length;i++ )
        {
          var sEnergy = myJobList[i].energy;
          var sName = myJobList[i].name;
          var sStamina = myJobList[i].stamina;

          var sp = document.createElement("option");
          if ( sEnergy != "0" && sEnergy != "" )
            sp.innerText = sName + " - Energy:" + sEnergy;
          else
            sp.innerText = sName + " - Stamina:" + sStamina;

            sp.value = i;
            JobList.appendChild(sp);
        }
      }
      );
    }
    else
    {
      var sController = "jobevent";
      var sAction = "yvr";
      var objConsole;

      $.post('https://mafiareloaded.com/game/req.php', {controller: sController,action: sAction,dvg:"404",vq: CONST_vq}, function(response) 
      {
        console.log(response);
        strMessage = response.message;
        getJobsMastery(strCity, strChapter, strMessage, true);

        // fill combo jobs      
        for ( i=0;i<myJobList.length;i++ )
        {
          var sEnergy = myJobList[i].energy;
          var sName = myJobList[i].name;
          var sStamina = myJobList[i].stamina;

          var sp = document.createElement("option");
          if ( sEnergy != "0" && sEnergy != "" )
            sp.innerText = sName + " - Energy:" + sEnergy;
          else
            sp.innerText = sName + " - Stamina:" + sStamina;

            sp.value = i;
            JobList.appendChild(sp);
        }
      }
      );
    }
  }
}

function initObjects() 
{
  var sFight = "home";
  var sAction = "view";
  var objConsole;

  	
  initCombo(false);
  initCombo(true);
  
  $.post('https://mafiareloaded.com/game/req.php', {controller: sFight,action: sAction, dvg:"404",vq: CONST_vq}, function(response) 
  {
    i = 0;
    for (x in response) 
    {
      if ( i == 1 )
        CONST_ConsoleObject = x;
      //console.log(x);
      i++;
    }
    
    objConsole = response[CONST_ConsoleObject];
    //if ( bDebug ) console.log(response);
    //console.log(objConsole); 
    var i = 0;
    
    for (x in objConsole) 
    {
      //console.log(x + "->" + objConsole[x]);
      switch (i) {
        case 0: // skill tokens
          CONST_SkillTokens = x;
          break;
        case 1: // gold tokens
          break;
        case 2: // total health
          CONST_TotalHealth = x;
          break;
        case 3: // health
          CONST_Health = x;
          CONST_AttackerHealth = x;
          break;
        case 4:
          break;
        case 5: // total energy
          CONST_TotalEnergy = x;
          break;
        case 6:
          break;
        case 7: // total stamina
          CONST_TotalStamina = x;
          break;
        case 8:
          break;
        case 9: // cash
          CONST_Cash = x;
          break;
        case 10: // level
          CONST_Level = x;
          break;
        case 11: // experience
          CONST_Experience = x;
          break;
        case 12: // attack
          break;
        case 13: // defense
          break;
        case 14:
          break;
				case 15: // energy
          CONST_Energy = x;
          break;
        case 16: // stamina
          CONST_Stamina = x;
          break;
      }
      i++;
    }
    //if ( bDebug ) console.log("set console");
    //if ( bDebug ) console.log(objConsole);
    setConsole( objConsole, true );
  })
  .fail(function(response)
  {
    // retry x nr of times
    if ( nRetryTeller < nRetry )
    {
      setTimeout(initObjects,100);
      console.log("Retry init objects: " + nRetryTeller);
      nRetryTeller++;
    }
    else
    {
      setLabel("An error occured, please refresh window");
    }
  });
}
// ************************* MASTERY ********************************
function getJobsMastery(sCity,sChapter,cvalue,bburn)
{
  var sJobName;
  var sEnergy;
  var sStamina;
  var sParam;
  var sMastery;
  
  
  sChapter = sChapter.substring( 7, sChapter.length );
  
  if ( bburn )
  {
    myJobList = new Array();
    bJobEvent = true;
    sChapter = "-";
  }
  else
  {
    //console.log("clear list");
  	myJobMasteryList = new Array();
  }
  
  if ( bJobEvent )
  	var ca = cvalue.split('<div class="jrow2">');
 	else
    var ca = cvalue.split('<div class="jrow">');
  
  for(var i = 1; i <ca.length; i++) 
  {
    //console.log(ca[i]);
    var c = ca[i];
    nIndexOf = c.indexOf('<div class="feed_row">');
    if ( nIndexOf != -1 ) 
    {
      c = c.substring(nIndexOf+22, c.length);
    }
    nIndexOf = c.indexOf('<div style="width:330px;">');
    if ( nIndexOf != -1 ) 
    {
      c = c.substring(nIndexOf+26, c.length);
    }
    nIndexOf = c.indexOf('<br>');
    if ( nIndexOf != -1 ) 
    {
      sJobName = c.substring(0,nIndexOf);
      c = c.substring(nIndexOf, c.length);
    }
    // mastery
    nIndexOf = c.indexOf('<span>');
    if ( nIndexOf != -1 ) 
    {
      c = c.substring(nIndexOf+6, c.length)
      nEndOf = c.indexOf('% Complete');
      sMastery = c.substring(0,nEndOf);
      c = c.substring(nEndOf + 10, c.length);
    }
   	// energy
    nIndexOf = c.indexOf('<span class="energy">');
    sEnergy = "0";
    if ( nIndexOf != -1 )
    {
      c = c.substring(nIndexOf+21, c.length)
      nEndOf = c.indexOf('</span>');
      sEnergy = c.substring(0,nEndOf);
      sEnergy = sEnergy.replace(",","");
      //console.log("energy: " + sEnergy);
      c = c.substring(nEndOf + 7, c.length );
    }
    nIndexOf = c.indexOf('<span class="stamina">');
    sStamina = "0";
    if ( nIndexOf != -1 )
    {
      c = c.substring(nIndexOf+22, c.length)
      nEndOf = c.indexOf('</span>');
      sStamina = c.substring(0,nEndOf);
      sStamina = sStamina.replace(",","");
      //console.log("stamina: " + sStamina);
      c = c.substring(nEndOf + 7, c.length );
    }
    nIndexOf = c.indexOf('data-params="');
    if ( nIndexOf != -1 )
    {
      c = c.substring(nIndexOf+13,c.length);
      nEndOf = c.indexOf('">');
      sParam = c.substring(0,nEndOf);
      //console.log("params: " + sParam);
    }
    if ( bburn )
    {
      myJobList[i-1] = new MyList(sCity,sChapter,sJobName,sEnergy,sStamina,sParam,sMastery);
    }
    else
    {
			//console.log("add to list " + sJobName );      
    	myJobMasteryList[i-1] = new MyList(sCity,sChapter,sJobName,sEnergy,sStamina,sParam,sMastery);
    }
   
    sEnergy = "";
    sStamina = "";
    sParam = "";
    sJobName = "";
  }
  //console.log(myJobMasteryList);
}

function initMasteryJobs(nTabs)
{
  // if !jobevent then use city & chapter
  elem = document.getElementById("curCITYMastery");
  var nCity = parseInt(elem.value)+1;
  var strCity = elem[elem.selectedIndex].text;

  //console.log(elem);
  bJobEvent = ( strCity == "JOBEVENT" );
  
  if ( !bJobEvent )
  {
  	elem = document.getElementById("curCHAPTERMastery");
  	var nTab = parseInt(elem.value);
  	var strChapter = elem[elem.selectedIndex].text;
  }
  else
  {
    var strChapter = "";
  }
  
  if ( bDoMastery )
  {
    var sAction = "yvr";
    if ( bJobEvent )
    {
    	var sController = "jobevent";
   		var sParameter = {controller: sController,action: sAction,dvg:"404",vq: CONST_vq}
    }
    else
    {
      var sController = "job";
   		var sParameter = {controller: sController,action: sAction,loc: nCity, tab: nTab, dvg:"404",vq: CONST_vq}

    }
    var objConsole;
    
    $.post('https://mafiareloaded.com/game/req.php', sParameter, function(response) 
    {
      if ( bDebug ) console.log(response);
      strMessage = response.message;
      
      getJobsMastery(strCity, strChapter, strMessage,false);
    });
  }
}


function doMastery()
{
  
  if ( checkProcess(PROCESS_Mastery) )
  {
    var elem = document.getElementById("MasteryScript");
    nStatTeller = 0;
    bDoMastery = !bDoMastery;
    nMasteryTeller = 0;

    if ( bDoMastery ) 
    { 	
      	// give time to init jobs
        initMasteryJobs(4); // get job list 	
        setProcess(PROCESS_Mastery);
        elem.innerText = "Stop";
    }
    else
    {
      console.log("stop mastery");
      bAutoBurn = false;
      bStopJobs = true;
      setProcess(null);
      elem.innerText = "Run";
      if ( myAutoBurn > 0 ) clearInterval(myAutoBurn);    
      if ( IntervalMastery > 0 ) clearInterval(IntervalMastery);
    }

    if ( bDoMastery )
    {
      setTimeout(doMasteryJob,500);
    }
  }
}

function isChapterMastered()
{  
  for (i=0;i<myJobMasteryList.length;i++)
  {
    //console.log(myJobMasteryList[i].name + "->" + myJobMasteryList[i].mastery);
    nMastery = parseInt(myJobMasteryList[i].mastery);
    if ( nMastery < 100 )
    {
      return false;
    }
  }
  return true;
}

function doAutoCollect(sTmp)
{
  if ( bDoMastery ) 
  {
    
    var sAction = "collect";
    if ( bJobEvent )
    {
  		var sController = "jobevent";
      sParam = {controller: sController,action: sAction,dvg:"404",vq: CONST_vq};
    }
    else
    {
      var sController = "job";      
      var elem = document.getElementById("curCITYMastery");
  		var nloc = parseInt(elem.value)+1;
      
      var elem = document.getElementById("curCHAPTERMastery");
  		var sTab = elem.value;
      sParam = {controller: sController,action: sAction,loc: nloc, tab: sTab, dvg:"404",vq: CONST_vq};
    }

    //if ( IntervalMastery > 0 ) clearInterval(IntervalMastery);
  	$.post('https://mafiareloaded.com/game/req.php', sParam , function(response) 
    {
        objConsole = response[CONST_ConsoleObject];
      	console.log("autocollect");
      	console.log(response);
      	if ( response.popups.length > 0 ) 
        {
          console.log("autocollect success");
          nMasteryTeller = 0;
          bDoMastery = false;
          doMastery();
          return true;
        }
    })
    .fail(function(response)
    {
      console.log(response);
      console.log("collect reward failed");
    });
  }
  return false;
}

function doAddSkill(obj)
{
  if ( parseInt(obj[CONST_SkillTokens]) > 50 )
  {
    var sController = "profile";
    var sAction = "addenergy";
    var sAmt = "50";

    sParam = {controller: sController,action: sAction,amt: sAmt, dvg:"404",vq: CONST_vq};
    $.post('https://mafiareloaded.com/game/req.php', sParam , function(response) 
    {
        objConsole = response[CONST_ConsoleObject];
      	console.log("add skill");
      	console.log(response);
    });
  }
}

function doMasteryJob()
{
  //console.log("mastery job" + bDoMastery);
  if ( bDoMastery ) 
  {
    console.log("length" );
    console.log(myJobMasteryList.length );
    if ( nMasteryTeller < myJobMasteryList.length )
    {
      var sParam = myJobMasteryList[nMasteryTeller].param;
      var sController = getParam( sParam, "controller");
      var sAction = getParam( sParam, "action" );
      var sId = getParam( sParam, "id" );
      var sTab = getParam( sParam, "tab" );
      var bStaminaJob = false;
      var sStamina = myJobMasteryList[nMasteryTeller].stamina;
      var sStat;
      
      var nNr = parseInt(sStamina);
      bStaminaJob = ( nNr > 0);     	
      
      if ( isChapterMastered() )
      {
        if ( isChecked("CheckAutoCollect") )
        {
          console.log("test collect reward " + nMasteryTeller + "->" + myJobMasteryList.length);
          console.log(sParam);
          
          if ( doAutoCollect(sTab) )
          {            
          	nMasteryTeller = 0;
          	console.log("chapter mastered");
            bDoMastery = false;
          }
          else
          {
            // stop process
      			setLabel("All jobs mastered",false);
          }
        }
        else
        {
          bStopJobs = true;
        	setLabel("Collect chapter",false);          
        }
        doMastery();
        return;
      }
      // do job when not fully mastered except the staminajob
      if ( bDebug ) console.log(myJobMasteryList[nMasteryTeller]);
      if ( parseInt(myJobMasteryList[nMasteryTeller].mastery) == 100 && ( !bStaminaJob && bJobEvent ))
      //if ( parseInt(myJobMasteryList[nMasteryTeller].mastery) == 100 )
      {
        if ( bDebug ) console.log("skip job " + nMasteryTeller );
        nMasteryTeller++;
        doMasteryJob();
        return;
      }
      //alert(bJobEvent);
      if ( bJobEvent )
        var sParameters = {controller: sController,action: sAction,id: sId,dvg:"404",vq: CONST_vq};
     	else
        var sParameters = {controller: sController,action: sAction,id: sId,tab: sTab, dvg:"404",vq: CONST_vq};
      

      $.post('https://mafiareloaded.com/game/req.php', sParameters , function(response) 
      {
        objConsole = response[CONST_ConsoleObject];
        objJob = response.cb.job;
        
        if ( bDebug ) console.log(myJobMasteryList[nMasteryTeller].name + "-> " + objJob.mastery);
        if ( bDebug ) console.log(response);
        
        nLevel = parseInt(objConsole[CONST_Level]);
        nTmpLevel = document.getElementById("spanLevel").innerText;
        nTmpLevel = nTmpLevel.replace("Level ","")
        nTmpLevel = nTmpLevel.replace(",","");
        nTmpLevel = parseInt(nTmpLevel);
     
        doAddSkill(objConsole);
        
        if ( nTmpLevel != nLevel ) // level up start all over again :)
        {
          nMasteryTeller = 0;
          bDoMastery = false;
          doMastery();
          return;
        }
        
        // check if chapter is fully mastered
        if ( objJob.tab_mastery == "100" )
        {
          doAutoCollect();
          return;
        }
        
        if ( objJob.mastery == undefined )
        {
          // job failed not enough energy/stamina? -> next job
          nMasteryTeller++;
        }
        else
        {
          myJobMasteryList[nMasteryTeller].mastery = objJob.mastery;
          strMastery = '<div class="bar job_progress"><span id="job-mastery-1" style="width:' + objJob.mastery + '%;"><span>';
          strMastery += objJob.mastery + '% Complete</span></span></div>';
          
          
          if ( nStatTeller < 10 && bStaminaJob )
          {
            nStatTeller++;
            sStat = "";
            for (t=0;t<nStatTeller;t++)
              sStat += ".";
          }
          else
          {
            sStat = "";
            nStatTeller = 0;
          }
          
          setLabel(myJobMasteryList[nMasteryTeller].name + sStat + "<br><br>" + strMastery, false );
          if ( objJob.mastery == "100" && ( !bStaminaJob && bJobEvent ))
          //if ( objJob.mastery == "100" )
          {
            // next job
            nMasteryTeller++;
            nStatTeller = 0;
          }
          
        }
        setConsole( objConsole, true );
        doMasteryJob();
        return;
      });
    }
    else
    {
      // DVE
      if ( isChecked("CheckAutoBurnMastery"))
      {
        setLabel("Processing jobs",true);
        teller = 0;
        nStatTeller = 0;
        nMasteryTeller = 0;
        setProcessStatus(false);
        bStopJobs = false;
        setTimeout(function(){doBurn(true);},200);
        myAutoBurn = setInterval(checkStatus, 250);
        return;
      }
      else
      {

        console.log("no more jobs");
        setLabel("Mastery: Not enough energy/stamina",false);
      	doMastery();
      }
    }  
  }
  return;
}

function setLabelMastery( strMessage )
{
  var list = document.getElementById("myLabelMastery");
  list.innerHTML = strMessage;
  //console.log(strMessage);
}

// ************************* END MASTERY ****************************

var observer = new MutationObserver(updateConsole);

function initConsole()
{
  CONST_HealthSpanId = "";
  CONST_EnergySpanId = "";
  CONST_StaminaSpanId = "";
  
  observer.observe(document.getElementById("user-cash"), {
    characterData: true,
    childList: true
  });

  var elem = document.getElementsByClassName("health");
  console.log(elem);
  if ( elem.length )
  {
    var span = elem[0].getElementsByTagName("span");
    if ( span.length )
    {
      CONST_HealthSpanId = span[0].id;      
    }
  }
  var elem = document.getElementsByClassName("energy");
  console.log(elem);
  if ( elem.length )
  {
    var span = elem[0].getElementsByTagName("span");
    if ( span.length )
    {
      CONST_EnergySpanId = span[0].id;      
    }
  }
  var elem = document.getElementsByClassName("stamina");
  console.log(elem);
  if ( elem.length )
  {
    var span = elem[0].getElementsByTagName("span");
    if ( span.length )
    {
      CONST_StaminaSpanId = span[0].id;      
    }
  }
  
observer.observe(document.getElementById(CONST_StaminaSpanId), {
    characterData: true,
    childList: true
  });


observer.observe(document.getElementById(CONST_EnergySpanId), {
    characterData: true,
    childList: true
  });

observer.observe(document.getElementById(CONST_HealthSpanId), {
    characterData: true,
    childList: true
  });

}

function waitawhile()
{
  	//CreateMyDiv();
   	initConsole();
  
  	nRetry = getCookie("NrRetry");
  	nParsed = parseInt(nRetry);
  	if ( nRetry == "" || nParsed == NaN )
      nRetry = 3;
  	elem = document.getElementById("NrRetry");
  	elem.value = nRetry;
  
  	initObjects();

  	nIntervalConsole = getCookie("IntervalConsole");
  	if ( nIntervalConsole == "" || parseInt(nIntervalConsole) == NaN )
      nIntervalConsole = 15000;
  	elem = document.getElementById("ConsoleInterval");
  	elem.value = nIntervalConsole;
  
  	sTab = getCookie("Tab");
  	if ( sTab == "" ) sTab = "main";
   	document.getElementById("tab"+sTab).click();
  
  	MyALInit();
  	initJob(false);
}

$("document").ready(function() {
  	
  //setTimeout(waitawhile,200);
  	
});
// @version 0.0.1.20210329135226
// ==/UserScript==