var ProductList = Class.create({
	print: function() {
		var container = $('productListContainer');
		var productTypeCBox = $('productType');
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_list.php',{
			method:'post',
			parameters:{command:'printProductList',style:system.getCurrentStyle(),productType:productTypeCBox.value},
			onSuccess:function(transport) {
				container.innerHTML = transport.responseText;
				system.getMessageManager().hideMessage();
			}
		});	
	}
});

var productList = new ProductList();

var TagManager = Class.create({
	addTagString: function(newTagField) {
		var parameters = $('createTagForm').serialize(true);
		parameters.command = 'addTagString';
		parameters.style = system.getCurrentStyle();
		new Ajax.Request(system.getLibraryPath() + 'catalog/_tag_manager.php',{
			method:'post',
			parameters:parameters,
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					tagManager.reloadTagList();
					$(newTagField).value = '';
					$(newTagField).focus();
				}
			}
		});
	},
	
	reloadTagList: function() {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_tag_manager.php',{
			method:'post',
			parameters:{command:'reloadTagList',style:system.getCurrentStyle()},
			onSuccess:function(transport) {
				$('tagListContainer').innerHTML = transport.responseText;
			}
		});
	},
	
	deleteSelected: function() {
		var list = $('tagList');
		if( list.value ) {
			new Ajax.Request(system.getLibraryPath() + 'catalog/_tag_manager.php',{
				method:'post',
				parameters:{command:'deleteSelected',style:system.getCurrentStyle(),tagId:list.value},
				onSuccess:function(transport) {
					tagManager.reloadTagList();
				}
			});
		}
	},
	
	checkDeleteButton: function() {
		var list = $('tagList');
		if( list.value ) {
			var button = $('deleteTagButton');
			button.disabled = false;
		}
		else {
			button.disabled = true;
		}
	}
});

var tagManager = new TagManager();

var ItemManager = Class.create({
	addTag: function(tagField,itemId) {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php', {
			method:'post',
			parameters:{command:'addTag',style:system.getCurrentStyle(),tagId:$(tagField).value,itemId:itemId},
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					itemManager.reloadTagList();
				}
			}
		});
	},
	
	removeTag: function() {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php', {
			method:'post',
			parameters:{command:'removeTag',style:system.getCurrentStyle(),tagId:$('tagList').value},
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					itemManager.reloadTagList();
				}
			}
		});
	},
	
	reloadTagList: function() {
		var itemId = $('products').value;
		if( itemId ) {
			new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php', {
				method:'post',
				parameters:{command:'reloadTagList',style:system.getCurrentStyle(),itemId:itemId},
				onSuccess:function(transport) {
					$('tagListContainer').innerHTML = transport.responseText;
				}
			});
		}
	},

	loadTypeList: function() {
		var container = $('productTypeListContainer');
		new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php',{
			method:'post',
			parameters:{command:'printProductTypeList',style:system.getCurrentStyle()},
			onSuccess:function(transport) {
				container.innerHTML = transport.responseText;
			}
		});	
	},

	loadProductList: function(typeId,itemId) {
		var container = $('productListContainer');
		var productTypeCBox = $('productType');
		if (!typeId){
			typeId = productTypeCBox.value;
		}
		new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php',{
			method:'post',
			parameters:{command:'printProductList',style:system.getCurrentStyle(),typeId:typeId,itemId:itemId},
			onSuccess:function(transport) {
				container.innerHTML = transport.responseText;
			//	$('productContainer').innerHTML = '';
				itemManager.loadProduct();
				system.getMessageManager().hideMessage();
			}
		});	
	},
	
	loadProduct: function() {
		var container = $('productContainer');
		var products = $('products');
		new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php',{
			method:'post',
			parameters:{command:'loadProduct',style:system.getCurrentStyle(),productId:products.value},
			onSuccess:function(transport) {
				container.innerHTML = transport.responseText;
				system.evalAllScripts('productContainer');
			}
		});	
	},

	addProduct: function() {
		var typeId = $('productType').value;
		if( typeId ) {
			new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php',{
				method:'post',
				parameters:{command:'addProduct',style:system.getCurrentStyle(),typeId:typeId},
				onSuccess:function(transport) {
					if( transport.responseText!='OK' ) {
						system.getMessageManager().showMessage(transport.responseText,{color:'red'});
					}
					else {
						itemManager.loadProductList(typeId);
					}
				}
			});
		}
	},

	removeSelected: function() {
		var itemId = $('products').value;
		var typeId = $('productType').value;
		if( itemId ) {
			new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php',{
				method:'post',
				parameters:{command:'removeProduct',itemId:itemId},
				onSuccess:function(transport) {
					if( transport.responseText!='OK' ) {
						system.getMessageManager().showMessage(transport.responseText,{color:'red'});
					}
					else {
						itemManager.loadProductList(typeId);
						itemManager.redrawTrash();
					}
				}
			});
		}
	},
	
	duplicateSelected: function() {
		var itemId = $('products').value;
		var typeId = $('productType').value;
		if( itemId ) {
			new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php',{
				method:'post',
				parameters:{command:'duplicate',itemId:itemId},
				onSuccess:function(transport) {
					if( transport.responseText!='OK' ) {
						system.getMessageManager().showMessage(transport.responseText,{color:'red'});
					}
					else {
						itemManager.loadProductList(typeId);
						itemManager.redrawTrash();
					}
				}
			});
		}
	},
	
	saveChanges: function(formId,typeId) {
		var parameters = $(formId).serialize(true);
		parameters.command = 'saveProduct';
		parameters.style = system.getCurrentStyle();
		new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php',{
			method:'post',
			parameters:parameters,
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					itemManager.loadProductList(typeId,$(formId).itemId.value);
					system.getMessageManager().hideMessage();
				}
				else {
					system.getMessageManager().showMessage(transport.responseText,{color:'red'});
				}
			}
		});
	},
	
	redrawTrash: function() {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_item_manager.php', {
			method:'post',
			parameters:{command:'redrawTrash',style:system.getCurrentStyle()},
			onSuccess:function(transport) {
				$('trashContainer').innerHTML = transport.responseText;
			}
		});
	}
});

var itemManager = new ItemManager();

var ProductTypeManager = Class.create({
	loadFieldsAsList: function(typeId,containerName) {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:{command:'showFields',style:system.getCurrentStyle(),typeId:typeId },
			onSuccess:function(transport) {
				$(containerName).innerHTML = transport.responseText;
				system.getMessageManager().hideMessage();
			}
		});
	},
	
	createProductType: function(formId) {
		var parameters = $(formId).serialize(true);
		parameters.command = 'createProductType';
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:parameters,
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					new Page(system.getLibraryPath() + 'catalog/_product_type_manager.php',
							{ command:'printPage', style:system.getLibraryPath() },'pageContainer');
					system.getPopUp().close();
				}
			}
		});
	},
	
	saveProductType: function(formId) {
		var parameters = $(formId).serialize(true);
		parameters.command = 'saveProductType';
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:parameters,
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					new Page(system.getLibraryPath() + 'catalog/_product_type_manager.php',
							{ command:'printPage', style:system.getLibraryPath() },'pageContainer');
					system.getPopUp().close();
				}
			}
		});
	},
	
	printAddFieldForm: function(typeId) {
		system.getPopUp().setContent('Loading form...');
		system.getPopUp().setContentWithURL('_product_type_manager.php',{ command:'printAddFieldForm', style:system.getCurrentStyle(), typeId:typeId });
		system.getPopUp().open();
		system.getMessageManager().hideMessage();
	},
	
	printEditFieldForm: function(fieldId) {
		system.getPopUp().setContent('Loading form...');
		system.getPopUp().setContentWithURL('_product_type_manager.php',{ command:'printEditFieldForm', style:system.getCurrentStyle(), fieldId:fieldId });
		system.getPopUp().open();
		system.getMessageManager().hideMessage();
	},
	
	addField: function(formId,typeId) {
		var parameters = $(formId).serialize(true);
		parameters.command = 'addField';
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:parameters,
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					productTypeManager.loadFieldsAsList(typeId,'fieldListContainer');
					system.getMessageManager().hideMessage();
					system.getPopUp().close();
				}
				else {
					system.getMessageManager().showMessage(transport.responseText,{color:'red'});
				}
			}
		});
	},
	
	editField: function(formId,typeId) {
		var parameters = $(formId).serialize(true);
		parameters.command = 'editField';
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:parameters,
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					productTypeManager.loadFieldsAsList(typeId,'fieldListContainer');
					system.getMessageManager().hideMessage();
					system.getPopUp().close();
				}
				else {
					system.getMessageManager().showMessage(transport.responseText,{color:'red'});
				}
			}
		});
	},

	deleteField: function(fieldId,typeId,fieldName) {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:{command:'deleteField',fieldId:fieldId,fieldName:fieldName},
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					productTypeManager.loadFieldsAsList(typeId,'fieldListContainer');
					system.getMessageManager().hideMessage();
				}
				else {
					system.getMessageManager().showMessage(transport.responseText,{color:'red'});
				}
			}
		});
	},
	
	moveFieldUp: function(fieldId,typeId) {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:{command:'moveFieldUp',fieldId:fieldId},
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					productTypeManager.loadFieldsAsList(typeId,'fieldListContainer');
					system.getMessageManager().hideMessage();
				}
				else {
					system.getMessageManager().showMessage(transport.responseText,{color:'red'});
				}
			}
		});
	},
	
	moveFieldDown: function(fieldId,typeId) {
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php',{
			method:'post',
			parameters:{command:'moveFieldDown',fieldId:fieldId},
			onSuccess:function(transport) {
				if( transport.responseText=='OK' ) {
					productTypeManager.loadFieldsAsList(typeId,'fieldListContainer');
					system.getMessageManager().hideMessage();
				}
				else {
					system.getMessageManager().showMessage(transport.responseText,{color:'red'});
				}
			}
		});
	},
	
	loadFieldTypes: function(destinationCBox,fieldContainer) {
		var value = $(destinationCBox).value;
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php', {
			method:'post',
			parameters:{command:'loadFieldTypes',style:system.getCurrentStyle(),fieldDestination:value},
			onSuccess: function(transport) {
				$(fieldContainer).innerHTML = transport.responseText;
				productTypeManager.loadValidValuesHelp('fieldType','allowedValuesMessageContainer');
			}
 		});
	},
	
	loadValidValuesHelp: function(typeCBox,container) {
		value = $(typeCBox).value;
		new Ajax.Request(system.getLibraryPath() + 'catalog/_product_type_manager.php', {
			method:'post',
			parameters:{command:'loadValidValuesHelp',style:system.getCurrentStyle(),type:value},
			onSuccess: function(transport) {
				$(container).innerHTML = transport.responseText;
			}
		});
	}
	
});

var productTypeManager = new ProductTypeManager();