// javascript-код голосования из примера  http://javascript.ru/ajax/intro
// <input value="Голосовать!" onclick="vote()" type="button" />
// <div id="vote_status">Здесь будет ответ сервера</div>

var req;
var objLukoshko;
var objMsg;


function InitJS()
{
   //alert('function InitJS()');
   objLukoshko = document.getElementById('lukoshko_div');

   objWrapper = document.getElementById('wrapper');
   a = window.getComputedStyle(objWrapper, "");
   iWrapperH = a.getPropertyValue("height");
//return;
//   objWrapperL = document.getElementById('wrapper_l');
//   if(objWrapperL != null)
//      objWrapperL.style.height = iWrapperH;
//
//   objWrapperR = document.getElementById('wrapper_r');
//   if(objWrapperR != null)
//      objWrapperR.style.height = iWrapperH;

   //objWrapperR.color = '#ff0000';
   //alert('function InitJS('+iWrapperH+')');
   // window.getComputedStyle(elem,null).getPropertyValue("box-shadow");
}




function SendZakazToServer(sData, sLiId, iId)
{
   req = getXmlHttp()                                             // 1) создать объект для запроса к серверу
   req.onreadystatechange = ReqZakazFromServer;                   // 2) задать функцию приёма ответа
   req.open('GET', '/kernel/02_ajax_add_to_korz.php?x=1&'+sData, true);  // 3) задать адрес подключения
   req.send(null);                                                // объект запроса подготовлен: указан адрес и создана функция чтения ответа - отослать запрос
   //objLukoshko.innerHTML = 'Ожидаю ответа сервера...';
}



function ClearZakaz()
{
   req = getXmlHttp()
   req.onreadystatechange = ReqZakazFromServer;
   req.open('GET', '/kernel/02_ajax_add_to_korz.php?clear=1', true);
   req.send(null);
}



function ShowZakaz()
{
   req = getXmlHttp()
   req.onreadystatechange = ReqZakazFromServer;
   req.open('GET', '/kernel/02_ajax_add_to_korz.php?show=1', true);
   req.send(null);
}


function ReqZakazFromServer()
{
   // onreadystatechange активируется при получении ответа сервера
   if (req.readyState == 4) {
      // если запрос закончил выполняться
      // если статус 200 (ОК) - выдать ответ пользователю
      if(req.status == 200)
      {
         //objLukoshko.innerHTML = req.responseXML;
         objLukoshko.innerHTML = req.responseText;
         //objMsg.innerHTML = '<div class="imag_cena_1"><a href="/show-korz.html">Оформить заказ</a></div>';
         objMsg.innerHTML = '<a href="/show-korz.html">Оформить заказ</a>';
         //objMsg.innerHTML = '<div class="imag_cena_2">Добавлено<br><a href="index.php?show_korz=1">Оформить заказ</a></div>';
         //alert("Товар добавлен в корзину");
         //alert("Ответ ReqZakazFromServer "+req.status);
      }
      // тут можно добавить else с обработкой ошибок запроса
   }
}



function getXmlHttp()
{
   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;
}








function GetTopPos(inputObj)
{
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}



function GetLeftPos(inputObj)
{
   var returnValue = inputObj.offsetLeft;
   while((inputObj = inputObj.offsetParent) != null){
     if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
   }
   return returnValue;
}


var flyingSpeed = 35;
var flyingSpeedK = 1;

var lukoshkoDiv = false;
var flyingDiv = false;
var currentProductDiv = false;

var lukoshkoXPos = false;
var lukoshkoYPos = false;
var currentXPos = false;
var currentYPos = false;

var diffX = false;
var diffY = false;

var flying = false;
var currentProductWidth = false;
var lukoshkoWidth = false;



function AddToKorz(sData, sLiId, iId)
{
	if(flying && flyingDiv.style.display=='block')
      return;

   lukoshkoDiv = document.getElementById('lukoshko_div');
	lukoshkoXPos = GetLeftPos(lukoshkoDiv);
	lukoshkoYPos = GetTopPos(lukoshkoDiv);
	lukoshkoWidth = lukoshkoDiv.offsetWidth;


   flyingDiv = document.createElement('DIV');
   flyingDiv.style.position = 'absolute';
   document.body.appendChild(flyingDiv);

	currentProductDiv = document.getElementById(sLiId);
	currentXPos = GetLeftPos(currentProductDiv);
	currentYPos = GetTopPos(currentProductDiv);

   flyingSpeed  = 5;
   flyingSpeedK = 1;

	currentProductWidth = currentProductDiv.offsetWidth;
   currentProductHeight = currentProductDiv.offsetHeight;

   if(currentProductWidth <= 300)
      diffX = lukoshkoXPos - currentXPos;
   else
      diffX = lukoshkoXPos-(currentProductWidth/2) - currentXPos;
	diffY = lukoshkoYPos - currentYPos - currentProductHeight;

	var contentCopy = currentProductDiv.cloneNode(true);
	contentCopy.id='';
	flyingDiv.innerHTML = '';
	flyingDiv.style.left = currentXPos + 'px';
	flyingDiv.style.top = currentYPos + 'px';
	flyingDiv.appendChild(contentCopy);
	flyingDiv.style.display='block';
	flyingDiv.style.width = currentProductDiv.offsetWidth + 'px';
   flying = true;
	flyToKorz(sData, sLiId, iId);

   objMsg = eval( document.getElementById('add_to_korz_status_'+iId) )
   objMsg.innerHTML = '<span class="imag_cena_1">Подождите...</span>';
}


function flyToKorz(sData, sLiId, iId)
{
   flyingSpeed  = flyingSpeedK;
   flyingSpeedK *= 1.2;

	var maxDiff = Math.max(Math.abs(diffX),Math.abs(diffY));
	var moveX = (diffX / maxDiff) * flyingSpeed;
	var moveY = (diffY / maxDiff) * flyingSpeed;

	currentXPos = currentXPos + moveX;
	currentYPos = currentYPos + moveY;

	flyingDiv.style.left = Math.round(currentXPos) + 'px';
	flyingDiv.style.top = Math.round(currentYPos) + 'px';

   if((moveX>0 && currentXPos > lukoshkoXPos)
   || (moveX<0 && currentXPos < lukoshkoXPos)
   || (moveY>0 && currentYPos+currentProductHeight > lukoshkoYPos)
   || (moveY<0 && currentYPos+currentProductHeight < lukoshkoYPos)
   ){
		flyingDiv.style.display='none';
      flying = false;
	}

	if(flyingDiv.style.display=='block')
	   setTimeout('flyToKorz(\''+sData+'\', \''+sLiId+'\', '+iId+')',25);
	else
	   SendZakazToServer(sData, sLiId, iId);
}



function DelFromKorz(iId)
{
   req = getXmlHttp()
   req.onreadystatechange = ReqZakazFromServer;
   req.open('GET', '/kernel/02_ajax_add_to_korz.php?del_from_korz='+iId, true);
   req.send(null);
}

