/*
	Copyright (c) 2006-2007, ePages GmbH
	All Rights Reserved.
*/
dojo.provide("epages.cartridges.de_epages.design.widget.Navbarselect");
dojo.require("epages.widget.LocalizedWidget");
dojo.require("epages.lang.array");
dojo.require("dijit._Container");
dojo.require("epages.cartridges.de_epages.design.widget.Navbarpreview");
dojo.require("epages.event");
dojo.require('epages.widget.Modaldialog');
dojo.require('epages.widget.Message');

dojo.declare(
	"epages.cartridges.de_epages.design.widget.Navbarselect",
	[epages.widget.LocalizedWidget,dijit._Container],
	{
		/**
		 * public properties
		 */
		lockLevel:  		'0',
		layout:     		'Layout1',
		objectId:			'',
		undobuttonsId :		'undoWidget',
		imageUrl:           epages.vars.StoreRoot + '/BO/icons',

		roofIsVisible: 		'1',
		headerIsVisible: 	'1',
		topIsVisible: 		'1',
		bottomIsVisible: 	'1',
		footerIsVisible: 	'1',
		leftIsVisible: 		'1',
		rightIsVisible: 	'1',
		leftrightonlyatstartpageIsVisible: '1',

		/**
		 * private properties
		 */
		_dialogWidget: null,
		_dialogWidgetTarget: null,

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

		// override
		postCreate  : function() {
			this.inherited("postCreate", arguments);
			this.lockLevel = parseInt(this.lockLevel);

			$A(['Roof', 'Header', 'Top', 'Left', 'Right', 'Bottom', 'Footer', 'LeftRightOnlyAtStartPage']).each( function (el) {
				var el_lc = el.toLowerCase();  // header
				var v = el_lc + 'IsVisible';   // attribute name: headerIsVisible
				var checkNode = $('Check' + el + 'IsVisible'); // checkHeaderNode
				var checkNodeLabel = dojo.query('label[for="Check' + el + 'IsVisible"]');
				var visibleNode = this['isVisible'+el+'Node']; // isVisibleHeaderNode
				var checkWidget = dijit.byNode(checkNode);
				this[v] = this[v] == '1' ? true : false;
				if (this.lockLevel > 0){
					 checkWidget.attr('disabled ',true);
				}
				// if (this._htmlUndo) this._htmlUndo.setDefaultValue(visibleNode);
				this.connect(checkNode,   'onclick', 'clickBar');
				this.connect(visibleNode, 'onchange', 'onChangeIsVisible');
				checkWidget.attr('checked',this[v]);
				if(el !== 'LeftRightOnlyAtStartPage'){
					if (this[v]) {
						this.Navbarpreview.enableBar(el_lc);
					}
					else {
						this.Navbarpreview.disableBar(el_lc);
					}	
				}
				else{
					if(this['rightIsVisible'] == '0' && this['leftIsVisible'] == '0'){
						dojo.addClass(checkNodeLabel[0], 'Disabled');
						dojo.attr(checkNode, 'disabled', 'disabled');
					}
				}
			}, this);
		},

		setBar: function (navbar, check) {
			if(navbar !== 'LeftRightOnlyAtStartPage'){
				$$('Check' + navbar + 'IsVisible').attr('checked',check);
				if (check) {
					this.Navbarpreview.enableBar(navbar.toLowerCase());
				}
				else {
					this.Navbarpreview.disableBar(navbar.toLowerCase());
				}
			}
		},

		_createDialog: function(){
			var messageWidget = new epages.widget.Message({
				headline:this.translation.get("SaveQuestion"),
				message: this.translation.get("ChangeNavbarsDescription"),
				sizeClass:"Large",
				typeClass:"Warning"
			});

			var me =this;
			var buttons = [{
				label: this.translation.get("Save"),
				cssClass: 'Active',
				onclick: function() {
					this._modalDialogWidget.hide();
					me.sendChanges(me._dialogWidgetTarget);
				}
			},
			{
				label: this.translation.get("Cancel"),
				onclick: function() {
					this._modalDialogWidget.hide();
					me._undoChange(me._dialogWidgetTarget);
				}
			}];
			this._dialogWidget = new epages.widget.Modaldialog({
				id: "Designtoolcontroller_DialogWidget",
				options:{
					title : this.translation.get("ChangeOnNavbars"),
					width : 400,
					height: 120,
					content: messageWidget
				},
				buttons : buttons

			});
			document.body.appendChild(this._dialogWidget.domNode);
		},

		sendChanges: function (t) {
			var navbar = t.value;
			var vNode = this['isVisible'+navbar+'Node'];
			vNode.value = t.checked ? '1' : '0';
			epages.event.fire(vNode,'change');
			if ($$(this.undobuttonsId)) {
				$$(this.undobuttonsId).sendChanges({
					text : this.translate("BusyWhileSavingData"),
					permanent : true
				});
				window.setTimeout(function(){
					window.location.href = window.location.href;
				},1000);
			}
		},

		clickBar: function (evt) {
			var u = $$(this.undobuttonsId);
			if(u){
				if(u.existsChanges()){
					if(!this._dialogWidget){
						 this._createDialog();
					}
					this._dialogWidgetTarget = evt.currentTarget;
					this._dialogWidget.show();
				} else{
					this.sendChanges(evt.currentTarget);
				}
			} else {
				this.sendChanges(evt.currentTarget);
			}
		},

		onChangeIsVisible: function (evt) {
			var t = evt.currentTarget;
			this.setBar(t.id.replace(/IsVisible$/, ''), t.value == '1' ? true : false);
		},

		_undoChange: function(t){
			t.checked = !t.checked;
		}
	}
);