This repository has been archived on 2024-07-18. You can view files and clone it, but cannot push or open issues or pull requests.
lwb6/legacyworlds-web/legacyworlds-web-main/WebContent/js/main.js

311 lines
7.9 KiB
JavaScript

$(function() {
/*
* Main layer location
*/
var _viewportHeight = function() {
return self.innerHeight || jQuery.boxModel
&& document.documentElement.clientHeight
|| document.body.clientHeight;
};
var _viewportWidth = function() {
return self.innerWidth || jQuery.boxModel
&& document.documentElement.clientWidth
|| document.body.clientWidth;
};
var _handleSize = function() {
var _h = _viewportHeight();
if (_h < 560) {
$("#extframe").css('top', '280px');
} else {
$("#extframe").css('top', '50%');
}
var _w = _viewportWidth();
if (_w < 950) {
$(".internal").css('left', '475px');
} else {
$(".internal").css('left', '50%');
}
};
$(window).resize(_handleSize);
_handleSize();
/*
* Tabs
*/
var _findTabs = function() {
var _found = [];
$(".tabs").each(function(_container) {
var _data = {
container : $(this),
tabs : []
};
$(".tab", $(this)).each(function(_container) {
var _theTab = {
id : $(this).attr('id'),
title : $("> h3", $(this)).text(),
contents : $("div.tab-contents", $(this))
};
_data.tabs.push(_theTab);
});
_found.push(_data);
});
return _found;
};
var _hideTab = function(_id) {
$('#tabb-' + _id).removeClass('selected-tab');
$('#tabc-' + _id).css('display', 'none');
};
var _showTab = function(_id) {
$('#tabb-' + _id).addClass('selected-tab');
$('#tabc-' + _id).css('display', 'block');
};
var _prepareTabContainer = function(_root) {
_root.container.empty();
var _titles = $('<div/>').addClass('tab-buttons');
_titles.appendTo(_root.container);
for ( var j in _root.tabs) {
var _theTab = _root.tabs[j];
if (j == 0 || location.hash == '#' + _theTab.id) {
_root.selected = _theTab.id;
}
$('<a/>').addClass('tab-button').attr('id', 'tabb-' + _theTab.id)
.attr('href', '#' + _theTab.id).text(_theTab.title)
.appendTo(_titles).click(
function() {
_hideTab(_root.selected);
_root.selected = $(this).attr('id').replace(
/^tabb-/, '');
_showTab(_root.selected);
});
_theTab.contents.css('display', 'none').attr('id',
'tabc-' + _theTab.id).appendTo(_root.container);
}
_showTab(_root.selected);
};
var _prepareTabs = function(_tabs) {
for ( var i in _tabs) {
_prepareTabContainer(_tabs[i]);
}
};
var _tabs = _findTabs();
_prepareTabs(_tabs);
/*
* Hidden descriptions
*/
$("div.auto-hide").each(function() {
var _div = $(this);
_div.css('display', 'none');
var _visible = false;
$('<a/>').attr('href', '#').text('...').click(function() {
if (_visible) {
_div.css('display', 'none');
} else {
_div.css('display', 'block');
}
_visible = !_visible;
return false;
}).insertBefore(_div);
});
/*
* "Jump to planet"
*/
$("p#jump-to-planet").each(
function() {
var _form = $('<form/>').attr('action', '/').submit(function() {
return false;
});
var _fdiv = $('<div/>').appendTo(_form);
var _select = $('<select/>').attr('name', 'planet').addClass(
'input').appendTo(_fdiv);
$('<option/>').attr('value', '').text(
$('span.jtp-text', $(this)).text() + " ...").appendTo(
_select);
$('a', $(this)).each(
function() {
$('<option/>').attr('value', $(this).attr('href'))
.text($(this).text()).appendTo(_select);
});
_select.change(function() {
var _target = $("option:selected", $(this)).attr('value');
if (_target == "") {
return false;
}
location.href = _target;
return true;
});
$(this).empty();
_form.appendTo($(this));
});
/*
* Map cells
*/
var _mapClasses = [ 'map-bg-none', 'map-bg-allied', 'map-bg-own',
'map-bg-enemy', 'map-bg-other' ];
$(".map a").each(
function() {
var _cls = $(this).hasClass("own-planet") ? 2 : ($(this)
.hasClass("allied-planet") ? 1 : ($(this).hasClass(
"enemy-planet") ? 3
: ($(this).hasClass("other-planet") ? 4 : 0)));
var _href = $(this).attr('href');
var _pDiv = $(this).parent();
_pDiv.mouseenter(function() {
$(this).addClass(_mapClasses[_cls]).addClass('map-invert');
}).mouseleave(
function() {
$(this).removeClass(_mapClasses[_cls]).removeClass(
'map-invert');
}).click(function() {
location.href = _href;
return false;
});
});
/*
* Fleet ships
*/
$(".fleet-details").each(function() {
var _id = $(this).attr('id');
var _name = $("td.name", $(this));
var _ships = $("#" + _id + "-ships");
_ships.css('display', 'none');
_name.click(function() {
if (_ships.css('display') == 'none') {
_ships.css('display', 'table-row');
} else {
_ships.css('display', 'none');
}
});
});
/*
* Planets - buildings/ships details
*/
$("#buildings-types .building-type").css('display', 'none');
$('#ff-civ-build-type').change(function() {
$("#buildings-types .building-type").css('display', 'none');
$("#building-type-" + $(this).val()).css('display', 'block');
});
$("#ships-types .ship-type").css('display', 'none');
$('#ff-mil-build-type').change(function() {
$("#ships-types .ship-type").css('display', 'none');
$("#ship-type-" + $(this).val()).css('display', 'block');
});
/*
* Battles
*/
$("#ff-view-battle-tick")
.each(
function() {
$(this).next().remove();
$(this).css('width', '95%');
$(this).change(function() {
var _baseUrl = location.href;
_baseUrl = _baseUrl.replace(/-latest$/, "");
_baseUrl = _baseUrl.replace(/-at-[0-9]+/, "");
_baseUrl += "-at-" + $(this).val();
location.href = _baseUrl;
});
$("tr.ship-type").css('display', 'none');
$("td.ships-expander").each(function() {
$(this).text('*').css('cursor', 'pointer');
}).click(
function() {
var _tr = $(this).parent().next();
while (_tr != null
&& _tr.hasClass("ship-type")) {
if (_tr.css('display') == 'none') {
_tr.css('display', 'table-row')
.data('visible', true);
} else {
_tr.css('display', 'none').data(
'visible', false);
}
_tr = _tr.next();
}
});
$("td.forces-expander")
.each(
function() {
$(this).text('+').css('cursor',
'pointer');
var _tr = $(this).parent().next();
while (_tr != null
&& _tr.hasClass("group")) {
_tr = _tr.next();
}
while (_tr != null
&& _tr.hasClass("empire")) {
_tr.css('display', 'none');
_tr = _tr.next();
}
})
.click(
function() {
var _tr = $(this).parent().next();
while (_tr != null
&& _tr.hasClass("group")) {
_tr = _tr.next();
}
var _mode = null;
while (_tr != null
&& _tr.hasClass("empire")) {
if (_mode === null) {
_mode = (_tr.css('display') == 'none') ? 'table-row'
: 'none';
}
var _rMode;
if (_tr.hasClass("ship-type")) {
_rMode = _tr
.data('visible') ? _mode
: 'none';
} else {
_rMode = _mode;
}
_tr.css('display', _rMode);
_tr = _tr.next();
}
});
$("tr.tip").css('display', 'table-row');
});
/* Chat button */
$("a.open-chat-button").click(function() {
window.open(this.href);
return false;
});
/* Message selection button */
$("span#message-box-selector").each(
function() {
var _title = $(this).attr('title');
$(this).replaceWith(
$('<input/>').addClass('input').attr('type', 'button')
.attr('title', _title).val('X').css('cursor',
'pointer').click(function() {
$("input.message-selection").click();
}));
});
});