ckdd.extend(ckCommonEditObj,subscriptionsObj);
function subscriptionsObj(uid) {
	subscriptionsObj.baseConstructor.call(this,"subscription");
	this.fwDefaultWidth = 450;
	
	this.aSubscriptions = Array(); //will store names/descriptions so they can be accessed when showing results
	
	this.viewContainerID = this.varName + ".form";
	
	var actionURLPrefix = "/ckcommon/subscriptions/ajax/"
	
	this.saveURL = actionURLPrefix + "subscriptions_save.asp";
	this.listURL = actionURLPrefix + "subscriptions_list.asp";
	this.confirmURL = actionURLPrefix + "subscription_confirm.asp";
	
	return this;
}

/*-----------------------------------------------------------
confirm
-----------------------------------------------------------*/
subscriptionsObj.prototype.confirm = function(confirmCode) {
	var oDiv;
	oDiv = document.createElement("DIV");//create separate window so error or success message displays within it instead of on main screen
	oDiv.style.width="400px";
	oDiv.id="floatingWindow.confirm"
	document.body.appendChild(oDiv);
	oFloatingWindow.addContentType("confirmationWait","Confirming Subscription",oDiv);
	oFloatingWindow.show("confirmationWait");
	oFloatingWindow.showWait();
	
	var sFormData = "confirmCode=" + confirmCode;
	(new ckAjaxObj()).postFormData(this.confirmURL,sFormData,this.ajaxReturnHandler_confirm,this);
	
}
subscriptionsObj.prototype.ajaxReturnHandler_confirm = function(oAjax) {
	if (oAjax) {
		var oResponse=oAjax.responseObj;
		oFloatingWindow.showSuccess("Thank you.  Your subscription to '" + oResponse.payload.subscriptionName + "' has been confirmed");
	}
}

/*-----------------------------------------------------------
list
-----------------------------------------------------------*/
subscriptionsObj.prototype.list = function() {
	subscriptionsObj.superClass.list.call(this,"");
}
subscriptionsObj.prototype.ajaxReturnHandler_list = function(oAjax) {
	var oResponse;
	if (oResponse = oAjax.responseObj) {
		if ((oDiv = document.getElementById("subscription.list")) && (oTemplate=document.getElementById("subscription.list.template"))){
			oDiv.innerHTML = "";
			if (oResponse.payload.aSubscriptions.length==0) {
				oDiv.innerHTML = '<div class="warningDisplay">There are no subscriptions to choose from at this time</div>';
				if (oEl = document.getElementById("subscribeButton")) {
					oEl.disabled = true;
					oEl.className = "button disabled";
				}
				if (oEl = document.getElementById("unsubscribeButton")) {
					oEl.disabled = true;
					oEl.className = "button disabled";
				}
			} else {
				var oObj, oEl;
				var oDHTML = new ckDHTMLObj();
				for (var index in oResponse.payload.aSubscriptions) {
					oObj = oResponse.payload.aSubscriptions[index];
					
					var oNewResult = oTemplate.cloneNode(true);
					oNewResult.setAttribute("id","sl." + oObj.subscriptionID)
					oNewResult.setAttribute("subscriptionID",oObj.subscriptionID)
					
					if (oEl = oDHTML.seekWithin(oNewResult,"INPUT","slt.checkbox")) {
						oEl.value = oObj.subscriptionID;
					}
					if (oEl = oDHTML.seekWithin(oNewResult,"B","slt.name")) oEl.innerHTML = oObj.subscriptionName;
					if (oEl = oDHTML.seekWithin(oNewResult,"TD","slt.description")) oEl.innerHTML = oObj.subscriptionDescription;
					
					oNewResult.style.display="block";	
					oDiv.appendChild(oNewResult);			
				}
			}
			oDiv.style.display="block";
		}
		
	}
}

/*-----------------------------------------------------------
subscribe/unsubscribe
-----------------------------------------------------------*/
subscriptionsObj.prototype.subscribe = function() { this.save(true); }
subscriptionsObj.prototype.unsubscribe = function() { this.save(false); }
subscriptionsObj.prototype.save = function(bSubscribe) {
	oError.autoValidate("subscription.field");
	if (!oError.anyErrors()) {
		var oEl = document.getElementById("subscription.actionCode")
		if (oEl) oEl.value=(bSubscribe ? "subscribe" : "unsubscribe");
		
		(new ckAjaxObj()).postFormDataByName(this.saveURL,"subscription.field",this.ajaxReturnHandler_save);
		oFloatingWindow.showWait();
	}
	
}


subscriptionsObj.prototype.ajaxReturnHandler_save = function(oAjax) {
	var oResponse, oDiv, oTemplate;
	if ((oResponse = oAjax.responseObj) && (oDiv = document.getElementById("subscription.list"))) {
		var oObj, oEl;
		var oDHTML = new ckDHTMLObj();
		var aResultIDs = Array();
		
		for (var index in oResponse.payload.aSubscriptions) {
			oObj = oResponse.payload.aSubscriptions[index];
			if (oListResult = oDHTML.seekWithin(oDiv,"DIV","sl." + oObj.subscriptionID)) {
				aResultIDs[oObj.subscriptionID] = true;
				
				if (oEl = oDHTML.seekWithin(oListResult,"INPUT","slt.checkbox")) oEl.style.display="none";
				if (oEl = oDHTML.seekWithin(oListResult,"IMG","slt.resultIcon")) {
					oEl.src="/_ckcommon/images/icons/results/" + (oObj.error ? "fail.gif" : "success.gif");
					oEl.alt=(oObj.error ? "Failed" : "Success");
					oEl.title = oEl.alt;
					oEl.style.display="block";
				}
				if (oEl = oDHTML.seekWithin(oListResult,"TR","slt.instructRow")) oEl.style.display="";
				if (oEl = oDHTML.seekWithin(oListResult,"TD","slt.instructText")) {
					oEl.innerHTML = (oObj.error ? oObj.error : oObj.instruct);
					oEl.style.color=(oObj.error ? "#CC0000" : "#336633");
				}
			}	
		}

		var aEl; 		//hide any that were not acted on
		if (aEl = document.getElementsByName("subscription.list.template")) {
			for (index=0; index < aEl.length;index++) if (!aResultIDs[aEl[index].getAttribute("subscriptionID")]) aEl[index].style.display="none";
		}
		if (oEl = document.getElementById("subscription.form")) oEl.style.display="none";
		if (oEl = document.getElementById("subscription.thankyou")) oEl.style.display="block";
	}
	oFloatingWindow.hide();
}