/*
	Copyright (c) 2006-2008, ePages GmbH
	All Rights Reserved.
*/
dojo.provide("epages.cartridges.de_epages.design.widget.Switchcontentpreview");

dojo.require("epages.widget.LocalizedWidget");
dojo.require("epages.widget.Menu");
dojo.require('epages.lang.hash');
dojo.require('epages.format');

dojo.declare(
	"epages.cartridges.de_epages.design.widget.Switchcontentpreview",
	[epages.widget.LocalizedWidget],
	{
		/**
		 * public properties
		 */

		/**
		 * private properties
		 */
		_previews     : null,
		_menuWidget   : null,
		_lastPreview : null,

		/**
		 * widget properties
		 */
		templatePath    : dojo.moduleUrl('epages.cartridges.de_epages.design.widget','templates/Switchcontentpreview.html'),
		translationName : dojo.moduleUrl('epages.cartridges.de_epages.design.widget','templates/translation'),

		postCreate  : function() {
			this.inherited("postCreate", arguments);
			this._menuWidget= new epages.widget.Menu();
			this._previews = $H({});
		},

		switchPreview: function(id) {
			var newPreview = this._previews.get(id);
			var lastPreviewNode = (this._lastPreview) ? this._lastPreview.previewNode : undefined;
			var lastToolsNode = (this._lastPreview) ? $(this._lastPreview.toolsNodeId) : undefined;
			var toolsNode = $(newPreview.toolsNodeId);

			if(this._lastPreview == null || lastPreviewNode != newPreview.previewNode) {
				// preview node
				if(lastPreviewNode){
					lastPreviewNode.style.display = "none";
				}
				var formatted_label = epages.format.slice(newPreview.label, 15);

				this.previewLabelNode.innerHTML=formatted_label;
				if(newPreview.label !== formatted_label){
					this.previewLabelNode.title = newPreview.label;
				}else{
					this.previewLabelNode.title = "";
				}
				this.previewSelectorNode.style.backgroundImage = 'url('+newPreview.imageUrl+')';
				newPreview.previewNode.style.display="";
				// tools node
				if(lastToolsNode){
					lastToolsNode.style.display="none";
				}
				if(toolsNode){
					toolsNode.style.display="";
				}

				this._lastPreview = newPreview;
				dojo.publish("switchcontentpreview/switchPreview", [id]);
			}
		},

		addPreview: function(id, opt) {
			var parentWidget=this;
			var entry= new dijit.MenuItem({
				label: opt.label,
				iconClass: '',
				onClick: function() {
					parentWidget.switchPreview(id);
					dijit.popup.close(parentWidget._menuWidget);
				}
			});
			entry.iconNode.style.background = 'url('+document.location.protocol + '//' + document.location.hostname + '/' + opt.imageUrl+') no-repeat top left';
			this._menuWidget.addChild(entry);

			this._previews.set(id, opt);
		},

		showPreviewMenu:	function()	{
		// summary: show menu
		// open the popup to the side of the current menu item
			dijit.popup.open({
				parent:this.domNode,
				orient: {'BL':'TL', 'BR':'TR', 'TL':'BL', 'TR':'BR'},
				popup:this._menuWidget,
				around: this.domNode
			});
		},

		_onBlur: function () {
			dijit.popup.close(this._menuWidget);
		}
	}
);