/**  
 * @fileoverview This file contains functions and variables for panel themes.
 * @author Mark Hendrickson <mhendric@bowdoin.edu>
 * @version 1.0
 */

// associative array to store panel themes
var panel_themes = new Array();

// associative array of arrays to store settings for the various themes
var theme_settings = new Array();

// theme variables
var theme_images_dir = 'images/';

// default theme settings
theme_settings["default"] = new Array();
theme_settings["default"]["panel_background_color"] = 'white';
theme_settings["default"]["panel_border_left_color"] = '#E1DFD4';
theme_settings["default"]["panel_border_top_color"] = '#E1DFD4';
theme_settings["default"]["panel_border_right_color"] = '#C5C3B5';
theme_settings["default"]["panel_border_bottom_color"] = '#C1BFB1';
theme_settings["default"]["panel_header_color"] = '#404040';
theme_settings["default"]["panel_header_border_bottom_color"] = '#C3C1B3';
theme_settings["default"]["panel_header_background_image"] = 'panel_header_bg.gif';
theme_settings["default"]["panel_header_arrow_down"] = 'arrow_down.gif';
theme_settings["default"]["panel_header_arrow_right"] = 'arrow_right.gif';
theme_settings["default"]["panel_header_menu_theme"] = 'theme.gif';
theme_settings["default"]["panel_header_menu_close"] = 'close.gif';

// "dark_blue" theme settings
theme_settings["dark_blue"] = new Array();
theme_settings["dark_blue"]["panel_background_color"] = 'white';
theme_settings["dark_blue"]["panel_border_left_color"] = '#63A1CD';
theme_settings["dark_blue"]["panel_border_top_color"] = '#63A1CD';
theme_settings["dark_blue"]["panel_border_right_color"] = '#297EB8';
theme_settings["dark_blue"]["panel_border_bottom_color"] = '#297EB8';
theme_settings["dark_blue"]["panel_header_color"] = 'white';
theme_settings["dark_blue"]["panel_header_border_bottom_color"] = '#297EB8';
theme_settings["dark_blue"]["panel_header_background_image"] = 'panel_header_bg_dark_blue.gif';
theme_settings["dark_blue"]["panel_header_arrow_down"] = 'arrow_down_dark_blue.gif';
theme_settings["dark_blue"]["panel_header_arrow_right"] = 'arrow_right_dark_blue.gif';
theme_settings["dark_blue"]["panel_header_menu_theme"] = 'theme_dark_blue.gif';
theme_settings["dark_blue"]["panel_header_menu_close"] = 'close_dark_blue.gif';

// "light_blue" theme settings
theme_settings["light_blue"] = new Array();
theme_settings["light_blue"]["panel_background_color"] = 'white';
theme_settings["light_blue"]["panel_border_left_color"] = '#C7D4DD';
theme_settings["light_blue"]["panel_border_top_color"] = '#C7D4DD';
theme_settings["light_blue"]["panel_border_right_color"] = '#B1C4D0';
theme_settings["light_blue"]["panel_border_bottom_color"] = '#B1C4D0';
theme_settings["light_blue"]["panel_header_color"] = '#404040';
theme_settings["light_blue"]["panel_header_border_bottom_color"] = '#B1C4D0';
theme_settings["light_blue"]["panel_header_background_image"] = 'panel_header_bg_light_blue.gif';
theme_settings["light_blue"]["panel_header_arrow_down"] = 'arrow_down_light_blue.gif';
theme_settings["light_blue"]["panel_header_arrow_right"] = 'arrow_right_light_blue.gif';
theme_settings["light_blue"]["panel_header_menu_theme"] = 'theme_light_blue.gif';
theme_settings["light_blue"]["panel_header_menu_close"] = 'close_light_blue.gif';

// "dark_green" theme settings
theme_settings["dark_green"] = new Array();
theme_settings["dark_green"]["panel_background_color"] = 'white';
theme_settings["dark_green"]["panel_border_left_color"] = '#53CB48';
theme_settings["dark_green"]["panel_border_top_color"] = '#53CB48';
theme_settings["dark_green"]["panel_border_right_color"] = '#17B717';
theme_settings["dark_green"]["panel_border_bottom_color"] = '#17B717';
theme_settings["dark_green"]["panel_header_color"] = 'white';
theme_settings["dark_green"]["panel_header_border_bottom_color"] = '#17B717';
theme_settings["dark_green"]["panel_header_background_image"] = 'panel_header_bg_dark_green.gif';
theme_settings["dark_green"]["panel_header_arrow_down"] = 'arrow_down_dark_green.gif';
theme_settings["dark_green"]["panel_header_arrow_right"] = 'arrow_right_dark_green.gif';
theme_settings["dark_green"]["panel_header_menu_theme"] = 'theme_dark_green.gif';
theme_settings["dark_green"]["panel_header_menu_close"] = 'close_dark_green.gif';

// "light_green" theme settings
theme_settings["light_green"] = new Array();
theme_settings["light_green"]["panel_background_color"] = 'white';
theme_settings["light_green"]["panel_border_left_color"] = '#A3D59E';
theme_settings["light_green"]["panel_border_top_color"] = '#A3D59E';
theme_settings["light_green"]["panel_border_right_color"] = '#83C883';
theme_settings["light_green"]["panel_border_bottom_color"] = '#83C883';
theme_settings["light_green"]["panel_header_color"] = '#404040';
theme_settings["light_green"]["panel_header_border_bottom_color"] = '#83C883';
theme_settings["light_green"]["panel_header_background_image"] = 'panel_header_bg_light_green.gif';
theme_settings["light_green"]["panel_header_arrow_down"] = 'arrow_down_light_green.gif';
theme_settings["light_green"]["panel_header_arrow_right"] = 'arrow_right_light_green.gif';
theme_settings["light_green"]["panel_header_menu_theme"] = 'theme_light_green.gif';
theme_settings["light_green"]["panel_header_menu_close"] = 'close_light_green.gif';

// "yellow" theme settings
theme_settings["yellow"] = new Array();
theme_settings["yellow"]["panel_background_color"] = 'white';
theme_settings["yellow"]["panel_border_left_color"] = '#E8E876';
theme_settings["yellow"]["panel_border_top_color"] = '#E8E876';
theme_settings["yellow"]["panel_border_right_color"] = '#D6D66D';
theme_settings["yellow"]["panel_border_bottom_color"] = '#D6D66D';
theme_settings["yellow"]["panel_header_color"] = '#404040';
theme_settings["yellow"]["panel_header_border_bottom_color"] = '#D6D66D';
theme_settings["yellow"]["panel_header_background_image"] = 'panel_header_bg_yellow.gif';
theme_settings["yellow"]["panel_header_arrow_down"] = 'arrow_down_yellow.gif';
theme_settings["yellow"]["panel_header_arrow_right"] = 'arrow_right_yellow.gif';
theme_settings["yellow"]["panel_header_menu_theme"] = 'theme_yellow.gif';
theme_settings["yellow"]["panel_header_menu_close"] = 'close_yellow.gif';

// "dark_pink" theme settings
theme_settings["dark_pink"] = new Array();
theme_settings["dark_pink"]["panel_background_color"] = 'white';
theme_settings["dark_pink"]["panel_border_left_color"] = '#DD8ED1';
theme_settings["dark_pink"]["panel_border_top_color"] = '#DD8ED1';
theme_settings["dark_pink"]["panel_border_right_color"] = '#D166C0';
theme_settings["dark_pink"]["panel_border_bottom_color"] = '#D166C0';
theme_settings["dark_pink"]["panel_header_color"] = 'white';
theme_settings["dark_pink"]["panel_header_border_bottom_color"] = '#D166C0';
theme_settings["dark_pink"]["panel_header_background_image"] = 'panel_header_bg_dark_pink.gif';
theme_settings["dark_pink"]["panel_header_arrow_down"] = 'arrow_down_dark_pink.gif';
theme_settings["dark_pink"]["panel_header_arrow_right"] = 'arrow_right_dark_pink.gif';
theme_settings["dark_pink"]["panel_header_menu_theme"] = 'theme_dark_pink.gif';
theme_settings["dark_pink"]["panel_header_menu_close"] = 'close_dark_pink.gif';

// "light_pink" theme settings
theme_settings["light_pink"] = new Array();
theme_settings["light_pink"]["panel_background_color"] = 'white';
theme_settings["light_pink"]["panel_border_left_color"] = '#E3C7DF';
theme_settings["light_pink"]["panel_border_top_color"] = '#E3C7DF';
theme_settings["light_pink"]["panel_border_right_color"] = '#D6B0D0';
theme_settings["light_pink"]["panel_border_bottom_color"] = '#D6B0D0';
theme_settings["light_pink"]["panel_header_color"] = '#404040';
theme_settings["light_pink"]["panel_header_border_bottom_color"] = '#D6B0D0';
theme_settings["light_pink"]["panel_header_background_image"] = 'panel_header_bg_light_pink.gif';
theme_settings["light_pink"]["panel_header_arrow_down"] = 'arrow_down_light_blue.gif';
theme_settings["light_pink"]["panel_header_arrow_right"] = 'arrow_right_light_blue.gif';
theme_settings["light_pink"]["panel_header_menu_theme"] = 'theme_light_blue.gif';
theme_settings["light_pink"]["panel_header_menu_close"] = 'close_light_blue.gif';

// "dark_red" theme settings
theme_settings["dark_red"] = new Array();
theme_settings["dark_red"]["panel_background_color"] = 'white';
theme_settings["dark_red"]["panel_border_left_color"] = '#D36A6A';
theme_settings["dark_red"]["panel_border_top_color"] = '#D36A6A';
theme_settings["dark_red"]["panel_border_right_color"] = '#D03F3F';
theme_settings["dark_red"]["panel_border_bottom_color"] = '#D03F3F';
theme_settings["dark_red"]["panel_header_color"] = 'white';
theme_settings["dark_red"]["panel_header_border_bottom_color"] = '#D03F3F';
theme_settings["dark_red"]["panel_header_background_image"] = 'panel_header_bg_dark_red.gif';
theme_settings["dark_red"]["panel_header_arrow_down"] = 'arrow_down_dark_red.gif';
theme_settings["dark_red"]["panel_header_arrow_right"] = 'arrow_right_dark_red.gif';
theme_settings["dark_red"]["panel_header_menu_theme"] = 'theme_dark_red.gif';
theme_settings["dark_red"]["panel_header_menu_close"] = 'close_dark_red.gif';

// "light_red" theme settings
theme_settings["light_red"] = new Array();
theme_settings["light_red"]["panel_background_color"] = 'white';
theme_settings["light_red"]["panel_border_left_color"] = '#D9B4B4';
theme_settings["light_red"]["panel_border_top_color"] = '#D9B4B4';
theme_settings["light_red"]["panel_border_right_color"] = '#D0A0A0';
theme_settings["light_red"]["panel_border_bottom_color"] = '#D0A0A0';
theme_settings["light_red"]["panel_header_color"] = '#404040';
theme_settings["light_red"]["panel_header_border_bottom_color"] = '#D0A0A0';
theme_settings["light_red"]["panel_header_background_image"] = 'panel_header_bg_light_red.gif';
theme_settings["light_red"]["panel_header_arrow_down"] = 'arrow_down_light_red.gif';
theme_settings["light_red"]["panel_header_arrow_right"] = 'arrow_right_light_red.gif';
theme_settings["light_red"]["panel_header_menu_theme"] = 'theme_light_red.gif';
theme_settings["light_red"]["panel_header_menu_close"] = 'close_light_red.gif';

// "dark_orange" theme settings
theme_settings["dark_orange"] = new Array();
theme_settings["dark_orange"]["panel_background_color"] = 'white';
theme_settings["dark_orange"]["panel_border_left_color"] = '#EFAA76';
theme_settings["dark_orange"]["panel_border_top_color"] = '#EFAA76';
theme_settings["dark_orange"]["panel_border_right_color"] = '#E88C45';
theme_settings["dark_orange"]["panel_border_bottom_color"] = '#E88C45';
theme_settings["dark_orange"]["panel_header_color"] = 'white';
theme_settings["dark_orange"]["panel_header_border_bottom_color"] = '#E88C45';
theme_settings["dark_orange"]["panel_header_background_image"] = 'panel_header_bg_dark_orange.gif';
theme_settings["dark_orange"]["panel_header_arrow_down"] = 'arrow_down_dark_orange.gif';
theme_settings["dark_orange"]["panel_header_arrow_right"] = 'arrow_right_dark_orange.gif';
theme_settings["dark_orange"]["panel_header_menu_theme"] = 'theme_dark_orange.gif';
theme_settings["dark_orange"]["panel_header_menu_close"] = 'close_dark_orange.gif';

// "light_orange" theme settings
theme_settings["light_orange"] = new Array();
theme_settings["light_orange"]["panel_background_color"] = 'white';
theme_settings["light_orange"]["panel_border_left_color"] = '#DBB89D';
theme_settings["light_orange"]["panel_border_top_color"] = '#DBB89D';
theme_settings["light_orange"]["panel_border_right_color"] = '#E0AC86';
theme_settings["light_orange"]["panel_border_bottom_color"] = '#E0AC86';
theme_settings["light_orange"]["panel_header_color"] = '#404040';
theme_settings["light_orange"]["panel_header_border_bottom_color"] = '#E0AC86';
theme_settings["light_orange"]["panel_header_background_image"] = 'panel_header_bg_light_orange.gif';
theme_settings["light_orange"]["panel_header_arrow_down"] = 'arrow_down_light_orange.gif';
theme_settings["light_orange"]["panel_header_arrow_right"] = 'arrow_right_light_orange.gif';
theme_settings["light_orange"]["panel_header_menu_theme"] = 'theme_light_orange.gif';
theme_settings["light_orange"]["panel_header_menu_close"] = 'close_light_orange.gif';

var current_theme_picker_panel;

/**
 * Toggles the display of the theme picker in a particular panel.
 * @param {String} panel_name Name of panel in which to display theme picker
 * @param {String} status Indicates whether to show or hide theme picker ("on" or "off")
 */
function toggleThemePicker(panel_name,status)
{
	var theme_picker = $('theme_picker');
	var theme_picker_shadow = $('theme_picker_shadow');
	var theme_picker_button = $('panel_header_menu_theme_'+panel_name);
	var body = document.getElementsByTagName('body')[0];

	if(current_theme_picker_panel != panel_name && status != 'off')
	{
		var panel = $('panel_'+panel_name);
		var panel_x = getX(panel);
		var panel_y = getY(panel);

		theme_picker.style.display = 'block';
		theme_picker.style.top = (panel_y+28)+'px';;
		theme_picker.style.left = (panel_x+139)+'px';;
		
		if(!theme_picker_shadow)
		{
			theme_picker_shadow = document.createElement('div');
			theme_picker_shadow.id = 'theme_picker_shadow';
			body.appendChild(theme_picker_shadow);
		}
		
		theme_picker_shadow.style.display = 'block';
		theme_picker_shadow.style.top = (panel_y+25)+'px';;
		theme_picker_shadow.style.left = (panel_x+136)+'px';;
		theme_picker_shadow.style.height = (theme_picker.offsetHeight+6)+'px';
		theme_picker_shadow.style.width = (theme_picker.offsetWidth+6)+'px';

		theme_picker.onmousedown = function(event) { stopPropagation(event); };
		setTimeout("var body = document.getElementsByTagName('body')[0]; body.onmousedown = function() { if(current_theme_picker_panel == '"+panel_name+"') toggleThemePicker('"+panel_name+"'); };",1);
		
		theme_picker_button.onmousedown = function(event) { stopPropagation(event); };

		current_theme_picker_panel = panel_name;
	}
	else if(current_theme_picker_panel)
	{
		theme_picker.style.display = 'none';
		theme_picker.onmousedown = null;

		theme_picker_shadow.style.display = 'none';

		theme_picker_button.onmousedown = null;

		current_theme_picker_panel = '';
		
		body.onmousedown = null;
	}
}

/**
 * Sets the theme of a particular panel.
 * @param {String} panel_name Name of panel to set theme for, or "all" if all panels to be set with this theme
 * @param {String} theme Name of theme to set
 * @param {Boolean} report Indicates whether to report theme setting or not
 */
function setPanelTheme(panel_name,theme,report)
{
	if(!panel_name)
		panel_name = current_theme_picker_panel;

	if(!theme)
		theme = 'default';

	// if panel name is "all", set theme for all panels
	if(panel_name == 'all')
	{
		var columns = new Array('c1','c2','c3');
		for(var i=0; i<columns.length; i++)
		{
			var column = $(columns[i]);
			var children = column.childNodes;
			for(var j=0; j<children.length; j++)
			{
				if(children[j].nodeType == 1 && children[j].className == 'panel')
					setPanelTheme(children[j].id.substring(6),theme,false);
			}
		}
		
		reportPanels();
		page_customized = true;
	}
	else
	{
		var panel = $('panel_'+panel_name);
		var panel_main = $('panel_main_'+panel_name);
		var panel_header = $('panel_header_'+panel_name);
		var panel_header_arrow = $('panel_header_arrow_'+panel_name);
		var panel_header_menu_theme = $('panel_header_menu_theme_'+panel_name);
		var panel_header_menu_close = $('panel_header_menu_close_'+panel_name);
		
		panel_themes[panel_name] = theme;
		
		if(panel.style.backgroundColor = theme_settings[theme]["panel_background_color"] && panel)
			panel.style.backgroundColor = theme_settings[theme]["panel_background_color"];
		
		if(theme_settings[theme]["panel_border_left_color"] && panel)
			panel.style.borderLeftColor = theme_settings[theme]["panel_border_left_color"];
		
		if(theme_settings[theme]["panel_border_top_color"] && panel)
			panel.style.borderTopColor = theme_settings[theme]["panel_border_top_color"];
		
		if(theme_settings[theme]["panel_border_right_color"] && panel)
			panel.style.borderRightColor = theme_settings[theme]["panel_border_right_color"];
		
		if(theme_settings[theme]["panel_border_bottom_color"] && panel)
			panel.style.borderBottomColor = theme_settings[theme]["panel_border_bottom_color"];
		
		if(theme_settings[theme]["panel_header_color"] && panel_header)
			panel_header.style.color = theme_settings[theme]["panel_header_color"];
		
		if(theme_settings[theme]["panel_header_border_bottom_color"] && panel_header)
			panel_header.style.borderBottomColor = theme_settings[theme]["panel_header_border_bottom_color"];
		
		if(theme_settings[theme]["panel_header_background_image"] && panel_header)
			panel_header.style.backgroundImage = 'url('+theme_images_dir+theme_settings[theme]["panel_header_background_image"]+')';

		if(panel_main.style.display == 'none' && theme_settings[theme]["panel_header_arrow_right"] && panel_header_arrow)
		{
			panel_header_arrow.style.backgroundImage = 'url('+theme_images_dir+theme_settings[theme]["panel_header_arrow_right"]+')';
			
			// preload arrow down image
			var arrow_down = new Image();
			arrow_down.src = theme_images_dir+theme_settings[theme]["panel_header_arrow_down"];
		}
		else if(theme_settings[theme]["panel_header_arrow_down"] && panel_header_arrow)
		{
			panel_header_arrow.style.backgroundImage = 'url('+theme_images_dir+theme_settings[theme]["panel_header_arrow_down"]+')';

			// preload arrow right image
			var arrow_right = new Image();
			arrow_right.src = theme_images_dir+theme_settings[theme]["panel_header_arrow_right"];
		}

		if(theme_settings[theme]["panel_header_menu_theme"] && panel_header_menu_theme)
			panel_header_menu_theme.style.backgroundImage = 'url('+theme_images_dir+theme_settings[theme]["panel_header_menu_theme"]+')';

		if(theme_settings[theme]["panel_header_menu_close"] && panel_header_menu_close)
			panel_header_menu_close.style.backgroundImage = 'url('+theme_images_dir+theme_settings[theme]["panel_header_menu_close"]+')';

		if(report)
			page_customized = true;

		if(report && username)
		{
			if(panel_name.substring(0,8) == 'rss_feed')
			{
				var feed = panel_name.substring(9);
				panel_name = panel_name.substring(0,8);
			}
			else
				var feed = '';
			
			var ajax = initAjax();
			ajax.open('GET','scripts/report_panel_theme.php?timeStamp='+new Date().getTime()+'&panel_name='+panel_name+'&theme='+theme+'&feed='+feed,true);
			ajax.send(null);
		}
	}
}