MediaWiki:Common.js — различия между версиями

Материал из War Thunder Wiki
Перейти к: навигация, поиск
Строка 469: Строка 469:
 
             }
 
             }
 
              
 
              
             jQuery.getScript( '/resources/three.min.js' ).done(function( script, textStatus ) {
+
             jQuery.getScript( '/index.php?title=MediaWiki:Panorama.js&action=raw&ctype=text/javascript' ).done(function( script, textStatus ) {
 
                 var input = document.createElement('input');
 
                 var input = document.createElement('input');
 
                 input.type = 'radio';
 
                 input.type = 'radio';

Версия 14:03, 23 октября 2020

/* Код открытия внешних ссылок в новой вкладке */
function externalLinks() {
    var links = document.getElementsByTagName('a');
    for (var i = 0; i < links.length; i++) {
        var a = new RegExp('/' + window.location.host + '/');
        if( !a.test(links[i].href) && links[i].href != '' ) {
            links[i].onclick = function(e) {
                e.preventDefault();
                e.stopPropagation();
                window.open(e.target.href, '_blank');
            };
        }
    }
}

function addSymbols() {
    if( $( '#wpTextbox1' )[0] ) {
        setTimeout(function(){
            $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
                'section': 'characters',
                'page': 'symbols',
                'characters': [ '▀', '▂', '▅', '▃', '▄', '␠', '', '⋠', '␗' ]
            });
        }, 500);
    }
}

/* Код получения cookie */
function getCookie(name) {
	var matches = document.cookie.match(new RegExp(
		"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	));
	return matches ? decodeURIComponent(matches[1]) : undefined;
}

function ttxZebra() {
	$('.ttx-table-line:nth-child(odd)').css('background-color', 'inherit');

	count = 0;

	$('.ttx-table-line').each(function(){
		if (!($(this).hasClass("ttx-collapsed"))){
			if (count % 2 == 0) {
				$(this).css('background-color','#DBE0E2');
			} else {
				$(this).css('background-color','inherit');
			}
			count++;
		}
	});
}

/* Код смены режима для карточек ТТХ */
function ttxSwichMode() {
    $(document).ready(function(){
		$('.ttx-unvisible').css('display','none');
		$('#ttx-rb-button').css('background-color','#263238').css('color','#EEEEEE');
		$('.ttx-ab, .ttx-sb').css('display','none');
		ttxZebra();
		var cookie = getCookie("ttxMode");
		if (cookie != undefined && navigator.cookieEnabled){
			switch (cookie) {
				case "ab":
					$('#ttx-ab-button').css('background-color','#263238').css('color','#EEEEEE');
					$('#ttx-rb-button, #ttx-sb-button').removeAttr("style");
					$('.ttx-not-ab').addClass('ttx-collapsed');
					$('.ttx-rb, .ttx-sb').css('display','none');
					$('.ttx-ab').css('display','');
					break;
				case "rb":
					$('#ttx-rb-button').css('background-color','#263238').css('color','#EEEEEE');
					$('#ttx-ab-button, #ttx-sb-button').removeAttr("style");
					$('.ttx-not-ab').removeClass('ttx-collapsed');
					$('.ttx-ab, .ttx-sb').css('display','none');
					$('.ttx-rb').css('display','');
					break;
				case "sb":
					$('#ttx-sb-button').css('background-color','#263238').css('color','#EEEEEE');
					$('#ttx-ab-button, #ttx-rb-button').removeAttr("style");
					$('.ttx-not-ab').removeClass('ttx-collapsed');
					$('.ttx-ab, .ttx-rb').css('display','none');
					$('.ttx-sb').css('display','');
					break;
			}
			ttxZebra();
		}
        $('.ttx-switch-mode-button').click(function() {
            switch ($(this).attr('id')) {
			  case "ttx-ab-button":
				$('#ttx-ab-button').css('background-color','#263238').css('color','#EEEEEE');
				$('#ttx-rb-button, #ttx-sb-button').removeAttr("style");
				$('.ttx-not-ab').addClass('ttx-collapsed');
				$('.ttx-ab').css('display','');
				$('.ttx-rb, .ttx-sb').css('display','none');
				document.cookie = "ttxMode=ab; path=/; expires=0";
				break;
			  case "ttx-rb-button":
				$('#ttx-rb-button').css('background-color','#263238').css('color','#EEEEEE');
				$('#ttx-ab-button, #ttx-sb-button').removeAttr("style");
				$('.ttx-not-ab').removeClass('ttx-collapsed');
				$('.ttx-rb').css('display','');
				$('.ttx-ab, .ttx-sb').css('display','none');
				document.cookie = "ttxMode=rb; path=/; expires=0";
				break;
			  case "ttx-sb-button":
				$('#ttx-sb-button').css('background-color','#263238').css('color','#EEEEEE');
				$('#ttx-ab-button, #ttx-rb-button').removeAttr("style");
				$('.ttx-not-ab').removeClass('ttx-collapsed');
				$('.ttx-sb').css('display','');
				$('.ttx-ab, .ttx-rb').css('display','none');
				document.cookie = "ttxMode=sb; path=/; expires=0";
				break;
			}
			ttxZebra();
        });
    });
}


/* Код разворачивающихся блоков ТТХ */
function ttxCollapseBlock(){
	$(document).ready(function(){
		$('.ttx-table-collapse').addClass('ttx-collapsed');
		ttxZebra();
		$('#ttx-short').css('background-color','#263238').css('color','#EEEEEE');
		var cookie = getCookie("ttxCollapsed");
		if (cookie != undefined && navigator.cookieEnabled){
			if (cookie == 0){
				$('.ttx-table-collapse').addClass('ttx-collapsed');
				$('#ttx-short').css('background-color','#263238').css('color','#EEEEEE');
				$('#ttx-detail').removeAttr("style");
			} else {
				$('.ttx-table-collapse').removeClass('ttx-collapsed');
				$('#ttx-detail').css('background-color','#263238').css('color','#EEEEEE');
				$('#ttx-short').removeAttr("style");
			}
			ttxZebra();
		}
		$('.ttx-switch-size-button').click(function() {
			switch ($(this).attr('id')) {
			  case "ttx-short":
				$('.ttx-table-collapse').addClass('ttx-collapsed');
				$('#ttx-short').css('background-color','#263238').css('color','#EEEEEE');
				$('#ttx-detail').removeAttr("style");
				document.cookie = "ttxCollapsed=0; path=/; expires=0";
				break;
			  case "ttx-detail":
				$('.ttx-table-collapse').removeClass('ttx-collapsed');
				$('#ttx-detail').css('background-color','#263238').css('color','#EEEEEE');
				$('#ttx-short').removeAttr("style");
				document.cookie = "ttxCollapsed=1; path=/; expires=0";
				break;
			}
			ttxZebra();
		});
	});
}

/* Код кнопки "Купить" ТТХ карточек */
function ttxBuyButton() {
	var logout = document.getElementById('pt-logout');
	var el = document.getElementsByClassName("ttx-buy-button");
    for (var i = 0; i < el.length; i++){
        var link = el[i].getAttribute('data-title');
        el[i].setAttribute('onclick', "if(typeof yaCounter48855122 != 'undefined'){yaCounter48855122.reachGoal('BUY_BUTTON',{URL:document.location.href});}window.open ('" + link + "');return true;");
    }
}

/* Код кнопки "Найти на бирже" ТТХ карточек */
function ttxMarketButton() {
	var el = document.getElementsByClassName("ttx-marketplace-button");
	var i;
	for (i = 0; i < el.length; i++){
		var link = el[i].getAttribute('data-title');
		el[i].setAttribute('onclick', "if(typeof yaCounter48855122 != 'undefined'){yaCounter48855122.reachGoal('MARKET_BUTTON',{URL:document.location.href});}window.open ('" + link + "');return true;");
	}
}

/* Код веток техники */
function treeGroup() {
    document.querySelectorAll('.tree-group-collapse').forEach( function(item, i, arr) {
        item.style = 'position: absolute; max-height: 0;';
    });
    var hideAll = function() {
        document.querySelectorAll('.tree-group-collapse.open').forEach( function(item, i, arr) {
            item.classList.remove('open');
        });
    }
    document.querySelectorAll('.tree-group').forEach( function(item, i, arr) {
        item.onclick = function( e ) {
            hideAll();
            e.target.previousElementSibling.classList.add('open');
            e.stopPropagation();
        }
    });
    document.getElementsByTagName('body')[0].addEventListener('click', function( e ) {
        if (event.target.className != 'tree-item-js')
            hideAll();
    });
}

/* Код просмоторщика панорам */
var panorama, viewer;
function ttxCockpit() {
    function onProgress ( event ) {
        progress = event.progress.loaded / event.progress.total * 100;
        document.getElementById('ttx-panorama-loading-progress-line').style.width = progress + '%';
        if ( progress == 100 ) {
            document.getElementById('ttx-panorama-container').style.opacity = '1';
        }
    }
    
    var cockpitBtn = document.querySelector(".ttx-cockpit");
    if ( cockpitBtn === null ) return;
    
    mw.loader.load( '/index.php?title=MediaWiki:Panorama.js&action=raw&ctype=text/javascript' );
    cockpitBtn.onclick = function( e ) {          
        if (typeof yaCounter48855122 != 'undefined') {
            yaCounter48855122.reachGoal('COCKPIT_BUTTON',{URL:document.location.href});
        }
        
        var cockpitPopup = document.getElementById('ttx-popup');
        if ( cockpitPopup === null ) {
            var functionClose = function() {
                $('#ttx-popup').animate({opacity: 0}, 200, function(){ 
                    $('#ttx-popup').css('display', 'none');
                    $('#ttx-popup-close').css('display', 'none');
                    $('#ttx-popup-background').fadeOut(400);
                });
            }
            
            var cockpitImage = document.querySelector(".ttx-cockpit").getAttribute('data-image');
            
            cockpitPopup = document.createElement('div');
            cockpitPopup.id = 'ttx-popup';
            cockpitPopup.style.cssText = 'display:none;';
            
            cockpitPopupClose = document.createElement('span');
            cockpitPopupClose.id = 'ttx-popup-close';
            cockpitPopupClose.innerHTML = '✖';
            cockpitPopupClose.onclick = functionClose;
            cockpitPopupClose.style.cssText = 'display:none;';
            
            cockpitPopupBackground = document.createElement('div');
            cockpitPopupBackground.id = 'ttx-popup-background';
            cockpitPopupBackground.onclick = functionClose;
            cockpitPopupBackground.style.cssText = 'display:none;';
            
            cockpitPanoramaContainer = document.createElement('div');
            cockpitPanoramaContainer.id = 'ttx-panorama-container';
            cockpitPanoramaContainer.style.opacity = '0';
            
            cockpitPanoramaLoading = document.createElement('div');
            cockpitPanoramaLoading.id = 'ttx-panorama-loading';
            
            cockpitPanoramaLoadingText = document.createElement('span');
            cockpitPanoramaLoadingText.id = 'ttx-panorama-loading-text';
            cockpitPanoramaLoadingText.innerHTML = 'ЗАГРУЗКА...';
            
            cockpitPanoramaLoadingProgress = document.createElement('div');
            cockpitPanoramaLoadingProgress.id = 'ttx-panorama-loading-progress';
            
            cockpitPanoramaLoadingProgressLine = document.createElement('div');
            cockpitPanoramaLoadingProgressLine.id = 'ttx-panorama-loading-progress-line';
            
            cockpitPanoramaLoadingProgress.appendChild(cockpitPanoramaLoadingProgressLine);
            cockpitPanoramaLoading.appendChild(cockpitPanoramaLoadingText);
            cockpitPanoramaLoading.appendChild(cockpitPanoramaLoadingProgress);
            cockpitPopup.appendChild(cockpitPanoramaContainer);
            cockpitPopup.appendChild(cockpitPanoramaLoading);
            document.querySelector(".content-area").appendChild(cockpitPopup);
            document.querySelector(".content-area").appendChild(cockpitPopupClose);
            document.querySelector(".content-area").appendChild(cockpitPopupBackground);
        }
        
        $('#ttx-popup-background').fadeIn(400, function(){
            $('#ttx-popup').css('display', 'block').animate({opacity: 1}, 200);
            $('#ttx-popup-close').css('display', 'block').animate({opacity: 1}, 200);
            
            if (typeof panorama === 'undefined') {
                panorama = new PANOLENS.ImagePanorama( cockpitImage );
                panorama.addEventListener( 'progress', onProgress );
                viewer = new PANOLENS.Viewer({
                    container: document.getElementById('ttx-panorama-container')
                });
                viewer.add( panorama );
                viewer.tweenControlCenter( new THREE.Vector3(25000.0, 1000, 0), 0 );
            }
        });
    }
}

function gun_go() {
	var kfbr = 1900;
	var caliber = Number( document.getElementById('gun_caliber').value );
	var mass = Number( document.getElementById('gun_mass').value );
	var speed = Number( document.getElementById('gun_speed').value );
	var tnt = Number( document.getElementById('gun_tnt').value );
	var apcbc = document.getElementById('gun_APCBC').checked;
	
	tnt = ( tnt / mass ) * 100;
	
	var kf_apcbc = ( apcbc ) ? 1 : 0.9;
	
	if ( tnt < 0.65 ) {
		knap = 1;
	} else if ( tnt < 1.6 ) {
		knap = 1 + ( tnt - 0.65 ) * ( 0.93 - 1 ) / ( 1.6 - 0.65 );
	} else if ( tnt < 2 ) {
		knap = 0.93 + ( tnt - 1.6 ) * ( 0.9 - 0.93 ) / ( 2 - 1.6 );
	} else if ( tnt < 3 ) {
		knap = 0.9 + ( tnt - 2 ) * ( 0.85 - 0.9 ) / ( 3 - 2 );
	} else if ( tnt < 4 ) {
		knap = 0.85 + ( tnt - 3 ) * ( 0.75 - 0.85 ) / ( 4 - 3 );
	} else {
		knap = 0.75;
	}
	
	document.getElementById('gun_rezult').value = ( ( ( Math.pow( speed , 1.43 ) * Math.pow( mass , 0.71 ) ) / ( Math.pow( kfbr , 1.43 ) * Math.pow( caliber / 100 , 1.07 ) ) ) * 100 * knap * kf_apcbc ).toFixed(2);
}

function gunHtml() {
if(document.getElementById('gun_test')){document.getElementById('gun_test').innerHTML = '<table cellpadding="5" style="border: 1px solid #a2a9b1;margin: 5px;width: 520px;"><tr><td style="width: 180px;">Калибр (мм):</td><td><input id="gun_caliber" type="number" style="width: 100px; height: 30px;" value="57"></td><td style="text-align: center;">Пробитие (мм):</td></tr><tr><td>Масса (кг):</td><td><input id="gun_mass" type="number" style="width: 100px; height: 30px;" value="3.14"></td><td rowspan="3"><input id="gun_rezult" type="text" style="width: 200px;height: 90px;border: 0;background: #f6f6f6;text-align: center;font-size: 40px;" disabled></td></tr><tr><td>Скорость (м/с):</td><td><input id="gun_speed" type="number" style="width: 100px; height: 30px;" value="990"></td></tr><tr><td>Масса ВВ (кг):</td><td><input id="gun_tnt" type="number" style="width: 100px; height: 30px;" value="0.1"></td></tr><tr><td><span title="Остроголовый снаряд с бронебойным наконечником и баллистическим колпачком" style="border-bottom: 1px dotted; cursor: help; white-space: nowrap">APCBC</span>:</td><td><input id="gun_APCBC" type="checkbox"></td><td><input id="gun_but" class="ttx-buy-button" type="button" value="РАССЧИТАТЬ" onclick="gun_go();" style="width: 200px; height: 30px;border:0;" value=""></td></tr></table>';}
}

function gun2_go() {
	var caliber = Number( document.getElementById('gun2_caliber').value );
	var shell_mass = Number( document.getElementById('gun2_shell_mass').value );
	var core_mass = Number( document.getElementById('gun2_core_mass').value );
	var speed = Number( document.getElementById('gun2_speed').value );
	
	var pallet_mass = shell_mass - core_mass;
	var kfbr = 3000;
	var part_pallet_mass = ( core_mass / shell_mass ) * 100;
	var kf_pallet_mass = ( part_pallet_mass > 36.0 ) ? 0.5 : 0.4;
	var calculated_mass = core_mass + ( kf_pallet_mass * pallet_mass );
	
	
	document.getElementById('gun2_rezult').value = ( ( Math.pow( speed , 1.43 ) * Math.pow( calculated_mass , 0.71 ) ) / ( Math.pow( kfbr , 1.43 ) * Math.pow( caliber / 10000 , 1.07 ) ) ).toFixed(2);
}

function gun2Html() {
if(document.getElementById('gun2_test')){document.getElementById('gun2_test').innerHTML = '<table cellpadding="5" style="border: 1px solid #a2a9b1;margin: 5px;width: 520px;"><tr><td>Калибр сердечника (мм):</td><td><input id="gun2_caliber" type="number" style="width: 100px; height: 30px;" value="28"></td><td style="text-align: center;">Пробитие (мм):</td></tr><tr><td>Масса снаряда (кг):</td><td><input id="gun2_shell_mass" type="number" style="width: 100px; height: 30px;" value="4.15"></td><td rowspan="2"><input id="gun2_rezult" type="text" style="width: 200px;height: 90px;border: 0;background: #f6f6f6;text-align: center;font-size: 40px;" disabled></td></tr><tr><td>Масса сердечника (кг):</td><td><input id="gun2_core_mass" type="number" style="width: 100px; height: 30px;" value="1.1"></td></tr><tr><td>Скорость (м/с):</td><td><input id="gun2_speed" type="number" style="width: 100px; height: 30px;" value="930"></td><td><input id="gun2_but" class="ttx-buy-button" type="button" value="РАССЧИТАТЬ" onclick="gun2_go();" style="width: 200px; height: 30px;border:0;" value=""></td></tr></table>';}
}

function gunHtmlEn() {
if(document.getElementById('gun_test_en')){document.getElementById('gun_test_en').innerHTML = '<table cellpadding="5" style="border: 1px solid #a2a9b1;margin: 5px;width: 520px;"><tr><td style="width: 180px;">Calibre (mm):</td><td><input id="gun_caliber" type="number" style="width: 100px; height: 30px;" value="57"></td><td style="text-align: center;">Armour piercing (mm):</td></tr><tr><td>Weight (kg):</td><td><input id="gun_mass" type="number" style="width: 100px; height: 30px;" value="3.14"></td><td rowspan="3"><input id="gun_rezult" type="text" style="width: 200px;height: 90px;border: 0;background: #f6f6f6;text-align: center;font-size: 40px;" disabled></td></tr><tr><td>Speed (m/s):</td><td><input id="gun_speed" type="number" style="width: 100px; height: 30px;" value="990"></td></tr><tr><td>Weight of explosive mass (kg):</td><td><input id="gun_tnt" type="number" style="width: 100px; height: 30px;" value="0.1"></td></tr><tr><td>APCBC:</td><td><input id="gun_APCBC" type="checkbox"></td><td><input id="gun_but" class="ttx-buy-button" type="button" value="CALCULATE" onclick="gun_go();" style="width: 200px; height: 30px;border:0;" value=""></td></tr></table>';}
}

function gun2HtmlEn() {
if(document.getElementById('gun2_test_en')){document.getElementById('gun2_test_en').innerHTML = '<table cellpadding="5" style="border: 1px solid #a2a9b1;margin: 5px;width: 520px;"><tr><td style="width: 180px;">Core Calibre (mm):</td><td><input id="gun2_caliber" type="number" style="width: 100px; height: 30px;" value="28"></td><td style="text-align: center;">Armour piercing (mm):</td></tr><tr><td>Shell mass (kg):</td><td><input id="gun2_shell_mass" type="number" style="width: 100px; height: 30px;" value="4.15"></td><td rowspan="2"><input id="gun2_rezult" type="text" style="width: 200px;height: 90px;border: 0;background: #f6f6f6;text-align: center;font-size: 40px;" disabled></td></tr><tr><td>Core weight (kg):</td><td><input id="gun2_core_mass" type="number" style="width: 100px; height: 30px;" value="1.1"></td></tr><tr><td>Speed (m/s):</td><td><input id="gun2_speed" type="number" style="width: 100px; height: 30px;" value="930"></td><td><input id="gun2_but" class="ttx-buy-button" type="button" value="CALCULATE" onclick="gun2_go();" style="width: 200px; height: 30px;border:0;" value=""></td></tr></table>';}
}

/* Код галереи камуфляжей */
function skinGallery() {
    var el = document.querySelectorAll(".skin_gallery .skin");
    for (var i = 0; i < el.length; i++) {
        var type = '';
        switch ( el[i].getAttribute('data-type') ) {
            case 'live':
                type = 'SKIN_LIVE';
                break;
            case 'market':
                type = 'SKIN_MARKET';
                break;
            default:
                continue;
        }
        var link = el[i].getAttribute('data-link');
        el[i].querySelector('.skin_img').setAttribute('onclick', "if(typeof yaCounter48855122 != 'undefined'){yaCounter48855122.reachGoal('" + type + "',{URL:document.location.href});}window.open('" + link + "');return true;");
    }
}

function ttxSlider() {
    if( document.querySelector( '.specs_card_main_slider' ) ) {
        var node = document.querySelector( '.specs_card_main_slider_container' );
        
        var imgArr = document.querySelectorAll( '.specs_card_main_slider_system div' );
        
        if ( imgArr.length < 1 ) {
            return;
        }
        
        var labels_container = document.createElement('div');
        labels_container.className = 'labels_container';
        
        var labels = document.createElement('div');
        labels.className = 'labels';
        
        var functionSelect = function(e) {
            document.querySelector('.specs_card_main_slider .labels label.checked').classList.remove('checked');
            var checked_id = document.querySelector('.specs_card_main_slider_container input:checked').id;
            document.querySelector('.specs_card_main_slider label[for=' + checked_id + ']').classList.add('checked');
        };
        
        var addLinkImg = function( elem, node, labelList, index ) {
            var input = document.createElement('input');
            input.type = 'radio';
            input.name = 'slider';
            input.id = 'slider_input_' + String(index);
            input.onchange = functionSelect;
            
            var img = document.createElement('div');
            img.className = 'slide';
            img.appendChild( elem );
            
            var label = document.createElement('label');
            label.htmlFor = 'slider_input_' + String(index);
            label.id = 'label_' + String(index);
            if ( labelList.childElementCount === 0 ) {
                label.className = 'checked';
                input.checked = true;
                input.autofocus = true;
            } else if ( labelList.childElementCount === 1 ) {
                label.className = 'checked';
                input.checked = true;
                input.autofocus = true;
                labelList.querySelector('#label_0').className = '';
            }


            node.appendChild(input);
            node.appendChild(img);
            
            labelList.appendChild(label);
        };
        
        var addImg = function( lnk, node, labelList, index ) {
            var input = document.createElement('input');
            input.type = 'radio';
            input.name = 'slider';
            input.id = 'slider_input_' + String(index);
            input.onchange = functionSelect;
            
            var img = document.createElement('div');
            img.style.backgroundImage = 'url(' + String(lnk)  + ')';
            img.className = 'slide';
            
            var label = document.createElement('label');
            label.htmlFor = 'slider_input_' + String(index);
            label.id = 'label_' + String(index);
            if ( labelList.childElementCount === 0 ) {
                label.className = 'checked';
                input.checked = true;
                input.autofocus = true;
            } else if ( labelList.childElementCount === 1 ) {
                label.className = 'checked';
                input.checked = true;
                input.autofocus = true;
                labelList.querySelector('#label_0').className = '';
            }


            node.appendChild(input);
            node.appendChild(img);
            
            labelList.appendChild(label);
        };
        
        var add360 = function( lnk, node, labelList, index ) {
            function onProgress ( event ) {
                console.log(event);
                /*progress = event.progress.loaded / event.progress.total * 100;
                document.getElementById('ttx-panorama-loading-progress-line').style.width = progress + '%';
                console.log(progress);
                if ( progress == 100 ) {
                    document.getElementById('ttx-panorama-container').style.opacity = '1';
                }*/
            }
            
            jQuery.getScript( '/index.php?title=MediaWiki:Panorama.js&action=raw&ctype=text/javascript' ).done(function( script, textStatus ) {
                var input = document.createElement('input');
                input.type = 'radio';
                input.name = 'slider';
                input.id = 'slider_input_' + String(index);
                if ( labelList.childElementCount === 0 ) {
                    input.checked = true;
                    input.autofocus = true;
                }
                input.onchange = functionSelect;
                
                var div = document.createElement('div');
                div.className = 'slide';
                
                var container360 = document.createElement('div');
                container360.style.width = '100%';
                container360.style.height = '100%';
                container360.id = 'ttx-panorama-container-' + String(index);
                container360.allowFullscreen = true;
                container360.frameBorder = '0';
                container360.setAttribute('mozallowfullscreen', true);
                container360.setAttribute('webkitallowfullscreen', true);
                
                div.appendChild(container360);
                
                var label = document.createElement('label');
                label.htmlFor = 'slider_input_' + String(index);
                label.id = 'label_' + String(index);
                label.className = 'label360';
                
                node.appendChild(input);
                node.appendChild(div);
                
                labelList.appendChild(label);
                
                var panorama, viewer;
                panorama = new PANOLENS.ImagePanorama( lnk );
                /*panorama.addEventListener( 'progress', onProgress );*/
                viewer = new PANOLENS.Viewer({
                    container: document.getElementById('ttx-panorama-container-' + String(index))
                });
                viewer.add( panorama );
                viewer.tweenControlCenter( new THREE.Vector3(25000.0, 1000, 0), 0 );
            });
        }
        
        for ( var i = 0; i < imgArr.length; i++ ) {
            var item = imgArr[i];
            
            if ( 
                item.childElementCount == 1
            ) {
                if ( 
                    item.children[0].tagName == 'IMG' &&
                    item.children[0].naturalWidth > 0
                ) {
                    addImg( item.children[0].src, node, labels, i );
                } else if (
                    item.children[0].tagName == 'A' &&
                    item.children[0].childElementCount == 1 &&
                    item.children[0].children[0].tagName == 'IMG' &&
                    item.children[0].children[0].naturalWidth > 0
                ) {
                    addLinkImg( item.children[0], node, labels, i );
                }
            } else {
                var match = item.innerText.match(/([a-z0-9]*)\:\/\/(.*)\n?/);
                var protocol = match[1];
                
                switch ( protocol ) {
                    case '360':
                        add360( match[2], node, labels, i );
                        break;
                }
            }
        }
        
        labels_container.appendChild( labels );
        
        node.appendChild( labels_container );
    }
}

/* Код кнопки "Купить" ТТХ карточек */
function ttxBuyButtonN() {
    var el = document.getElementsByClassName("general_info_buy_button");
    for (var i = 0; i < el.length; i++){
        var link = 'https://store.gaijin.net/story.php?id=' + el[i].getAttribute('data-link') + '&partner=Wiki&partner_val=lc9fhfph';
        el[i].setAttribute('onclick', "if(typeof yaCounter48855122 != 'undefined'){yaCounter48855122.reachGoal('BUY_BUTTON',{URL:document.location.href});}window.open('" + link + "');return true;");
    }
}

/* Код кнопки "Найти на бирже" ТТХ карточек */
function ttxMarketButtonN() {
    var el = document.getElementsByClassName("general_info_market_button");
    for (var i = 0; i < el.length; i++){
        var link = 'https://trade.gaijin.net/?n=' + el[i].getAttribute('data-link') + '&viewitem=&a=1067';
        el[i].setAttribute('onclick', "if(typeof yaCounter48855122 != 'undefined'){yaCounter48855122.reachGoal('MARKET_BUTTON',{URL:document.location.href});}window.open('" + link + "');return true;");
    }
}

function wikiSetup() {
    treeGroup();
    externalLinks();
    ttxSwichMode();
    ttxCollapseBlock();
    ttxBuyButton();
    ttxMarketButton();
    gunHtml();
    gun2Html();
    gunHtmlEn();
    gun2HtmlEn();
    addSymbols();
    ttxCockpit();
    skinGallery();
    ttxSlider();
    ttxBuyButtonN();
    ttxMarketButtonN();
}

if (document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive") {
    wikiSetup();
} else {
    document.addEventListener('DOMContentLoaded', wikiSetup);
}