/*
pavel publichenko 2010
2010.04.28
*/


/********************************************************/
/* Áàçîâûå ôóíêöèè 					*/
/********************************************************/
var Ajax = {

PostRequest : function (url, data, 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('POST',url,true) 
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
  request.send(data);

  request.onreadystatechange = function() { 
    if(request.readyState==4) 
    { 
      try 
      { 
        eval(request.responseText);
        callback();
      }
      catch (e) 
      { 
        alert("ÎØÈÁÊÀ:\n" + e.message+"\n\n"+request.responseText); 
      }
      delete request; 
    } 
  }

  return false;
}/*PostRequest*/,


GetRequest : function (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(null);

  request.onreadystatechange = function() { 
    if(request.readyState==4) 
    { 
      try 
      { 
        eval(request.responseText);
        callback();
      }
      catch (e) 
      { 
        alert("ÎØÈÁÊÀ:\n" + e.message+"\n\n"+request.responseText); 
      }
      delete request; 
    } 
  }

  return false;
}/*GetRequest*/,


// 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.


  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();

    if (s.setAttribute) s.setAttribute('src', href); else s.src = href;
  }, 10);
}/*ObtainScript*/,


// Çàãðóçêà ñîäåðæèìîãî
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;
    }
  }

//  url += '&rand'+Math.random();
  request.open('GET',url,true) 
  request.send(null);

  request.onreadystatechange = function() { 
    if(request.readyState==4) 
    { 
       try 
       { 
	  target.innerHTML = request.responseText;
	  callback();
       }
       catch (e) 
       { 
          alert("ÎØÈÁÊÀ:\n\n" + e.message); 
       }
       delete request; 
    } 
  }
}/*Load*/,


// Çàãðóçêà XML
ObtainXML : function (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;
    }
  }

//  url += '&rand'+Math.random();
  request.open('GET',url,true) 
  request.send(null);

  request.onreadystatechange = function() { 
    if(request.readyState==4) 
    { 
       try 
       { 
	  callback(request.responseXML);
       }
       catch (e) 
       { 
          alert("ÎØÈÁÊÀ:\n\n" + e.message); 
       }
       delete request; 
    } 
  }
}/*ObtainXML*/


};
