function labelCanvas () {
	var self			= this;
	self.parent			= null;
	self.editorLink			= null;
	self.label			= null;
	self.labelManager		= null;
	self.labelObjects		= new Array();
	self.labelObjectCount		= 0;
	self.textManager		= null;
	self.barCodeManager		= null;
	self.realWidth			= 3;
	self.realWidthUnits		= 'in';
	self.realHeight			= 1;
	self.realHeightUnits		= 'in';
	self.pixelsPerInch		= 100;
	self.pixelsPerCm		= self.pixelsPerInch / 2.54;
	self.dragging			= 0;
	self.draggingObject		= 0;

	self.init = function (editor) {
		self.editorLink				= editor;
		self.parent				= self.editorLink.contextCanvas;
		self.editorLink.editorLink		= self;
		self.clearParentObjects();
		self.drawButtons();
		self.buildLabel();
		self.buildLabelManagerBox();
		self.buildTextManagerBox();
		self.buildBarCodeManagerBox();
		self.buildImageManagerBox();
		document.onkeydown			= self.onKeyDown;
		document.onkeyup			= self.onKeyUp;
		self.center();
		self.buildGrid();
		self.buildGridMarkers();
		self.editorLink.hideAlert();
		self.editorLink.hideSubContext();
	}
	self.applyRules = function (ruleset) {
		try {
			var Parser	= new DOMParser();
			var Loader	= Parser.parseFromString(ruleset,'text/xml');
			var rulesXml	= Loader.childNodes[0];
		} catch (err1) {
			try {
				var Loader	= new ActiveXObject('Microsoft.XMLDOM');
				Loader.async	= 'false';
				Loader.loadXML(ruleset);
				var rulesXml	= Loader.childNodes[1];
			} catch (err2) {
				self.editorLink.alert(err1 + " && " + err2);
			}
		}

		var labelRules		= rulesXml.getElementsByTagName('label')[0];
		var objects		= rulesXml.getElementsByTagName('objects')[0];

		try {
			self.realWidth			= labelRules.childNodes[0].childNodes[0].nodeValue;
			self.realWidthUnits		= labelRules.childNodes[0].attributes[0].nodeValue;
			self.realHeight			= labelRules.childNodes[1].childNodes[0].nodeValue;
			self.realHeightUnits		= labelRules.childNodes[1].attributes[0].nodeValue;
			self.pixelsPerInch		= labelRules.childNodes[2].childNodes[0].nodeValue;
			if (labelRules.childNodes[3].childNodes[0].nodeValue == 'none')	self.hideGrid();
			else								self.showGrid();
		} catch (err) {}

		for (var i=0; i<objects.childNodes.length; i++) {
			try {
				var object	= objects.childNodes[i];
				var type	= object.attributes[0].nodeValue;
				var O		= self.addLabelObject(type,0);

				if (type == 'barcode') {
					O.barCodeText		= unescape(object.childNodes[0].childNodes[0].nodeValue);
					O.barCodeScale		= object.childNodes[1].childNodes[0].nodeValue;
					O.barCodeHeight		= object.childNodes[2].childNodes[0].nodeValue;
					O.left			= object.childNodes[3].childNodes[0].nodeValue;
					O.top			= object.childNodes[4].childNodes[0].nodeValue;
					O.fixedWidth		= object.childNodes[5].childNodes[0].nodeValue;
					O.width			= object.childNodes[6].childNodes[0].nodeValue;
				} else if (type == 'text') {
					O.object.innerHTML	= unescape(object.childNodes[0].childNodes[0].nodeValue);
					O.height		= object.childNodes[1].childNodes[0].nodeValue;
					O.left			= object.childNodes[2].childNodes[0].nodeValue;
					O.top			= object.childNodes[3].childNodes[0].nodeValue;
					O.fixedWidth		= object.childNodes[4].childNodes[0].nodeValue;
					O.width			= object.childNodes[5].childNodes[0].nodeValue;
				} else if (type == 'image') {
					O.image.src		= object.childNodes[0].childNodes[0].nodeValue;
					O.sourceIdx		= object.childNodes[1].childNodes[0].nodeValue;
					O.eBaySourceIdx		= object.childNodes[2].childNodes[0].nodeValue;
					O.left			= object.childNodes[3].childNodes[0].nodeValue;
					O.top			= object.childNodes[4].childNodes[0].nodeValue;
					O.scaleX		= object.childNodes[5].childNodes[0].nodeValue;
					O.scaleY		= object.childNodes[6].childNodes[0].nodeValue;
					O.fixedWidth		= object.childNodes[7].childNodes[0].nodeValue;
					O.width			= object.childNodes[8].childNodes[0].nodeValue;
				}

				O.refitToLabel();

			} catch (err) {}
		}

		Loader		= null;
		Parser		= null;
		labelRules	= null;
	}
	self.clearParentObjects = function () {
		while (self.parent.childNodes[0]) {
			try { self.parent.removeChild(self.parent.childNodes[0]); }
			catch (err) { self.editorLink.alert(err); }
		}
		self.parent.innerHTML = '';
	}
	self.drawButtons = function () {
		var imgOffset = 20;

		self.buttonOptions		= document.createElement('div');
		self.buttonOptions.className	= 'editorButton';
		self.buttonOptions.title	= 'Set Label Dimensions';
		self.buttonOptions.onclick	= function () { self.showLabelManager(); self.editorLink.enableSelect(); }
		self.buttonOptions.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonOptions.style.marginLeft		= '4px';
		self.buttonOptions.style.backgroundPosition	= Math.round(-5 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonOptions);

		self.buttonText			= document.createElement('div');
		self.buttonText.className	= 'editorButton';
		self.buttonText.title		= 'Add Text Object';
		self.buttonText.onclick		= function () { self.addLabelObject('text'); self.editorLink.enableSelect(); }
		self.buttonText.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonText.style.backgroundPosition = Math.round(-3 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonText);

		self.buttonBarCode		= document.createElement('div');
		self.buttonBarCode.className	= 'editorButton';
		self.buttonBarCode.title	= 'Add Barcode Object';
		self.buttonBarCode.onclick	= function () { self.addLabelObject('barcode'); self.editorLink.enableSelect(); }
		self.buttonBarCode.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonBarCode.style.backgroundPosition = Math.round(-4 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonBarCode);

		self.buttonImage		= document.createElement('div');
		self.buttonImage.className	= 'editorButton';
		self.buttonImage.title		= 'Add Image Object';
		self.buttonImage.onclick	= function () { self.addLabelObject('image'); self.editorLink.enableSelect(); self.editorLink.fetch('imagelibrary','',1); }
		self.buttonImage.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonImage.style.backgroundPosition = Math.round(-12 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonImage);

		self.buttonZoomIn		= document.createElement('div');
		self.buttonZoomIn.className	= 'editorButton';
		self.buttonZoomIn.title		= 'Zoom In';
		self.buttonZoomIn.onclick	= function () { self.zoom(); self.editorLink.enableSelect(); }
		self.buttonZoomIn.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonZoomIn.style.backgroundPosition = Math.round(0 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonZoomIn);

		self.buttonZoomEven		= document.createElement('div');
		self.buttonZoomEven.className	= 'editorButton';
		self.buttonZoomEven.title	= 'Default Zoom';
		self.buttonZoomEven.onclick	= function () { self.zoomEven(); self.editorLink.enableSelect(); }
		self.buttonZoomEven.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonZoomEven.style.backgroundPosition = Math.round(-1 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonZoomEven);

		self.buttonZoomOut		= document.createElement('div');
		self.buttonZoomOut.className	= 'editorButton';
		self.buttonZoomOut.title	= 'Zoom Out';
		self.buttonZoomOut.onclick	= function () { self.zoom(-1); self.editorLink.enableSelect(); }
		self.buttonZoomOut.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonZoomOut.style.backgroundPosition = Math.round(-2 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonZoomOut);

		self.buttonClear		= document.createElement('div');
		self.buttonClear.className	= 'editorButton';
		self.buttonClear.title		= 'Clear Template Contents';
		self.buttonClear.onclick	= function () { self.editorLink.enableSelect(); self.editorLink.confirm('Completely clear the contents of this template?','self.editorLink.clearLabelContents();'); }
		self.buttonClear.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonClear.style.backgroundPosition = Math.round(-8 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonClear);

		self.buttonPrint		= document.createElement('div');
		self.buttonPrint.className	= 'editorButton';
		self.buttonPrint.title		= 'Print Label';
		self.buttonPrint.onclick	= function () { self.exportForPrinting(); self.editorLink.enableSelect(); }
		self.buttonPrint.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonPrint.style.backgroundPosition = Math.round(-6 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonPrint);

		self.buttonSave			= document.createElement('div');
		self.buttonSave.className	= 'editorButton';
		self.buttonSave.title		= 'Save To Library';
		self.buttonSave.onclick		= function () { self.saveLabel(); self.editorLink.enableSelect(); }
		self.buttonSave.onmousedown	= function (e) { if (window.event) var e = window.event; self.editorLink.disableSelect(e); }
		self.buttonSave.style.backgroundPosition = Math.round(-7 * imgOffset) + 'px';
		self.parent.appendChild(self.buttonSave);
	}
	self.buildLabel = function () {
		self.label				= document.createElement('div');
		self.label.className			= 'defaultLabel';
		if (window.opera) self.label.style.cursor='move';
		self.parent.onmousedown	= function (e) {	if (window.event) var e = window.event;
								if (	self.textManager.style.display == 'none'
									&&
									self.labelManager.style.display == 'none'
									&&
									self.barCodeManager.style.display == 'none'
									&&
									self.imageManager.style.display == 'none'
								) { self.editorLink.disableSelect(e); }
						}
		self.label.onmousedown	= function () {	self.mOldX = 0; self.mOldY = 0;
							if (self.draggingObject != 1) {
								self.parent.onmousemove	= function (e) { if (window.event) var e = window.event; self.onMouseMove(e); }
								self.dragging = 1;
								self.label.style.cursor = 'url(images/geeXwebplatform.mouse.cursor.grabbing.gif), move';
							}
						}
		self.parent.onmouseup	= function () {	self.editorLink.enableSelect(); 
							self.dragging = 0; self.draggingObject = 0;
							self.label.style.cursor = 'url(images/geeXwebplatform.mouse.cursor.grab.gif), move';
						}
		self.parent.appendChild(self.label);
	}
	self.buildGrid = function () {
		self.grid		= document.createElement('table');
		self.grid.className	= 'defaultGrid';
		self.label.appendChild(self.grid);
	}
	self.buildGridMarkers = function () {

		self.gridTop				= document.createElement('div');
		self.gridTop.className			= 'gridTop';
		
		self.gridLeft				= document.createElement('div');
		self.gridLeft.className			= 'gridLeft';
	
		self.label.appendChild(self.gridTop);
		self.label.appendChild(self.gridLeft);

	}
	self.hideGrid = function () {
		self.grid.style.display		= 'none';
		self.gridTop.style.display	= 'none';
		self.gridLeft.style.display	= 'none';
	}
	self.showGrid = function () {
		try { self.grid.style.display	= 'table'; } catch (err) {};
		self.gridTop.style.display	= 'inline';
		self.gridLeft.style.display	= 'inline';
	}
	self.alignGrid = function () {

		self.grid.style.width	= parseInt(self.label.style.width)+'px';
		self.grid.style.height	= parseInt(self.label.style.height)+'px';

		while (self.grid.childNodes[0]) { try { self.grid.removeChild(self.grid.childNodes[0]); } catch (err) {} }

		if (self.realWidthUnits == 'in')	var unitsInX = 1;
		else					var unitsInX = 0;

		if (self.realHeightUnits == 'in')	var unitsInY = 1;
		else					var unitsInY = 0;

		var realWidth	= parseInt(self.realWidth  * self.pixelsPerInch);
		var realHeight	= parseInt(self.realHeight * self.pixelsPerInch);

		if (unitsInX == 0) realWidth /= 2.54;
		if (unitsInY == 0) realHeight /= 2.54;

		var zoomRatio	= parseInt(self.label.style.width) / realWidth;

		var blocksX	= self.realWidth  * (2 + (unitsInX * 2));
		var blocksY	= self.realHeight * (2 + (unitsInY * 2));

		if ((blocksX % 1) != 0)			var lastAdjustX = (blocksX % 1);
		else					var lastAdjustX = 0;

		if ((blocksY % 1) != 0)			var lastAdjustY = (blocksY % 1);
		else					var lastAdjustY = 0;

		blocksX		= Math.ceil(blocksX);
		blocksY		= Math.ceil(blocksY);

		for (var i=1; i<=blocksY; i++) {

			var tr = document.createElement('tr');
			if (lastAdjustY != 0 && i == blocksY) {
				if (unitsInY == 1)	tr.style.height = Math.round(self.pixelsPerInch * zoomRatio * (lastAdjustY / 4))+ 'px';
				else			tr.style.height = Math.round(self.pixelsPerCm   * zoomRatio * (lastAdjustY / 2))+ 'px';
			}
			self.grid.appendChild(tr);

			for (var j=1; j<=blocksX; j++) {
				var td			= document.createElement('td');
				if (lastAdjustX != 0 && j == blocksX) {
					if (unitsInX == 1)	td.style.width = Math.round(self.pixelsPerInch * zoomRatio * (lastAdjustX / 4))+ 'px';
					else			td.style.width = Math.round(self.pixelsPerCm   * zoomRatio * (lastAdjustX / 2))+ 'px';
				}
				tr.appendChild(td);
			}
		}


	}
	self.alignGridMarkers = function () {

		while (self.gridTop.childNodes[0]) { try { self.gridTop.removeChild(self.gridTop.childNodes[0]); } catch (err) {} }
		while (self.gridLeft.childNodes[0]) { try { self.gridLeft.removeChild(self.gridLeft.childNodes[0]); } catch (err) {} }

		if (self.realWidthUnits == 'in')	var unitsInX = 1;
		else					var unitsInX = 0;

		if (self.realHeightUnits == 'in')	var unitsInY = 1;
		else					var unitsInY = 0;

		var realWidth	= parseInt(self.realWidth  * self.pixelsPerInch);
		var realHeight	= parseInt(self.realHeight * self.pixelsPerInch);

		if (unitsInX == 0) realWidth /= 2.54;
		if (unitsInY == 0) realHeight /= 2.54;

		var zoomRatio	= parseInt(self.label.style.width) / realWidth;

		var blocksX	= self.realWidth;
		var blocksY	= self.realHeight;

		if ((blocksX % 1) != 0)			var lastAdjustX = (blocksX % 1);
		else					var lastAdjustX = 0;

		if ((blocksY % 1) != 0)			var lastAdjustY = (blocksY % 1);
		else					var lastAdjustY = 0;

		blocksX		= Math.ceil(blocksX);
		blocksY		= Math.ceil(blocksY);

		for (var i=1; i<=blocksX; i++) {

			if (unitsInX == 1)	{ incX = Math.round(self.pixelsPerInch * zoomRatio * (i-1)); var appX = '"'; }
			else			{ incX = Math.round(self.pixelsPerCm   * zoomRatio * (i-1)); var appX = 'cm'; }

			var s = document.createElement('div');
			s.innerHTML		= (i-1)+appX;
			s.style.left		= incX + 'px';
			self.gridTop.appendChild(s);
		}

		var s			= document.createElement('div');
		s.innerHTML		= (Math.round(self.realWidth * 1000) / 1000) + appX;
		self.gridTop.appendChild(s);

		for (var j=1; j<=blocksY; j++) {

			if (unitsInY == 1)	{ incY = Math.round(self.pixelsPerInch * zoomRatio * (j-1)); var appY = '"'; }
			else			{ incY = Math.round(self.pixelsPerCm   * zoomRatio * (j-1)); var appY = 'cm'; }
	
			var s = document.createElement('div');
			s.innerHTML		= (j-1)+appY;
			s.style.top		= incY+'px';
			self.gridLeft.appendChild(s);
		}

		var s			= document.createElement('div');
		s.innerHTML		= (Math.round(self.realHeight * 1000) / 1000) + appY;
		self.gridLeft.appendChild(s);

	}
	self.onMouseMove = function (e) {
		if (typeof(e.clientX) != 'undefined' || typeof(e.clientY) != 'undefined') {
			var mCurX	= e.clientX;
			var mCurY	= e.clientY;
		} else {
			var mCurX	= e.offsetX + document.body.scrollLeft - document.body.clientLeft;
			var mCurY	= e.offsetY + document.body.scrollTop - document.body.clientTop;
		}
		if (self.dragging == 1 && self.draggingObject != 1) {
			if (self.mOldX > 0 && self.mOldY > 0 && mCurX > 0 && mCurY > 0) {
				var lCurX		= self.label.offsetLeft;
				var lCurY		= self.label.offsetTop;
				var offsetX		= mCurX-self.mOldX;
				var offsetY		= mCurY-self.mOldY;
				self.label.style.left = (lCurX+offsetX) + 'px';
				self.label.style.top = (lCurY+offsetY) + 'px';
			}
		}
		self.mOldX = mCurX;
		self.mOldY = mCurY;
	}
	self.onKeyDown =
		function (e) {

			if (e)	var n = e.which;
			else	var n = window.event.keyCode;
			if (n == 0 || n == 27) { /* ESCAPE */
				self.textManager.apply();
				self.barCodeManager.apply();
				self.dragging = 0;
				self.editorLink.hideAlert();
				self.editorLink.hideSubContext();
				self.hideLabelManager();
				self.hideTextManager();
				self.hideBarCodeManager();
				self.hideImageManager();
			} else if (n == 16) {
				self.SHIFT = 1;
			} else if (n == 17) {
				self.CONTROL = 1;
			} else if (	self.editorLink.subContextBox.style.display	!= 'none'	||
					self.editorLink.alertBox.style.display		!= 'none'
			) {
				return;
			} else if (self.CONTROL == 1 && self.SHIFT == 1) { /* CTRL + SHIFT */
				switch (n) {
					/* < */		case 188:		self.prevLabelObject();				break;
					/* > */		case 190:		self.nextLabelObject();				break;
							default:
								try { self.editorLink.mainMenuEntries[n-49].onclick(); } catch (err) {}
								break;
				}
			} else if (self.SHIFT == 1) { /* SHIFT */
				if (	self.textManager.style.display == 'none' &&
					self.barCodeManager.style.display == 'none' &&
					self.imageManager.style.display == 'none'
					) {
					switch (n) {
						/* + */		case 61:		self.buttonZoomIn.onclick();			break;
						/* D */		case 68:		self.buttonOptions.onclick();			break;
						/* G */		case 71:		self.labelManager.gridToggle.onclick();		break;
						/* S */		case 83:		self.buttonSave.onclick();			break;
						/* L */		case 76:		self.editorLink.fetch('templatelibrary');	break;
					}
				}
			} else if (self.CONTROL == 1) { /* CTRL */
				switch (n) {
					/* DELETE */	case 46:
								if (self.textManager.style.display == 'block')		self.textManager.remove.onclick();
								else if (self.barCodeManager.style.display == 'block')	self.barCodeManager.remove.onclick();
								break;
				}
			} else if (	self.textManager.style.display		== 'none' &&
					self.barCodeManager.style.display	== 'none' &&
					self.labelManager.style.display		== 'none' &&
					self.imageManager.style.display		== 'none'
				) {
				switch (n) {
					/* DELETE */	case 46:		self.buttonClear.onclick();			break;
					/* d */		case 68:		self.buttonOptions.onclick();			break;
					/* g */		case 71:		self.labelManager.gridToggle.onclick();		break;
					/* = */		case 61:		self.buttonZoomEven.onclick();			break;
					/* + */		case 107:		self.buttonZoomIn.onclick();			break;
					/* - */		case 109:		self.buttonZoomOut.onclick();			break;
					/* s */		case 83:		self.buttonSave.onclick();			break;
					/* l */		case 76:		self.editorLink.fetch('templatelibrary');	break;
				}
			}
		}
	self.onKeyUp =
		function (e) {

			if (	self.editorLink.subContextBox.style.display != 'none'	||
				self.editorLink.alertBox.style.display != 'none'
			) return;

			if (e)	var n = e.which;
			else	var n = window.event.keyCode;
			switch (n) {
				/* CTRL */	case 16:		self.SHIFT = 0;				break;
				/* CTRL */	case 17:		self.CONTROL = 0;			break;
			}
			if (	self.textManager.style.display == 'none' &&
				self.barCodeManager.style.display == 'none'
				) {
				switch (n) {
					/* t or T */	case 84: case 116:	self.buttonText.onclick();			break;
					/* b or B */	case 66: case 98:	self.buttonBarCode.onclick();			break;
				}
			}
		}

	self.managerLabel = function (text) {
		var label			= document.createElement('a');
		label.style.cssFloat		= 'right';
		label.style.styleFloat		= 'right';
		label.style.verticalAlign	= 'bottom';
		label.style.margin		= '3px';
		label.innerHTML			= text;
		return label;
	}

	self.buildLabelManagerBox = function () {
		self.labelManager			= document.createElement('div');
		self.labelManager.className		= 'labelManager';
		self.labelManager.apply			= function () {
								if (parseInt(self.labelManager.wValue.value) > 11) self.labelManager.wValue.value = 11;
								if (parseInt(self.labelManager.hValue.value) > 11) self.labelManager.hValue.value = 11;
								self.setLabelDimensions (	self.labelManager.wValue.value,
												self.labelManager.wDims.value,
												self.labelManager.hValue.value,
												self.labelManager.hDims.value
									);
								self.editorLink.contextProtected = 1;
							}

		self.labelManager.syncUp		= function () {
									try {
										if (self.grid.style.display != 'none')	self.labelManager.gridToggle.checked = true;
										else					self.labelManager.gridToggle.checked = false;
										self.labelManager.wValue.value = self.realWidth;
										self.labelManager.hValue.value = self.realHeight;
										for (var i=0; i<self.labelManager.wDims.options.length; i++) {
											var w = self.labelManager.wDims.options[i];
											if (w.innerHTML == self.realWidthUnits) self.labelManager.wDims.selectedIndex = i;
										}
										for (var i=0; i<self.labelManager.hDims.options.length; i++) {
											var h = self.labelManager.hDims.options[i];
											if (h.innerHTML == self.realHeightUnits) self.labelManager.hDims.selectedIndex = i;
										}
									} catch (err) {}
								}

		self.labelManager.wValue		= document.createElement('input');
		self.labelManager.wValue.value		= self.realWidth;
		self.labelManager.wValue.style.cssFloat	= "right";
		self.labelManager.wValue.style.styleFloat	= "right";
		self.labelManager.wValue.style.width	= "50px";
		self.labelManager.wValue.title		= 'Label Width';
		self.labelManager.wValue.onblur		= self.labelManager.apply;
		self.labelManager.wValue.onkeyup	= self.labelManager.apply;

		self.labelManager.hValue		= document.createElement('input');
		self.labelManager.hValue.value		= self.realHeight;
		self.labelManager.hValue.style.cssFloat	= "right";
		self.labelManager.hValue.style.styleFloat	= "right";
		self.labelManager.hValue.style.width	= "50px";
		self.labelManager.hValue.title		= 'Label Height';
		self.labelManager.hValue.onblur		= self.labelManager.apply;
		self.labelManager.hValue.onkeyup	= self.labelManager.apply;

		self.labelManager.wDims			= document.createElement('select');
		self.labelManager.wDims.title		= 'Width Units of Measurement';
		self.labelManager.wDims.style.cssFloat	= "right";
		self.labelManager.wDims.style.styleFloat	= "right";
		self.labelManager.wDims.opt1		= document.createElement('option');
		self.labelManager.wDims.opt1.value	= 'in';
		self.labelManager.wDims.opt1.innerHTML	= 'in';
		self.labelManager.wDims.appendChild(self.labelManager.wDims.opt1);
		self.labelManager.wDims.opt2		= document.createElement('option');
		self.labelManager.wDims.opt2.value	= 'cm';
		self.labelManager.wDims.opt2.innerHTML	= 'cm';
		self.labelManager.wDims.appendChild(self.labelManager.wDims.opt2);
		self.labelManager.wDims.onchange	= self.labelManager.apply;

		self.labelManager.hDims			= document.createElement('select');
		self.labelManager.hDims.title		= 'Height Units of Measurement';
		self.labelManager.hDims.style.cssFloat	= "right";
		self.labelManager.hDims.style.styleFloat	= "right";
		self.labelManager.hDims.opt1		= document.createElement('option');
		self.labelManager.hDims.opt1.value	= 'in';
		self.labelManager.hDims.opt1.innerHTML	= 'in';
		self.labelManager.hDims.appendChild(self.labelManager.hDims.opt1);
		self.labelManager.hDims.opt2		= document.createElement('option');
		self.labelManager.hDims.opt2.value	= 'cm';
		self.labelManager.hDims.opt2.innerHTML	= 'cm';
		self.labelManager.hDims.appendChild(self.labelManager.hDims.opt2);
		self.labelManager.hDims.onchange	= self.labelManager.apply;

		self.labelManager.done				= document.createElement('div');
		self.labelManager.done.className		= 'editorButton';
		self.labelManager.done.style.cssFloat		= 'right';
		self.labelManager.done.style.styleFloat		= 'right';
		self.labelManager.done.style.backgroundPosition	= Math.round(-9 * 20) + 'px';
		self.labelManager.done.title			= 'Finished Making Changes';
		self.labelManager.done.onclick			= self.hideLabelManager;

		self.labelManager.gridToggle				= document.createElement('input');
		self.labelManager.gridToggle.type			= 'checkbox';
		self.labelManager.gridToggle.style.cssFloat		= 'right';
		self.labelManager.gridToggle.style.styleFloat		= 'right';
		self.labelManager.gridToggle.onclick			= function () {
											if (self.grid.style.display == 'none')	{ self.showGrid(); }
											else					{ self.hideGrid(); }
										}
		self.labelManager.gridToggle.id				= 'gridToggle';

		self.labelManager.hDimsLabel		= self.managerLabel('Height:');
		self.labelManager.wDimsLabel		= self.managerLabel('Width:');
		self.labelManager.gridToggleLabel	= self.managerLabel('Show Grid?');

		self.labelManager.appendChild(self.labelManager.done);
		self.labelManager.appendChild(self.labelManager.hDims);
		self.labelManager.appendChild(self.labelManager.hValue);
		self.labelManager.appendChild(self.labelManager.hDimsLabel);
		self.labelManager.appendChild(self.labelManager.wDims);
		self.labelManager.appendChild(self.labelManager.wValue);
		self.labelManager.appendChild(self.labelManager.wDimsLabel);
		self.labelManager.appendChild(self.labelManager.gridToggle);
		self.labelManager.appendChild(self.labelManager.gridToggleLabel);

		self.parent.appendChild(self.labelManager);
	}
	self.buildTextManagerBox = function () {
		self.textManager			= document.createElement('div');
		self.textManager.className		= 'textManager';
		self.textManager.style.display		= 'none';
		self.textManager.apply			= function () {
								if (self.textManager.object != null) {
									self.textManager.object.object.innerHTML = self.textManager.txt.value;
									self.textManager.object.height = self.textManager.size.value;
									if (self.textManager.fixedWidth.checked) {
										self.textManager.object.fixedWidth	= 1;
										self.textManager.object.width		= self.textManager.Width.value;
									} else {
										self.textManager.object.fixedWidth	= 0;
										self.textManager.object.width		= null;
									}
									self.textManager.object.refitToLabel();
								}
							}
		self.textManager.syncUp			= function () {
									try {
										self.textManager.txt.value = self.textManager.object.object.innerHTML;
										if (parseInt(self.textManager.object.fixedWidth) == 1) {
											self.textManager.fixedWidth.checked	= true;
											self.textManager.Width.value		= self.textManager.object.width;
											self.textManager.Width.disabled		= false;
										} else {
											self.textManager.fixedWidth.checked	= false;
											self.textManager.Width.disabled		= true;
										}
										var match = self.textManager.object.height+"pt";
										for (var i=0; i<self.textManager.size.options.length; i++) {
											var o = self.textManager.size.options[i];
											if (o.innerHTML == match) {
												self.textManager.size.selectedIndex = i;
											}
										}
									} catch (err) {}
								}

		self.textManager.done				= document.createElement('div');
		self.textManager.done.className			= 'editorButton';
		self.textManager.done.style.cssFloat		= 'right';
		self.textManager.done.style.styleFloat		= 'right';
		self.textManager.done.style.backgroundPosition	= Math.round(-9 * 20) + 'px';
		self.textManager.done.title			= 'Finished Making Changes';
		self.textManager.done.onclick			= self.hideTextManager;

		self.textManager.clone				= document.createElement('div');
		self.textManager.clone.className		= 'editorButton';
		self.textManager.clone.style.cssFloat		= 'right';
		self.textManager.clone.style.styleFloat		= 'right';
		self.textManager.clone.style.backgroundPosition	= Math.round(-11 * 20) + 'px';
		self.textManager.clone.title			= 'Duplicate This Object';
		self.textManager.clone.onclick			= function () { try { self.textManager.object.clone(); } catch (err) {} };

		self.textManager.txt			= document.createElement('input');
		self.textManager.txt.style.width	= '160px';
		self.textManager.txt.style.cssFloat	= 'right';
		self.textManager.txt.style.styleFloat	= 'right';
		self.textManager.txt.title		= 'Edit This Text';
		self.textManager.txt.onkeyup		= self.textManager.apply;

		self.textManager.eBayLink			= document.createElement('select');
		var og						= document.createElement('optgroup');
		og.label					= 'Optional Ebay Field';
		var o = document.createElement('option');	o.value = '';			o.innerHTML = 'No eBay Item Field';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{TITLE0}}';		o.innerHTML = 'eBay Item Title';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{NUMBER0}}';	o.innerHTML = 'eBay Item Number';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{STARTPRICE0}}';	o.innerHTML = 'eBay Starting Bid';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{STARTDATE0}}';	o.innerHTML = 'eBay Starting Date';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{ENDDATE0}}';	o.innerHTML = 'eBay Ending Date';	og.appendChild(o);
		self.textManager.eBayLink.appendChild(og);
		self.textManager.eBayLink.style.cssFloat	= 'right';
		self.textManager.eBayLink.style.styleFloat	= 'right';
		self.textManager.eBayLink.title			= 'Link This Object To An eBay Item Field!';
		self.textManager.eBayLink.onchange		= function () {
										self.textManager.txt.value = self.textManager.eBayLink.value;
										self.textManager.apply();
									}

		self.textManager.size			= document.createElement('select');
		var sel = null;
		for (var i = 7; i<=20; i++) {
			var o		= document.createElement('option');
			o.innerHTML	= i+'pt';
			o.value		= i;
			self.textManager.size.appendChild(o);
		}
		for (var i = 11; i<=35; i++) {
			var o		= document.createElement('option');
			o.innerHTML	= (i*2)+'pt';
			o.value		= (i*2);
			self.textManager.size.appendChild(o);
		}
		for (var i = 15; i<=20; i++) {
			var o		= document.createElement('option');
			o.innerHTML	= (i*5)+'pt';
			o.value		= (i*5);
			self.textManager.size.appendChild(o);
		}
		self.textManager.size.selectedIndex	= sel;
		self.textManager.size.style.cssFloat	= 'right';
		self.textManager.size.style.styleFloat	= 'right';
		self.textManager.size.title		= 'Vertical Height Of The Font';
		self.textManager.size.onchange		= self.textManager.apply;

		self.textManager.remove			= document.createElement('div');
		self.textManager.remove.className	= 'editorButton';
		self.textManager.remove.style.cssFloat	= 'right';
		self.textManager.remove.style.styleFloat	= 'right';
		self.textManager.remove.style.backgroundPosition = Math.round(-10 * 20)+'px';
		self.textManager.remove.title		= 'Remove This Object';
		self.textManager.remove.funct		= function () {	self.removeLabelObject(self.textManager.object);
									self.hideTextManager();
								}
		self.textManager.remove.onclick		= function () { self.editorLink.confirm( 'Remove the highlighted object from this label?',
												 self.textManager.remove.funct
										);
								}

		self.textManager.fixedWidth			= document.createElement('input');
		self.textManager.fixedWidth.type		= 'checkbox';
		self.textManager.fixedWidth.style.cssFloat	= 'right';
		self.textManager.fixedWidth.style.styleFloat	= 'right';
		self.textManager.fixedWidth.title		= 'Fixed Width:  When this is checked, you can specify a max width for this text object using the box to the right.  This is most helpful when trying to center an object.';
		self.textManager.fixedWidth.onclick		= function () { self.textManager.apply(); self.textManager.syncUp(); }

		self.textManager.Width			= document.createElement('input');
		self.textManager.Width.style.width	= '25px';
		self.textManager.Width.style.cssFloat	= 'right';
		self.textManager.Width.style.styleFloat	= 'right';
		self.textManager.Width.title		= 'Enter a number greater than 0 for the maximum width of this text object (Units are taken from the width units of the label dimensions)';
		self.textManager.Width.onkeyup		= function () { self.textManager.apply(); self.textManager.syncUp(); }

		self.textManager.appendChild(self.textManager.done);
		self.textManager.appendChild(self.textManager.clone);
		self.textManager.appendChild(self.textManager.remove);
		self.textManager.appendChild(self.textManager.size);
		self.textManager.appendChild(self.textManager.eBayLink);
		self.textManager.appendChild(self.textManager.txt);
		self.textManager.appendChild(self.textManager.Width);
		self.textManager.appendChild(self.textManager.fixedWidth);

		self.parent.appendChild(self.textManager);
	}
	self.buildBarCodeManagerBox = function () {
		self.barCodeManager			= document.createElement('div');
		self.barCodeManager.className		= 'barCodeManager';
		self.barCodeManager.style.display	= 'none';
		self.barCodeManager.apply		= function () {
								if (self.barCodeManager.object != null) {
									self.barCodeManager.object.barCodeText =
										self.barCodeManager.txt.value;
									self.barCodeManager.object.barCodeScale =
										self.barCodeManager.scale.value;
									self.barCodeManager.object.barCodeHeight =
										self.barCodeManager.height.value;
									if (self.barCodeManager.fixedWidth.checked) {
										self.barCodeManager.object.fixedWidth	= 1;
										self.barCodeManager.object.width	= self.barCodeManager.Width.value;
									} else {
										self.barCodeManager.object.fixedWidth	= 0;
										self.barCodeManager.object.width	= null;
									}
									self.barCodeManager.object.refitToLabel();
								}
							}
		self.barCodeManager.syncUp		= function () {
									try {
										self.barCodeManager.txt.value = self.barCodeManager.object.barCodeText;
										if (parseInt(self.barCodeManager.object.fixedWidth) == 1) {
											self.barCodeManager.fixedWidth.checked	= true;
											self.barCodeManager.Width.value		= self.barCodeManager.object.width;
											self.barCodeManager.Width.disabled	= false;
										} else {
											self.barCodeManager.fixedWidth.checked	= false;
											self.barCodeManager.Width.disabled	= true;
										}
										var height = self.barCodeManager.object.barCodeHeight;
										for (var i=0; i<self.barCodeManager.height.options.length; i++) {
											var o = self.barCodeManager.height.options[i];
											if (o.innerHTML == height) {
												self.barCodeManager.height.selectedIndex = i;
											}
										}
										var scale	= self.barCodeManager.object.barCodeScale;
										for (var i=0; i<self.barCodeManager.scale.options.length; i++) {
											var o = self.barCodeManager.scale.options[i];
											if (o.innerHTML == scale) {
												self.barCodeManager.scale.selectedIndex = i;
											}
										}
									} catch (err) {  self.editorLink.alert(err); }
								}

		self.barCodeManager.done				= document.createElement('div');
		self.barCodeManager.done.className			= 'editorButton';
		self.barCodeManager.done.style.cssFloat			= 'right';
		self.barCodeManager.done.style.styleFloat		= 'right';
		self.barCodeManager.done.style.backgroundPosition	= Math.round(-9 * 20) + 'px';
		self.barCodeManager.done.title				= 'Finished Making Changes';
		self.barCodeManager.done.onclick			= self.hideBarCodeManager;

		self.barCodeManager.clone				= document.createElement('div');
		self.barCodeManager.clone.className			= 'editorButton';
		self.barCodeManager.clone.style.cssFloat		= 'right';
		self.barCodeManager.clone.style.styleFloat		= 'right';
		self.barCodeManager.clone.style.backgroundPosition	= Math.round(-11 * 20) + 'px';
		self.barCodeManager.clone.title				= 'Duplicate This Object';
		self.barCodeManager.clone.onclick			= function () { try { self.barCodeManager.object.clone(); } catch (err) {} };

		self.barCodeManager.txt				= document.createElement('input');
		self.barCodeManager.txt.style.width		= '200px';
		self.barCodeManager.txt.style.cssFloat		= 'right';
		self.barCodeManager.txt.style.styleFloat	= 'right';
		self.barCodeManager.txt.title			= 'Text To Encode';
		self.barCodeManager.txt.inputTimer		= null;
		self.barCodeManager.txt.onkeyup =
			function () {
				try { clearTimeout(self.barCodeManager.txt.inputTimer) } catch (err) {}
				self.barCodeManager.txt.inputTimer = setTimeout(self.barCodeManager.apply,625);
			}
		self.barCodeManager.txt.onkeydown = self.barCodeManager.txt.onkeyup;

		self.barCodeManager.eBayLink			= document.createElement('select');
		var og						= document.createElement('optgroup');
		og.label					= 'Optional Ebay Field';
		var o = document.createElement('option');	o.value = '';			o.innerHTML = 'No eBay Item Field';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{TITLE0}}';		o.innerHTML = 'eBay Item Title';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{NUMBER0}}';	o.innerHTML = 'eBay Item Number';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{STARTPRICE0}}';	o.innerHTML = 'eBay Starting Bid';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{STARTDATE0}}';	o.innerHTML = 'eBay Starting Date';	og.appendChild(o);
		var o = document.createElement('option');	o.value = '{{ENDDATE0}}';	o.innerHTML = 'eBay Ending Date';	og.appendChild(o);
		self.barCodeManager.eBayLink.appendChild(og);
		self.barCodeManager.eBayLink.style.cssFloat	= 'right';
		self.barCodeManager.eBayLink.style.styleFloat	= 'right';
		self.barCodeManager.eBayLink.title		= 'Link This Object To An eBay Item Field!';
		self.barCodeManager.eBayLink.onchange		= function () {
										self.barCodeManager.txt.value = self.barCodeManager.eBayLink.value;
										self.barCodeManager.apply();
									}

		self.barCodeManager.scale		= document.createElement('select');
		var o = null; var i = null;
		for (i = 1; i<=6; i++) {
			o = document.createElement('option');
			o.value = i;
			o.innerHTML = i;
			self.barCodeManager.scale.appendChild(o);
		}
		self.barCodeManager.scale.style.cssFloat	= 'right';
		self.barCodeManager.scale.style.styleFloat	= 'right';
		self.barCodeManager.scale.title			= 'Horizontal Scale';
		self.barCodeManager.scale.onchange		= self.barCodeManager.apply;

		self.barCodeManager.height		= document.createElement('select');
		var o = null; var i = null;
		for (i = 10; i<=60; i++) {
			o		= document.createElement('option'); 
			o.value		= i*2;
			o.innerHTML	= i*2;
			self.barCodeManager.height.appendChild(o);
		}
		self.barCodeManager.height.style.cssFloat	= 'right';
		self.barCodeManager.height.style.styleFloat	= 'right';
		self.barCodeManager.height.title		= 'Vertical Scale';
		self.barCodeManager.height.onchange		= self.barCodeManager.apply;

		self.barCodeManager.remove				= document.createElement('div');
		self.barCodeManager.remove.className			= 'editorButton';
		self.barCodeManager.remove.style.cssFloat		= 'right';
		self.barCodeManager.remove.style.styleFloat		= 'right';
		self.barCodeManager.remove.style.backgroundPosition	= Math.round(-10 * 20) + 'px';
		self.barCodeManager.remove.title			= 'Remove This Object';
		self.barCodeManager.remove.funct			= function () {	self.removeLabelObject(self.barCodeManager.object);
											self.hideBarCodeManager();
										}
		self.barCodeManager.remove.onclick			= function () {
										self.editorLink.confirm( 'Remove the highlighted object from this label?',
											self.barCodeManager.remove.funct
											);
										}

		self.barCodeManager.fixedWidth			= document.createElement('input');
		self.barCodeManager.fixedWidth.type		= 'checkbox';
		self.barCodeManager.fixedWidth.style.cssFloat	= 'right';
		self.barCodeManager.fixedWidth.style.styleFloat	= 'right';
		self.barCodeManager.fixedWidth.title		= 'Fixed Width:  When this is checked, you can specify a max width for this barcode object using the box to the right.  This is most helpful when trying to center an object.';
		self.barCodeManager.fixedWidth.onclick		= function () { self.barCodeManager.apply(); self.barCodeManager.syncUp(); }

		self.barCodeManager.Width			= document.createElement('input');
		self.barCodeManager.Width.style.width		= '25px';
		self.barCodeManager.Width.style.cssFloat	= 'right';
		self.barCodeManager.Width.style.styleFloat	= 'right';
		self.barCodeManager.Width.title			= 'Enter a number greater than 0 for the maximum width of this barcode object (Units are taken from the width units of the label dimensions)';
		self.barCodeManager.Width.onkeyup		= self.barCodeManager.apply;
		self.barCodeManager.Width.onclick		= function () { self.barCodeManager.apply(); self.barCodeManager.syncUp(); }

		self.barCodeManager.appendChild(self.barCodeManager.done);
		self.barCodeManager.appendChild(self.barCodeManager.clone);
		self.barCodeManager.appendChild(self.barCodeManager.remove);
		self.barCodeManager.appendChild(self.barCodeManager.height);
		self.barCodeManager.appendChild(self.barCodeManager.scale);
		self.barCodeManager.appendChild(self.barCodeManager.eBayLink);
		self.barCodeManager.appendChild(self.barCodeManager.txt);
		self.barCodeManager.appendChild(self.barCodeManager.Width);
		self.barCodeManager.appendChild(self.barCodeManager.fixedWidth);

		self.parent.appendChild(self.barCodeManager);
	}
	self.buildImageManagerBox = function () {

		self.imageManager			= document.createElement('div');
		self.imageManager.className		= 'imageManager';
		self.imageManager.style.display		= 'none';
		self.imageManager.apply			= function () {
									if (self.imageManager.object != null) {
										try {
											self.imageManager.object.scaleX				= self.imageManager.scaleX.value;
											self.imageManager.object.scaleY				= self.imageManager.scaleY.value;
											if (self.imageManager.fixedWidth.checked) {
												self.imageManager.object.fixedWidth		= 1;
												self.imageManager.object.width			= self.imageManager.Width.value;
											} else {
												self.imageManager.object.fixedWidth		= 0;
												self.imageManager.object.width			= null;
											}
											self.imageManager.object.refitToLabel();
										} catch (err) {}
									}
								}

		self.imageManager.syncUp		= function () {
									try {
										if (parseInt(self.imageManager.object.fixedWidth) == 1) {
											self.imageManager.fixedWidth.checked	= true;
											self.imageManager.Width.value		= self.imageManager.object.width;
											self.imageManager.Width.disabled	= false;
										} else {
											self.imageManager.fixedWidth.checked	= false;
											self.imageManager.Width.disabled	= true;
										}
										self.imageManager.scaleX.selectedIndex = 0;
										for (var i=0; i<self.imageManager.scaleX.options.length; i++) {
											var o = self.imageManager.scaleX.options[i];
											if (o.value == self.imageManager.object.scaleX) self.imageManager.scaleX.selectedIndex = i;
										}
										self.imageManager.scaleY.selectedIndex = 0;
										for (var i=1; i<self.imageManager.scaleY.options.length; i++) {
											var o = self.imageManager.scaleY.options[i];
											if (o.value == self.imageManager.object.scaleY) self.imageManager.scaleY.selectedIndex = i;
										}
									} catch (err) {}
								}

		self.imageManager.setSource		= function (src,sourceIdx,eBaySourceIdx) {
									self.imageManager.object.scaleX		= 0;
									self.imageManager.object.scaleY		= 0;
									self.imageManager.object.image.src	= src;
									self.imageManager.object.sourceIdx	= sourceIdx;
									self.imageManager.object.eBaySourceIdx	= eBaySourceIdx;
									self.imageManager.object.image.onload	= self.imageManager.object.refitToLabel;
									self.imageManager.object.image.onload	= self.imageManager.object.refitToLabel;
									self.imageManager.object.refitToLabel();
									self.imageManager.syncUp();
								}

		self.imageManager.done					= document.createElement('div');
		self.imageManager.done.className			= 'editorButton';
		self.imageManager.done.style.cssFloat			= 'right';
		self.imageManager.done.style.styleFloat			= 'right';
		self.imageManager.done.style.backgroundPosition		= Math.round(-9 * 20) + 'px';
		self.imageManager.done.title				= 'Finished Making Changes';
		self.imageManager.done.onclick				= self.hideImageManager;

		self.imageManager.clone					= document.createElement('div');
		self.imageManager.clone.className			= 'editorButton';
		self.imageManager.clone.style.cssFloat			= 'right';
		self.imageManager.clone.style.styleFloat		= 'right';
		self.imageManager.clone.style.backgroundPosition	= Math.round(-11 * 20) + 'px';
		self.imageManager.clone.title				= 'Duplicate This Object';
		self.imageManager.clone.onclick				= function () { try { self.imageManager.object.clone(); } catch (err) {} };

		self.imageManager.remove				= document.createElement('div');
		self.imageManager.remove.className			= 'editorButton';
		self.imageManager.remove.style.cssFloat			= 'right';
		self.imageManager.remove.style.styleFloat		= 'right';
		self.imageManager.remove.style.backgroundPosition	= Math.round(-10 * 20) + 'px';
		self.imageManager.remove.title				= 'Remove This Object';
		self.imageManager.remove.funct				= function () {	self.removeLabelObject(self.imageManager.object);
											self.hideImageManager();
										}
		self.imageManager.remove.onclick			= function () {
											self.editorLink.confirm(	'Remove the highlighted object from this label?',
															self.imageManager.remove.funct
												);
										}

		self.imageManager.loadImageLibrary			= document.createElement('input');
		self.imageManager.loadImageLibrary.style.cssFloat	= 'right';
		self.imageManager.loadImageLibrary.style.styleFloat	= 'right';
		self.imageManager.loadImageLibrary.type			= 'submit';
		self.imageManager.loadImageLibrary.value		= 'Change Image';
		self.imageManager.loadImageLibrary.onclick		= function () { self.editorLink.fetch('imagelibrary','',1); }

		self.imageManager.scaleY			= document.createElement('select');
		self.imageManager.scaleY.style.cssFloat		= 'right';
		self.imageManager.scaleY.style.styleFloat	= 'right';
		self.imageManager.scaleY.title			= 'This will limit the actual image height to a certain percentage of the label height.';
		var o = null; var i = null;
		for (i = 0; i<=20; i++) {
			o = document.createElement('option');
			o.value = (i*5)/100;
			if (i == 0)	o.innerHTML = 'None';
			else 		o.innerHTML = (i * 5) + '%';
			self.imageManager.scaleY.appendChild(o);
		}
		self.imageManager.scaleY.onchange		= function () { self.imageManager.apply(); }
		self.imageManager.scaleYLabel			= self.managerLabel('Max Height:');

		self.imageManager.scaleX			= document.createElement('select');
		self.imageManager.scaleX.style.cssFloat		= 'right';
		self.imageManager.scaleX.style.styleFloat	= 'right';
		self.imageManager.scaleX.title			= 'This will limit the actual image width to a certain percentage of the label width.';
		var o = null; var i = null;
		for (i = 0; i<=20; i++) {
			o = document.createElement('option');
			o.value = (i*5)/100;
			if (i == 0)	o.innerHTML = 'None';
			else 		o.innerHTML = (i * 5) + '%';
			self.imageManager.scaleX.appendChild(o);
		}
		self.imageManager.scaleX.onchange		= function () { self.imageManager.apply(); }
		self.imageManager.scaleXLabel			= self.managerLabel('Max Width:');

		self.imageManager.fixedWidth			= document.createElement('input');
		self.imageManager.fixedWidth.type		= 'checkbox';
		self.imageManager.fixedWidth.style.cssFloat	= 'right';
		self.imageManager.fixedWidth.style.styleFloat	= 'right';
		self.imageManager.fixedWidth.title		= 'Fixed Width:  When this is checked, you can specify a max width for this image object using the box to the right.  This is most helpful when trying to center an object.';
		self.imageManager.fixedWidth.onclick		= function () { self.imageManager.apply(); self.imageManager.syncUp(); }

		self.imageManager.Width				= document.createElement('input');
		self.imageManager.Width.style.width		= '25px';
		self.imageManager.Width.style.cssFloat		= 'right';
		self.imageManager.Width.style.styleFloat	= 'right';
		self.imageManager.Width.title			= 'Enter a number greater than 0 for the maximum width of this image object (Units are taken from the width units of the label dimensions)';
		self.imageManager.Width.onkeyup			= self.imageManager.apply;
		self.imageManager.Width.onclick			= function () { self.imageManager.apply(); self.imageManager.syncUp(); }

		self.imageManager.SOURCE			= document.createElement('input');
		self.imageManager.SOURCE.type			= 'hidden';

		self.imageManager.appendChild(self.imageManager.done);
		self.imageManager.appendChild(self.imageManager.clone);
		self.imageManager.appendChild(self.imageManager.remove);
		self.imageManager.appendChild(self.imageManager.loadImageLibrary);
		self.imageManager.appendChild(self.imageManager.scaleY);
		self.imageManager.appendChild(self.imageManager.scaleYLabel);
		self.imageManager.appendChild(self.imageManager.scaleX);
		self.imageManager.appendChild(self.imageManager.scaleXLabel);
		self.imageManager.appendChild(self.imageManager.Width);
		self.imageManager.appendChild(self.imageManager.fixedWidth);
		self.imageManager.appendChild(self.imageManager.SOURCE);

		self.parent.appendChild(self.imageManager);
	}
	self.showLabelManager = function () {
		self.hideTextManager();
		self.hideBarCodeManager();
		self.hideImageManager();
		self.labelManager.syncUp();
		self.labelManager.style.display = 'block';
	}
	self.hideLabelManager = function () {
		self.labelManager.style.display = 'none';
	}
	self.showTextManager = function () {
		self.hideLabelManager();
		self.hideBarCodeManager();
		self.hideImageManager();
		self.textManager.style.display = 'block';
		self.textManager.txt.focus();
		self.textManager.txt.select();
	}
	self.hideTextManager = function () {
		for (var i=0; i<self.labelObjectCount; i++)
			{ try { self.labelObjects[i].unedit(); } catch (err) {} }
		self.textManager.object		= null;
		self.textManager.style.display	= 'none';
	}
	self.showBarCodeManager = function () {
		self.hideLabelManager();
		self.hideTextManager();
		self.hideImageManager();
		self.barCodeManager.style.display = 'block';
		self.barCodeManager.txt.focus();
		self.barCodeManager.txt.select();
	}
	self.hideBarCodeManager = function () {
		for (var i=0; i<self.labelObjectCount; i++)
			{ try { self.labelObjects[i].unedit(); } catch (err) {} }
		self.barCodeManager.object	= null;
		self.barCodeManager.style.display = 'none';
	}
	self.showImageManager = function () {
		self.hideLabelManager();
		self.hideTextManager();
		self.hideBarCodeManager();
		self.imageManager.style.display = 'block';
	}
	self.hideImageManager = function () {
		for (var i=0; i<self.labelObjectCount; i++)
			{ try { self.labelObjects[i].unedit(); } catch (err) {} }
		self.imageManager.object	= null;
		self.imageManager.style.display = 'none';
	}
	self.setLabelDimensions = function (width,wunits,height,hunits) {
		if (width > 0 && height > 0) {
			self.realWidth		= width;
			self.realWidthUnits	= wunits;
			self.realHeight		= height;
			self.realHeightUnits	= hunits;
			self.zoomEven();
		}
	}
	self.center = function (left,top) {
		var pW				= parseInt(self.parent.offsetWidth);
		var pH				= parseInt(self.parent.offsetHeight);
		var sW				= parseInt(self.label.offsetWidth);
		var sH				= parseInt(self.label.offsetHeight);
		if (left != 0)	{ self.label.style.left	= Math.round((pW - sW)/2) + 'px'; }
		if (top != 0)	{ self.label.style.top	= Math.round((pH - sH)/2) + 'px'; }
	}
	self.zoom = function (dir) {
		var curWidth		= parseInt(self.label.offsetWidth);
		var curHeight		= parseInt(self.label.offsetHeight);
		if (dir < 0)		{ var newWidth = Math.round(curWidth / 1.1); }
		else			{ var newWidth = Math.round(curWidth * 1.1); }
		var labelHeightinInches	= self.realHeight;
		if (self.realHeightUnits == 'cm') labelHeightinInches = labelHeightinInches / 2.54;
		var labelWidthinInches	= self.realWidth;
		if (self.realWidthUnits == 'cm') labelWidthinInches = labelWidthinInches / 2.54;
		var newHeight		= Math.round(newWidth * (labelHeightinInches/labelWidthinInches));
		if (newWidth > 50 && newHeight > 50 && self.dragging != 1) {
			self.label.style.width	= newWidth + 'px';
			self.label.style.height	= newHeight + 'px';
			var offsetX	= Math.floor((curWidth - newWidth)/2);
			var offsetY	= Math.floor((curHeight - newHeight)/2);
			var newLeft	= parseInt(self.label.offsetLeft) + offsetX;
			var newTop	= parseInt(self.label.offsetTop) + offsetY;
			self.label.style.left	= newLeft + 'px';
			self.label.style.top	= newTop + 'px';
			self.fitLabelObjects();
		}
	}
	self.zoomEven = function () {
		var maxWidth		= parseInt(self.parent.offsetWidth * .6);
		var maxHeight		= parseInt(self.parent.offsetHeight * .82);
		var newRatio		= self.realHeight/self.realWidth;
		if (self.realHeightUnits == 'cm')	newRatio = newRatio / 2.54;
		if (self.realWidthUnits	== 'cm')	newRatio = newRatio * 2.54;
		var newWidth		= Math.round(maxWidth);
		var newHeight		= parseInt(maxWidth * newRatio)
		if (newHeight > maxHeight) {
			newHeight	= Math.round(maxHeight);
			newWidth	= parseInt(maxHeight / newRatio)
		}
		if (self.dragging != 1) {
			self.label.style.width	= newWidth + 'px';
			self.label.style.height	= newHeight + 'px';
			self.center();
			self.fitLabelObjects();
		}
	}
	self.fitLabelObjects = function () {
		for (var i = 0; i<self.labelObjectCount; i++) { try { self.labelObjects[i].refitToLabel();} catch (err) {} }
		self.alignGrid();
		self.alignGridMarkers();
	}
	self.clearLabelContents = function () {
		while (self.label.childNodes[0]) {
			try { self.label.removeChild(self.label.childNodes[0]); }
			catch (err) { self.editorLink.alert(err); }
		}
		self.labelObjects	= Array();
		self.labelObjectCount	= 0;
		self.label.appendChild(self.grid);
		self.label.appendChild(self.gridTop);
		self.label.appendChild(self.gridLeft);
		self.hideTextManager();
		self.hideBarCodeManager();
	}
	self.addLabelObject = function (type,editBoolean,barCodeText,barCodeScale,barCodeHeight) {
		self.hideTextManager();
		self.hideBarCodeManager();
		self.labelObjects[self.labelObjectCount] = new labelObject(self,type,barCodeText,barCodeScale,barCodeHeight);
		self.label.appendChild(self.labelObjects[self.labelObjectCount].object);
		if (editBoolean != 0) self.labelObjects[self.labelObjectCount].edit();
		return self.labelObjects[self.labelObjectCount++];
	}
	self.removeLabelObject = function (obj) {
		try {
			for (var i=0; i<self.label.childNodes.length; i++) {
				if (self.label.childNodes[i] == obj.object) {
					self.label.removeChild(self.label.childNodes[i]);
				} else {
					
				}
			}
			var labelObjects	= self.labelObjects;
			self.labelObjects	= new Array();
			self.labelObjectCount	= 0;
			for (var i in labelObjects) {
				if (labelObjects[i] != obj) {
					self.labelObjects[self.labelObjectCount++] = labelObjects[i];
				}
			}
			obj = null;
		} catch (err) { self.editorLink.alert(err); }
	}
	self.prevLabelObject = function () {
		try {
			var objArray	= Array();
			var objCount	= 0;
			var cur		= 0;
			for (var i in self.labelObjects) {
				if (self.labelObjects[i]) {
					if (self.labelObjects[i].object.style.backgroundColor == 'yellow') cur = objCount;
					objArray[objCount++] = self.labelObjects[i];
				}
			}
			if (objCount == 0) return;
			var next = ((cur - 1) + objCount) % objCount;
			objArray[next].edit();
			objArray = null;
			objCount = null;
		} catch (err) {}
	}
	self.nextLabelObject = function () {
		try {
			var objArray	= Array();
			var objCount	= 0;
			var cur		= 0;
			for (var i in self.labelObjects) {
				if (self.labelObjects[i]) {
					if (self.labelObjects[i].object.style.backgroundColor == 'yellow') cur = objCount;
					objArray[objCount++] = self.labelObjects[i];
				}
			}
			if (objCount == 0) return;
			var next = (cur + 1) % objCount;
			objArray[next].edit();
			objArray = null;
			objCount = null;
		} catch (err) {}
	}
	self.getRules = function () {

		var rulesXml =	'<?xml version="1.0" encoding="UTF-8" ?>'
			+	'<labelRules>'
			+		'<label>'
			+			'<realWidth units="'	+ self.realWidthUnits			+ '">'+self.realWidth+'</realWidth>'
			+			'<realHeight units="'	+ self.realHeightUnits			+ '">'+self.realHeight+'</realHeight>'
			+			'<pixelsPerInch>'	+ self.pixelsPerInch			+ '</pixelsPerInch>'
			+			'<gridStatus>'		+ self.grid.style.display		+ '</gridStatus>'
			+		'</label>'
			+		'<objects>';

		var rulesXmlText = '';
		var rulesXmlBarcodes = '';
		var rulesXmlImages = '';

		for (var i=0; i<self.labelObjects.length; i++) {
			var obj	= self.labelObjects[i];
			if (obj.type == 'text') {
				rulesXmlText = rulesXmlText
				+		'<object type="text">'
				+			'<text><![CDATA['	+ escape(obj.object.innerHTML)	+ ']]></text>'
				+			'<height>'		+ obj.height			+ '</height>'
				+			'<left>'		+ obj.left			+ '</left>'
				+			'<top>'			+ obj.top			+ '</top>'
				+			'<fixedWidth>'		+ obj.fixedWidth		+ '</fixedWidth>'
				+			'<width>'		+ obj.width			+ '</width>'
				+		'</object>';
			} else if (obj.type == 'barcode') {
				rulesXmlBarcodes = rulesXmlBarcodes
				+		'<object type="barcode">'
				+			'<text><![CDATA['	+ escape(obj.barCodeText)	+ ']]></text>'
				+			'<scale>'		+ obj.barCodeScale		+ '</scale>'
				+			'<height>'		+ obj.barCodeHeight		+ '</height>'
				+			'<left>'		+ obj.left			+ '</left>'
				+			'<top>'			+ obj.top			+ '</top>'
				+			'<fixedWidth>'		+ obj.fixedWidth		+ '</fixedWidth>'
				+			'<width>'		+ obj.width			+ '</width>'
				+		'</object>';
			} else if (obj.type == 'image') {
				rulesXmlImages = rulesXmlImages
				+		'<object type="image">'
				+			'<src><![CDATA['		+ obj.image.src			+ ']]></src>'
				+			'<sourceIdx><![CDATA['		+ obj.sourceIdx			+ ']]></sourceIdx>'
				+			'<eBaySourceIdx><![CDATA['	+ obj.eBaySourceIdx		+ ']]></eBaySourceIdx>'
				+			'<left>'			+ obj.left			+ '</left>'
				+			'<top>'				+ obj.top			+ '</top>'
				+			'<scaleX>'			+ obj.scaleX			+ '</scaleX>'
				+			'<scaleY>'			+ obj.scaleY			+ '</scaleY>'
				+			'<fixedWidth>'			+ obj.fixedWidth		+ '</fixedWidth>'
				+			'<width>'			+ obj.width			+ '</width>'
				+		'</object>';
			}
		}

		/* Images Need To Be At The End Or Not All Objects Will Load */
		rulesXml = rulesXml + rulesXmlText + rulesXmlBarcodes + rulesXmlImages
			+		'</objects>'
			+	'</labelRules>';

		return rulesXml;
	}
	self.exportForPrinting = function () {
		var rules = self.getRules();
		self.editorLink.fetch ('print','rules='+rules,1);
	}
	self.saveLabel = function () {
		var rules = self.getRules();
		self.editorLink.fetch ('savelabel','rules='+rules,1);
	}
}

function labelObject (parent,type,barCodeText,barCodeScale,barCodeHeight) {
	var self		= this;
	self.parent		= parent;
	self.object		= document.createElement('div');
	self.object.className	= 'labelObject';
	self.defaultTitle	= 'Drag or Click to Edit!';
	self.editingTitle	= 'You Are Currently Editing This Object';
	self.image		= document.createElement('img');
	self.barCodeText	= null;
	self.barCodeScale	= 1;
	self.barCodeHeight	= 40;
	self.type		= type;
	self.height		= null;
	self.width		= null;
	self.left		= null;		// Percentage of label width
	self.top		= null;		// Percentage of label height
	self.scaleX		= null;
	self.scaleY		= null;
	self.sourceIdx		= null;
	self.eBayImportIdx	= null;
	self.fixedWidth		= 0;
	self.dragging		= 0;

	self.object.onmousedown	= function (e) {
						if (window.event) var e = window.event; self.parent.editorLink.disableSelect(e);
						self.parent.draggingObject = 1;
						self.mCurX = null; self.mCurY = null;
						self.mOldX = null; self.mOldY = null;
						self.parent.parent.onmousemove = function (e) { if (window.event) var e = window.event; self.onMouseMove(e); }
						self.edit();
					}
	self.object.onmouseup	= function () {
						self.parent.editorLink.enableSelect(); 
						self.left = self.object.offsetLeft/self.parent.label.offsetWidth;
						self.top = self.object.offsetTop/self.parent.label.offsetHeight;
						self.parent.draggingObject = 0;
					}

	self.onMouseMove = function (e) {

		if (typeof(e.clientX) != 'undefined' || typeof(e.clientY) != 'undefined') {
			var mCurX	= e.clientX;
			var mCurY	= e.clientY;
		} else {
			var mCurX	= e.offsetX;
			var mCurY	= e.offsetY;
		}

		if (self.parent.draggingObject == 1) {
			if (	self.mOldX	!= null && self.mOldY	!= null	&&
				mCurX		> 0	&& mCurY	> 0	&&
				self.lOldX	!= null	&& self.lOldY	!= null
			) {
				var newX		= self.lOldX + (mCurX - self.mOldX);
				var newY		= self.lOldY + (mCurY - self.mOldY);
				self.object.style.left	= newX + 'px';
				self.object.style.top	= newY + 'px';
			}
			self.parent.editorLink.contextProtected = 1;
		}

		self.mOldX = mCurX;
		self.mOldY = mCurY;
		if (self.lOldX != null)	{ self.lOldX = newX; }
		else			{ try { self.lOldX = self.object.offsetLeft;	} catch (err) {} }
		if (self.lOldY != null)	{ self.lOldY = newY; }
		else			{ try { self.lOldY = self.object.offsetTop;	} catch (err) {} }
	}
 
	self.refitToLabel = function () {
		self.object.style.top		= Math.round(self.parent.label.offsetHeight*self.top)+'px';
		self.object.style.left		= Math.round(self.parent.label.offsetWidth*self.left)+'px';
		var zoomRatio			= self.parent.label.offsetWidth / (self.parent.realWidth * self.parent.pixelsPerInch)
		if (self.type == 'text') {

			self.object.style.fontSize	= Math.round(self.height * zoomRatio * (self.parent.pixelsPerInch / 100)) + 'px';
			self.object.style.lineHeight	= self.object.style.fontSize;
			self.object.style.height	= self.object.style.fontSize;

			if (self.fixedWidth == 1 && self.parent.realWidthUnits == 'in' && self.width > 0) {
				self.object.style.width		= Math.round(zoomRatio*self.parent.pixelsPerInch*self.width)+'px';
				self.object.style.overflow	= 'hidden';
			} else if (self.fixedWidth == 1 && self.parent.realWidthUnits == 'cm' && self.width > 0) {
				zoomRatio			= self.parent.label.offsetWidth / (self.parent.realWidth * self.parent.pixelsPerCm);
				self.object.style.width		= Math.round(zoomRatio*self.parent.pixelsPerCm*self.width)+'px';
				self.object.style.overflow	= 'hidden';
			} else {
				self.object.style.width		= null;
			}
		} else if (self.type == 'barcode') {
			try { self.object.removeChild(self.image); } catch (err) {}
			var oldSrc		= self.image.src;
			self.image		= null;
			self.image		= document.createElement('img');
			var workAround					= self.barCodeText;
			if (workAround.substr(0,8) == '{{NUMBER')	workAround = '123456789012';
			self.image.src		= 'images/barcode.png.php'			+
						  '?text='	+ workAround			+
						  '&scale='	+ escape(self.barCodeScale)	+
						  '&height='	+ escape(self.barCodeHeight)
			self.object.appendChild(self.image);

			// Fit the barcode appropriately at the assumed pixels per inch
			if (oldSrc != self.image.src)	self.image.onload = self.fitImage;
			else				self.fitImage();

			if (self.fixedWidth == 1 && self.parent.realWidthUnits == 'in' && self.width > 0) {
				self.object.style.width		= Math.round(zoomRatio*self.parent.pixelsPerInch*self.width)+'px';
				self.object.style.overflow	= 'hidden';
			} else if (self.fixedWidth == 1 && self.parent.realWidthUnits == 'cm' && self.width > 0) {
				zoomRatio			= self.parent.label.offsetWidth / (self.parent.realWidth * self.parent.pixelsPerCm);
				self.object.style.width		= Math.round(zoomRatio*self.parent.pixelsPerCm*self.width)+'px';
				self.object.style.overflow	= 'hidden';
			} else {
				self.object.style.width		= null;
			}

		} else if (self.type == 'image') {

			try { self.object.removeChild(self.image); } catch (err) {}
			var oldSrc			= self.image.src;
			self.image			= null;
			self.image			= document.createElement('img');
			self.image.src			= oldSrc;

			self.object.appendChild(self.image);

			// Fit the image appropriately at the assumed pixels per inch
			self.fitImage();

			if (self.fixedWidth == 1 && self.parent.realWidthUnits == 'in' && self.width > 0) {
				self.object.style.width		= Math.round(zoomRatio*self.parent.pixelsPerInch*self.width)+'px';
				self.object.style.overflow	= 'hidden';
			} else if (self.fixedWidth == 1 && self.parent.realWidthUnits == 'cm' && self.width > 0) {
				zoomRatio			= self.parent.label.offsetWidth / (self.parent.realWidth * self.parent.pixelsPerCm);
				self.object.style.width		= Math.round(zoomRatio*self.parent.pixelsPerCm*self.width)+'px';
				self.object.style.overflow	= 'hidden';
			} else {
				self.object.style.width		= null;
			}
		}
	}
	self.fitImage = function () {
		var imageXinInches	= (parseInt(self.image.offsetWidth)/self.parent.pixelsPerInch);
		var imageYinInches	= (parseInt(self.image.offsetHeight)/self.parent.pixelsPerInch);

		var imageAspectRatio	= imageXinInches / imageYinInches;

		var labelWidthinInches	= (self.parent.realWidth);	if (self.parent.realWidthUnits == 'cm') labelWidthinInches = labelWidthinInches/2.54;
		var labelHeightinInches	= (self.parent.realHeight); 	if (self.parent.realHeightUnits == 'cm') labelHeightinInches = labelHeightinInches/2.54;

		var adjustedWidth	= ((imageXinInches / labelWidthinInches) * parseInt(self.parent.label.offsetWidth));
		var adjustedHeight	= ((imageYinInches / labelHeightinInches) * parseInt(self.parent.label.offsetHeight));

		var adjustedWidthX	= adjustedWidth;
		var adjustedHeightX	= adjustedHeight;

		var adjustedWidthY	= adjustedWidth;
		var adjustedHeightY	= adjustedHeight;

		if (self.type == 'image') {

			if (self.scaleX > 0) {
				adjustedWidthX	= Math.round(self.scaleX * self.parent.label.offsetWidth);
				adjustedHeightX	= adjustedWidthX / imageAspectRatio;
			}
			if (self.scaleY > 0) {
				adjustedHeightY	= Math.round(self.scaleY * self.parent.label.offsetHeight);
				adjustedWidthY	= adjustedHeightY * imageAspectRatio;
			}

			if (self.scaleX == 0) {
				adjustedHeight	= adjustedHeightY;
				adjustedWidth	= adjustedWidthY;
			} else {
				if (self.scaleY == 0) {
					adjustedHeight	= adjustedHeightX;
					adjustedWidth	= adjustedWidthX;
				} else {
					if (adjustedHeightY < adjustedHeightX) {
						adjustedHeight	= adjustedHeightY;
						adjustedWidth	= adjustedWidthY;
					} else {
						adjustedHeight	= adjustedHeightX;
						adjustedWidth	= adjustedWidthX;
					}
				}
			}

			if (adjustedWidth > self.parent.label.offsetWidth) {
				adjustedWidth	= self.parent.label.offsetWidth;
				adjustedHeight	= Math.round (adjustedWidth / imageAspectRatio);
				self.scaleY	= 0;
				self.scaleX	= 1.0;
			}
			if (adjustedHeight > self.parent.label.offsetHeight) {
				adjustedHeight	= self.parent.label.offsetHeight;
				adjustedWidth	= Math.round (adjustedHeight * imageAspectRatio);
				self.scaleY	= 1.0;
				self.scaleX	= 0;
			}
			self.parent.imageManager.syncUp();
		}

		self.image.style.width	= adjustedWidth + 'px';
		self.image.style.height	= adjustedHeight+ 'px';

	}
	self.edit = function () {
		if (self.type == 'text') {
			self.parent.textManager.object		= self;
			self.parent.textManager.syncUp();
			self.parent.showTextManager();
		} else if (self.type == 'barcode') {
			self.parent.barCodeManager.object	= self;
			self.parent.barCodeManager.syncUp();
			self.parent.showBarCodeManager();
		} else if (self.type == 'image') {
			self.parent.imageManager.object		= self;
			self.parent.imageManager.syncUp();
			self.parent.showImageManager();
		}
		self.parent.editorLink.contextProtected		= 1;
		self.object.title				= self.editingTitle;
		self.object.style.backgroundColor		= 'yellow';
	}
	self.unedit = function () {
		self.object.style.backgroundColor		= '';
		self.object.title				= self.defaultTitle;
		if (self.type == 'barcode') {
			self.object.title = '"' + self.barCodeText + '" :: ' + self.object.title;
		} else if (self.type == 'image' && self.eBaySourceIdx != null) {
			self.object.title = '"'+self.sourceIdx+'" :: ' + self.object.title;
		}
	}
	self.clone = function () {
		if (self.type == 'text') {
			var tmp			= self.parent.addLabelObject('text',0);
			tmp.object.innerHTML	= self.object.innerHTML;
			tmp.height		= self.height;
		} else if (self.type == 'barcode') {
			var tmp = self.parent.addLabelObject('barcode', 0, self.barCodeText, self.barCodeScale, self.barCodeHeight);
		} else if (self.type == 'image') {
			var tmp = self.parent.addLabelObject('image', 0);
			tmp.sourceIdx		= self.sourceIdx;
			tmp.image.src		= self.image.src;
		}

		tmp.left		= parseFloat(self.left) + 0.02;
		tmp.top			= parseFloat(self.top) + 0.02;
		tmp.fixedWidth		= self.fixedWidth;
		tmp.width		= self.width;

		tmp.refitToLabel();
		tmp.edit();
	}

	self.height			= "10";
	self.left			= "0.10";
	self.top			= "0.10";

	if (self.type == 'text') {
		self.object.innerHTML	= "Edit This Text";
	} else if (self.type == 'barcode') {
		if (barCodeText == null)	barCodeText	= 'Edit This Text';
		if (barCodeScale == null)	barCodeScale	= 1;
		if (barCodeHeight == null)	barCodeHeight	= 40;
		self.barCodeText	= barCodeText;
		self.barCodeScale	= barCodeScale;
		self.barCodeHeight	= barCodeHeight;
	} else if (self.type == 'image') {
		self.defaultImage	= 'images/image.library.php';
		self.sourceIdx		= null;
		self.eBaySourceIdx	= null;
		self.image.src		= self.defaultImage;
		self.image.onload	= self.refitToLabel;
	}

	self.refitToLabel();
}
