const Setting = require('lib/models/Setting.js');
const { Platform } = require('react-native');

const globalStyle = {
	fontSize: 16,
	margin: 15, // No text and no interactive component should be within this margin
	itemMarginTop: 10,
	itemMarginBottom: 10,
	backgroundColor: "#ffffff",
	color: "#555555", // For regular text
	colorError: "red",
	colorWarn: "#9A5B00",
	colorFaded: "#777777", // For less important text
	fontSizeSmaller: 14,
	dividerColor: "#dddddd",
	selectedColor: '#e5e5e5',
	disabledOpacity: 0.2,
	colorUrl: '#000CFF',
	textSelectionColor: "#0096FF",

	raisedBackgroundColor: "#0080EF",
	raisedColor: "#003363",
	raisedHighlightedColor: "#ffffff",

	warningBackgroundColor: "#FFD08D",

	// For WebView - must correspond to the properties above
	htmlFontSize: '16px',
	htmlColor: 'black', // Note: CSS in WebView component only supports named colors or rgb() notation
	htmlBackgroundColor: 'white',
	htmlDividerColor: 'Gainsboro',
	htmlLinkColor: 'blue',
	htmlLineHeight: '20px',
};

globalStyle.marginRight = globalStyle.margin;
globalStyle.marginLeft = globalStyle.margin;
globalStyle.marginTop = globalStyle.margin;
globalStyle.marginBottom = globalStyle.margin;
globalStyle.htmlMarginLeft = ((globalStyle.marginLeft / 10) * 0.6).toFixed(2) + 'em';

// globalStyle.icon = {
// 	color: globalStyle.color,
// 	fontSize: 30,
// };

// globalStyle.lineInput = {
// 	color: globalStyle.color,
// 	backgroundColor: globalStyle.backgroundColor,
// };

// globalStyle.buttonRow = {
// 	flexDirection: 'row',
// 	borderTopWidth: 1,
// 	borderTopColor: globalStyle.dividerColor,
// 	paddingTop: 10,
// };

// globalStyle.normalText = {
// 	color: globalStyle.color,
// 	fontSize: globalStyle.fontSize,
// };

let themeCache_ = {};

function addExtraStyles(style) {
	style.icon = {
		color: style.color,
		fontSize: 30,
	};

	style.lineInput = {
		color: style.color,
		backgroundColor: style.backgroundColor,
	};

	if (Platform.OS === 'ios') {
		style.lineInput.borderBottomWidth = 1;
		style.lineInput.borderBottomColor = style.dividerColor;
	}

	style.buttonRow = {
		flexDirection: 'row',
		borderTopWidth: 1,
		borderTopColor: style.dividerColor,
		paddingTop: 10,
	};

	style.normalText = {
		color: style.color,
		fontSize: style.fontSize,
	};

	style.urlText = {
		color: style.colorUrl,
		fontSize: style.fontSize,
	};

	return style;
}

function themeStyle(theme) {
	if (!theme) {
		console.warn('Theme not set!! Defaulting to Light theme');
		theme = Setting.THEME_LIGHT;
	}

	if (themeCache_[theme]) return themeCache_[theme];

	let output = Object.assign({}, globalStyle);
	if (theme == Setting.THEME_LIGHT) return addExtraStyles(output);

	output.backgroundColor = '#1D2024';
	output.color = '#dddddd';
	output.colorFaded = '#777777';
	output.dividerColor = '#555555';
	output.selectedColor = '#333333';
	output.textSelectionColor = '#00AEFF';

	output.raisedBackgroundColor = "#0F2051";
	output.raisedColor = "#788BC3";
	output.raisedHighlightedColor = "#ffffff";

	output.htmlColor = 'rgb(220,220,220)';
	output.htmlBackgroundColor = 'rgb(29,32,36)';
	output.htmlLinkColor = 'rgb(166,166,255)';

	themeCache_[theme] = output;
	return addExtraStyles(themeCache_[theme]);
}

module.exports = { globalStyle, themeStyle };