var curHintId = null; // id активной ссылки

// Делаем XMLHttpRequest "универсальным"
if(!window.XMLHttpRequest && window.ActiveXObject)
   var XMLHttpRequest = function() { return new ActiveXObject("Microsoft.XMLHTTP"); }

// Объект, для определения координат мыши
var mouse = {
   x : function(e)
   {
      if (window.event)
         return window.event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
      else if (window.captureEvents)
         return e.pageX;
      else
         return null; 
   },
   y : function(e)
   {
      if (window.event)
         return window.event.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
      else if (window.captureEvents)
         return e.pageY;
      else
         return null;   
   }
}

function hintsForLinks()
{
   if (window.XMLHttpRequest)
   {
      var hintbox = document.getElementById("hintbox");
      var allLinks = document.getElementsByTagName("a");
      
      // Выбираем только линки для которых есть подсказки (id = "hintxxx")
      var links = new Array();
      var e = 0;
      for(i = 0; i < allLinks.length; i++)
      {
         if (allLinks[i].id.match(/hint\d+/i))
         {
            links[e] = allLinks[i];
            e++;
         }
      }
      
      // Создаем обработчиков событий для ссылок с подсказками
      for(i = 0; i < links.length; i++)
      {
         links[i].onmouseover = function()
         {
            // Здесь может быть "полноценный" запрос
            getXMLDoc("/ajax/user.php?id="+this.id);
            curHintId = this.id;
         }
         links[i].onmouseout = function()
         {
            hintbox.style.left = "-1000px"; // прячем hintbox
            hintbox.innerHTML = "";
         }
         links[i].onmousemove = function(e)
         {
            if (mouse.x(e) && hintbox.innerHTML != "")
            {
               var dx = (document.body.clientWidth - mouse.x(e) + document.body.scrollLeft < hintbox.offsetWidth) ? hintbox.offsetWidth + 15 : 0;
               var dy = (document.body.clientHeight - mouse.y(e) + document.body.scrollTop < hintbox.offsetHeight) ? hintbox.offsetHeight + 15 : 0;
               var x = mouse.x(e) + 10 - dx;
               var y = mouse.y(e) + 10 - dy;
               hintbox.style.left = (x - document.body.scrollLeft > 0) ? x : document.body.scrollLeft;
               hintbox.style.top = (y - document.body.scrollTop > 0) ? y : document.body.scrollTop;
            }
         }
      }
   }
}

function getXMLDoc(url)
{
	//alert (url);
   try
   {
      req = new XMLHttpRequest();
      if (req)
      {
         // Обработчик, в случае изменения состояние объекта req
         req.onreadystatechange = function () 
         {
            // req.readyState == 4 - отклик с сервера получен.
            if (req.readyState == 4)
            {
               // req.status == 200 - запрос успешно выполнен.
               if (req.status == 200)
               {
                  // Для нашего случая просто заполняем hintbox текстовым содержимым файла. 
                  var hintbox = document.getElementById("hintbox");
                  hintbox.innerHTML = req.responseText;
                  try
                  {
                     document.getElementById(curHintId).fireEvent("onmousemove");
                  }
                  catch(e)
                  {
                     hintbox.style.left = mouse.x(e) + 10;
                     hintbox.style.top = mouse.y(e) + 10;
                  }
               }
            }
         }
         req.open("GET", url, true);
         req.send("");
      }
   }
   catch(e) 
   {
      return;
   }
}

//Проверка полей
function verify_number(element){
text=element.value;

b=text.match(/(\w{1,200})/g);
if(b==null){b='';}

document.f2[element.name].value=b;
}