/*Copyright (c) 2006-2007, ePages GmbH
	All Rights Reserved.
	epages.cartridges.de_epages.presentation.widget.ProductPickerTree
	$Revision: 1.5
	$*/
dojo.provide("epages.cartridges.de_epages.product.widget.ProductPickerTree");
dojo.require("epages.widget.Modaldialog");
dojo.require("epages.widget.FormElement");
dojo.require("epages.cartridges.de_epages.presentation.widget.Objectstore");
dojo.require("epages.cartridges.de_epages.presentation.widget.Objecttree");
dojo.require('epages.epages_scripts');
dojo.require('dijit.Dialog');

dojo.declare("epages.cartridges.de_epages.product.widget.ProductPickerTree",
	[epages.widget.LocalizedWidget],
	{
		/**
		* public properties
		*/
		query								: '',
		widgetsInTemplate		: true,
		templatePath				: dojo.moduleUrl('epages.cartridges.de_epages.product.widget','templates/ProductPickerTree.html'),
		translationName			: dojo.moduleUrl('epages.cartridges.de_epages.product.widget','templates/translation'),
		useAbsolutePath			: false,
		url									: '?',
		selectedProduct				: undefined,

		/*
		 * private properties
		 */
		_timestamp : undefined, // make something unique

		postMixInProperties: function() {
			// summary: create object store if not already present
			// override
			this._timestamp = (new Date()).getTime();
			if(window.objectStore === undefined){
				dojo.require("epages.cartridges.de_epages.presentation.widget.Objectstore");
				window.objectStore = new epages.cartridges.de_epages.presentation.widget.Objectstore({
					jsId:      "objectStore",
					id:        "objectStore",
					queryClasses: "Product,Category",
					ignoreSubproducts: "1"
				});
			}
			if (this.query == '') {
				if(epages.topWindow && epages.topWindow.objectStore && epages.topWindow.objectStore.objectId != null){
					this.query = "{id:" + epages.topWindow.objectStore.objectId + "}";
				}else{
					this.query = "{id:" + epages.vars.CategoriesID + "}";
				}
			}
			this.inherited('postMixInProperties', arguments);
		},

		postCreate: function() {
			// summary: connect to events
			// override
			this.inherited("postCreate", arguments);
			dojo.subscribe(this.tree.id+'/select', this, function(selectedNode,a) {
				this.onSelectItem(selectedNode.item,selectedNode,a);
			});
		},
		selectedItem : function(){
			// summary: return currently selected item
			return this.selectedProduct;
		},
		onSelectItem: function(/*object*/data,item,a) {
			// summary: keep in mind which item is currently selected
			if(data.isProduct){
				this.selectedProduct = data;
			} else {
				//selected item is a folder --> no valid product
				this.selectedProduct = undefined;
			}
			dojo.publish(this.id+'/select',[this.selectedProduct]);
		}
	}
);