      
  /*
      © Алексей Забродин 2008 (drvhart@ya.ru)
      Скрипт для загрузки и позиционирования контента Lector v1.3
  */
 
  var d = d || document;
  var w = w || window;
 
  var lector = {
  	  
  	  loader: '<img src="/js/lector/loader.gif" alt="Загрузка" />',
  	  
	  install: function() //-- Инсталируем --//
	  {   
	  	  var l = lector;
	  	  
		  l.createHTML();
		  d.onmousemove = l.setCoords;
	  },
	  createHTML: function() //-- Создаём HTML --//
	  {   
	  	  var l = lector;
	  	  
	 	  var divBlind = d.createElement("div");
	      divBlind.setAttribute("id", "l_blind");
	      l.blind = d.body.appendChild(divBlind);
	      l.blind.style.display = "none";
	      l.blind.onclick = l.hideDivs;
	    
	      var divContainer = d.createElement("div");
	      divContainer.setAttribute("id", "l_container");
	      l.container = d.body.appendChild(divContainer);
	      l.container.style.display = "none";
	    
	      var divFrame = d.createElement("div");
	      divFrame.innerHTML = '<iframe src="about:blank" id="l_frame" name="l_frame" onload="lector.testFormLoad()"></iframe>';
	      divFrame.style.display = "none";
	      d.body.appendChild(divFrame);
	      l.frame = d.getElementById("l_frame");
	  },
	  hideDivs: function() //-- Прячем блоки --//
	  {   
	  	  var l = lector;
	  	  
	 	  l.blind.style.display = "none";
	 	  l.container.style.display = "none";
	 	  
	 	  if(l.req)
	 	  {
			 l.req.abort();
		  }
		  if(l.winScrl)
	 	     w.onscroll = l.winScrl;
	  },
	  setPositionBlock: function(coords) //-- Позиционируем блок --//
	  {	  
	  	  var l = lector;
	  	  
		  if(coords)
		  {
		     l.toCoords();
		   
		  }else{
			
	 	     l.setCenter();
	 	  }
	  },
	  showBlind: function() //-- Показываем штору --//
	  {   
	  	  var l = lector;
	  	  
	      l.blind.style.display = "block";
		  l.setPositionBlind();
		  l.setEvents();
	  },
	  setPositionBlind: function() //-- Позиционируем штору --//
	  {
	 	  var top = d.documentElement.scrollTop || d.body.scrollTop;  
          lector.blind.style.top = top + "px";
	  },
	  setEvents: function() //-- Создаём события --//
	  {   
	  	  var l = lector;
	  	  
	 	  l.winScrl = w.onscroll;
	 	
	 	  w.onscroll = function()
	 	  {
			  l.setPositionBlind();
		  }
	  },
	  window: function(inner, blind, coords) //-- Вывод окна --//
	  {   
	  	  var l = lector;
	  	  
		  if(blind)
			 l.showBlind();
			  
		  l.container.style.display = "block";
		  
		  if(inner)
             l.container.innerHTML = inner;
		 
		  l.setPositionBlock(coords);
		  l.setOpacity(l.container, 0, true);
           
          for(var i = 0; i < 11; i++)
		  {
   	          setTimeout(l.setOpacity(l.container, i), 25*i);
   	      }
	  },
	  submitForm: function(forma, blind, coords, fns) //-- Отправляем форму --//
	  {   
	  	  var l = lector;
	  	  
	  	  l.container.innerHTML = l.loader;
	  	  
	 	  l.coords = coords;
	 	  l.fns = fns;
	 	
	 	  forma.setAttribute('target', 'l_frame');
	 	
	 	  if(!l.load)
	 	  {
	 	     if(blind)
	 	     {
			     l.showBlind();
		     }
		     
		     l.container.style.display = "block";
		     l.setPositionBlock(coords);
		   
		     l.load = true;
	 	     forma.submit();
	 	  }
	 },
	 testFormLoad: function() //-- Проверяем загрузку форму --//
	 {    
	 	  var l = lector;
	 	  
	 	  if(l.load)
	 	  {
		      l.container.innerHTML = w.frames['l_frame'].document.body.innerHTML;
		   
		      l.setPositionBlock(l.coords);
              l.setOpacity(l.container, 0, true);
           
              for(var i = 0; i < 11; i++)
		      {
   	              setTimeout(l.setOpacity(l.container, i), 25*i);
   	          }
   	          
		      l.load = false;
		   
		      if(l.fns)
		         l.fns.call(this);
		  }
	 },
	 loadDoc: function(url, blind, coords, fns, params, hide) //-- Загружаем документ --//
	 {	  
	 	  var l = lector;
	 	  
	 	  l.container.innerHTML = l.loader;
	 	  
	 	  if(l.req)
			 l.hideDivs();
		
		  if(blind && !hide)
			 l.showBlind();
		  
		  if(!hide)
		  {
		      l.container.style.display = "block";
		      l.setPositionBlock(coords);
		  }
	 	
		  l.req = l.getXmlHttp();
		
		  if(l.req)
		  {   
		     try
			 {	
			    l.req.onreadystatechange = function()
		        {
			        if(l.req.readyState == 4)
			        {
				        if(l.req.status == 200 || l.req.status == 0)
				        {
							l.error = null;
						}else{
				            l.error = 3;
				        }
			        }
		        }
		        
		        if(params)
		        {
					var method = "POST";
				}else{
					var method = "GET";
					params = null; 
				}
		        
		        l.req.open(method, url, true);
		        
		        if(method == "POST")
		        {
		           l.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		        }
		        
		        l.req.setRequestHeader("If-Modified-Since", "Mon, 26 Jul 1997 05:00:00 GMT");
		        l.req.setRequestHeader("Pragma", "no-cache");
		        
		        l.req.send(params);
		        
			 }catch(err){
				l.error = 2;
			 }	
		  }else{
			l.error = 1;
		  }
		  
		  if(!hide)
		      l.loadTest(coords, fns);		
	 },
	 loadTest: function(coords, fns) //-- Проверяет загрузку --//
	 {	  
	 	  var l = lector;
	 	  
	 	  if(!l.error)
	 	  {	
	 	      if(l.req.readyState == 4)
		      {
		         clearInterval(l.interval);
		      
		         l.container.innerHTML = l.req.responseText;
		         
                 l.setPositionBlock(coords);
              
                 l.setOpacity(l.container, 0, true);
                 for(var i = 0; i < 11; i++)
		         {
   	                 setTimeout(l.setOpacity(l.container, i), 25*i);
   	             }
   	          
   	             if(fns)
		            fns.call(this);
		      }else{
			
		         if(l.interval)
		         {
		   	        clearInterval(l.interval);
                    l.interval = setInterval(function()
				    {
					   l.loadTest(coords, fns);
				    }, 100);
                 }else{
			        l.interval = setInterval(function()
				    {
					   l.loadTest(coords, fns);
				    }, 100)
		         }
		      }
		  }else{
		      clearInterval(l.interval);
		   
		      l.container.innerHTML = '<div style="padding: 1em;background-color: #FFF;">Ошибка запроса ' + l.error + '</div>';
		      l.container.style.display = "block";
		      l.setPositionBlock(coords);
		   
		      l.error = null;
		  }
	 },
	 getXmlHttp: function() //-- Получаем объект запроса --//
	 {
		  var xmlhttp;
		
          try
		  {
              xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            
          }catch(e){
        	
              try
			  {
                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
               
              }catch(E){
            	
                 xmlhttp = false;
              }
          }
        
          if(!xmlhttp && typeof XMLHttpRequest != "undefined")
		  {
              xmlhttp = new XMLHttpRequest();
          }
        
          return xmlhttp;
	 },
	 setOpacity: function(obj, value, no_return) //-- Устанавливает прозрачность объекту --//
	 {	
	 	 if(no_return)
		 {
		    obj.style.opacity = value/10;
	        obj.style.filter = "alpha(opacity=" + value*10 + ")";
		 }else{
		    return function()
		    {
		       obj.style.opacity = value/10;
	           obj.style.filter = "alpha(opacity=" + value*10 + ")";
	        }
		 }
	 },
	 toCoords: function() //-- Установка координат --//
     {
	     var l = lector;
	     
	     var x = l.x;
	     var y = l.y;
	    
	     var top = d.documentElement.scrollTop || d.body.scrollTop;
	     var left = d.documentElement.scrollLeft || d.body.scrollLeft;
		
	     var center = (d.body.clientWidth || d.documentElement.width)/2 + left;
         var middle = (d.body.clientHeight || d.documentElement.height)/2 + top;
        
         if(x > center)
	     {
            x = x - l.container.clientWidth;
         }
         if(y > middle)
	     {
            y = y - l.container.clientHeight;
         }
        
	     l.container.style.top = y + "px";
	     l.container.style.left = x + "px";
	    
     },
     setCoords: function(e) //-- Назначаем координаты блоку --//
	 {   
	 	 var l = lector;
	 	 
		 if(l.x && l.y)
 	     {
	        d.body.onmousemove = null;
	        d.body.onmousedown = l.setCoords;
	     }
 	    
	     var x = 0, y = 0;
		
	     e = e || w.event;;
		
	     if(e.pageX || e.pageY)
	     {
            x = e.pageX;
            y = e.pageY;
           
         }else if(e.clientX || e.clientY){
			
		    x = e.clientX + (d.documentElement.scrollLeft || d.body.scrollLeft) - d.documentElement.clientLeft;
            y = e.clientY + (d.documentElement.scrollTop || d.body.scrollTop) - d.documentElement.clientTop;
	     }
	
	     l.x = x;
         l.y = y;
	 },
	 setCenter: function() //-- Центрует и позиционирует --//
	 {	
	 	 var l = lector;
	 	 
	 	 var top = d.documentElement.scrollTop || d.body.scrollTop;
	 	
		 var sTop = d.body.clientHeight/2-l.container.clientHeight/2;
   	     l.container.style.top = top + sTop + "px";
   	  
   	     var sLeft = d.body.clientWidth/2-l.container.clientWidth/2;
   	     l.container.style.left = sLeft + "px";
	 }
  }
 
  //-- Стартуем --//
  if(typeof d.attachEvent != 'undefined')
  {
     w.attachEvent('onload', lector.install);
  }else{
     w.addEventListener('load', lector.install, false);
  }
