dB.page = {
	init: function() {
		if (($('#dB_pageId').length == 0) || ($('#dB_pageParent').length == 0) || ($('#dB_pageClass').length == 0) || ($('#dB_pageName').length == 0) || ($('#dB_pageLink').length == 0)) {
			return null;
		}

		dB.page.id = $('#dB_pageId').text();
		dB.page.parent = $('#dB_pageParent').text();
		dB.page.pageClass = $('#dB_pageClass').text();
		dB.page.name = $('#dB_pageName').text();
		dB.page.link = $('#dB_pageLink').text();

		$('#applicationActions').find('a').each(function() {
			if (this.id.match(/^modifyName_(\d+)/)) $(this).click(dB.page.modifyName);
			if (this.id.match(/^editPageText_(\d+)/)) $(this).click(dB.page.editText);
			if (this.id.match(/^deletePage_(\d+)/)) $(this).click(dB.page.confirmDelete);
			if (this.id.match(/^addPage_(\d+)/)) $(this).click(dB.page.addPage);
			if (this.id.match(/^copyPage_(\d+)/)) $(this).click(dB.page.copyPage);
			if (this.id.match(/^movePage_(\d+)/)) $(this).click(dB.page.movePage);
			if (this.id.match(/^uploadImage_(\d+)/)) $(this).click(dB.page.uploadImage);
			if (this.id.match(/^copyImages_(\d+)/)) $(this).click(dB.page.copyImages);
			if (this.id.match(/^moveImages_(\d+)/)) $(this).click(dB.page.moveImages);
			if (this.id.match(/^sortImages_(\d+)/)) $(this).click(dB.page.sortImages);
			if (this.id.match(/^pageInfo_(\d+)/)) $(this).click(dB.page.pageInfo);
		});
		$('div.contentHeader a').each(function() {
			if (this.id.match(/^updatePage([A-Za-z]+)View_(\d+)/)) $(this).click(dB.page.updatePageView);
		});
	},

	processPathRefresh: function(xml) {
		$('#header').empty().append($('path', xml).text());
	},

	getTile: function(caption, width, jqImage) {
		if ((jqImage.length == 0) && (caption == ''))
			return '';
		var ret = '<div class="tileWrapper">';
		if (jqImage.length > 0)
			ret += dB.image.getImage(width, caption, jqImage);
		ret += '<div class="tileText" style="width: ' + width + 'px;">' + caption + '</div>';
		ret += '</div>';
		return ret;
	},
	getTileLink: function(id, caption, width, jqImage) {
		var ret = '<a class="tileLink" id="' + id + '">';
		ret += dB.page.getTile(caption, width, jqImage);
		ret += '</a>';
		return ret;
	},
	getTileLink2: function(id, caption, width, jqImage) {
		var ret = '<a class="tileLink" href="' + id + '">';
		ret += dB.page.getTile(caption, width, jqImage);
		ret += '</a>';
		return ret;
	},

	modifyName: function() {
		dB.overlay.submitCallback = function() {
			return {'id': dB.page.id, 'action': 'modifyName', 'value': $('#nameModificationName input').val() };
		};
		dB.overlay.successCallback = function(xml) {
			dB.page.name = $('name', xml).text();
			$('#nameModificationName input').val(dB.page.name);
			$.post(dB.indexURL, {'id': dB.page.id, 'action': 'getPath' }, dB.page.processPathRefresh);	// refresh the path
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
		};
		var content = '<div class="overlayContent"><div id="nameModificationName"><label>page name:</label><input type="text"></div></div>';
		dB.overlay.showOverlayWindow('Modify Page Name', content);
		$('#nameModificationName input').val(dB.page.name).focus();
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				case 13: // enter
					dB.overlay.submitOverlayWindow();
					break;
				default:
			}
		});

	},
	confirmDelete: function() {
		dB.overlay.submitCallback = function() {
			var checkbox = $('#deleteConfirmationConfirm input').get(0); var confirm = checkbox.checked ? 1 : 0;
			return { 'id': dB.page.id, 'action': 'deletePage', 'value': confirm };
		};
		dB.overlay.successCallback = function(xml) {
			setTimeout('window.location.href="' + dB.page.parent + '"',2000);
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
		};
		var content = '<div class="overlayContent"><div id="deleteConfirmationConfirm"><input type="checkbox" class="checkbox"><label>YES, I really want to do this!</label></div></div>';
		dB.overlay.showOverlayWindow('Confirm Page Delete', content);
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				case 13: // enter
					dB.overlay.submitOverlayWindow();
					break;
				case 78: // n
					$('#deleteConfirmationConfirm input').attr('checked','');
					break;
				case 89: // y
					$('#deleteConfirmationConfirm input').attr('checked','checked');
					break;
				default:
			}
		});
	},
	addPage: function() {
		dB.overlay.submitCallback = function() {
			var pageClass = $('#overlayWindow div.overlayContent:last select').val();
			if ((dB[pageClass] == undefined) || (dB[pageClass].addPage2 == undefined)) {
				$('#overlayWindow div.overlayHeader:first').after('<div class="overlayError">error in dB.page.addPage -- unable to locate db.' + pageClass + '.addPage2</div>');
				return null;
			}
			return dB[pageClass].addPage2();
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
		};
		var content = '<div class="overlayContent">Please Wait...</div>';
		dB.overlay.showOverlayWindow('Create New Page', content);
		$('#submitOverlayWindow').unbind().replaceWith('<img src="ajaxloading.gif" class="ajaxloading">');
		$.post(dB.indexURL, {'id': dB.page.id, 'action': 'getAddPageClassChoices' }, function(xml) {
			if ($('addPageClassChoices', xml).length) {
				$('#overlayWindow img.ajaxloading').replaceWith('<a id="submitOverlayWindow" class="submitButton">Submit</a>');
				$('#submitOverlayWindow').click(dB.overlay.submitOverlayWindow);
				$('#overlayWindow div.overlayContent').remove();
				if ($('addPageClassChoices classChoice', xml).length > 0) {
					$('#overlayWindow').append('<div class="overlayContent">What type of page do you want to create?<select name="class" size="1"></select></div>');
					$('addPageClassChoices classChoice', xml).each(function(optionNum) {
						$('#overlayWindow div.overlayContent:last select').append('<option ' + ((optionNum == 0) ? 'selected ' : '') + 'value="' + $(this).attr('class') + '">' + $(this).attr('choice') + '</option>');
					});
				} else {
					$('#overlayWindow').append('<div class="overlayContent">Sorry, but this page is not allowed to contain any children pages.</div>');
					$('#submitOverlayWindow').unbind().remove();
				}
			}
		});
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				case 13: // enter
					dB.overlay.submitOverlayWindow();
					break;
				default:
			}
		});
	},
	addPage2: function() {
		dB.overlay.submitCallback = function() {
			return { 'id': dB.page.id, 'action': 'addPage', 'value': $('#pageAdditionName input').val(), 'value2': 'page' };
		};
		dB.overlay.successCallback = function(xml) {
			setTimeout('window.location.href="' + $('success', xml).get(0).getAttribute('id') + '"',2000);
		};
		$('#overlayWindow div.overlayContent').empty().append('<div id="pageAdditionName"><label>page name:</label><input type="text"></div>');
		$('#pageAdditionName input').focus();
		return null;
	},
	copyPage: function() {
		dB.overlay.submitCallback = function() {
			return {'id': dB.page.id, 'action': 'copyPage', 'value': dB.overlay.browserId};
		};
		dB.overlay.successCallback = function(xml) {
			setTimeout('window.location.href="' + $('success', xml).get(0).getAttribute('id') + '"',2000);
		};
		dB.overlay.browserRefreshCallback = function(xml) {
			$('#browserImagesHeader, #browserImages').hide();
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
		};
		var content = '<div class="browser"></div>';
		dB.overlay.showOverlayWindow('Put Copy Where?', content, ((dB.page.parent != 0) ? dB.page.parent : dB.page.id));
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				case 13: // enter
					dB.overlay.submitOverlayWindow();
					break;
				default:
			}
		});
	},
	movePage: function() {
		dB.overlay.submitCallback = function() {
			return {'id': dB.page.id, 'action': 'movePage', 'value': dB.overlay.browserId};
		};
		dB.overlay.successCallback = function(xml) {
			dB.page.parent = $('success', xml).get(0).getAttribute('id');
			$.post(dB.indexURL, {'id': dB.page.id, 'action': 'getPath' }, dB.page.processPathRefresh);	// refresh the path
		};
		dB.overlay.browserRefreshCallback = function(xml) {
			$('#browserImagesHeader, #browserImages').hide();
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
		};
		var content = '<div class="browser"></div>';
		dB.overlay.showOverlayWindow('Move Page Where?', content, dB.page.id);
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				case 13: // enter
					dB.overlay.submitOverlayWindow();
					break;
				default:
			}
		});
	},
	copyImages: function() {
		dB.overlay.submitCallback = function() {
			if ($('#imageActionBuffer ul.images li').length) {
				var idBuffer = '';
				$('#imageActionBuffer ul.images li').each(function() {
					var match = $('a', this).attr('id').match(/^imageActionBufferLink_(i?\d+)/);
					if (match && match[1]) {
						idBuffer += match[1];
					}
				});
				return {'id': dB.page.id, 'action': 'copyImages', 'value': idBuffer};
			} else {
				$('#overlayWindow div.overlayHeader:first').after('<div class="overlayError">Please select at least one image to copy.</div>');
			}
			return null;
		};
		dB.overlay.successCallback = function(xml) {
			setTimeout('window.location.href="' + dB.page.id + '"',2000);
		};
		dB.overlay.submitRefreshCallback = function() {
			switch ($('#imageActionBuffer ul.images li').length) {
				case 0:
					$('#submitOverlayWindow').addClass('grayLink').text('No images selected');
					break;
				case 1:
					$('#submitOverlayWindow').removeClass('grayLink').text('Submit 1 image');
					break;
				default:
					$('#submitOverlayWindow').removeClass('grayLink').text('Submit ' + $('#imageActionBuffer ul.images li').length + ' images');
			}
		};
		dB.overlay.browserRefreshCallback = function(xml) {
			$('#browserTarget').hide();
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
		};
		dB.overlay.imageClickCallback = function() {
			$('div.overlayError').remove();
			var match = this.id.match(/^browserLink_(i?\d+)/);
			if (!match) match = this.id.match(/^imageActionBufferLink_(i?\d+)/);
			if (match && match[1]) {
				var id = 'imageActionBufferLink_' + match[1];
				if ($('#' + id).length) {
					// unbind the click and then get rid of the parent <li> tag
					$('#' + id).unbind().parent().remove();
				} else {
					// make a copy of the tile to put in the image action buffer
					var caption = $(this).find('div.tileText').text();
					var width = 100;
					var tile = dB.page.getTileLink(id, caption, width, dB.overlay.browserImageCache[match[1]]);
					$('#imageActionBuffer ul.images').append('<li>' + tile + '</li>');
					// hook up a click listener to remove the tile from the image action buffer
					$('#' + id).click(dB.overlay.imageClickCallback);
				}
				$('#imageActionBuffer ul.images li').each(function(tileNum) {
					$(this).css('clear',((((tileNum + 1) % 7) == 1) ? 'left' : 'none'));
				});
				dB.overlay.submitRefreshCallback();
			}
		};
		var content = '<div id="imageActionBuffer" class="overlayContent"><ul class="images overlayTileList"></ul><div class="clear"></div></div><div class="browser"></div>';
		dB.overlay.showOverlayWindow('Copy What Images?', content, dB.page.id);
		$('#submitOverlayWindow').addClass('grayLink').text('No images selected');
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				case 13: // enter
					dB.overlay.submitOverlayWindow();
					break;
				default:
			}
		});
	},
	moveImages: function() {
		dB.overlay.submitCallback = function() {
			if ($('#imageActionBuffer ul.images li').length) {
				var idBuffer = '';
				$('#imageActionBuffer ul.images li').each(function() {
					var match = $('a', this).attr('id').match(/^imageActionBufferLink_(i?\d+)/);
					if (match && match[1]) {
						idBuffer += match[1];
					}
				});
				return {'id': dB.page.id, 'action': 'moveImages', 'value': idBuffer};
			} else {
				$('#overlayWindow div.overlayHeader:first').after('<div class="overlayError">Please select at least one image to move.</div>');
			}
			return null;
		};
		dB.overlay.successCallback = function(xml) {
			setTimeout('window.location.href="' + dB.page.id + '"',2000);
		};
		dB.overlay.submitRefreshCallback = function() {
			switch ($('#imageActionBuffer ul.images li').length) {
				case 0:
					$('#submitOverlayWindow').addClass('grayLink').text('No images selected');
					break;
				case 1:
					$('#submitOverlayWindow').removeClass('grayLink').text('Submit 1 image');
					break;
				default:
					$('#submitOverlayWindow').removeClass('grayLink').text('Submit ' + $('#imageActionBuffer ul.images li').length + ' images');
			}
		};
		dB.overlay.browserRefreshCallback = function(xml) {
			$('#browserTarget').hide();
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
		};
		dB.overlay.imageClickCallback = function() {
			$('div.overlayError').remove();
			var match = this.id.match(/^browserLink_(i?\d+)/);
			if (!match) match = this.id.match(/^imageActionBufferLink_(i?\d+)/);
			if (match && match[1]) {
				var id = 'imageActionBufferLink_' + match[1];
				if ($('#' + id).length) {
					// unbind the click and then get rid of the parent <li> tag
					$('#' + id).unbind().parent().remove();
				} else {
					// make a copy of the tile to put in the image action buffer
					var caption = $(this).find('div.tileText').text();
					var width = 100;
					var tile = dB.page.getTileLink(id, caption, width, dB.overlay.browserImageCache[match[1]]);
					$('#imageActionBuffer ul.images').append('<li>' + tile + '</li>');
					// hook up a click listener to remove the tile from the image action buffer
					$('#' + id).click(dB.overlay.imageClickCallback);
				}
				$('#imageActionBuffer ul.images li').each(function(tileNum) {
					$(this).css('clear',((((tileNum + 1) % 7) == 1) ? 'left' : 'none'));
				});
				dB.overlay.submitRefreshCallback();
			}
		};
		var content = '<div id="imageActionBuffer" class="overlayContent"><ul class="images overlayTileList"></ul><div class="clear"></div></div><div class="browser"></div>';
		dB.overlay.showOverlayWindow('Move What Images?', content, dB.page.id);
		$('#submitOverlayWindow').addClass('grayLink').text('No images selected');
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				case 13: // enter
					dB.overlay.submitOverlayWindow();
					break;
				default:
			}
		});
	},
	editText: function() {
		dB.overlay.submitCallback = function() {
			var textarea = $('#textEditorText textarea').get(0); var newText = textarea.value ? textarea.value : '';
			return {'id': dB.page.id, 'action': 'modifyText', 'value': newText};
		};
		dB.overlay.successCallback = function(xml) {
			$('#pageTextHeader_' + dB.page.id).remove();
//			$('#pageText_' + dB.page.id).find('*').unbind().end().remove();
			$('#pageText_' + dB.page.id).remove();
			if ($('success parsedText', xml).text().length > 0) {
				$('#dB_pageLink').after('<div id="pageTextHeader_' + dB.page.id + '" class="contentHeader">Page Text</div><div id="pageText_' + dB.page.id + '" class="content pageText"></div>');
				$('#pageText_' + dB.page.id).html($('success parsedText', xml).text());
			}
		};
		dB.overlay.browserRefreshCallback = function(xml) {
			$('#browserTarget, #browserPathHeader, #browserPath, #browserContentsHeader, #browserContents').hide();
		},
		dB.overlay.imageClickCallback = function() {
			var match = $(this).attr('id').match(/browserLink_i(\d+)/);
			if (match && match[1]) {
				uF.insertAtCursor($('#textEditorText textarea').get(0), ('{{{{' + match[1] + '}}}}'));
			}
		};
		var textareaCols = 40; var textareaRows = 10;
		var content = '<div class="overlayContent"><div id="textEditorText">';
		content += '<textarea name="text" rows=' + textareaRows + ' cols=' + textareaCols + '>please wait while page text is being retrieved from the database...</textarea></div>';
		content += '</div><div class="browser"></div>';
		dB.overlay.showOverlayWindow('Text Editor', content, dB.page.id);
		$("#textEditorText textarea").get(0).disabled = true;
		while ($("#textEditorText textarea").width() <= 810) $("#textEditorText textarea").attr('cols', ++textareaCols);		// adjust the width
		while ($("#textEditorText textarea").height() <= 300) $("#textEditorText textarea").attr('rows', ++textareaRows);		// and height
		$("#textEditorText textarea").attr('cols', --textareaCols).attr('rows', --textareaRows);										// to be no bigger than specified values
		if ($.browser.msie && $.browser.version < 7) {
			// IE6 issues...
			$('#overlayWindow').css({'marginTop': parseInt($(document).scrollTop()) + 'px' });
		}
		$.post(dB.indexURL, {'id': dB.page.id, 'action': 'getText' }, function(xml) {
			$('#textEditorText textarea').attr('value', $('text', xml).text());
			$("#textEditorText textarea").attr('disabled',false).focus();
		});
	},
	sortImages: function() {
		dB.overlay.imageClickCallback = function() {}; // set callback to an empty function so that browser builds with tileLinks rather than just tiles
		dB.overlay.browserRefreshCallback = function(xml) {
			$('#submitOverlayWindow').unbind().remove();
			$('#cancelOverlayWindow').text('Done');
			$('#browserTarget, #browserPathHeader, #browserPath, #browserContentsHeader, #browserContents, #browserImagesHeader').hide();
			$('#browserImages ul.images').sortable({ 'stop': function(event, ui) {
				$('#browserImages ul.images li').each(function(tileNum) {
					$(this).css('clear',((((tileNum + 1) % 7) == 1) ? 'left' : 'none'));
					if (this == ui.item.get(0)) {
						var match = $(this).find('a').attr('id').match(/browserLink_(i\d+)/);
						if (match && match[1]) {
							$.post(dB.indexURL, { 'id': match[1], 'action': 'setRank', 'value': (tileNum + 1) });
						}
					}
				});
			}});
		};
		dB.overlay.removeCallback = function() {
			$(document).unbind("keydown");
			window.location.href = dB.page.id;
		};
		var content = '<div class="browser"></div>';
		dB.overlay.showOverlayWindow('Sort Images', content, dB.page.id);
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.overlay.removeOverlayWindow();
					break;
				default:
			}
		});
	},
	pageInfo: function() {
		var content = '<div class="overlayContent">Please Wait...</div>';
		dB.overlay.showOverlayWindow('Page Info', content);
		$('#submitOverlayWindow').unbind().replaceWith('<img src="ajaxloading.gif" class="ajaxloading">');
		$.post(dB.indexURL, {'id': dB.page.id, 'action': 'checkLinks' }, function(xml) {
			if ($('linkCheck', xml).length) {
				$('#overlayWindow img.ajaxloading').remove();
				$('#cancelOverlayWindow').text('Done');
				$('#overlayWindow div.overlayContent').remove();

				var numChildPages = $('linkCheck', xml).attr('numChildPages');
				var numChildImages = $('linkCheck', xml).attr('numChildImages');
				var jqThisPageLinks = $('thisPageIncomingLinks', xml);
				var jqChildPageLinks = $('childPageIncomingLinks', xml);
				var jqChildImageLinks = $('childImageIncomingLinks', xml);

				var summaryDiv = '<ul><li>This page (page #' + dB.page.id + ') has ' + jqThisPageLinks.length + ' incoming links.</li>';
				summaryDiv += '<li>This page has ' + numChildPages + ' children pages.  ' + jqChildPageLinks.length + ' of these children pages have incoming links.</li>';
				summaryDiv += '<li>This page (and all of its children pages combined) contain ' + numChildImages + ' images.  ' + jqChildImageLinks.length + ' of these images have incoming links.</li></ul>';

				$('#overlayWindow').append('<div class="overlayContent">' + summaryDiv + '</div>');

				if (jqThisPageLinks.length > 0) {
					var jqThisPage = jqThisPageLinks.find('thisPage page');
					var headerText = 'These pages link to <a href="' + jqThisPage.attr('id') + '">Page #' + jqThisPage.attr('id') + ' "' + jqThisPage.attr('name') + '"</a>';
					$('#overlayWindow').append('<div class="overlayHeader linkCheckHeader">' + headerText + '</div><div class="overlayContent linkCheckContent"><ul class="incomingLinks"></ul><div class="clear"></div></div>');
					jqThisPageLinks.find('incomingLinks page').each(function(tileNum) {
						var id = this.getAttribute('id');
						var name = this.getAttribute('name');
						var width = 100;
						var jqImage = $(this).find('image:first');
						$('#overlayWindow div.overlayContent:last ul').append('<li style="clear:' + (((($tileNum + 1) % 7) == 1) ? 'left' : 'none') + ';">' + dB.page.getTileLink2(id, name, width, jqImage) + '</li>');
					});
				}

				jqChildPageLinks.each(function() {
					var jqChildPage = $(this).find('childPage page');
					var headerText = 'These pages link to <a href="' + jqChildPage.attr('id') + '">Page #' + jqChildPage.attr('id') + ' "' + jqChildPage.attr('name') + '"</a>';
					$('#overlayWindow').append('<div class="overlayHeader linkCheckHeader">' + headerText + '</div><div class="overlayContent linkCheckContent"><ul class="incomingLinks"></ul><div class="clear"></div></div>');
					$(this).find('incomingLinks page').each(function(tileNum) {
						var id = this.getAttribute('id');
						var name = this.getAttribute('name');
						var width = 100;
						var jqImage = $(this).find('image:first');
						$('#overlayWindow div.overlayContent:last ul').append('<li style="clear:' + (((($tileNum + 1) % 7) == 1) ? 'left' : 'none') + ';">' + dB.page.getTileLink2(id, name, width, jqImage) + '</li>');
					});
				});

				jqChildImageLinks.each(function() {
					var jqChildImage = $(this).find('childImage image');
					var headerText = 'These pages link to <a href="i' + jqChildImage.attr('id') + '">Image #' + jqChildImage.attr('id') + ' "' + jqChildImage.attr('caption') + '"</a>';
					$('#overlayWindow').append('<div class="overlayHeader linkCheckHeader">' + headerText + '</div><div class="overlayContent linkCheckContent"><ul class="incomingLinks"></ul><div class="clear"></div></div>');
					$(this).find('incomingLinks page').each(function(tileNum) {
						var id = this.getAttribute('id');
						var name = this.getAttribute('name');
						var width = 100;
						var jqImage = $(this).find('image:first');
						$('#overlayWindow div.overlayContent:last ul').append('<li style="clear:' + (((($tileNum + 1) % 7) == 1) ? 'left' : 'none') + ';">' + dB.page.getTileLink2(id, name, width, jqImage) + '</li>');
					});
				});

			}
		});

	},
	updatePageView: function() {
		var id = this.id;
		var match = id.match(/^updatePage([A-Za-z]+)View_(\d+)/);
		var jqHeader = $(this).parent();
		var jqDiv = jqHeader.next();
		if (match && match[1] && match[2]) {
			$.post(dB.indexURL, {'id': match[2], 'action': 'updatePageView', 'value': match[1], 'value2': $(this).text() }, function(xml) {
				if ($('success', xml).length) {
					jqDiv.find('a').unbind().end().remove();
					jqHeader.find('a').unbind().end().replaceWith($('success', xml).text());
					$('#' + id).click(dB.page.updatePageView);
				} else if ($('error', xml).length) {
					alert ($('error', xml).text());
				} else {
					alert (xml);
				}
			});
		}
	},

	uploadImage: function() {
		if (dB.overlay.active == false) {
			$('body').append('<div id="overlay"></div><div id="overlayWindow"></div>');
			var buffer = '<div class="overlayHeader">Upload Image File';
			buffer += '<a id="cancelOverlayWindow" class="cancelButton">Cancel</a>';
			buffer += '<a id="submitOverlayWindow" class="submitButton">Submit</a>';
			buffer += '</div><div class="overlayContent"><form>';
			buffer += '<input type="file" size="0" name="file1">';
			buffer += '</form></div>';
			$('#overlayWindow').append(buffer);
			if ($.browser.msie && $.browser.version < 7) {
				// IE6 issues...
				$('#overlay').css({'position':'absolute', 'height': $(document).height() + 'px', 'width': $(document).width() + 'px'});
			}
			$('#submitOverlayWindow').click(dB.page.submitImageUploadWindow);
			$('#cancelOverlayWindow').click(dB.page.removeImageUploadWindow);
			$('#overlayWindow').show();
			dB.overlay.active = true;
		}
		$(document).bind("keydown", function(key) {
			switch (key.which) {
				case 27: // esc
					dB.page.removeImageUploadWindow();
					break;
				case 13: // enter
					dB.page.submitImageUploadWindow();
					break;
				default:
			}
		});
	},
	removeImageUploadWindow: function() {
		$("#overlayWindow").fadeOut("500",function() {
			$(document).unbind("keydown");
			$('#overlayIFrame').unbind().remove();
			$('#submitOverlayWindow, #cancelOverlayWindow').unbind();
			$('#overlayWindow,#overlay').remove();
			dB.overlay.deactivate();
		});
	},
	submitImageUploadWindow: function() {
		$('div.overlayError').remove();
		$('#submitOverlayWindow').unbind().replaceWith('<img src="ajaxloading.gif" class="ajaxloading">');
		$('#overlayWindow form').before($('#overlayWindow div.overlayContent input'));
		$('#overlayWindow form').remove();
		dB.page.sendNextImageUploadFile();
	},
	sendNextImageUploadFile: function() {
		if ($('#overlayWindow div.overlayContent input').length) {
			$('body').append('<iframe class="hidden" id="overlayIFrame" name="overlayIFrame"></iframe>');
			$('#overlayWindow div.overlayContent input:first').after('<form name="overlayIFrameTargetForm" id="overlayIFrameTargetForm" method="post" action="' + dB.indexURL + '" enctype="multipart/form-data" target="overlayIFrame"></form>');
			$('#overlayIFrameTargetForm').append('<input type="hidden" name="id" value="' + dB.page.id + '">');
			$('#overlayIFrameTargetForm').append('<input type="hidden" name="action" value="processImageUpload">');
			$('#overlayIFrameTargetForm').append('<input type="hidden" name="MAX_FILE_SIZE" value="3000000">');
			$('#overlayIFrameTargetForm').append($('#overlayWindow div.overlayContent input:first'));
			$('#overlayIFrame').load(dB.page.processImageUploadWindow);
			$('#overlayIFrameTargetForm').submit();
		} else {
			setTimeout("window.location.href='" + dB.page.id + "'",1500);
		}
	},
	processImageUploadWindow: function() {
		var cd = $('#overlayIFrame').get(0).contentDocument;
		if (!cd) cd = document.frames['overlayIFrame'].document; // ie hack
		$('#overlayWindow img.ajaxloading').remove();
		if ($('#success', cd).length) {
			if ($('#overlayWindow div.overlaySuccess').length) {
				$('#overlayWindow div.overlaySuccess:last').after('<div class="overlaySuccess">' + $('#success', cd).text() + '</div>');
			} else {
				$('#overlayWindow div.overlayHeader:first').after('<div class="overlaySuccess">' + $('#success', cd).text() + '</div>');
			}
			if ($('#pageImageGroupHeader_' + dB.page.id).length == 0) {
				$('#wrapper div.menu').before('<div id="pageImageGroupHeader_' + dB.page.id + '" class="contentHeader">Images</div>');
				$('#pageImageGroupHeader_' + dB.page.id).after('<div id="pageImageGroup_' + dB.page.id + '" class="content pageImageGroup"><ul></ul><div class="clear"></div></div>');
			}
			var newImage_id = $('#id', cd).text();
			var jQimageGroup = $('#pageImageGroup_' + dB.page.id + ' ul');
			var tileNum = jQimageGroup.find('li').length + 1;
			jQimageGroup.append('<li></li>');
			jQimageGroup.find('li:last').css('clear',((((tileNum + 1) % 7) == 1) ? 'left' : 'none')).append($('#tileLinkToInsert', cd).html())
			dB.image.init();
			$('#overlayIFrame').unbind().remove();
			$('#overlayWindow form').remove();
			dB.page.sendNextImageUploadFile();
		} else if ($('#error', cd).length) {
			if ($('#overlayWindow div.overlaySuccess').length) {
				$('#overlayWindow div.overlaySuccess:last').after('<div class="overlayError">' + $('#error', cd).text() + '</div>');
			} else {
				$('#overlayWindow div.overlayHeader:first').after('<div class="overlayError">' + $('#error', cd).text() + '</div>');
			}
			$('#cancelOverlayWindow').after('<a id="submitOverlayWindow" class="submitButton">Submit</a>');
			$('#submitOverlayWindow').click(dB.page.submitImageUploadWindow);
			$('#overlayIFrame').unbind().remove();
		}
	},



	renumberImageGroupTiles: function() {
		if ($('#pageImageGroup_' + dB.page.id + ' ul li').length > 0) {
			$('#pageImageGroup_' + dB.page.id + ' ul li').each(function(tileCtr) {
				$(this).removeClass().addClass('tile' + (tileCtr + 1));
			});
		} else {
			$('#pageImageGroupHeader_' + dB.page.id + ', #pageImageGroup_' + dB.page.id).remove();
		}
	}
};

$(dB.page.init);
