
  /*
      © Алексей Забродин 2008 (drvhart@ya.ru)
      Скрипт для загрузки и позиционирования контента
      Файл lector.js v2.1
  */
  
  var d = d || document;
  
  var lector = {
      
      loadImg: '/template/admin/img/loader.gif',
      blind: null,
      container: null,
      frame: null,
      request: null,
      x: null,
      y: null,
      sendingData: new Array(),
      
      init: function() // Инициализация
      {
      	  var $ = lector;
      	  
      	  d.onmousemove = $.setCoords;
      	  
      	  var divBlind = d.createElement('div');
	      $.blind = d.body.appendChild(divBlind);
	      $.blind.style.display = 'none';
	      $.blind.style.position = 'absolute';
	      $.blind.style.top = '0';
	      $.blind.style.left = '0';
	      $.blind.style.backgroundColor = '#000';
	      $.blind.style.zIndex = '1';
	      $.blind.style.width = '100%';
	      $.blind.style.height = '100%';
	      $.blind.style.opacity = '0.7';
	      $.blind.style.filter = 'alpha(opacity=70)';
	      $.blind.onclick = $.close;
	      
	      var divContainer = d.createElement('div');
	      $.container = d.body.appendChild(divContainer);
	      $.container.style.position = 'absolute';
	      $.container.style.top = '0';
	      $.container.style.left = '0';
	      $.container.style.zIndex = '2';
	      $.container.style.display = 'none';
	      
	      var divFrame = d.createElement('div');
	      divFrame.innerHTML = '<iframe src="about:blank" id="lectorFrame" name="lectorFrame" onload="lector.formOnload();"></iframe>';
	      divFrame.style.display = 'none';
	      d.body.appendChild(divFrame);
	      $.frame = d.getElementById('lectorFrame');
      },
      showBlind: function() // Показываем штору
	  {   
	  	  var $ = lector;
	  	  
	      $.blind.style.display = 'block';
	      $.positionBlind();
	      
	      window.onscroll = function()
	 	  {
			  $.positionBlind();
		  }
	  },
	  positionBlind: function() // Позиционируем штору
	  {
	 	  var top = d.documentElement.scrollTop || d.body.scrollTop;  
          lector.blind.style.top = top + 'px';
	  },
	  close: function() // Закрываем блоки
	  {
	  	  var $ = lector;
	  	  
	  	  $.blind.style.display = 'none';
	  	  $.container.style.display = 'none';
	  	  
	  	  if($.request) 
			  $.request.abort();
	      
	       window.onscroll = 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;
	  },
	  loadDoc: function(url, blind, coords, fns)
	  {
	  	  var $ = lector;
	  	  
          $.window('<img src="' + $.loadImg + '" alt="Загрузка" />', blind, coords);
          
          $.request = $.getXmlHttp();
          
          if($.request)
          {
          	  try
			  {
	  	         $.request.onreadystatechange = function()
		         {
			        if($.request.readyState == 4)
			        {
				        if($.request.status == 200 || $.request.status == 0)
				        {
		        	        setTimeout(function()
				            {
				            	$.window($.request.responseText, blind, coords);
				            	if(fns) fns.call(this);
				            }, 400);
			        	}
			        	else
			        	{
							errorMsg('Не найден документ запрашиваемый через XMLHTTP запрос', blind, coords);
						}
			        }
		         }
		         
		         $.request.open('GET', url, true);
		         $.request.setRequestHeader("If-Modified-Since", "Mon, 26 Jul 1997 05:00:00 GMT");
		         $.request.setRequestHeader("Pragma", "no-cache");
		         $.request.send(null);
		  	  }
			  catch(err)
			  {
				 errorMsg('Ошибка обработки XMLHTTP запроса', blind, coords);
			  }
          }
          else
          {
              errorMsg('Ваш браузер не поддерживает XMLHTTP запросы,<br /> попробуйте воспользоваться другим браузером.', blind, coords);
		  }
          
          function errorMsg(msg, blind, coords)
          {
          	  var text = '<div style="padding: 1em;background-color: #FFF;"><div style="font-size: 130%;">Ошибка</div>';
          	  text += msg + '</div>';
          	  
          	  $.window(text, blind, coords);
          }
	  },
  	  submitForm: function(form, blind, coords, fns) // Отправка формы
	  {
	  	  var $ = lector;
	  	  
	  	  $.sendingData['blind'] = blind;
	  	  $.sendingData['coords'] = coords;
	  	  $.sendingData['fns'] = fns;
	  	  
	  	  if(!$.sendingData['submitted'])
	  	  {
	  	  	  
	  	  	  setTimeout(function()
              {
	     	  	  $.window('<img src="' + $.loadImg + '" alt="Загрузка" />', blind, coords);
	  	      }, 100);
              
	  	      form.setAttribute('target', 'lectorFrame');
	  	      $.sendingData['submitted'] = true;
	  	      form.submit();
          }
	  },
	  formOnload: function() // Выводим результат отправки формы
	  {
	  	  var $ = lector;
	  	  
	  	  if($.sendingData['submitted'])
	  	  {
	  	  	  setTimeout(function()
              {
        	      $.window(frames['lectorFrame'].document.body.innerHTML, $.sendingData['blind'], $.sendingData['coords']);
	  	  	  
	  	  	      if($.sendingData['fns'] && $.sendingData['submitted'])
	  	  	      {
	  	  	  	      $.sendingData['fns'].call();
	  	  	      }
  	          
  	              $.sendingData['submitted'] = false;
              }, 400);
	  	  }
	  },
	  window: function(data, blind, coords) // Выводит окно с данными
	  {
	  	  var $ = lector;
	  	  
	  	  if(blind)
	  	  {
			 $.showBlind();
		  }
		  
		  $.container.innerHTML = data;
  		  $.container.style.display = 'block';
		  $.container.style.opacity = '0';
	      $.container.style.filter = 'alpha(opacity=0)';
	      
	      if(coords)
		  {
		  	 $.containerToCoords();
		  }
		  else
		  {
		  	 $.containerToCenter();
		  }
		  
		  for(var i = 0; i < 11; i++)
		  {
		  	  if(coords)
		  	  {
                 setTimeout(setOpacity(i), 25*i);
              }
              else
              {
              	 setTimeout(setOpacity(i, true), 25*i);
              }
   	      }

		  function setOpacity(value, center)
		  {
		  	  return function()
              {
		         $.container.style.opacity = value/10;
	             $.container.style.filter = 'alpha(opacity=' + value*10 + ')';
           	  
	             if(center)
	             {
            	     $.containerToCenter();
	             }
              }
		  }
	  },
	  setCoords: function(e) // Прием координат курсора
	  {
	  	  var $ = lector;
	  	  
	  	  e = e || window.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;
	      }
	  },
	  containerToCoords: function() // Установка контейнера по координатам
	  {
	  	  var $ = lector;
	  	  
	  	  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;
          
          setTimeout(function()
          {
        	 if($.x > center)
             {
                 $.x = $.x - $.container.clientWidth;
             }
             if($.y > middle)
             {
                 $.y = $.y - $.container.clientHeight;
             }
          
             $.container.style.top = $.y + 'px';
             $.container.style.left = $.x + 'px';
          }, 10);
	  },
	  containerToCenter: function() // Установка контейнера по центру
	  {
	  	  var $ = lector;
	 	 
	 	  var top = d.documentElement.scrollTop || d.body.scrollTop;
	 	 
		  var sTop = d.body.clientHeight/2 - $.container.clientHeight/2;
   	      $.container.style.top = top + sTop + 'px';
   	  
   	      var sLeft = d.body.clientWidth/2 - $.container.clientWidth/2;
   	      $.container.style.left = sLeft + 'px';
	  }
  }
  
  // Стартуем
  if(typeof d.attachEvent != 'undefined')
  {
     attachEvent('onload', lector.init);
  }
  else
  {
     addEventListener('load', lector.init, false);
  }
