 Coupon	= function(obj) {

 this.toString   = function() { return "[object Coupon]"; };

 this.data	= {
		uid		: "",
		code	: "",
		type	: "",
		discount: "", // e.g. '=$50' , '-$50' , '-50%'
		applyto	: {
			eventno	: "", // e.g. '=>1' , '>2' , etc
			products : [{
				name : "",
				qty  : ""
			}]
		},
		desc	: ""
 };

 if (obj) { this.data = obj; }

 this.saveurl	= "/admin/cgi-bin/savecoupon";
 this.getsavevariablestr = function() { return ""; };

 this.tagName   = "Coupon";
 this.className = "";

 this.toHTML	= function(div) {
	this.style	= "view";
	var targdiv	= div.getElementsByTagName("Content")[0];
	if (!targdiv) { return 0; }
	targdiv.innerHTML	= "";
	targdiv.dataObj = this;
	this.displayDiv	= targdiv;
	var ctab = document.createElement("TABLE");
	var row	= ctab.insertRow(-1);
	var codeCell	= row.insertCell(-1);
	codeCell.className = "label";
//	var typeCell	= row.insertCell(-1);
//	var discCell= row.insertCell(-1);
	var descCell	= row.insertCell(-1);
	codeCell.innerHTML	= this.data.code;
//	typeCell.innerHTML	= this.data.type;
//	discCell.innerHTML	= this.data.discount;
	descCell.innerHTML	= this.data.desc;
	targdiv.appendChild(ctab);
	return this;
 };

 this.toEDIT	= function(div) {
	this.style	= "edit";
	var targdiv	= div.getElementsByTagName("Content")[0];
	if (!targdiv) { return 0; }
	targdiv.innerHTML	= "";
	targdiv.dataObj = this;
	this.displayDiv	= targdiv;
	var infodiv	= document.createElement("DIV");
	infodiv.dataobj	= this;
	infodiv.className	= "infodiv";
	targdiv.appendChild(infodiv);
	var edittable	= this.toEDITtextblock(infodiv);
	this.toEDITapplytoproducts(edittable);
	return this;
 };

 this.toEDITtextblock	= function(targdiv) {
	var datapatharr	= [
		{
		 Path: "code",
		 Label: "Code"
		},
		{
		 Path: "type",
		 Label: "Type"
		},
		{
		 Path: "discount",
		 Label: "Discount"
		},
		{
		 Path: "applyto.eventno",
		 Label: "Apply to Events",
		 Default: ">=1"
		},
		{
		 Path: "applyto.qty",
		 Label: "Minimum Qty",
		 Default: "1"
		},
		{
		 Path: "desc",
		 Label: "Description"
		}
	];
	targdiv.dataobj	= this;
	var edittable	= PageData.admin.createEditTable(this,datapatharr);
	targdiv.appendChild(edittable);
	PageData.admin.applyEditTags(targdiv);
	return edittable;
 };

 this.toEDITapplytoproducts	= function(edittable) { // uses the same table
	/*
	applyto	: {
		products : [{
			name : ""
		}]
	}
	*/
	var datapatharr = [];
	if (typeof(this.data.applyto) == "undefined") { this.data.applyto = {}; }
	if (typeof(this.data.applyto.products) == "undefined") { this.data.applyto.products = [{"name":""}]; }
	for (var pIdx = 0; pIdx < this.data.applyto.products.length; pIdx++) {
		var obj	= {};
		obj.Default	= "";
		obj.Path	= "applyto.products[" + pIdx + "].name";
		datapatharr.push(obj);
	}
	var args	= {
		edittable	: edittable,
		dataobj	: this,
		Label	: "Apply To Products",
		datapatharr : datapatharr,
		refresh	: function(edtab) { 
			this.dataobj.data.applyto.products.push({"name":""});
			this.dataobj.toEDITapplytoproducts(edtab); 
		}
	};
	var edittablebody = PageData.admin.addArrayToEditTable(args);
	edittablebody.dataobj	= this;
	PageData.admin.applyEditTags(edittablebody);
 };

 this.toEDITapplytoproductsALT	= function(targdiv) { // uses a separate DIV and table
	/*
	applyto	: {
		eventno	: "", // e.g. '=>1' , '>2' , etc
		products : [{
			name : ""
		}]
	}
	*/
	targdiv.innerHTML	= "";
	targdiv.dataobj	= this;
	var commentaddimg		= document.createElement("ADDIMG");
	var commentlabel		= document.createElement("LABEL");
	commentlabel.className	= "label";
	commentlabel.innerHTML	= "Apply to Products";
//	commentaddimg.src	= "/Icons/icon_addprofile_22x16.gif";
	commentaddimg.dataobj	= this;
	commentaddimg.targdiv	= targdiv;
	commentaddimg.className	= 'clickable';
	commentaddimg.onclick	= function() {
		if (!this.dataobj.data.applyto.products) { this.dataobj.data.applyto.products = []; }
		this.dataobj.data.applyto.products.push({"name":""});
		this.dataobj.updateUpdatesEDIT(this.targdiv);
	};
	commentlabel.appendChild(commentaddimg);
	targdiv.appendChild(commentlabel);
	var datapatharr	= [];
	for (var cIdx = 0; cIdx < this.data.Updates.length; cIdx++) {
		var obj	= {};
		obj.Label	= "";
		obj.Path	= "Updates[" + cIdx + "].Text";
		datapatharr.push(obj);
	}
	targdiv.appendChild(PageData.admin.createEditTable(this,datapatharr));
	PageData.admin.applyEditTags(targdiv);
 };

 return this;
 };

