var SimpleshopApi = {};

SimpleshopApi.Checkout = new Class({
	Implements: [Options],
	options: {},

	initialize: function(options) {
		this.setOptions(options);
		
		if(this.options.step=='shipping') {
			if(!$('simpleshop-checkout-use-address-input').checked) {
				$(this.options.shipping_address).slide('hide');
				this.toggleShippingAddress(true);
			}
		}
		
		// add multiple submit-buttons hack for IE
		if(Browser.Engine.trident) {
			var checkoutForm;
			if(this.options.step=='cart') {
				checkoutForm = document.getElement('form[name=simpleshop-cart-form]');
			} else checkoutForm = document.getElement('form[name=simpleshop-checkout-form]');
			
			if($defined(checkoutForm)) {
				var buttons = checkoutForm.getElements('button[type=submit]');
				var hidden = checkoutForm.getElement('input[name=simpleshop-checkout-submit-button]');

				for(var i=0;i<buttons.length;i++) {
					buttons[i].addEvent('click',function(){
						hidden.name = this.get('name');
						hidden.value = this.get('custom-value');
						this.set('name','');
					})
				}
			}
		}
	},

	disableShippingAddress:function(disable) {
		var fieldset = $(this.options.shipping_address);
		fieldset.getElements('input,select').each(function(el){
			el.disabled = disable;
		});
		if(disable) fieldset.slide('out'); else fieldset.slide('in');
	},

	toggleShippingAddress:function(el){
		var disable = true;
		if(el.checked) disable = false;
		this.disableShippingAddress(disable);
	}
});

SimpleshopApi.Admin = new Class({
	Implements: [Options],

	options: {
		actionsPhp:'addons/simpleshop/simpleshop_actions.php'
	},
	
	initialize:function(options) {
		this.setOptions(options);
	},

	toggleSaleStatusDisabled:function(saleId) {
		var toggleInput = $('sale-'+saleId+'-status-toggle-input');
		var statusInput = $('sale-'+saleId+'-status-input');
		if(toggleInput.checked) statusInput.disabled = false; else statusInput.disabled = true;
	},

	setSaleStatus:function(saleId) {
		var status = $('sale-'+saleId+'-status-input').get('value');
		kommredApi.remoteService.request(this.options.actionsPhp,'simpleshop_save_sale_byId',[saleId,{status:status}],{
			onSuccess:function(response){
				if(response) {
					kommredApi.ajaxStatusDisplay.complete();
				} else kommredApi.ajaxStatusDisplay.complete();
			}
		});
	},

	toggleInvoiceNumberDisabled:function(saleId) {
		var toggleInput = $('sale-'+saleId+'-invoice-number-toggle-input');
		var input = $('sale-'+saleId+'-invoice-number-input');
		if(toggleInput.checked) input.disabled = false; else input.disabled = true;
	},

	setInvoiceNumberStatus:function(saleId) {
		var invoiceNumber = $('sale-'+saleId+'-invoice-number-input').get('value');
		kommredApi.remoteService.request(this.options.actionsPhp,'simpleshop_save_sale_byId',[saleId,{invoice_number:invoiceNumber}],{
			onSuccess:function(response){
				if(response) {
					kommredApi.ajaxStatusDisplay.complete();
				} else kommredApi.ajaxStatusDisplay.complete();
			}
		});
	},

	saleAction:function(saleId) {
		var _this = this;
		var select = $('sale-'+saleId+'-action')
		var action = select.get('value');
		if(action!='') {
			kommredApi.remoteService.request(this.options.actionsPhp,action,[saleId],{
				onSuccess:function(response) {
					console.log(response);
					kommredApi.ajaxStatusDisplay.complete();
					_this.saleActionPopUp(response);
				}
			});
		}
		select.getElements('option')[0].selected = true;
	},

	saleActionPopUp:function(content) {
		var x = (window.getWidth()-500)/2;
		var y = 50;//(window.getHeight()-350)/2;
		var popUp = new PopUp('saleActionPopUp',{
			api: kommredApi,
			//timeout: 10000,
			template: kommredApi.popUpTemplates.get('autoCloseButtonBox'),
			x: x+'px',
			y: y+'px',
			style: 'width:500px;',
			text: content,
			button: {text: $L('close'), title: $L('close')},
			onButton: function (p) {
				p.remove();
			},
			onCreate: function (p) {
				p.gfx.getElement('a').focus();
			}
		}).create();
	},

	toggleUserStatusDisabled:function(userId) {
		var toggleInput = $('user-'+userId+'-status-toggle-input');
		var statusInput = $('user-'+userId+'-status-input');
		if(toggleInput.checked) statusInput.disabled = false; else statusInput.disabled = true;
	},

	setUserStatus:function(userId) {
		var status = $('user-'+userId+'-status-input').get('value');
		kommredApi.remoteService.request(this.options.actionsPhp,'simpleshop_save_user_byId',[userId,{status:status}],{
			onSuccess:function(response){
				if(response) {
					kommredApi.ajaxStatusDisplay.complete();
				} else kommredApi.ajaxStatusDisplay.complete();
			}
		});
	},

	productAction:function(productId) {
		var _this = this;
		var select = $('product-'+productId+'-action')
		var action = select.get('value');
		if(action!='') {
			if(action=='simpleshop_edit_product') {
				if(this.options['product-module']!='') {
					//load product meta information
					kommredApi.remoteService.request(this.options.actionsPhp,'simpleshop_load_product_page',[productId],{
						onSuccess:function(response){
							if(response!=false) {
								kommredApi.ajaxStatusDisplay.complete();
								kommredApi.gotoUrl(response+'&editContainer='+productId+'&returnUrl='+encodeURIComponent(window.location.href));
							} else kommredApi.ajaxStatusDisplay.complete();
						}
					});
				}
			}
			if(action=='simpleshop_goto_product_page') {
				if(this.options['product-module']!='') {
					//load product meta information
					kommredApi.remoteService.request(this.options.actionsPhp,'simpleshop_load_product_page',[productId],{
						onSuccess:function(response){
							if(response!=false) {
								kommredApi.ajaxStatusDisplay.complete();
								kommredApi.gotoUrl(response);
							} else kommredApi.ajaxStatusDisplay.complete();
						}
					});
				}
			}
		}
		select.getElements('option')[0].selected = true;
	},

	sendMailForm:function(id,msg) {
		var form = document.getElement('#'+id);
		form.set('send',{onComplete:function(response){form.set('html',msg);}});
		form.send();
	}
});