game/head/ahtmlv.js
2023-01-10 18:30:35 +02:00

97 lines
6.1 KiB
JavaScript

var isAHTMLEditorMode;var msie=false;var opera=false;var msie7=false;var _domLoaded=[];function attachDomLoaded(f)
{_domLoaded.push(f);}
function detectClient()
{var userAgent=navigator.userAgent;msie=(userAgent.indexOf('MSIE')>0);opera=(navigator.appName=='Opera')||(userAgent.indexOf('Opera')>0);msie7=(userAgent.indexOf('MSIE 7.')>0);if(typeof(isAHTMLEditorMode)=='undefined')
{isAHTMLEditorMode=false;}}
detectClient();if(typeof HTMLElement!='undefined'&&!HTMLElement.prototype.insertAdjacentElement&&typeof window.Range!='undefined'&&typeof Range.prototype.createContextualFragment=='function')
{HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode)
{switch(where)
{case'beforeBegin':this.parentNode.insertBefore(parsedNode,this)
break;case'afterBegin':this.insertBefore(parsedNode,this.firstChild);break;case'beforeEnd':this.appendChild(parsedNode);break;case'afterEnd':if(this.nextSibling)
this.parentNode.insertBefore(parsedNode,this.nextSibling);else
this.parentNode.appendChild(parsedNode);break;}}
HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr)
{var r=this.ownerDocument.createRange();r.setStartBefore(this);var parsedHTML=r.createContextualFragment(htmlStr);this.insertAdjacentElement(where,parsedHTML)}
HTMLElement.prototype.insertAdjacentText=function(where,txtStr)
{var parsedText=document.createTextNode(txtStr)
this.insertAdjacentElement(where,parsedText)}}
function init(){if(arguments.callee.done)return;arguments.callee.done=true;if(_timer)clearInterval(_timer);for(var i=0;i<_domLoaded.length;i++)_domLoaded[i]();};if(document.addEventListener){document.addEventListener("DOMContentLoaded",init,false);}
if(/WebKit/i.test(navigator.userAgent)){var _timer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){init();}},10);}
window.onload=init;var hiddenTextIndex=0;var hiddenTexts=[];var tabsDivIndex=0;var tabsDivPrefix='$tabs$div$_';if(typeof(addEvent)=='undefined')
{function addEvent(elm,evType,fn,useCapture)
{if(elm.addEventListener)
{elm.addEventListener(evType,fn,useCapture);return true;}
else if(elm.attachEvent)
{var r=elm.attachEvent('on'+evType,fn);return r;}
else
{elm['on'+evType]=fn;}}}
function getHTextHtml(hti)
{var html=['<div><a class="blike" href="javascript:;" onclick="toggleHText(',hti,')">'];var ht=hiddenTexts[hti];if(ht.hidden)
{html.push('Показать</a></div>');}
else
{html.push('Скрыть</a></div>');html.push('<div style="padding: 2px;">');html.push(ht.data);html.push('</div>');}
return html.join('');}
function toggleHText(hti)
{var ht=hiddenTexts[hti];ht.hidden=!ht.hidden;ht.elt.innerHTML=getHTextHtml(hti);hideHTextsOf(ht.elt);rebuildTabsIn(ht.elt);}
function hideHText(e)
{hiddenTextIndex++;hiddenTexts[hiddenTextIndex]={hidden:true,elt:e,data:e.innerHTML};e.innerHTML=getHTextHtml(hiddenTextIndex);e.className='htext2';}
function getElementsByClass(searchClass,node,tag)
{var classElements=[];if(node==null)
node=document;if(tag==null)
tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");for(var i=0;i<elsLen;i++){if(pattern.test(els[i].className))
{classElements.push(els[i]);}}
return classElements;}
function getChildrenByTag(node,tag)
{var r=[];if(node==null)
node=document;if(tag==null)
tag='*';else
tag=tag.toLowerCase();var els=node.childNodes;var elsLen=els.length;for(var i=0;i<elsLen;i++){var e=els[i];if(e.nodeType==1&&(tag=='*'||e.tagName.toLowerCase()==tag))
{r.push(e);}}
return r;}
function getChildrenByClass(searchClass,node,tag)
{var classElements=[];if(node==null)
node=document;if(tag==null)
tag='*';else
tag=tag.toLowerCase();var els=node.childNodes;var elsLen=els.length;var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");for(var i=0;i<elsLen;i++){var e=els[i];if(e.nodeType==1&&(tag=='*'||e.tagName.toLowerCase()==tag)&&pattern.test(e.className))
{classElements.push(e);}}
return classElements;}
function hideHTextsOf(b)
{var coll=getElementsByClass('htext',b,'div');for(var i=0;i<coll.length;i++)
{hideHText(coll[i]);}}
function hideHTexts()
{hideHTextsOf(document.body);}
function rebuildTabsOf(tabs)
{tabsDivIndex++;tabs.id=tabsDivPrefix+tabsDivIndex;var enames=getChildrenByClass('tabn',tabs,'div');var ec=getChildrenByClass('tabc',tabs,'div');var thtml=[];thtml.push('<div style="width:100%;overflow:hidden;"><div class="dtab" style="right: 0; width:100%;"><ul class="dtab">');for(var i=0;i<enames.length;i++)
{if(i>=ec.length)break;var ecw=ec[i];if(msie&&!msie7)
{ecw=document.createElement('div');ecw.className='tabc_wrapper';ecw.style.width='100%';ecw.style.display='none';ec[i].style.display='';ecw.innerHTML=ec[i].outerHTML;if(tabs.replaceChild)
{tabs.replaceChild(ecw,ec[i]);}
else
{tabs.insertBefore(ecw,ec[i]);tabs.removeChild(ec[i]);}}
thtml.push('<li');if(i==0)
{thtml.push(' class="activeLink"');ecw.style.display='';}
else
{ecw.style.display='none';}
thtml.push('><a href="javascript:;" onclick="ui_switchAHTMLETab(\'');thtml.push(tabs.id);thtml.push('\', ');thtml.push(i);thtml.push(')"');thtml.push('>');thtml.push(enames[i].innerHTML);thtml.push('</a></li>');}
thtml.push('</ul></div></div>');thtml=thtml.join('');for(var i=enames.length-1;i>=0;i--)
{tabs.removeChild(enames[i]);}
for(var i=tabs.childNodes.length-1;i>=0;i--)
{if(tabs.childNodes[i].nodeType==3)
{tabs.removeChild(tabs.childNodes[i]);}}
if(tabs.insertAdjacentHTML)
{tabs.insertAdjacentHTML('afterBegin',thtml);}
else
{tabs.innerHTML=thtml+tabs.innerHTML;}
tabs.className='tabs2';}
function ui_switchAHTMLETab(parentn,index)
{var parent=document.getElementById(parentn);var ec=getChildrenByClass((msie&&!msie7)?'tabc_wrapper':'tabc',parent,'div');var ul=getElementsByClass('dtab',parent,'ul')[0];var fs=getChildrenByTag(ul,'font');if(fs.length>0)ul=fs[0];var lis=getChildrenByTag(ul,'li');for(var i=ec.length-1;i>=0;i--)
{if(i>=lis.length)continue;var active=(i==index);ec[i].style.display=active?'':'none';lis[i].className=active?'activeLink':'';}}
function rebuildTabsIn(b)
{var coll=getElementsByClass('tabs',b,'div');for(var i=0;i<coll.length;i++)
{rebuildTabsOf(coll[i]);}}
function rebuildTabs()
{rebuildTabsIn(document.body);}
function aHtmlView_Init()
{hideHTexts();rebuildTabs();}
if(!isAHTMLEditorMode)
{attachDomLoaded(aHtmlView_Init);}