/**
 * commonspot.admin: CommonSpot admin package
 */
commonspot.admin = {};

/*
 * basic specs
 */
commonspot.admin.BASE_MODE = 'admin'; // base mode that's us


/**
 * data and methods common to all admin pages
 */
commonspot.admin.common = {};

commonspot.admin.common.IFRAME_ID = 'admin_iframe'; // also its name
commonspot.admin.common.HEADER_HEIGHT = 50; // Height of the header and the top menu


/*
 * getAdminLoaderURL
 * returns the proper loader given the type
 *
 *	@param string adminArea: server, site, subsite, user, or group
 */
commonspot.admin.common.getLoaderURL = function(adminArea)
{
	var loaderType = adminArea;
	if(adminArea == 'user' || adminArea == 'group')
		loaderType = 'site';
	var loader = commonspot.clientUI.state.location.getLoaderURL(loaderType);
	return loader;	
};

/*
 * manages admin left side "menu"
 */
commonspot.admin.common.leftSideMenu = {};

/*
 * manages clicks on child items; these all open admin dlgs
 */
commonspot.admin.common.leftSideMenu.itemClick = function(menuObj, loader, dlgUrl, type, qryParams)
{
	var loaderUrl = '';

	if(!type)
		type = 'cfm';
		
	if(type == 'cfm')	
	{
		loaderUrl = loader + '?csModule=' + dlgUrl;
		
		if (typeof qryParams != 'undefined')
			loaderUrl += '&' + qryParams;
		
		// NEEDSWORK: temp; use next block when ready
		window.open(loaderUrl, 'admin_dialog', 'left=10,top=10,width=500,height=350,resizable', true);
		
		// NEEDSWORK: we'll eventually do this, but dlgs need to tell lightbox how big they are first
		//commonspot.dialog.server.show(loaderUrl);
		
	}	
	else if( type == 'stub' )		// NEEDSWORK: This is temporary
	{
		loaderUrl = "/commonspot/dashboard/dialogs/" + dlgUrl + ".html";
		
		if (typeof qryParams != 'undefined')
			loaderUrl += '?' + qryParams;

		// NEEDSWORK: temp; use next block when ready
		window.open(loaderUrl, 'admin_dialog', 'left=10,top=10,width=500,height=350,resizable', true);
	}
	else
	{
		loaderUrl = "/commonspot/dashboard/dialogs/" + dlgUrl + ".html";
		if (typeof qryParams != 'undefined')
			loaderUrl += '?' + qryParams;

		commonspot.dialog.client.show(loaderUrl);
	}
}

/*
 * Handles Expand All and Collapse All btns
 * Expands or contracts all sections. Resets arrow images.
 */
commonspot.admin.common.leftSideMenu.expandCollapseAll = function(document, objCollapsiblePanelGroup, expandOrCollapse)
{
	
	switch (expandOrCollapse)
	{
		case true: // Expand All
			objCollapsiblePanelGroup.openAllPanels();
			commonspot.admin.common.ResizePage();
			break;
			
		case false: // Collapse All
			objCollapsiblePanelGroup.closeAllPanels();
			break;
	}
}

/*
 * Adjust the Page Size inside Iframe according to the left menu height
 */
commonspot.admin.common.ResizePage = function()
{
	setTimeout(resize,500);
	 
	function resize()
	{ 
		//var maxAvlHeight = commonspot.util.dom.getWinSize().height - commonspot.admin.common.HEADER_HEIGHT; 	
		var adminIframe = $(commonspot.admin.common.IFRAME_ID);
		
		if ((adminIframe) && (adminIframe.contentWindow.ResizeAdminPage))
			adminIframe.contentWindow.ResizeAdminPage();		 
	} 
} 

/*
 * Get the max page height to be set.
 */
commonspot.admin.common.GetPageSize = function(document, collapsiblePanelName, rightPanel)
{
	var maxAvlHeight = commonspot.util.dom.getWinSize().height - 50; 	
	var maxPageHeight = maxAvlHeight;
	var pageTitleHeight = 50;
	var leftPanelHeight = document.getElementById(collapsiblePanelName).offsetHeight + pageTitleHeight;
	var rightPanelHeight = document.getElementById(rightPanel).offsetHeight + pageTitleHeight;
 
	if ((leftPanelHeight > maxAvlHeight) && (leftPanelHeight > rightPanelHeight))
		maxPageHeight = leftPanelHeight;
		
	if ((rightPanelHeight > maxAvlHeight) && (rightPanelHeight > leftPanelHeight))
		maxPageHeight = rightPanelHeight;
		
	return { height : maxPageHeight-25 };			
} 

/*
 * loads admin pages in response to clientUI mode changes
 */
commonspot.admin.common.pageLoader = {};
commonspot.admin.common.pageLoader.onDataChanged = function(dataset)
{
	var modeData = dataset.getCurrentRow();
	if(modeData.baseMode == 'admin')
	{
		var mode = modeData.mode;
		var template = getTemplate(mode);
		var adminIframe = $(commonspot.admin.common.IFRAME_ID);
		adminIframe.contentWindow.location.replace(template); // replace avoids creating 2 entries in history
	};
	
	/*
	 * returns admin template page for passed mode
	 * @param string mode: clientUI mode (server_admin, site_admin etc)
	 * 	assumes it's an admin mode
	 */
	function getTemplate(mode)
	{
		return mode.replace(/_/g, '-') + '.html';
	};
}
commonspot.data.uiState.dsMode.addObserver(commonspot.admin.common.pageLoader);


/*
 * adjusts anything in admin that needs regular updates
 */
commonspot.admin.common.uiWatcher = function(dataset)
{	 
   if (commonspot.admin)
      var modeData = commonspot.admin;
   else   
   	var modeData = dataset.getCurrentRow();		
	 	
	//if(modeData.baseMode == 'admin')
	if(modeData.BASE_MODE == 'admin')
	{
		// resize iframe to available height
		var winSize = commonspot.util.dom.getWinSize();
		var avlMaxHeight = winSize.height - commonspot.admin.common.HEADER_HEIGHT;
		var adminIframe = $(commonspot.admin.common.IFRAME_ID);		
		adminIframe.style.height = avlMaxHeight + 'px'; 
		$('mycs').style.height = avlMaxHeight + 'px';	
	}
   //alert('in ui');
   //commonspot.util.css.setStyleRuleProperty('default_css','admin_iframe','height','500px !important');
};


/**
 * server admin
 */
commonspot.admin.server = {};


/**
 * site admin
 */
commonspot.admin.site = {};


/**
 * subsite admin
 */
commonspot.admin.subsite = {};


/**
 * user admin
 */
commonspot.admin.user = {};


/**
 * group admin
 */
commonspot.admin.group = {};


/**
 * admin tools
 */
commonspot.admin.tools = {};
