
var basket_fields = Array('mega_id','tovar_id','order_time','packing','price_base', 'maker','code','name','price','unit');

function GetStat4Tovar(tsIndex,currency) {
	document.getElementById('statistics_win').style.display = 'none';
	var query = '';
	for(var ni=0; ni<basket_fields.length; ni++)
	{
		field = basket_fields[ni];
		val = document.getElementById(field+'_'+tsIndex).value;
		query += '&'+field+'='+encodeURIComponent(val);
	}
	SendQuery('?ajax=GetStat4Tovar&line_index='+tsIndex+'&currency='+currency+query);
}

function add2basket(tsIndex,deny_offers) {
	if(deny_offers)
		if(document.getElementById('mega_id_'+tsIndex).value != 0)
		{
			PutError('Вы не можете добавлять в корзину товары на заказ');
			return;
		}
	var query = '';
	var ordered = packing = 0;
	for(var ni=0; ni<=basket_fields.length; ni++)
	{
		field = (ni<basket_fields.length ? basket_fields[ni] : 'ordered');
		val = document.getElementById(field+'_'+tsIndex).value;
		query += '&'+field+'='+encodeURIComponent(val);
		if(field == 'ordered') ordered = val;
		if(field == 'packing') packing = val;
	}
	if(ordered != 0)
	{
		if( packing!=0 && ( (ordered % packing)!= 0 ) )
		{
			PutError('Количество должно быть кратно '+packing);
			return;
		}
		SendQuery('?ajax=add2basket&line_total=line_total_'+tsIndex+query);
	}
}


function edit2basket(num_line) {
	var cnt = document.getElementById('cnt_'+num_line).value-0;
	var old_cnt = document.getElementById('old_cnt_'+num_line).value-0;
	var packing = document.getElementById('packing_'+num_line).value-0;
	if(cnt != old_cnt)
	{
		if( cnt>=0 && packing!=0 && ( (cnt % packing)!= 0 ) )
		{
			PutError('Количество в строке N'+num_line+' должно быть кратно '+packing);
			document.getElementById('cnt_'+num_line).value = old_cnt;
			return;
		}
/*
		if(cnt <= 0)
		{
			if(!confirm('Количество не может быть меньше 1. Установить количество =1 ?'))
			{
				document.getElementById('cnt_'+num_line).value =old_cnt;
				return;
			}
			cnt = 1;
		}
*/
		SendQuery('?ajax=edit2basket&num_line='+num_line+'&ordered='+cnt);
	}
	else if(!cnt)
	{
		document.getElementById('cnt_'+num_line).value = 0;
	}
}


function editALLbasket() {
	editORcalcALLbasket('editALLbasket');
}
function orderALLbasket() {
	var result = editORcalcALLbasket('orderALLbasket');
//alert(result);
	if(result)
		window.location='main/order/';
}
function editORcalcALLbasket(tsFunction) {
	var lines_ordered = '';
	var error = false;
	for (var nl=1; nl<100; nl++)
	{
		if(document.getElementById('cnt_'+nl))
		{
			var cnt = document.getElementById('cnt_'+nl).value-0;
			var old_cnt = document.getElementById('old_cnt_'+nl).value-0;
			var packing = document.getElementById('packing_'+nl).value-0;
			if(cnt != old_cnt)
			{
				if( cnt>=0 && packing!=0 && ( (cnt % packing)!= 0 ) )
				{
					PutError('Количество в строке N'+nl+' должно быть кратно '+packing);
					document.getElementById('cnt_'+nl).value = old_cnt;
					error = true;
				}
				else
					lines_ordered += nl+':'+cnt+';';
			}
			else if(!cnt)
			{
				document.getElementById('cnt_'+nl).value = 0;
			}
		}
	}
	if(lines_ordered)
	{
//alert(lines_ordered);
		SendQuery('?ajax='+tsFunction+'&lines_ordered='+lines_ordered+'&in_error='+(error?1:0));
	}
	return (!error && !lines_ordered);
}


function del2basket(num_line) {
	mess_dtl = num_line == 0 ? 'все позиции' : 'строку N'+num_line;
	if(confirm('Вы действительно хотите удалить '+mess_dtl+' из корзины?'))
		SendQuery('?ajax=del2basket&num_line='+num_line);
}

function bcurrency_change(currency) {
//alert(currency);
	if(confirm('Вы действительно хотите сменить валюту всей корзины на "'+currency.value+'"?'))
	{
		SendQuery('?ajax=bcurrency_change&new_currency='+encodeURIComponent(currency.value));
	}
	else
	{
//alert(document.getElementById('bcurrency').value);
		currency.value = document.getElementById('bcurrency').value;
	}
}

function ocurrency_change(currency) {
	SendQuery('?ajax=ocurrency_change&new_currency='+encodeURIComponent(currency.value));
}


function PutError(error) {
	alert(error);
}

function SendQuery(query) {
//alert(query);
	var req = newXMLHttpRequest(); 
	if (req)
	{
		req.onreadystatechange = getReadyStateHandler(req, processSearchResults);
		req.open('GET', query, true);
		req.send(null);
	}
}


/*
 * Update basket field
 * described in XML document.
 */
function processSearchResults(result) {
//alert(result);
	var aRes = result.split(':');
	var func = aRes[1];
	var error = aRes[2];

	if(error == 'error')
	{
		var message = aRes[3];
		if(message)
		{
			PutError(message);
		}
	}
	else if(error == 'reload')
	{
		window.location.reload();
		return;
	}

	if(func == 'add2basket')
	{
		if(error == 'error') return;
		var basket = aRes[2];
		var ordered = aRes[3];
		if(ordered == 0 ) ordered = '';
			document.getElementById(basket).innerHTML = ordered;
		document.getElementById('acc_basket_number').innerHTML = aRes[4];
		document.getElementById('acc_basket_value').innerHTML = aRes[5];
	}
	else if(func == 'editALLbasket')
	{
		if(error != 'error')
			window.location.reload();
	}
	else if(func == 'orderALLbasket')
	{
		if(error != 'error')
		{
			if(error == 'in_error')
				window.location.reload();
			else
	//			window.location.replace('main/order/');
				window.location='main/order/';
		}
	}
	else if(func == 'GetStat4Tovar')
	{
//alert(result);
		var retcode = new Array();
		retcode = [0,0];
		if(!aRes[3])
			retcode[0] = -1;
		if(!aRes[4])
			retcode[1] = -1;

		document.getElementById('stat_diag_block').style.display = 'none';
		document.getElementById('stat_bars_block').style.display = 'none';
		document.getElementById('stat_diag_error').style.display = '';
		document.getElementById('stat_bars_error').style.display = '';
		document.getElementById('stat_diag').style.visibility = 'hidden';	// для IE

		var stat_win = document.getElementById('statistics_win');
		var stat_obj = 'stat_' + aRes[2];
		var stat_pos = getElementPosition(stat_obj);
		stat_win.style.top = stat_pos.top - 5 + 'px';
//		stat_win.style.left = stat_pos.left - stat_win.offsetWidth + 20 + 'px';
		stat_win.style.left = stat_pos.left - 400 - 60 + 'px';
		stat_win.style.display = '';

		if ( retcode[0] == 0)
		{
			document.getElementById('stat_diag').src = aRes[3].replace(';',':');
			document.getElementById('stat_diag_block').style.display = '';
			document.getElementById('stat_diag').style.visibility = 'visible';	// для IE
			document.getElementById('stat_diag_error').style.display = 'none';
		}
		if ( retcode[1] == 0)
		{
			var maxBarLen = 193;	// длина 100%-го бара, px
//			var rappath = 'autoeuro/';
			var table = '<table><tr><td>Вероятность<sup>*</sup></td><td>Срок,дн.<sup>&nbsp;</sup></td><td>Доставлено<sup>**</sup></td></tr>';
			var bars = aRes[4].split('|');
			for(var ni=0; ni<bars.length; ni++)
			{
				var bar = bars[ni].split(';');
				var prob =  Math.round(bar[1]*100*10)/10;
				var barLen = Math.round(bar[2] * maxBarLen);
				var barTxt = Math.round(bar[2]*100*10)/10;

				table += '<tr>';
				table += '<td>'+prob+'%</td>';
				table += '<td>'+bar[0]+'</td>';
				table += '<td><img class="stat_bar" src="'+rappath+'images/stat_bar.png" style="width:'+barLen+'px"><div class="stat_bar_txt">'+barTxt+'%</div></td>';
				table += '</tr>';
			}
			table += '</table>';
			document.getElementById('stat_table').innerHTML = table;

			document.getElementById('stat_bars_block').style.display = '';
			document.getElementById('stat_bars_error').style.display = 'none';
		}
	}
	else if(func == '')
	{
	}

//alert('*'+basket+'*'+ordered+'*'+document.getElementById(basket));
}

show_my_users = false;
function my_users() {
	show_my_users = !show_my_users;
	if(show_my_users)
	{
		document.getElementById('show_my_users').innerHTML = '(скрыть)';
		document.getElementById('my_users').style.display = '';
	}
	else
	{
		document.getElementById('show_my_users').innerHTML = '(показать)';
		document.getElementById('my_users').style.display = 'none';
	}
}

function ToggleDisplay(id) {
	var obj = document.getElementById(id);
	if(obj)
		obj.style.display = obj.style.display ? '' : 'none';
}
function ToggleVisibility(id) {
	var obj = document.getElementById(id);
	if(obj) {
		obj.style.visibility = obj.style.visibility=='hidden' ? 'visible' : 'hidden';
		obj.style.display = obj.style.visibility=='hidden' ? 'none' : '';
	}
}

function recognitionRefillBasket(ask) {
	answer = (ask == 'clear_extras') ? 'clear_extras' : ((!ask || confirm(ask)) ? 'yes' : 'no');
	SendQuery('?ajax=recognitionRefillBasket&answer='+answer);
}
/*
function sleep(milliseconds) {
	var start = new Date().getTime();
	while ((new Date().getTime() - start) < milliseconds){}
}
*/
////////////////////////////////////////////////////////////////
// ajax
////////////////////////////////////////////////////////////////
/*
 * Returns an new XMLHttpRequest object, or false if the browser
 * doesn't support it
 */
function newXMLHttpRequest() {

  var xmlreq = false;

  // Create XMLHttpRequest object in non-Microsoft browsers
  if (window.XMLHttpRequest) {
    xmlreq = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    
    try {
      // Try to create XMLHttpRequest in later versions
      // of Internet Explorer

      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e1) {

      // Failed to create required ActiveXObject
      
      try {
        // Try version supported by older versions
        // of Internet Explorer
      
        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (e2) {

        // Unable to create an XMLHttpRequest by any means
        xmlreq = false;
      }
    }
  }

return xmlreq;
}

 /*
	* Returns a function that waits for the specified XMLHttpRequest
	* to complete, then passes it XML response to the given handler function.
  * req - The XMLHttpRequest whose state is changing
  * responseXmlHandler - Function to pass the XML response to
  */
 function getReadyStateHandler(req, responseXmlHandler) {
   // Return an anonymous function that listens to the XMLHttpRequest instance
   return function () {
//     alert("in getReadyStateHandler: " + req.readyState + " : " + req.status);
     // If the request's status is "complete"
     if (req.readyState == 4) {
       
       // Check that we received a successful response from the server
       if (req.status == 200) {

         // Pass the XML payload of the response to the handler function.
         //responseXmlHandler(req.responseXML);
         responseXmlHandler(req.responseText); 

       } else {

         // An HTTP problem has occurred
         alert("HTTP error "+req.status+": "+req.statusText);
       }
     }
   }
 }


////////////////////////////////////////////////////////////////////////
// перехват tablesort-а
////////////////////////////////////////////////////////////////////////

	function myTShook(table,sortList)
	{
		var headerSort = getHeaderSort(table.config.headerList, sortList);
		document.getElementById('headerSort').innerHTML = headerSort;
//alert(headerSort);
	}

	function getHeaderSort(headerList,sortList)
	{
		var headerSort = '';
		for (var ni=0; ni<sortList.length; ni++)
		{
			headerSort += ' + '+ (sortList[ni][1]==0 ? '&uarr;' : '&darr;') +' '+ headerList[sortList[ni][0]].innerHTML;
		}
		return headerSort.substring(3);
	}

//----------------- прочие ф-ции --------------------//

    function getElementPosition(elemId)
    {
        var elem = typeof elemId == 'object' ? elemId : document.getElementById(elemId);
 
        var w = elem.offsetWidth;
        var h = elem.offsetHeight;
 
        var l = 0;
        var t = 0;
 
        while (elem)
        {
            l += elem.offsetLeft;
            t += elem.offsetTop;
            elem = elem.offsetParent;
        }
 
        return {"left":l, "top":t, "width": w, "height":h};
    }

