function bselect(controlid) {
  var control = document.getElementById(controlid);
  control.select()
};

function bvalid(evt, controlid) {
  var control = document.getElementById(controlid);
  // var code = (document.all) ? evt.keyCode : evt.charCode;
  var code = evt.charCode || evt.keyCode;
  // 8 - backspace
  // 9 - tab
  // 48-57 - 0-9
  if (code >= 48 && code <= 57 || code == 0 || code == 8 || code == 9) {
    return true
  }
  return false;
};

function calculateSum(control, priceId, sumId) {
  var quantity = control.value;
  var price = document.getElementById(priceId).value;
  var sumControl = document.getElementById(sumId);
  if (control.value == "0")
  {
      sumControl.innerHTML = price;
  }
  else
  {
      sumControl.innerHTML = Math.round(control.value*price*100)/100;
  }
}

function loadXMLDoc(url) {
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

var req;

function processReqChange() {   
    var s = stat(req.readyState);
    
    ab = window.setTimeout("req.abort();", 5000);
    
    if (req.readyState == 4) {
        clearTimeout(ab);
        // only if "OK"
        if (req.status == 200) {
          //alert("s=" + s + " req.status=" + req.status + " req.statusText=" + req.statusText + " req.responseText=" + req.responseText);
          var control = document.getElementById('shoppingCart');
          control.innerHTML=req.responseText;
        } else {
            alert("Не удалось получить данные:\n" + req.statusText);
        }
    }  
}

function stat(n)
{
  switch (n) {
    case 0:
      return "не инициализирован";
    break;
      
    case 1: 
      return "загрузка...";
    break;
    
    case 2: 
      return "загружено";
    break;
    
    case 3: 
      return "в процессе...";
    break;
      
    case 4: 
      return "готово";
    break;
    
    default:
      return "неизвестное состояние";  
  }  
}

function addToCart(productId, quantityPrefix, type)
{
  //alert("itemAdded" + productId);
  var addedSpan = document.getElementById("itemAdded" + productId);
  
  var quantity = document.getElementById(quantityPrefix + productId).value;

  if (quantity >= 0)
  {
    addedSpan.innerHTML = "<img src='images/logo2.gif' border='0' alt='в корзине'/>";
  }
  
  if (quantity == 0)
  {
      quantity = 1;
  }
//  alert("quantity=" + quantity);
  loadXMLDoc('addToCart.php?add2cart=' + productId + "&quantity=" + quantity + "&type=" + type);
//  loadXMLDoc('index.php?shopping_cart=yes&add2cart_async=' + params);
}

function showgr(id) {
//var grp = document.getElementById(id);
var gr  = document.getElementById("d"+id);
var treeIcon  = document.getElementById("i"+id);
//alert("id=" + id + " gr=" + gr);
//alert("id=" + id + " treeIcon=" + treeIcon);

if (gr.style.display=='none') {
    gr.style.display='';
    treeIcon.src = 'images/tree/expand_minus.gif';
    /*gr.title = 'свернуть';*/ }
else {
    gr.style.display='none';
    treeIcon.src = 'images/tree/expand_plus.gif';
    /*gr.title = 'развернуть'; */}
}

function show(id, id2, id3, iconId)
{
  var order = document.getElementById(id);
  var order2 = document.getElementById(id2);
  var order3 = document.getElementById(id3);
  var icon  = document.getElementById(iconId);
//alert("id=" + id + " order=" + order);

  if (order.style.display=='none')
  {
     order.style.display='';
     order2.style.display='';
     order3.style.display='';
     icon.src = 'images/orders/expand_minus.gif';
  }
  else
  {
      order.style.display='none';
      order2.style.display='none';
      order3.style.display='none';
      icon.src = 'images/orders/expand_plus.gif';
  }
}

function findArticul()
{
    var control = document.getElementById("articul");
    var articul = control.value;
    loadXML("orders_async.php?find_articul=yes&articul=" + articul, findArticulSP);
}

function findArticulSP() {   
//    var funcObj = arguments.callee;
    var result = req.responseText.split(";");

    var control = document.getElementById("articul");
    control.value = result[0];
    var control = document.getElementById("productInfo");
    control.innerHTML = "<a href='index.php?productID=" + result[1] + "' target='_blank'><img src='products_pictures/" + result[2] + "' width='50' height='50' alt='" + result[0] + "'/></a>" + result[3];
    
}


function updateArticulOrderItem(control, orderId, productId, shippingType)
{
  var viewElementId = "oi" + orderId + "_" + productId + "_" + shippingType;
  var articulElementId = "newArticul" + orderId + "_" + productId + "_" + shippingType;
  var imageElementId = "image" + orderId + "_" + productId + "_" + shippingType;
  var linkElementId = "link" + orderId + "_" + productId + "_" + shippingType;
  var priceElementId = "price" + orderId + "_" + productId + "_" + shippingType;
  var newProductIdElementId = "newProductId" + orderId + "_" + productId + "_" + shippingType;

  var articul = document.getElementById(articulElementId).value;

  var statusSpan = document.getElementById(viewElementId);
  statusSpan.innerHTML = "<img src='images/orders/wait16trans.gif' border='0' alt='Обновление артикула...'/><br/>Обновление артикула...";
  
  updateArticulSP.viewElementId = viewElementId;
  updateArticulSP.articulElementId = articulElementId;
  updateArticulSP.imageElementId = imageElementId;
//  updateArticulSP.imageElementId = imageElementId;
  updateArticulSP.linkElementId = linkElementId;
  updateArticulSP.productId = productId;
  updateArticulSP.priceElementId = priceElementId;
  updateArticulSP.newProductIdElementId = newProductIdElementId;
  
  loadXML("orders_async.php?updateArticul=yes&orderId=" + orderId + "&productID=" + productId + "&shippingType=" + shippingType + "&articul=" + articul, updateArticulSP);
}

function deleteOrderItem(orderId, productId, shippingType)
{
  var viewElementId = "oi" + orderId + "_" + productId + "_" + shippingType;
  var deleteElementId = "tr" + orderId + "_" + productId + "_" + shippingType;
  
  var statusSpan = document.getElementById(viewElementId);
  statusSpan.innerHTML = "<img src='images/orders/wait16trans.gif' border='0' alt='Удаление...'/><br/>Удаление...";
  
  deleteSP.viewElementId = viewElementId;
  deleteSP.deleteElementId = deleteElementId;
  
  
  loadXML("orders_async.php?delete=yes&orderId=" + orderId + "&productID=" + productId + "&shippingType=" + shippingType, deleteSP);
//  loadXML("index.php?delete=yes&orderId=" + orderId + "&productID=" + productId + "&shippingType=" + shippingType, deleteSP);
}

function saveOrderItem(orderId, productId, shippingType)
{
  var viewElementId = "oi" + orderId + "_" + productId + "_" + shippingType;
  var orderItemElementId = "tr" + orderId + "_" + productId + "_" + shippingType;

  var newProductIdElementId = "newProductId" + orderId + "_" + productId + "_" + shippingType;
  var newPriceElementId = "newPrice" + orderId + "_" + productId + "_" + shippingType;
  var newQuantityElementId = "newQuantity" + orderId + "_" + productId + "_" + shippingType;
  var newShippingTypeElementId = "newShippingType" + orderId + "_" + productId + "_" + shippingType;

  var newProductId = document.getElementById(newProductIdElementId).value;
//  var newPrice = document.getElementById(newPriceElementId).value;
  var newQuantity = document.getElementById(newQuantityElementId).value;
  var select = document.getElementById(newShippingTypeElementId);
//  alert("select=" + select);

  var newShippingType = select.options[select.selectedIndex].value;

  
  var statusSpan = document.getElementById(viewElementId);
  statusSpan.innerHTML = "<img src='images/orders/wait16trans.gif' border='0' alt='Сохранение...'/><br/>Сохранение...";
  
  saveSP.viewElementId = viewElementId;
  saveSP.orderItemElementId = orderItemElementId;
  
//  loadXML("includes/async/orders_async.php?save=yes" + 
  loadXML("orders_async.php?save=yes" + 
          "&orderId=" + orderId +
          "&productID=" + productId +
          "&shippingType=" + shippingType +
          "&newProductID=" + newProductId +
//          "&newPrice=" + newPrice +
          "&newQuantity=" + newQuantity +
          "&newShippingType=" + newShippingType,
          saveSP);
}

function saveSP() {   
    var funcObj = arguments.callee;

    if (req.responseText.length < 5 || req.responseText.substring(5,0).toUpperCase() == "ERROR")
    {
        var control = document.getElementById(funcObj.viewElementId);
        control.innerHTML=req.responseText;
    }
    else
    {
        setOuterHTML(funcObj.orderItemElementId, req.responseText);
    }
}


function saleOrderItem(orderId, productId, shippingType)
{
/*  var seller = document.getElementById("seller").value;
  if (seller.length == 0)
  {
     alert("Ошибка: Не указан продавец!");
     return;
  }*/
  
  var viewElementId = "oi" + orderId + "_" + productId + "_" + shippingType;
  var saleElementId = "tr" + orderId + "_" + productId + "_" + shippingType;

  var statusSpan = document.getElementById(viewElementId);
  statusSpan.innerHTML = "<img src='images/orders/wait16trans.gif' border='0' alt='Продажа...'/><br/>Продажа...";

  var stockControl = document.getElementById("stock");
  var stockId = stockControl.options[stockControl.selectedIndex].value;
  
  var userControl = document.getElementById("user");
  var userId = userControl.options[userControl.selectedIndex].value;
  
  var comment = document.getElementById("comment").value;
  
  saleSP.viewElementId = viewElementId;
  saleSP.saleElementId = saleElementId;
  
  saleSP.orderId = orderId;
  
  loadXMLPost("orders_async.php?sale=yes&orderId=" + orderId + "&productId=" + productId + "&shipping=" + shippingType + "&stockId=" + stockId +
              "&userId=" + userId + "&comment=" + comment, saleSP, "POST");
              
}

function saleSP() {   
    var funcObj = arguments.callee;

    if (req.responseText.length < 5 || req.responseText.substring(5,0).toUpperCase() != "ERROR")
    {
        var control = document.getElementById(funcObj.saleElementId);
        control.parentNode.removeChild(control);
        showSaleItem(req.responseText, funcObj.orderId);
    }
    else
    {
        var control = document.getElementById(funcObj.viewElementId);
        control.innerHTML=req.responseText;
    }
}

function showSaleItem(saleId, orderId)
{
  showSaleItemSP.orderId = orderId;
  loadXML("orders_async.php?get_sale_item=yes&saleId=" + saleId, showSaleItemSP);
}

function showSaleItemSP()
{
    var funcObj = arguments.callee;

    if (req.responseText.length == 0)
    {
        var control = document.getElementById("saledItemsMessages");
        control.innerHTML="Ошибка при показе продажи";
    }
    else
    {
        //var control = document.getElementById("saleorderItemsTable" + funcObj.orderId);
        var totalRow = document.getElementById("salesTotal" + funcObj.orderId);
        var tr = document.createElement("tr");
        totalRow.parentNode.insertBefore(tr, totalRow);
        tr.innerHTML = req.responseText;
    }
}

function cancelSaleItem(saleId)
{
    var statusSpan = document.getElementById("saleItem" + saleId);
    statusSpan.innerHTML = "<img src='images/orders/wait16trans.gif' border='0' alt='Отмена продажи...'/>Отмена<br/>продажи...";
 
    cancelSaleItemSP.saleId = saleId;
//alert("1112");

    loadXMLPost("orders_async.php?cancel_sale=yes&saleId=" + saleId, cancelSaleItemSP, "POST");
}

function cancelSaleItemSP()
{
    var funcObj = arguments.callee;
//alert("111");

    if (req.responseText.length < 5 || req.responseText.substring(5,0).toUpperCase() == "ERROR")
    {
    
    
    }
    else
    {
    
       var control = document.getElementById(funcObj.deleteElementId);
              control.parentNode.removeChild(control);
  
    }

    var control = document.getElementById("saleItem" + funcObj.saleId);
    control.innerHTML=req.responseText;
}

function updateImage(orderId, productId, shippingType)
{
  var viewElementId = "oi" + orderId + "_" + productId + "_" + shippingType;
  var deleteElementId = "tr" + orderId + "_" + productId + "_" + shippingType;
  
  var statusSpan = document.getElementById(viewElementId);
  statusSpan.innerHTML = "<img src='images/orders/wait16trans.gif' border='0' alt='Удаление...'/><br/>Удаление...";
  
  deleteSP.viewElementId = viewElementId;
  deleteSP.deleteElementId = deleteElementId;
  
  
  loadXML("orders_async.php?delete=yes&orderId=" + orderId + "&productID=" + productId + "&shippingType=" + shippingType, deleteSP);
//  loadXML("index.php?delete=yes&orderId=" + orderId + "&productID=" + productId + "&shippingType=" + shippingType, deleteSP);
}

function loadXML(url, successProcessor) {
    loadXMLPost(url, successProcessor, "GET");
}

function loadXMLPost(url, successProcessor, method) {
    responseProcessor.successProcessor = successProcessor;

    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = responseProcessor;
        req.open(method, url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = responseProcessor;
            req.open(method, url, true);
            req.send();
        }
    }
}

function responseProcessor() {   
    var s = stat(req.readyState);
    var funcObj = arguments.callee;

    ab = window.setTimeout("req.abort();", 5000);
    
    if (req.readyState == 4) {
        clearTimeout(ab);
        // only if "OK"
        if (req.status == 200) {
          funcObj.successProcessor();
        } else {
            alert("Не удалось получить данные:\n" + req.statusText);
        }
    }  
}

function deleteSP() {   
    var funcObj = arguments.callee;

          if (req.responseText.length == 0)
          {
              var control = document.getElementById(funcObj.deleteElementId);
              control.parentNode.removeChild(control);
          }
          else
          {
              var control = document.getElementById(funcObj.viewElementId);
              control.innerHTML=req.responseText;
          }
}

function updateArticulSP() {   
    var funcObj = arguments.callee;
//alert(req.responseText);
    var result = req.responseText.split(";");
    var control = document.getElementById(funcObj.articulElementId);
    control.value = result[0];
    control = document.getElementById(funcObj.viewElementId);
    control.innerHTML = "Артикул обновлен";
              
    control = document.getElementById(funcObj.imageElementId);
    control.src = "products_pictures/" + result[1];
    control.alt = result[0];
    control = document.getElementById(funcObj.linkElementId);
    control.href = "index.php?productID=" + result[2];
    
    control = document.getElementById(funcObj.newProductIdElementId);
    control.value = result[2];
    
}

function setOuterHTML(ElementID, txt)
{
    var someElement = document.getElementById(ElementID); 

    //работает для IE, но не работает для Firefox.
    if (someElement.outerHTML)
    {
        someElement.outerHTML = txt;
    } 

    //работает для Firefox, но не работает для IE.
    else
    {
        var range = document.createRange();
        range.setStartBefore(someElement);
        var docFrag = range.createContextualFragment(txt);
        someElement.parentNode.replaceChild(docFrag, someElement);
    }
} 

function saveOurPrice(type, productId)
{
    var inputlTodayId = "ourPriceToday" + productId;
    var controTodaylId = "qToday" + productId;
    var priceTodayId = "digitPrice" + productId;
    var sumTodayId = "priceToday" + productId;

    var inputlZakazId = "ourPriceZakaz" + productId;
    var controZakazlId = "qZakaz" + productId;
    var priceZakazId = "digitZakaz" + productId;
    var sumZakazId = "priceZakaz" + productId;

    var priceToday;
    var priceZakaz;

    var inputToday = document.getElementById(inputlTodayId);
    var inputZakaz = document.getElementById(inputlZakazId);
    
    if (type == 0)
    {
        priceToday = inputToday.value;
        priceZakaz = Math.round(priceToday - priceToday/10);
        inputZakaz.value = priceZakaz
    }
    else
    {
        priceZakaz = inputZakaz.value;
        priceToday = Math.round(priceZakaz/90*100);
        inputToday.value = priceToday;
    }


    var waitTodayId = "wait" + inputlTodayId;
    var waitZakazId = "wait" + inputlZakazId;
    
    addWaitMessage(inputToday.parentNode, "Сохранение", waitTodayId);
    addWaitMessage(inputZakaz.parentNode, "Сохранение", waitZakazId);

    var url = "products_async.php?set_our_price=yes&productId=" + productId + "&priceToday=" + priceToday + "&priceZakaz=" + priceZakaz;
    
    var functionSP = saveOurPriceSP;
    functionSP.waitTodayId = waitTodayId;
    functionSP.waitZakazId = waitZakazId;
    functionSP.controTodaylId = controTodaylId;
    functionSP.controZakazlId = controZakazlId;
    functionSP.priceTodayId = priceTodayId;
    functionSP.priceZakazId = priceZakazId;
    functionSP.sumTodayId = sumTodayId;
    functionSP.sumZakazId = sumZakazId;

    if (priceToday == 0)
    {
        var inputOriginalPriceToday = document.getElementById("o_p_t" + productId);
        var inputOriginalPriceZakaz = document.getElementById("o_p_z" + productId);
        functionSP.priceToday = inputOriginalPriceToday.value;
        functionSP.priceZakaz = inputOriginalPriceZakaz.value;

    }
    else
    {
        functionSP.priceToday = priceToday;
        functionSP.priceZakaz = priceZakaz;
    }


    loadXML(url, functionSP);
}

function saveOurPriceSP()
{
    var funcObj = arguments.callee;
    //alert("saveOurPriceTodaySP " + req.responseText);

    if (req.responseText.length > 0 /* 5 || req.responseText.substring(5, 0).toUpperCase() == "ERROR"*/)
    {
        var waitElement = document.getElementById(funcObj.waitTodayId);
        addErrorMessage(waitElement.parentNode, req.responseText);
        waitElement = document.getElementById(funcObj.waitZakazId);
        addErrorMessage(waitElement.parentNode, req.responseText);
    }
    else
    {
        var priceControl = document.getElementById(funcObj.priceTodayId);
        priceControl.value = funcObj.priceToday;
        priceControl = document.getElementById(funcObj.priceZakazId);
        priceControl.value = funcObj.priceZakaz;

        var control = document.getElementById(funcObj.controTodaylId);
        calculateSum(control, funcObj.priceTodayId, funcObj.sumTodayId);
        control = document.getElementById(funcObj.controZakazlId);
        calculateSum(control, funcObj.priceZakazId, funcObj.sumZakazId);

    
    }
    removeWaitMessage(funcObj.waitTodayId);
    removeWaitMessage(funcObj.waitZakazId);
}

function addErrorMessage(parent, message)
{
    var text = document.createTextNode(message);
    parent.appendChild(text);
}

function removeWaitMessage(waitId)
{
    var waitElement = document.getElementById(waitId); 
    //alert(waitElement);

    waitElement.parentNode.removeChild(waitElement);
}

function addWaitMessage(parent, message, waitId)
{
    var span = document.createElement("span");
    span.id = waitId;
    parent.appendChild(span);

    var img = document.createElement("img");
    img.src = "images/orders/wait16trans.gif";
    img.border = "0";
    img.alt = message;
    span.appendChild(img);

    var text = document.createTextNode(message);
    span.appendChild(text);
}

function v_getSelected(selectId)
{
  var select = document.getElementById(selectId);
  return select.options[select.selectedIndex].value;
}

function showComponent(id, iconId)
{
  var div = document.getElementById(id);
  var icon  = document.getElementById(iconId);
//alert("id=" + id + " order=" + order);

  if (div.style.display=='none')
  {
     div.style.display='';
     icon.src = 'images/orders/expand_minus.gif';
  }
  else
  {
      div.style.display='none';
      icon.src = 'images/orders/expand_plus.gif';
  }
}

