  // JavaScript Document
    
   onReady = ( function(ie){
    var d = document;
    return ie ? function(c){
      var n = d.firstChild,
      f = function(){
        try{
        c(n.doScroll('left'))
        }catch(e){
        setTimeout(f, 10)
        }
      }; f()
    } : 
    /webkit|safari|khtml/i.test(navigator.userAgent) ? function(c){
    var f = function(){
      /loaded|complete/.test(d.readyState) ? c() : setTimeout(f, 10)
      }; f()
    } : 
    function(c){
      d.addEventListener("DOMContentLoaded", c, false);
    }
   })(/*@cc_on 1@*/);
   
   
   onLoad = (function(ie){
	   addEvent(window,"load", ie);
	   });
  

   /*Изначально не написана никем конкретно. 
   Многие разработчики писали свои собственные версии и ничья не показала себя лучше остальных. 
   Следующая функция использует встроенный метод getElementsByClass, если он есть, и ищет элементы самостоятельно в тех браузерах, где этого метода нет.
   classList - Список классов, разделенный пробелами, элементы с которыми нужно искать.
   node - Контекст поиска, внутри какого узла искать
   Например:var div = document.getElementById("mydiv")
   elements = getElementsByClass('class1 class2', div)*/	
   
     if(document.getElementsByClassName) {
	 	    getElementsByClass = function(classList, node) {    
	        return (node || document).getElementsByClassName(classList)
	    }
	 
	 } else {
	 
	    getElementsByClass = function(classList, node) {            
	        var node = node || document,
	        list = node.getElementsByTagName('*'), 
	        length = list.length,  
	        classArray = classList.split(/\s+/), 
	        classes = classArray.length, 
	        result = [], i,j
	        for(i = 0; i < length; i++) {
	            for(j = 0; j < classes; j++)  {
	                if(list[i].className.search('\\b' + classArray[j] + '\\b') != -1) {
	                    result.push(list[i])
	                    break
	                }
	            }
	        }
	     
	        return result
	    }
	}

   /*Следующие две функции добавляют и удаляют класс DOM элемента.*/
   
   function addClass(o, c){
     var re = new RegExp("(^|\\s)" + c + "(\\s|$)", "g")
     if (re.test(o.className)) return
     o.className = (o.className + " " + c).replace(/\s+/g, " ").replace(/(^ | $)/g, "")
   }
 
   function removeClass(o, c){
     var re = new RegExp("(^|\\s)" + c + "(\\s|$)", "g")
     o.className = o.className.replace(re, "$1").replace(/\s+/g, " ").replace(/(^ | $)/g, "")
   } 
   
   /*Она позволяет функции работать одинаково при передаче DOM-узла или его id.*/
   function byId(node) {
        return typeof node == 'string' ? document.getElementById(node) : node
   }
   
   /*поиск обьекта*/
   function EvanJs(str)
   { //var st = document.getElementById(str); st.si
	  if(!str) return null;
	  var ident = str.substring(0, 1);  
	  str2 = str.substring(1, str.length); /*alert(str.size); alert(str.count);*/ //alert(str.length); /*alert(strlen(str)); alert(count(str));*/// alert(str); alert(ident); alert(str2);
	  if(ident == '#') return document.getElementById(str2);
	  if(ident == '.') return getElementsByClass(str2, document.body);
	  if(ident == '&') return document.getElementsByTagName(str2);
	  else return document.getElementsByName(str);
   }
   

  //AJAX функции
  
  //Создание нового объекта XMLHttpRequest для всех браузеров для общения с Web-сервером				
  function newAjax()
  {
	var xmlHttp = false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)*/
	try {
	  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	  try {
	    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (e2) {
	    xmlHttp = false;
	  }
	}
	/*@end @*/

	if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
	  xmlHttp = new XMLHttpRequest();
	}
	return xmlHttp;
  }
  
  //запрос серверу
  function reqServer(method, url, data, responseFunc, responseError) 
  { //alert('01');
  	var xmlHttp = newAjax();
	if(!xmlHttp) return false;
	
	if(method == "get") method = "GET";
	if(method == "post") method = "POST";
	if(method != "GET" && method != "POST") method = "GET";
	
	var allUrl = url;
	var send = null;
	
	if(method == "GET")
	{
	   /*if(massData)
	   {
	      if(!url.indexOf('?')) allUrl += '?';
		  for(var i = 0; i < massData.length; i++)
		     allUrl += massData[i] + '&';
		  allUrl = allUrl.substring(0, allUrl.length - 1);
	   }*/
	   if(data)
		  if(url.indexOf('?') < 0) allUrl += '?';
	   allUrl += data;
	   //alert(allUrl);
	}
	else
	   send = data;
	   
	var errorReq = false;
	
	// Открыть соединение с сервером
  	xmlHttp.open(method, allUrl, true);
	if(method == "POST") xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	// Установить функцию для сервера, которая выполнится после его ответа
  	xmlHttp.onreadystatechange = function()
	{ //alert('03 state = ' + xmlHttp.readyState + ' status = ' + xmlHttp.status);
		if(!errorReq && xmlHttp.readyState == 4 && xmlHttp.status == 200) 
           responseFunc(xmlHttp.responseText);
		if(!errorReq && responseError && xmlHttp.status != 200)
		{
		   responseError(xmlHttp.status);
		   errorReq = true;
		}
	}; //alert('send = ' + send);
	// Передать запрос
  	xmlHttp.send(send);
	return true;
 }
 
 function reqGet(url, data, responseFunc, responseError)
 {
	 reqServer('GET', url, data, responseFunc, responseError);
 }
 
 function reqPost(url, data, responseFunc, responseError)
 {
	 reqServer('POST', url, data, responseFunc, responseError);
 }
  
  
