
if (typeof _pcsg == 'undefined') {
	var _pcsg = {};
};

/**
 * Objekt kann erweitert werden:
 *
 * _pcsg.Basket.onload
 * _pcsg.Basket.onrefresh
 * _pcsg.Basket.onsave
 * _pcsg.Basket.onadd
 */

_pcsg.Basket =
{
	_coupons   : {},
	_articles  : {},
	_isBrutto  : true,
	_vatText   : 'inkl. MwSt.',
	_subsum    : 0,
	_sum       : 0,
	_vat_array : {},

	load : function(loaded)
	{
		this.refresh();
	},

	open : function()
	{
		_pcsg.Basket.manager.open();
	},

	onError : function(Exception)
	{
		if (Exception.getCode()) {
			alert(Exception.getMessage());
		};
	},

	refresh : function(onfinish)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_load', function(result, Ajax)
		{
			var coupons  = result.coupons;
			var articles = result.products;
			var Article, Coupon, _articles = {}, _coupons = {};

			if (typeof coupons != 'undefined' && coupons.length)
			{
				for (var c = 0, len = coupons.length; c < len; c++) {
					_coupons[ coupons[c]['code'] ] = new _pcsg.Coupon( coupons[c] );
				};
			};

			if (typeof articles != 'undefined' && articles.length)
			{
				for (var c = 0, len = articles.length; c < len; c++) {
					_articles[ articles[c]['aid'] ] = new _pcsg.BasketArticle( articles[c] );
				};
			};

			_pcsg.Basket._coupons   = _coupons;
			_pcsg.Basket._articles  = _articles;
			_pcsg.Basket._isBrutto  = result.isbrutto;
			_pcsg.Basket._vatText   = result.vat_text;
			_pcsg.Basket._nettosum  = result.display_nettosum;
			_pcsg.Basket._subsum    = result.display_subsum;
			_pcsg.Basket._sum       = result.display_sum;
			_pcsg.Basket._vat_array = result.vat_array;

			if (typeof _pcsg.Basket.onrefresh != 'undefined') {
				_pcsg.Basket.onrefresh();
			};

			if (Ajax.getAttribute('onfinish')) {
				Ajax.getAttribute('onfinish')();
			};

		}, {
			plugin   : 'accounting',
			onfinish : onfinish
		});
	},

	isBrutto : function()
	{
		return this._isBrutto;
	},

	getVatText : function()
	{
		return this._vatText;
	},

	clear : function(onfinish)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_clear', function(result, Ajax)
		{
			_pcsg.Basket._articles = {};
			_pcsg.Basket._coupons  = {};

			_pcsg.Basket.refresh();

			if (Ajax.getAttribute('onfinish')) {
				Ajax.getAttribute('onfinish')();
			};
		}, {
			plugin   : 'accounting',
			onfinish : onfinish
		});
	},

	clearArticles : function(onfinish)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_clear_articles', function(result, Ajax)
		{
			_pcsg.Basket._articles = {};
			_pcsg.Basket.refresh();

			if (Ajax.getAttribute('onfinish')) {
				Ajax.getAttribute('onfinish')();
			};
		}, {
			plugin   : 'accounting',
			onfinish : onfinish
		});
	},

	clearCoupons : function(onfinish)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_clear_coupons', function(result, Ajax)
		{
			_pcsg.Basket._coupons  = {};
			_pcsg.Basket.refresh();

			if (Ajax.getAttribute('onfinish')) {
				Ajax.getAttribute('onfinish')();
			};
		}, {
			plugin   : 'accounting',
			onfinish : onfinish
		});
	},

	save : function()
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_save', function(result, Ajax)
		{
			if (typeof _pcsg.Basket.onsave != 'undefined') {
				_pcsg.Basket.onsave();
			};
		}, {
			plugin : 'accounting'
		});
	},

	count : function()
	{
		var i = 0;
		var articles = _pcsg.Basket._articles;

		for (c in articles)
		{
			if (typeof articles[c] == 'undefined') {
				continue;
			};

			i = i + articles[c].getQuantity();
		};

		return i;
	},

	getList : function()
	{
		return {
			coupons  : _pcsg.Basket._coupons,
			articles : _pcsg.Basket._articles
		};
	},

	getSum : function(onfinish)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_sum', function(result, Ajax)
		{
			_pcsg.Basket._isBrutto  = result.isbutto;
			_pcsg.Basket._nettosum  = result.display_nettosum;
			_pcsg.Basket._sum       = result.display_sum;
			_pcsg.Basket._subsum    = result.display_subsum;
			_pcsg.Basket._vat_array = result.vat_array;

			if (!Ajax.getAttribute('onfinish')) {
				return;
			};

			Ajax.getAttribute('onfinish')(result, Ajax);
		}, {
			plugin   : 'accounting',
			onfinish : onfinish
		});
	},

	addArticle : function(params)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_add', function(result, Ajax)
		{
			_pcsg.Basket.refresh();

			if (typeof _pcsg.Basket.onadd != 'undefined') {
				_pcsg.Basket.onadd();
			};

		}, {
			plugin : 'accounting',
			btype  : 'article',
			params : JSON.stringify( params )
		});
	},

	getArticle : function(aid)
	{
		if (_articles[ aid ]) {
			return _articles[ aid ];
		};

		return false;
	},

	setArticleQuantity : function(aid, quantity, onfinish)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_setquantity', function(result, Ajax)
		{
			_pcsg.Basket.refresh();

			if (Ajax.getAttribute('onfinish')) {
				Ajax.getAttribute('onfinish')();
			};

		}, {
			plugin   : 'accounting',
			aid      : aid,
			quantity : quantity,
			onfinish : onfinish,
			onError  : function(Exception)
			{
				alert(Exception.getCode());
			}
		});

		/*
		var Article = _pcsg.Basket.getArticle(aid);

		if (!Article) {
			return;
		};

		Article.setQuantity( quantity );
		*/
	},

	addCoupon : function(params)
	{
		var Coupon = new _pcsg.Coupon( params );

		_pcsg.Basket._coupons[ Coupon.getAttribute('code') ] = Coupon;

		_Ajax.asyncPost('ajax_plugins_accounting_basket_add', function(result, Ajax)
		{
			if (typeof _pcsg.Basket.onadd != 'undefined') {
				_pcsg.Basket.onadd();
			};
		}, {
			plugin : 'accounting',
			btype  : 'coupon',
			params : JSON.stringify( Coupon.getAllAttributes() )
		});
	},

	addCouponCode : function(code, onfinish)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_add_coupon', function(result, Ajax)
		{
			if (Ajax.getAttribute('onfinish')) {
				Ajax.getAttribute('onfinish')();
			};

			_pcsg.Basket.refresh();
		}, {
			plugin   : 'accounting',
			code     : code,
			onfinish : onfinish
		});
	},

	removeCouponCode : function(code)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_remove_coupon', function(result, Ajax)
		{
			_pcsg.Basket.refresh();
		}, {
			plugin : 'accounting',
			code   : code
		});
	},

	getDropDown : function(onresult)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_dropdown', function(result, Ajax)
		{
			if (Ajax.getAttribute('onresult')) {
				Ajax.getAttribute('onresult')(result);
			};
		}, {
			plugin   : 'accounting',
			onresult : onresult,
			onError  : function(Exception)
			{
				alert(Exception.getCode());
			}
		});
	},

	paymentRadioCheck : function(elm, counter)
	{
		var form = document.forms['form-payment'];
		var elms = form.elements['payment'];

		if (!elms) {
			return;
		};

		if (!elms.length)
		{
			if ($('payment-needles-'+ counter)) {
				$('payment-needles-'+ counter).style.display = '';
			};

			return;
		};

		for (var i = 0, len = elms.length; i < len; i++)
		{
			elms[i].checked = false;

			if ($('payment-needles-'+ i)) {
				$('payment-needles-'+ i).style.display = 'none';
			};
		};

		elm.checked = true;

		if ($('payment-needles-'+ counter)) {
			$('payment-needles-'+ counter).style.display = '';
		};
	},

	manager :
	{
		open : function(onComplete)
		{
			_pcsg.Basket.background.show();
			_pcsg.Basket.manager.create();

			var onComplete = onComplete || function() {
				_pcsg.Basket.manager.load();
			};

			new Fx.Morph($('pcsgBasketManager'), {
				duration   : 500,
				transition : Fx.Transitions.Quad.easeOut,
				onComplete : onComplete
			}).start({
				opacity : 1
			});
		},

		load : function()
		{
			_Ajax.asyncPost('ajax_plugins_accounting_basket_html_list', function(result, Ajax)
			{
				_pcsg.Basket.manager.setContent( result );
				_pcsg.Basket.manager.loader.stop();
			}, {
				plugin : 'accounting'
			});
		},

		setArticleQuantity : function(aid, quantity)
		{
			_pcsg.Basket.manager.loader.start();

			_pcsg.Basket.setArticleQuantity(aid, quantity, function()
			{
				_pcsg.Basket.manager.load();
			});
		},

		close : function(onComplete)
		{
			var onComplete = onComplete || function() {
				_pcsg.Basket.background.hide();
			};

			new Fx.Morph($('pcsgBasketManager'), {
				duration   : 500,
				transition : Fx.Transitions.Quad.easeOut,
				onComplete : onComplete
			}).start({
				opacity : 0
			});
		},

		create : function()
		{
			if ($('pcsgBasketManager'))
			{
				_pcsg.Basket.manager.loader.start();
				$('pcsgBasketManagerContent').innerHTML = '';

				return;
			};

			var o = document.createElement('div');
			o.id  = 'pcsgBasketManager';

			o.innerHTML = '' +
				'<div id="pcsgBasketManagerButtons"></div>' +
				'<div id="pcsgBasketManagerError"></div>' +
				'<div id="pcsgBasketManagerContent"></div>' +

				'<div id="pcsgBasketManagerClose"></div>' +
				'<div id="pcsgBasketManagerAction"></div>' +

				'<div id="pcsgBasketManagerLoader"></div>';

			if (typeof o.set)
			{
				o.set('opacity', 0);
			} else
			{
				o.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=60)';
			};

			document.body.appendChild( o );

			$('pcsgBasketManagerClose').appendChild(
				new _ptools.Button({
					alt     : 'schließen',
					title   : 'schließen',
					image   : URL_BIN_DIR +'16x16/close.png',
					onclick : function()
					{
						_pcsg.Basket.manager.close();
					}
				}).create()
			);

			$('pcsgBasketManagerButtons').appendChild(
				new _ptools.Button({
					text    : '<img src="'+ URL_OPT_DIR +'accounting/bin/16x16/money.png" style="float: left; margin-right: 10px;" /><span>zur Kasse</span>',
					onclick : function()
					{
						_pcsg.Basket.manager.close(function() {
							_pcsg.Basket.order.open();
						});
					}
				}).create()
			);
		},

		setContent : function(html)
		{
			$('pcsgBasketManagerContent').innerHTML = html;
		},

		loader :
		{
			start : function()
			{
				$('pcsgBasketManagerLoader').style.display = '';
			},

			stop : function()
			{
				$('pcsgBasketManagerLoader').style.display = 'none';
			}
		}
	},

	order :
	{
		btn    : {},
		params : {},
		Active : null,

		open : function()
		{
			_pcsg.Basket.background.show();
			_pcsg.Basket.order.create();

			new Fx.Morph($('pcsgBasketWindow'), {
				duration   : 500,
				transition : Fx.Transitions.Quad.easeOut,
				onComplete : function()
				{
					var Btns = _pcsg.Basket.order.btn;

					if (User == false)
					{
						Btns.shipping.setDisable();
						Btns.payment.setDisable();
						Btns.confirmation.setDisable();
						Btns.finish.setDisable();

						_pcsg.Basket.order.login();
						return;
					};

					_Ajax.asyncPost('ajax_plugins_accounting_basket_isempty', function(result)
					{
						var Btns = _pcsg.Basket.order.btn;

						if (result == true)
						{
							Btns.shipping.setDisable();
							Btns.payment.setDisable();
							Btns.confirmation.setDisable();
							Btns.finish.setDisable();

							_pcsg.Basket.order.setContent(
								'<div class="isempty-basket-close-container">' +
									'Ihr Warenkorb beinhaltet leider keine Produkte' +
									'<div style="clear: both;" id="btn_isempty_basket_close"></div>' +
								'</div>'
							);

							$('btn_isempty_basket_close').appendChild(
								new _ptools.Button({
									name    : 'btn_isempty_basket_close',
									text    : 'schließen',
									width   : 150,
									onclick : function()
									{
										_pcsg.Basket.order.close();
									}
								}).create()
							);

							_pcsg.Basket.loader.stop();
							return;
						};

						Btns.shipping.setEnable();
						Btns.payment.setEnable();
						Btns.confirmation.setEnable();
						Btns.finish.setEnable();

						Btns.shipping.onclick();

						_pcsg.Basket.loader.stop();
					}, {
						project : _Project.name,
						plugin  : 'accounting'
					});

				}
			}).start({
				opacity : 1
			});
		},

		userlogin : function(username, password)
		{
			_pcsg.Basket.loader.start();

			_Ajax.asyncPost('ajax_login', function(result)
			{
				User = {
					id    : result.id,
					name  : result.name,
					email : result.id.email
				};

				_pcsg.Basket.order.close(function()
				{
					_pcsg.Basket.order.open();
				});
			}, {
				project  : _Project.name,
				username : username,
				password : password,
				onError  : function(Exception)
				{
					$('pcsg-accounting-basket-error').innerHTML = Exception.getMessage();
					_pcsg.Basket.loader.stop();
				}
			});

			return false;
		},

		close : function(onComplete)
		{
			var onComplete = onComplete || function() {
				_pcsg.Basket.background.hide();
			};

			new Fx.Morph($('pcsgBasketWindow'), {
				duration   : 500,
				transition : Fx.Transitions.Quad.easeOut,
				onComplete : onComplete
			}).start({
				opacity : 0
			});
		},

		create : function()
		{
			if ($('pcsgBasketWindow'))
			{
				_pcsg.Basket.loader.start();
				$('pcsgBasketWindowContent').innerHTML = '';

				return;
			};

			var o = document.createElement('div');
			o.id  = 'pcsgBasketWindow';

			o.innerHTML = '' +
				'<div id="pcsgBasketWindowButtons"></div>' +
				'<div id="pcsgBasketWindowContent"></div>' +

				'<div id="pcsgBasketWindowClose"></div>' +
				'<div id="pcsgBasketWindowAction"></div>' +

				'<div id="pcsgBasketWindowLoader"></div>';

			if (typeof o.set != 'undefined')
			{
				o.set('opacity', 0);
			} else
			{
				o.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=60)';
			};

			document.body.appendChild( o );

			var btn = {};

			btn.shipping = new _ptools.Button({
				name    : 'shipping',
				text    : 'Versand',
				width   : 210,
				height  : 50,
				onclick : function(Btn)
				{
					_pcsg.Basket.order.setActive( Btn );
					_pcsg.Basket.order.shipping( Btn );
				}
			});

			btn.payment = new _ptools.Button({
				name    : 'payment',
				text    : 'Zahlungsweise',
				width   : 210,
				height  : 50,
				onclick : function(Btn)
				{
					_pcsg.Basket.order.shippingCheck();
				}
			});

			btn.confirmation = new _ptools.Button({
				name    : 'confirmation',
				text    : 'Bestätigung',
				width   : 210,
				height  : 50,
				onclick : function(Btn)
				{
					_pcsg.Basket.order.paymentCheck();
				}
			});

			btn.finish = new _ptools.Button({
				name    : 'finish',
				text    : 'Fertig',
				width   : 210,
				height  : 50,
				onclick : function(Btn)
				{
					_pcsg.Basket.order.setActive( Btn );
					_pcsg.Basket.order.finish( Btn );
				}
			});


			$('pcsgBasketWindowButtons').appendChild(
				btn.shipping.create()
			);

			$('pcsgBasketWindowButtons').appendChild(
				btn.payment.create()
			);

			$('pcsgBasketWindowButtons').appendChild(
				btn.confirmation.create()
			);

			$('pcsgBasketWindowButtons').appendChild(
				btn.finish.create()
			);

			$('pcsgBasketWindowClose').appendChild(
				new _ptools.Button({
					alt     : 'schließen',
					title   : 'schließen',
					image   : URL_BIN_DIR +'16x16/close.png',
					onclick : function()
					{
						_pcsg.Basket.order.close();
					}
				}).create()
			);

			_pcsg.Basket.order.btn = btn;
		},

		setContent : function(html)
		{
			$('pcsgBasketWindowContent').innerHTML = html;
		},

		setActive : function(Btn)
		{
			var Btns = _pcsg.Basket.order.btn;

			switch (Btn.getAttribute('name'))
			{
				default:
				case 'shipping':
					Btns.shipping.setActive();

					Btns.payment.setNormal();
					Btns.confirmation.setNormal();
					Btns.finish.setNormal();

					Btns.confirmation.setDisable();
					Btns.finish.setDisable();
				break;

				case 'payment':
					Btns.shipping.setActive();
					Btns.payment.setActive();

					Btns.confirmation.setNormal();
					Btns.finish.setNormal();

					Btns.confirmation.setEnable();
					Btns.finish.setDisable();
				break;

				case 'confirmation':
					Btns.shipping.setActive();
					Btns.payment.setActive();
					Btns.confirmation.setActive();

					Btns.finish.setNormal();
					Btns.finish.setEnable();
				break;

				case 'finish':
					Btns.shipping.setActive();
					Btns.payment.setActive();
					Btns.confirmation.setActive();
					Btns.finish.setActive();
				break;
			};
		},

		login : function()
		{
			_pcsg.Basket.loader.start();

			_Ajax.asyncPost('ajax_plugins_accounting_basket_tpls', function(result, Ajax)
			{
				_pcsg.Basket.order.setContent( result );
				_pcsg.Basket.loader.stop();
			}, {
				project : _Project.name,
				plugin  : 'accounting',
				tpl     : 'login'
			});
		},

		shipping : function()
		{
			_pcsg.Basket.loader.start();

			_Ajax.asyncPost('ajax_plugins_accounting_basket_tpls', function(result, Ajax)
			{
				_pcsg.Basket.order.setContent( result );

				$('btn_edit_shipping').innerHTML        = '';
				$('pcsgBasketWindowAction').innerHTML   = '';
				$('pcsgBasketWindowAction').style.width = '100px';

				// load data laden
				if ($('script-accountingtpl')) {
					eval($('script-accountingtpl').innerHTML);
				};

				$('pcsgBasketWindowAction').appendChild(
					new _ptools.Button({
						name    : 'next',
						text    : 'weiter',
						image   : URL_BIN_DIR +'16x16/1rightarrow.png',
						width   : 100,
						onclick : function(Btn)
						{
							var form = document.forms['form_edit_shipping_data'];

							var params = {
								id         : form.elements['pcsg.payment.id'].value,

								salutation : form.elements['pcsg.payment.salutation'].value,
								firstname  : form.elements['pcsg.payment.firstname'].value,
								lastname   : form.elements['pcsg.payment.lastname'].value,
								street_no  : form.elements['pcsg.payment.street_no'].value,
								zip        : form.elements['pcsg.payment.zip'].value,
								city       : form.elements['pcsg.payment.city'].value,
								country    : form.elements['pcsg.payment.country'].value,

								tel        : form.elements['pcsg.payment.tel'].value,
								fax        : form.elements['pcsg.payment.fax'].value,
								mobil      : form.elements['pcsg.payment.mobil'].value,
								mail       : form.elements['pcsg.payment.mail'].value,

								company    : form.elements['pcsg.payment.company'].value
							};

							_pcsg.Basket.loader.start();

							_Ajax.asyncPost('ajax_plugins_accounting_set_pay_adress', function(result, Ajax)
							{
								// Extra Felder
								_Ajax.asyncPost('ajax_intranet_edituser', function(result, Ajax)
								{
									//_nr.user.Order.basketRefresh();
									_pcsg.Basket.refresh();
									_pcsg.Basket.order.shippingCheck();
								}, {
									project : _Project.name,
									plugin  : 'intranet',
									data    : Ajax.getAttribute('extra')
								});
							}, {
								project : _Project.name,
								plugin  : 'accounting',
								params  : JSON.stringify( params ),
								extra   : JSON.stringify({
									'pcsg.payment.vatid'       : form.elements['pcsg.payment.vatid'].value,
									'pcsg.payment.taxnumber' : form.elements['pcsg.payment.taxnumber'].value
								})
							});

							/*
							_Ajax.asyncPost('ajax_intranet_edituser', function(result, Ajax)
							{
								//_pcsg.Basket.order.shipping();
								_pcsg.Basket.order.btn.payment.onclick();
							}, {
								project : _Project.name,
								plugin  : 'intranet',
								uid     : User.id,
								data    : JSON.stringify( params )
							});
							*/
						}
					}).create()
				);

				_pcsg.Basket.loader.stop();
			}, {
				project : _Project.name,
				plugin  : 'accounting',
				tpl     : 'shipping'
			});
		},

		shippingCheck : function()
		{
			_pcsg.Basket.loader.start();

			if ($('basket-checkout-error')) {
				$('basket-checkout-error').innerHTML = '';
			};

			_Ajax.asyncPost('ajax_plugins_accounting_basket_check_shipping', function(result, Ajax)
			{
				var Btns = _pcsg.Basket.order.btn;

				if (result)
				{
					_pcsg.Basket.order.setActive( Btns.payment );
					_pcsg.Basket.order.payment();

					_pcsg.Basket.loader.stop();
					return;
				};

				$('basket-checkout-error').innerHTML = 'Bitte geben Sie eine komplette Versandadresse an';

				//$('data_edit_shipping').style.display      = 'none';
				//$('data_edit_shipping_list').style.display = '';

				_pcsg.Basket.loader.stop();
			}, {
				project : _Project.name,
				plugin  : 'accounting'
			});
		},

		payment : function()
		{
			_pcsg.Basket.loader.start();

			_Ajax.asyncPost('ajax_plugins_accounting_basket_tpls', function(result, Ajax)
			{
				_pcsg.Basket.order.setContent( result );

				$('btn_payment').innerHTML             = '';
				$('pcsgBasketWindowAction').innerHTML  = '';
				$('form-payment-error-info').innerHTML = '';

				$('pcsgBasketWindowAction').style.width = '200px';

				$('pcsgBasketWindowAction').appendChild(
					new _ptools.Button({
						name    : 'prev',
						text    : 'zurück',
						image   : URL_BIN_DIR +'16x16/1leftarrow.png',
						width   : 100,
						onclick : function(Btn)
						{
							_pcsg.Basket.order.btn.shipping.onclick();
						}
					}).create()
				);

				$('pcsgBasketWindowAction').appendChild(
					new _ptools.Button({
						name    : 'next',
						text    : 'weiter',
						image   : URL_BIN_DIR +'16x16/1rightarrow.png',
						width   : 100,
						onclick : function(Btn)
						{
							_pcsg.Basket.order.btn.confirmation.onclick();
						}
					}).create()
				);

				if (_pcsg.Basket.order.params.payment)
				{
					var _paymnt    = _pcsg.Basket.order.params.payment;
					var form       = document.forms['form-payment'];
					var elmPayment = form.elements['payment'];

					if (!elmPayment.length && elmPayment.value == _paymnt) {
						elmPayment.checked = true;
					};

					for (var i = 0, len = elmPayment.length; i < len; i++)
					{
						if (elmPayment[i].value == _paymnt)
						{
							elmPayment[i].checked = true;
							break;
						};
					};
				};

				if (typeof _pcsg.Basket.onPaymentTemplate != 'undefined') {
					_pcsg.Basket.onPaymentTemplate();
				};

				_pcsg.Basket.loader.stop();
			}, {
				project : _Project.name,
				plugin  : 'accounting',
				tpl     : 'payment'
			});
		},

		paymentCheck : function()
		{
			_pcsg.Basket.loader.start();

			if ($('form-payment-error-info'))
			{
				$('form-payment-error-info').innerHTML = '';

				var form       = document.forms['form-payment'];
				var elmPayment = form.elements['payment'];

				if (!elmPayment.length && elmPayment.checked) {
					_pcsg.Basket.order.params.payment = elmPayment.value;
				};

				for (var i = 0, len = elmPayment.length; i < len; i++)
				{
					if (elmPayment[i].checked == false) {
						continue;
					};

					_pcsg.Basket.order.params.payment = elmPayment[i].value;
					break;
				};

				_pcsg.Basket.order.params.agbs    = form.elements['agbs'].checked;
				_pcsg.Basket.order.params.privacy = form.elements['privacy'].checked;
			};

			// PHP Prüfung
			var params = _pcsg.Basket.order.params;

			_Ajax.asyncPost('ajax_plugins_accounting_basket_check_payment', function(result, Ajax)
			{
				var Btns = _pcsg.Basket.order.btn;

				if (result && !result.error)
				{
					_pcsg.Basket.order.setActive( Btns.confirmation );
					_pcsg.Basket.order.confirmation();

					_pcsg.Basket.loader.stop();
					return;
				};

				if (result.error)
				{
					$('form-payment-error-info').innerHTML = result.error;
					_pcsg.Basket.loader.stop();
				};

				$('form-payment-error-info').innerHTML = 'Bitte wählen Sie eine Zahlungsweise aus und bestätigen Sie die AGB\'s und Datenschutzerklärungen';

				_pcsg.Basket.loader.stop();
			}, {
				project : _Project.name,
				plugin  : 'accounting',
				payment : params.payment,
				agbs    : params.agbs,
				privacy : params.privacy
			});
		},

		confirmation : function()
		{
			_pcsg.Basket.loader.start();

			_Ajax.asyncPost('ajax_plugins_accounting_basket_tpls', function(result, Ajax)
			{
				_pcsg.Basket.order.setContent( result );

				$('pcsgBasketWindowAction').innerHTML   = '';
				$('pcsgBasketWindowAction').style.width = '260px';

				$('pcsgBasketWindowAction').appendChild(
					new _ptools.Button({
						name    : 'prev',
						text    : 'zurück',
						image   : URL_BIN_DIR +'16x16/1leftarrow.png',
						width   : 100,
						onclick : function(Btn)
						{
							_pcsg.Basket.order.btn.payment.onclick();
						}
					}).create()
				);

				$('pcsgBasketWindowAction').appendChild(
					new _ptools.Button({
						name    : 'send',
						text    : 'Bestellung abschicken',
						image   : URL_OPT_DIR +'accounting/bin/16x16/basket_go.png',
						width   : 160,
						onclick : function(Btn)
						{
							_pcsg.Basket.order.btn.finish.onclick();
						}
					}).create()
				);


				_pcsg.Basket.loader.stop();
			}, {
				project : _Project.name,
				plugin  : 'accounting',
				tpl     : 'confirm',
				fields  : JSON.stringify([
					'pos', 'desc', 'quantity',
					'unity', 'price', 'gprice'
				])
			});
		},

		finish : function()
		{
			_pcsg.Basket.loader.start();

			_Ajax.asyncPost('ajax_plugins_accounting_basket_order', function(result, Ajax)
			{
				var Btns = _pcsg.Basket.order.btn;

				Btns.shipping.setDisable();
				Btns.payment.setDisable();
				Btns.confirmation.setDisable();
				Btns.finish.setDisable();

				_pcsg.Basket.order.setContent( result );
				_pcsg.Basket.refresh();

				$('pcsgBasketWindowAction').innerHTML   = '';
				$('pcsgBasketWindowAction').style.width = '100px';

				$('pcsgBasketWindowAction').appendChild(
					new _ptools.Button({
						name    : 'send',
						text    : 'schließen',
						image   : URL_BIN_DIR +'16x16/close.png',
						width   : 100,
						onclick : function(Btn)
						{
							_pcsg.Basket.order.close();
						}
					}).create()
				);

				_pcsg.Basket.loader.stop();
			}, {
				project : _Project.name,
				plugin  : 'accounting',
				onError : function(result)
				{
					if (typeof _pcsg.Basket.onOrderError != 'undefined')
					{
						_pcsg.Basket.onOrderError( result );
						return;
					};

					if (result.code == 700)
					{
						_pcsg.Basket.order.close(function()
						{
							_pcsg.Basket.manager.open(function()
							{
								$('pcsgBasketManagerError').innerHTML = '' +
									'Ihre Bestellung wurde leider nicht versendet, da ein Artikel nicht in der gewünschten Menge vorhanden ist.<br />' +
									'Bitte überprüfen Sie noch einmal Ihre gewünschten Artikel';

								(function()
								{
									if (!$('pcsgBasketManagerError')) {
										return;
									};

									$('pcsgBasketManagerError').innerHTML = '';
								}).delay(5000);

								_pcsg.Basket.manager.load();
							});
						});
					};
				}
			});
		}
	},

	/**
	 * Loader
	 */
	loader :
	{
		start : function()
		{
			$('pcsgBasketWindowLoader').style.display = '';
		},

		stop : function()
		{
			$('pcsgBasketWindowLoader').style.display = 'none';
		}
	},

	/**
	 * Black Background
	 */
	background :
	{
		show : function()
		{
			if (!$('BackgroundWindow'))
			{
				var oBG = document.createElement('div');

				var scrollWidth  = document.documentElement.scrollWidth;
				var scrollHeight = document.documentElement.scrollHeight;

				oBG.id  = 'BackgroundWindow';

				var style = oBG.style;
				style.backgroundColor = '#000';
				style.position   = 'absolute';
				style.MozOpacity = '0.6';
				style.width   = scrollWidth +'px';
				style.height  = scrollHeight +'px';
				style.top     = '0';
				style.left    = '0';
				style.zIndex  = 1000;
				style.opacity = '0.6';
				style.filter  = 'progid:DXImageTransform.Microsoft.Alpha(opacity=60)';

				document.body.appendChild(oBG);
			};

			$('BackgroundWindow').display = '';
		},

		hide : function()
		{
			if ($('BackgroundWindow')) {
				$('BackgroundWindow').parentNode.removeChild( $('BackgroundWindow') );
			};
		}
	}
};

/**
 * Warenkorb Artikel
 */
_pcsg.BasketArticle = function(settings)
{
	var t = this;
	var settings = settings || {};

	t.getAttribute = function(n)
	{
		if (settings[n]) {
			return settings[n];
		};

		return false;
	};

	t.getAllAttributes = function()
	{
		return settings;
	};

	t.setAttribute = function(n, v)
	{
		settings[n] = v;
	};

	t.setQuantity = function(quantity)
	{
		_Ajax.asyncPost('ajax_plugins_accounting_basket_quantity', function(result, Ajax)
		{

		}, {
			plugin   : 'accounting',
			quantity : quantity,
			aid      : t.getAttribute('aid')
		});
	};

	t.getQuantity = function()
	{
		return t.getAttribute('quantity');
	}
};

/**
 * Warenkorb-Coupon
 */
_pcsg.Coupon = function(settings)
{
	var t = this;
	var settings = settings || {};

	t.getAttribute = function(n)
	{
		if (settings[n]) {
			return settings[n];
		};

		return false;
	};

	t.getAllAttributes = function()
	{
		return settings;
	};

	t.setAttribute = function(n, v)
	{
		settings[n] = v;
	};
};

