/**
 * $Id: newsletter.js,v 1.9 2010/05/03 20:48:50 cvs Exp $
 *
 * @author Frederick J Richart
 * @copyright Copyright © 2006-2009, Useful Media Planet, LLC, All rights reserved.
 */
function NewsletterEngine() {
	Utilities.onload(this);
}
NewsletterEngine.prototype = {
	onPageLoad : function() {
		// Nothing yet.
	},
	ajaxSetup : function(requestURL) {
		this.requestURL = requestURL;
		this.xdomAjax = new XdomAjax(this.docElement, "VerifiedControl", requestURL);
		this.xdomAjax.requestor = this;
		this.xdomAjax.xdomExtension = 'newsletter';
	},
	/**
	 * Enable the newsletter item with the numeric id specified.  The caller must ensure
	 * that the xdom blocker element names use this ID.
	 */
	Enable : function(id) {
		this.xdomAjax.sendRequest(null, this.getParams('enable_item', id))
	},
	EnableResponse : function(id) {
		var blocker = xdom_getElementById("xdom_blocker_element" + id),
			enableLink = xdom_getElementById("enable_newsletterLink" + id),
			disableLink = xdom_getElementById("disable_newsletterLink" + id);
		if (blocker) blocker.style.display = "none";
		if (enableLink) enableLink.style.display = "none";
		if (disableLink) disableLink.style.display = "inline";
	},
	Disable : function(id) {
		this.xdomAjax.sendRequest(null, this.getParams('disable_item', id));
	},
	DisableResponse : function(id) {
		var wb, blockedID = "xdom_blocked_element" + id, blockerID = "xdom_blocker_element" + id,
			blocked = xdom_getElementById(blockedID),
			blocker = xdom_getElementById(blockerID),
			enableLink = xdom_getElementById("enable_newsletterLink" + id),
			disableLink = xdom_getElementById("disable_newsletterLink" + id);
		if (!blocked || !blocker) return; // shouldn't ever happen
		if (enableLink) enableLink.style.display = "inline";
		if (disableLink) disableLink.style.display = "none";
		wb = new WarningBlocker(blockerID, blockedID);
		wb.onPageLoad();
	},
	confirmDel : function(op, name) {
		return (confirm('Do you really want to ' + op + ' the newsletter entry from "' + name + '".  This will permanently remove the entry from the database and this cannot be undone.'));
	},
	Delete : function(id, name) {
		if (this.confirmDel('delete', name)) {
			this.xdomAjax.sendRequest(null, this.getParams('delete_item', id));
		}
	},
	DeleteResponse : function(id) {
		var blocked = xdom_getElementById("xdom_blocked_element" + id), p;
		if (!blocked) return;
		for(p = blocked.parentNode; p && p.className != "GenericEditFrame"; p = p.parentNode) ;
		if (p && p.className == "GenericEditFrame") p.parentNode.removeChild(p);
		Utilities.onPageUpdate();
	},
	deleteRecipient : function (id, email, name, elid) {
		var t = this, m = 'Do you really want to delete the recipient with e-mail address "' + email + '"';
		t.deleteRecipientElementID = elid;
		if (name) m += ' and display name "' + name + '"';
		m += "?  This will permanently remove the recipient from the database and this cannot be undone.";
		if (confirm(m)) {
			this.xdomAjax.sendRequest(null, this.getParams('delete_recipient', id));
		}
	},
	deleteRecipientResponse : function() {
		var t = this, e;
		if (e = xdom_getElementById(t.deleteRecipientElementID)) {
			e.parentNode.removeChild(e);
			Utilities.onPageUpdate();
		}
	},
	clickHTML : function(e, id) {
		this.xdomAjax.sendRequest(null, this.getParams('click_html', id, e.checked ? "1" : "0"));
	},
	clickHTMLResponse : function(id, parm) {
		var c = xdom_getElementById('html' + id);
		if (c) {
			c.checked = (parm == "1");
		}		
	},
	clickActive : function(e, id) {
		this.xdomAjax.sendRequest(null, this.getParams('click_active', id, e.checked ? "1" : "0"));
	},
	clickActiveResponse : function(id, parm) {
		var c = xdom_getElementById('active' + id);
		if (c) {
			c.checked = (parm == "1");
		}				
	},
	convertHTML : function(html_id, text_id) {
		var t = this, html, s = '';
		html = t.html_element = xdom_getElementById(html_id);
		t.text_element = xdom_getElementById(text_id);
		try {s = tinyMCE.activeEditor.getContent()} catch(e){}
		this.xdomAjax.sendRequest(null, this.getParams('convert_html', s ? s : html.value))
	},
	styleChange : function(e) {
		var css = tinyMCECustom.css, ste = tinyMCECustom.styleElement, d = tinyMCECustom.dom;
		if (!css) css = "";
		css += e.value;
		ste.innerHTML = css;
		if (tinymce.isIE) {
			ste.onload = function() {
				d.doc.recalc();
				ste.onload = null;
			};
		}		
	},
	convertHTMLResponse : function(response) {
		var t = this, e = xdom_GetFirstElementWithTagName(response, 'text');
		t.text_element.value = xdom_GetData(e);
	},
	getParams : function(controlID, controlValue, parameter) {
		if (!parameter) parameter = '';
		return 'callback=NewsletterVerifiedControlCallback' +
			"&controlID=" + controlID + "&controlValue=" + encodeURIComponent(controlValue) +
			"&parameter=" + parameter; 
	},
	serverResponse : function(xdomAjax, response) {
		var t = this, e, ok = xdomAjax.err == "0", stat, parm;
		if (!ok) return;
		e = xdom_GetFirstElementWithTagName(response, 'status');
		if (e) stat = e.getAttribute("value")
		e = xdom_GetFirstElementWithTagName(response, 'parameter');
		if (e) parm = e.getAttribute("value")
		switch(xdomAjax.errmsg) {
			case 'enable_item':
				t.EnableResponse(stat);
				break;
			case 'disable_item':
				t.DisableResponse(stat);
				break;
			case 'delete_item':
				t.DeleteResponse(stat);
				break;
			case 'convert_html':
				t.convertHTMLResponse(response);
				break;
			case 'delete_recipient':
				t.deleteRecipientResponse();
				break;
			case 'click_html':
				t.clickHTMLResponse(stat, parm);
				break;
			case 'click_active':
				t.clickActiveResponse(stat, parm);
				break;
			case 'existing_email':
				t.handleExistingEmail(stat, parm);
				break;
			case 'popup_send_request':
				t.handleSendRequest(stat, parm);
				break;
			default:
		}
	},
	delImgCheck : function(e) {
		if (!e) return;
		if (e.checked) {
			if (!confirm('Are you sure you want to delete the image?  This will permanently remove the image and this action cannot be reversed.')) {
				e.checked = false;
				return false;
			}
		}
		return true;
	},
	handleExistingEmail : function(stat, parm) {
		var t = this, c, disp='', msg = '', nopass = 'none';
		c = xdom_getElementById('existing_email');
		if (c) c.value = stat;
		t.email = stat;
		switch(parm) {
		case 'send_reset':
			disp = msg = 'none';
			nopass = '';
			// Fall through
		case 'get_pass':
			c = xdom_getElementById('newsletter_message');
			c.style.display = msg;
			c = xdom_getElementById('newsletter_message_nopass');
			c.style.display = nopass;
			c = xdom_getElementById('newsletter_password_row');
			c.style.display = disp;
			c = xdom_getElementById('newsletter_button_row');
			c.style.display = disp;
			c = xdom_getElementById('newsletter_email');
			if (c) c.value = stat;
			GeneralEvent.Expand(this, 'popup_get_password')
			break;
		case 'get_login':
			c = xdom_getElementById('_nl_popup_email');
			if (c) c.value = stat;
			GeneralEvent.Expand(this, 'popup_get_login')
			break;
		}
	},
	PopupSendReset : function() {
		var t = this, c;
		t.xdomAjax.sendRequest(null, t.getParams('popup_send_request', t.email));
	},
	handleSendRequest : function(stat, parm) {
		alert(parm);
		GeneralEvent.Close(this, 'popup_get_password');
	},
	NullSubmit : function(e) {
		var x = e;
	},
	/**
	 * Callback functions
	 */
	initialize : function(xdomajax) {
		
	},
	sendRequest : function(post) {
		return "";
	}
}
Newsletter = new NewsletterEngine();