
dojo.require("dojo.dnd.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.require("dojo.io.IframeIO");
dojo.require("dojo.event.*");
dojo.require("dojo.lang.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.validate");
dojo.require("dojo.widget.LayoutContainer");
dojo.require("dojo.widget.FloatingPane");
dojo.require("dojo.widget.ResizeHandle");
dojo.require("dojo.widget.TabContainer");
dojo.require("dojo.widget.LinkPane");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.TaskBar");
dojo.require("dojo.widget.Menu2");


dojo.require("dojo.widget.html.DatePicker");
dojo.require("dojo.widget.DropdownDatePicker");
//dojo.require("dojo.widget.SortableTable");
dojo.require("dojo.widget.Editor");
//dojo.require("dojo.widget.Editor2");
dojo.require("dojo.widget.Checkbox");
//dojo.require("dojo.widget.AccordionContainer");
dojo.hostenv.writeIncludes();


//Onload

dojo.addOnLoad(function() {

	dojo.event.topic.subscribe("componentSelected", function(message) {
		var location = message.node.objectId;
		if(message.node.isfolder) {
			dojo.widget.byId("themeComponentContent").setContent('havelock je pica!!!!');
		}
		else {
		dojo.io.bind({
			url:"/proxy/json-rpc.php?location="+location+"&action=editThemeComponentProperties&position=action",
			load:function(load, data, evt) {
				dojo.widget.byId("themeComponentContent").setContent(data.content);
				dojo.widget.byId("themeComponentContent").show();
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("editThemeComponentPropertiesSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputeditThemeComponentProperties");
					dojo.io.bind({
    					formNode:form,
  							load:function(load, data, evt) {
  								displayDialog('info', 'Component Properties saved!');
	  						},
  							mimetype:"text/plain"
					});
				});
			},
			mimetype:"text/json"
		});
		}
	});	




	dojo.event.topic.subscribe("nodeSelected", function(message) {
		if(message.node.widgetId.substring(0, 7) == 'control') {
			dojo.widget.byId('htfsTreeController').expandToLevel(dojo.widget.byId(message.node.widgetId), 1);
			var location = message.node.objectId;
			dojo.io.bind({
				url:"/proxy/json-rpc.php?location="+location+"&position=control&tool="+message.node.widgetId,
				load:function(load, data, evt) {
					dojo.widget.byId("htfsNavigatorPaneEditor").setContent(data.admin);
					switchNavigatorPane('Editor');
					dojo.widget.byId('htfsTreeController').expandToLevel(dojo.widget.byId(message.node.widgetId), 1);
				},
				mimetype:"text/json"
			});
		}
		else {
			var location = message.node.objectId;
			dojo.io.bind({
				url:"/proxy/json-rpc.php?location="+location+"&position=navigator",
				load:function(load, data, evt) {
					dojo.widget.byId("htfsNavigatorPaneEditor").setContent(data.admin);
					dojo.widget.byId("htfsNavigatorPaneInfo").setContent(data.info);
//					dojo.widget.byId("htfsNavigatorPaneWysiwyg").setContent(data.wysiwyg);
//					var wysiwyg = dojo.widget.fromScript("RichText", {minHeight:100}, document.getElementById("htfsTreeNodeWysiwyg"));
//					dojo.widget.byId("htfsNavigatorPaneExplorer").setContent(data.explorer);
					dojo.widget.byId("htfsNavigatorUrlPane").setContent(data.url);
					dojo.widget.byId("content").setContent(data.content);
					dojo.widget.byId('htfsTreeController').expandToLevel(dojo.widget.byId('tree1-'+location), 1);
					link(location);
				},
				mimetype:"text/json"
			});
		}
	});
	if(htfsConfig.statusType) {
		displayDialog(htfsConfig.statusType, htfsConfig.statusText);
	}
});

//General functions

function displayDialog(type, message) {
	if(type == 'error') {
		var output = "<img id='htfsDialogIcon' src='/lib/graphics/tango/22x22/status/dialog-error.png' alt='' />"+
		"<p>"+message+"</p>"+
		"<button class=\"dojo-Button htfsButton\" onclick=\"dojo.widget.byId('htfsDialog').hide()\">Close</button>";
	}
	else if(type == 'warning') {
		var output = "<img id='htfsDialogIcon' src='/lib/graphics/tango/22x22/status/dialog-warning.png' alt='' />"+
		"<p>"+message+"</p>"+
		"<button class=\"dojo-Button htfsButton\" onclick=\"dojo.widget.byId('htfsDialog').hide()\">Close</button>";
	}
	else {
		var output = "<img id='htfsDialogIcon' src='/lib/graphics/tango/22x22/status/dialog-information.png' alt='' />"+
		"<p>"+message+"</p>"+
		"<button class=\"dojo-Button htfsButton\" onclick=\"dojo.widget.byId('htfsDialog').hide()\">Close</button>";
	}
	dojo.widget.byId("htfsDialogPane").setContent(output);
	dojo.widget.byId("htfsDialog").show();
}

function display(location) {
	dojo.widget.byId("content").setContent("Loading...");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location,
		load:function(load, data, evt) {
			dojo.widget.byId("content").setContent(data);
		},
		mimetype:"text/plain"
	});
}

function openNewEditableWindow(location) {
	//var window = document.createElement("div");
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+location+"&action=displayNode",
		load:function(load, data, evt) {
			if(data.content == "") {
				data.content = "sample text";
			}
			dojo.debug(data);
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: data.title,
				iconSrc: data.icon,
				constrainToContainer: false,
				hasShadow: true,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			var content = "<div type='dojo-ContentPane' id='"+dojoObject.widgetId+"_content' style='height:300px; overflow:auto; padding:10px;'>"+data.content+"</div>";
			var buttons = "<div class='htfsFormControls'><div class='htfsFormButtonSubmit'><button id='editButton'>editovat</button></div><div class='htfsFormButtonCancel'><button id='closeButton'>zavrit</button></div></div>";
			dojoObject.setContent(content+buttons);
			var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("closeButton"));
			var editButton = dojo.widget.fromScript("Button", {}, document.getElementById("editButton"));

			dojo.event.connect(editButton, "onClick", function(evt) {
				//dojoObject.setContent('');
				var editorProperties = {

					items: ["commandGroup", "|", "textGroup", "|", "justifyGroup", "listGroup", "|", "linkGroup"]
				};
				var htfsEditor = dojo.widget.fromScript("Editor", editorProperties, document.getElementById(dojoObject.widgetId+"_content"));
				closeButton.destroy();
				editButton.destroy();
				dojo.event.kwConnect({
					type: "around",
					srcObj: htfsEditor,
					srcFunc: "_save",
					adviceFunc: function(invocation) {
						dojo.io.bind({
							url:"/proxy/htfs-rpc.php?location="+location+"&action=exec.editTreeNodeContent",
							method:"post",
							content: {
								content: htfsEditor._richText.getEditorContent()
							},
							load:function(load, data, evt) {
								displayDialog('info', 'Texts saved!');
							},
							mimetype:"text/plain"
						});
		   				return;
					}
    			});
			});			
			dojo.event.connect(closeButton, "onClick", function(evt) {
				dojo.widget.byId(dojoObject.widgetId).destroy();
			});
		},
		mimetype:"text/json"
	});
}

function openNewWindow(location) {
	//var window = document.createElement("div");
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+location+"&action=displayNode",
		load:function(load, data, evt) {
			dojo.debug(data);
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: data.title,
				iconSrc: data.icon,
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			dojoObject.setContent(data.content+"<div class='htfsFormButtonSubmit'><button id='closeButton_"+dojoObject.widgetId+"'>zavrit</button></div>");
			var dojoButton = dojo.widget.fromScript("Button", {}, document.getElementById("closeButton_"+dojoObject.widgetId)); 
			
			dojo.event.connect(dojoButton, "onClick", function(evt) {
				dojo.widget.byId(dojoObject.widgetId).destroy();
			});
		},
		mimetype:"text/json"
	});
}

function openActionDialog(location, action) {
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+location+"&action="+action+"&position=action",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsActionDialogPane").setContent(data.content);
			dojo.widget.byId("htfsActionDialog").show();
			if(data.title == "Pass Thumbnail") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("passThumbSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputpassThumbToParent");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							dojo.widget.byId("htfsActionDialog").hide();
   							displayDialog('info', 'Thumbnail passed!')
   						},
   						mimetype:"text/plain"
					});
				});
				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("passThumbClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojo.widget.byId("htfsActionDialog").hide();
				});
			}
			if(data.title == "Create Dataplex") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("createDataplexSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputcreateDataplex");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							dojo.widget.byId("htfsActionDialog").hide();
   							displayDialog('info', 'Dataplex created!')
   						},
   						mimetype:"text/plain"
					});
				});
				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("createDataplexClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojo.widget.byId("htfsActionDialog").hide();
				});
			}
			if(data.title == "Create New Task") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("createTaskSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputcreateNewTask");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							dojo.widget.byId("htfsActionDialog").hide();
   							displayDialog('info', 'Task created!');
   							link(htfsConfig.nodeId);
   						},
   						mimetype:"text/plain"
					});
				});
			}				
		},
		mimetype:"text/json"
	});
}

function openActionWindow(location, action) {
	//var window = document.createElement("div");
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+location+"&action="+action+"&position=action",
		load:function(load, data, evt) {
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: data.title,
				iconSrc: data.icon,
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			dojoObject.setContent(data.content);
			if(data.title == "Personal Information Manager") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsPimCreateContact")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					openActionWindow(htfsConfig.nodeId, "addNewContact");
				});
				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsPimClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojo.widget.byId(dojoObject.widgetId).destroy();
				});
			}
			if(data.title == "Create Event") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsPimCreateEventSave")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputcreateEvent");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							dojoObject.destroy();
   						},
   						error:function(error, data, evt) {
   							alert('Error');
   						},
   						mimetype:"text/plain"
					});
				});

				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsPimCreateEventClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
			}
			if(data.title == "Translate GUI Texts") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsTranslateActionSave")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputtranslateActionTexts");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							dojoObject.destroy();
   						},
   						mimetype:"text/plain"
					});
				});
				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsTranslateActionClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
			}
			if(data.title == "Create New Contact") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsPimCreateContactSave")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputaddNewContact");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							dojoObject.destroy();
   						},
   						error:function(error, data, evt) {
   							alert('Error');
   						},
   						mimetype:"text/plain"
					});
				});
				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsPimCreateContactClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
			}
			if(data.title == "Edit Template Styles") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("editTemplateStylesSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputeditTemplateStyles");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							displayDialog('info', 'Styles saved!');
//   							dojoObject.destroy();
   						},
   						error:function(error, data, evt) {
   							alert('Error');
   						},
   						mimetype:"text/plain"
					});
				});

				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("editTemplateStylesClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
			}
			if(data.title == "Edit Template Files") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("editTemplateScriptsSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputeditTemplateScripts");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							displayDialog('info', 'Theme files saved!');
//   							dojoObject.destroy();
   						},
   						error:function(error, data, evt) {
   							alert('Error');
   						},
   						mimetype:"text/plain"
					});
				});

				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("editTemplateScriptsClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
			}
			if(data.title == "Set Theme Properties") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("setThemePropertiesSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputsetThemeProperties");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							displayDialog('info', 'Theme files saved!');
//   							dojoObject.destroy();
   						},
   						error:function(error, data, evt) {
   							alert('Error');
   						},
   						mimetype:"text/plain"
					});
				});

				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("setThemePropertiesClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
			}
			if(data.title == "Manage Theme Components") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("manageThemeComponentsAdd")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					dojo.widget.byId("themeComponentsTree");
					insertThemeComponent(dojo.widget.byId("themeComponentsTree"), "themeComponentsController");
				});
				var removeButton = dojo.widget.fromScript("Button", {}, document.getElementById("manageThemeComponentsRemove")); 
				dojo.event.connect(removeButton, "onClick", function(evt) {
					deleteTreeNode(dojo.widget.byId("themeComponentsSelector").selectedNode, "themeComponentsController");
				});
				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("manageThemeComponentsClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojo.event.topic.unsubscribe("componentSelected");
					dojoObject.destroy();
				});
			}
			if(data.title == "Edit Plex Properties") {
				var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("editPlexPropertiesSubmit")); 
				dojo.event.connect(createButton, "onClick", function(evt) {
					var form = document.getElementById("htfsInputeditPlexProperties");
					dojo.io.bind({
	    				formNode:form,
   						load:function(load, data, evt) {
   							displayDialog('info', 'Plex properties saved!');
   							dojoObject.destroy();
   						},
   						mimetype:"text/plain"
					});
				});

				var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("editPlexPropertiesClose")); 
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
			}
		},
		mimetype:"text/json"
	});
}

function openSearch(type) {
	alert(type);
}


/* CALENDAR */

function openCalendar(day) {
	if(dojo.widget.byId("htfsCalendar")) {
//		alert('refresh:'+day);
		refreshCalendar(day);		
	}
	else {
//		alert('open:'+day);
		dojo.widget.byId("htfsDialogLoading").show();
		dojo.io.bind({
			url:"/proxy/htfs-rpc.php?location="+htfsConfig.nodeId+"&action=displayCalendar&day="+day,
			load:function(load, data, evt) {
				var window = document.getElementById("bodyTag");
				var windowProperties = {
					title: "Event Calendar",
					widgetId: "htfsCalendar",
					iconSrc: "/lib/graphics/tango/22x22/status/image-loading.png",
					constrainToContainer: false,
					hasShadow: false,
					resizable: false,
					taskBarId: "htfsTaskbar",
					windowState: "normal",
					displayCloseAction: true,
					displayMinimizeAction: false,
					displayMaximizeAction: false,
					toggle: "explode"
				}
				var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
				dojoObject.setContent(data);
				//refreshCalendar(day);
				dojo.widget.byId("htfsDialogLoading").hide();
			},
			mimetype:"text/html"
		});
	}
}

function openCalendarDay(day) {
//	alert('cal:'+day);
	openCalendar(day);
	displayCalendarDay(day);
}

function getCurrentDate() {
 var currDateObj = new Date();
 return currDateObj.getFullYear()+'-'+(currDateObj.getMonth()+1)+'-'+currDateObj.getDate();
}

function refreshCalendar(day) {
	var calendar = dojo.widget.byId("htfsCalendarArea");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+htfsConfig.nodeId+"&action=displayCalendar&full=no&day="+day,
		load:function(load, data, evt) {
			calendar.setContent(data);
		},
		mimetype:"text/html"
	});
}

function displayCalendarDay(time) {
	dojo.widget.byId("htfsDialogLoading").show();
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+htfsConfig.nodeId+"&day="+time+"&action=displayCalendarDay",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsDialogLoading").hide();
			dojo.widget.byId("htfsDialogPane").setContent(data);
			dojo.widget.byId("htfsDialog").show();
		},
		mimetype:"text/html"
	});
}

function createCalendarEvent(time) {
	var form = document.getElementById("htfsInputdisplayCalendarDay");
	dojo.io.bind({
		formNode:form,
    	load:function(load, data, evt) {
    		dojo.widget.byId("htfsDialog").hide();
    		dojo.widget.byId("day_"+time).setContent(data);
		},
		mimetype:"text/html"
	});	
}



/* DECORATOR */

function openDecorator(location) {
	if(dojo.widget.byId("htfsDecorator")) {
		displayDialog('error', 'Decorator is already running!');
	}
	else {
		dojo.widget.byId("htfsDialogLoading").show();
		dojo.io.bind({
			url:"/proxy/htfs-rpc.php?location="+location+"&action=displayDecorator",
			load:function(load, data, evt) {
				dojo.debug(data);
				var window = document.getElementById("bodyTag");
				var windowProperties = {
					title: "HTFS Resource Metadata Model Manager",
					widgetId: "htfsDecorator",
					iconSrc: "/lib/graphics/tango/22x22/status/image-loading.png",
					constrainToContainer: false,
					hasShadow: false,
					resizable: false,
					taskBarId: "htfsTaskbar",
					windowState: "normal",
					displayCloseAction: true,
					displayMinimizeAction: true,
					displayMaximizeAction: true,
					toggle: "explode"
				}
				var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
				dojoObject.setContent(data);
	 			var previewButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsDecoratorPreview"));
				dojo.event.connect(previewButton, "onClick", function(evt) {
					displayDecoratorPreview(location);
				});
	 			var reportButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsDecoratorReport"));
				dojo.event.connect(reportButton, "onClick", function(evt) {
					displayDecoratorReport(location);
				});
	 			var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("htfsDecoratorClose"));
				dojo.event.connect(closeButton, "onClick", function(evt) {
					dojoObject.destroy();
				});
				dojo.widget.byId("htfsDialogLoading").hide();
			},
			mimetype:"text/html"
		});
	}
}

function displayDecoratorReport(id) {
	dojo.widget.byId("htfsDialogLoading").show();
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+id+"&action=displayDecorationChart",
		load:function(load, data, evt) {
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: "Decoration Report",
				widgetId: "htfsDecoratorReport",
				iconSrc: "/lib/graphics/tango/22x22/status/image-loading.png",
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			dojoObject.setContent(data);
			dojo.widget.byId("htfsDialogLoading").hide();
		},
		mimetype:"text/html"
	});
}

function displayDecoratorPreview(id) {
	dojo.widget.byId("htfsDialogLoading").show();
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+id+"&action=previewDecorationOutput",
		load:function(load, data, evt) {
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: "Decoration Output Preview",
				widgetId: "previewDecorationOutput",
				iconSrc: "/lib/graphics/tango/22x22/status/image-loading.png",
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			dojoObject.setContent(data);
			dojo.widget.byId("htfsDialogLoading").hide();
		},
		mimetype:"text/html"
	});
}

function switchDecorationPane(type) {
	dojo.widget.byId("htfsDecoratorPaneInfo").hide();
	dojo.widget.byId("htfsDecoratorPaneViews").hide();
	dojo.widget.byId("htfsDecoratorPaneProperties").hide();
	dojo.widget.byId("htfsDecoratorPaneHelp").hide();
	dojo.widget.byId("htfsDecoratorPane"+type).show();
}

function editDecoration(id) {
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+id+"&action=editDecoration",
		load:function(load, data, evt) {
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: "Class Decorator",
				widgetId: "htfsDecoratorWindow",
				iconSrc: "/lib/graphics/tango/22x22/status/mail-attachment.png",
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: false,
				displayMaximizeAction: false,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			dojoObject.setContent(data);

	 		var displaySqlButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationDisplaySQL"));
	 		var displayXmlButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationDisplayXML"));
			var displayJsonButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationDisplayJSON"));
			
	 		var addViewButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationAddView"));
	 		var editViewButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationEditView"));

	 		var addPropertyButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationAddProperty"));
			dojo.event.connect(addPropertyButton, "onClick", function(evt) {
				addDecorationProperty(id);
			});

	 		var editPropertyButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationEditProperty"));
			dojo.event.connect(editPropertyButton, "onClick", function(evt) {
				editDecorationProperty(id);
			});			

			var submitButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationSubmit"));
			dojo.event.connect(submitButton, "onClick", function(evt) {
				var form = document.getElementById("htfsInputeditTreeNodeProperties");
				dojo.io.bind({
	    			formNode:form,
   					load:function(load, data, evt) {
   					},
   					mimetype:"text/plain"
				});
			});

	 		var infoButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationInfo"));
			dojo.event.connect(infoButton, "onClick", function(evt) {
				switchDecorationPane("Info");
			});

	 		var viewsButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationViews"));
			dojo.event.connect(viewsButton, "onClick", function(evt) {
				switchDecorationPane("Views");
			});

	 		var propertiesButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationProperties"));
			dojo.event.connect(propertiesButton, "onClick", function(evt) {
				switchDecorationPane("Properties");
			});
			
	 		var helpButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationHelp"));
			dojo.event.connect(helpButton, "onClick", function(evt) {
				switchDecorationPane("Help");
			});

	 		var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationClose"));
			dojo.event.connect(closeButton, "onClick", function(evt) {
				dojo.widget.byId("htfsDecoratorWindow").destroy();
			});
		},
		mimetype:"text/html"
	});
}

function addDecorationProperty(id) {
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+id+"&action=createNode&type=Datatype",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsDialogPane").setContent(data);
			var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("htfsCreateNodeSubmit"));
			var buttonClose = dojo.widget.byId("htfsCreateNodeClose");
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				var form = document.getElementById("htfsInputcreateNode");
				dojo.io.bind({
   					formNode:form,
					load:function(load, data, evt) {
						dojo.widget.byId("htfsDialog").hide();
    				},
					mimetype:"text/plain"
				});
			});
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				dojo.widget.byId('htfsDialog').hide();
			});
			dojo.widget.byId("htfsDialog").show();
		},
		mimetype:"text/plain"
	});
}

function switchDecorationPropertyPane(type) {
	dojo.widget.byId("htfsDecoratorPropertyPaneGeneral").hide();
	dojo.widget.byId("htfsDecoratorPropertyPaneValue").hide();
	dojo.widget.byId("htfsDecoratorPropertyPane"+type).show();
}

function switchDecorationPropertyValue(type) {
	dojo.widget.byId("htfsDecoratorPropertyValueText").hide();
	dojo.widget.byId("htfsDecoratorPropertyValueNumber").hide();
	dojo.widget.byId("htfsDecoratorPropertyValueMoney").hide();
	dojo.widget.byId("htfsDecoratorPropertyValueChoice").hide();
	dojo.widget.byId("htfsDecoratorPropertyValueDatetime").hide();
	dojo.widget.byId("htfsDecoratorPropertyValueBoolean").hide();
	dojo.widget.byId("htfsDecoratorPropertyValueEntity").hide();
	dojo.widget.byId("htfsDecoratorPropertyValueRelation").hide();
	dojo.widget.byId("htfsDecoratorPropertyValue"+type).show();
}

function editDecorationProperty(id) {
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+id+"&action=editDecorationProperty",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsDecoratorDialogPane").setContent(data);
			dojo.widget.byId("htfsDecoratorDialog").show();
			var submitButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationPropertySubmit"));
			dojo.event.connect(submitButton, "onClick", function(evt) {
				var form = document.getElementById("htfsInputeditDecorationProperty");
				dojo.io.bind({
	    			formNode:form,
   					load:function(load, data, evt) {
   						dojo.widget.byId("htfsDecoratorDialog").hide();
   					},
   					mimetype:"text/plain"
				});
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyText"), "onclick", function(evt) {
				switchDecorationPropertyValue("Text");
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyNumber"), "onclick", function(evt) {
				switchDecorationPropertyValue("Number");
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyMoney"), "onclick", function(evt) {
				switchDecorationPropertyValue("Money");
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyChoice"), "onclick", function(evt) {
				switchDecorationPropertyValue("Choice");
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyDatetime"), "onclick", function(evt) {
				switchDecorationPropertyValue("Datetime");
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyBoolean"), "onclick", function(evt) {
				switchDecorationPropertyValue("Boolean");
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyEntity"), "onclick", function(evt) {
				switchDecorationPropertyValue("Entity");
			});

			dojo.event.connect(document.getElementById("editDecorationSetPropertyRelation"), "onclick", function(evt) {
				switchDecorationPropertyValue("Relation");
			});


	 		var generalButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationPropertyGeneral"));
			dojo.event.connect(generalButton, "onClick", function(evt) {
				switchDecorationPropertyPane("General");
			});

	 		var valueButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationPropertyValue"));
			dojo.event.connect(valueButton, "onClick", function(evt) {
				switchDecorationPropertyPane("Value");
			});
	 		
	 		var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("editDecorationPropertyClose"));
			dojo.event.connect(closeButton, "onClick", function(evt) {
				dojo.widget.byId("htfsDecoratorDialog").hide();
			});
		},
		mimetype:"text/html"
	});
}

/* NAVIGATOR */

function openNavigator(location) {
	if(dojo.widget.byId("htfsNavigator")) {
		dojo.widget.byId("htfsNavigator").show();
	}
	else {
		dojo.require("dojo.widget.Tree");
dojo.require("dojo.widget.TreeRPCController");
dojo.require("dojo.widget.TreeSelector");
dojo.require("dojo.widget.TreeNode");
dojo.require("dojo.widget.TreeContextMenu");
dojo.require("dojo.widget.SplitContainer");

		dojo.widget.byId("htfsDialogLoading").show();
		dojo.io.bind({
			url:"/proxy/htfs-rpc.php?location="+location+"&action=displayNavigator",
			load:function(load, data, evt) {
				dojo.debug(data);
				var window = document.getElementById("bodyTag");
				var windowProperties = {
					title: "HTFS Navigator",
					widgetId: "htfsNavigator",
					iconSrc: "/lib/graphics/tango/22x22/actions/edit-find-replace.png",
					constrainToContainer: false,
					hasShadow: false,
					resizable: true,
					taskBarId: "htfsTaskbar",
					windowState: "normal",
					displayCloseAction: true,
					displayMinimizeAction: true,
					displayMaximizeAction: true,
					toggle: "explode"
				}
				var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
				dojoObject.setContent(data);
				dojo.widget.byId("htfsDialogLoading").hide();
//				selectNode(htfsConfig.nodeId);
			},
			mimetype:"text/html"
		});
	}
}

function commitNavigatorEdit(location) {
	var form = document.getElementById("htfsInputeditTreeNodePropertiesInline");
	dojo.io.bind({
		formNode:form,
   		load:function(load, data, evt) {
   			var selectedNode = dojo.widget.byId("htfsTreeSelector").selectedNode;
   			dojo.widget.byId(selectedNode.widgetId).edit({title: data});
   			displayDialog('info', 'Data saved');
   		},
   		mimetype:"text/plain"
	}); 
}
	
function byId(id){
	return document.getElementById(id);
}

function initExplorerList() {
	// list one
	var dl = document.getElementById("htfsExplorerList");
	new dojo.dnd.HtmlDropTarget(dl, ["li1"]);
	var lis = dl.getElementsByTagName("li");
	for(var x=0; x<lis.length; x++){
		new dojo.dnd.HtmlDragSource(lis[x], "li1");
	}
}

function selectNode(location) {
	var selector = dojo.widget.byId("htfsTreeSelector");
	var selectQuery = {source: dojo.widget.byId("tree1-"+location)} 
	selector.select(selectQuery);
}

function selectControl(location) {
	var selector = dojo.widget.byId("htfsTreeSelector");
	var selectQuery = {source: dojo.widget.byId("control-"+location)} 
	selector.select(selectQuery);
}

function switchNavigatorPane(type) {
//	dojo.widget.byId("htfsNavigatorPaneTree").hide();
//	dojo.widget.byId("htfsNavigatorPaneExplorer").hide();
	dojo.widget.byId("htfsNavigatorPaneEditor").hide();
	dojo.widget.byId("htfsNavigatorPaneInfo").hide();
	dojo.widget.byId("htfsNavigatorPane"+type).show();
}

function onTreeTitleClick() {
	alert("jo!");
}

function displayHtfsInfo() {
	var output = "<h3>HTFS 2.0 alpha 5</h3>"+"<p style='margin:2px 0; width:100%;'><b>Copyright &copy; HighLine 2002-2006</b></p><p style='margin:2px 0; width:100%;'>Authors: Newt, Kena, Sosak,<br />X-Ray, Princezna1250</p>"+"<button class=\"dojo-Button htfsButton\" onclick=\"dojo.widget.byId('htfsDialog').hide()\">Close</button>";;
	
	dojo.widget.byId("htfsDialogPane").setContent(output);
	dojo.widget.byId("htfsDialog").show();
}


//Tree manipulation functions

function deleteTreeNode(selectedNode, controllerId) {
	if (!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false
		;
	}

	if (selectedNode.actionIsDisabled(selectedNode.actions.REMOVE)) {
		displayDialog('error', 'Cannot remove this node!');
 		return false;
	}

	var location = selectedNode.objectId;
	
	dojo.widget.byId("htfsNavigatorDialogPane").setContent("Loading...");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=deleteTreeNode",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsNavigatorDialogPane").setContent(data);
	 		var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("htfsDeleteNodeSubmit"));
	 		var buttonClose = dojo.widget.byId("htfsDeleteNodeClose");
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				var form = document.getElementById("htfsInputdeleteTreeNode");
				dojo.io.bind({
		    		formNode:form,
    				load:function(load, data, evt) {
						dojo.widget.byId("htfsNavigatorDialog").hide();
						var controller = dojo.widget.manager.getWidgetById(controllerId);
  						var res = controller.removeNode(selectedNode, null);
    				},
    				mimetype:"text/plain"
 				});
			});
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				dojo.widget.byId('htfsNavigatorDialog').hide();
			});
			dojo.widget.byId("htfsNavigatorDialog").show();
		},
		mimetype:"text/plain"
	});
}

function displayActionInDialog(selectedNode, action) {
	dojo.widget.byId("htfsNavigatorDialogPane").setContent("Loading...");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action="+action,
		load:function(load, data, evt) {
			dojo.widget.byId("htfsNavigatorDialogPane").setContent(data);
			dojo.widget.byId("htfsNavigatorDialog").show();
		},
		mimetype:"text/plain"
	});
}

function createTreeNode(selectedNode, controllerId, icon, type) {
	if(!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false;
	}

	if(selectedNode.actionIsDisabled(selectedNode.actions.ADDCHILD)) {
		displayDialog('error', 'Cannot add child to this node!');
		return false;
	}
	var location = selectedNode.objectId;
	
	dojo.widget.byId("htfsNavigatorDialogPane").setContent("Loading...");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=createNode&type="+type,
		load:function(load, data, evt) {
			dojo.widget.byId("htfsNavigatorDialogPane").setContent(data);
	 		var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("htfsCreateNodeSubmit"));
	 		var buttonClose = dojo.widget.byId("htfsCreateNodeClose");
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				var form = document.getElementById("htfsInputcreateNode");
				dojo.io.bind({
		    		formNode:form,
    				load:function(load, data, evt) {
    					dojo.widget.byId("htfsNavigatorDialog").hide();
						var controller = dojo.widget.manager.getWidgetById(controllerId);
						if(selectedNode.isExpanded) {
							var res = controller.createChild(selectedNode, data.index, data, null);
						}
						else {
							dojo.widget.byId('htfsTreeController').expandToLevel(dojo.widget.byId(selectedNode.widgetId), 1);
							var res = controller.createChild(selectedNode, data.index, data, null);
						}
    				},
    				mimetype:"text/json"
 				});
			});
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				dojo.widget.byId('htfsNavigatorDialog').hide();
			});
			dojo.widget.byId("htfsNavigatorDialog").show();
		},
		mimetype:"text/plain"
	});
}

function handleClose() {
	var location = dojo.widget.byId('htfsTreeSelector').selectedNode.objectId;
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location,
		load:function(load, data, evt) {
			dojo.widget.byId("content").setContent(data);
		},
		mimetype:"text/plain"
	});
}

function editTreeNodeContent(selectedNode, controllerId) {
	if(!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false;
	}

	var location = selectedNode.objectId;

	//Loads content for richtext editor
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location,
		load:function(load, data, evt) {
			var editorProperties = {
				widgetId: "htfsEditor",
				minHeight: "300px",
				items: ["commandGroup", "|", "textGroup", "|", "justifyGroup", "listGroup", "|", "linkGroup"]
			};
			dojo.widget.byId("content").setContent('<div id="htfsEditor">'+data+'</div>');
			var parentNode = document.getElementById("content");
			var htfsEditor = dojo.widget.fromScript("Editor", editorProperties, document.getElementById("htfsEditor"));
			htfsEditor.onCancel = handleClose;
			dojo.event.kwConnect({
				type: "around",
				srcObj: htfsEditor,
				srcFunc: "_save",
				adviceFunc: function(invocation) {
					dojo.io.bind({
						url:"/proxy/htfs-rpc.php?location="+location+"&action=exec.editTreeNodeContent",
						method:"post",
						content: {
							content: htfsEditor._richText.getEditorContent()
						},
						load:function(load, data, evt) {
							displayDialog('info', 'Texts saved!');
						},
						mimetype:"text/plain"
					});
    				return;
				}
   			});
		},
		mimetype:"text/plain"
	});
}

function editTreeNodeProperties(selectedNode, controllerId, icon) {
	if(!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false;
	}
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+selectedNode.objectId+"&action=editTreeNodeProperties&position=window",
		load:function(load, data, evt) {
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: data.title,
				iconSrc: data.iconSrc,
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			dojoObject.setContent(data.content);
	 		var submitButton = dojo.widget.fromScript("Button", {}, document.getElementById("submit"));
	 		var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("close"));
			dojo.event.connect(submitButton, "onClick", function(evt) {
				var form = document.getElementById("htfsInputeditTreeNodeProperties");
				dojo.io.bind({
	    			formNode:form,
   					load:function(load, data, evt) {
   						if(selectedNode.widgetId) {
	   						dojo.widget.byId(selectedNode.widgetId).edit({title: data});
   						}
						displayDialog('info', 'Properties saved');
//						dojoObject.destroy();
   					},
   					mimetype:"text/plain"
				});
			});
			dojo.event.connect(closeButton, "onClick", function(evt) {
				dojoObject.destroy();
			});
		},
		mimetype:"text/json"
	});
}

function moveTreeNode(selectedNode, controllerId, direction) {
	if(selectedNode.actionIsDisabled(selectedNode.actions.MOVE)) {
 		return false;
	}

	this.controller = dojo.widget.manager.getWidgetById(controllerId);

	if(!selectedNode) {
		alert('No node selected');
		return false;
	}

	if(direction == 'up') {
   		if(!selectedNode.getPreviousSibling()) return;
   		var res = controller.move(selectedNode, selectedNode.parent, selectedNode.getParentIndex()-1);
  	} 
  	else if(direction == 'down') {
   		if(!selectedNode.getNextSibling()) return;
   		var res = controller.move(selectedNode, selectedNode.parent, selectedNode.getParentIndex()+1);
  	}
}

function uploadFile(selectedNode, controllerId) {
	if(!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false;
	}

	if(selectedNode.actionIsDisabled(selectedNode.actions.ADDCHILD)) {
		displayDialog('error', 'Cannot upload file to this node!');
		return false;
	}
	var location = selectedNode.objectId;
	
	dojo.widget.byId("htfsNavigatorDialogPane").setContent("Loading...");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=uploadFile",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsNavigatorDialogPane").setContent(data);
	 		var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("htfsUploadFileSubmit"));
	 		var buttonClose = dojo.widget.byId("htfsUploadFileClose");
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				dojo.widget.byId("htfsNavigatorDialog").hide();
				dojo.widget.byId("htfsDialogLoading").show();
				var form = document.getElementById("htfsInputuploadFile");
				dojo.io.bind({
		    		formNode: form,
					load: function(load, data, evt) {
						dojo.widget.byId("htfsDialogLoading").hide();
						var resultRaw = data.getElementById("result").innerHTML;
						var result = dojo.json.evalJSON(resultRaw);
						var controller = dojo.widget.byId(controllerId);
						if(result['node']) {
							if(selectedNode.isExpanded) {
								var res = controller.createChild(selectedNode, result['index'], result['node'], null);
							}
							else {
								controller.expandToLevel(dojo.widget.byId(selectedNode.widgetId), 1);
								var res = controller.createChild(selectedNode, result['index'], result['node'], null);
							}
							displayDialog('info', 'File upload was a success!');
						}
						else {
							displayDialog('error', 'File upload was a failure!');
						}
       				},
    				mimetype:"text/html"
 				});
			});
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				dojo.widget.byId('htfsNavigatorDialog').hide();
			});
			dojo.widget.byId("htfsNavigatorDialog").show();
		},
		mimetype:"text/plain"
	});
}

function scanFolder(selectedNode, controllerId) {
	if(!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false;
	}

	if(selectedNode.actionIsDisabled(selectedNode.actions.ADDCHILD)) {
		displayDialog('error', 'Cannot scan this node!');
		return false;
	}
	var location = selectedNode.objectId;
	
	dojo.widget.byId("htfsNavigatorDialogPane").setContent("Loading...");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=scanFilesystem",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsNavigatorDialogPane").setContent(data);
	 		var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("htfsScanFilesystemSubmit"));
	 		var buttonClose = dojo.widget.byId("htfsScanFilesystemClose");
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				var form = document.getElementById("htfsInputscanFilesystem");
				dojo.io.bind({
		    		formNode:form,
    				load:function(load, data, evt) {
    					//dojo.widget.byId("htfsNavigatorDialog").hide();
						dojo.widget.byId("htfsNavigatorDialogPane").setContent(data);
						var controller = dojo.widget.manager.getWidgetById(controllerId);
    				},
    				mimetype:"text/plain"
 				});
			});
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				dojo.widget.byId('htfsNavigatorDialog').hide();
			});
			dojo.widget.byId("htfsNavigatorDialog").show();
		},
		mimetype:"text/plain"
	});
}



//Inline editace

function handleEditClose() {
	var location = htfsConfig.nodeId;
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location,
		load:function(load, data, evt) {
			var content = dojo.widget.byId("content");
			content.setContent(data);
		},
		mimetype:"text/plain"
	});
}

function handleEditSave() {
	displayDialog('info', 'Texts saved!');
}

function editContent(location) {
	//Loads content for richtext editor
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=editTreeNodeContent",

		load:function(load, data, evt) {
			var editorProperties = {
				widgetId: "htfsEditor",
				saveUrl: "/proxy/htfs-rpc.php?location="+location+"&action=exec.editTreeNodeContent",
				saveMethod: "post",
				minHeight: "300px",
				items: ["commandGroup", "|", "textGroup", "|", "justifyGroup", "listGroup", "|", "linkGroup"]
			};
			dojo.widget.byId("content").setContent('<div id="contentEditor">'+data+'</div>');
			var parentNode = document.getElementById("content");
			var contentEditor = dojo.widget.fromScript("Editor", editorProperties, document.getElementById("contentEditor"));
			
			dojo.event.kwConnect({
				type: "around",
				srcObj: contentEditor,
				srcFunc: "_save",
				adviceFunc: function(invocation) {
					dojo.io.bind({
						url: "/proxy/htfs-rpc.php?location="+location+"&action=exec.editTreeNodeContent",
						method: "post",
						content: {
							content: contentEditor._richText.getEditorContent()
						},
						load:function(load, data, evt) {
							displayDialog('info', 'Texts saved!');
						},
						mimetype: "text/plain"
					});
   					return;
				}
   			});
			contentEditor.onCancel = handleEditClose;
		},
		mimetype:"text/plain"
	});
}

function editContent2(location) {
	//Loads content for richtext editor

	dojo.require("dojo.widget.Editor2");

	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location,

		load:function(load, data, evt) {
			var editorProperties = {
				widgetId: "htfsEditor",
				saveUrl: "/proxy/htfs-rpc.php?location="+location+"&action=exec.editTreeNodeContent",
				saveMethod: "post",
				minHeight: "300px"
			};
			dojo.widget.byId("content").setContent('<div id="contentEditor">'+data+'</div>');
			var parentNode = document.getElementById("content");
			var contentEditor = dojo.widget.fromScript("Editor2", editorProperties, document.getElementById("contentEditor"));
			
			dojo.event.kwConnect({
				type: "around",
				srcObj: contentEditor,
				srcFunc: "_save",
				adviceFunc: function(invocation) {
					dojo.io.bind({
						url: "/proxy/htfs-rpc.php?location="+location+"&action=exec.editTreeNodeContent",
						method: "post",
						content: {
							content: contentEditor._richText.getEditorContent()
						},
						load:function(load, data, evt) {
							displayDialog('info', 'Texts saved!');
						},
						mimetype: "text/plain"
					});
   					return;
				}
   			});
			contentEditor.onCancel = handleEditClose;
		},
		mimetype:"text/plain"
	});
}

function editContentHtml(location) {
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=editContentHtml",

		load:function(load, data, evt) {
			dojo.widget.byId("content").setContent(data);
	 		var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("htmlEditorSave"));
	 		var buttonClose = dojo.widget.byId("htmlEditorSave");
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				var form = document.getElementById("htfsInputeditContentHtml");
				dojo.io.bind({
		    		formNode:form,
    				load:function(load, data, evt) {
						dojo.widget.byId("htfsNavigatorDialog").hide();
						var controller = dojo.widget.manager.getWidgetById(controllerId);
  						var res = controller.removeNode(selectedNode, null);
    				},
    				mimetype:"text/plain"
 				});
			});
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				link(location);
			});


		},
		mimetype:"text/plain"
	});
}

function displayFckEditor(selectedNode) {
	if(!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false;
	}

	var location = selectedNode.objectId;

	//Loads content for richtext editor
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=displayFckEditor",
		load:function(load, data, evt) {
			var window = document.getElementById("bodyTag");
			var windowProperties = {
				title: "FCK Editor",
				iconSrc: "/lib/graphics/tango/22x22/actions/edit-find-replace.png",
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode"
			}
			var dojoObject = dojo.widget.fromScript("FloatingPane", windowProperties, window, "last");
			dojoObject.setContent(data);
			var areaNotLoaded = true; 
 			do {
 				if(document.getElementById('fckEditor'))  {
					areaNotLoaded = false;		
				}
			}
			while(areaNotLoaded);
			var fckEditor = new FCKeditor('fckEditor');
			fckEditor.BasePath = "/lib/scripts/fckeditor/";
			fckEditor.Height = 370;
			fckEditor.ToolbarSet = "HtfsBlock";
			fckEditor.Config["DefaultLanguage"] = "cs";
//			fckEditor.Config["CustomConfigurationsPath"] = '/lib/scripts/fckeditor/fckconfig_htfs.js' ;
			fckEditor.ReplaceTextarea();

	 		var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("fckEditorSave"));
	 		var buttonClose = dojo.widget.fromScript("Button", {}, document.getElementById("fckEditorClose"));
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				dojoObject.destroy();
			});
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				var editorValue = document.forms["htfsInputdisplayFckEditor"].elements["fckEditor"];
				
				alert(fckEditor.Value);
				
				alert(editorValue.value);
				var form = document.getElementById("htfsInputdisplayFckEditor");
				dojo.io.bind({
		    		formNode: form,
//		    		content: {
//		    			description: fckEditor.Value
//		    		},
    				load:function(load, data, evt) {
    					//dojo.widget.byId("htfsNavigatorDialog").hide();
						dojoObject.destroy();
						displayDialog('info', 'Texts saved!');
    				},
    				mimetype:"text/json"
 				});
			});

		},
		mimetype:"text/plain"
	});
}

function link(location) {
	dojo.io.bind({
		url:"/proxy/link.php?location="+location,
		load:function(load, data, evt) {
			//alert(data.component);
			forEach(data.component, function(link) {
    			if(dojo.widget.byId(link.widgetId)) {
    				dojo.widget.byId(link.widgetId).setContent(link.content);
    				if(link.title) {
    					dojo.widget.byId(link.widgetId).title = link.title;
    				}
    			}
    			else {
    				alert(link.widgetId);
    			}
			});
			htfsConfig.objectId = location;
			htfsConfig.nodeId = location;
		},
		mimetype:"text/json"
	});
	htfsConfig.nodeId = location;
}

function switchImage(url) {
	if(document.getElementById("ajax-slideshow-image"))	{
		document.getElementById("ajax-slideshow-image").src = url;
		document.getElementById("ajax-slideshow-image").style.display = 'block';
	}
	if(document.getElementById("ajax-slideshow-text"))	{
		document.getElementById("ajax-slideshow-text").style.display = 'none';
	}
}

function regenerateImages(location) {
	dojo.widget.byId("htfsDialogLoading").show();
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=exec.regenerateImages",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsDialogLoading").hide();
			displayDialog('info', data);
		}
	});
}

function htfsNodeEditorOpen(location) {
	loadingShow();
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=nodeEditor",
		load:function(load, data, evt) {
			var windowProperties = {
				title: "HTFS Node Editor",
				iconSrc: "/lib/graphics/tango/22x22/actions/edit-find-replace.png",
				constrainToContainer: false,
				hasShadow: false,
				resizable: false,
				taskBarId: "htfsTaskbar",
				windowState: "normal",
				displayCloseAction: true,
				displayMinimizeAction: true,
				displayMaximizeAction: true,
				toggle: "explode",
				toggleDuration: 300,
				cacheContent: false,
				preventCache: true,
				isContainer: false
			}

			htfsNodeEditor = dojo.widget.createWidget("FloatingPane", windowProperties);
		    document.body.appendChild(htfsNodeEditor.domNode);
			htfsNodeEditor.setContent(data);
			loadingHide();

	 		var submitButton = dojo.widget.createWidget("Button", {}, document.getElementById("submit"));
	 		var closeButton = dojo.widget.createWidget("Button", {}, document.getElementById("close"));
			dojo.event.connect(submitButton, "onClick", function(evt) {
				var form = document.getElementById("htfsInputnodeEditor");
				dojo.io.bind({
	    			formNode:form,
   					load:function(load, data, evt) {
						displayDialog('info', 'Properties saved');
						link(location);
   					},
   					mimetype:"text/plain"
				});
			});
			dojo.event.connect(closeButton, "onClick", function(evt) {
				htfsNodeEditor.destroy();
			});


		},
		mimetype:"text/html"
	});
}


function loadingShow() {
	dojo.widget.byId("htfsDialogLoading").show();
}

function loadingHide() {
	dojo.widget.byId("htfsDialogLoading").hide();
}

function uploadThumbnail(location) {
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+location+"&action=uploadThumbnail&position=action",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsActionDialogPane").setContent(data.content);
			dojo.widget.byId("htfsActionDialog").show();
			var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("uploadThumbnailSubmit")); 
			dojo.event.connect(createButton, "onClick", function(evt) {
				dojo.widget.byId("htfsActionDialog").hide();
				dojo.widget.byId("htfsDialogLoading").show();
				var form = document.getElementById("htfsInputuploadThumbnail");	
				dojo.io.bind({
    				formNode:form,
					load: function(load, data, evt) {
						dojo.widget.byId("htfsDialogLoading").hide();
						
						var rawResult = data.getElementById("result").innerHTML;
						var result = dojo.json.evalJSON(rawResult);
						if(result != '') {
							displayDialog('info', 'Thumbnail uploaded!');
							dojo.widget.byId('thumbnailArea').setContent(result);
							
						}
						else {
							displayDialog('error', 'Failed to upload Thumbnail!');
						}
					},
					mimetype:"text/html"
				});
			});
			var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("uploadThumbnailClose"));
			dojo.event.connect(closeButton, "onClick", function(evt) {
				dojo.widget.byId("htfsActionDialog").hide();
			});
		},
		mimetype:"text/json"
	});
}

function resetThumbnail(location) {
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+location+"&action=resetThumbnail&position=action",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsActionDialogPane").setContent(data.content);
			dojo.widget.byId("htfsActionDialog").show();
			var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("resetThumbnailSubmit")); 
			dojo.event.connect(createButton, "onClick", function(evt) {
				var form = document.getElementById("htfsInputresetThumbnail");
				dojo.io.bind({
    				formNode:form,
  						load:function(load, data, evt) {
  							dojo.widget.byId("htfsActionDialog").hide();
  							displayDialog('info', 'Thumbnail reset!');
  						},
  						mimetype:"text/plain"
				});
			});
			var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("resetThumbnailClose"));
			dojo.event.connect(closeButton, "onClick", function(evt) {
				dojo.widget.byId("htfsActionDialog").hide();
			});
		},
		mimetype:"text/json"
	});	
}

function deleteThumbnail(location) {
	dojo.io.bind({
		url:"/proxy/json-rpc.php?location="+location+"&action=deleteThumbnail&position=action",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsActionDialogPane").setContent(data.content);
			dojo.widget.byId("htfsActionDialog").show();
			var createButton = dojo.widget.fromScript("Button", {}, document.getElementById("deleteThumbnailSubmit")); 
			dojo.event.connect(createButton, "onClick", function(evt) {
				var form = document.getElementById("htfsInputdeleteThumbnail");
				dojo.io.bind({
    				formNode:form,
  						load:function(load, data, evt) {
							if(data != '...') {
	  							displayDialog('info', 'Thumbnail deleted!');
								dojo.widget.byId('thumbnailArea').setContent(data);
							}
  							dojo.widget.byId("htfsActionDialog").hide();
  						},
  						mimetype:"text/plain"
				});
			});
			var closeButton = dojo.widget.fromScript("Button", {}, document.getElementById("deleteThumbnailClose"));
			dojo.event.connect(closeButton, "onClick", function(evt) {
				dojo.widget.byId("htfsActionDialog").hide();
			});
		},
		mimetype:"text/json"
	});
}

function ruportBug(location) {
	displayDialog('info', 'Under contruction!');
}


function initComponentTree() {

}

function insertThemeComponent(selectedNode, controllerId) {
	if(!selectedNode) {
		displayDialog('error', 'No node selected!');
		return false;
	}
	alert('Use data plex instead...'+selectedNode); //+'-'+selectedNode.objectId);
	var location = selectedNode.objectId;
	/*
	dojo.widget.byId("htfsNavigatorDialogPane").setContent("Loading...");
	dojo.io.bind({
		url:"/proxy/htfs-rpc.php?location="+location+"&action=createNode&type=Component",
		load:function(load, data, evt) {
			dojo.widget.byId("htfsNavigatorDialogPane").setContent(data);
	 		var buttonSubmit = dojo.widget.fromScript("Button", {}, document.getElementById("htfsCreateNodeSubmit"));
	 		var buttonClose = dojo.widget.byId("htfsCreateNodeClose");
			dojo.event.connect(buttonSubmit, "onClick", function(evt) {
				var form = document.getElementById("htfsInputcreateNode");
				dojo.io.bind({
		    		formNode:form,
    				load:function(load, data, evt) {
    					dojo.widget.byId("htfsNavigatorDialog").hide();
						var controller = dojo.widget.manager.getWidgetById(controllerId);
						if(selectedNode.isExpanded) {
							var res = controller.createChild(selectedNode, data.index, data, null);
						}
						else {
							dojo.widget.byId('htfsTreeController').expandToLevel(dojo.widget.byId(selectedNode.widgetId), 1);
							var res = controller.createChild(selectedNode, data.index, data, null);
						}
    				},
    				mimetype:"text/json"
 				});
			});
			dojo.event.connect(buttonClose, "onClick", function(evt) {
				dojo.widget.byId('htfsNavigatorDialog').hide();
			});
			dojo.widget.byId("htfsNavigatorDialog").show();
		},
		mimetype:"text/plain"
	});
	*/

}