Участник:Тихмонатор Тестбот/common.js

Материал из Anekdot.me
Перейти к: навигация, поиск

Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
  • Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
  • Opera: Выберите очистку кэша в меню Инструменты → Настройки
function createMorphObjects() {
	var morphTargets = new Array(), morphLinks = new Array(), currentMorph = new Array();
 
	function morphHandler(cont, num) {
		return function() {
			currentMorph[cont].curr = num;
			var t = morphTargets[cont];
                        var l = morphLinks[cont];
			for(i in t) if(currentMorph[cont].ms != null) t[i].style.display = t[i].className.match(l[num].className.replace(/.*morphlink\s+morph(\S+).*/, '$1'))? "" : "none"; else t[i].style.display = i==num ? "" : "none";
			var h = currentMorph[cont].hilight, d = currentMorph[cont].defstyle;
			for(i in l) l[i].setAttribute('style', (i!=num)?d:h);
		};
	};
 
	function morphNext(cont) {
		return function() {
			var t = currentMorph[cont]; 
			morphHandler(cont, t.curr<(t.max-1)?t.curr+1:0)();
		}
	}
 
	function morphPrev(cont) {
		return function() {
			var t = currentMorph[cont]; 
			morphHandler(cont, t.curr>0?t.curr-1:t.max-1)();
		}
	}
 
	var morphContainers = document.querySelectorAll(".morphcontainer");
	for(var i = 0; i<morphContainers.length; i++) {
		var this_ = morphContainers[i];
		morphTargets[i] = {};
		morphLinks[i] = {};
 
		var isHover = this_.className.match(/\bhover\b/);
                var isManualsort = this_.className.match(/\bmanualsort\b/);
 
		var morphCs = this_.querySelectorAll(".morphcontent");
		var morphLs = this_.querySelectorAll(".morphlink");
		var h = this_.querySelector(".morphlink_hilight");
 
		h = h ? h.getAttribute('style') : "color:blue; text-decoration:underline; cursor: pointer;";
		var def = this_.querySelector(".morphlink_default");
		def = def ? def.getAttribute('style') : "color:blue; cursor: pointer;";
		currentMorph[i] = {max: morphLs.length, curr: 0, hilight: h, defstyle: def, ms: isManualsort};
 
		for(var m = 0; m<morphLs.length; m++) {
			morphLinks[i][m] = morphLs[m];
			$(morphLs[m]).on(isHover?'mouseover':'click',morphHandler(i, m));
                        morphLs[m].setAttribute('style', m?def:h);
		};
 
                for(var m = 0; m<morphCs.length; m++) {
			morphTargets[i][m] = morphCs[m];
                        if (isManualsort != null) morphCs[m].style.display = morphCs[m].className.match(morphLs[0].className.replace(/.*morphlink\s+morph(\S+).*/, '$1'))? "" : "none"; else morphCs[m].style.display = m ? "none" : "";
		};
 
		if (this_.querySelector(".morphprev")) $(this_.querySelector(".morphprev")).click(morphPrev(i));
		if (this_.querySelector(".morphnext")) $(this_.querySelector(".morphnext")).click(morphNext(i));
	}
}
 
$(createMorphObjects);