// (c) 2004-2010 Ali Jahanshiri <alijsh@yahoo.com>

if(!String.prototype.trim){String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'');};}
String.prototype.endsWith=function(exp){return(this.search(new RegExp(exp+'$'))!==-1);};String.prototype.beginsWith=function(exp){return(this.search(new RegExp('^'+exp))!==-1);};String.prototype.contains=function(string){return(' '+this+' ').indexOf(' '+string+' ')>-1;};var Elem={addClass:function(l,c){if(!l.className.contains(c)){l.className=(l.className+' '+c).trim();}},removeClass:function(l,c){l.className=((' '+l.className+' ').replace(' '+c+' ','')).trim();},hasClass:function(l,c){return l.className.contains(c);},isAllWS:function(nod){return!(/[^\t\n\r ]/.test(nod.data));},isIgnorable:function(nod){return(nod.nodeType==8)||((nod.nodeType==3)&&this.isAllWS(nod));},sibBefore:function(sib){while((sib=sib.previousSibling)){if(!this.isIgnorable(sib)){return sib;}}
return null;},sibAfter:function(sib){while((sib=sib.nextSibling)){if(!this.isIgnorable(sib)){return sib;}}
return null;},getText:function(l){if(l.textContent){return l.textContent;}
if(l.innerText){return l.innerText;}}};var Browser={info:navigator.userAgent.toLowerCase(),isIE:function(){return(this.info.indexOf('msie')!==-1);}};var $I=function(selector){return document.getElementById(selector);};var $T=function(selector,context){return context.getElementsByTagName(selector);};var $C=function(selector,context){var chunks=selector.split('.'),tagName=chunks[0],className=chunks[1],elems=$T(tagName,context),i=0,il=elems.length,ret=[];for(;i<il;i+=1){if(elems[i].className.contains(className)){ret.push(elems[i]);}}
return ret;};var $K=function(selector){return(selector.charAt(0)==='#')?'ID':(selector.split('.').length===2)?'CLASS':'TAG';};var $=function(selector,context){var parts=selector.split(' ');context=context||document;if(parts.length===1){switch($K(parts[0])){case'ID':return $I(selector.substr(1));case'TAG':return $T(parts[0],context);case'CLASS':return $C(parts[0],context);}}else if(parts.length===2){switch($K(parts[0])){case'ID':context=$I(parts[0].substr(1));switch($K(parts[1])){case'TAG':return $T(parts[1],context);case'CLASS':return $C(parts[1],context);}
break;case'TAG':case'CLASS':return null;}}
return null;};var CIndic=function(n){var ns=['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];return(Page.isRTL)?n.toString().replace(/\d/g,function(m){return ns[m];}):n;};var Res={Contents:{de:'Inhaltsverzeichnis',en:'Contents',es:'Contenido',fa:'فهرست',fr:'Sommaire',it:'Indice'},Chapt:{de:'Index',en:'Index',es:'Índice',fa:'نمایه',fr:'Index',it:'Indice'},Links:{de:'Weblinks',en:'Links',es:'Enlaces',fa:'پیوندها',fr:'Liens',it:'Collegamenti'},Home:{de:'Hauptseite',en:'Home',es:'Portada',fa:'خانه',fr:'Accueil',it:'Pagina principale'},SeeAlso:{de:'Siehe auch',en:'See also',es:'Véase también',fa:'مربوط',fr:'Connexes',it:'Veda anche'},References:{de:'Einzelnachweise',en:'References',es:'Referencias',fa:'دستمایه\u200cها',fr:'Références',it:'Bibliografia'},of:function(s){return this[s][Page.lang]||this[s][en];}};var Page={};Page.rtlOList=function(){if(!this.isRTL){return;}
var OLs=$('ol'),LIs,i=0,il=OLs.length,j,jl;if(il>0){for(;i<il;i+=1){Elem.addClass(OLs[i],'lst-none');LIs=$('li',OLs[i]);for(j=0,jl=LIs.length;j<jl;j+=1){LIs[j].innerHTML=CIndic(j+1)+'. '+LIs[j].innerHTML;}}}};Page.listCites=function(){var aC=$('cite',this.content),i=0,il=aC.length,list='',n,s,ref,d=document.createElement('div');if(il<1){return;}
for(;i<il;i+=1){n=i+1;s=CIndic(n);ref=aC[i].title;list+='<li id="cite_note-'+n+'">[<a href="#cite_ref-'+n+'">^</a>] '+ref+'</li>';aC[i].id='cite_ref-'+n;aC[i].innerHTML+=' <a href="#cite_note-'+n+'">« '+s+' »</a>';}
d.innerHTML='<h3>'+Res.of('References')+'</h3><ol id="reflist" class="simple">'+list+'</ol>';d.className='midbox';this.body.appendChild(d);};Page.createTOC=function(){if(Elem.hasClass(this.body,'no-linkbar')){return;}
var h=$('h2',Page.content),i=0,il=h.length,TOC='<li class="m-listing">'+Res.of('Contents')+' ▼<ul class="m-list">';if((Elem.hasClass(this.body,'no-toc'))||(il<1)){return;}
for(;i<il;i+=1){h[i].id=h[i].id||('h'+i);TOC+='<li><a href="#'+h[i].id+'">'+h[i].innerHTML+'</a>';}
h=$('h3',Page.footer);il=h.length;if(il>0){for(i=0;i<il;i+=1){TOC+='<li><a href="#'+(h[i].id||('h5'+i))+'">'+h[i].innerHTML+'</a>';}}
$('#menu').innerHTML+=TOC+'</ul></li>';};Page.makeLinkbar=function(){if(Elem.hasClass(this.body,'no-linkbar')){return;}
var l=$('link'),hp='/index.html',i=0,il=l.length;for(;i<il;i+=1){if(l[i].href.indexOf('common.css')!==-1){this.cssLink=l[i];hp=l[i].getAttribute('href').replace('inc/common.css','index.html');break;}}
this.linkbar=document.createElement('div');this.linkbar.id='linkbar';this.linkbar.className='midbox fixedmidbox';this.linkbar.innerHTML='<ul id="menu"><li class="m-item"><a href="'+hp+'">'+Res.of('Home')+'</a></li></ul>';var ref=$('#content');ref.parentNode.insertBefore(this.linkbar,ref);};Page.init=function(){this.body=$('body')[0];this.content=$('#content');this.footer=$('#footer');this.lang=$('html')[0].getAttribute('lang')||'en';this.lang=this.lang.split('-')[0];this.isRTL=(this.lang==='fa')?true:false;this.makeLinkbar();this.listCites();this.createTOC();this.markExlinks();this.rtlOList();};Page.markExlinks=function(){var links=$('a'),i=0,il=links.length;for(;i<il;i+=1){if(links[i].getAttribute('href').indexOf('http:')!==-1){Elem.addClass(links[i],'external');}}};Page.linkify=function(json,title){var s='<li class="m-listing">'+title+' ▼<ul class="m-list">';for(var key in json){if(json.hasOwnProperty(key)){s+='<li id="page-'+key+'"><a href="'+key+((key.indexOf('.')!==-1)?'':'.html')+'">'+json[key]+'</a></li>';}}
$('#menu').innerHTML+=s+'</ul></li>';};Page.categorize=function(json){Page.linkify(json,Res.of('Chapt'));var p=window.location.toString().split('/'),f=$('#page-'+p[p.length-1].split('.')[0]);if(f){f.innerHTML=Elem.getText(f);}};Page.relate=function(json){Page.linkify(json,Res.of('SeeAlso'));};Page.init();