/*
	Clipboard functionality
	Dependencies:
		YUI libraries
*/

/* Constants corresponding to these must be defined identically in the clipboard constants file */
var clipboard_link_text_add = 'Add to Clipboard';
var clipboard_link_text_remove = 'Remove from Clipboard';
var clipboard_link_title_add = 'Add this listing to your clipboard';
var clipboard_link_title_remove = 'Remove this listing from your clipboard';
var clipboard_icon_add = '/images/icon_clipboard.gif';
var clipboard_icon_remove = '/images/icon_clipboard_remove.gif';

function clipboard_do(command, section, object_id, f) {
	var cb = {
		success: f,
		failure: function(obj) {
			alert('Error performing clipboard action');
		}
	};
	YAHOO.util.Connect.asyncRequest('GET',
										'/ajax/clipboard.cfm?cbaction='
										+ command + '/'
										+ section + '/'
										+ object_id,
										cb,
										null);
}

function clipboard_do_listing(command, section, object_id, container_type, container_id) {
	command = command.toLowerCase();
	clipboard_do(command, section, object_id,
		function(obj) {
			try {
				var root = obj.responseXML.documentElement;
				var flag = root.getElementsByTagName('flag')[0].firstChild.nodeValue.toLowerCase();
				var count = parseInt(root.getElementsByTagName('count')[0].firstChild.nodeValue);
				var total = parseInt(root.getElementsByTagName('total')[0].firstChild.nodeValue);
				switch(command) {
					case 'add':
						if(flag == 'added') {
							clipboard_update_listing(section, object_id, container_type, container_id, true);
						}
						break;
					case 'remove':
						if(flag == 'removed') {
							clipboard_update_listing(section, object_id, container_type, container_id, false);
						}
						break;
				}
				
				clipboard_update_manager(flag, section, count, total);
			}
			catch(e) {
				alert('Error performing clipboard action');
			}
		}
	);
}

function clipboard_update_listing(section, object_id, container_type, container_id, added) {
	if(container_id == '') {
		return;
	}
	/* Toggle clipboard stylization */
	if(added) {
		YAHOO.util.Dom.addClass(container_id, container_type + 'InClipboard');
	}
	else {
		YAHOO.util.Dom.removeClass(container_id, container_type + 'InClipboard');
	}
	/* Update clipboard link */
	YAHOO.util.Dom.getElementsByClassName(container_type + 'ClipboardLink', 'a', container_id,
		function(a) {
			a.href = "javascript:clipboard_do_listing('"
						+ (added ? 'remove' : 'add') + "','"
						+ section + "','"
						+ object_id + "','"
						+ container_type + "','"
						+ container_id + "');";
			
			var icons = a.getElementsByTagName('img');
			if(icons.length > 0) {
				/* Icon link */
				icons[0].src = (added ? clipboard_icon_remove : clipboard_icon_add);
				icons[0].alt =
					icons[0].title = (added ? clipboard_link_title_remove : clipboard_link_title_add);
			}
			else {
				/* Textual link */
				a.innerHTML = (added ? clipboard_link_text_remove : clipboard_link_text_add);
				a.title = (added ? clipboard_link_title_remove : clipboard_link_title_add);
			}
		}
	);
}

function clipboard_update_manager(flag, section, count, total) {
	/* changed to display total 03/26/08 */
	YAHOO.util.Dom.getElementsByClassName('count', 'span', 'clipboardManager',
		function(s) {
			s.innerHTML = total;
		}
	);
	
	/* toggle display */
	YAHOO.util.Dom.getElementsByClassName('nonempty', '', 'clipboardManager',
		function(e) {
			YAHOO.util.Dom.setStyle(e, 'display', (total > 0 ? 'block' : 'none'));
		}
	);
	YAHOO.util.Dom.getElementsByClassName('empty', '', 'clipboardManager',
		function(e) {
			YAHOO.util.Dom.setStyle(e, 'display', (total > 0 ? 'none' : 'block'));
		}
	);
}