
  function WikiCallObject( obj )
  {	new CoreObject( obj );
    
    obj.search = obj.getAttribute('search') ? obj.getAttribute('search') : stripTags( obj.innerHTML );
    
    obj.div = 0;
    obj.item = obj;
    obj.loader = 0;
    obj.states = 0;
    obj.isVisible = 0;
    obj.stateBarState = 0;
    obj.stateBarCount = 2;
    obj.stateBarTime = 30;
    obj.stateBarLength = 1000;
    
    cacheImage( 'img/icon_wiki_world.gif' );
    
    if( obj.className ) obj.className += ' popUpInfo';
    else obj.className = 'popUpInfo';
    
    // obj.insertBefore( document.createElement('img'), obj.firstChild );
    // obj.firstChild.src = 'img/icon_wiki_world.gif';
    
    obj.scrollImageSrc = "img/loading_bar_m.gif";
    obj.wikiURL = "wiki.php?l="+obj.getAttribute("language")+"&k=";
    obj.originate = obj.getAttribute("originating");
    
    obj.receive = _WikiCallObject_receive;
    obj.oncache = _WikiCallObject_barLoaded;
    obj.cleanWiki = _WikiCallObject_cleanWiki;
    obj.createDiv = _WikiCallObject_createDiv;
    obj.situateDiv = _WikiCallObject_situateDiv;
    obj.onmouseout = _WikiCallObject_hide;
    obj.onmouseover = _WikiCallObject_onmouseover;
    obj.refreshState = _WikiCallObject_refreshState;
    obj.moveStateBar = _WikiCallObject_moveStateBar;
    
    cacheImage(obj.scrollImageSrc, obj);
  }
  
  function _WikiCallObject_receive( pack )
  {
  	if( this.loader ) this.loader.parentNode.removeChild( this.loader );
  	else return;
  	this.loader = null;
  	
  	var e = document.createElement('div');
  	e.className = 'result';
  	var resp = eval( '('+pack.request.responseText+')' );
  	e.innerHTML = resp.parse.text.all;
  	resp = null;
  	this.cleanWiki( e );
  	this.div.appendChild( e );
  	
  	var e2 = document.createElement('p');
	e2.appendChild( document.createElement('a') );
	e.appendChild( e2 );
	e2 = e2.firstChild;
	e2.className = 'icon';
  	e2.href = this.originate+'wiki/'+this.search;
  	e2.target = '_blank';
  	e2.appendChild( document.createElement('img') );
  	e2.appendChild( document.createTextNode( e2.href ) );
  	e2 = e2.firstChild;
  	e2.src = 'img/icon_white_arrow_r.gif';
  	
  	e = document.createElement('p');
  	e.className = 'copynotice';
  	e.appendChild( document.createElement('a') );
  	e.firstChild.href = this.originate;
  	e.firstChild.target = 'blank';
  	e.firstChild.innerHTML= '&copy; '+this.originate.substring(this.originate.indexOf(':')+3, this.originate.lastIndexOf('/')==this.originate.length-1 ? this.originate.length-1 : this.originate.length );
  	this.div.appendChild( e );
  }
  
  function _WikiCallObject_cleanWiki( root )
  {
  	var cleaner = new Object();
  	cleaner.span = new Object();
  	cleaner.span.className = new Array('editsection', 'coordinates');
  	
  	cleaner.div = new Object();
  	cleaner.div.className = 'noprint';

  	var childs, sklave, tag, prop;
  	
  	for( tag in cleaner )
  	{
  		childs = root.getElementsByTagName(tag);
  		
  		for( sklave=childs.length-1; sklave>=0; sklave-- )
  			for( prop in cleaner[tag] )
  				if( childs[sklave][prop] 
  					&& contains(childs[sklave][prop].split(" "), cleaner[tag][prop]) 
  					&& childs[sklave].parentNode
  					&& childs[sklave]!=root )
  					childs[sklave].parentNode.removeChild( childs[sklave] );
  					
  					
  	}
  	
  	childs = root.getElementsByTagName("table");
  	for( sklave=childs.length-1; sklave>=0; sklave-- )
  		 if( childs[sklave].id && childs[sklave].id=='toc' )
  		 {	tag = childs[sklave];
  		    sklave = -1;
  		 }
  	
  	while( tag && tag.nextSibling )
  	{	tag = tag.nextSibling;
  		tag.parentNode.removeChild( tag.previousSibling );
  	}
  	if( tag.parentNode )
  		tag.parentNode.removeChild( tag );
  	
  	childs = root.getElementsByTagName("a");
	for( sklave=childs.length-1; sklave>=0; sklave-- )
	{	childs[sklave].target = '_blank';
		
  		 if( childs[sklave] 
  		 	&& childs[sklave].getAttribute('href') 
  		 	&& childs[sklave].getAttribute('href').indexOf('://')==-1 )
  		 	childs[sklave].href = (this.originate+childs[sklave].getAttribute('href')).replace(/\/\//g,"/").replace(/:\//g,"://");
	}
  	  
	if( !trim(root.firstChild.innerHTML) )
		root.removeChild( root.firstChild );
		
	childs = root.getElementsByTagName("img");
	for( sklave=childs.length-1; sklave>=0; sklave-- )
	{
		 if( childs[sklave].getAttribute('src')
		 	 && childs[sklave].getAttribute('src').indexOf('://')==-1 )
		 	 childs[sklave].src = (this.originate+childs[sklave].getAttribute('src')).replace(/\/\//g,"/").replace(/:\//g,"://");
		 
  		 if( childs[sklave].complete && childs[sklave].width>'300' )
  		  	 childs[sklave].width = 300;
  		  else 
  		  {	childs[sklave].style.maxWidth = 300;
  		  	childs[sklave].onload = _WikiCallObject_checkImageWidth;
  		    childs[sklave].failure = _WikiCallObject_killObject;
  		  }
	}

// thumbinner  		 
	childs = root.getElementsByTagName("div");
	for( sklave=childs.length-1; sklave>=0; sklave-- )
  		 if( childs[sklave].style && parseInt(childs[sklave].style.width) > 300 )
  		  	 childs[sklave].style.width = "auto";
  }
  
  function _WikiCallObject_checkImageWidth()
  {
  	if( this.width>300 )
  		this.width = 300;
  }
  
  function _WikiCallObject_killObject()
  {
  	this.style.display = 'none';
  }
  
  function _WikiCallObject_barLoaded( img )
  {
  	this.stateBarLength = img.width;
  }

  function  _WikiCallObject_destroyDiv()
  {
  	this.parentNode.removeChild( this );
  	this.item.div = null;
  }
  
  function _WikiCallObject_createDiv()
  {
  	this.div = createNewDiv();
  	this.div.item = this;
    	
  	this.div.onmouseout = _WikiCallObject_hide;
  	this.div.onmouseover = _WikiCallObject_show;
  	this.div.className = "popUpInfo";
  	this.div.trashed = _WikiCallObject_destroyDiv;
  	
    this.div.appendChild( document.createElement('img'), this.div.firstChild );
    this.div.firstChild.src = 'img/icon_wiki_world.gif';
    this.div.firstChild.className = 'wikiIcon';
    
  	var e = document.createElement("h3");
  	e.innerHTML = this.search;
  	this.div.appendChild( e );
  	this.loader = document.createElement("div");
  	this.loader.className = "loading";
  	this.loader.style.backgroundImage="url("+this.scrollImageSrc+")";
  	this.loader.style.backgroundRepeat="no-repeat";
  	this.loader.style.backgroundPosition="0px bottom";
  	this.loader.appendChild( document.createTextNode( this.getAttribute("loadingText") ) );
  	this.div.appendChild( this.loader );
  	this.stateBarLength -= this.loader.offsetWidth+parseInt(getStyle(this.loader, "width"));
  	this.isVisible = 1;
  	
  	var maiCo = getID( mainContentID );
    if( maiCo ) if( maiCo.trashCan ) maiCo.trashCan.push( this.div ); else maiCo.trashCan = new Array( this.div );
  	
  	this.moveStateBar();
  	ajax.request(this, this.wikiURL+this.search);
  }
  
  function _WikiCallObject_refreshState( state )
  {
  	if( state==this.states && !this.isVisible )
  		this.div.style.display = 'none';
  }
  
  function _WikiCallObject_hide()
  { this.item.isVisible = 0;
    this.item.states++;
  	this.item.timeOut(20,'refreshState('+this.item.states+')'); 	
  }
  
  function _WikiCallObject_show()
  {	this.item.isVisible = 1;
  }
  
  function _WikiCallObject_situateDiv()
  { var p = topLeftCoords( this );
  	this.div.style.top = (p.y-6) + "px";
  	this.div.style.left = (p.x+12) + "px";
  }
  
  function _WikiCallObject_moveStateBar()
  { if( !this.loader || !this.isVisible )
  		return;
  	
  	if( this.stateBarState>0 || Math.abs(this.stateBarState)>this.stateBarLength )
   		this.stateBarState = 0;
  
    this.stateBarState-=this.stateBarCount;
    
  	this.loader.style.backgroundPosition = this.stateBarState+"px bottom";
  	
  	this.timeOut(this.stateBarTime, "moveStateBar()");
  }
  
  function _WikiCallObject_onmouseover()
  {
  	if( !this.div )
  		this.createDiv();
  	
  	this.situateDiv();
  	
  	this.isVisible = 1;
  	this.div.style.display = "block";
  }
  
