496 lines
14 KiB
JavaScript
496 lines
14 KiB
JavaScript
var cfg = {
|
||
'host':'new.capitalcity.old-dark.ru',
|
||
'img':'new.capitalcity.old-dark.ru/static/'
|
||
};
|
||
|
||
var GameEngine = {
|
||
|
||
start:function() {
|
||
ReLine.start();
|
||
ReLine.rebase();
|
||
|
||
chat.refleshChat(false);
|
||
chat.refleshSmiles();
|
||
|
||
this.actionSecondStart();
|
||
|
||
this.timeStempReflesh();
|
||
|
||
/* онлайн меню */
|
||
this.onlinebtn('Локация');
|
||
this.onlinebtn('Друзья');
|
||
this.onlinebtn('Модераторы');
|
||
this.onlinebtn('Дилеры');
|
||
|
||
//mod.start();
|
||
|
||
$('#preloader').remove();
|
||
},
|
||
hasFlashVar:'none',
|
||
hasFlash:function() {
|
||
if(this.hasFlashVar == 'none') {
|
||
this.hasFlashVar = (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
|
||
}
|
||
return this.hasFlashVar;
|
||
},
|
||
ch10:function(v) {
|
||
if( v == 'checked' ) {
|
||
return 1;
|
||
}else{
|
||
return 0;
|
||
}
|
||
},
|
||
timeStempReflesh:function() {
|
||
|
||
if( this.hasFlash() ) {
|
||
$('#timeStemp').html(
|
||
'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="70" height="25">'+
|
||
'<param name="movie" value="http://' + cfg.host + '/static/flash/clock.swf?hours=' + this.data('H') + '&minutes=' + this.data('i') + '&sec=' + this.data('s') + '">'+
|
||
'<param name="quality" value="high">'+
|
||
'<embed src="http://' + cfg.host + '/static/flash/clock.swf?hours=' + this.data('H') + '&minutes=' + this.data('i') + '&sec=' + this.data('s') + '" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="70" height="25"></embed>'+
|
||
'</object>'
|
||
);
|
||
}else{
|
||
$('#timeStemp').html('').css('display','none');
|
||
}
|
||
},
|
||
onlinebtnsel:function(id) {
|
||
var i = 1;
|
||
while(i <= this.onbtn_id) {
|
||
$('#onbtn_'+i).removeClass('onbtn_1');
|
||
$('#onbtn_'+i).removeClass('onbtn_2');
|
||
$('#onbtn_'+i).removeClass('onbtn_3');
|
||
$('#onbtn_'+i).addClass('onbtn_2');
|
||
i++;
|
||
}
|
||
$('#onbtn_'+id).removeClass('onbtn_2');
|
||
$('#onbtn_'+id).addClass('onbtn_1');
|
||
},
|
||
onbtn_id:0,
|
||
onlinebtn:function(title) {
|
||
this.onbtn_id++;
|
||
var stl = 1;
|
||
if(this.onbtn_id > 1) {
|
||
stl = 2;
|
||
}
|
||
var html = '<span id="onbtn_' + this.onbtn_id + '" onclick="GameEngine.onlinebtnsel('+this.onbtn_id+')" class="onbtn_' + stl + '" title="' + title + '">'+
|
||
'<img src="http://' + cfg.img + 'images/oico' + this.onbtn_id + '.png" width="38" height="29">' +
|
||
'</span>';
|
||
$('#omnav').html( $('#omnav').html() + html );
|
||
},
|
||
actSec:[false, 0, 'stop', 0, {}],
|
||
addAction:function( name, value, timeDelete ) {
|
||
this.actSec[4][name] = value;
|
||
|
||
if(timeDelete > 0) {
|
||
setTimeout(function(){ GameEngine.deleteAction(name); },1000*timeDelete);
|
||
}
|
||
},
|
||
deleteAction:function( name ) {
|
||
delete this.actSec[4][name];
|
||
},
|
||
tnln:function(n,t) {
|
||
if(t == true) {
|
||
return '<span class="rstmn rstmn'+n+'"></span>';
|
||
}else{
|
||
return '<small>' + n + '</small>';
|
||
}
|
||
},
|
||
timeNowLook:function() {
|
||
var html = '', rstime = '', rsmenu = '', rsh = '', rsm = '', rss = '';
|
||
|
||
rsh = this.data('H');
|
||
if(rsh < 10) {
|
||
//rsh = [0,rsh];
|
||
}
|
||
|
||
rsm = this.data('i');
|
||
if(rsm < 10) {
|
||
//rsm = [0,rsm];
|
||
}
|
||
|
||
rss = this.data('s');
|
||
if(rss < 10) {
|
||
//rss = [0,rss];
|
||
}
|
||
|
||
rsh = this.tnln(rsh[0],true) + '' + this.tnln(rsh[1],true);
|
||
rsm = this.tnln(rsm[0],true) + '' + this.tnln(rsm[1],true);
|
||
rss = this.tnln(rss[0],false) + '' + this.tnln(rss[1],false);
|
||
|
||
rstime = '<span class="rstm">' + rsh + '<span class="rstmn rstmnrz"></span>' + rsm + '</span><span class="rstmsec">' + rss + '</span>';
|
||
|
||
rsmenu = '<div class="rsmn" align="center"><font color="red">server</font> time</div>';
|
||
|
||
html = '<table class="rsTimeNow" width="70" height="25" border="0" cellspacing="0" cellpadding="0">'+
|
||
'<tr>'+
|
||
'<td>'+
|
||
'<table width="70" border="0" cellspacing="0" cellpadding="0">'+
|
||
'<tr>'+
|
||
'<td height="20" align="left">'+
|
||
rstime+
|
||
'</td>'+
|
||
'</tr>'+
|
||
'<tr>'+
|
||
'<td height="5">'+
|
||
rsmenu+
|
||
'</td>'+
|
||
'</tr>'+
|
||
'</table>'+
|
||
'</td>'+
|
||
'</tr>'+
|
||
'</table>';
|
||
$('#timeNowLook').html( html );
|
||
setTimeout('GameEngine.timeNowLook()',500);
|
||
},
|
||
actSecTimer:null,
|
||
actionSecondStart:function() {
|
||
//window.ref = setInterval(function(){ GameEngine.actionSecond('second'); },1000);
|
||
/*$(window).everyTime(1000, 'timerAction', function(i) {
|
||
GameEngine.actionSecond('second');
|
||
});*/
|
||
},
|
||
actionSecond:function(type) {
|
||
//clearInterval(window.ref);
|
||
if( type != 'stop' && type != 'pause' ) {
|
||
|
||
//Выполняем действия каждую секунду
|
||
var i = 0;
|
||
var widthRange = {'test':'test2','test3':4}; //массив
|
||
for (var key in this.actSec[4]) {
|
||
if (key === 'length' || !this.actSec[4].hasOwnProperty(key)) continue;
|
||
|
||
var value = this.actSec[4][key];
|
||
value();
|
||
//eval( value );
|
||
|
||
}
|
||
|
||
delete key;
|
||
delete value;
|
||
|
||
}
|
||
if( ( type == 'stop' || type == 'start' || type == 'pause' ) && this.actSec[2] != type ) {
|
||
this.actSec[2] = type;
|
||
}
|
||
//this.actionSecondStart();
|
||
},
|
||
error:function(v) {
|
||
/*
|
||
Функция вывода ошибок
|
||
*/
|
||
alert(v);
|
||
},
|
||
c:function(v) {
|
||
/*
|
||
мини-вариант функции this.console
|
||
*/
|
||
this.console(v);
|
||
},
|
||
console:function(v) {
|
||
/*
|
||
Добавление данных в консоль
|
||
*/
|
||
date = new Date();
|
||
console.log("["+date.getHours()+':'+date.getMinutes()+':'+date.getSeconds()+"] "+v);
|
||
},
|
||
fm:function( v , e) {
|
||
|
||
if (!e) e = window.event;
|
||
|
||
if( v == 'onclick' ) {
|
||
|
||
if( chat.context_open == true ) {
|
||
chat.contextmenu_close();
|
||
}
|
||
|
||
if( chat.context_global_open == true ) {
|
||
chat.contextmenu_global_close();
|
||
}
|
||
|
||
}else if( v == 'contextmenu' ) {
|
||
|
||
if( chat.context_open == true ) {
|
||
//chat.contextmenu_close();
|
||
}
|
||
if( chat.context_global_open == true ) {
|
||
//chat.contextmenu_global_close();
|
||
}
|
||
|
||
}else if( v == 'contextmenu_main' || v == 'contextmenu_chat' || v == 'contextmenu_online' ) {
|
||
v = v.replace('contextmenu_','');
|
||
chat.contextMenuGlobal( v , e);
|
||
}
|
||
},
|
||
merge_arrays:function(arr) {
|
||
var merged_array = arr;
|
||
for (var i = 1; i < arguments.length; i++) {
|
||
merged_array = merged_array.concat(arguments[i]);
|
||
}
|
||
return merged_array;
|
||
},
|
||
post_date:['',{},0],
|
||
post:function(date, only) {
|
||
//Какое-то обновление информации :)
|
||
if( only == null ) {
|
||
var arr = [
|
||
'',
|
||
$.extend(date[1],this.post_date[1]),
|
||
function(data) {
|
||
if(typeof(date[2])=='string') {
|
||
//eval(date[2]+'(data)');
|
||
eval('GameEngine.post_back(data,"'+date[2]+'",false)');
|
||
if( GameEngine.post_date[2] != 0 ) {
|
||
//eval(GameEngine.post_date[2]+'(data)');
|
||
eval('GameEngine.post_back(data,"'+GameEngine.post_date[2]+'",false)');
|
||
}
|
||
}else{
|
||
//eval(date[2][0]);
|
||
eval('GameEngine.post_back(data,\''+date[2][0]+'\',true)');
|
||
}
|
||
}
|
||
];
|
||
}else{
|
||
var arr = ['',date[1],date[2]];
|
||
}
|
||
|
||
//Параметры версий
|
||
if( !arr[1]['version'] ) {
|
||
arr[1]['version'] = this.version();
|
||
}else if( arr[1]['version'] == 'delete' ) {
|
||
delete arr[1]['version'];
|
||
}
|
||
|
||
$.post(date[0],arr[1],arr[2]);
|
||
this.post_date = ['',{},0];
|
||
},
|
||
core:function(data) {
|
||
//Обработка событий ядра
|
||
},
|
||
post_back:function(data,fx,cl) {
|
||
|
||
if( typeof(data) == 'string' ) {
|
||
da = $.parseJSON( data );
|
||
//Проводим операции
|
||
if( da['core'] != undefined) {
|
||
this.core(da['core']);
|
||
if( da['core']['back_arr'] == true ) {
|
||
//Возвращаем массив
|
||
data = '[' + this.to_array( da ) + ']';
|
||
}
|
||
}
|
||
delete da;
|
||
}
|
||
if( cl == false ) {
|
||
eval(fx+'(data)');
|
||
}else{
|
||
eval(fx);
|
||
}
|
||
},
|
||
to_array:function (obj) {
|
||
var arr = [];
|
||
|
||
var i = 0;
|
||
while( i > -1 ) {
|
||
if(obj[i] == undefined) {
|
||
i = -2;
|
||
}else{
|
||
//arr += '['+obj[i]+'],';
|
||
if(typeof(obj[i]) == 'number') {
|
||
arr[i] = obj[i];
|
||
}else{
|
||
arr[i] = '['+obj[i]+']';
|
||
}
|
||
}
|
||
i++;
|
||
}
|
||
|
||
//arr = arr.substring(0, arr.length - 1);
|
||
|
||
return arr;
|
||
},
|
||
trim:function(s) {
|
||
return this.rtrim(this.ltrim(s));
|
||
},
|
||
ltrim:function(s) {
|
||
return s.replace(/^\s+/, '');
|
||
},
|
||
rtrim:function(s) {
|
||
return s.replace(/\s+$/, '');
|
||
},
|
||
str_replace:function ( search, replace, subject ) {
|
||
if(!(replace instanceof Array)){
|
||
replace=new Array(replace);
|
||
if(search instanceof Array){
|
||
while(search.length>replace.length){
|
||
replace[replace.length]=replace[0];
|
||
}
|
||
}
|
||
}
|
||
if(!(search instanceof Array))search=new Array(search);
|
||
while(search.length>replace.length){
|
||
replace[replace.length]='';
|
||
}
|
||
if(subject instanceof Array){
|
||
for(k in subject){
|
||
subject[k]=str_replace(search,replace,subject[k]);
|
||
}
|
||
return subject;
|
||
}
|
||
for(var k=0; k<search.length; k++){
|
||
var i = subject.indexOf(search[k]);
|
||
while(i>-1){
|
||
subject = subject.replace(search[k], replace[k]);
|
||
i = subject.indexOf(search[k],i);
|
||
}
|
||
}
|
||
return subject;
|
||
},
|
||
timeSdvig:0,
|
||
timeReson:0,
|
||
timeSd:function( time ) {
|
||
this.timeSdvig = this.timenow();
|
||
this.timeReson = time;
|
||
},
|
||
timenow:function(){
|
||
//return ( parseInt(new Date().getTime()/1000));
|
||
return parseInt( this.timeReson + ( parseInt(new Date().getTime()/1000) - this.timeSdvig ) );
|
||
},
|
||
px:function( v ) {
|
||
return parseInt( ( v ).replace( "px", "" ) );
|
||
},
|
||
divxyBanned:function( obj ) {
|
||
//Блокировка элемента, если он выходит за пределы окна обзора
|
||
var obj = $(obj);
|
||
var bnpx = [25,33,3,1];
|
||
//var win = this.getPageSize();
|
||
|
||
//По Y
|
||
if( obj.height() + this.px( obj.css('top') ) + bnpx[1] > $('#fm').height() ) {
|
||
obj.css({'top':( $('#fm').height() - bnpx[1] - obj.height() )+'px'});
|
||
}else if( this.px( obj.css('top') ) - bnpx[0] < 0 ) {
|
||
obj.css({'top':( bnpx[0] )+'px'});
|
||
}
|
||
|
||
//По X
|
||
if( obj.width() + this.px( obj.css('left') ) + bnpx[2] > $('#fm').width() ) {
|
||
obj.css({'left':( $('#fm').width() - bnpx[2] - obj.width() )+'px'});
|
||
}else if( this.px( obj.css('left') ) - bnpx[3] < 0 ) {
|
||
obj.css({'left':( bnpx[3] )+'px'});
|
||
}
|
||
},
|
||
getPageSize:function(){
|
||
var xScroll, yScroll;
|
||
|
||
if (window.innerHeight && window.scrollMaxY) {
|
||
xScroll = document.body.scrollWidth;
|
||
yScroll = window.innerHeight + window.scrollMaxY;
|
||
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
|
||
xScroll = document.body.scrollWidth;
|
||
yScroll = document.body.scrollHeight;
|
||
} else if (document.documentElement && document.documentElement.scrollHeight > document.documentElement.offsetHeight){ // Explorer 6 strict mode
|
||
xScroll = document.documentElement.scrollWidth;
|
||
yScroll = document.documentElement.scrollHeight;
|
||
} else { // Explorer Mac...would also work in Mozilla and Safari
|
||
xScroll = document.body.offsetWidth;
|
||
yScroll = document.body.offsetHeight;
|
||
}
|
||
|
||
var windowWidth, windowHeight;
|
||
if (self.innerHeight) { // all except Explorer
|
||
windowWidth = self.innerWidth;
|
||
windowHeight = self.innerHeight;
|
||
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
|
||
windowWidth = document.documentElement.clientWidth;
|
||
windowHeight = document.documentElement.clientHeight;
|
||
} else if (document.body) { // other Explorers
|
||
windowWidth = document.body.clientWidth;
|
||
windowHeight = document.body.clientHeight;
|
||
}
|
||
|
||
// for small pages with total height less then height of the viewport
|
||
if(yScroll < windowHeight){
|
||
pageHeight = windowHeight;
|
||
} else {
|
||
pageHeight = yScroll;
|
||
}
|
||
|
||
// for small pages with total width less then width of the viewport
|
||
if(xScroll < windowWidth){
|
||
pageWidth = windowWidth;
|
||
} else {
|
||
pageWidth = xScroll;
|
||
}
|
||
|
||
return [pageWidth,pageHeight,windowWidth,windowHeight];
|
||
},
|
||
data:function(format,UNIX_timestamp){
|
||
if(UNIX_timestamp == null) {
|
||
UNIX_timestamp = this.timenow();
|
||
}
|
||
var a = new Date(UNIX_timestamp*1000);
|
||
var months = ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];
|
||
var year = a.getFullYear();
|
||
var month = a.getMonth();
|
||
var date = a.getDay();
|
||
var hour = a.getHours();
|
||
var min = a.getMinutes();
|
||
var sec = a.getSeconds();
|
||
var time = format;
|
||
month += 1;
|
||
if(date < 10) {
|
||
date = '0'+date;
|
||
}
|
||
if(month < 10) {
|
||
month = '0'+month;
|
||
}
|
||
if(hour < 10) {
|
||
hour = '0'+hour;
|
||
}
|
||
if(min < 10) {
|
||
min = '0'+min;
|
||
}
|
||
if(sec < 10) {
|
||
sec = '0'+sec;
|
||
}
|
||
time = this.str_replace('d',''+date,time);
|
||
time = this.str_replace('m',''+month,time);
|
||
time = this.str_replace('Y',''+year,time);
|
||
time = this.str_replace('H',''+hour,time);
|
||
time = this.str_replace('i',''+min,time);
|
||
time = this.str_replace('s',''+sec,time);
|
||
return time;
|
||
},
|
||
loginLook:function(id,login,level,clan,align,type) {
|
||
var html = '';
|
||
|
||
if( type == 1 ) {
|
||
html = '<a class="cp">' + login + '</a>';
|
||
}else if( type == 2 ) {
|
||
html = '<b>' + login + '</b>';
|
||
}
|
||
|
||
html += ' [' + level + ']';
|
||
html += '<a target="_blank" title="Инф. о ' + login + '" href="http://' + cfg.host + '/userinfo/' + id + '"><img src="http://' + cfg.img + 'images/inf.gif" width="12" height="11"></a>';
|
||
|
||
return html;
|
||
}
|
||
};
|
||
|
||
function showtable(id) {
|
||
hidesel(id);
|
||
hidemenu(0);
|
||
document.getElementById('menu'+id).style.display = '';
|
||
}
|
||
|
||
function hidemenu (time) {
|
||
for (var i=1;i<=4;i++) {
|
||
document.getElementById('menu'+i).style.display = 'none';
|
||
}
|
||
}
|
||
|
||
function hidesel (id) {
|
||
for (var i=1;i<=5;i++) {
|
||
if (i!=id) {document.getElementById('el'+i).style.backgroundColor='';document.getElementById('el'+i).style.color='';}
|
||
}
|
||
} |