		dojo.require("dojo.rpc.JsonService");
		dojo.require("dojo.dnd.move");
		dojo.require("dojo.dnd.Source");
		dojo.require("dijit.Dialog");
		dojo.require("dijit.form.Button");
		dojo.require("dijit.Menu");
		dojo.require("dijit.ColorPalette");
		dojo.require("dijit._Widget");
		dojo.require("dijit.form.NumberSpinner");
		dojo.require("dijit.form.TextBox");
		dojo.require("dojox.layout.ResizeHandle");
		dojo.require("dojox.widget.FileInputAuto");
		dojo.require("dijit.form.CheckBox");
		dojo.require("dojo.parser");

		var user;
		
		dojo.addOnLoad(function() {
			dojo.addClass(dojo.body(), "tundra");
			user = new User();
			user.startup();

		});
		
function User(){}
	
User.prototype.startup = function() {
		this.rpc = new dojo.rpc.JsonService("user.smd");
		this.user_layers = new UserLayers();
		this.templates = new Templates();
		
		var node, div;
		
		node = document.createElement("div");
		node.id = "Header";
		dojo.byId("Container").appendChild(node);
		
		node = document.createElement("div");
		node.id = "CanvasContainer";
		dojo.byId("Container").appendChild(node);
		
		node = document.createElement("div");
		node.id = "Canvas";
		dojo.byId("CanvasContainer").appendChild(node);
		
		node = document.createElement("div");
		node.id = "Controls";
		dojo.byId("Container").appendChild(node);
		
		var widget;
		
		node = document.createElement("img");
		node.src = "images/pic_header.jpg";
		dojo.byId("Header").appendChild(node);
		
//		node = document.createElement("img");
//		dojo.byId("Canvas").appendChild(node);

		node = document.createElement("img");
		node.id = "Loader";
		node.src = "images/loader.gif";
		dojo.byId("Canvas").appendChild(node);
		this.loader = new dojo.fx.Toggler({
			node: node,
			hideDuration: 300,
			showDuration: 300
			});
		this.loader.hide();

		node = document.createElement("div");
		node.id = "Oversampled";
		node.innerHTML = "This image has been scaled too much.<br />Pixel oversampling will occur.";
		dojo.byId("Canvas").appendChild(node);
		this.oversampled = new dojo.fx.Toggler({
			node: node,
			hideDuration: 400,
			showDuration: 200
		});
		this.oversampled.hide();
		
		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<img class='icon right' src='images/templateview.png'><div class='label'>Product</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"half");
		dojo.connect(widget,"onClick",this.templates, "openProductSelector");
		
		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<img class='icon right' src='images/templateview.png'><div class='label'>Template</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"half");
		dojo.connect(widget,"onClick",this.templates, "openTemplateSelector");

		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<div class='color icon right' id='dBgColorPreview'></div><div class='label'>Background Color</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"full");
		dojo.connect(widget,"onClick",this.templates, "openBgColorDialog");
		dojo.byId("dBgColorPreview").style.backgroundColor = "#ffffff";

		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({label: "<img class='icon' src='images/imagelayer.png' /><div class='label'>Add Image</div>"}, node);
		dojo.addClass(widget.domNode.childNodes[0], "half");
		dojo.connect(widget, "onClick", this.user_layers, "openCreateImageLayerDialog");

// DROP-DOWN BUTTON MENU
/*		widget = new dijit.form.DropDownButton({
			label:"<img class='icon' src='images/imagelayer.png'><div class='label'>Add Image</div>", dropDown: menu, splitter: "15px"},node);
		var menu = new dijit.Menu();
		menu.id = "imageMenu";
		var menuItem_1 = new dijit.MenuItem({label: "My Computer"});
		menu.addChild(menuItem_1);
		var menuItem_2 = new dijit.MenuItem({label: "Pics Images"});
		menu.addChild(menuItem_2);
		dojo.connect(menuItem_1, "onClick",this.user_layers,"openLocalImageLayerDialog");
		dojo.connect(menuItem_2, "onClick",this.user_layers,"openRemoteImageLayerDialog");
*/				
		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<img class='icon' src='images/textlayer.png'><div class='label'>Add Text</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"half");
		dojo.connect(widget,"onClick",this.user_layers, "openTextLayerDialog");

		node = document.createElement("div");
		node.id="LayerListContainer";
		dojo.byId("Controls").appendChild(node);
		
		node = document.createElement("div");
		node.id = "LayerList";
		dojo.byId("LayerListContainer").appendChild(node);
		
		node = document.createElement("div");
		node.id = "LayerControls";
		dojo.byId("Controls").appendChild(node);
		
		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<img class='icon' src='images/fileopen.png' id='templateView'><div class='label'>Open</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"half");
		dojo.connect(widget,"onClick",this.user_layers, "fileoOpenDialog");
		
		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<img class='icon' src='images/filesave.png'><div class='label'>Save</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"half");
		dojo.connect(widget,"onClick",this.user_layers, "fileSaveDialog");
		
		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<img class='icon' src='images/designview.png' id='templateView'><div class='label'>Display</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"half");
		dojo.connect(widget,"onClick",this.templates, "toggleTemplateView");
		
		node = document.createElement("div");
		dojo.byId("Controls").appendChild(node);
		widget = new dijit.form.Button({
			label:"<img class='icon' src='images/printpreview.png'><div class='label'>Print</div>"},node);
		dojo.addClass(widget.domNode.childNodes[0],"half");
		dojo.connect(widget,"onClick",this.user_layers, "openPrintDialog");
		
		this.checkPopUps();
		this.user_layers.startup();
		this.templates.startup();

		this.loaderEvents = 0;
		this.loaderTimeout = 0;
		this.oversampledTimeout = 0;		
}

User.prototype.checkPopUps = function (){
	var popup = window.open('about:blank', '', 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=150,height=70');
	if (!popup)
		this.alert("Warning! Pop-ups blocked...", "Your browser is currently set to block Pop-ups.<br />You must select either 'Temporarily Allow Pop-ups'<br /> or 'Always Allow Pop-ups From This Site'<br /> in order to use the Pics Insert Creator.");
	else
		popup.close();
}

User.prototype.alert = function(title, message) {
	var node, button, div, dialog;
	node = document.createElement("div");
	node.style.textAlign = "center";
	
	div = document.createElement("div");
	div.innerHTML = message;
	node.appendChild(div);
	
	div = document.createElement("div");
	dojo.addClass(div, "spacer");
	node.appendChild(div);

	button = new dijit.form.Button({label: "OK"});
	node.appendChild(button.domNode);
	dojo.body().appendChild(node);
	dialog = this.openDialog(title,node);
	
	dojo.connect(button,"onClick",function(){dialog.destroy();});
	return dialog;
	}

User.prototype.openDialog = function(title, contents) {
	var node, dialog;
	node = document.createElement("div");
	dojo.body().appendChild(node);
	dialog = new dijit.Dialog({title: title},node);
	dialog.containerNode.appendChild(contents);
	dialog.show();
	
	dojo.connect(dialog,"onCancel",function(){dialog.destroy();});
	dojo.connect(dialog,"hide",function(){dialog.destroy();});
	return dialog;
	}

User.prototype.openColorDialog = function (title, action, header) {
	var node, palette, dialog, button, space;
	node = document.createElement("div");
	node.id = "dColorSelector";
	
	if(header) {
		img = document.createElement("img");
		img.src = header;
		node.appendChild(img);
		node.style.width = '300px';
		
		spacer = document.createElement("div");
		dojo.addClass(spacer, "spacer");
		node.appendChild(spacer);
	} else
		node.style.width = '210px';

	PaletteNode = document.createElement("div");
	node.appendChild(PaletteNode);
	palette = new dijit.ColorPalette({
		palette: "7x10"
		},PaletteNode);
	palette.style.float = "right";
	palette.style.paddingBottom = "30px";
	
	spacer = document.createElement("div");
	dojo.addClass(spacer, "spacer");
	node.appendChild(spacer);	
	
	button = new dijit.form.Button({label: "OK"});
	node.appendChild(button.domNode);


	
	dojo.connect(button,"onClick",function() {
		dialog.destroy();
		});
	
	dialog = user.openDialog(title, node);
	
	dojo.connect(palette, "onChange",function () {
		action(this.value);
//		dialog.destroy();
		});
	}

	
User.prototype.addLoaderEvent = function () {
	this.loaderEvents++;
	if (this.loaderEvents == 1) {
		this.loader.show();
	}
	clearTimeout(this.loaderTimeout);
	this.loaderTimeout = setTimeout(function () {
		user.loaderEvents = 0;
		user.loader.hide();
	}, 60000);
}

User.prototype.removeLoaderEvent = function () {
	this.loaderEvents--;
	if (this.loaderEvents < 0) {
		this.loaderEvents = 0;
	}
	if (this.loaderEvents == 0) {
		this.loader.hide();
	}
	clearTimeout(this.loaderTimeout);
}

User.prototype.oversampledAlert = function () {
	clearTimeout(this.oversampledTimeout);
	this.oversampled.show();
	this.oversampledTimeout = setTimeout(function () {
		user.oversampled.hide();
	}, 7400);
}

