var box;
var req=false;
var req2=false;
var req3=false;
var req4=false;
var response = "";
var response2 = '';
var sError2 = 0;

//window.attachEvent("onload", updateCartQuantity);

if(window.ActiveXObject){
	try{req2=new ActiveXObject("Msxml2.XMLHTTP");}
		catch(e){
		try{req2=new ActiveXObject("Microsoft.XMLHTTP");}
			catch(e2){req2=false;}
		}
}
else if(!req2 && typeof XMLHttpRequest !="undefined")
	req2=new XMLHttpRequest();


function updateCartQuantity()
{
  req2.open("GET","/modules/catalog/jaxit.php?Action=updateCartQuantity",true);
  req2.setRequestHeader("Content-Type","text/plain");
  req2.onreadystatechange=function(){takeCartQuantityUpdateReply();};
  req2.send("");
}

function takeCartQuantityUpdateReply()
{
	if(req2.readyState==4){
		switch(req2.status){
		case 200:
			response2=req2.responseText;
			returnCode = response2.substr(0,1);
			oCartQuantity = document.getElementById('nCartQuantity');
			if(!oCartQuantity)  return;
			if(response2 == "0" || response2 == "")
			{
				oCartQuantity.style.display = 'none';
				oCartQuantity.innerHTML = "(0)";
			}
			else
			{
				oCartQuantity.style.display = 'inline';
				oCartQuantity.innerHTML = "("+response2+")";
			}
		break;
		case 404:
			sError2 = 404;
		break;
		case 403:
			sError2 = 403;
		break;
		default:
			sError2 = -1;
		}
	}

}

function onAppendingDone(s, oCaller){
        var nWidth = 300;
        var nHeight = 150;
        var sContent = s+"<BR><BR>Успешно Добавлено в Корзину!";
        var sTitle = "Ваш Заказ";
                appendServerDialogContent(nWidth, nHeight, sTitle, sContent);
}

function submitOrderForm(SubmitAfterCheck) {
        if(!SubmitAfterCheck) SubmitAfterCheck = 1;
        var myform = document.getElementById('oOrderForm');
        var checkFields = new Array('Name','Email','Phone','Fax','Company','InnKpp','JurAddress','Address','Rs','Bank','Ks','Bik','DirName','Comments','ComeFrom');
        var checkFieldNames = new Array('Контактное лицо','E-mail','Контактные телефоны','Факс','Название компании','ИНН/КПП','Юридический адрес','Адрес для доставки','Р/с','Банк','К/с','БИК','ФИО генерального директора','Комментарий','Откуда узнали');
        var curChild, curChildName;

        for(i=0;i<checkFields.length;i++)
        {
          curChild = 'customerOrderInfo[' + checkFields[i] + ']';
          curChildName = checkFieldNames[i];
          if(!curChildName) curChildName = '';
          curChild = document.getElementById(curChild);
          if(!curChild) continue;

          if(curChild.getAttribute('NonEmpty') == 1)
            if(curChild.value == '')
            {
//              alert('Заполните все обязательные поля!');
              alert("Заполните поле '"+curChildName+"' ");
              curChild.focus();
              return !1;
            }

          switch(curChild.getAttribute('checkValueType'))
          {
            case 'email':
            fieldValue = curChild.value.toLowerCase();
            re = /^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i;
            if(!re.test(fieldValue))
            {
              alert('Вы ввели неправильный e-mail');
              curChild.focus();
              return !1;
            }
            break;

            case 'phone':
            fieldValue = curChild.value.toLowerCase();
            re = /^[+]?[0-9 \(\)\\\/\-]*$/;
            if(!re.test(fieldValue) && fieldValue != '')
            {
              alert("Вы ввели неправильный номер в поле '"+curChildName+"'");
              curChild.focus();
              return !1;
            }
            break;

            case 'text':
            fieldValue = curChild.value.toLowerCase();
//            re = /^[а-яА-Яa-zA-Z0-9 '"`:]+$/;
            re = /^[а-яa-z0-9ё .;,'"`:-]+$/i;
            if(!re.test(fieldValue) && fieldValue != '')
            {
              alert("Неверное значение поля '" +curChildName + "'. Проверьте, пожалуйста, правильность введенных данных");
              curChild.focus();
              return !1;
            }
            break;

            //if()

            default:
	case 'none':
            //ничего не проверять
            break;
          }

        }

        if(oCode = document.getElementById('code'))
          if(oCode.value=='')
          {
            oCode.focus();
            alert("Введите код проверки");
            return !1;
          }

        if((oOrder = document.getElementById('customerOrderInfo[OrderAs]')) && (oAgree = document.getElementById('customerOrderInfo[iAgree]'))){
            if(oOrder.value == '2' && !oAgree.checked){
                alert(
                    'Пожалуйста, подтвердите свое согласие на обработку\n'+
                    'персональных данных. Личные сведения, полученные\n'+
                    'в распоряжение Интернет-магазина при регистрации\n'+
                    'или каким-либо иным образом, не будут без разрешения\n'+
                    'пользователей передаваться третьим организациям и\n'+
                    'лицам за исключением ситуаций, когда этого\n'+
                    'требует закон или судебное решение.'
                    );
                  return !1;
            }
        }

//        alert('Ура! Все прошло без ошибок!');
        if(SubmitAfterCheck)
          document.getElementById('oOrderForm').submit();
}

function showFloatBoxAsWindow(nItemId)
{
  //  alert(nItemId);
  window.open("/modules/catalog/shopingcart.php?Action=DisplayVariants&ItemId="+nItemId, 'Variants','width=434,height=300,alwaysRaised="yes",z-lock="no"');
}

function setSort(sDir)
{
  if(sDir != 'desc') sDir = 'asc';
  document.getElementById("oOrderAction").value = "sort"+sDir;
  document.getElementById("oOrderForm").submit();
}
//----------------------------------------------------------/WN----------------------------------------------------------//

function calculateAmount(nItemId, oObj) {
        var oTarget = document.getElementById("oTDAmount["+nItemId+"]");
        var nRetail = document.getElementById("oTDRetail["+nItemId+"]").innerHTML;
                oTarget.innerHTML = nRetail*oObj.value;
                calculateTotalAmount();
}

function deleteItemFromOrder(nItemId){
        document.getElementById("oOrderAction").value = "deleteItem";
        document.getElementById("oOrderItemId").value = nItemId;
        document.getElementById("oOrderForm").submit();
}

function deleteItemVariantFromOrder(nItemId){
        document.getElementById("oOrderAction").value = "deleteItemVariant";
        document.getElementById("oOrderItemId").value = nItemId;
        document.getElementById("oOrderForm").submit();
}


function calculateTotalAmount() {
        var oTarget = document.getElementById("oOrderTotal");
        var oNoOrderTarget = document.getElementById('oNoOrderTotal');
        var nTotal = 0;
        var nNoOrderTotal = 0;
        var tSpan, tInput;
        var nQuantity;
        var fCost;
        var fNewPrice;

        for(i=0; ;i++)
        {
          tSpan = document.getElementById('amount['+i+']');
          tInput = document.getElementById('quantity['+i+']');
          if(!tSpan || !tInput) break;
          nQuantity = tInput.value;

          if(nQuantity*1 < 0)
          {
            nQuantity *= -1;
            tInput.value = nQuantity;
          }

          re = /^[0-9]+$/;
          if(!re.test(tInput.value))
          {
            nQuantity = tSpan.getAttribute('startQuantity');
            tInput.value = nQuantity;
          }

          reFloat = /^[0-9]+[\.][1-9]$/;
          fCost = tSpan.getAttribute('cost') * 1;
          if(fCost)
          {
            fNewPrice = Math.round(fCost * nQuantity * 100)/100;
            fNewPrice = fNewPrice + '';
            if(reFloat.test(fNewPrice))
              fNewPrice = fNewPrice + '0';
            if(Math.floor(fNewPrice) == fNewPrice) fNewPrice += '.00';
            tSpan.innerHTML = fNewPrice;
          }
          else
            if(nQuantity != 0)
              nNoOrderTotal++;

          nTotal += fCost * nQuantity;
        }
        newTotal = Math.round(nTotal * 100)/100;
        newTotal = newTotal + '';
        if(Math.floor(newTotal) == newTotal) newTotal += '.00';
        if(reFloat.test(newTotal))
          newTotal = newTotal + '0';
        if(newTotal == "0") newTotal = "0.00";

        oTarget.innerHTML = newTotal;

        if(oNoOrderTarget)  oNoOrderTarget.innerHTML = nNoOrderTotal;
}

function setNewCartQuantity()
{
  var i;
  var oCur;
  var sName;
  var nQuantity;
  var sString="";

          //создание запроса
  if(!req3)
  {
    if(window.ActiveXObject){
      try{req3=new ActiveXObject("Msxml2.XMLHTTP");}
      catch(e){
        try{req3=new ActiveXObject("Microsoft.XMLHTTP");}
        catch(e3){req3=false;}
      }
    }
    else if(!req3 && typeof XMLHttpRequest !="undefined")
      req3=new XMLHttpRequest();
  }

          //отправка обновлений по 15 за раз, чтобы не превысить ограничение
          //длины GET-строки (~255 символов)
  for(i=0; oCur = document.getElementById('quantity['+i+']'); i++)
  {
    sName = oCur.getAttribute('itemName');
    if(!sName)  continue;
    nQuantity = oCur.value;
    sString += '&q['+sName+']='+nQuantity;
    if(i && !(i%15))
    {
      sendNewQuantityRequest(sString);
      sString = '';
    }
  }
  if(i%15)  sendNewQuantityRequest(sString);
}

function sendNewQuantityRequest(sString)
{
//  alert("/modules/catalog/jaxit.php?Action=setNewQuantity"+sString);
  req3.open("GET","/modules/catalog/jaxit.php?Action=setNewQuantity"+sString,true);
  req3.setRequestHeader("Content-Type","text/plain");
  req3.onreadystatechange=function(){if(req3.readyState==4)  updateCartQuantity();};
  req3.send("");
}

function submitOrder(sMsg){
        var aRows = xoopsGetElementById('oOrderInfo').rows;
        var oElement = null;
        for(var i=1; i < aRows.length-1; i++){
                oElement = aRows.item(i).cells.item(0).firstChild.rows.item(0).cells.item(1).firstChild;
                if(oElement.getAttribute("NonEmpty") && oElement.value == ""){
                        alert(sMsg);
                        return;
                }
        }
        xoopsGetElementById("oOrderAction").value = "submitOrder";
        xoopsGetElementById("oOrderForm").submit();
}

function onShopWindowTableMouseOver(oObj, sText) {
        oObj.title = (event.srcElement.tagName != 'DIV' ? sText : '');
}

function onShopWindowTableClick(sUrl) {
        if(event.srcElement.tagName != 'DIV')
                document.location.href = sUrl;
}
function onShopWindowDIVMouseEvent(oObj, sClassName) {
        var oDescription, oRetail;
        switch(oObj.id) {
                case "Description":
                        oObj.className = sClassName;
                        oObj.parentNode.parentNode.parentNode.lastChild.firstChild.firstChild.rows.item(0).cells.item(1).firstChild.className = sClassName;
                break;
                case "Retail":
                        oObj.className = sClassName;
                        oObj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes(1).firstChild.firstChild.className = sClassName;
                break;
                case "Detailes":
                        oObj.parentNode.parentNode.childNodes(1).firstChild.className = sClassName;
                        oObj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes(1).firstChild.firstChild.className = sClassName;
                break;
        }
}
function onShopWindowDIVMouseClick(sUrl) {
        document.location.href = sUrl;
}
function showImage(sUrl, width, height, sName) {


        leftpos=(screen.width-width)/2;
        toppos=(screen.height-height)/2;
        var oWin = window.open("Images" , "Images" ,'width=' + width + ', height=' + height+', scrollbars=no, left='+leftpos+', top='+toppos);
        var doc = oWin.document;
                doc.write("<HTML><HEAD><TITLE>"+sName+"</TITLE></HEAD><IMG SRC='" + sUrl + "' ALT='" + sName + "'></HTML>");
                oWin.focus();
}
function calculateOrder(Obj){
        if (Obj.checked){
                document.getElementById("dostavkatr").style.display="";
                document.getElementById("colorSpan").style.color="";
                var nTotal = document.getElementById("totalSum").innerHTML*1
                var nDostavkacost=document.getElementById("dostavkacost").innerHTML
                document.getElementById("totalSumDostavka").innerHTML=nTotal*1+nDostavkacost*1;
        }
        else{
                document.getElementById("dostavkatr").style.display="none";
                document.getElementById("colorSpan").style.color="#cc3333";
                var nTotal = document.getElementById("totalSum").innerHTML*1
                var nDostavkacost=document.getElementById("dostavkacost").innerHTML
                document.getElementById("totalSumDostavka").innerHTML=nTotal*1-nDostavkacost*1;
        }
}

///////////////////////////////

if(window.ActiveXObject){
	try{req=new ActiveXObject("Msxml2.XMLHTTP");}
		catch(e){
		try{req=new ActiveXObject("Microsoft.XMLHTTP");}
			catch(e2){req=false;}
		}
}
else if(!req && typeof XMLHttpRequest !="undefined")
	req=new XMLHttpRequest();


function buildItemOrderBox(sType, nItemId, nPosition, sTitle, sDescription, sLanguage, sPrice)
{
  closeAllFloatBoxes("floatBox");
  closeAllFloatBoxes("infoTip",-1,"_out");
  if(sType != 'ItemVariant') sType='Item';
  sModel = getNodeText(sTitle);
  try
  {
    model = document.getElementById('orderBox_title'+nPosition);
    if(sModel)    model.innerText = sModel;
    content = document.getElementById('orderBox_content'+nPosition);
    content.innerHTML = "<div class='ordeBox_quantityText'>Введите необходимое Вам количество товара:</div><div class='orderBox_quantity'><b>Количество:</b> <input value='1' id='quantity"+nPosition+"' style='width: 120px;' /></div><div><a href='' onClick='return !1;'><img src='/themes/default/images/addToCart.gif' width='118' height='21' alt='Добавить в корзину' onClick='JavaScript: confirmOrder(\""+sType+"\","+nItemId+","+nPosition+");' /></a></div>";
    oDescription = document.getElementById("ordeBox_description"+nPosition);
    if(oDescription)
    {
      if(sDescription)
      {
       oDescription.style.display = "block";
       oDescription.innerHTML = "<span>Описание:</span> " + getNodeText(sDescription);
      }
      else
      {
       oDescription.style.display = "none";
       oDescription.innerHTML = "";
      }
    }
    oLanguage = document.getElementById("orderBox_language"+nPosition);
    if(oLanguage)
    {
      if(sLanguage)
      {
       oLanguage.style.display = "block";
       oLanguage.innerHTML = "<span>Язык:</span> " + getNodeText(sLanguage);
      }
      else
      {
       oLanguage.style.display = "none";
       oLanguage.innerHTML = "";
      }
    }

    oPrice = document.getElementById("orderBox_price"+nPosition);
    if(oPrice)
    {
      if(sPrice)
       oPrice.innerHTML = getNodeText(sPrice);
      else
       oPrice.innerHTML = "<a href='JavaScript:;' onClick='JavaScript:showInfoTip(\"infoTip"+nPosition+"\");'>Уточнить цену</a>";
//       oPrice.innerHTML = "&nbsp;";
    }

    showOrder('orderBox'+nPosition);
  } catch(e)
  {
//    alert(e);
    alert('Извините, произошла ошибка');
  };
}

function getNodeText(modelId)
{
  var sNewModel;
  sNewModel = document.getElementById(modelId);
  if(!sNewModel)  return '';
  for(i=0;i<sNewModel.childNodes.length;i++)
  {
    if(sNewModel.childNodes[i].nodeName != "#text")  continue;
    sModel = sNewModel.childNodes[i].data;
  }
  if(!sModel)  return !1;
  return sModel;
}

function showTorg(torgId)
{
  if(box = document.getElementById(torgId))
  {
    if(box.style.display == 'block')
    {
      box.style.display = 'none';
      return !1;
     }
  }
  else return !1;

  closeAllFloatBoxes("torgBox");
  if(box)
    box.style.display = 'block';
  return !1;
}


function showOrder(orderId)
{
  if(box = document.getElementById(orderId))
  {
    if(box.style.display == 'block')
    {
      box.style.display = 'none';
      return !1;
     }
  }
  else return !1;

  closeAllFloatBoxes("orderBox");
  if(box)
    box.style.display = 'block';
  return !1;
}


function confirmOrder(sType, nItemId, nPosition)
{
//  alert('sendRequest('+sType+','+nItemId+','+nPosition+')');
  nQuantity = document.getElementById('quantity'+nPosition).value;
  sendRequest(sType, nItemId, nQuantity, nPosition);
  content = document.getElementById('orderBox_content'+nPosition);
  if(content)  content.innerHTML = "<div class='orderBox_appendWait'>Ожидание подтверждения</div>";
}

function sendRequest(sType, nItemId, nQuantity, nPosition)
{
  if(sType != 'ItemVariant') sType = 'Item';
  re = /^[1-9]+[0-9]*$/;
  if(!re.test(nQuantity)) nQuantity = '1';
  req.open("GET","/modules/catalog/jaxit.php?Action=Append"+sType+"ToOrderConfirm&"+sType+"Id="+nItemId+"&quantity="+nQuantity,true);
  req.setRequestHeader("Content-Type","text/plain");
  req.onreadystatechange=function(){takeReply(nPosition);};
  req.send("");
//  alert("/modules/catalog/jaxit.php?Action=Append"+sType+"ToOrderConfirm&"+sType+"Id="+nItemId+"&quantity="+nQuantity);
}

function takeReply(nPosition)
{
	if(req.readyState==4){
		switch(req.status){
		case 200:
			response=req.responseText;
			returnCode = response.substr(0,1);
			content = document.getElementById('orderBox_content'+nPosition);
			if(returnCode == '1')
			{
				content.innerHTML = "<div class='orderBox_appendOk'>Товар успешно добавлен в корзину<br/><br/><a href='JavaScript: if(closeAllFloatBoxes(\"orderBox\")); location.href=\"/order.html\";' class='orderBox_navi'>Перейти в корзину</a></div>";
				try{updateCartQuantity();} catch(e){};
			}
			else			content.innerHTML = "<div class='orderBox_appendError'>Не удалось добавить товар в корзину</div>";
		break;
		case 404:
			sError = 404;
		break;
		case 403:
			sError = 403;
		break;
		default:
			sError = -1;
		}
	}
}


function showFloatBox(boxId)
{
  if(box = document.getElementById(boxId))
    if(box.style.display == 'block')
    {
      box.style.display = 'none';
      return !1;
     }
  closeAllFloatBoxes("floatBox");
  closeAllFloatBoxes("orderBox");
  if(box)
    box.style.display = 'block';
  return !1;
}

function showInfoTip(boxId)
{
  if(box = document.getElementById(boxId))
    if(box.style.display == 'block')
    {
      box.style.display = 'none';
      return !1;
     }
  if(box)
    box.style.display = 'block';
  return !1;

}

function closeFloatBox(boxId)
{
  if(box = document.getElementById(boxId))
    box.style.display = 'none';
  return !1;
}

function closeOrderBox(orderId)
{
  if(document.getElementById(orderId))
    document.getElementById(orderId).style.display = 'none';
  return !1;
}

function closeTorgBox(torgId)
{
  if(document.getElementById(torgId))
    document.getElementById(torgId).style.display = 'none';
  return !1;
}

function closeAllFloatBoxes(sPrefix, nSkip, sPostfix)
{
  for(i=0;curFloatBox = document.getElementById(sPrefix+i);i++)
  {
    if(i != nSkip)
      curFloatBox.style.display = 'none';
    if(sPostfix != null && sPostfix != "")
      if(postFloatBox = document.getElementById(sPrefix+i+sPostfix))
        postFloatBox.style.display = 'none';
  }
}

function buildItemTorgBox(nPosition)
{
  closeAllFloatBoxes("floatBox");
  closeAllFloatBoxes("infoTip",-1,"_out");

  try
  {
    showTorg('torgBox'+nPosition);
  } catch(e)
  {
    alert('Извините, произошла ошибка');
  };

}

function trimIE(myString){
  return myString.replace(/\s\s+/g,' ').replace(/^s+/g,'').replace(/s+$/g,'');
}

function confirmTorg(nPosition)
{
  reason = document.getElementById('torg_reason'+nPosition).value;
  price = document.getElementById('torg_price'+nPosition).value;
  name = document.getElementById('torg_name'+nPosition).value;
  phone = document.getElementById('torg_phone'+nPosition).value;
  email = document.getElementById('torg_email'+nPosition).value;
  variant = document.getElementById('torg_variant'+nPosition).value;

  reason = trimIE(reason); // удаляем лишние пробелы
  price = trimIE(price); // удаляем лишние пробелы
  name = trimIE(name); // удаляем лишние пробелы
  phone = trimIE(phone); // удаляем лишние пробелы

  if(reason && price && name && phone) {
  content = document.getElementById('torgBox_content'+nPosition);
  if(content)  content.innerHTML = "<br>Спасибо за обращение! Ваше сообщение отправлено в отдел продаж. В самое ближайшее время с Вами свяжется один из наших менеджеров.";
  // Отправляем мыло.

  var req4 = new XMLHttpRequest();
  req4.open("GET","/modules/catalog/ajax_send.php?Type=Torg&reason="+reason+"&price="+price+"&name="+name+"&phone="+phone+"&email="+email+"&variant="+variant);
  req4.send("");

  } else { alert("Заполните все обязательные поля!"); }

}

