﻿var ShowProgress = function(element) {
  var jElem = $(element);
  if (!jElem.hasClass("loading")) {
    jElem.addClass("loading");
  }
//  if (progressImg) {
//    if (jElem.attr("style") != undefined) {
//      jElem.attr("oldStyle", jElem.attr("style"));
//    }
//    jElem.css({ 'background': 'transparent url(' + progressImg + ') no-repeat scroll right center', 'padding-right': '16px' });
//  }
  return jElem;
};

var HideProgress = function(element) {
  return $(element).removeClass("loading");
  //  var jElem = $(element);
  //  if (jElem.attr("oldStyle") != undefined) {
  //    return jElem.attr("style", jElem.attr("oldStyle"));
  //  }
  //  else {
  //    return jElem.removeAttr("style");
  //  }
}

Type.registerNamespace('VGF.VShop');
VGF.VShop.VShopSS = function() {
  VGF.VShop.VShopSS.initializeBase(this);
  this._timeout = 0;
  this._userContext = null;
  this._succeeded = null;
  this._failed = null;
}
VGF.VShop.VShopSS.prototype = {
  _get_path: function() {
    var p = this.get_path();
    if (p) return p;
    else return VGF.VShop.VShopSS._staticInstance.get_path();
  },
  SaveOrderEA: function(addressId, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'SaveOrderEA', false, { addressId: addressId }, succeededCallback, failedCallback, userContext);
  },
  SaveOrderNA: function(zipCode, krai, region, city, street, house, housing, building, flat, more, receiver, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'SaveOrderNA', false, { zipCode: zipCode, krai: krai, region: region, city: city, street: street, house: house, housing: housing, building: building, flat: flat, more: more, receiver: receiver }, succeededCallback, failedCallback, userContext);
  },
  AddressExist: function(zipCode, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'AddressExist', false, { zipCode: zipCode }, succeededCallback, failedCallback, userContext);
  },
  GetAddresses: function(succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetAddresses', false, {}, succeededCallback, failedCallback, userContext);
  },
  GetShippingPrice: function(zipCode, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetShippingPrice', false, { zipCode: zipCode }, succeededCallback, failedCallback, userContext);
  },
  GetNextShippingDateString: function(succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetNextShippingDateString', false, {}, succeededCallback, failedCallback, userContext);
  },
  SetCartItemQuantity: function(rin, count, zipCode, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'SetCartItemQuantity', false, { rin: rin, count: count, zipCode: zipCode }, succeededCallback, failedCallback, userContext);
  },
  BuyItem: function(rin, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'BuyItem', false, { rin: rin }, succeededCallback, failedCallback, userContext);
  },
  GetOrderItems: function(orderId, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetOrderItems', false, { orderId: orderId }, succeededCallback, failedCallback, userContext);
  },
  GetAPricesByMonth: function(fromDate, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetAPricesByMonth', false, { fromDate: fromDate }, succeededCallback, failedCallback, userContext);
  },
  GetAOrdersCount: function(fromDate, toDate, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetAOrdersCount', false, { fromDate: fromDate, toDate: toDate }, succeededCallback, failedCallback, userContext);
  },
  GetATopSales: function(count, fromDate, toDate, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetATopSales', false, { count: count, fromDate: fromDate, toDate: toDate }, succeededCallback, failedCallback, userContext);
  },
  GetALowermostSales: function(count, fromDate, toDate, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetALowermostSales', false, { count: count, fromDate: fromDate, toDate: toDate }, succeededCallback, failedCallback, userContext);
  },
  GetAPopularSales: function(count, fromDate, toDate, succeededCallback, failedCallback, userContext) {
    return this._invoke(this._get_path(), 'GetAPopularSales', false, { count: count, fromDate: fromDate, toDate: toDate }, succeededCallback, failedCallback, userContext);
  },
  GetRussianPostInfo: function(id, succeededCallback, failedCallback, userContext) {
  return this._invoke(this._get_path(), 'GetRussianPostInfo', false, { id: id }, succeededCallback, failedCallback, userContext);
  }
}
VGF.VShop.VShopSS.registerClass('VGF.VShop.VShopSS', Sys.Net.WebServiceProxy);
VGF.VShop.VShopSS._staticInstance = new VGF.VShop.VShopSS();
VGF.VShop.VShopSS.set_path = function(value) { VGF.VShop.VShopSS._staticInstance.set_path(value); }
VGF.VShop.VShopSS.get_path = function() { return VGF.VShop.VShopSS._staticInstance.get_path(); }
VGF.VShop.VShopSS.set_timeout = function(value) { VGF.VShop.VShopSS._staticInstance.set_timeout(value); }
VGF.VShop.VShopSS.get_timeout = function() { return VGF.VShop.VShopSS._staticInstance.get_timeout(); }
VGF.VShop.VShopSS.set_defaultUserContext = function(value) { VGF.VShop.VShopSS._staticInstance.set_defaultUserContext(value); }
VGF.VShop.VShopSS.get_defaultUserContext = function() { return VGF.VShop.VShopSS._staticInstance.get_defaultUserContext(); }
VGF.VShop.VShopSS.set_defaultSucceededCallback = function(value) { VGF.VShop.VShopSS._staticInstance.set_defaultSucceededCallback(value); }
VGF.VShop.VShopSS.get_defaultSucceededCallback = function() { return VGF.VShop.VShopSS._staticInstance.get_defaultSucceededCallback(); }
VGF.VShop.VShopSS.set_defaultFailedCallback = function(value) { VGF.VShop.VShopSS._staticInstance.set_defaultFailedCallback(value); }
VGF.VShop.VShopSS.get_defaultFailedCallback = function() { return VGF.VShop.VShopSS._staticInstance.get_defaultFailedCallback(); }
VGF.VShop.VShopSS.set_path(appPath+"/DesktopModules/VShop/VShopSS.asmx");
VGF.VShop.VShopSS.SaveOrderEA = function(addressId, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.SaveOrderEA(addressId, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.SaveOrderNA = function(zipCode, krai, region, city, street, house, housing, building, flat, more, receiver, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.SaveOrderNA(zipCode, krai, region, city, street, house, housing, building, flat, more, receiver, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.AddressExist = function(zipCode, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.AddressExist(zipCode, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetAddresses = function(domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetAddresses(function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetShippingPrice = function(zipCode, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetShippingPrice(zipCode, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetNextShippingDateString = function(domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetNextShippingDateString(function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.SetCartItemQuantity = function(rin, count, zipCode, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.SetCartItemQuantity(rin, count, zipCode, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.BuyItem = function(rin, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.BuyItem(rin, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetOrderItems = function(orderId, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetOrderItems(orderId, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetAPricesByMonth = function(fromDate, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetAPricesByMonth(fromDate, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetAOrdersCount = function(fromDate, toDate, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetAOrdersCount(fromDate, toDate, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetATopSales = function(count, fromDate, toDate, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetATopSales(count, fromDate, toDate, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetALowermostSales = function(count, fromDate, toDate, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetALowermostSales(count, fromDate, toDate, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetAPopularSales = function(count, fromDate, toDate, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetAPopularSales(count, fromDate, toDate, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};
VGF.VShop.VShopSS.GetRussianPostInfo = function(id, domElem, onSuccess, onFailed, userContext) {
  ShowProgress(domElem);
  VGF.VShop.VShopSS._staticInstance.GetRussianPostInfo(id, function(result, context) { HideProgress(domElem); onSuccess(result, context); }, function(result, context) { HideProgress(domElem); onFailed(result, context); }, userContext);
};

var BuyItem = function(rin, buyResponseID, domElem) {
  VGF.VShop.VShopSS.BuyItem(rin, domElem, function(result, context) {
    var resObj = eval(result);
    $("#" + buyResponseID).html(resObj.message);
    if (cartLink && cartText) {
      $("#" + cartLink).html(cartText.replace("{0}", resObj.totalItems).replace("{1}", resObj.totalPrice));
    }
  }); return false;
}

var jsShoppingCart = function() {

  //------------------------------------------------------------------------
  //-----------------------------Init global variables----------------------
  //------------------------------------------------------------------------

  var serAddrBtn = $("#" + setAddressBtnId).click(function() {
    VGF.VShop.VShopSS.GetAddresses(serAddrBtn, function(result, context) { InitAddressBox(result, serAddrBtn) }, ErrorAjaxRequest);
    return false;
  });

  var zipCodeInput = $("<input type='text' class='zipCode' maxlength=6/>");
  var shippingPrice = $("<span/>");
  var withShipPrice = $("<span/>");
  var TotalText = $("#" + cartTotalId + " span");

  var reCalcPrice = function(countInput) {
    var input = $(countInput);
    var row = input.parent().parent();
    VGF.VShop.VShopSS.SetCartItemQuantity(input.attr("itemId"), input.val(), zipCodeInput.val(), input, function(result, context) {
      var resObj = eval(result);
      shippingPrice.text(resObj.ship.shipPrice);
      withShipPrice.text(resObj.ship.wShipPrice);
      TotalText.text(resObj.totalPrice);
      input.parent().siblings(".tPrice").text(resObj.itemPrice);
      if (cartLink && cartText) {
        $("#" + cartLink).html(cartText.replace("{0}", resObj.totalItems).replace("{1}", resObj.totalPrice))
      }
      if (input.val() == 0) {
        row.addClass("deleted");
      }
      else {
        row.removeClass("deleted");
      }
    }, ErrorAjaxRequest);
  };

  var cartTable = $("#" + cartTableId);

  var triggeredEvent;
  cartTable.find("input").keydown(function(event) {
    OnlyDigits(event);
  }).keyup(function() {
    var countField = $(this);
    if (countField.attr("curValue") != countField.val()) {
      if (triggeredEvent) {
        clearTimeout(triggeredEvent);
      }
      triggeredEvent = setTimeout(function() { reCalcPrice(countField); countField.attr("curValue", countField.val()) }, 500);
    }
  }).each(function() {
    var elem = $(this);
    elem.attr("curValue", elem.val());
  });

  cartTable.find("img.delItem").click(function() {
    reCalcPrice($(this).parent().parent().find("input").val(0));
  });

  cartTable.find("img.cover").mouseover(function() {
    var imgElem = $(this);
    imgElem.after($("<div/>").addClass("coverBox").append($("<img src='" + imgElem.attr("imgUrl") + "'/>")));
  }).mouseout(function() {
    $(this).next("div").remove();
  });


  function ErrorAjaxRequest(result, ctx) {
    if (result) {
      alert("При выполнении запроса произошла ошибка.\n" + result.get_message() + "\n" + result.get_stackTrace());
    }
    else {
      alert("При выполнении запроса произошла ошибка.");
    }
  }

  var OnlyDigits = function(event) {
    var isDigit = (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105);
    var validKey = event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 16 || event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 17;
    var copyPastKey = event.ctrlKey && (event.keyCode == 67 || event.keyCode == 86 || event.keyCode == 45) || event.shiftKey && event.keyCode == 45;
    if (!isDigit && !validKey && !copyPastKey) {
      event.preventDefault();
    }
  }
  //------------------------------------------------------------------------
  //-----------------------------Init global variables----------------------
  //------------------------------------------------------------------------

  //------------------------------------------------------------------------
  //-----------------------------Init addresses-----------------------------
  //------------------------------------------------------------------------
  var InitAddressBox = function(jsonStr, button) {
    $(button).attr("style", "display:none");

    var adrLst = eval(jsonStr);
    var addressSelected;
    var addressBox = $("#addressBox");

    var addressSelectorBox = $("<div id='addressSelector'/>").appendTo(addressBox);
    var addressEditBox = $("<div class='addressEdit'/>").appendTo(addressBox);

    var kraiInput = $("<input type='text' class='krai' maxlength=50/>");
    var regionInput = $("<input type='text' class='region' maxlength=50/>");
    var cityInput = $("<input type='text' class='city' maxlength=50/>");
    var cityBox = $("<div/>").append("Индекс:").append(zipCodeInput).append("Область (край):").append(kraiInput).append($("<br/>")).append("Район:").append(regionInput).append($("<br/>")).append("Город (поселок, деревня, село):").append(cityInput).appendTo(addressEditBox);

    var streetInput = $("<input type='text' class='street' maxlength=150/>");
    var streetBox = $("<div/>").append("Улица:").append(streetInput).appendTo(addressEditBox);

    var houseInput = $("<input type='text' class='house' maxlength=6/>");
    var housingInput = $("<input type='text' class='housing' maxlength=6/>");
    var buildingInput = $("<input type='text' class='building' maxlength=6/>");
    var flatInput = $("<input type='text' class='flat' maxlength=6/>");
    streetBox.append("<br/>Дом:").append(houseInput).append("Корпус:").append(housingInput).append("Строение:").append(buildingInput).append("Квартира:").append(flatInput);
    //var streetBox = $("<div/>").append("Дом:").append(houseInput).append("Корпус:").append(housingInput).append("Строение:").append(buildingInput).append("Квартира:").append(flatInput).append($("<br/>")).appendTo(addressEditBox);

    //    var moreInput = $("<input type='text' class='more' maxlength=1000/>");
    //    var moreBox = $("<div/>").append("Дополнительная информация об адресе доставки:<br/>").append(moreInput).appendTo(addressEditBox);
    var receiverInput = $("<input type='text' class='receiver' maxlength=100/>");
    var receiverBox = $("<div/>").append("Полное имя получателя:<br/>").append(receiverInput).append($("<b>&nbsp;При получении потребуется паспорт!</b><br/>")).appendTo(addressEditBox);
    var nextShippingDate = $("<b>Ближайшая централизованная отправка заказов будет </b>");

    VGF.VShop.VShopSS.GetNextShippingDateString(receiverBox, function(shpDate) {
      if (shpDate && shpDate != '') {
        nextShippingDate.append(shpDate).appendTo(receiverBox);
      }
    }, ErrorAjaxRequest);

    var shippingPriceBox = $("<div class='shipPrice'>Стоимость доставки: </div>").appendTo(addressBox);
    shippingPrice.appendTo(shippingPriceBox);
    var withShipPriceBox = $("<div class='wShipPrice'>Итого к оплате: </div>").appendTo(addressBox);
    withShipPrice.appendTo(withShipPriceBox);

    var agreementBox = $("<div class='agree'>Я, " + FIO + ", согласен (-на) получить заказанную мной литературу, произведя предварительную оплату банковским переводом в течении 14 дней со дня оформления заказа. Адрес доставки введён и проверен мной лично. Я согласен (-на) с тем, что отправка заказанной мной литературы будет осуществлена через ФГУП \"Почта России\" в течение тридцати дней с момента поступления перечисленных мной средств на расчётный счёт ООО Издательского центра \"ВЕНТАНА-ГРАФ\"; при этом право собственности на заказанную мной литературу переходит от Поставщика к Заказчику в момент передачи литературы ФГУП \"Почта России\".</div>").appendTo(addressBox);
    var agreeCheck = $("<input type='checkbox'/>").prependTo($("<div/>").append($("<span> - Подтверждение согласия</span>")).appendTo(agreementBox));
    //$("<span>Согласен</span>").appendTo(agreementBox);

    var createOrderBtn = $("<a href='javascript:void(0);' class='noVisited'>Сохранить заказ</a>").click(function() {
      if (!createOrderBtn.attr("disabled")) {
        VGF.VShop.VShopSS.AddressExist(zipCodeInput.val(), createOrderBtn, function(result, context) {
          if (!agreeCheck.attr("checked")) {
            alert('Подтвердите согласие!');
          }
          else if (!result) {
            alert('Указанного индекса не существует');
          }
          else {
            createOrderBtn.attr("disabled", "disabled");
            if (addressSelected && !addressIsChanged(addressSelected)) {
              VGF.VShop.VShopSS.SaveOrderEA(addressSelected.AddressId, createOrderBtn, function(result, context) { document.location = result; }, function(result, context) { createOrderBtn.removeAttr("disabled"); ErrorAjaxRequest(result, context); });
            }
            else {
              VGF.VShop.VShopSS.SaveOrderNA(zipCodeInput.val(), kraiInput.val(), regionInput.val(), cityInput.val(), streetInput.val(), houseInput.val(), housingInput.val(), buildingInput.val(), flatInput.val(), '', receiverInput.val(), createOrderBtn, function(result, context) { document.location = result; }, function(result, context) { createOrderBtn.removeAttr("disabled"); ErrorAjaxRequest(result, context); });
            }
          }
        }, ErrorAjaxRequest)
      }
      return false;
    });

    var addressIsChanged = function(address) {
      var compare = function(x, y) {
        var x1 = x == null ? "" : ((x instanceof String) ? x.toLowerCase() : x.toString().toLowerCase());
        var y1 = y == null ? "" : ((y instanceof String) ? y.toLowerCase() : y.toString().toLowerCase());
        return x1 == y1;
      }
      return !(compare(zipCodeInput.val(), address.ZipCode) && compare(kraiInput.val(), address.Krai) && compare(regionInput.val(), address.Region) && compare(cityInput.val(), address.City) && compare(streetInput.val(), address.Street) && compare(houseInput.val(), address.House) && compare(housingInput.val(), address.Housing) && compare(buildingInput.val(), address.Building) && compare(flatInput.val(), address.Flat) && compare('', address.More) && compare(receiverInput.val(), address.Receiver));
    }

    var getShippingPrice = function(domElem) {
      VGF.VShop.VShopSS.GetShippingPrice(zipCodeInput.val(), domElem, function(result, context) {
        var resObj = eval(result);
        shippingPrice.text(resObj.shipPrice);
        withShipPrice.text(resObj.wShipPrice);
      }, ErrorAjaxRequest);
    }

    var setAddress = function(domElem, address) {
      addressSelected = address;
      zipCodeInput.val(address.ZipCode).keydown(function(event) {
        OnlyDigits(event);
      });
      kraiInput.val(address.Krai);
      regionInput.val(address.Region);
      cityInput.val(address.City);
      streetInput.val(address.Street);
      houseInput.val(address.House);
      housingInput.val(address.Housing);
      buildingInput.val(address.Building);
      flatInput.val(address.Flat);
      "";
      receiverInput.val(address.Receiver);

      getShippingPrice(domElem);
    };

    if (adrLst && adrLst.length > 0) {
      $("<p>Ранее использованные адреса</p>").appendTo(addressSelectorBox);
      addressSelected = adrLst[adrLst.length - 1];
      $(adrLst).each(function(intIndex) {
        var addrArray = [];
        if (this.Krai) { addrArray.push(this.Krai) };
        if (this.Region) { addrArray.push(this.Region) };
        if (this.City) { addrArray.push(this.City) };
        if (this.Street) { addrArray.push(this.Street) };
        if (this.House) { addrArray.push("дом " + this.House) };
        if (this.Housing) { addrArray.push("корп. " + this.Housing) };
        if (this.Building) { addrArray.push("стр. " + this.Building) };
        if (this.More) { addrArray.push("(" + this.More + ")") };
        //var addressStr = this.ZipCode + " " + this.Krai + ", " + this.Region + ", " + this.City + ", " + this.Street + ", дом " + this.House + (this.Housing ? ", корп. " + this.Housing : "") + (this.Building ? ", стр. " + this.Building : "") + (this.More ? " (" + this.More + ")" : "") + " Получатель: " + this.Receiver;
        var addressStr = this.ZipCode + " " + addrArray.join(", ") + " Получатель: " + this.Receiver;
        var address = this;
        $("<input type='radio' name='addrGrp' value='" + this.AddressId + "'>" + addressStr + "<br/>").appendTo(addressSelectorBox).bind(($.browser.msie ? "click" : "change"), function() { setAddress(this, address) }).attr("checked", this.AddressId == addressSelected.AddressId);
      });
      setAddress(addressSelectorBox, addressSelected);
    }
    else {
      receiverInput.val(FIO);
    }

    zipCodeInput.change(function() { getShippingPrice(this) });

    createOrderBtn.appendTo(addressBox);
    addressBox.append($("<span>&nbsp;(после этого корзина будет очищена)</span>"));
  };
  //------------------------------------------------------------------------
  //-----------------------------Init addresses-----------------------------
  //------------------------------------------------------------------------
};
