/************************************************************************************************************
(C) www.dhtmlgoodies.com, March 2006

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Version:
	1.0	Released	March. 3rd 2006

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/

var flyingSpeed = 25;
var url_addProductToBasket = '/order.php';
var url_removeProductFromBasket = '/order.php';
var txt_totalPrice = 'На сумму: ';


var shopping_cart_div = false;
var flyingDiv = false;
var currentProductDiv = false;

var shopping_cart_x = false;
var shopping_cart_y = false;

var slide_xFactor = false;
var slide_yFactor = false;

var diffX = false;
var diffY = false;

var currentXPos = false;
var currentYPos = false;

var div_id = "shopping_cart";

var ajaxObjects = new Array();


function shoppingCart_getTopPos(inputObj)
{		
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function shoppingCart_getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}
	

function addToBasket(productId)
{
	//alert('productId = '+productId+' | url_addProductToBasket = '+url_addProductToBasket);
    if(!shopping_cart_div)shopping_cart_div = document.getElementById('shopping_cart');
	if(!flyingDiv){
		flyingDiv = document.createElement('DIV');
		flyingDiv.style.position = 'absolute';
		document.body.appendChild(flyingDiv);
	}
	
	shopping_cart_x = shoppingCart_getLeftPos(shopping_cart_div);
	shopping_cart_y = shoppingCart_getTopPos(shopping_cart_div);

	currentProductDiv = document.getElementById('slidingProduct' + productId);
	
	currentXPos = shoppingCart_getLeftPos(currentProductDiv);
	currentYPos = shoppingCart_getTopPos(currentProductDiv);
	
	diffX = shopping_cart_x - currentXPos;
	diffY = shopping_cart_y - currentYPos;
	

	
	var shoppingContentCopy = currentProductDiv.cloneNode(true);
	shoppingContentCopy.id='';
	flyingDiv.innerHTML = '';
	flyingDiv.style.left = currentXPos + 'px';
	flyingDiv.style.top = currentYPos + 'px';
	flyingDiv.appendChild(shoppingContentCopy);
	flyingDiv.style.display='block';
	flyingDiv.style.width = currentProductDiv.offsetWidth + 'px';
	flyToBasket(productId);
	
}


function flyToBasket(productId)
{
	
    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 > shopping_cart_x){
		flyingDiv.style.display='none';		
	}
	if(moveX<0 && currentXPos < shopping_cart_x){
		flyingDiv.style.display='none';		
	}
		
	if(flyingDiv.style.display=='block')setTimeout('flyToBasket("' + productId + '")',1); else ajaxAddProduct(productId);	
}

function removeProductFromBasket(productId)
{
	var productRow = document.getElementById('shopping_cart_items_product' + productId);
	
	var numberOfItemCell = productRow.cells[0];
	if(numberOfItemCell.innerHTML == '1'){
		productRow.parentNode.removeChild(productRow);	
	}else{
		numberOfItemCell.innerHTML = numberOfItemCell.innerHTML/1 - 1;
	}
	updateTotalPrice();
	ajaxRemoveProduct(productId);	
}

function ajaxValidateRemovedProduct(ajaxIndex)
{
	if(ajaxObjects[ajaxIndex].response!='OK')alert('Error while removing product from the database');
	
}

function ajaxRemoveProduct(id)
{
	var res;
	var res1;

	//alert(id);
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_removeProductFromBasket;    // Saving product in this file
	ajaxObjects[ajaxIndex].setVar('id',id);
	//ajaxObjects[ajaxIndex].onCompletion = function(){ ajaxValidateRemovedProduct(ajaxIndex); };    // Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ res = makeRequest('/order.php?task=del_pos', '&id='+id, 'my_d_basket'); };    // Specify function that will be executed after file has been found
	
	ajaxObjects[ajaxIndex].runAJAX();        // Execute AJAX function
	
	
	//setTimeout('ajaxRemoveProduct1("'+id+'")',5000);
}

function ajaxRemoveProduct1(id)
{
    //alert(id);
    var ajaxIndex = ajaxObjects.length;
    ajaxObjects[ajaxIndex] = new sack();
    ajaxObjects[ajaxIndex].requestFile = url_removeProductFromBasket;    // Saving product in this file
    ajaxObjects[ajaxIndex].setVar('id',id);
    //ajaxObjects[ajaxIndex].onCompletion = function(){ ajaxValidateRemovedProduct(ajaxIndex); };    // Specify function that will be executed after file has been found
    ajaxObjects[ajaxIndex].onCompletion = function(){  makeRequest('/order.php', '?task=cart&&prod_id=0&quantity=0', 'shopping_cart');  };    // Specify function that will be executed after file has been found
    
    ajaxObjects[ajaxIndex].runAJAX();        // Execute AJAX function        
}

function ajaxUpdateCart(form_obj)
{
 //alert(form_obj.elements.length);
var res1 = false;
var res = false;
var post_str = '';
// var ajaxIndex = ajaxObjects.length;
// ajaxObjects[ajaxIndex] = new sack();
// ajaxObjects[ajaxIndex].requestFile = '/order.php';    // Saving product in this file
 // забиваем переменные из массива в POST
 for(i=0; i<form_obj.elements.length; i++)
  {
  //ajaxObjects[ajaxIndex].setVar( form_obj.elements[i].name, form_obj.elements[i].value );
  //alert(form_obj.elements[i].tagName);
  if (form_obj.elements[i].tagName == "INPUT") {
		post_str = post_str+"&"+form_obj.elements[i].name+"="+encodeURI(form_obj.elements[i].value);
  }
  if (form_obj.elements[i].tagName == "TEXTAREA") {
		post_str = post_str+"&"+form_obj.elements[i].name+"="+encodeURI(form_obj.elements[i].value);
  }
  
 }
 //alert(post_str);
//ajaxObjects[ajaxIndex].onCompletion = function(){ makeRequest('/order.php', '?task=cart&&prod_id=0&quantity=0', 'shopping_cart');  };    // Specify function that will be executed after file has been found
res = makeRequest( '/order.php?task=save_order', post_str, 'my_d_basket' );
//alert(res.readyState);
//if(res.readyState)
//{
//ajaxObjects[ajaxIndex].runAJAX();        // Execute AJAX function        
//}

}

function ajaxAddProduct(productId)
{
	var quantity = null;
    input_obj = document.getElementById('quantity'+productId);
    quantity = input_obj.value;
    
    var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_addProductToBasket;	// Saving product in this file
    ajaxObjects[ajaxIndex].setVar('productId',productId);
	ajaxObjects[ajaxIndex].setVar('quantity',quantity);
    //ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxBasketContent(ajaxIndex); };    // Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ get(productId, quantity); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}


function get(productId, quantity) {
     var getstr = "";

     //alert(obj.childNodes.length);
     //alert(productId);
    // for (i=0; i<obj.elements.length; i++) {
         
         //getstr +="<br>"+obj.elements[i].tagName;
     //    if(obj.elements[i].tagName=="SELECT") {
      //   getstr +="<br>"+obj.elements[i].value;
         //getstr += obj.elements[i].name+"="+obj.elements[i].value;
         //getstr += obj.elements[i].value;
         
      //   }
          
         //alert(obj.elements[i].value);
     
       /* if (obj.elements[i].tagName == "INPUT") {
           if (obj.childNodes[i].type == "text") {
              getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
           }
           if (obj.elements[i].type == "checkbox") {
              if (obj.childNodes[i].checked) {
                 getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
              } else {
                 getstr += obj.childNodes[i].name + "=&";
              }
           }
           if (obj.elements[i].type == "radio") {
              if (obj.childNodes[i].checked) {
                 getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
              }
		   }
		}   
		if (document.elements.tagName == "SELECT") {
		   var sel = obj.childNodes[i];
		   alert(getstr);
		   getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
		}   
		*/
	// }
 
	 getstr = '?task=cart&prod_id='+productId+'&quantity='+quantity;
	 //alert(getstr);
	 makeRequest('/order.php', getstr, div_id);
  }

  
  var http_request = false;
  function makeRequest(url, parameters, d_id) {
	 //alert(parameters);
	 div_id = d_id;
	 var full_uri = "";
	 http_request = false;
	 if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//
		   //http_request.overrideMimeType('text/xml');
		   http_request.overrideMimeType('Cache-Control: no-cache');
		   http_request.overrideMimeType('text/html');
		}
	 } else if (window.ActiveXObject) { // IE
		try {
		   http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		   try {
			  http_request = new ActiveXObject("Microsoft.XMLHTTP");
		   } catch (e) {}
		}
	 }
	 if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	 }
	 //full_uri = url + parameters
	 http_request.open('GET', url + parameters, true);
	 //http_request.setRequestHeader('Content-Type', 'text/html');
	 //http_request.setRequestHeader('Content-Type', 'text/html; charset=windows-1251');
	 //alert(http_request.readyState);
	 //http_request.overrideMimeType('Cache-Control: no-cache'); 
	 http_request.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
	 http_request.setRequestHeader("Pragma", "no-cache");
	 //http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=windows-1251"); 
	 //http_request.setRequestHeader("Content-type", "application/x-javascript; charset=windows-1251"); 
	 http_request.onreadystatechange = function() { 
	 alertContents(http_request, url); 
	 
	 if(url=='/order.php?task=save_order' && http_request.readyState == 4)
	 {
	  makeRequest('/order.php', '?task=cart&prod_id=0&quantity=0', 'shopping_cart');
	 }
	 if(url=='/order.php?task=del_pos' && http_request.readyState == 4)
	 {
	  makeRequest('/order.php', '?task=cart&prod_id=0&quantity=0', 'shopping_cart');
	 }
	 

	 }; 
	 //http_request.onreadystatechange = alertContents;
	 http_request.send(null);
	 return http_request;
	 
  }
  
  
  function alertContents(http_request, parameters) {
	 //alert(http_request.readyState);
	 
	 if (http_request.readyState == 1 || http_request.readyState==0 || http_request.readyState==2 || http_request.readyState==3 )
	 {
	  //alert("ttt "+div_id);
	  //alert(http_request.readyState);
	  document.getElementById(div_id).innerHTML = '<div style="padding-top:10px; text-align:center;" align="center"><img src="/images/odesign/indicator_medium.gif"></div>';	 
	 }
	 if (http_request.readyState == 4) {
		if (http_request.status == 200) {
		   //alert(http_request.responseText);
		   result = http_request.responseText;
		   document.getElementById(div_id).innerHTML = result;            
		} else {
		   //alert('Возникла проблема с отправкой запроса.');
		}
     }
  }