/**
 * commonspotLocal.pageList: package of methods for managing (spry) page listings, in dlgs and/or My CommonSpot
 */
commonspotLocal = window.commonspotLocal || {};

commonspotLocal.pageList = {};

// state etc constants
commonspotLocal.pageList.STATE_ACTIVE = 0;
commonspotLocal.pageList.MY_WORK_IN_PROGRESS = 1;
commonspotLocal.pageList.OTHERS_WORK_IN_PROGRESS = 1;
commonspotLocal.pageList.OTHERS_APPROVAL_NEEDED = 1;
commonspotLocal.pageList.MY_APPROVAL_NEEDED = 1;
commonspotLocal.pageList.SCHEDULED = 1;
commonspotLocal.pageList.NO_ICONPATH = '';

// Menu constants.
commonspotLocal.pageList.SELECT_DATE_MENU_TOP = 98;
commonspotLocal.pageList.SELECT_DATE_MENU_LEFT = 15;

// Timer to delay showing Image-preview popup.
var timeToShowImagePreviewPopup;

// Arrays to hold permissions associated with pages. Items are objects:
// key (pageID), value(comma-separated permissions list).
commonspotLocal.pageList.arrEditPerms = new Array();
commonspotLocal.pageList.arrMetadataAndSecurityPerms = new Array();
commonspotLocal.pageList.arrMoreActionsPerms = new Array();
commonspotLocal.pageList.arrImageMoreActionsPerms = new Array();

// Context menus for Actions column icons.
commonspotLocal.pageList.editPagePopUpMenu;									// Menu object for Edit Page popup
commonspotLocal.pageList.metadataAndSecurityPopUpMenu;						// Menu object for Metadata & Security popup
commonspotLocal.pageList.moreActionsPopUpMenu;								// Menu object for More Actions popup

/**
 * Function to process Spry dataset:
 **/
commonspotLocal.pageList.defaultDataPreprocessor = function(row)
{
	row.isuploadeddoc	= 0;
	row.stateHTML = commonspotLocal.pageList.formatStateColumn(row);
	row.actionHTML	= commonspotLocal.pageList.formatActionColumn(row);
	row.dateHTML = commonspot.util.formatCSDate(row.date);
	row.subsiteHTML = commonspotLocal.pageList.formatSubsiteColumn(row.subsiteurl);
	row.docTypeHTML = commonspotLocal.pageList.formatDocTypeColumn(row);
	row.openPageLinkHTML	= commonspotLocal.pageList.formatOpenPageLink(row);
	row.descriptionHTML = row.description.unescapeHTML();
	row.urlHTML = commonspotLocal.pageList.formatURLColumn(row);
	row.fileNameHTML = commonspotLocal.pageList.formatFileNameColumn(row.filename);
	row.previewImageLinkHTML 	= commonspotLocal.pageList.formatPreviewImageLink(row);
	row.filesizeHTML = commonspot.util.getFileSizeHtml(row.filesize);

	if (row.title)
		row.title = row.title.unescapeHTML();
	else
		row.title = 'No Title';
	return row;
};

/**
 * Function to create HTML for State column:
 **/
commonspotLocal.pageList.formatStateColumn = function(row)
{
	var html = '';
	var pageActivationStatus = row.pageactivationstatus;
	var myWip = row.mywip;
	var othersWip = row.otherswip;
	var othersApprovalNeeded = row.othersapprovalneeded;
	var myApprovalNeeded	= row.myapprovalneeded;
	var scheduled = row.scheduled;

	// Display Page-Activation-Status icon:
	if( row.isuploadeddoc == 0 )
	{
		if( row.pagetype == top.commonspot.constants.PAGETYPE_NORMAL || row.pagetype == top.commonspot.constants.PAGETYPE_USER_TEMPLATE )
		{
			if( pageActivationStatus == commonspotLocal.pageList.STATE_ACTIVE)
				html += '<span class="ico_check stateMontageIcon" alt="Active" title="Active">&nbsp;</span>';
			else
				html += '<span class="ico_check_inactive stateMontageIcon" alt="Inactive" title="Inactive">&nbsp;</span>';
		}
		// Optionally display My-Work-In-Progress icon:
		if( myWip == commonspotLocal.pageList.MY_WORK_IN_PROGRESS)
			html += '<span class="ico_awip stateMontageIcon" alt="My work in progress" title="My work in progress">&nbsp;</span>';

		// Optionally display Other's-Work-In-Progress icon:
		if( othersWip == commonspotLocal.pageList.OTHERS_WORK_IN_PROGRESS ||
	   		othersApprovalNeeded == commonspotLocal.pageList.OTHERS_APPROVAL_NEEDED)
			html += '<span class="ico_wip stateMontageIcon" alt="Others work in progress or approval needed" title="Others work in progress or approval needed">&nbsp;</span>';

		// Optionally display My-Approval-Needed icon:
		if( myApprovalNeeded == commonspotLocal.pageList.MY_APPROVAL_NEEDED)
			html += '<span class="ico_pa stateMontageIcon" alt="My approval needed" title="My approval needed">&nbsp;</span>';
	}

	// Optionally display Scheduled icon:
	if(scheduled == commonspotLocal.pageList.SCHEDULED)
		html += '<span class="ico_date stateMontageIcon" alt="Scheduled" title="Scheduled">&nbsp;</span>';

	return html;
};

/**
 * Function to create HTML for Actions column:
 **/
commonspotLocal.pageList.formatActionColumn = function(row)
{
	var html = '';
	var pageURL	= row.subsiteurl + row.filename;
	var isUploadedDoc = (row.isuploadeddoc != top.commonspot.constants.NOT_UPLOADED_DOC);

	// Display "Edit Page" icon if NOT Registered URLs and Uploaded Documents.
	if (row.pagetype != top.commonspot.constants.PAGETYPE_REGISTERED_URL &&
		!(row.pagetype == top.commonspot.constants.PAGETYPE_NORMAL && isUploadedDoc) &&
		row.pagetype != top.commonspot.constants.PAGETYPE_PAGE_SET)
	{
		html += '<img src="/commonspot/dashboard/icons/edit-down.png" alt="Edit" title="Work on the Page" class="actionIcon" ' +
				  'onclick="commonspotLocal.pageList.invokeEditPageMenu(this, event, \'' + pageURL + '\', ' + row.id + ', \'\', \'\', \'' + row.subsiteurl + '\')" />';
	}
	else
		html += '<span class="ico_blank actionMontageIcon">&nbsp;</span>';

	// Display "Metadata & Security" icon.
	html += '<span class="ico_application_form_edit actionMontageIcon" title="Metadata & Security" ' +
			  'class="actionIcon" onclick="commonspotLocal.pageList.invokeMetadataAndSecurityMenu(this, event, ' +
			  row.pagetype + ', ' + isUploadedDoc + ', ' + row.id + ', \'' + row.filename + '\', \'' + row.title + '\', \'\', \'\', \'' + row.icontext + '\', \'\', \'' + row.subsiteurl + '\')">&nbsp;</span>';
  	  
	// Display "More Actions" icon.
	html += '<span class="ico_page_white_edit_down actionMontageIcon" title="More Actions" ' +
			  'onclick="commonspotLocal.pageList.invokeMoreActionsMenu(this, event, ' +
			  row.pagetype + ', ' + isUploadedDoc + ', ' + row.id + ', \'' + row.filename + '\',\''+ pageURL + '\', \'' + row.title + '\', ' + row.lockuserid + ', \'\' ,\'\', \'' + row.subsiteurl + '\')">&nbsp;</span>';

	// Display Delete, Trashbin icons & checkbox:
	html += '<span class="ico_bin actionMontageIcon" title="Delete" ' +
			'onclick="deleteObject(' + row.id + ',' + row.pagetype + ',\'' + row.title + '\',\'' + isUploadedDoc + '\', \'' + row.filename + '\');">&nbsp;</span>' +
			'<input type="checkbox" class="tool" name="select' +
			'" value="' + row.id + '" style="margin-bottom:3px;" title="Select Row">';
	return html;
};

function deleteObject(id, pagetypeid, pagename, isUploaded, fileName)
{
	var pagetype = commonspotLocal.pageList.getPageTypeFromID(pagetypeid, isUploaded);
	var params = {id: id, type: pagetype, title: 'Delete ' + pagetype, pagename: pagename, fileName: fileName};
	if (pagetype == 6)
		params = {pagesetid: id, type: pagetype, title: 'Delete ' + pagetype, pagename: pagename};
	var url = '/commonspot/dashboard/dialogs/common/common-delete.html?' + Object.toQueryString(params);
	commonspot.lightbox.openDialog(url);
}
// make this available to others
commonspotLocal.pageList.deleteObject = deleteObject;

// returns the formal human-readable name from a passed pageTypeID and isUploaded
commonspotLocal.pageList.getPageTypeFromID = function(pageTypeID, isUploaded)
{
	var pageType = "";
	switch(parseInt(pageTypeID))
	{
		case top.commonspot.constants.PAGETYPE_NORMAL:
			isUploaded = (typeof isUploaded === "string") ? isUploaded.toBoolean() : isUploaded
			pageType = isUploaded ? "Uploaded Document" : "CommonSpot Page";
			break;
		case top.commonspot.constants.PAGETYPE_USER_TEMPLATE:
			pageType = "CommonSpot Page Template";
			break;
		case top.commonspot.constants.PAGETYPE_IMAGE:
			pageType = "Image";
			break;
		case top.commonspot.constants.PAGETYPE_PAGE_SET:
			pageType = "CommonSpot Page Set";
			break;
		case top.commonspot.constants.PAGETYPE_REGISTERED_URL:
			pageType = "Registered URL";
			break;
	}
	return pageType;
}

/**
 * Function to modify (make wrappable) subsiteurl:
 *		Replaces all '/' with '/' and a blank image of 1px x 1px dimension.
 **/
commonspotLocal.pageList.formatSubsiteColumn = function(subsiteURL)
{
	var html = subsiteURL;
	var replacement	= '/' + '<img src="/commonspot/images/blank.gif" width="1" height="1">';

	html = html.replace(new RegExp('/', 'g'), replacement);

	return html;
};

/**
 * Function to modify (make wrappable) URL (filename):
 *		Replaces all '/' with '/' and a blank image of 1px x 1px dimension.
 **/
commonspotLocal.pageList.formatURLColumn = function(row)
{
	var html = row.filename;
	var replacement	= '/' + '<img src="/commonspot/images/blank.gif" width="1" height="1">';

	html = html.replace(new RegExp('/', 'g'), replacement);

	return html;
};

/**
 * Function to modify (make wrappable) subsiteurl:
 *		Replaces all '-' & '_' with '-' & '_' and a blank image of 1px x 1px dimension.
 **/
commonspotLocal.pageList.formatFileNameColumn = function(fileName)
{
	var html = fileName;
	var dashReplacement	= '-' + '<img src="/commonspot/images/blank.gif" width="1" height="1">';
	var underscoreReplacement = '_' + '<img src="/commonspot/images/blank.gif" width="1" height="1">';

	html = html.replace(new RegExp('-', 'g'), dashReplacement);
	html = html.replace(new RegExp('_', 'g'), underscoreReplacement);

	return html;
};

/**
 * Function to create HTML for document type "column":
 **/
commonspotLocal.pageList.formatDocTypeColumn = function(row)
{
	var html = '';

	// Display default icon if none provided.
	if (row.iconpath == commonspotLocal.pageList.NO_ICONPATH ||
		typeof row.iconpath == 'undefined')
	{
		switch(parseInt(row.pagetype, 10))
		{
			case top.commonspot.constants.PAGETYPE_NORMAL:
				html += '<img src="/commonspot/dashboard/images/type_icons/pgtype_0.png" class="titleimg" title="CommonSpot Page">';
				break;
			case top.commonspot.constants.PAGETYPE_PAGE_SET:
				html += '<img src="/commonspot/dashboard/images/type_icons/pgtype_6.png" class="titleimg" title="CommonSpot Page Set">';
				break;
			case top.commonspot.constants.PAGETYPE_USER_TEMPLATE:
				html += '<img src="/commonspot/dashboard/images/type_icons/pgtype_1.png" class="titleimg" title="CommonSpot Page Template">';
				break;
			case top.commonspot.constants.PAGETYPE_REGISTERED_URL:
				html += '<img src="/commonspot/dashboard/images/type_icons/pgtype_8.png" class="titleimg" title="Registered URL">';
				break;
			case top.commonspot.constants.PAGETYPE_SITE_SECURITY:
				html += '<img src="/commonspot/dashboard/images/type_icons/pgtype_5.png" class="titleimg" title="Subsite">';
				break;
			case top.commonspot.constants.PAGETYPE_CUSTOM_OBJECT_DEF:
				html += '<img src="/commonspot/dashboard/images/type_icons/pgtype_9.png" class="titleimg" title="CommonSpot Custom Object Definition">';
				break;
			default:
				html += '<img src="/commonspot/dashboard/images/type_icons/pgtype_0.png" class="titleimg" title="">';
				break;
		}
	}
	else // Display provided icon.
	{
		html += '<img src="' + row.iconpath + '" class="titleimg" title="' + row.icontext + '">';
	}

	return html;
};

/**
* Function to sort column and apply style to column header.
*
*	sortCallback - Callback function that does the actual sorting (Spry or reissue of command).
*	currentSortColumnID
*	newSortColumnID
*	newSortColumnSpryName
*	defaultSortDirection - Optional. Default: ascending. For Date column, 'descending' to be passed explicitly.
**/
commonspotLocal.pageList.sortColumn = function(sortCallback, currentSortColumnID, newSortColumnID, newSortColumnSpryName, defaultSortDirection)
{ 
	// If requested column is other than current, remove current column image & set new current. Reset header background.
	if (currentSortColumnID != newSortColumnID)
	{
		$(currentSortColumnID).down('img').src = '/commonspot/images/blank.gif';
		$(currentSortColumnID).style.backgroundImage = 'url("/commonspot/dashboard/images/controls/header_blue.gif")';

		currentSortColumnID = newSortColumnID;
	}

	// Set sort column header image to light blue
	$(newSortColumnID).style.backgroundImage = 'url("/commonspot/dashboard/images/controls/header_light_blue.gif")';

	// Get image to be updated.
	var imgSrc = $(newSortColumnID).down('img').src;

	// If 'down' image: Make 'up' & sort 'ascending'.
	if (imgSrc.indexOf('white_down_bullet.gif') >= 0)
	{
		$(newSortColumnID).down('img').src = '/commonspot/dashboard/images/controls/white_up_bullet.gif';
		sortCallback(newSortColumnSpryName, 'ascending');
	}
	// If 'up' image: Make 'down' & sort 'descending'.
	else if (imgSrc.indexOf('white_up_bullet.gif') >= 0)
	{
		$(newSortColumnID).down('img').src = '/commonspot/dashboard/images/controls/white_down_bullet.gif';
		sortCallback(newSortColumnSpryName, 'descending');
	}
	// If blank image: Sort as per defaultSortDirection.
	else if (imgSrc.indexOf('blank.gif') >= 0)
	{
		// Default defaultSortDirection to 'ascending', if not passed.
		if (typeof defaultSortDirection == 'undefined')
			defaultSortDirection = 'ascending';

		// Display 'up' or 'down' arrow depending on defaultSortDirection.
		if (defaultSortDirection == 'ascending')
			$(newSortColumnID).down('img').src = '/commonspot/dashboard/images/controls/white_up_bullet.gif';
		else
			$(newSortColumnID).down('img').src = '/commonspot/dashboard/images/controls/white_down_bullet.gif';

		// Sort using defaultSortDirection.
		sortCallback(newSortColumnSpryName, defaultSortDirection);
	}

	return currentSortColumnID;
};

/**
 * Function to create openPageLinkHTML:
 **/
commonspotLocal.pageList.formatOpenPageLink = function(row)
{
	var target = null;
	if (row.pagetype != 6)  //not a pageset
		target = row.id;
	var html = "commonspotLocal.pageList.openPageLink(" + target + ", '" +
			     row.link + "', '" +
			     "read" + "');";

	return html;

	//usually on page html it is <a href="javascript:;" onclick="{openPageLinkHTML}" title='{descriptionHTML}' target="_top">{title}</a>
};
/**
 *
 **/
commonspotLocal.pageList.formatOpenUploadedDocLink = function(row)
{
	var html = '<a href="' + row.link + '" title="' + row.descriptionHTML + '" ' +
						'target="_blank">' + row.title + '</a>';
	return html;
};


commonspotLocal.pageList.formatLinkColumn = function(row, noLink, calledFrom)
{
	var html = '';
	var target = null;
	var openPageLinkHTML = '';
	var isUploadedDoc = (row.isuploadeddoc != top.commonspot.constants.NOT_UPLOADED_DOC);
	var desc = row.description ? row.description.unescapeHTML() : "";

	if( row.objectdescription != "" )
		desc = row.objectdescription ? row.objectdescription.unescapeHTML() : "";

	var title = row.title ? row.title.unescapeHTML() : row.pagetitle ? row.pagetitle : "";

	var hoverTitle = desc;
	if(row.pagetype == 8) //registered URL
		hoverTitle = (desc != '' ) ? row.link + ' - ' + desc : row.link;
	else if(isUploadedDoc)
		hoverTitle = desc;
	else
		hoverTitle = (desc != '' ) ? row.filename + ' - ' + desc : row.filename;

	if(noLink)
		return '<span title="' + hoverTitle + '">' + title + '</span>';

	if (row.pagetype != 6)  //not a pageset
		target = row.id;
	if (row.pagetype == 5) // subsite
	{
		openPageLinkHTML = "commonspot.dialog.client.show('/commonspot/dashboard/dialogs/pageview/subsite-listing.html?subsite=" + row.link + "');";
		html = '<a href="javascript:;" onclick="'+openPageLinkHTML+'" title="' + hoverTitle + '">' + title + '</a>';
	}
	else if (row.pagetype == 8) //registered URL
		html = '<a target="_blank" href="' + row.link + '"; title="' + hoverTitle + '">' + title + '</a>';
	else if (isUploadedDoc)
		html = '<a target="_blank" href="' + row.link + '" title="' + hoverTitle + '">' + title + '</a>';
	else
	{
		var mode = 'read';
		if( typeof calledFrom != 'undefined' && calledFrom == 'MyNotificationSection' ) 
			mode = 'author';
		
		openPageLinkHTML = "commonspotLocal.pageList.openPageLink(" + target + ", '" + row.link + "', '" + mode + "');";
		html = '<a target="_top" href="javascript:;" onclick="'+openPageLinkHTML+'" title="' + hoverTitle + '">' + title + '</a>';
	}

	return html;
};

/**
 * Function to create previewImageLinkHTML:
 **/
commonspotLocal.pageList.formatPreviewImageLink = function(row)
{
	var owner = row.ownername || "";
	var category = row.categoryname || "";
	var html = "commonspotLocal.pageList.displayImagePreview('" +
			row.subsiteurl		+ "', '"+
			row.filename 		+ "', " +
			row.filesize 		+ ", '" +
			commonspot.util.jsSafe(row.description) 	+ "', " +
			row.orgheight 		+ ", " 	+
			row.orgwidth 		+ ", '" +
			commonspot.util.jsSafe(owner) 		+ "', '"+
			commonspot.util.jsSafe(category) 	+ "', event);";

	return html;
};

/**
 * Function to display image-preview popup:
 **/
commonspotLocal.pageList.displayImagePreview = function(subsiteURL, fileName, fileSize, description, trueHeight, trueWidth, ownerName, categoryName, event, isInImageGallery)
{
	var cbAutoPreview = $('cbAutoPreview');
	if (cbAutoPreview && !cbAutoPreview.checked)
		return;

	var scalingMessage = trueWidth + ' x ' + trueHeight;
	var imagePreviewDiv = document.createElement('div'); // Create & configure image preview <div>.
	imagePreviewDiv.id = 'imagePreviewDivID';
	$(imagePreviewDiv).addClassName('imagePreviewDiv');

	var imagePreviewTitleDiv =  document.createElement('div');
	imagePreviewTitleDiv.id = 'imagePreviewTitleDivID';
	$(imagePreviewTitleDiv).addClassName('imagePreviewTitleDiv');

	imagePreviewTitleDiv.innerHTML =
		'<p class="strongText">' +
			commonspotLocal.pageList.formatFileNameColumn(description) +
		'</p>';

	imagePreviewDiv.appendChild(imagePreviewTitleDiv);

	// Create and configure <img>.
	var previewImg	= document.createElement('img');
	previewImg.id = 'previewImgID';
	previewImg.src = subsiteURL + 'images/' + fileName;
	$(previewImg).addClassName('imagePreview');

	// Scale image if needed.
	var imgProp = commonspot.util.calcPreviewImgProp(trueWidth, trueHeight, top.commonspot.constants.IMAGE_PREVIEW_POPUP_WIDTH, top.commonspot.constants.IMAGE_PREVIEW_POPUP_HEIGHT);

	$(previewImg).setStyle
	({
		width: imgProp['width'] + 'px',
		height: imgProp['height'] + 'px'
	});

	if (imgProp['isScaled'])
		scalingMessage += ' (scaled)';

	imagePreviewDiv.appendChild(previewImg);

	var imagePreviewDescDiv =  document.createElement('div');
	imagePreviewDescDiv.id = 'imagePreviewDescDivID';
	$(imagePreviewDescDiv).addClassName('imagePreviewDescDiv');

	var filePath = subsiteURL + 'images/' + fileName;
	filePath = (filePath.length > 50) ? '...' + filePath.substring(filePath.length - 50, filePath.length)  : filePath;

	imagePreviewDescDiv.innerHTML =
		'<p>' +
			'(' + filePath + ')' +
		'</p>' +
		'<p>' +
			scalingMessage + ' - ' + commonspot.util.getFileSizeHtml(fileSize) +
		'</p>';

	imagePreviewDiv.appendChild(imagePreviewDescDiv);

	// Add image-preview <div> so created to parent shadow popup.
	try
	{
		imagePreviewPopup.update(imagePreviewDiv);

		// Position correctly.
		//var arrPosition = Position.page(Event.element(event));
		var event = event || window.event;
		var xPos = Event.pointerX(event);
		var yPos = Event.pointerY(event);
		imagePreviewPopup.positionAt((xPos - 40), (yPos - 10), true); // NEEDSWORK: Replace hardcoding for isInImageGallery.
		// Wait for 1 second before displaying the shadow popup.
		timeToShowImagePreviewPopup = setTimeout('imagePreviewPopup.show();', 1000);
	}
	catch (ex) { }
};

/**
 * Function to hide image-preview popup:
 **/
commonspotLocal.pageList.hideImagePreview = function()
{
	// Clear timeout and hide the shadow popup.
	clearTimeout(timeToShowImagePreviewPopup);
	var imagePreviewDiv = $('imagePreviewDivID');
	var cbAutoPreview = $('cbAutoPreview');
	if (cbAutoPreview && !cbAutoPreview.checked)
		return;

	// Empty image-preview container.
	if(imagePreviewDiv)
	{
		imagePreviewDiv.innerHTML = '';
		imagePreviewDiv.remove();
	}
	try
	{
		imagePreviewPopup.hide();
	}
	catch (ex) { }
};

/**
 * Function to open a page in lview in the requested mode:
 **/
commonspotLocal.pageList.openPageLink = function(pageID, pageURL, contributeMode)
{
	commonspot.index.changeMode(null, contributeMode, null, pageID, pageURL);
	commonspot.lightbox.closeAllDialogs();
};

/**
 * Function to popup date selection menu when the link is clicked
 *
 * 		menuObject - is a pointer to the commonspot.contextMenu object
 * 		currentSelectDateValue [optional] - ID of the current menu to toggle on
 **/
commonspotLocal.pageList.invokeSelectDateMenu = function(menuObject, currentSelectDateValue,event)
{
	var xScroll = (window.scrollX) ? window.scrollX : document.body.scrollLeft;
	var yScroll = (window.scrollY) ? window.scrollY : document.body.scrollTop;
	var menuTop = (menuObject.menuTop != 0) ? menuObject.menuTop : commonspotLocal.pageList.SELECT_DATE_MENU_TOP;
	var menuLeft = (menuObject.menuLeft != 0) ? menuObject.menuLeft : commonspotLocal.pageList.SELECT_DATE_MENU_LEFT;

	// Toggle on current menu item.
	if (currentSelectDateValue)
		menuObject.setMenuItemState(currentSelectDateValue, 'on');

	// Position Select Date Options menu.
	/*
	menuObject.positionAt(menuTop - top.commonspot.constants.MENU_OUTER_DIV_PADDING_WIDTH + yScroll,
						  menuLeft - top.commonspot.constants.MENU_OUTER_DIV_PADDING_WIDTH + xScroll);
	*/
	var event = event || window.event;
	var posObj = menuObject.getAutoPosition(event);
	menuObject.positionAt(posObj.topPos + 10, posObj.leftPos - 8); // 10, 8 are to adjust the manu positions related to paddings.

	// Display configured menu.
	menuObject.showMenu();
};

/**
 * Function to display editPageMenu:
 **/
commonspotLocal.pageList.invokeEditPageMenu = function(obj, event, pageURL, pageID, menuTop, menuLeft, subsiteURL)
{
	var topPos;
	var leftPos;
	var objPermissionFlags = {};
	var permissionsList = commonspotLocal.pageList.getAssociatedValue(commonspotLocal.pageList.arrEditPerms, pageID);

	// In IE, "event" (used in calculating click position) gets lost by the time
	// invokeEditPageMenu() is called (a second time) from getEditMenuPermsCallback().
	// This is handled by using "event" the first time itself and passing position around.
	if (typeof menuTop != 'undefined' && typeof menuLeft != 'undefined' && menuTop != '' &&  menuLeft != '')
	{ 
		topPos = menuTop;
		leftPos = menuLeft; 
	}
	else
	{
		var pos = commonspotLocal.pageList.editPagePopUpMenu.getAutoPosition(event);
		topPos = pos.topPos;
		leftPos = pos.leftPos; 
	}

	// If permissions have not been retrieved yet, go get them.
	if (permissionsList == '')
	{
		var invokeEditPageMenuArgs = {
			obj: obj,
			event: event,
			pageURL: pageURL,
			pageID: pageID,
			menuTop: topPos,
			menuLeft: leftPos,
			subsiteURL: subsiteURL
		};
		commonspotLocal.pageList.issueGetEditMenuPerms(invokeEditPageMenuArgs, 'editMenu');
	}
	else // Permissions known.
	{
		objPermissionFlags.menu = 'EditPageMenu';

		// If 'Admin' permissions not given, show only permitted options.
		if (permissionsList.indexOf('Admin') == -1)
		{
			objPermissionFlags.showAuthor = (permissionsList.indexOf('Author') == -1) ? false : true;
			objPermissionFlags.showEdit = (permissionsList.indexOf('Edit') == -1) ? false : true;
			objPermissionFlags.showApprove = (permissionsList.indexOf('HavePendingApproval') == -1) ? false : true;
		}
		else // 'Admin' permission given, show all options.
		{
			objPermissionFlags.showAuthor = true;
			objPermissionFlags.showEdit = true;
			objPermissionFlags.showApprove = true;
		}

		// Set pageURL.
		commonspotLocal.pageList.editPagePopUpMenu.pageURL = pageURL;
		commonspotLocal.pageList.editPagePopUpMenu.pageID = pageID;

		// Position commonspotLocal.pageList.editPagePopUpMenu.
		commonspotLocal.pageList.editPagePopUpMenu.positionAt(topPos, leftPos);

		// Display now.
		commonspotLocal.pageList.editPagePopUpMenu.showMenu(null, null, objPermissionFlags);
	}
};

/**
 * Function to display Metadata & Security Menu.
 */
commonspotLocal.pageList.invokeMetadataAndSecurityMenu = function(obj, event, pageType, isUploadedDoc, pageID, fileName, pageTitle, menuTop, menuLeft, iconText, staticState, subsiteURL)
{	
	var topPos;
	var leftPos;
	var objPermissionFlags = {};
	var permissionsList = commonspotLocal.pageList.getAssociatedValue(commonspotLocal.pageList.arrMetadataAndSecurityPerms, pageID);

	// In IE, "event" (used in calculating click position) gets lost by the time
	// invokeMetadataAndSecurityMenu() is called (a second time) from getMetadataAndSecurityMenuPermsCallback().
	// This is handled by using "event" the first time itself and passing position around.
	if( typeof menuTop != 'undefined' && typeof menuLeft != 'undefined' && menuTop != '' &&  menuLeft != '' )
	{
		topPos = menuTop;
		leftPos = menuLeft; 
	}
	else
	{
		var pos = commonspotLocal.pageList.metadataAndSecurityPopUpMenu.getAutoPosition(event);
		topPos = pos.topPos;
		leftPos = pos.leftPos;
	}

	// If permissions have not been retrieved yet, go get them.
	if (permissionsList == '')
	{
		var invokeMoreActionsMenuArgs = {
			obj: obj,
			event: event,
			pageType: pageType,
			isUploadedDoc: isUploadedDoc,
			pageID: pageID,
			fileName: fileName,
			pageTitle : pageTitle,
			staticState : staticState,
			subsiteURL : subsiteURL,
			menuTop: topPos,
			menuLeft: leftPos
		};

		commonspotLocal.pageList.issueGetMoreActionsMenuPerms(invokeMoreActionsMenuArgs, 'metadataAndSecurityMenu');
	}
	else // Permissions known.
	{
		objPermissionFlags.menu = 'MetadataAndSecurityMenu';
		objPermissionFlags.showStandardMetadata = (permissionsList.indexOf('StandardMetadata') == -1) ? false : true;
		objPermissionFlags.showCustomMetadata = (permissionsList.indexOf('CustomMetadata') == -1) ? false : true;
		objPermissionFlags.showOtherProperties = (permissionsList.indexOf('OtherProperties') == -1) ? false : true;
		objPermissionFlags.showSecurity = (permissionsList.indexOf('Security') == -1) ? false : true;
		objPermissionFlags.showUploadNewVersion = (permissionsList.indexOf('UploadNewVersion') == -1) ? false : true;

		if(staticState == 'Auto Static' || staticState == 'Forced Static')
			objPermissionFlags.showStaticCacheSettings = true;
		else
		 	objPermissionFlags.showStaticCacheSettings = false;

		// Set pageID & fileName.
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID = pageID;
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.fileName = fileName;
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType = pageType;
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.isUploadedDoc = isUploadedDoc;
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageTitle = pageTitle;
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.subsiteURL = subsiteURL;

		// Note: By calling positionAt() AFTER showMenu() as under, the TRUE (dialog-specific) height of the menu is found.
		// This order is required only for More Actions menu as only this has dialog-specific menu rows.
		// Display now.
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.showMenu(parseInt(pageType), isUploadedDoc, objPermissionFlags);

		// Position commonspotLocal.pageList.moreActionsPopUpMenu.
		commonspotLocal.pageList.metadataAndSecurityPopUpMenu.positionAt(topPos, leftPos, pageType);
	}
};

/**
 * Function to display More Actions menu.
 */
commonspotLocal.pageList.invokeMoreActionsMenu = function(obj, event, pageType, isUploadedDoc, pageID, fileName, pageURL, pageTitle, lockUserID, menuTop, menuLeft, subsiteURL)
{
	var topPos;
	var leftPos;
	var objPermissionFlags = {};
	var permissionsList = commonspotLocal.pageList.getAssociatedValue(commonspotLocal.pageList.arrMoreActionsPerms, pageID);

	// In IE, "event" (used in calculating click position) gets lost by the time...
	// 	...this gets called (a second time) from getMoreActionsMenuPermsCallback().
	// This is handled by using "event" the first time itself and passing position around.
	if (typeof menuTop != 'undefined' && typeof menuLeft != 'undefined' && menuTop != '' &&  menuLeft != '')
	{
		topPos = menuTop;
		leftPos = menuLeft;
	}
	else
	{
		var pos = commonspotLocal.pageList.moreActionsPopUpMenu.getAutoPosition(event);
		topPos = pos.topPos;
		leftPos = pos.leftPos;
	}

	// If permissions have not been retrieved yet, go get them.
	if (permissionsList == '')
	{
		var invokeMoreActionsMenuArgs = {
			obj: obj,
			event: event,
			pageType: pageType,
			isUploadedDoc: isUploadedDoc,
			pageID: pageID,
			fileName: fileName,
			pageURL: pageURL,
			pageTitle: pageTitle,
			lockUserID: lockUserID,
			menuTop: topPos,
			menuLeft: leftPos,
			subsiteURL: subsiteURL
		};
		commonspotLocal.pageList.issueGetEditMenuPerms(invokeMoreActionsMenuArgs, 'moreActionsMenu');
	}
	else // Permissions known.
	{
		objPermissionFlags.menu = 'MoreActionsMenu';
		objPermissionFlags.showSubscribeToChanges 		= false;
		objPermissionFlags.showCreateWorkRequest 		= false;
		objPermissionFlags.showChangeOwner 				= false;
		objPermissionFlags.showLockPage 				= false;
		objPermissionFlags.showViewUsageStatistics 		= false;
		objPermissionFlags.showManageFreshnessReminders = false;
		objPermissionFlags.showManageContacts 			= false;
		objPermissionFlags.showManageNotes 				= false;

		if (permissionsList.indexOf('Admin') != -1)
		{
			objPermissionFlags.showSubscribeToChanges 		= true;
			objPermissionFlags.showCreateWorkRequest 		= true;
			objPermissionFlags.showChangeOwner 				= true;
			objPermissionFlags.showLockPage 				= true;
			objPermissionFlags.showViewUsageStatistics 		= true;
			objPermissionFlags.showManageFreshnessReminders = true;
			objPermissionFlags.showManageContacts 			= true;
			objPermissionFlags.showManageNotes 				= true;
		}
		else
		{
			if (permissionsList.indexOf('Author') != -1)
			{
				objPermissionFlags.showCreateWorkRequest 		= true;
				objPermissionFlags.showLockPage 				= true;
				objPermissionFlags.showViewUsageStatistics 		= true;
				objPermissionFlags.showManageFreshnessReminders = true;
				objPermissionFlags.showManageContacts 			= true;
				objPermissionFlags.showManageNotes 				= true;
			}

			if (permissionsList.indexOf('Authenticated') != -1)
				objPermissionFlags.showSubscribeToChanges = true;
		}
		// Set pageID & fileName.
		commonspotLocal.pageList.moreActionsPopUpMenu.pageID = pageID;
		commonspotLocal.pageList.moreActionsPopUpMenu.fileName = fileName;
		commonspotLocal.pageList.moreActionsPopUpMenu.pageURL = pageURL;
		commonspotLocal.pageList.moreActionsPopUpMenu.pageTitle = pageTitle;
		commonspotLocal.pageList.moreActionsPopUpMenu.pageType = pageType;
		commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc = isUploadedDoc;
		commonspotLocal.pageList.moreActionsPopUpMenu.subsiteURL = subsiteURL;
		
		// Note: By calling positionAt() AFTER showMenu() as under, the TRUE (dialog-specific) height of the menu is found.
		// This order is required only for More Actions menu as only this has dialog-specific menu rows.
		// Display now.
		commonspotLocal.pageList.moreActionsPopUpMenu.showMenu(pageType, isUploadedDoc, objPermissionFlags, lockUserID);

		// Position commonspotLocal.pageList.moreActionsPopUpMenu.
		commonspotLocal.pageList.moreActionsPopUpMenu.positionAt(topPos, leftPos);
	}
};

/**
 * Function to display Image More Actions menu.
 */
commonspotLocal.pageList.invokeImageMoreActionsMenu = function (obj, event, pageType, isUploadedDoc, imageID, fileName, subsiteURL, isPublic, menuTop, menuLeft)
{ 
	var topPos;
	var leftPos;
	var objPermissionFlags = {};
	objPermissionFlags.menu = 'ImageMoreActionsMenu';
	var permissionList = commonspotLocal.pageList.getAssociatedValue(commonspotLocal.pageList.arrImageMoreActionsPerms, imageID);

	// In IE, "event" (used in calculating click position) gets lost by the time...
	// 	...this gets called (a second time) from getMoreActionsMenuPermsCallback().
	// This is handled by using "event" the first time itself and passing position around.
	if (typeof menuTop != 'undefined' && typeof menuLeft != 'undefined')
	{
		topPos = menuTop;
		leftPos = menuLeft;
	}
	else
	{
		var pos = commonspotLocal.pageList.moreActionsPopUpMenu.getAutoPosition(event);
		topPos = pos.topPos;
		leftPos = pos.leftPos;
	}

	// If permissions have not been retrieved yet, go get them.
	if (permissionList == '')
	{
		var invokeMoreActionsMenuArgs = {
													obj: obj,
													event: event,
													pageType: pageType,
													isUploadedDoc: isUploadedDoc,
													imageID: imageID,
													fileName: fileName,
													subsiteURL: subsiteURL,
													isPublic: isPublic,
													menuTop: topPos,
													menuLeft: leftPos
													};

		commonspotLocal.pageList.issueGetImageMenuPerms(invokeMoreActionsMenuArgs, 'ImageMoreActionsMenu');
	}
	else //if (permissionList != '')
	{
		// Default disable all menus
		objPermissionFlags.showProperties = false;
		objPermissionFlags.showEditImage = false;
		objPermissionFlags.showUploadNewVersion = false;
		objPermissionFlags.showChangeOwner = false;
		objPermissionFlags.showSecurity = false;
		objPermissionFlags.showVersionHistory = false;

		if (permissionList.imagePermissionList.indexOf('Author') != -1 || permissionList.siteGeneralSecurityPermissionList.indexOf('ManageImageGallery') != -1)
		{
			objPermissionFlags.showProperties = true;
			objPermissionFlags.showEditImage = true;
			objPermissionFlags.showVersionHistory = true;

			if (permissionList.subsiteGeneralSecurityPermissionList.indexOf('UploadImages') != -1)
			{
				objPermissionFlags.showUploadNewVersion = true;
			}
		}

		if (permissionList.imagePermissionList.indexOf('Admin') != -1 || permissionList.siteGeneralSecurityPermissionList.indexOf('ManageImageGallery') != -1)
		{
			objPermissionFlags.showChangeOwner = true;

			if(isPublic == true)
				objPermissionFlags.showSecurity = true;
			else
				objPermissionFlags.showSecurity = false;
		}



		// Set imageID & fileName.
		commonspotLocal.pageList.moreActionsPopUpMenu.pageID = imageID;
		commonspotLocal.pageList.moreActionsPopUpMenu.fileName = fileName;
		commonspotLocal.pageList.moreActionsPopUpMenu.subsiteURL = subsiteURL;

		// Note: By calling positionAt() AFTER showMenu() as under, the TRUE (dialog-specific) height of the menu is found.
		// This order is required only for More Actions menu as only this has dialog-specific menu rows.
		// Display now.
		commonspotLocal.pageList.moreActionsPopUpMenu.showMenu(pageType, isUploadedDoc, objPermissionFlags);

		// Position commonspotLocal.pageList.moreActionsPopUpMenu.
		commonspotLocal.pageList.moreActionsPopUpMenu.positionAt(topPos, leftPos);
	}
};

/**
 * Function to build the Select Date popup menu
 * 		Allows user to select the date to be displayed in the page list results table
 *
 *	menuObject is a pointer to the commonspot.contextMenu object
 *
 *	menuSettingsObj has the following fields:
 *		currentSelectDateValue
 *		menuCallback
 *		showCreationDate
 *		showPublicationDate
 *		showLastModificationDate
 *		showLastMajorModificationDate
 *
 **/
commonspotLocal.pageList.buildSelectDateMenu = function(menuObject, menuSettings)
{
	// Create, configure, & add date menu rows:
	if(menuSettings.showCreationDate == 1)
	{
		menuObject.addMenuRow('DateAdded',
							  		 'Creation Date',
							  		 'javascript:' + menuSettings.menuCallback + "('DateAdded', 'Creation Date');",
							  		 '/commonspot/images/blank.gif',
							  		 'Change displayed date to Creation Date');
	}

	if(menuSettings.showPublicationDate == 1)
	{
		menuObject.addMenuRow('PublicReleaseDate',
							  		 'Publication Date',
							  		 'javascript:' + menuSettings.menuCallback + "('PublicReleaseDate', 'Publication Date');",
							  		 '/commonspot/images/blank.gif',
							  		 'Change displayed date to Publication Date');
	}

	if(menuSettings.showLastModificationDate == 1)
	{
		menuObject.addMenuRow('DateContentLastModified',
							  		 'Last Modification Date',
							  		 'javascript:' + menuSettings.menuCallback + "('DateContentLastModified', 'Last Modification Date');",
							  		 '/commonspot/images/blank.gif',
							  		 'Change displayed date to Last Modification Date');
	}

	if(menuSettings.showLastMajorModificationDate == 1)
	{
		menuObject.addMenuRow('DateContentLastMajorRevision',
							  		 'Last Major Modification Date',
							  		 'javascript:' + menuSettings.menuCallback + "('DateContentLastMajorRevision', 'Last Major Modification Date');",
							  		 '/commonspot/images/blank.gif',
							  		 'Change displayed date to Last Major Modification Date');
	}
};

/**
 * Function to create the Actions 'Edit' popup
 *
 **/
commonspotLocal.pageList.buildEditPageMenu = function(menuObject, menuSettings)
{
		menuObject.addMenuRow('myChanges',
							  		 'My Changes (Author Mode)',
							  		 'javascript:' + menuSettings.menuCallback + "(1, 'My Changes (Author Mode)');",
							  		 '',
							  		 'View my changes');

		menuObject.addMenuRow('allChanges',
							  		 'All Changes (Edit Mode)',
							  		 'javascript:' + menuSettings.menuCallback + "(3, 'All Changes (Edit Mode)');",
							  		 '',
							  		 'View all changes (mine and others)');

		menuObject.addMenuRow('approvals',
							  		 'Approvals (Approve Mode)',
							  		 'javascript:' + menuSettings.menuCallback + "(2, 'Approvals (Approve Mode)');",
							  		 '',
							  		 'View pending approvals');
};

/**
 * Function to create the Actions 'Metadata & Security' popup menu.
 */
commonspotLocal.pageList.buildMetadataAndSecurityMenu = function(menuObject, menuSettings)
{
		menuObject.addMenuRow('standardMetadata',
							  		 'Standard Properties...',
							  		 'javascript:' + menuSettings.menuCallback + "('standardMetadata', 'Standard Properties...');",
							  		 '',
							  		 'View standard properties for this object.');

		menuObject.addMenuRow('customMetadata',
							  		 'Custom Properties...',
								  	 'javascript:' + menuSettings.menuCallback + "('customMetadata', 'Custom Properties...');",
								  	 '',
								  	 'View custom properties for this object.');

		menuObject.addMenuSeparator('metadataAndSecurityMenu_separatorOne');

		menuObject.addMenuRow('otherProperties',
								    'Document Details...',
								    'javascript:' + menuSettings.menuCallback + "('otherProperties', 'Document Details...');",
								    '',
								    'View details of this object.');

		menuObject.addMenuSeparator('metadataAndSecurityMenu_separatorTwo');

		menuObject.addMenuRow('pageSetMembers',
								    'Page Set Members...',
								    'javascript:' + menuSettings.menuCallback + "('pageSetMembers', 'Page Set Members...');",
								    '',
								    'View member of this Page Set.');

		menuObject.addMenuSeparator('metadataAndSecurityMenu_separatorThree');
		menuObject.addMenuRow('pageSecurity',
							  		 'Security...',
							  		 'javascript:' + menuSettings.menuCallback + "('security', 'Security...');",
							  		 '',
							  		 'View security for this object.');

		menuObject.addMenuRow('templateInheritanceSecurity',
							  		 'Inheritance Security...',
							  		 'javascript:' + menuSettings.menuCallback + "('inheritanceSecurity', 'Inheritance Security...');",
							  		 '',
							  		 'View inheritance security for this object.');

		menuObject.addMenuRow('myTags',
								    'My Tags...',
								    'javascript:' + menuSettings.menuCallback + "('myTags', 'My Tags...');",
								    '',
								    'View my tags for this object.');

		menuObject.addMenuRow('staticCacheProperties',
								    'Static/Cache Properties...',
								    'javascript:' + menuSettings.menuCallback + "('staticCacheProperties', 'Static/Cache Properties...');",
								    '',
								    'Static/Cache Properties for this object.');

		menuObject.addMenuSeparator('metadataAndSecurityMenu_separatorFour');

		menuObject.addMenuRow('versionHistory',
								  	 'Version History...',
								  	 'javascript:' + menuSettings.menuCallback + "('versionHistory', 'Version History...');",
								  	 '',
								  	 'View version history.');


		menuObject.addMenuRow('uploadNewVersion',
								  	 'Upload New Version...',
								  	 'javascript:' + menuSettings.menuCallback + "('uploadNewVersion', 'Upload New Version...');",
								  	 '',
								  	 'Upload a new version.');
};

/**
 * Function to create the Actions 'More Actions' popup menu.
 */
commonspotLocal.pageList.buildMoreActionsMenu = function(menuObject, menuSettings)
{
		menuObject.addMenuRow('subscribeToChanges',
							  		 'Subscribe to Changes...',
							  		 'javascript:' + menuSettings.menuCallback + "('subscribeToChanges', 'Subscribe to Changes...');",
							  		 '',
							  		 'Subscribe to changes on for this object.');

		menuObject.addMenuRow('createWorkRequest',
							  		 'Create Work Request...',
								  	 'javascript:' + menuSettings.menuCallback + "('createWorkRequest', 'Create Work Request...');",
								  	 '',
								  	 'Create a new work request.');

		menuObject.addMenuRow('changeOwner',
								    'Change Owner...',
								    'javascript:' + menuSettings.menuCallback + "('changeOwner', 'Change Owner...');",
								    '',
								    'Change the owner of the object.');

		menuObject.addMenuRow('lockPage',
								    'Lock Page...',
								    'javascript:' + menuSettings.menuCallback + "('lockPage', 'Lock Page...');",
								    '',
								    'Lock the page.');

		menuObject.addMenuSeparator('moreActionsMenu_separatorOne');

		menuObject.addMenuRow('viewUsageStatistics',
							  		 'View Usage Statistics...',
							  		 'javascript:' + menuSettings.menuCallback + "('viewUsageStatistics', 'View Usage Statistics...');",
							  		 '',
							  		 'View usage statistics for the object.');

		menuObject.addMenuRow('viewReferringPages',
								  	 'View Referring Pages...',
								  	 'javascript:' + menuSettings.menuCallback + "('viewReferringPages', 'View Referring Pages...');",
								  	 '',
								  	 'View what pages link to this object.');

		menuObject.addMenuSeparator('moreActionsMenu_separatorTwo');

		menuObject.addMenuRow('manageFreshnessReminders',
								  	 'Manage Freshness Reminders...',
								  	 'javascript:' + menuSettings.menuCallback + "('manageFreshnessReminders', 'Manage Freshness Reminders...');",
								  	 '',
								  	 'Manage the freshness reminders for this page.');

		menuObject.addMenuRow('manageContacts',
								  	 'Manage Contacts...',
								  	 'javascript:' + menuSettings.menuCallback + "('manageContacts', 'Manage Contacts...');",
								  	 '',
								  	 'Manage the contacts for this object.');

		menuObject.addMenuRow('manageNotes',
								  	 'Manage Notes...',
								  	 'javascript:' + menuSettings.menuCallback + "('manageNotes', 'Manage Notes...');",
								  	 '',
								  	 'Manage notes for this object.');
};

/**
 * Function to create the Actions 'Properties' popup for Report dialogs.
 *
 **/
commonspotLocal.pageList.buildImageMoreActionsMenu = function(menuObject, menuSettings)
{
		menuObject.addMenuRow('imageProperties',
							  		 'Properties...',
							  		 'javascript:' + menuSettings.menuCallback + "('imageProperties', 'Image Properties...');",
							  		 '',
							  		 'View/Edit the image properties.');

		menuObject.addMenuRow('imageCustomProperties',
							  		 'Custom Properties...',
								  	 'javascript:' + menuSettings.menuCallback + "('imageCustomProperties', 'Custom Properties...');",
								  	 '',
								  	 'View custom properties for this image.');

		menuObject.addMenuRow('editImage',
							  		 'Edit Image...',
							  		 'javascript:' + menuSettings.menuCallback + "('editImage', 'Edit Image...');",
							  		 '',
							  		 'Edit the image.');

		menuObject.addMenuRow('newImageVersion',
							  		 'Upload New Version...',
							  		 'javascript:' + menuSettings.menuCallback + "('newImageVersion', 'New Image Version...');",
							  		 '',
							  		 'Upload a new version of the image.');

		menuObject.addMenuRow('imageDetails',
							  		 'Details...',
								  	 'javascript:' + menuSettings.menuCallback + "('imageDetails', 'Image Details...');",
								  	 '',
								  	 'View details of the image.');

		menuObject.addMenuRow('manageNotes',
								  	 'Manage Notes...',
								  	 'javascript:' + menuSettings.menuCallback + "('manageNotes', 'Manage Notes...');",
								  	 '',
								  	 'Manage notes of the image.');

		menuObject.addMenuSeparator('imageMoreActionsMenu_separator');
		menuObject.addMenuRow('imageSecurity',
							  		 'Security...',
							  		 'javascript:' + menuSettings.menuCallback + "('imageSecurity', 'Image Security...');",
							  		 '',
							  		 'View/Edit image security');
		menuObject.addMenuRow('changeOwner',
							  		 'Change Owner...',
							  		 'javascript:' + menuSettings.menuCallback + "('changeOwner', 'Change Owner...');",
							  		 '',
							  		 'Change the owner of the image.');


		menuObject.addMenuSeparator('imageMoreActionsMenu_separatorOne');

		menuObject.addMenuRow('viewReferringPages',
								  	 'View Referring Pages...',
								  	 'javascript:' + menuSettings.menuCallback + "('viewReferringPages', 'View Referring Pages...');",
								  	 '',
								  	 'View what pages link to this image.');

		menuObject.addMenuRow('imageVersionHistory',
							  		 'Version History...',
							  		 'javascript:' + menuSettings.menuCallback + "('imageVersionHistory', 'Version History...');",
							  		 '',
							  		 'View the history of the image.');

		menuObject.addMenuSeparator('imageMoreActionsMenu_separatorTwo');

		menuObject.addMenuRow('myTags',
							  		 'My Tags...',
							  		 'javascript:' + menuSettings.menuCallback + "('myTags', 'My Tags...');",
							  		 '',
							  		 'View the tags you have specified for the image.');
};

/*
 * Function to get selected page IDs (if any).
 * dmerrill 3/5/09:
 * 	actually gets *checkbox* IDs, which by default are like CB_#pageID#
 * 	don't know why we'd ever do that, when checkbox values are already the plain PageID
 * 	however, we do, so I made it more efficient like the value-based one below, instead of removing it
 */
commonspotLocal.pageList.getSelectedRecordCB_IDs = function(pageListTableID, type, action)
{
	var arrSelectedPageIDs = new Array();
	var strSelectedPageIDs = '';
	var itemType = 'rows';
	var chosenAction = '';

	if (type == 'image')
	{
		var imageContainers = $('imageGallery').getElementsByClassName('imageDetailsSmall');

		for (var i = 0; i < imageContainers.length; i++)
		{
			var cboxes = $(imageContainers[i]).getElementsByClassName('tool');
			if(cboxes[0].checked)
			{
				arrSelectedPageIDs.push(cboxes[0].id);
			}
		}
	}
	else
	{
		// Get table rows.
		var arrRows = $(pageListTableID).down(0).immediateDescendants();

		// Iterate over the rows.
		for(var i = 0; i < arrRows.length; i++)
		{
			var arrRowDescendants = $(arrRows[i]).descendants();

			// Find and collect the ID of the checkbox in each row (if checked).
			for(var j = 0; j < arrRowDescendants.length; j++)
			{
				if(arrRowDescendants[j].tagName == 'INPUT')
				{
					if(arrRowDescendants[j].checked)
					{
						arrSelectedPageIDs.push(arrRowDescendants[j].id);
						break;
					}
				}
			}
		}
	}

	// Join array elements (if present) to form a string of IDs.
	if(arrSelectedPageIDs.length == 0)
	{
		if (typeof type != 'undefined' && type == 'image')
		{
			itemType = 'images';
		}
		if (typeof action != 'undefined')
		{
			chosenAction = ' to ' + action;
		}
		alert('Please select one or more ' + itemType + chosenAction + '.');
	}
	else
	{
		strSelectedPageIDs = arrSelectedPageIDs.join(',');
	}

	return strSelectedPageIDs;
};

/*
 * Function to get selected record IDs (not CB_IDs).
 */
commonspotLocal.pageList.getSelectedRecordIDs = function(checkboxName, type, action)
{
	var checkedValues = '';
	var itemType = '';
	var chosenAction = '';
	checkedValues = commonspotLocal.util.getCheckedValuesList(checkboxName);

	if(checkedValues == '')
	{
		if (type == 'image')
   		itemType = 'images';
  		else if(type == 'copySubsite')
   		itemType = 'subsite properties to be copied';
		else
			itemType = type;

  		 if (action)
   			chosenAction = ' to ' + action;
		 alert('Please select one or more ' + itemType + chosenAction + '.');
	}
	return checkedValues;
};

/*
 * Function to process More Actions selection.
 */
commonspotLocal.pageList.processMoreActionsSelection = function(checkboxName, targetName, type, callbackFunction)
{
	var itemType;
	var moveimages;

	if(type == 'image')
	{
		moveimages = 1;
		itemType = 'image';
	}
	else
	{
		moveimages = 0;
		itemType = 'row';
	}

	if( typeof callbackFunction == 'undefined' )
		callbackFunction = '';
	var subsiteRoot 			= commonspot.clientUI.state.location.get().subsiteurl;
	var moreActionsSelect 	= $('moreAction');
	var selectedIDList 	= '';

	// Take appropriate action based on More Actions selection.
	var selItemValue = moreActionsSelect.options[moreActionsSelect.selectedIndex].value;
	switch(parseInt(selItemValue))
	{
		case 0:
			alert('Please select an action.');
			break;

		case 1:	// DELETE
			selectedIDList = commonspotLocal.pageList.getSelectedRecordIDs(checkboxName, itemType, 'delete');

			// Delete items.
			if(selectedIDList != '')
			{
				var params = {pageIDList: selectedIDList, linktype: targetName, action: 'delete'};
				var dlgUrl = '/commonspot/dashboard/dialogs/common/delete-conflict.html?' + Object.toQueryString(params);
				commonspot.lightbox.openDialog(dlgUrl);
			}
			break;

		case 2:	// COPY Selected
			selectedIDList = commonspotLocal.pageList.getSelectedRecordIDs(checkboxName, itemType, 'copy');

			if(selectedIDList != '')
			{
				if(type == 'page')
					validateCopyPageIDList(selectedIDList, targetName); // send to cmd to validate, doCopy() on success
				else
					doCopy(selectedIDList, targetName);
			}
			break;

		case 3:	// MOVE Selected
			selectedIDList = commonspotLocal.pageList.getSelectedRecordIDs(checkboxName, itemType, 'move');

			if(selectedIDList != '')
			{
				var params = {mode: 'moveMultiple' , title: 'Move Page', selectedPageIDs: selectedIDList, targetName: targetName
								, requiredPermission: 'CreatePages', ismultiselect: 0, callback: 'copyMoveCallback'};
				var dlgUrl = '/commonspot/dashboard/dialogs/common/destination-subsite.html?' + Object.toQueryString(params);
				commonspot.lightbox.openDialog(dlgUrl);
			}
			break;

		case 4:	// COPY/MOVE
			selectedIDList = commonspotLocal.pageList.getSelectedRecordCB_IDs(checkboxName, itemType, 'copy/move');

			// Copy or move items
			if(selectedIDList != '')
			{
				document.dlgform.action = subsiteRoot + 'loader.cfm?csModule=linkmgt/move-selected-pages';
				document.dlgform.submit();
			}
			break;

		case 5:	// Activate Selected
			var selectedIDList = getFilterIDList( checkboxName, '0', itemType);

			// Activate items.
			if( typeof selectedIDList != 'undefined'  && selectedIDList != '' )
				saveActivationState(selectedIDList, '1', 'true');
			break;

		case 6:	// Deactivate Selected
			var selectedIDList = getFilterIDList( checkboxName, '1', itemType);

			// Deactivate items.
			if( typeof selectedIDList != 'undefined'  && selectedIDList != '' )
				saveActivationState(selectedIDList, '0', 'true');
			break;

		case 7:	// ChangeOwner Selected
			selectedIDList = commonspotLocal.pageList.getSelectedRecordIDs(checkboxName, itemType, 'change owner');

			if(selectedIDList != '')
			{
				var params = {scope: targetName, mode: 'multiple', selectedPageIDs: selectedIDList};
				var dlgUrl = '/commonspot/dashboard/dialogs/pageview/change-owner.html?' + Object.toQueryString(params);
				commonspot.lightbox.openDialog(dlgUrl);
			}
			break;

		default: // see if value is name of function to call, if so, call it, passing selected item IDs
			if(selItemValue && typeof window[selItemValue] === 'function')
			{
				selectedIDList = commonspotLocal.pageList.getSelectedRecordIDs(checkboxName, itemType);
				window[selItemValue](selectedIDList);
			}
	}
};

/*
 * Function to return the selected filtered IDList that needs to be activate/deactivate
 */
function getFilterIDList(checkboxName, status, itemType)
{
	var pageCurrentState = (status == 0)? 'active': 'inactive';
	var pageState = (status == 0)? 'activate': 'deactivate';
	var checkboxes = document.getElementsByName(checkboxName)
	var checkedItems = $A(checkboxes).findAll(function(e){return e.checked});
	var pageActivationStatusList = '';
	checkedItems.each(function(e){pageActivationStatusList += (pageActivationStatusList != '')?',' + e.getAttribute('pageactivationstatus') : e.getAttribute('pageactivationstatus'); });

	var arrSelectedIDList = commonspotLocal.pageList.getSelectedRecordIDs(checkboxName, itemType, pageState).split(',');

	if(arrSelectedIDList == '')
		return;

	var arrPageActivationStatus = pageActivationStatusList.split(',');

	var filterIDList = '';

	for (var i = 0; i < arrSelectedIDList.length; i++)
	{
		var pageActivationStatus = arrPageActivationStatus[i];

		if(pageActivationStatus != status)
			filterIDList += (filterIDList != '')? ',' + arrSelectedIDList[i] : arrSelectedIDList[i];
	}

	if( typeof filterIDList != 'undefined'  && filterIDList != '' )
		return filterIDList;
	else
		alert('All the items selected are already '+ pageCurrentState +'. Please select at least one item to  '+ pageState +'.');
}

/**
 * Function to get the value associated with a key in the passed in array of key-value objects.
 */
commonspotLocal.pageList.getAssociatedValue = function(arrayOfObjects, key)
{
	var value = '';

	for (var i = 0; i < arrayOfObjects.length; i++)
	{
		if (arrayOfObjects[i].key == key)
		{
			value = arrayOfObjects[i].value;
			break;
		}
	}

	return value;
};

/**
 * commandResponseHandler function for Page.getEditMenuPerms() command.
 */
commonspotLocal.pageList.getEditMenuPermsCallback = function(command, xmlStr, xmlDoc, responseStatus)
{
	if (responseStatus.code == 200)
	{
		// Parse permissions list for the passed-in pageID.
		var permissionsList = xmlDoc.getElementsByTagName('data')[0].childNodes[0].nodeValue;

		// Store pageID-permissionsList pair in global data structure.
		var objPermissions = { key: command.options.objCallbackArgs.pageID, value: permissionsList };
		commonspotLocal.pageList.arrEditPerms.push(objPermissions);
		commonspotLocal.pageList.arrMoreActionsPerms.push(objPermissions);

		// Return control to appropriate function post permissions retrieval.
		switch (command.options.action)
		{
			case 'delete':
				commonspotLocal.pageList.deleteObject(command.options.objCallbackArgs.pageID, command.options.objCallbackArgs.pageType, command.options.objCallbackArgs.pageTitle, false, command.options.objCallbackArgs.fileName);
				break;
			case 'editMenu':
				commonspotLocal.pageList.invokeEditPageMenu(
					command.options.objCallbackArgs.obj,
					command.options.objCallbackArgs.event,
					command.options.objCallbackArgs.pageURL,
					command.options.objCallbackArgs.pageID,
					command.options.objCallbackArgs.menuTop,
					command.options.objCallbackArgs.menuLeft,
					command.options.objCallbackArgs.subsiteURL);
				break;
			case 'moreActionsMenu':
				commonspotLocal.pageList.invokeMoreActionsMenu(
					command.options.objCallbackArgs.obj,
					command.options.objCallbackArgs.event,
					command.options.objCallbackArgs.pageType,
					command.options.objCallbackArgs.isUploadedDoc,
					command.options.objCallbackArgs.pageID,
					command.options.objCallbackArgs.fileName,
					command.options.objCallbackArgs.pageURL,
					command.options.objCallbackArgs.pageTitle,
					command.options.objCallbackArgs.lockUserID,
					command.options.objCallbackArgs.menuTop,
					command.options.objCallbackArgs.menuLeft,
					command.options.objCallbackArgs.subsiteURL);
				break;
			default:
				alert('commonspotLocal.pageList.getEditMenuPermsCallback: Unknown edit action requested: ' +
						 command.options.action);
				break;
		}
	}
};

/**
 * commandResponseHandler function for Page.getMoreActionsMenuPerms() command.
 */
commonspotLocal.pageList.getMoreActionsMenuPermsCallback = function(command, xmlStr, xmlDoc, responseStatus)
{
	if (responseStatus.code == 200)
	{
		// Parse permissions list for the passed-in pageID.
		var permissionsList = '';
		try{
		 	permissionsList = xmlDoc.getElementsByTagName('data')[0].childNodes[0].nodeValue;
		}
		catch(ex){
			alert('You have insufficient permissions to access any of these menu items.');
			return;
		}
		// Store pageID-permissionsList pair in global data structure.
		var objPermissions = { key: command.options.objCallbackArgs.pageID, value: permissionsList };
		commonspotLocal.pageList.arrMetadataAndSecurityPerms.push(objPermissions);

		// Return control to appropriate function post permissions retrieval.
		commonspotLocal.pageList.invokeMetadataAndSecurityMenu(
			command.options.objCallbackArgs.obj,
			command.options.objCallbackArgs.event,
			command.options.objCallbackArgs.pageType,
			command.options.objCallbackArgs.isUploadedDoc,
			command.options.objCallbackArgs.pageID,
			command.options.objCallbackArgs.fileName,
			command.options.objCallbackArgs.pageTitle, 
			command.options.objCallbackArgs.lockUserID,
			command.options.objCallbackArgs.menuTop,
			command.options.objCallbackArgs.menuLeft,
			command.options.objCallbackArgs.staticState,
			command.options.objCallbackArgs.subsiteURL
			);
	}
};

/**
 * Function to issue Page.getEditMenuPerms() command.
 */
commonspotLocal.pageList.issueGetEditMenuPerms = function(objCallbackArgs, action)
{ 
	var LOADER_URL = commonspot.clientUI.state.location.getLoaderURL('subsiteurl');
	LOADER_URL =  (objCallbackArgs.subsiteURL) ? objCallbackArgs.subsiteURL + 'loader.cfm' : LOADER_URL;
	
	commonspot.ajax.commandEngine.sendOneCommand(
		LOADER_URL,
		'Page',
		'getEditMenuPerms',
		{ pageID: objCallbackArgs.pageID },
		{
			commandResponseHandler: commonspotLocal.pageList.getEditMenuPermsCallback,
			objCallbackArgs: objCallbackArgs,
			action: action
		}
	);
};

/**
 * Function to issue Page.getMoreActionsMenuPerms() command.
 */
commonspotLocal.pageList.issueGetMoreActionsMenuPerms = function(objCallbackArgs, action)
{
	var LOADER_URL = commonspot.clientUI.state.location.getLoaderURL('subsiteurl');
	LOADER_URL =  (objCallbackArgs.subsiteURL) ? objCallbackArgs.subsiteURL + 'loader.cfm' : LOADER_URL;
	
	commonspot.ajax.commandEngine.sendOneCommand(
		LOADER_URL,
		'Page',
		'getMoreActionsMenuPerms',
		{ pageID: objCallbackArgs.pageID },
		{
			commandResponseHandler: commonspotLocal.pageList.getMoreActionsMenuPermsCallback,
			objCallbackArgs: objCallbackArgs,
			action: action
		}
	);
};

/**
 * metadataAndSecurityMenuCallback:
 *  	Callback function that is called when the user selects one of the 'Metadata & Security' menu options.
 */
commonspotLocal.pageList.metadataAndSecurityMenuCallback = function(selectedOption, selectedOptionText)
{
	var params = {};
	var dlgUrl = '';
	var subsiteURL = commonspotLocal.pageList.metadataAndSecurityPopUpMenu.subsiteURL;
	 
	switch(selectedOption)
	{
		case 'standardMetadata':
			params = {callbackFunction: 'getFilteredResults'
						, pageid: commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID
						, setlock: 1
					 };
			 
			dlgUrl = subsiteURL + 'loader.cfm?csmodule=pagemode/pageprop&' + Object.toQueryString(params);
  			top.commonspot.lightbox.openDialog(dlgUrl); 			
			break;
		case 'customMetadata':
			params = {bProcessType: 7
						, callbackFunction: 'getFilteredResults'
						, pageid: commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID
						, setlock: 1
						, buttonAction: 'CustomMetadataOnly'
						, hidePrevious: 1
					  };
			 
			dlgUrl = subsiteURL + 'loader.cfm?csModule=pagemode/pageprop-action&' + Object.toQueryString(params);
  			top.commonspot.lightbox.openDialog(dlgUrl); 				
			break;
		case 'security':
			var component = 'PageSecurity';
			var title = 'Page Security';
			switch(parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType))
			{
				case top.commonspot.constants.PAGETYPE_NORMAL: // pageType = 0
					if(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.isUploadedDoc)
					{
						component = 'UploadedDocumentSecurity';
						title = 'Uploaded Document Security';
					}
					else
					{
						component = 'PageSecurity';
						title = 'Page Security';
					}
				break;
				case top.commonspot.constants.PAGETYPE_USER_TEMPLATE: // pageType = 1
					component = 'PageSecurity';
					title = 'Template Security';
				break;
				case top.commonspot.constants.PAGETYPE_PAGE_SET: // pageType = 6
					component = 'PageSetSecurity';
					title = 'Page Set Security';
				break;
				case top.commonspot.constants.PAGETYPE_REGISTERED_URL: // pageType = 8
					component = 'RegisteredURLSecurity';
					title = 'Registered URL Security';
				break;
			}
			params = {id: commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID
						, target: component
						, title: title
						, objectname: commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageTitle
					 };
			dlgUrl = '/commonspot/dashboard/dialogs/pageview/security.html?' + Object.toQueryString(params);
			commonspot.lightbox.openDialog(dlgUrl);

			break;
		case 'otherProperties':
			var targetType = '';
			var uploadedDoc = 0;

			if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (!commonspotLocal.pageList.metadataAndSecurityPopUpMenu.isUploadedDoc))
				 targetType = 'Page';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (commonspotLocal.pageList.metadataAndSecurityPopUpMenu.isUploadedDoc))
			{
			 	targetType = 'UploadedDocument';
				uploadedDoc = 1;
			}
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_IMAGE )
				targetType = 'Image';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_PAGE_SET )
				targetType = 'PageSet';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_EXTERNAL_FILE || parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_REGISTERED_URL )
				targetType = 'RegisteredURL';

			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/document-details.html' +
													 '?pageID=' + commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID +
													 '&pageType=' + targetType +
													 '&targetType=' + targetType + '&isUploadedDoc=' + uploadedDoc);
			break;
		case 'pageSetMembers':
			commonspot.dialog.client.show('/commonspot/dashboard/dialogs/tools/pageset-members.html' +
													'?pageSetID=' + commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID +
													'&objectname=' + encodeURIComponent(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageTitle));

			break;

		case 'versionHistory':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/uploaded-document-version-history.html' +
													 '?pageid=' + commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID +
													 '&pagetitle=' + commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageTitle +
													 '&target=versionHistory&title=Version History');
			break;


		case 'uploadNewVersion':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/mycontent/upload-new-version.html' +
													 '?pageid=' + commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID +
													 '&fromMyPages=1');

			break;
		case 'myTags':
			var objectname = '';
			if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (!commonspotLocal.pageList.metadataAndSecurityPopUpMenu.isUploadedDoc))
				 objectname = 'page';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (commonspotLocal.pageList.metadataAndSecurityPopUpMenu.isUploadedDoc))
				objectname = 'uploaded document';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_IMAGE )
				objectname = 'image';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_PAGE_SET )
				objectname = 'page set';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_EXTERNAL_FILE || parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_REGISTERED_URL )
				objectname = 'registered url';
			else if( parseInt(commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_USER_TEMPLATE)
				objectname = 'template';
			commonspot.dialog.client.show('/commonspot/dashboard/dialogs/pageview/tags.html?pageid='+ commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID + '&objectname=' + objectname ); // NEEDSWORK: What querystring needs to be passed?
			break;
		case 'inheritanceSecurity':
			commonspot.dialog.client.show('/commonspot/dashboard/dialogs/pageview/template-inheritance-security.html?templateid='+ commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID + '&title=' + encodeURIComponent('Template Inheritance Security')+ '&target=TemplateInheritanceSecurity');
			break;

		case 'staticCacheProperties':
			commonspot.dialog.client.show('/commonspot/dashboard/dialogs/pageview/cache-static-settings.html' +
													'?scope=Report&pageID=' + commonspotLocal.pageList.metadataAndSecurityPopUpMenu.pageID);
			break;
		default:
			alert('NEEDSWORK: This action needs to be hooked up.');
			break;
	}
};

/**
 * moreActionsMenuCallback:
 *  	Callback function that is called when the user selects one of the 'More Actions' menu options.
 */
commonspotLocal.pageList.moreActionsMenuCallback = function(selectedOption, selectedOptionText)
{
	var subsiteURL = commonspotLocal.pageList.moreActionsPopUpMenu.subsiteURL;
	
	switch(selectedOption)
	{
		case 'subscribeToChanges':
			top.commonspot.lightbox.openDialog(subsiteURL +'loader.cfm?csmodule=docinfo/subscription.cfm' +
													'&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID);
		 	
			break;

		case 'createWorkRequest':
			top.commonspot.lightbox.openDialog(subsiteURL +'loader.cfm?csModule=security/submit-work-Request' +
													'&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													'&controlid=0');
			break;

		case 'changeOwner':
			var targetType = 'Page';
				if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_NORMAL && commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc == 0 )
				 	targetType = 'Page';
				else if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_NORMAL )
				 	targetType = 'UploadedDocument';
				else if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_USER_TEMPLATE ||  commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_BASE_TEMPLATE)
				 	targetType = 'Template';
				else if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_IMAGE )
					targetType = 'Image';
				else if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_PAGE_SET )
					targetType = 'PageSet';
				else if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_EXTERNAL_FILE || commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_REGISTERED_URL )
					targetType = 'RegisteredURL';
			var params = {
							pageid: commonspotLocal.pageList.moreActionsPopUpMenu.pageID,
							title: commonspotLocal.pageList.moreActionsPopUpMenu.pageTitle,
							targetType: targetType
						 };

			var dlgUrl = '/commonspot/dashboard/dialogs/pageview/change-owner.html?' + Object.toQueryString(params);
			commonspot.lightbox.openDialog(dlgUrl);
			break;

		case 'lockPage':
			var targetType = 'Page';
			if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_NORMAL && commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc == 1)
				targetType = 'UploadedDocument';
			else if( commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_USER_TEMPLATE ||  commonspotLocal.pageList.moreActionsPopUpMenu.pageType == commonspot.constants.PAGETYPE_BASE_TEMPLATE)
				 	targetType = 'Template';

			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/lock.html' +
													 '?target='+ targetType +'&scope=moreActionMenu&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID);
			break;

		case 'viewUsageStatistics':
			top.commonspot.lightbox.openDialog(subsiteURL +'loader.cfm?csmodule=docinfo/usagestats' +
													'&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID);
			break;

		case 'viewReferringPages':
			var linktype = '';

			if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (!commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
				 linktype = 'Page';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
			 	linktype = 'Uploaded Document';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_IMAGE )
				linktype = 'Image';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_PAGE_SET )
				linktype = 'CommonSpot Page Set';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_EXTERNAL_FILE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_REGISTERED_URL )
				linktype = 'Registered URL';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == commonspot.constants.PAGETYPE_USER_TEMPLATE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_BASE_TEMPLATE )
				linktype = 'Commonspot Page Template';

			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/referring_pages.html' +
													 '?pagename=' + commonspotLocal.pageList.moreActionsPopUpMenu.fileName +
													 '&callback=refreshPageListCallback' +
													 '&linktype=' + linktype +
													 '&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID);

			break;

		case 'manageFreshnessReminders':
			var targetType = '' ;

			if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (!commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
				 targetType = 'Page';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
			 	targetType = 'UploadedDocument';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_IMAGE )
				targetType = 'Image';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_PAGE_SET )
				targetType = 'PageSet';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_EXTERNAL_FILE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_REGISTERED_URL )
				targetType = 'RegisteredURL';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == commonspot.constants.PAGETYPE_USER_TEMPLATE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_BASE_TEMPLATE )
				targetType = 'Template';

			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/freshness-reminders.html' +
													 '?pageurl=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageURL +
													 '&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													 '&pagetitle=' + commonspotLocal.pageList.moreActionsPopUpMenu.fileName +
													 '&targetType=' + targetType);
			break;

		case 'manageContacts':
			var targetType = '' ;
			var title = commonspotLocal.pageList.moreActionsPopUpMenu.fileName;

			if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (!commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
				 targetType = 'Page';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
			{
				targetType = 'UploadedDocument';
				title = commonspotLocal.pageList.moreActionsPopUpMenu.pageTitle;
			}
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_IMAGE )
				targetType = 'Image';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_PAGE_SET )
				targetType = 'PageSet';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_EXTERNAL_FILE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_REGISTERED_URL )
				targetType = 'RegisteredURL';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == commonspot.constants.PAGETYPE_USER_TEMPLATE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_BASE_TEMPLATE )
				targetType = 'Template';
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/contacts.html' +
													 '?id=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													 '&title=' + title +
													 '&targetType=' + targetType);
			break;

		case 'manageNotes':
			var targetType = '' ;
			var title = commonspotLocal.pageList.moreActionsPopUpMenu.fileName;

			if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (!commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
				 targetType = 'Page';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_NORMAL && (commonspotLocal.pageList.moreActionsPopUpMenu.isUploadedDoc))
			{
				targetType = 'UploadedDocument';
				title = commonspotLocal.pageList.moreActionsPopUpMenu.pageTitle;
			}
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_IMAGE )
				targetType = 'Image';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_PAGE_SET )
				targetType = 'PageSet';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_EXTERNAL_FILE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_REGISTERED_URL )
				targetType = 'RegisteredURL';
			else if( parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == commonspot.constants.PAGETYPE_USER_TEMPLATE || parseInt(commonspotLocal.pageList.moreActionsPopUpMenu.pageType) == top.commonspot.constants.PAGETYPE_BASE_TEMPLATE )
				targetType = 'Template';
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/notes.html' +
													 '?id=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													 '&title=' + title +
													 '&targetType=' + targetType );
			break;

		default:
			alert('NEEDSWORK: This action needs to be hooked up.');
			break;
	}
};

/**
 * moreActionsMenuCallback for Images:
 *  	Callback function that is called when the user selects one of the 'More Actions' menu options.
 */
commonspotLocal.pageList.imageMoreActionsMenuCallback = function(selectedOption, selectedOptionText)
{
	var subsiteURL = commonspotLocal.pageList.moreActionsPopUpMenu.subsiteURL;
	var params = {}; 
	var dlgUrl = '';
	
	switch(selectedOption)
	{
		case 'imageProperties': 
			params = {pageid: 0 
							 , imagepageid: commonspotLocal.pageList.moreActionsPopUpMenu.pageID 
						    , Action: 'EditProperties'
						    , ImageCallback: 'refreshPageListCallback'
						    , curpage: 0
					  		};										
			dlgUrl = subsiteURL + 'loader.cfm?csmodule=controls/imagecommon/add-image&' + Object.toQueryString(params);
  			top.commonspot.lightbox.openDialog(dlgUrl); 
													
			break;
		case 'imageCustomProperties':
			params = {bProcessType: 7
						, callbackFunction: 'getFilteredResults'
						, pageid: commonspotLocal.pageList.moreActionsPopUpMenu.pageID
						, setlock: 0
						, buttonAction: 'CustomMetadataOnly'
						, hidePrevious: 1
					  }; 
			dlgUrl = subsiteURL + 'loader.cfm?csModule=pagemode/pageprop-action&' + Object.toQueryString(params);
  			top.commonspot.lightbox.openDialog(dlgUrl);
			break;
		case 'newImageVersion':
			top.commonspot.lightbox.openDialog(subsiteURL + 'loader.cfm?csModule=controls/imagecommon/add-image' +
													'&Action=UploadNewVersion' +
													'&imagepageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													'&ImageCallback=refreshPageListCallback' +
													'&curpage=0');
			break;

		case 'editImage':
			top.commonspot.lightbox.openDialog(subsiteURL + 'loader.cfm?csModule=controls/imagecommon/edit-image' +
													'&pageid=0' +
													'&imagepageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													'&ImageCallback=refreshPageListCallback' +
													'&curpage=0');
			break;
		case 'imageDetails':
			top.commonspot.lightbox.openDialog(subsiteURL + 'loader.cfm?csModule=controls/imagecommon/image-details' +
													'&pageid=0' +
													'&imagepageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID);
			break;
		case 'viewReferringPages':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/referring_pages.html' +
													 '?linktype=imagegallery' +
													 '&imagename=' + commonspotLocal.pageList.moreActionsPopUpMenu.fileName +
													 '&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID);
			break;
		case 'imageVersionHistory':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/tools/image-version-history.html' +
													 '?linktype=imagegallery' +
													 '&imagename=' + commonspotLocal.pageList.moreActionsPopUpMenu.fileName +
													 '&pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID + 
													 '&subsiteURL=' + subsiteURL);

			break;
		case 'imageSecurity':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/security.html' +
													 '?title=' + encodeURIComponent('Image Security') +
													 '&target=ImageSecurity' +
													 '&id=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													 '&objectname=' + commonspotLocal.pageList.moreActionsPopUpMenu.fileName);
			break;
		case 'changeOwner':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/change-owner.html' +
													 '?pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													 '&targetType=Image' +
													 '&title=' + commonspotLocal.pageList.moreActionsPopUpMenu.fileName);
			break;
		case 'manageNotes':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/notes.html' +
													 '?id=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID +
													 '&title=' + commonspotLocal.pageList.moreActionsPopUpMenu.fileName +
													 '&targetType=Image');
			break;

		case 'myTags':
			commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/pageview/tags.html?pageid=' + commonspotLocal.pageList.moreActionsPopUpMenu.pageID + '&objectname=image');
			break;
		default:
			alert('NEEDSWORK: This action needs to be hooked up.');
			break;
	}
}


/**
 * Function to create Actions column context menus.
 * 	Create menu <div>. Re-configure menuSettings. Build menu options.
 */
commonspotLocal.pageList.createActionsContextMenus = function(mode)
{
	// EditPage Menu.
	commonspotLocal.pageList.editPagePopUpMenu = new commonspot.contextMenu('editPageMenu', 'editPageMenu', ROW_IMAGE_WIDTH);
	menuSettings.menuCallback = 'editPageMenuCallback';
	commonspotLocal.pageList.buildEditPageMenu(commonspotLocal.pageList.editPagePopUpMenu, menuSettings);

	// Metadata & Security Menu.
	commonspotLocal.pageList.metadataAndSecurityPopUpMenu = new commonspot.contextMenu('metadataAndSecurityMenu', 'metadataAndSecurityMenu', ROW_IMAGE_WIDTH);
	menuSettings.menuCallback = 'commonspotLocal.pageList.metadataAndSecurityMenuCallback';
	commonspotLocal.pageList.buildMetadataAndSecurityMenu(commonspotLocal.pageList.metadataAndSecurityPopUpMenu, menuSettings);
	commonspotLocal.pageList.metadataAndSecurityPopUpMenu.mode = mode;

	// MoreActions Menu.
	commonspotLocal.pageList.moreActionsPopUpMenu = new commonspot.contextMenu('moreActionsMenu', 'moreActionsMenu', ROW_IMAGE_WIDTH);
	menuSettings.menuCallback = 'commonspotLocal.pageList.moreActionsMenuCallback';

	commonspotLocal.pageList.moreActionsPopUpMenu.mode = mode;
	commonspotLocal.pageList.buildMoreActionsMenu(commonspotLocal.pageList.moreActionsPopUpMenu, menuSettings);
};

/**
 * Function to create Actions column context menus for Image dialogs.
 * 	Create menu <div>. Re-configure menuSettings. Build menu options.
 */
commonspotLocal.pageList.createImagesActionsContextMenus = function()
{
	// MoreActions Menu.
	commonspotLocal.pageList.moreActionsPopUpMenu = new commonspot.contextMenu('moreActionsMenu', 'moreActionsMenu', ROW_IMAGE_WIDTH);
	menuSettings.menuCallback = 'commonspotLocal.pageList.imageMoreActionsMenuCallback';
	commonspotLocal.pageList.buildImageMoreActionsMenu(commonspotLocal.pageList.moreActionsPopUpMenu, menuSettings);
};


/**
 * Function to create HTML for permissions column
 * to be used in Template-InheritancesSecurity, Element-InheritanceSecurity,
 * Page-Security, Element-Instance Security, SubsiteContent Security
 */
 commonspotLocal.pageList.formatPermissionColumn = function (row)
 {
 	var html = '';

	var allPerms = row.allpermissions + ',' + row.enforcedpermissions;
	var arrAllPerms = (allPerms != ',') ? allPerms.replace(/,+$/, '').split(',').uniq() : ['(no rights)'];

	var arrEnforcedPerms = (row.enforcedpermissions != '') ? row.enforcedpermissions.split(',') : ['empty'];
	var arrInheritedEnforcedPerms = (row.inheritedenforcedpermissions != '') ? row.inheritedenforcedpermissions.split(',') : ['empty'];

	for (var i = 0; i < arrAllPerms.length; i++)
	{
		if (arrEnforcedPerms.indexOf(arrAllPerms[i]) >= 0)
		{
			if(arrInheritedEnforcedPerms.indexOf(arrAllPerms[i]) >= 0)
			{
				html += '<font color="red"><strong>' + arrAllPerms[i] + '</strong></font>' + ', ';
			}
			else
			{
				html += '<font color="red">' + arrAllPerms[i] + '</font>' + ', ';
			}
		}
		else
		{
			html += arrAllPerms[i] + ', ';
		}
	}

	// remove comma from the end of the strng.
	html = html.replace(/,\s+$/,'');

	return html;
 }


// Variables/Dataset are used only for Copy/Move opeartion
var commonspotLocalData = {};
commonspotLocalData.Page_copy = null;
commonspotLocalData.Page_move = null;
var copyMoveSessionVars = {};

/**
 * Function to open appropriate spry dialog for copy/move/rename etc. purpose - A Callback Function
 */
function copyMoveCallback(destinationSubsiteURL, destinationSubsiteID, dialogType, strSelectedPageIDs, targetName) // dialogType, subsiteurl, subsiteid
{
	copyMoveSessionVars.dialogType = dialogType;
	copyMoveSessionVars.selectedPageIDs = strSelectedPageIDs;
	copyMoveSessionVars.destinationSubsiteURL = destinationSubsiteURL;
	copyMoveSessionVars.LOADER_URL = copyMoveSessionVars.destinationSubsiteURL + 'loader.cfm';
	copyMoveSessionVars.targetName = ( typeof targetName != 'undefined' && targetName != 'undefined' && targetName != '' ) ? targetName : 'Page';

	commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/common/delete-conflict.html?pageIDList=' +
									copyMoveSessionVars.selectedPageIDs + '&linktype=' + copyMoveSessionVars.targetName +
									'&action=' + copyMoveSessionVars.dialogType + '&destinationSubsiteURL=' +
									copyMoveSessionVars.destinationSubsiteURL );

	//getBulkCopyMoveConflicts();
}

/*
 * Function to call getBulkCopyMoveConflicts command .
 */
function getBulkCopyMoveConflicts()
{
	var methodName = '';
	var LOADER_URL = copyMoveSessionVars.LOADER_URL;
	var args = {};
	args.subsiteIDOrURL = copyMoveSessionVars.destinationSubsiteURL;	
	args.idList = copyMoveSessionVars.selectedPageIDs;

	if( copyMoveSessionVars.dialogType == 'copy' )
		methodName = 'getCopyConflicts';

	if( copyMoveSessionVars.dialogType == 'moveMultiple' )
		methodName = 'getMoveConflicts';

	commonspotLocalData.getConflicts = new commonspot.spry.Dataset({ xpath: commonspot.data.ARRAY_XPATH });
	var collectionOptions = {onCompleteCallback: onCompleteCallback_CopyMoveConflictsCmds};
	var cmds = commonspot.ajax.commandEngine.commandCollectionFactory.getInstance(LOADER_URL, collectionOptions);
	var cmdOptions = {datasetRoot: commonspotLocalData, datasetName: 'getConflicts' };

	cmds.add('Content', methodName, args, cmdOptions);
	cmds.send();
}

/*
 * This callback function is called when the copy or move execution completes.
 */
function onCompleteCallback_CopyMoveConflictsCmds()
{
	if( this.hasAnyError )
		return;

	var count = commonspotLocalData.getConflicts.getRowCount();
	var flag = false;

	//Loop through all records to check for any records other than status OK
	for( var i = 0; i < count; i++)
	{
		if(commonspotLocalData.getConflicts.getData()[i]["status"] != "OK")
		{
			flag = true;
			break;
		}
		else
			flag = false;
	}

	if( flag == true )
		//commonspot.lightbox.loadSpryURL('/commonspot/dashboard/dialogs/common/copy-move-error.html?destinationSubsiteURL='+ copyMoveSessionVars.destinationSubsiteURL +'&mode='+ copyMoveSessionVars.dialogType +'&selectedPageIDs='+ copyMoveSessionVars.selectedPageIDs + '&targetName=' + copyMoveSessionVars.targetName);
		commonspot.lightbox.openDialog('/commonspot/dashboard/dialogs/common/delete-conflict.html?pageIDList=' +
										copyMoveSessionVars.selectedPageIDs + '&linktype=' + copyMoveSessionVars.targetName +
										'&action=' + copyMoveSessionVars.dialogType + '&destinationSubsiteURL=' + copyMoveSessionVars.destinationSubsiteURL);
	else
		issueCopyMoveCommand();
}

/**
 * issue Copy/Move Command.
 */
/*
function issueCopyMoveCommand()
{
	commonspotLocalData.copyMove = new commonspot.spry.Dataset({ xpath: commonspot.data.VALUE_XPATH });

	var LOADER_URL = copyMoveSessionVars.LOADER_URL;
	var collectionOptions = {onCompleteCallback: onCompleteCallback_CopyMoveCmds};
	var cmds = commonspot.ajax.commandEngine.commandCollectionFactory.getInstance(LOADER_URL, collectionOptions);

	var args = {};
	args.idList = copyMoveSessionVars.selectedPageIDs;

	var method = (copyMoveSessionVars.dialogType == 'copy')? 'copyMultiple' : 'moveMultiple';

	var cmdOptions = {datasetRoot: commonspotLocalData, datasetName: 'copyMove' };
	cmds.add('content', method, args, cmdOptions);
	cmds.send();
}

/*
 * This callback function is called when the copy or move execution completes.
 */
function onCompleteCallback_CopyMoveCmds()
{
	if( this.hasAnyError )
		return;

		var rows = commonspotLocalData.copyMove.getData();
		var dialogType = copyMoveSessionVars.dialogType;
		var title = (dialogType == 'copy') ? 'Copy Status' : 'Move Status';
		var subtitle = 'The following displays the status of the \''+ dialogType +'\' operation.';

		if (typeof (rows[0]) != 'undefined')
		{
			var jobID =  rows[0]["data"];
			if (jobID !='')
				commonspot.lightbox.loadSpryURL('/commonspot/dashboard/dialogs/common/job-manager-status.html?scope=site&mode='+ dialogType +'&jobid='+ jobID +'&title='+ title +'&subtitle='+ subtitle);
		}
}

function validateCopyPageIDList(selectedIDList, targetName)
{
	commonspotLocalData.SiteTools_validateObject = new commonspotLocal.SimpleJSDataSet();
	var collectionOptions = {closeOnError: 0, onCompleteCallback: validateCopyPageIDListOnComplete, selectedIDList: selectedIDList, targetName: targetName};
	var cmds = commonspot.ajax.commandEngine.commandCollectionFactory.getInstance(LOADER_URL, collectionOptions);
	var errorMessage = 'Only pages and templates can be copied. Please deselect any uploaded documents and/or registered urls if you wish to perform the \'Copy Selected\' operation';
	var args = {errorMessage: errorMessage, validationType: 'RealPageIDList', object: selectedIDList};
	var cmdOptions = {datasetRoot: commonspotLocalData, commandResponseHandler: false};

	cmds.add('SiteTools', 'validateObject', args, cmdOptions);
	cmds.send();
}

function validateCopyPageIDListOnComplete()
{
	if(this.hasAnyError) // if pagelist isn't valid or error finding that out, we're closing, so don't do anything further
		return;

	doCopy(this.options.selectedIDList, this.options.targetName);
}

function doCopy(selectedIDList, targetName)
{
	var params = {mode: 'copyMultiple' , title: 'Copy Page', selectedPageIDs: selectedIDList, targetName: targetName
					, requiredPermission: 'CreatePages', ismultiselect: 0, callback: 'copyMoveCallback'};
	var dlgUrl = '/commonspot/dashboard/dialogs/common/destination-subsite.html?' + Object.toQueryString(params);
	commonspot.lightbox.openDialog(dlgUrl);
}

/*
 * Function to get permissions for a image.
 */
commonspotLocal.pageList.issueGetImageMenuPerms = function(objCallbackArgs, action)
{
	var loader = objCallbackArgs.subsiteURL + 'loader.cfm';
	var collectionOptions = {onCompleteCallback: onCompleteCallback_issueGetImageMenuPermsCmd, closeOnError: 1,  objCallbackArgs: objCallbackArgs,	action: action};
	var cmds = commonspot.ajax.commandEngine.commandCollectionFactory.getInstance(loader, collectionOptions);

	var cmdOptions = {datasetRoot: commonspotLocalData, datasetName: 'ImageSecurity_getUserRights' };
	cmds.add('ImageSecurity', 'getUserRights', {imageID: objCallbackArgs.imageID}, cmdOptions);
		
	cmdOptions = {datasetRoot: commonspotLocalData, datasetName: 'SubSiteGeneralSecurity_GetUserRights'};
	cmds.add('SubSiteGeneralSecurity', 'GetUserRights', {subsiteIDOrURL: objCallbackArgs.subsiteURL}, cmdOptions);

	cmdOptions = {datasetRoot: commonspotLocalData, datasetName: 'SiteGeneralSecurity_GetUserRights'};
	cmds.add('SiteGeneralSecurity', 'GetUserRights', '', cmdOptions);

	cmds.send();
}

/*
 * Calback function for issueGetImageMenuPerms.
 */
function onCompleteCallback_issueGetImageMenuPermsCmd()
{
	if( this.hasAnyError )
		return;

	this.options.objCallbackArgs.permissionList = commonspotLocalData.ImageSecurity_getUserRights.getData()[0]["allpermissions"];

	var param = this.options.objCallbackArgs;
	param.subsiteGeneralSecurityPermissionList = commonspotLocalData.SubSiteGeneralSecurity_GetUserRights.getData()[0]["data"];
	param.siteGeneralSecurityPermissionList = commonspotLocalData.SiteGeneralSecurity_GetUserRights.getData()[0]["data"];

	var permissions = {};
	permissions.imagePermissionList = param.permissionList;
	permissions.subsiteGeneralSecurityPermissionList = param.subsiteGeneralSecurityPermissionList;
	permissions.siteGeneralSecurityPermissionList = param.siteGeneralSecurityPermissionList;

	var objPermissions = { key: param.imageID, value: permissions };
	commonspotLocal.pageList.arrImageMoreActionsPerms.push(objPermissions);
	commonspotLocal.pageList.invokeImageMoreActionsMenu(param.obj, param.event, param.pageType, param.isUploadedDoc, param.imageID, param.fileName, param.subsiteURL, param.isPublic, param.menuTop, param.menuLeft)
}

