

// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
  trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8;    // Ё
trans[0x451] = 0xB8;    // ё

// Сохраняем стандартную функцию escape()
var escapeOrig = window.escape;

// Переопределяем функцию escape()
window.escape = function(str)
{
  var ret = [];
  // Составляем массив кодов символов, попутно переводим кириллицу
  for (var i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined') n = trans[n];
    if (n <= 0xFF) ret.push(n);
  }
  return escapeOrig(String.fromCharCode.apply(null, ret));
}/*escape*/





/********************************************************/
/* Базовые функции 					*/
/********************************************************/
var Ajax = {

	SendRequest : function (url, data, callback) {
	  if (!callback) callback = new Function("alert('default callback')");

	  var request;
	  try 
	  { 
	    request = new ActiveXObject('Microsoft.XMLHTTP'); 
	  } 
	  catch(e) // Mozilla
	  { 
	    try { request = new XMLHttpRequest() }
	    catch (e) 
	    { 
	      return false;
	    }
	  }

	//  alert(postdata);  return false;
	  request.open('POST',url,true) 
	  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
//	  data += '&rand'+Math.random()
	  request.send(data);

	  request.onreadystatechange = function() { 
	    if(request.readyState==4) 
	    { 
	      try 
	      { 
	        eval(request.responseText);
//	        alert(request.responseText);
	        callback();
	      }
	      catch (e) 
	      { 
	        alert("ОШИБКА:\n" + e.message+"\n\n"+request.responseText); 
	      }
	      delete request; 
	    } 
	  }

	//  msg('Передача данных, подождите ...');
	  return false;
	},


        // Create new script element and start loading.
	ObtainScript: function(href, callback) { 
	  if (!callback) callback = new Function("");

	  href += '?'+Math.random();

	  // Oh shit! Damned stupid fucked Opera 7.23 does not allow to create SCRIPT 
	  // element over createElement (in HEAD or BODY section or in nested SPAN - 
	  // no matter): it is created deadly, and does not respons on href assignment.
	  // So - always create SPAN.

//	  alert('Загружаем '+href)

//	  run = new Function("callback()"); 

	  var span = document.getElementById('ajax_script_loader');
	  if (!span)
	  {
	    span = document.createElement('SPAN');
	    span.style.display = 'none';
	    span.id = 'ajax_script_loader';
	    document.body.insertBefore(span, document.body.lastChild);
	  }
	   
	  span.innerHTML = 'Text for stupid IE.<s'+'cript></' + 'script>';
	  setTimeout(function() {
	    var s = span.getElementsByTagName('script')[0];
	    s.language = 'JavaScript';
	    s.onload = callback();
//	    s.onload = function () { setTimeout("alert('')", 50) };

	    if (s.setAttribute) s.setAttribute('src', href); else s.src = href;
	  }, 10);
	},


	// Загрузка содержимого
	Load : function (target, url, callback) {
	  if (!callback) callback = new Function("");

	  var request;
	  try 
	  { 
	    request = new ActiveXObject('Microsoft.XMLHTTP'); 
	  } 
	  catch(e) // Mozilla
	  { 
	    try { request = new XMLHttpRequest() }
	    catch (e) 
	    { 
	      return false;
	    }
	  }

	  request.open('GET',url,true) 
	  request.send(1);

	  request.onreadystatechange = function() { 
	    if(request.readyState==4) 
	    { 
	       try 
	       { 
		  target.innerHTML = request.responseText;
		  callback();

	       }
	       catch (e) 
	       { 
	          alert("ОШИБКА:\n\n" + e.message); 
	       }
	       delete request; 
	    } 
	  }

	}

};
