var hide_alerts = document.getElementById("hide_alerts");
if (hide_alerts !== null) {
var myApp = new Framework7({ fastClicks:true, cache:false, swipeBackPage:false, notificationHold:7000, animatePages:false, pushState: true, onAjaxStart: function(xhr) { myApp.showIndicator(); }, onAjaxComplete: function(xhr) { myApp.hideIndicator(); } });
} else {
var myApp = new Framework7({ fastClicks:true, cache:false, swipeBackPage:false, animatePages:false, pushState: true, onAjaxStart: function(xhr) { myApp.showIndicator(); }, onAjaxComplete: function(xhr) { myApp.hideIndicator(); } });
}
var bgm;
var $$=Dom7;
var leftView=myApp.addView('.view-left',{dynamicNavbar:true});
var mainView=myApp.addView('.view-main',{dynamicNavbar:true});
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-70477-48', 'auto');
ga('send', 'pageview');
//$$(document).on('page:beforeanimation', function (e) {
//playSound("menu2");
//});
$$(document).on('onPageBeforeInit', function (e) {
//console.log("page load");
});
$$(document).on('pageInit', function (e) {
var page = e.detail.page;
$('#homebtn').attr("disabled", false);
$('#sidehome').attr("disabled", false);
if (typeof actionfix !== "undefined") {
clearInterval(actionfix);
actionfix = undefined;
}
if (window.tcAutoBattle && window.tcAutoBattle.timer) {
clearTimeout(window.tcAutoBattle.timer);
window.tcAutoBattle.timer = null;
if (page.name != 'battle' && page.name != 'battle2') {
window.tcAutoBattle.enabled = false;
window.tcAutoBattle.enemyGuid = '';
window.tcAutoBattle.state = null;
}
}
//console.log(page.name);
if (page.name == 'register') {
$.getScript("js/register.js");
$.getScript("https://www.google.com/recaptcha/api.js");
} else if (page.name == 'login') {
$.getScript("js/login.js");
} else if (page.name == 'forgot') {
$.getScript("js/forgot.js");
} else if (page.name == 'wiki') {
$.getScript("js/wiki.js");
} else if (page.name == 'profile') {
$.getScript("js/profile.js");
$.getScript("js/clipboard.min.js");
new ClipboardJS('.sharelink');
} else if (page.name == 'free_stuff') {
$.getScript("js/free_stuff.js");
} else if (page.name == 'createcharacter') {
$.getScript("js/createcharacter.js");
} else if (page.name == 'changelocation') {
$.getScript("js/changelocation.js");
} else if (page.name == 'battle' || page.name == 'battle2') {
var isBattle2 = page.name == 'battle2';
var battleEndpoint = page.name == 'battle2' ? 'battle2.php' : 'battle.php';
var patrolEndpoint = page.name == 'battle2' ? 'patrol2.php' : 'patrol.php';
$('#homebtn').attr("disabled", true);
$('#sidehome').attr("disabled", true);
if ($$(page.container).find('#confetti').data("enabled") == "true") {
$('.page-on-left').remove();
drawConfettiRibbon();
//drawFireworks();
}
var lock = 0;
window.tcAutoBattle = window.tcAutoBattle || {
enabled: false,
timer: null,
enemyGuid: '',
stopHpPercent: 25,
state: null
};
var autoBattle = window.tcAutoBattle;
var autoBattleIntervalMs = 125;
function getBattleContainer() {
if (mainView && mainView.activePage && mainView.activePage.container) {
var activePageContainer = $$(mainView.activePage.container);
if (activePageContainer.hasClass('battlepage')) {
return activePageContainer;
}
var activeBattlePage = activePageContainer.find('.battlepage');
if (activeBattlePage.length) {
return activeBattlePage;
}
}
var pageContainer = $$(page.container);
if (pageContainer.hasClass('battlepage')) {
return pageContainer;
}
return pageContainer.find('.battlepage');
}
function clearAutoBattleTimer() {
if (autoBattle.timer) {
clearTimeout(autoBattle.timer);
autoBattle.timer = null;
}
}
function stopAutoBattle() {
autoBattle.enabled = false;
autoBattle.enemyGuid = '';
autoBattle.state = null;
clearAutoBattleTimer();
}
function getBattlePageState() {
var battlePage = getBattleContainer();
return {
playerHp: parseInt(battlePage.attr('data-player-hp'), 10) || 0,
playerMaxHp: parseInt(battlePage.attr('data-player-max-hp'), 10) || 0,
enemyHp: parseInt(battlePage.attr('data-enemy-hp'), 10) || 0,
enemyGuid: battlePage.attr('data-enemy-guid') || ''
};
}
function parseBattleStateFromHtml(html) {
var state = {
playerHp: 0,
playerMaxHp: 0,
enemyHp: 0,
enemyGuid: ''
};
if (!html) {
return state;
}
var temp = document.createElement('div');
temp.innerHTML = html;
var battlePage = temp.querySelector('.battlepage');
if (!battlePage) {
return state;
}
state.playerHp = parseInt(battlePage.getAttribute('data-player-hp'), 10) || 0;
state.playerMaxHp = parseInt(battlePage.getAttribute('data-player-max-hp'), 10) || 0;
state.enemyHp = parseInt(battlePage.getAttribute('data-enemy-hp'), 10) || 0;
state.enemyGuid = battlePage.getAttribute('data-enemy-guid') || '';
return state;
}
function cleanBattleText(text) {
return (text || '').replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '');
}
function collectBattle2LogLines(root) {
var lines = [];
if (!root) {
return lines;
}
var selectors = ['.playerInfo', '.enemyInfo', '#postBattleInfo', '#console'];
for (var i = 0; i < selectors.length; i++) {
var nodes = root.querySelectorAll(selectors[i]);
for (var n = 0; n < nodes.length; n++) {
var text = cleanBattleText(nodes[n].textContent);
if (text && text.length > 2) {
lines.push(text);
}
}
}
return lines.slice(0, 4);
}
function renderBattle2Log(lines) {
if (!isBattle2) {
return;
}
window.tcBattle2Log = window.tcBattle2Log || [];
for (var i = lines.length - 1; i >= 0; i--) {
if (lines[i] && window.tcBattle2Log[0] !== lines[i]) {
window.tcBattle2Log.unshift(lines[i]);
}
}
window.tcBattle2Log = window.tcBattle2Log.slice(0, 5);
var log = getBattleContainer().find('.tc-battle-log');
if (!log.length) {
return;
}
var html = '';
for (var x = 0; x < window.tcBattle2Log.length; x++) {
html += '
' + $('
').text(window.tcBattle2Log[x]).html() + '
';
}
log.html(html);
}
function animateBattle2Bars(oldWidths) {
if (!isBattle2 || !oldWidths || !oldWidths.length) {
return;
}
var bars = getBattleContainer().find('.progress-bar');
bars.each(function(index) {
if (typeof oldWidths[index] === 'undefined') {
return;
}
var bar = $(this);
var targetWidth = bar[0].style.width;
bar.css('width', oldWidths[index]);
bar[0].offsetHeight;
setTimeout(function() {
bar.css('width', targetWidth);
}, 20);
});
}
function triggerBattle2Impact(type) {
if (!isBattle2) {
return;
}
var target = getBattleContainer().find('.battleInfo');
if (!target.length) {
return;
}
var cls = type == 'heavy' ? 'tc-impact-heavy' : 'tc-impact-special';
target.removeClass('tc-impact-special tc-impact-heavy');
target[0].offsetHeight;
target.addClass(cls);
}
function setupBattle2AutoControls() {
if (!isBattle2) {
return;
}
var actions = getBattleContainer().find('.tc-actions-grid');
var autoButton = actions.find('.autobattlelink');
if (!actions.length || !autoButton.length || actions.find('.tc-auto-controls').length) {
return;
}
var selected = parseInt(autoButton.attr('data-stop-hp-percent'), 10) || autoBattle.stopHpPercent || 25;
var controls = $('
Auto stop
');
controls.find('button').each(function() {
if (parseInt($(this).attr('data-stop'), 10) === selected) {
$(this).addClass('active');
}
});
controls.find('button').on('click', function(e) {
e.preventDefault();
var stop = parseInt($(this).attr('data-stop'), 10);
autoBattle.stopHpPercent = stop;
autoButton.attr('data-stop-hp-percent', stop);
controls.find('button').removeClass('active');
$(this).addClass('active');
updateAutoBattleButton();
});
actions.prepend(controls);
}
function refreshBattle2FromHtml(html) {
var temp = document.createElement('div');
temp.innerHTML = html;
var nextPage = temp.querySelector('.battlepage');
if (!nextPage) {
mainView.router.loadContent(html);
return;
}
var currentPage = getBattleContainer();
if (!currentPage.length) {
mainView.router.loadContent(html);
return;
}
var oldWidths = [];
currentPage.find('.progress-bar').each(function() {
oldWidths.push(this.style.width);
});
var nextLogLines = collectBattle2LogLines(nextPage);
var attrs = ['data-player-hp', 'data-player-max-hp', 'data-enemy-hp', 'data-enemy-guid'];
for (var i = 0; i < attrs.length; i++) {
currentPage.attr(attrs[i], nextPage.getAttribute(attrs[i]) || '');
}
var nextStyle = nextPage.getAttribute('style');
if (nextStyle) {
currentPage.attr('style', nextStyle);
} else {
currentPage.removeAttr('style');
}
var nextContent = nextPage.querySelector('.page-content');
var currentContent = currentPage.find('.page-content');
if (nextContent && currentContent.length) {
currentContent.html(nextContent.innerHTML);
} else {
currentPage.html(nextPage.innerHTML);
}
var nextNavbar = temp.querySelector('.navbar-inner');
var activeNavbar = page.navbarInnerContainer ? $$(page.navbarInnerContainer) : $$('.view-main .navbar-on-center .navbar-inner');
if (nextNavbar && activeNavbar.length) {
activeNavbar.html(nextNavbar.innerHTML);
}
$('.actions').slideDown(80);
bindBattleActions();
animateBattle2Bars(oldWidths);
renderBattle2Log(nextLogLines);
}
function postBattleRequest(url, data, done, fail) {
if (isBattle2) {
return $.ajax({
method: "POST",
url: url,
data: data,
global: false
}).done(done).fail(fail || function() {});
}
return $$.post(url, data, done, fail || function() {});
}
function updateAutoBattleButton() {
var button = getBattleContainer().find('.autobattlelink');
if (!button.length) {
return;
}
var label = autoBattle.enabled ? 'Stop Auto' : 'Auto-Battle';
if (isBattle2 && !autoBattle.enabled) {
label = 'Auto ' + (autoBattle.stopHpPercent > 0 ? autoBattle.stopHpPercent + '% HP' : 'No Stop');
}
if (autoBattle.enabled) {
button.addClass('color-red');
} else {
button.removeClass('color-red');
}
var actionLabel = $(button[0]).find('.actionimg');
var autoLeft = actionLabel.find('#auto_left').text();
actionLabel.empty().text(label);
if (autoLeft) {
actionLabel.append(' (
)');
actionLabel.find('#auto_left').text(autoLeft);
}
}
window.tcToggleAutoBattle = function(buttonEl) {
var button = $$(buttonEl);
var state = getBattlePageState();
if (autoBattle.enabled) {
stopAutoBattle();
updateAutoBattleButton();
return false;
}
autoBattle.enabled = true;
autoBattle.enemyGuid = button.data("enemyguid") || state.enemyGuid || '';
autoBattle.stopHpPercent = parseInt(button.data("stop-hp-percent"), 10) || 25;
autoBattle.state = state;
updateAutoBattleButton();
if (!lock && autoBattle.enemyGuid) {
postPrimaryAttack(autoBattle.enemyGuid);
return false;
}
scheduleAutoBattle();
return false;
};
function postPrimaryAttack(enemyguid) {
var x = 0;
var y = 0;
var coor = x + "," + y;
lock = 1;
if (!isBattle2) {
myApp.hideIndicator();
}
$(".actions").fadeOut(0, function() {
$(this).remove();
});
postBattleRequest(battleEndpoint, {
guid: enemyguid,
coor: coor
}, function(data) {
runAttack(data);
}, function() {
lock = 0;
stopAutoBattle();
updateAutoBattleButton();
});
}
function scheduleAutoBattle() {
clearAutoBattleTimer();
if (!autoBattle.enabled) {
updateAutoBattleButton();
return;
}
var state = getBattlePageState();
if ((!state.enemyGuid || state.playerMaxHp <= 0) && autoBattle.state) {
state = autoBattle.state;
}
var stopHp = Math.floor((state.playerMaxHp * autoBattle.stopHpPercent) / 100);
if (!state.enemyGuid || state.enemyHp <= 0 || state.playerHp <= 0 || (autoBattle.stopHpPercent > 0 && state.playerHp <= stopHp)) {
stopAutoBattle();
updateAutoBattleButton();
return;
}
updateAutoBattleButton();
autoBattle.timer = setTimeout(function() {
if (!autoBattle.enabled || lock) {
scheduleAutoBattle();
return;
}
var attackGuid = autoBattle.enemyGuid || state.enemyGuid;
if (!attackGuid) {
stopAutoBattle();
updateAutoBattleButton();
return;
}
if (!isBattle2) {
var auto_left = parseInt($('#auto_left').text().replace(/,/g, ''), 10);
console.log(auto_left);
if (isNaN(auto_left)) {
stopAutoBattle();
clearAutoBattleTimer();
updateAutoBattleButton();
return;
}
}
postPrimaryAttack(attackGuid);
}, autoBattleIntervalMs);
}
getStats();
//$$(".actionswrapper").click(function(){if($(".actions").is(":visible")){}else{$(".actions").slideDown("fast");}});
function runAttack(data) {
autoBattle.state = parseBattleStateFromHtml(data);
if (isBattle2) {
refreshBattle2FromHtml(data);
if (getBattleContainer().find('#skip_battle_results').data("enabled") == "true") {
setTimeout(function(){ $(".patrollink").trigger("click"); }, 50);
}
} else {
refreshBattle2FromHtml(data);
}
lock = 0;
if (!isBattle2) {
myApp.hidePreloader();
}
getStats();
clearAutoBattleTimer();
if (autoBattle.enabled) {
if (autoBattle.state && autoBattle.state.enemyGuid) {
autoBattle.enemyGuid = autoBattle.state.enemyGuid;
}
scheduleAutoBattle();
}
}
function bindBattleActions() {
$(".attacklink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
if (autoBattle.enabled) {
stopAutoBattle();
updateAutoBattleButton();
}
if (!lock) {
var enemyguid = $$(this).data("enemyguid");
if (enemyguid) {
postPrimaryAttack(enemyguid);
}
}
$(this).attr('disabled', true);
});
$(".remedylink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
stopAutoBattle();
if (!lock) {
lock = 1;
if (!isBattle2) {
myApp.hideIndicator();
}
//playSound("attack");
$(".actions").fadeOut(0, function() {
$(this).remove();
});
method = "";
var enemyguid = $$(this).data("enemyguid");
if (enemyguid) {
postBattleRequest(battleEndpoint + '?rm=1', {
guid: enemyguid
}, function(data) {
runAttack(data);
}, function() {
//console.log("failure")
})
}
}
$(this).attr('disabled', true);
});
$(".speciallink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
triggerBattle2Impact('special');
stopAutoBattle();
if (!lock) {
lock = 1;
if (!isBattle2) {
myApp.hideIndicator();
}
//playSound("attack");
$(".actions").fadeOut(0, function() {
$(this).remove();
});
method = "";
var enemyguid = $$(this).data("enemyguid");
if (enemyguid) {
postBattleRequest(battleEndpoint + '?special=1', {
guid: enemyguid
}, function(data) {
runAttack(data);
}, function() {
//console.log("failure")
})
}
}
$(this).attr('disabled', true);
});
$(".heavylink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
triggerBattle2Impact('heavy');
stopAutoBattle();
if (!lock) {
lock = 1;
if (!isBattle2) {
myApp.hideIndicator();
}
//playSound("attack");
$(".actions").fadeOut(0, function() {
$(this).remove();
});
method = "";
var enemyguid = $$(this).data("enemyguid");
if (enemyguid) {
postBattleRequest(battleEndpoint + '?heavy=1', {
guid: enemyguid
}, function(data) {
runAttack(data);
}, function() {
//console.log("failure")
})
}
}
$(this).attr('disabled', true);
});
$(".superlink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
stopAutoBattle();
if (!lock) {
lock = 1;
if (!isBattle2) {
myApp.hideIndicator();
}
//playSound("attack");
$(".actions").fadeOut(0, function() {
$(this).remove();
});
method = "";
var enemyguid = $$(this).data("enemyguid");
if (enemyguid) {
postBattleRequest(battleEndpoint + '?super=1', {
guid: enemyguid
}, function(data) {
runAttack(data);
}, function() {
//console.log("failure")
})
}
}
$(this).attr('disabled', true);
});
$(".coverlink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
stopAutoBattle();
if (!lock) {
lock = 1;
method = "";
var enemyguid = $$(this).data("enemyguid");
if (enemyguid) {
postBattleRequest(battleEndpoint + '?cover=1', {
guid: enemyguid
}, function(data) {
runAttack(data);
}, function() {
//console.log("failure")
})
}
}
$(this).attr('disabled', true);
});
$(".runlink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
stopAutoBattle();
if (!lock) {
lock = 1;
method = "hideenemy";
var enemy_id = $$(this).data("enemyguid");
$.ajax({
url: "worker.php?go=" + method + "&id=" + enemy_id,
method: "POST",
global: !isBattle2
}).done(function(data) {
//console.log('success');
});
mainView.router.load({
url: patrolEndpoint,
force: true,
ignoreCache: true
});
}
$(this).attr('disabled', true);
});
$(".patrollink").off("click.tcBattle").on("click.tcBattle", function(e) {
e.preventDefault();
$(this).addClass('tc-action-pending');
stopAutoBattle();
method = "healcharacter";
$.ajax({
url: "worker.php?go=" + method,
method: "POST",
global: !isBattle2
}).done(function(data) {
//console.log('success');
});
mainView.router.load({
url: patrolEndpoint,
force: true,
ignoreCache: true
});
});
setupBattle2AutoControls();
}
if ($$(page.container).find('#skip_battle_results').data("enabled") == "true") {
//console.log('back to patrol2');
setTimeout(function(){ $$(".patrollink").click(); }, 50);
}
// main show
$(".actions").slideDown(125);
bindBattleActions();
if (isBattle2) {
renderBattle2Log(collectBattle2LogLines(getBattleContainer()[0]));
}
if (autoBattle.enabled) {
var state = getBattlePageState();
if (autoBattle.enemyGuid && state.enemyGuid && autoBattle.enemyGuid !== state.enemyGuid) {
stopAutoBattle();
}
}
updateAutoBattleButton();
if (autoBattle.enabled) {
scheduleAutoBattle();
}
actionfix = setInterval(function(){ if ($(".actions").length == 0) { $$(".attacklink").click(); } else { } }, 3000);
} else if (page.name == 'vendor') {
$.getScript("js/vendor.js");
} else if (page.name == 'changeweapon') {
$.getScript("js/changeweapon.js");
} else if (page.name == 'changearmor') {
$.getScript("js/changearmor.js");
} else if (page.name == 'patrol' || page.name == 'patrol2') {
$.getScript(page.name == 'patrol2' ? "js/patrol2.js" : "js/patrol.js");
$$('.popupact').on('click', function () {
myApp.popup('.popup-actions');
});
$.getScript("https://www.google.com/recaptcha/api.js");
} else if (page.name == 'changesubclass') {
$.getScript("js/changesubclass.js");
} else if (page.name == 'inventory') {
$.getScript("js/inventory.js");
} else if (page.name == 'index-1') {
$.getScript("js/index.js");
checkBGMusic();
} else if (page.name == 'logout') {
$.getScript("js/logout.js");
} else if (page.name == 'settings') {
$.getScript("js/settings.js");
} else if (page.name == 'message') {
$.getScript("js/message.js");
} else if (page.name == 'clan') {
$.getScript("js/clan.js");
} else if (page.name == 'findclan') {
$.getScript("js/findclan.js");
} else if (page.name == 'viewclan') {
$.getScript("js/findclan.js");
} else if (page.name == 'messages') {
$.getScript("js/messages.js");
} else if (page.name == 'sentmessages') {
$.getScript("js/sentmessages.js");
}else if (page.name == 'sendmessage') {
$.getScript("js/sendmessage.js");
} else if (page.name == 'gear') {
$.getScript("js/gear.js");
} else if (page.name == 'players') {
$.getScript("js/players.js");
} else if (page.name == 'infusion') {
$.getScript("js/infusion.js");
} else if (page.name == 'sellitems') {
$.getScript("js/sellitems.js");
} else if (page.name == 'grimoire') {
$.getScript("js/grimoire.js");
} else if (page.name == 'leaderboards') {
$.getScript("js/leaderboards.js");
} else if (page.name == 'convertac') {
$.getScript("js/convert.js");
} else if (page.name == 'guardian') {
var char_id = $('#char_id').html();
$.getScript("js/guardian.php?char_id="+char_id);
} else if (page.name == 'customize') {
$.getScript("js/customize.js");
} else if (page.name == 'story') {
$.getScript("js/story.js");
} else if (page.name == 'editstory') {
$.getScript("js/editstory.js");
} else if (page.name == 'stats') {
$.getScript("js/stats.php");
} else if (page.name == 'settlement') {
$.getScript("js/settlement.js");
} else if (page.name == 'give') {
$.getScript("js/give.js");
} else if (page.name == 'shop') {
$.getScript("js/shop.js");
} else if (page.name == 'forum') {
$.getScript("js/forum.js");
} else if (page.name == 'daily') {
var user_id = $('#user_id').html();
$.getScript("js/daily.php?user_id="+user_id);
} else if (page.name == 'transpose') {
$.getScript("js/transpose.js");
} else if (page.name == 'resetchar') {
$.getScript("js/resetchar.js");
} else if (page.name == 'clantitles') {
$.getScript("js/clantitles.js");
} else if (page.name == 'hourlystats') {
$.getScript("js/hourlystats.js");
} else if (page.name == 'changename') {
$.getScript("js/changename.js");
} else if (page.name == 'iosiap') {
$.getScript("js/iosiap.js");
} else if (page.name == 'andiap') {
$.getScript("js/andiap.js");
} else if (page.name == 'delaccount') {
$.getScript("js/delaccount.js");
} else if (page.name == 'upgrade') {
ga('send', {
hitType: 'event',
eventCategory: 'Section',
eventAction: 'Coin Store',
eventLabel: 'AC'
});
}
// track
//ga('send', 'event', 'Subsection', e.detail.page.name, 'Titan Conquest');
//ga('send', 'pageview');
/*
var humanRNG = getRandomizer(1, 5000);
if (humanRNG == 7) {
myApp.alert("If you are not a robot, click OK!", 'Robot Check!');
}
*/
$("#actions").slideDown("fast");
//console.log("fired");
});
function getRandomizer(bottom, top) {
return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
}
function startBgMusic() {
//bgm = document.getElementById("bg");
var bgdiv = document.getElementById("bgm");
if (bgdiv !== null) {
bgm = new Audio('mp3/bg.mp3');
if (bgm != null) {
bgm.loop=true;
bgm.volume=0.05;
bgm.play();
checkBGMusic();
}
}
}
function pauseBgMusic() {
var bgdiv = document.getElementById("bgm");
if (bgdiv !== null) {
if (bgm != null) {
bgm.pause();
bgm.currentTime = 0.0;
bgm = null;
checkBGMusic();
}
}
}
function checkBGMusic() {
if (bgm != null) {
if (bgm.paused) {
$$("#playbgm").show();
$$("#pausebgm").hide();
} else {
$$("#playbgm").hide();
$$("#pausebgm").show();
}
}
}
function playSound(obj) {
snd = document.getElementById(obj);
if (snd != null) snd.play();
}
// always need this
$.getScript("js/index.js");
$$(".mainlink").click(function() {
window.location = "index.php";
});
$$("#playbgm").click(function() {
startBgMusic();
$$("#playbgm").hide();
$$("#pausebgm").show();
});
$$("#pausebgm").click(function() {
pauseBgMusic();
$$("#playbgm").show();
$$("#pausebgm").hide();
});
$$('.panel-right').on('open', function () {
doCWFC("chatlastcheck", "");
$("#openchatbtn").removeClass("button-highlight");
$("#openchatbtn").hide();
});
$$('.panel-right').on('close', function () {
doCWFC("chatlastcheck", "");
$("#openchatbtn").removeClass("button-highlight");
$("#openchatbtn").show();
});
function scrollTo(target) {
$('.page-content').animate({
scrollTop: $("#"+target).offset().top
}, 500);
}
function scrollToDiv(div) {
$('.page-content').animate({scrollTop:$("#"+div).offset().top - 100}, 500);
}
// chat
$('#chat_txt_mobile').keypress(function(event) {
if (event.keyCode == 13) {
event.preventDefault();
text = $(this).val();
room = $("#chatroom_mobile").val();
$('#chat_txt_mobile').val("");
$('#chat_txt_mobile').focus();
$.ajax({
url: "worker.php?go=addchat&text="+encodeURIComponent(text)+"&room="+encodeURIComponent(room),
method: "POST"
})
.done(function(data) {
$("#openchatbtn").removeClass("button-highlight");
getChatD();
});
}
});
$('#chat_txt_desktop').keypress(function(event) {
if (event.keyCode == 13) {
event.preventDefault();
text = $(this).val();
room = $("#chatroom_desktop").val();
//console.log(room)
$('#chat_txt_desktop').val("");
$('#chat_txt_desktop').focus();
$.ajax({
url: "worker.php?go=addchat&text="+encodeURIComponent(text)+"&room="+encodeURIComponent(room),
method: "POST"
})
.done(function(data) {
getChatD();
});
}
});
$('.chatroom').change(function(e) {
var room = $( this ).val();
var last = $( this ).data("last");
//console.log(last);
$("#chat_room_last").val($(".chatroom").val())
if (room == "custom") {
// ask them
myApp.prompt('Enter a room name', 'Custom Chat',
function (value) {
var room = value.trim();
room = room.replace(/<(.|\n)*?>/g, '');
//console.log(room);
if (room) {
$('.chatroom').append('
');
$("#chatroom_desktop").val(room);
$("#chatroom_mobile").val(room);
getChatD();
} else {
$("#chatroom_desktop").val("global");
$("#chatroom_mobile").val("global");
getChatD();
}
},
function (value) {
// cancel
$("#chatroom_desktop").val("global");
$("#chatroom_mobile").val("global");
getChatD();
}
);
}
// synch
$("#chatroom_desktop").val(room);
$("#chatroom_mobile").val(room);
$(".chatflip").show();
$( this ).data("last", room);
$("#chat_room_last").val(last);
getChatD();
});
$(".chatflip").click(function() {
var last = $("#chat_room_last").val();
$("#chat_room_last").val($(".chatroom").val())
$("#chatroom_desktop").val(last);
$("#chatroom_mobile").val(last);
//console.log(last + " " + $("#chat_room_last").val());
// remove highlight
$(".chatflip").addClass("chatflipG");
$(".chatflip").removeClass("chatflipY");
doCWFC("chatlastcheck", "");
getChatD();
});
function setChatRoom(room) {
// add if not there
if ($('.chatroom option:contains('+ room +')').length == 0 && room != "staff" && room != "clan") {
$('.chatroom').append('
');
}
// change them
$("#chatroom_desktop").val(room);
$("#chatroom_mobile").val(room);
doCWFC("chatlastcheck", "");
$(".chatflip").show();
getChatD();
//console.log("room is now "+room);
}
function getChatD() {
setTimeout(function() { getChat() }, 200);
}
function getChat() {
var randomnumber=Math.floor(Math.random()*500000);
room = $(".chatroom").val();
if($("#chatzoneDesktop").is(":visible")){
$('#chatzoneDesktop').load('worker.php?cachebuster='+randomnumber+'&go=getchat&room='+encodeURIComponent(room), function() {
linkCQD();
});
} else {
$('#chatzoneMobile').load('worker.php?cachebuster='+randomnumber+'&go=getchat&room='+encodeURIComponent(room), function() {
linkCQM();
});
}
}
function linkCQD() {
$('.cq').click(function() {
var un = $(this).data('username');
$("#chat_txt_desktop").val("@"+un+": ");
$("#chat_txt_desktop").focus();
//console.log(un);
});
}
function linkCQM() {
$('.cq').click(function() {
var un = $(this).data('username');
$("#chat_txt_mobile").val("@"+un+": ");
$("#chat_txt_mobile").focus();
//console.log(un);
});
}
function checkChat() {
room = $(".chatroom").val();
$.ajax({
url: "worker.php?go=newchatscount&room="+encodeURIComponent(room),
method: "POST"
})
.done(function(data) {
if (data != "0") {
$("#openchatbtn").addClass("button-highlight");
}
});
// bolt flip switch check
checkBoltChat();
}
function checkBoltChat() {
room = $("#chat_room_last").val();
$.ajax({
url: "worker.php?go=newchatscount&room="+encodeURIComponent(room),
method: "POST"
})
.done(function(data) {
//console.log("d "+data+" "+room);
if (data != "0") {
$(".chatflip").addClass("chatflipY");
$(".chatflip").removeClass("chatflipG");
}
});
}
function delChat(id) {
$.ajax({
url: "worker.php?go=delchat&id="+id,
method: "POST"
})
.done(function(data) {
getChatD();
});
}
function undelChat(id) {
$.ajax({
url: "worker.php?go=undelchat&id="+id,
method: "POST"
})
.done(function(data) {
getChatD();
});
}
function flagChat(id) {
method = "flagchat";
if (id > 0) {
var buttons = [
{
text: 'Alert staff about this chat message?',
label: true
},
{
text: 'Yes',
onClick: function () {
$.ajax({
url: "worker.php?go="+method+"&id="+id,
method: "POST"
})
.done(function(data) {
//console.log('success', data);
switch(data) {
case "success":
myApp.alert("Staff has been alerted!", 'Success!');
break;
}
});
}
},
{
text: 'Cancel',
color: 'red',
onClick: function () {
}
},
];
myApp.actions(buttons);
}
}
function getStats() {
var randomnumber=Math.floor(Math.random()*500000);
$('#statszone').load('worker.php?cachebuster='+randomnumber+'&go=getstats', function() {
});
}
function doCWFC(content, options) {
var randomnumber=Math.floor(Math.random()*500000);
$.ajax({
url: "worker.php?go="+content+""+options,
method: "POST"
})
.done(function(data) {
// console.log('success', data)
//return data;
});
//return "";
}
function claimChat(id) {
$.ajax({
url: "worker.php?go=claimchat&id="+id,
method: "POST"
})
.done(function(data) {
getChat();
});
}
function checkForAlerts() {
$.ajax({
url: "worker.php?go=alerts",
method: "POST"
})
.done(function(data) {
if (data != "none") {
alertUser(data);
}
});
}
function alertUser(text) {
myApp.addNotification({
title: 'Titan Conquest',
message: text,
onClose: function () {
//myApp.alert('Notification closed');
}
});
}
var holdHomeTimer = null;
var isHoldingHome = false;
var holdHomeStartX = 0;
var holdHomeStartY = 0;
var holdHomeSuppressClick = false;
var holdHomeSuppressClickTimer = null;
var holdHomeMenuEl = null;
var holdHomeOutsideBound = false;
var holdHomeMenuButtons = [
{ text: '
Acropolis', href: 'index.php' },
{ text: '
My Inventory', href: 'inventory.php' },
{ text: '
My Gear', href: 'gear.php' },
{ text: '
My Messages', href: 'messages.php' }
];
function isHomeBtnTarget(target) {
while (target && target !== document) {
if (target.id === 'homebtn') {
return true;
}
target = target.parentNode;
}
return false;
}
function isHoldHomeDisabled() {
var homeBtn = document.getElementById('homebtn');
if (!homeBtn) {
return true;
}
var disabledAttr = homeBtn.getAttribute('disabled');
return (disabledAttr !== null && disabledAttr !== 'false') || homeBtn.classList.contains('disabled') || homeBtn.getAttribute('aria-disabled') === 'true';
}
function getHoldHomeTouch(event) {
var originalEvent = event.originalEvent || event;
var touch = originalEvent.touches && originalEvent.touches[0];
if (!touch && originalEvent.changedTouches) {
touch = originalEvent.changedTouches[0];
}
return touch || originalEvent;
}
function clearHoldHomeTimer() {
isHoldingHome = false;
if (holdHomeTimer) {
clearTimeout(holdHomeTimer);
holdHomeTimer = null;
}
}
function suppressHoldHomeClick() {
holdHomeSuppressClick = true;
if (holdHomeSuppressClickTimer) {
clearTimeout(holdHomeSuppressClickTimer);
}
holdHomeSuppressClickTimer = setTimeout(function() {
holdHomeSuppressClick = false;
holdHomeSuppressClickTimer = null;
}, 1200);
}
function isHoldHomeMenuTarget(target) {
return holdHomeMenuEl && holdHomeMenuEl.contains(target);
}
function closeHoldHomeMenu() {
if (!holdHomeMenuEl) {
return;
}
holdHomeMenuEl.classList.remove('hold-home-menu-open');
if (holdHomeOutsideBound) {
document.removeEventListener('mousedown', handleHoldHomeOutside, true);
document.removeEventListener('touchstart', handleHoldHomeOutside, true);
document.removeEventListener('keydown', handleHoldHomeKeydown, true);
holdHomeOutsideBound = false;
}
}
function handleHoldHomeOutside(event) {
if (isHomeBtnTarget(event.target) || isHoldHomeMenuTarget(event.target)) {
return;
}
closeHoldHomeMenu();
}
function handleHoldHomeKeydown(event) {
if (event.key === 'Escape') {
closeHoldHomeMenu();
}
}
function buildHoldHomeMenu() {
if (holdHomeMenuEl) {
return holdHomeMenuEl;
}
holdHomeMenuEl = document.createElement('div');
holdHomeMenuEl.id = 'hold-home-menu';
holdHomeMenuEl.className = 'hold-home-menu';
holdHomeMenuEl.setAttribute('role', 'menu');
var html = '';
for (var i = 0; i < holdHomeMenuButtons.length; i++) {
html += '';
}
html += '';
holdHomeMenuEl.innerHTML = html;
holdHomeMenuEl.addEventListener('click', function(event) {
var target = event.target;
while (target && target !== holdHomeMenuEl && !target.classList.contains('hold-home-menu-item')) {
target = target.parentNode;
}
event.preventDefault();
event.stopPropagation();
if (!target || target === holdHomeMenuEl || target.classList.contains('hold-home-menu-cancel')) {
closeHoldHomeMenu();
return;
}
closeHoldHomeMenu();
mainView.router.loadPage(target.getAttribute('data-href'));
});
document.body.appendChild(holdHomeMenuEl);
return holdHomeMenuEl;
}
function positionHoldHomeMenu(menuEl) {
var homeBtn = document.getElementById('homebtn');
if (!homeBtn) {
return;
}
var rect = homeBtn.getBoundingClientRect();
var left = Math.max(8, Math.min(rect.left, window.innerWidth - menuEl.offsetWidth - 8));
menuEl.style.left = left + 'px';
menuEl.style.bottom = Math.max(58, window.innerHeight - rect.top + 6) + 'px';
}
function showHoldHomeMenu() {
if (isHoldHomeDisabled()) {
return;
}
var menuEl = buildHoldHomeMenu();
menuEl.classList.add('hold-home-menu-open');
positionHoldHomeMenu(menuEl);
if (!holdHomeOutsideBound) {
setTimeout(function() {
document.addEventListener('mousedown', handleHoldHomeOutside, true);
document.addEventListener('touchstart', handleHoldHomeOutside, true);
document.addEventListener('keydown', handleHoldHomeKeydown, true);
holdHomeOutsideBound = true;
}, 0);
}
}
function handleHoldHomeStart(event) {
if (isHoldHomeDisabled()) {
clearHoldHomeTimer();
return;
}
if (event.type === 'mousedown' && event.button !== 0) {
clearHoldHomeTimer();
return;
}
if (event.touches && event.touches.length > 1) {
clearHoldHomeTimer();
return;
}
var touch = getHoldHomeTouch(event);
holdHomeStartX = touch.clientX || 0;
holdHomeStartY = touch.clientY || 0;
isHoldingHome = true;
if (holdHomeTimer) {
clearTimeout(holdHomeTimer);
}
holdHomeTimer = setTimeout(function() {
if (!isHoldingHome) {
return;
}
holdHomeTimer = null;
isHoldingHome = false;
suppressHoldHomeClick();
showHoldHomeMenu();
}, 550);
}
function handleHoldHomeMove(event) {
if (!isHoldingHome) {
return;
}
if (event.touches && event.touches.length > 1) {
clearHoldHomeTimer();
return;
}
var touch = getHoldHomeTouch(event);
var moveX = Math.abs((touch.clientX || 0) - holdHomeStartX);
var moveY = Math.abs((touch.clientY || 0) - holdHomeStartY);
if (moveX > 12 || moveY > 12) {
clearHoldHomeTimer();
}
}
function handleHoldHomeClick(event) {
if (!holdHomeSuppressClick) {
return;
}
holdHomeSuppressClick = false;
if (holdHomeSuppressClickTimer) {
clearTimeout(holdHomeSuppressClickTimer);
holdHomeSuppressClickTimer = null;
}
event.preventDefault();
event.stopImmediatePropagation();
return false;
}
function handleHoldHomeContextMenu(event) {
if (!isHomeBtnTarget(event.target)) {
return;
}
clearHoldHomeTimer();
suppressHoldHomeClick();
showHoldHomeMenu();
event.preventDefault();
event.stopImmediatePropagation();
return false;
}
if (!window.homeBtnHoldInitialized) {
window.homeBtnHoldInitialized = true;
document.addEventListener('contextmenu', handleHoldHomeContextMenu, true);
document.addEventListener('dragstart', function(event) {
if (!isHomeBtnTarget(event.target)) {
return;
}
event.preventDefault();
event.stopImmediatePropagation();
}, true);
}
$("#homebtn")
.off(".homehold")
.on("touchstart.homehold mousedown.homehold", handleHoldHomeStart)
.on("touchmove.homehold mousemove.homehold", handleHoldHomeMove)
.on("touchend.homehold touchcancel.homehold mouseup.homehold mouseleave.homehold", clearHoldHomeTimer)
.on("click.homehold", handleHoldHomeClick);
var myPhotoBrowserPopupDark = myApp.photoBrowser({
photos : [
'https://titanconquest.com/img/screen1.png',
'https://titanconquest.com/img/screen2.png',
'https://titanconquest.com/img/screen3.png',
'https://titanconquest.com/img/screen4.png'
],
theme: 'dark',
type: 'standalone'
});
$$('.pb-popup-dark-desktop').on('click', function () {
myPhotoBrowserPopupDark.open();
});
var myPhotoBrowserPopupDark2 = myApp.photoBrowser({
photos : [
'https://titanconquest.com/img/screen1.png',
'https://titanconquest.com/img/screen2.png',
'https://titanconquest.com/img/screen3.png',
'https://titanconquest.com/img/screen4.png'
],
theme: 'dark',
type: 'standalone'
});
$$('.pb-popup-dark-mobile').on('click', function () {
myPhotoBrowserPopupDark2.open();
});
setInterval(checkForAlerts, 40000);
var chat_on = $("#chat_on").val();
if (chat_on == 1) {
setInterval(getChat, 15000);
setInterval(checkChat, 40000);
}
setInterval(getStats, 240000);
getChat();
getStats();
checkForAlerts();
setTimeout(function() { startBgMusic() }, 1000);
$$('.popover-xp').on('popover:open', function () {
var randomnumber=Math.floor(Math.random()*500000);
$('#pop_xp_content').load('worker.php?cachebuster='+randomnumber+'&go=getpopup&type=xp', function() {
});
});
$$('.popover-dr').on('popover:open', function () {
var randomnumber=Math.floor(Math.random()*500000);
$('#pop_dr_content').load('worker.php?cachebuster='+randomnumber+'&go=getpopup&type=dr', function() {
});
});
$$('.popup-actions').on('popup:open', function () {
var randomnumber=Math.floor(Math.random()*500000);
$('#actions_content').load('worker.php?cachebuster='+randomnumber+'&go=getactions', function() {
$('.actionsprogressbar').each(function() {
var progress = $$(this).attr('data-progress');
var progressbar = $$(this);
myApp.showProgressbar(progressbar, progress, 'red');
//console.log(progressbar);
});
$$(".aloadoutusebutton").click(function() {
method = "loadoutuse";
var loadout_id = $$(this).data("loadoutid");
if (loadout_id > 0) {
$.ajax({
url: "worker.php?go="+method+"&id="+loadout_id,
method: "POST"
})
.done(function(data) {
//console.log('success', data);
switch(data) {
case "success":
break;
}
});
}
});
});
//console.log('Action Popup opened');
});
function mainTryRefresh() {
var tries = 0;
//console.log("trying refresh...");
function check() {
//console.log("try "+tries);
// can we refresh?
if (mainView.allowPageChange) {
currentScroll = $$(mainView.activePage.container).find('.page-content').scrollTop();
mainView.router.refreshPage();
return;
}
tries++;
//console.log(tries);
if (tries >= 100) {
// fallback
currentScroll = $$(mainView.activePage.container).find('.page-content').scrollTop();
mainView.router.refreshPage();
return;
}
setTimeout(check, 100);
}
check();
}
myApp.onPageAfterBack(
'message',
function (page) {
setTimeout(
function () {
mainTryRefresh();
},
350
);
}
);