mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-06-28 00:24:23 +00:00
6d1182e2f9
It actually isn't even implemented in the JavaScript, so I'm commenting it out for now, since it never really worked. Relates to: #254
865 lines
9.0 KiB
JavaScript
865 lines
9.0 KiB
JavaScript
/* Dynamic images, change class */
|
|
|
|
// MooTools
|
|
|
|
window
|
|
|
|
.addEvent('domready', function()
|
|
|
|
{
|
|
|
|
|
|
|
|
$$('*.dynamic_img').addEvents(
|
|
|
|
{
|
|
|
|
'mouseenter': function()
|
|
|
|
{
|
|
|
|
this.addClass('over');
|
|
|
|
},
|
|
|
|
'mouseleave': function()
|
|
|
|
{
|
|
|
|
this.removeClass('over');
|
|
|
|
this.removeClass('clicked');
|
|
|
|
},
|
|
|
|
'mousedown': function()
|
|
|
|
{
|
|
|
|
this.removeClass('over');
|
|
|
|
this.addClass('clicked');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
$$('img.tSwitch')
|
|
|
|
.addEvents(
|
|
|
|
{
|
|
|
|
'mousedown': function()
|
|
|
|
{
|
|
|
|
var tbody = this.getParent('thead').getNext('tbody');
|
|
|
|
tbody.toggleClass('hide');
|
|
|
|
if (tbody.hasClass('hide'))
|
|
|
|
{
|
|
|
|
document.cookie = 't3' + this.getParent('table')
|
|
|
|
.getProperty('id') + '=1; expires=Wed, 1 Jan 2020 00:00:00 GMT';
|
|
|
|
this.removeClass('opened');
|
|
|
|
this.addClass('closed');
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
document.cookie = 't3' + this.getParent('table')
|
|
|
|
.getProperty('id') + '=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';
|
|
|
|
this.removeClass('closed');
|
|
|
|
this.addClass('opened');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
$$('table.row_table_data tbody tr').addEvents(
|
|
|
|
{
|
|
|
|
'mouseenter': function()
|
|
|
|
{
|
|
|
|
this.addClass('hlight');
|
|
|
|
},
|
|
|
|
'mouseleave': function()
|
|
|
|
{
|
|
|
|
this.removeClass('hlight');
|
|
|
|
},
|
|
|
|
'mousedown': function()
|
|
|
|
{
|
|
|
|
this.toggleClass('marked');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
// IE MooTools Fix
|
|
|
|
if (Browser.Engine.trident) // f�r IE
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Element Erweiterungen
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
Element.implement(
|
|
|
|
{
|
|
|
|
insertAtCursor: function(value, select)
|
|
|
|
{
|
|
|
|
var pos = this.getSelectedRange();
|
|
|
|
|
|
|
|
// IE fix BEGIN
|
|
|
|
if (pos.start == 0 && pos.end == 0)
|
|
|
|
{
|
|
|
|
this.focus();
|
|
|
|
sel = document.selection.createRange();
|
|
|
|
sel.text = value;
|
|
|
|
this.focus();
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
// IE fix END
|
|
|
|
|
|
|
|
var text = this.get('value');
|
|
|
|
this.set('value', text.substring(0, pos.start) + value + text.substring(pos.end, text.length));
|
|
|
|
if ($pick(select, true))
|
|
|
|
{
|
|
|
|
this.selectRange(pos.start, pos.start + value.length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
this.setCaretPosition(pos.start + value.length);
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
},
|
|
|
|
|
|
|
|
insertAroundCursor: function(options, select)
|
|
|
|
{
|
|
|
|
options = $extend(
|
|
|
|
{
|
|
|
|
before: '',
|
|
|
|
defaultMiddle: '',
|
|
|
|
after: ''
|
|
|
|
}, options);
|
|
|
|
|
|
|
|
var value = this.getSelectedText() || options.defaultMiddle;
|
|
|
|
var pos = this.getSelectedRange();
|
|
|
|
|
|
|
|
// IE fix BEGIN
|
|
|
|
if (pos.start == 0 && pos.end == 0)
|
|
|
|
{
|
|
|
|
this.focus();
|
|
|
|
sel = document.selection.createRange();
|
|
|
|
sel.text = options.before + options.after;
|
|
|
|
this.focus();
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
// IE fix END
|
|
|
|
|
|
|
|
var text = this.get('value');
|
|
|
|
if (pos.start == pos.end)
|
|
|
|
{
|
|
|
|
this.set('value', text.substring(0, pos.start) + options.before + value + options.after + text.substring(pos.end, text.length));
|
|
|
|
this.selectRange(pos.start + options.before.length, pos.end + options.before.length + value.length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
var current = text.substring(pos.start, pos.end);
|
|
|
|
this.set('value', text.substring(0, pos.start) + options.before + current + options.after + text.substring(pos.end, text.length));
|
|
|
|
var selStart = pos.start + options.before.length;
|
|
|
|
|
|
|
|
if ($pick(select, true))
|
|
|
|
{
|
|
|
|
this.selectRange(selStart, selStart + current.length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
this.setCaretPosition(selStart + text.length);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
var BBEditor = new Class ({
|
|
|
|
preview: null,
|
|
|
|
textArea: null,
|
|
|
|
id: null,
|
|
|
|
|
|
|
|
Binds: ['fetchPreview', 'showToolbarWindow', 'insertTag', 'insertSingleTag', 'insertSmilieTag', 'hideToolbarWindow', 'showPreview', 'hidePreview'],
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Initialisiert den Editor
|
|
|
|
*/
|
|
|
|
initialize: function(textAreaId) {
|
|
|
|
|
|
|
|
//connect elements
|
|
|
|
this.id = textAreaId;
|
|
|
|
this.textArea = $(textAreaId);
|
|
|
|
this.toolbar = $(textAreaId + '_toolbar');
|
|
|
|
this.preview = $(textAreaId + '_preview');
|
|
|
|
|
|
|
|
//init elements
|
|
|
|
this.preview.setStyle('display', 'none');
|
|
|
|
|
|
|
|
//add Events
|
|
|
|
$(textAreaId + '_previewButton').addEvent('click', this.fetchPreview);
|
|
|
|
$(textAreaId + '_resourceButton').addEvent('click', this.showToolbarWindow);
|
|
|
|
$(textAreaId + '_smilieButton').addEvent('click', this.showToolbarWindow);
|
|
|
|
$(textAreaId + '_troopButton').addEvent('click', this.showToolbarWindow);
|
|
|
|
$(textAreaId).addEvent('click', this.hideToolbarWindow);
|
|
|
|
this.addEvent($(textAreaId + '_toolbar'), this.insertTag);
|
|
|
|
this.addEvent($(textAreaId + '_resources'), this.insertTag);
|
|
|
|
this.addEvent($(textAreaId + '_smilies'), this.insertTag);
|
|
|
|
this.addEvent($(textAreaId + '_troops'), this.insertTag);
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* F�gt den klickbaren Objekten die Events hinzu
|
|
|
|
*
|
|
|
|
* @param object containerObjekt
|
|
|
|
* @param string callback
|
|
|
|
*/
|
|
|
|
addEvent: function(div, call) {
|
|
|
|
var childen = div.getChildren();
|
|
|
|
for (i = 0; i < childen.length; i++) {
|
|
|
|
if ($(childen[i]).get('bbTag')) {
|
|
|
|
$(childen[i]).addEvent('click', call);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* F�gt einen ausgew�hlten Tag in die
|
|
|
|
* Textarea ein
|
|
|
|
*
|
|
|
|
* @param Object
|
|
|
|
*/
|
|
|
|
insertTag: function(Event) {
|
|
|
|
this.hidePreview();
|
|
|
|
var link = $(Event.target.parentNode);
|
|
|
|
var tag = link.get('bbTag');
|
|
|
|
|
|
|
|
switch (link.get('bbType')) {
|
|
|
|
//double tag
|
|
|
|
case 'd':
|
|
|
|
this.textArea.insertAroundCursor({before: '[' + tag + ']', after: '[/' + tag + ']'});
|
|
|
|
break;
|
|
|
|
//smilie
|
|
|
|
case 's':
|
|
|
|
this.textArea.insertAtCursor(tag, false);
|
|
|
|
break;
|
|
|
|
//once
|
|
|
|
case 'o':
|
|
|
|
this.textArea.insertAtCursor('[' + link.get('bbTag') + ']', false);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Zeigt ein Unterfenster der Toolbar
|
|
|
|
* an
|
|
|
|
*
|
|
|
|
* @param Object
|
|
|
|
*/
|
|
|
|
showToolbarWindow: function(Event) {
|
|
|
|
var targetDiv = Event.target.parentNode;
|
|
|
|
var window = $(this.id + '_' + targetDiv.get('bbWin'));
|
|
|
|
|
|
|
|
var show = true;
|
|
|
|
if (window.getStyle('display') == 'block') {
|
|
|
|
show = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
this.hideToolbarWindow();
|
|
|
|
|
|
|
|
if (show) {
|
|
|
|
window.fade('hide').fade('in');
|
|
|
|
window.setStyle('display', 'block');
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Versteckt die Fenster der Toolbar
|
|
|
|
*
|
|
|
|
* @param Object
|
|
|
|
*/
|
|
|
|
hideToolbarWindow: function() {
|
|
|
|
var childen = $(this.id + '_toolbarWindows').getChildren();
|
|
|
|
for (i = 0; i < childen.length; i++) {
|
|
|
|
$(childen[i]).setStyle('display', 'none');
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Holt die Vorschau vom Server
|
|
|
|
*
|
|
|
|
* @param Object
|
|
|
|
*/
|
|
|
|
fetchPreview: function(Event) {
|
|
|
|
if (this.textArea.getStyle('display') == 'none' || this.textArea.value.length < 1) {
|
|
|
|
this.hidePreview();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonRequest = new Request.JSON({
|
|
|
|
method: 'post',
|
|
|
|
url: 'ajax.php?f=bb',
|
|
|
|
data:
|
|
|
|
{
|
|
|
|
nl2br: 1,
|
|
|
|
target: this.id,
|
|
|
|
text: this.textArea.value
|
|
|
|
},
|
|
|
|
onSuccess: this.showPreview
|
|
|
|
});
|
|
|
|
jsonRequest.post();
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Zeigt die Vorschau
|
|
|
|
*
|
|
|
|
* @param string textAreaId
|
|
|
|
*/
|
|
|
|
showPreview: function(data) {
|
|
|
|
if (data && data.error == true) {
|
|
|
|
alert(data.errorMsg);
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
this.preview.innerHTML = this.textArea.value;
|
|
|
|
this.preview.setStyle('display','block');
|
|
|
|
this.textArea.setStyle('display','none');
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Versteckt die Vorschau
|
|
|
|
*
|
|
|
|
* @param string textAreaId
|
|
|
|
*/
|
|
|
|
hidePreview: function() {
|
|
|
|
this.preview.setStyle('display','none');
|
|
|
|
this.textArea.setStyle('display','inline');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var attackSysbolState = new Array();
|
|
|
|
|
|
|
|
function getAttackSymbolState(id)
|
|
|
|
{
|
|
|
|
var state = attackSysbolState[id];
|
|
|
|
|
|
|
|
if (!state)
|
|
|
|
{
|
|
|
|
state = new Object();
|
|
|
|
|
|
|
|
var type = 0;
|
|
|
|
|
|
|
|
var imgClass = $('markSybol_'+id).get('class');
|
|
|
|
|
|
|
|
var color = imgClass.substr(imgClass.lastIndexOf('_')+1, 11);
|
|
|
|
|
|
|
|
switch (color)
|
|
|
|
{
|
|
|
|
case 'green':
|
|
|
|
type = 1;
|
|
|
|
break;
|
|
|
|
case 'yellow':
|
|
|
|
type = 2;
|
|
|
|
break;
|
|
|
|
case 'red':
|
|
|
|
type = 3;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
type = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
state.type = type;
|
|
|
|
state.oldType = type;
|
|
|
|
|
|
|
|
|
|
|
|
attackSysbolState[id] = state;
|
|
|
|
}
|
|
|
|
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
|
|
|
|
function drawAttackSymbol(id)
|
|
|
|
{
|
|
|
|
var state = getAttackSymbolState(id);
|
|
|
|
|
|
|
|
if (state.type == 4)
|
|
|
|
{
|
|
|
|
state.type = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (state.type)
|
|
|
|
{
|
|
|
|
case 1:
|
|
|
|
img = 'img/green.gif';
|
|
|
|
color = 'green';
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
img = 'img/yellow.gif';
|
|
|
|
color = 'yellow';
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
img = 'img/red.gif';
|
|
|
|
color = 'red';
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
img = 'img/grey.gif';
|
|
|
|
color = 'grey';
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
$('markSybol_'+id).set('class', 'attack_symbol_'+color);
|
|
|
|
}
|
|
|
|
|
|
|
|
function markAttackSymbol(id)
|
|
|
|
{
|
|
|
|
|
|
|
|
var state = getAttackSymbolState(id);
|
|
|
|
state.type ++ ;
|
|
|
|
|
|
|
|
drawAttackSymbol(id);
|
|
|
|
|
|
|
|
if (state.isSaving != true)
|
|
|
|
{
|
|
|
|
state.isSaving = true;
|
|
|
|
|
|
|
|
(function()
|
|
|
|
{
|
|
|
|
if (state.type != state.oldType)
|
|
|
|
{
|
|
|
|
var jsonRequest = new Request.JSON(
|
|
|
|
{
|
|
|
|
method: 'post',
|
|
|
|
url: 'ajax.php?f=vp&id='+id+'&state='+state.type,
|
|
|
|
onSuccess: function(data)
|
|
|
|
{
|
|
|
|
var state = getAttackSymbolState(data.id);
|
|
|
|
|
|
|
|
state.isSaving = false;
|
|
|
|
|
|
|
|
state.type = data.type;
|
|
|
|
state.oldType = data.type;
|
|
|
|
|
|
|
|
drawAttackSymbol(data.id);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
jsonRequest.post();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
state.isSaving = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}).delay(1000);
|
|
|
|
}
|
|
|
|
|
|
|
|
} |