offer.CartView = function(){
	$(document).bind('EVENT_LOGOUT', $.proxy(offerInstance.serviceDelegate.readShoppingCart, offerInstance.serviceDelegate))
}
offer.CartView.prototype = {
	cartVO: null,
	updateCart: function(cart){
		this.cartVO = cart
		var cartEmpty = cart.items.length == 0
		var cartEl = document.createElement("div")
		var cont = document.getElementById("cartContainer")
		cont.innerHTML = ""
		cont.appendChild(cartEl)
		cartEl.className = "cart elRelative"
		var cartIcon = document.createElement("div")
		cartIcon.className = "cartIcon elAbsolute"
		cartEl.appendChild(cartIcon)
		/*var cartHeader = document.createElement("div")
		 cartHeader.className = "cartHeader elAbsolute"
		 cartHeader.innerHTML = "koszyk"
		 cartEl.appendChild(cartHeader)*/
		var cartSummary = document.createElement("div")
		cartSummary.className = "cartSummary elAbsolute"
		cartEl.appendChild(cartSummary)
		if (!cartEmpty) {
			cartEl.title = jslt.rb.DRB.getString('cart', 'navigateToBasket')
			$(cartEl).tooltip()
			cartEl.className += " pointerEl"
			cartEl.onclick = function(){
				offerInstance.cartView.showCartView()
			}
			cartSummary.innerHTML = jslt.rb.DRB.getString('cart', 'numberOfItems') + ": " + cart.items.length
			if (offerInstance.showPrices()) {
				cartSummary.innerHTML += "<br/>"
				cartSummary.innerHTML += cart.summaryPrice.brutto + " PLN"
			}
		}
		else {
			cartSummary.innerHTML = jslt.rb.DRB.getString('cart', 'basketIsEmpty')
			cartEl.title = ''
		}
		if (offerInstance.tabView.currentId == "cartView") {
			this.showCartView()
		}
	},
	createItemsData: function(tr, cartItem, editableQnt, input){
		td = document.createElement("td")
		tr.appendChild(td)
		var name_string = cartItem.product.name_string
		var codePart = ""
		if (cartItem.warehouseItem.producer_code != "") {
			codePart = cartItem.warehouseItem.producer_code
		}
		else if (cartItem.product.code_string != "") {
			codePart = cartItem.product.code_string
		}
		if (codePart != "") {
			name_string += " /" + codePart + "/"
		}
		for (var lvIdx = 0; lvIdx < cartItem.listValues.length; lvIdx++) {
			name_string += " " + cartItem.listValues[lvIdx][0] + ": " + cartItem.listValues[lvIdx][1]
		}
		td.appendChild($('<a href="#" class="link">' + name_string + '</a>').click(function(){
			$(document).trigger('evProductRequired', [{
				id_product: cartItem.product.id_product
			}])
			return false;
		})[0])
		if (offerInstance.showPrices()) {
			td = document.createElement("td")
			tr.appendChild(td)
			if (cartItem.product.calculatedPrices) {
				td.innerHTML = '<span class="calculatedPricesInTable" title="' + jslt.rb.DRB.getString('offer', 'calculatedPrices') + '"><span style="display:none">' + jslt.rb.DRB.getString('offer', 'calculatedPrices2') + '</span></span>';
			}
			else {
				td.innerHTML = offer.ViewHelper.formatPrice(offerInstance.config.authorization_available == 'past_acceptance' ? cartItem.price.netto : cartItem.price.brutto);
			}
		}
		td = document.createElement("td")
		tr.appendChild(td)
		if (editableQnt) {
			td.appendChild(input)
			input.className = "inputStyle w1"
			input.type = "text"
			input.value = cartItem.quantity
		}
		else {
			td.innerHTML = cartItem.quantity
		}
		if (offerInstance.showPrices()) {
			td = document.createElement("td")
			tr.appendChild(td)
			td.innerHTML = offer.ViewHelper.formatPrice(cartItem.quantity * (offerInstance.config.authorization_available == 'past_acceptance' ? cartItem.price.brutto : cartItem.price.netto));
		}

	},
	showCartView: function(){
		$(document).trigger('EVENT_NAVIGATION_PATH_CHANGE', [[jslt.rb.DRB.getString('cart', 'basket')]])
		offerInstance.tabView.selectById("cartView", true)
		offerInstance.tabView.clearCurrent();
		var table = document.createElement("table")
		offerInstance.tabView.getCurrent().appendChild(table)
		table.className = "enumerationTable toolTable"
		if (this.cartVO.items.length > 0) {
			offer.ViewHelper.decorateTableWithTitle(table, jslt.rb.DRB.getString('cart', 'basket'))
		}
		else {
			offer.ViewHelper.decorateTableWithTitle(table, jslt.rb.DRB.getString('cart', 'basketIsEmpty'))
			return
		}
		var t = document.createElement("tbody")
		table.appendChild(t)
		var tr = document.createElement("tr")
		t.appendChild(tr)
		this._createTh('', tr)
		this._createTh(jslt.rb.DRB.getString('cart', 'product'), tr)
		if (offerInstance.showPrices()) {
			this._createTh(jslt.rb.DRB.getString('cart', 'price'), tr)
		}
		this._createTh(jslt.rb.DRB.getString('cart', 'quantity'), tr)
		if (offerInstance.showPrices()) {
			this._createTh(jslt.rb.DRB.getString('cart', 'worth'), tr)
		}
		this._createTh("", tr)
		var td
		for (var i = 0; i < this.cartVO.items.length; i++) {
			var cartItem = this.cartVO.items[i]
			tr = document.createElement("tr")
			t.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.innerHTML = (i+1)+'.'
			var input = document.createElement("input")
			this.createItemsData(tr, cartItem, true, input)
			td = document.createElement("td")
			tr.appendChild(td)
			td.className = "enumTableBtns"
			var img = document.createElement("img")
			td.appendChild(img)
			img.src = "/modules/layout/ico_change.png"
			img.title = jslt.rb.DRB.getString('cart', 'changeQuantity')
			$(img).tooltip({
				showURL: false
			})
			img.className = "pointerEl"
			img.asignedInput = input
			this._decorateRowBtn(img, "evChangeQuantity", cartItem.warehouseItem)
			img = document.createElement("img")
			td.appendChild(img)
			img.src = "/modules/layout/ico_close.png"
			img.title = jslt.rb.DRB.getString('cart', 'removeFromBasket')
			$(img).tooltip({
				showURL: false
			})
			img.className = "pointerEl"
			this._decorateRowBtn(img, "evRemoveShoppingCartItem", cartItem.warehouseItem)
		}
		if (offerInstance.showPrices()) {
			tr = document.createElement("tr")
			t.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.colSpan = 6;
			td.className = "lineRowTD sumaryRowTD"
			if (offerInstance.config.authorization_available == 'past_acceptance') {
				td.innerHTML = jslt.rb.DRB.getString('cart', 'sumTotal') + ": " + offer.ViewHelper.formatPrice(this.cartVO.summaryPrice.netto, true)
			}
			else {
				td.innerHTML = jslt.rb.DRB.getString('cart', 'sumTotal') + ": " + offer.ViewHelper.formatPrice(this.cartVO.summaryPrice.brutto, true)
				td.innerHTML += "/" + offer.ViewHelper.formatPrice(this.cartVO.summaryPrice.netto, true)
			}
		}
		else {
			r = document.createElement("tr");
			t.appendChild(r);
			td1 = document.createElement("td");
			td1.className = 'warningInOffer'
			r.appendChild(td1);
			td1.colSpan = 4
			td1.innerHTML = jslt.rb.DRB.getString('cart', 'pricesAvailablePastLogin')
		}
		tr = document.createElement("tr")
		t.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		td.colSpan = offerInstance.authenticateView.shopClientVO.is_temporary ? 4 : 6;
		tr.appendChild(td)
		var btn = offer.ViewHelper.createButton(td, offerInstance.showPrices() ? jslt.rb.DRB.getString('cart', 'order') : jslt.rb.DRB.getString('cart', 'query'), function(){
			offerInstance.serviceDelegate.getDeliveryTypes()
		})
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'cancelBtn'), function(){
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		if (offerInstance.authenticateView.shopClientVO.is_temporary) {
			if (offerInstance.config.order_no_authorized != 'yes') {
				btn.disabled = "disabled"
				tr = document.createElement("tr")
				t.appendChild(tr)
				td = document.createElement("td")
				td.colSpan = 2;
				tr.appendChild(td)
				td.innerHTML = $.format(jslt.rb.DRB.getString('cart', 'loginBeforeOrder'), "<a href='#' onclick='offerInstance.authenticateView.createLoginPanel()'>", "</a>")
			}
			offerInstance.authenticateView.createLoginHelperBtns(t, offerInstance.authenticateView.shopClientVO.is_temporary ? [1, 2] : [2, 3])
		}
	},
	_createTh: function(text, trRef){
		var th = document.createElement("th")
		trRef.appendChild(th)
		th.innerHTML = text
	},
	_decorateRowBtn: function(imgRef, ev, warehouseItem){
		switch (ev) {
			case "evChangeQuantity":
				imgRef.onclick = function(){
					offerInstance.cartView.evChangeQuantity(warehouseItem, this.asignedInput.value)
				}
				break;
			case "evRemoveShoppingCartItem":
				imgRef.onclick = function(){
					offerInstance.cartView.evRemoveShoppingCartItem(warehouseItem)
				}
				break;
		}
	},
	evChangeQuantity: function(warehouseItem, quantity){
		this.cartVO.warehouseItem = warehouseItem;
		this.cartVO.warehouseItem.quantity = quantity
		offerInstance.changeQuantity(this.cartVO)
	},
	evRemoveShoppingCartItem: function(warehouseItem){
		this.cartVO.warehouseItem = warehouseItem;
		offerInstance.removeShoppingCartItem(this.cartVO)
	},
	showDeliveryTypePanel: function(types){
		offerInstance.tabView.selectById("deliveryView", true)
		offerInstance.tabView.clearCurrent();
		var table = document.createElement("table")
		offerInstance.tabView.getCurrent().appendChild(table)
		offer.ViewHelper.decorateTableWithTitle(table, jslt.rb.DRB.getString('cart', 'deliveryWay'))
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		var tr = document.createElement("tr")
		tb.appendChild(tr)
		var td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = 2
		for (var i = 0; i < types.length; i++) {
			var radio = jslt.element.createElement(td, "input", {
				type: "radio"
			})
			radio.name = 'deliveryOptionRadio'
			radio.id = 'deliveryOptionRadio' + i
			radio.value = types[i].id_delivery_type
			radio.onclick = new Function('offerInstance.cartView.evDeliveryOptionClick(' + types[i].id_delivery_type + ',"' + types[i].name_string + '")');
			var label = jslt.element.createElement(td, "label", {
				"for": 'deliveryOptionRadio' + i
			})
			label.appendChild(document.createTextNode(types[i].name_string))
			td.appendChild(document.createElement("br"))
		}
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)

		td = document.createElement("td")
		tr.appendChild(td)
		var btn = offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'continueBtn'), function(){
			offerInstance.cartView.evDeliveryOptionCompleteClick()
		})
		btn.id = "btnContinueDelivery"
		btn.disabled = "disabled"
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'cancelBtn'), function(){
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.className = "tableComment"
		td.colSpan = 2
		td.innerHTML = jslt.rb.DRB.getString('cart', 'deliveryWarning')

	},
	selectedDeliveryId: null,
	evDeliveryOptionClick: function(id, name){
		document.getElementById("btnContinueDelivery").disabled = ""
		this.selectedDeliveryId = id
		this.savedDeliveryName = name
	},
	evDeliveryOptionCompleteClick: function(){
		var vo = new cms2.offer.vo.DeliveryVO();
		vo.id_delivery_type = this.selectedDeliveryId
		offerInstance.serviceDelegate.saveDeliveryType(vo)
	},
	evDeliveryTypeSaved: function(person2VO){
		if (offerInstance.authenticateView.shopClientVO.is_temporary) {
			if (offerInstance.config.authorization_available == 'past_acceptance') {
				this.person2VO = person2VO
				if (this.person2VO.contact_channels.length > 0) {//wcześniej zarejestrowany
					offerInstance.cartView.showOrderSummary(offerInstance.cartView.person2VO)
				}
				else {
					offerInstance.authenticateView.createRegistrationFirmPanel()
					offerInstance.authenticateView.registerFirmChandle = function(){
						offerInstance.serviceDelegate.readRegistrationData()
						//offerInstance.cartView.showOrderSummary(offerInstance.cartView.person2VO)
					}
				}
			}
			else {
				offerInstance.cartView.modifyingAddressData = true
				offerInstance.cartView.accountDataAvailable(person2VO)
			}
		}
		else {
			offerInstance.cartView.showAcccountDataRO(person2VO)
		}
	},
	showAcccountDataRO: function(person2VO){
		if (person2VO != undefined) {
			this.person2VO = person2VO
		}
		offerInstance.tabView.selectById("buyerAddressView", true)
		offerInstance.tabView.clearCurrent();
		var table = document.createElement("table")
		offerInstance.tabView.getCurrent().appendChild(table)
		table.className = "enumerationTable toolTable"
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		var tr = document.createElement("tr")
		tb.appendChild(tr)
		var td = document.createElement("td")
		tr.appendChild(td)
		td.className = "tableSection"
		td.colSpan = 2
		td.innerHTML = jslt.rb.DRB.getString('cart', 'invoiceData')
		this.createAddressFields(tb, this.person2VO, false, "f2")
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.className = "tableSection"
		td.colSpan = 2
		td.innerHTML = jslt.rb.DRB.getString('cart', 'deliveryAddress')
		this.createDeliveryAddressFields(tb, this.person2VO, false, "f4")
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'continueBtn'), function(){
			offerInstance.cartView.showOrderSummary(offerInstance.cartView.person2VO)
		})
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'cancelBtn'), function(){
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		tr = document.createElement("tr")
		tr.className = "interactionControls"
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = 2
		div = document.createElement("div");
		td.appendChild(div)
		div.onclick = function(){
			offerInstance.cartView.modifyingAddressData = true
			offerInstance.cartView.accountDataAvailable(offerInstance.cartView.person2VO)
		}
		div.innerHTML = jslt.rb.DRB.getString('cart', offerInstance.config.authorization_available == 'past_acceptance' ? 'deliveryAddressDiffrent' : 'modifyAddressData');
	},
	createFieldsLoop: function(tb, person2VO, labels, editable, idPart,requireHints){
		for (var p in labels) {
			var tr=offer.ViewHelper.createStdRow(tb, labels[p] + (!editable ? ': ' : ''), p, editable, idPart);
			if(requireHints && requireHints[p]){
				tr.firstChild.style.fontWeight="bold";
				tr.firstChild.innerHTML+="*";
			}
		}
		if (person2VO) {
			for (var i = 0; i < person2VO.contact_channels.length; i++) {
				var curCV = person2VO.contact_channels[i]
				if (curCV.contact_value != "") {
					var el = document.getElementById(curCV.code_id);
					if (el && el.nodeName.toLowerCase() == 'input' && editable) {
						el.value = curCV.contact_value
					}
					else {
						el = document.getElementById(curCV.code_id + idPart);
						if (el) {
							el.innerHTML = curCV.contact_value
						}
					}
				}
			}
		}
	},
	registrationFields: ['address_name_buyer', 'address_surname_buyer', 'address_name_contact_buyer', 'address_surname_contact_buyer', 'address_firm_buyer', 'address_place_buyer', 'address_street_buyer', 'address_province_buyer', 'address_post_buyer', 'address_post_code_buyer', 'address_phone_buyer', 'address_mobile_buyer', 'address_fax_buyer', 'address_email_buyer', 'address_www_buyer', 'address_nip_buyer', 'address_regon_buyer'],
	interestKeys: ['antykorozyjne', 'elektrotechniczne', 'budowlane', 'wentylacja_klimatyzacja'],
	createRegistrationFields: function(tb, person2VO, editable, idPart,requireHints){
		var labels = {}
		labels.address_name_buyer = jslt.rb.DRB.getString('cart', 'address_name_buyer_registration');
		labels.address_surname_buyer = jslt.rb.DRB.getString('cart', 'address_surname_buyer_registration')
		labels.address_name_contact_buyer = jslt.rb.DRB.getString('cart', 'address_name_contact_buyer_registration')
		labels.address_surname_contact_buyer = jslt.rb.DRB.getString('cart', 'address_surname_contact_buyer_registration')
		labels.address_firm_buyer = jslt.rb.DRB.getString('cart', 'address_firm_buyer_registration')
		labels.address_province_buyer = jslt.rb.DRB.getString('cart', 'address_province_buyer_registration')
		labels.address_place_buyer = jslt.rb.DRB.getString('cart', 'address_place_buyer_registration')
		labels.address_street_buyer = jslt.rb.DRB.getString('cart', 'address_street_buyer_registration')
		labels.address_post_buyer = jslt.rb.DRB.getString('cart', 'address_post_buyer_registration')
		labels.address_post_code_buyer = jslt.rb.DRB.getString('cart', 'address_post_code_buyer_registration')
		labels.address_phone_buyer = jslt.rb.DRB.getString('cart', 'address_phone_buyer_registration')
		labels.address_mobile_buyer = jslt.rb.DRB.getString('cart', 'address_mobile_buyer_registration')
		labels.address_fax_buyer = jslt.rb.DRB.getString('cart', 'address_fax_buyer_registration')
		labels.address_email_buyer = jslt.rb.DRB.getString('cart', 'address_email_buyer_registration')
		labels.address_www_buyer = jslt.rb.DRB.getString('cart', 'address_www_buyer_registration')
		labels.address_nip_buyer = jslt.rb.DRB.getString('cart', 'address_nip_buyer_registration')
		labels.address_regon_buyer = jslt.rb.DRB.getString('cart', 'address_regon_buyer_registration')
		this.createFieldsLoop(tb, person2VO, labels, editable, idPart,requireHints)
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.innerHTML = jslt.rb.DRB.getString('cart', 'groupsOfInterests') + ':'
		td = document.createElement("td")
		tr.appendChild(td)
		if (editable) {
			for (intKey in this.interestKeys) {
				var cbx = jslt.element.createElement(td, "input", {
					type: "checkbox"
				})
				cbx.id = 'zainteresowanie_' + this.interestKeys[intKey]
				var label = jslt.element.createElement(td, "label", {
					"for": cbx.id
				})
				label.appendChild(document.createTextNode(jslt.rb.DRB.getString('offer_interesting_groups', this.interestKeys[intKey])))
				$(td).append($('<br/>'))
			}
		}
		else {
			for (var i = 0; i < person2VO.contact_channels.length; i++) {
				if (person2VO.contact_channels[i].code_id == 'groups_of_interests') {
					td.innerHTML = person2VO.contact_channels[i].contact_value
					break
				}
			}
		}

	},
	buyerAddressFields: ['address_name_buyer', 'address_surname_buyer', 'address_firm_buyer', 'address_nip_buyer', 'address_place_buyer', 'address_street_buyer', 'address_post_buyer', 'address_post_code_buyer'],
	createAddressFields: function(tb, person2VO, editable, idPart){
		var labels = {}
		labels.address_name_buyer = jslt.rb.DRB.getString('cart', 'address_name_buyer')
		labels.address_surname_buyer = jslt.rb.DRB.getString('cart', 'address_surname_buyer')
		labels.address_firm_buyer = jslt.rb.DRB.getString('cart', 'address_firm_buyer')
		labels.address_nip_buyer = jslt.rb.DRB.getString('cart', 'address_nip_buyer')
		labels.address_place_buyer = jslt.rb.DRB.getString('cart', 'address_place_buyer')
		labels.address_street_buyer = jslt.rb.DRB.getString('cart', 'address_street_buyer')
		labels.address_post_buyer = jslt.rb.DRB.getString('cart', 'address_post_buyer')
		labels.address_post_code_buyer = jslt.rb.DRB.getString('cart', 'address_post_code_buyer')
		this.createFieldsLoop(tb, person2VO, labels, editable, idPart)
	},
	deliveryAddressFields: ['address_name_delivery', 'address_surname_delivery', 'address_firm_delivery', 'address_place_delivery', 'address_street_delivery', 'address_post_delivery', 'address_post_code_delivery', 'address_phone_delivery'],
	createDeliveryAddressFields: function(tb, person2VO, editable, idPart){
		var labels = {}
		labels.address_name_delivery = jslt.rb.DRB.getString('cart', 'address_name_delivery')
		labels.address_surname_delivery = jslt.rb.DRB.getString('cart', 'address_surname_delivery')
		labels.address_firm_delivery = jslt.rb.DRB.getString('cart', 'address_firm_delivery')
		labels.address_place_delivery = jslt.rb.DRB.getString('cart', 'address_place_delivery')
		labels.address_street_delivery = jslt.rb.DRB.getString('cart', 'address_street_delivery')
		labels.address_post_delivery = jslt.rb.DRB.getString('cart', 'address_post_delivery')
		labels.address_post_code_delivery = jslt.rb.DRB.getString('cart', 'address_post_code_delivery')
		labels.address_phone_delivery = jslt.rb.DRB.getString('cart', 'address_phone_delivery')
		this.createFieldsLoop(tb, person2VO, labels, editable, idPart)
	},
	evSameAsInvoiceClick: function(){
		var checked = $("#sameAsInvoice").attr("checked")
		for (var i = 0; i < this.deliveryAddressFields.length; i++) {
			var referenced = this.deliveryAddressFields[i].replace(/delivery/, "buyer")
			if (this.buyerAddressFields.toString().indexOf(referenced) == -1) {
				continue;
			}
			if (checked) {
				$("#" + this.deliveryAddressFields[i]).val(offerInstance.config.authorization_available == 'past_acceptance' ? $("#" + referenced + 'f5').html() : $("#" + referenced + 'f5').val())
			}
			$("#" + this.deliveryAddressFields[i]).attr("disabled", checked ? "disabled" : "")
		}
	},
	person2VO: null,
	showOrderSummary: function(person2VO){
		offerInstance.tabView.selectById("deliveryAddressStoredView", true)
		offerInstance.tabView.clearCurrent();
		var table = document.createElement("table")
		offerInstance.tabView.getCurrent().appendChild(table)
		table.className = "enumerationTable toolTable"
		offer.ViewHelper.decorateTableWithTitle(table, offerInstance.showPrices() ? jslt.rb.DRB.getString('cart', 'orderResume') : jslt.rb.DRB.getString('cart', 'queryResume'))
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		var tr = document.createElement("tr")
		tb.appendChild(tr)
		this._createTh(jslt.rb.DRB.getString('cart', 'product'), tr)
		if (offerInstance.showPrices()) {
			this._createTh(jslt.rb.DRB.getString('cart', 'price'), tr)
		}
		this._createTh(jslt.rb.DRB.getString('cart', 'quantity'), tr)
		if (offerInstance.showPrices()) {
			this._createTh(jslt.rb.DRB.getString('cart', 'worth'), tr)
		}
		for (var i = 0; i < this.cartVO.items.length; i++) {
			var cartItem = this.cartVO.items[i]
			tr = document.createElement("tr")
			tb.appendChild(tr)
			this.createItemsData(tr, cartItem, false)
		}
		var colSpaned = offerInstance.showPrices() ? 4 : 2
		if (offerInstance.showPrices()) {
			tr = document.createElement("tr")
			tb.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.colSpan = colSpaned;
			td.className = "lineRowTD sumaryRowTD"
			if(offerInstance.config.authorization_available == 'past_acceptance'){
				td.innerHTML = $.format(jslt.rb.DRB.getString('cart', 'payTotal'), offer.ViewHelper.formatPrice(this.cartVO.summaryPrice.netto, true), offer.ViewHelper.formatPrice(this.cartVO.summaryPrice.brutto, true))
			}else{
				td.innerHTML = $.format(jslt.rb.DRB.getString('cart', 'payTotal'), offer.ViewHelper.formatPrice(this.cartVO.summaryPrice.brutto, true), offer.ViewHelper.formatPrice(this.cartVO.summaryPrice.netto, true))
			}
		}
		if (offerInstance.authenticateView.shopClientVO.is_temporary) {
			if (offerInstance.config.authorization_available == 'past_acceptance') {
				tr = document.createElement("tr")
				tb.appendChild(tr)
				td = document.createElement("td")
				tr.appendChild(td)
				td.className = "tableSection"
				td.colSpan = colSpaned
				td.innerHTML = jslt.rb.DRB.getString('cart', 'registrationData')
				tr = document.createElement("tr")
				tb.appendChild(tr)
				td = document.createElement("td")
				tr.appendChild(td)
				td.colSpan = colSpaned
				var table2 = document.createElement("table")
				td.appendChild(table2)
				var tb2 = document.createElement("tbody")
				table2.appendChild(tb2)
				this.createRegistrationFields(tb2, person2VO, false, "f4")
			}
		}
		else if (!offerInstance.authenticateView.shopClientVO.is_temporary) {
			tr = document.createElement("tr")
			tb.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.className = "tableSection"
			td.colSpan = colSpaned
			td.innerHTML = jslt.rb.DRB.getString('cart', 'invoiceData')
			tr = document.createElement("tr")
			tb.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.colSpan = colSpaned
			var table2 = document.createElement("table")
			table2.className = 'adressTable'
			td.appendChild(table2)
			var tb2 = document.createElement("tbody")
			table2.appendChild(tb2)
			this.createAddressFields(tb2, person2VO, false, "f1")
			tr = document.createElement("tr")
			tb.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.className = "tableSection"
			td.colSpan = colSpaned
			td.innerHTML = jslt.rb.DRB.getString('cart', 'deliveryAddress')
			tr = document.createElement("tr")
			tb.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.colSpan = colSpaned
			table2 = document.createElement("table")
			table2.className = 'adressTable'
			td.appendChild(table2)
			var tb2 = document.createElement("tbody")
			table2.appendChild(tb2)
			this.createDeliveryAddressFields(tb2, person2VO, false, "f3")
		}
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = colSpaned
		td.innerHTML = $.format(jslt.rb.DRB.getString('cart', 'deliveryFormSelected'), this.savedDeliveryName)
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = colSpaned
		var ta = $('<textarea/>').attr('id', 'order_comment').attr('rows', 4).addClass('textareaFull').focus(function(){
			if ($(this).val() == jslt.rb.DRB.getString('cart', 'commentQuery')) {
				$(this).val('')
			}
		}).blur(function(){
			if ($(this).val() == '') {
				$(this).val(jslt.rb.DRB.getString('cart', 'commentQuery'))
			}
		}).blur()
		td.appendChild(ta[0])
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.id = "orderSummaryLastRow"
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = colSpaned
		offer.ViewHelper.createButton(td, offerInstance.showPrices() ? jslt.rb.DRB.getString('cart', 'sendOrder') : jslt.rb.DRB.getString('cart', 'sendQuery'), function(){
			offerInstance.cartView.evOrderClick()
		})
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'cancelBtn'), function(){
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')

	},
	evOrderClick: function(){
		this.modifyingAddressData = false
		var textData = new cms2.manager.vo.TextImportDataVO()
		$("#orderSummaryLastRow").remove()
		var comment=$('#order_comment').val()
		$('#order_comment')[0].parentNode.innerHTML=comment!= jslt.rb.DRB.getString('cart', 'commentQuery')?comment:''
		textData.text = document.getElementById("deliveryAddressStoredView").innerHTML
		offerInstance.serviceDelegate.orderConfirm(textData);
	},
	evOrderConfirmResult: function(requestResultVO){
		offerInstance.serviceDelegate.readShoppingCart()
		offerInstance.tabView.selectById("orderConfirmedView", true)
		offerInstance.tabView.clearCurrent();
		var confirmWay = false
		var table = document.createElement("table")
		offerInstance.tabView.getCurrent().appendChild(table)
		offer.ViewHelper.decorateTableWithTitle(table, confirmWay ? jslt.rb.DRB.getString('cart', 'orderTaked1') : jslt.rb.DRB.getString('cart', 'orderTaked2'))
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		var tr = document.createElement("tr")
		tb.appendChild(tr)
		var td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = 2
		td.innerHTML = $.format(jslt.rb.DRB.getString('cart', confirmWay ? 'orderPleaseConfirm1' : 'orderPleaseConfirm2'), requestResultVO.messages[0])
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = 2
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'ok'), function(){
			offerInstance.tabView.selectById("productsView")
		})
	},
	showAccount: function(){
		offerInstance.serviceDelegate.readFullAccountData()
	},
	accountDataAvailable: function(person2VO){
		this.person2VO = person2VO
		offerInstance.tabView.selectById("accountView", !offerInstance.authenticateView.shopClientVO.is_temporary)
		offerInstance.tabView.clearCurrent();
		var form = document.createElement("form")
		form.id = "accountDataForm"
		offerInstance.tabView.getCurrent().appendChild(form)
		var table = document.createElement("table")
		form.appendChild(table)
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		var tr = document.createElement("tr")
		tb.appendChild(tr)
		var td = document.createElement("td")
		tr.appendChild(td)
		if (offerInstance.authenticateView.shopClientVO.is_temporary) {
			offer.ViewHelper.createStdRow(tb, jslt.rb.DRB.getString('cart', 'email'), "email", true);
		}
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.className = "tableSection"
		td.colSpan = 2
		td.innerHTML = jslt.rb.DRB.getString('cart', 'invoiceData')
		this.createAddressFields(tb, person2VO, !(offerInstance.config.authorization_available == 'past_acceptance'), 'f5')
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.className = "tableSection"
		td.colSpan = 2
		td.innerHTML = jslt.rb.DRB.getString('cart', 'deliveryAddress')
		tr = document.createElement("tr")
		tb.appendChild(tr)
		td = document.createElement("td")
		tr.appendChild(td)
		td.colSpan = 2
		var cbx = jslt.element.createElement(td, "input", {
			type: "checkbox"
		})
		cbx.id = "sameAsInvoice"
		$(cbx).click($.proxy(this.evSameAsInvoiceClick, this))
		var label = jslt.element.createElement(td, "label", {
			"for": "sameAsInvoice"
		})
		label.appendChild(document.createTextNode(jslt.rb.DRB.getString('cart', 'deliveryAddressLikeBuyer')))
		this.createDeliveryAddressFields(tb, person2VO)
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)

		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'saveData'), function(){
			offerInstance.cartView.evChangeAccountDataClick()
		})
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'cancelBtn'), function(){
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		if (!offerInstance.authenticateView.shopClientVO.is_temporary) {
			tr = document.createElement("tr")
			tr.className = "interactionControls"
			tb.appendChild(tr)
			td = document.createElement("td")
			tr.appendChild(td)
			td.colSpan = 2
			div = document.createElement("div");
			td.appendChild(div)
			div.innerHTML = jslt.rb.DRB.getString('cart', 'changePassword');
			div.onclick = function(){
				offerInstance.cartView.evChangePasswordClick()
			}
		}

		$("#accountDataForm").validate({
			errorPlacement: function(error, element){
				error.appendTo(element.parent());
			},
			rules: {
				email: {
					required: function(element){
						return offerInstance.authenticateView.shopClientVO.is_temporary;
					},
					email: true
				},
				address_name_buyer: {
					required: true
				},
				address_surname_buyer: {
					required: true
				},
				address_firm_buyer: {},
				address_nip_buyer: {
					required: true
				},
				address_place_buyer: {
					required: true
				},
				address_street_buyer: {
					required: true
				},
				address_post_buyer: {
					required: true
				},
				address_post_code_buyer: {
					required: true
				},
				address_name_delivery: {
					required: true
				},
				address_surname_delivery: {
					required: true
				},
				address_firm_delivery: {},
				address_place_delivery: {
					required: true
				},
				address_street_delivery: {
					required: true
				},
				address_post_delivery: {
					required: true
				},
				address_post_code_delivery: {
					required: true
				},
				address_phone_delivery: {}
			},
			submitHandler: function(){
			}
		})
	},
	evChangeAccountDataClick: function(){
		if ($("#accountDataForm").valid()) {
			this.person2VO.contact_channels = []
			var fields = this.buyerAddressFields
			//offerInstance.config.authorization_available=='past_acceptance'
			fields = fields.concat(this.deliveryAddressFields)
			if (offerInstance.authenticateView.shopClientVO.is_temporary) {
				fields.push('email')
			}
			for (var i = 0; i < fields.length; i++) {
				var vo = new cms2.contacts.vo.ContactChannelVO()
				vo.code_id = fields[i]
				var ref = document.getElementById(fields[i] + (fields[i].indexOf('delivery') > -1 ? '' : 'f5'))
				vo.contact_value = offerInstance.config.authorization_available == 'past_acceptance' && fields[i].indexOf('delivery') == -1 ? ref.innerHTML : ref.value;
				this.person2VO.contact_channels.push(vo)
			}
			offerInstance.serviceDelegate.saveFullAccountData(this.person2VO)
		}

	},
	modifyingAddressData: false,
	evChangeAccountDataSaved: function(){
		if (offerInstance.authenticateView.shopClientVO.is_temporary) {
			offerInstance.tabView.clearCurrent();
			this.showOrderSummary(this.person2VO)
		}
		else {
			offerInstance.inform(jslt.rb.DRB.getString('common', 'dataSaved'))
			if (this.modifyingAddressData) {//w trakcie zamawiania
				offerInstance.tabView.selectById("accountView", false)
				//offerInstance.tabView.clearCurrent();
				this.showAcccountDataRO()
			}
		}
	},
	evChangePasswordClick: function(){
		offerInstance.tabView.selectById("changePasswordView", true)
		offerInstance.tabView.clearCurrent();
		var form = document.createElement("form")
		offerInstance.tabView.getCurrent().appendChild(form)
		form.id = "changePasswordForm"
		var table = document.createElement("table")
		form.appendChild(table)
		var tb = document.createElement("tbody")
		table.appendChild(tb)
		//obecne
		var tr = document.createElement("tr")
		tb.appendChild(tr);
		tr.className = "vertSpace1"
		var td = document.createElement("td")
		tr.appendChild(td)
		td.innerHTML = jslt.rb.DRB.getString('cart', 'currentPassword')
		td.className = "labelTD"
		td = document.createElement("td")
		tr.appendChild(td)
		var inp = jslt.element.createElement(td, "input", {
			type: "password"
		})
		inp.id = inp.name = 'chPswCurrent'
		inp.className = 'inputStyle w2'
		//nowe
		tr = document.createElement("tr")
		tb.appendChild(tr);
		tr.className = "vertSpace1"
		td = document.createElement("td")
		tr.appendChild(td)
		td.innerHTML = jslt.rb.DRB.getString('cart', 'newPassword')
		td.className = "labelTD"
		td = document.createElement("td")
		tr.appendChild(td)
		inp = jslt.element.createElement(td, "input", {
			type: "password"
		})
		inp.id = inp.name = 'chPswNew'
		inp.className = 'inputStyle w2'
		//nowe powtórzenie
		tr = document.createElement("tr")
		tb.appendChild(tr);
		tr.className = "vertSpace1"
		td = document.createElement("td")
		tr.appendChild(td)
		td.innerHTML = jslt.rb.DRB.getString('cart', 'newPasswordRepeat')
		td.className = "labelTD"
		td = document.createElement("td")
		tr.appendChild(td)
		inp = jslt.element.createElement(td, "input", {
			type: "password"
		})
		inp.id = inp.name = "chPswNewRepeat"
		inp.className = 'inputStyle w2'
		tr = document.createElement("tr")
		tb.appendChild(tr)
		tr.className = "interactionControls"
		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'cancelBtn'), function(){
			offerInstance.tabView.back()
		}, 'button', ' anulujBtn')
		td = document.createElement("td")
		tr.appendChild(td)
		offer.ViewHelper.createButton(td, jslt.rb.DRB.getString('common', 'save'), function(){
			offerInstance.cartView.evSaveChangedPasswordClick()
		})
		$("#changePasswordForm").validate({
			errorPlacement: function(error, element){
				error.appendTo(element.parent());
			},
			rules: {
				chPswCurrent: {
					required: true
				},
				chPswNew: {
					required: true
				},
				chPswNewRepeat: {
					required: true,
					equalTo: "#chPswNew"
				}
			},
			messages: {
				chPswCurrent: {
					required: jslt.rb.DRB.getString('cart', 'writeCurrentPassword')
				},
				chPswNew: {
					required: jslt.rb.DRB.getString('cart', 'writeNewPassword')
				},
				chPswNewRepeat: {
					required: jslt.rb.DRB.getString('cart', 'repeatNewPassword'),
					equalTo: jslt.rb.DRB.getString('cart', 'repeatNewPasswordNotEqual')
				}
			},
			submitHandler: function(){
			}
		});
	},
	evSaveChangedPasswordClick: function(){
		if ($("#changePasswordForm").valid()) {
			offerInstance.serviceDelegate.changePassword($("#chPswCurrent").val(), $("#chPswNew").val(), $("#chPswNewRepeat").val())
		}
	},
	evChangePasswordResult: function(requestResultVO){
		if (requestResultVO.code == 0) {
			offerInstance.inform(jslt.rb.DRB.getString('cart', 'passwordChanged'))
			offerInstance.tabView.back()
		}
		else if (requestResultVO.code == 1) {
			offerInstance.inform(jslt.rb.DRB.getString('cart', 'passwordConfirmationError'))
		}
		else if (requestResultVO.code == 2) {
			offerInstance.inform(jslt.rb.DRB.getString('cart', 'currentPasswordError'))
		}
	}
}

