// ********************************************************************************************* //
// ** Holds all configuration information and hardcoded values, plus some browser information ** //
// ********************************************************************************************* //

var data = { viewport: {}, album: {}, renderer: {}, areas: {}, mats: {}, pics: {}, toolAndMats: {}, storyboard: {}, commands: {}, matThumbs: {}, picThumbs: {}, guiIds: {}, availabilities: {}, pageOperationErrors: {}, notificationArea: {}, openingTool: {} };

// This needs to be called *after* the page is fully loaded for some of the values to be correct on all browsers
function initData() {
//	data.PIS = "http://gw1.pictage.com.ar:8000/servlet/PIS";

	data.autoSaveInterval = 300000; //10000 //

	data.viewport.minWidth = 950;
	data.viewport.minHeight = 550;

	data.reloadSize();

	data.album.maxPixelSize = 250;
	data.album.storyBoardPixelScaleFactor = 0.5;
	data.album.slideshowPixelScaleFactor = 1.6;
	data.album.matBiewPixelScaleFactor = 1.3;
	data.album.pageZoomPixelScaleFactor = 1.6;
	data.album.numPagesTreshold = 5;

	data.defaultBorder = 'Bleed';	//** PATCH! this should be assigned in a setter, and be put in a gui object with gui defaults

	data.renderer.topMargin = 10;
	data.renderer.highlightThickness = 4;
	data.renderer.selectedThickness = 4;
	data.renderer.highlightColor = 'yellow';
	data.renderer.selectedColor = '#FD720B';	//'#00ff66';
	data.renderer.pairsX = 0;
	data.renderer.pairsY = 20;
	data.renderer.imageBorderThickness = 1; 

	data.notificationArea.width = 200;
	data.notificationArea.height = 150;
	data.notificationArea.borderThickness = 1;
	data.notificationArea.border = data.notificationArea.borderThickness + 'px solid #666666';
	data.notificationArea.padding = 10;
	data.notificationArea.textPadding = 5;

	data.areas.zIndex = 300;
	data.areas.offsetX = data.renderer.imageBorderThickness;	// Compensate for the renderer image borders
	data.areas.offsetY = data.renderer.imageBorderThickness;	// Compensate for the renderer image borders

	data.mats.separation = 14;
	data.mats.borderThickness = 1;	//** remove
	data.mats.marginTop = 8;
	data.mats.scrollbarHeight = 36;
	data.mats.toolbarHeight = 20;
	data.mats.toolbarBgColor = '#e9ebf3';
	data.mats.padding = 2;	//** remove
	data.mats.width = 50;
	data.mats.height = 50
	data.mats.highlightThickness = 5;
	data.mats.highlightColor = '#FD720B';	//'#00ff66';
	data.mats.font= '10px arial,geneva,helvetica';	//** remove
	this.data.mats.batchCreationSize = 10;

	data.matThumbs.textAlign = 'center';
	data.matThumbs.borderThickness = 1;
	data.matThumbs.border = 'solid ' + data.matThumbs.borderThickness + 'px #9e9e9e';
	data.matThumbs.fontHeight = 10;
	data.matThumbs.font = data.matThumbs.fontHeight + 'px arial,geneva,helvetica';
	data.matThumbs.padding = 6;
	data.matThumbs.bgColor = '#e0e0e0';
	data.matThumbs.taggedBgColor = '#cdd8f3';
	data.matThumbs.highlightedBgColor = '#F8F8F8';
	data.matThumbs.highlightedTaggedBgColor = '#edf8ff';
	data.matThumbs.highlightedBorder = 'solid ' + data.matThumbs.borderThickness + 'px #bebebe';
	data.matThumbs.width = data.mats.width + 20;
	data.matThumbs.height = data.mats.height;

	data.pics.separation = 7;
//	data.pics.border = 1;	//** remove
	data.pics.marginTop = 10;
//	data.pics.borderThickness = 1;	//** remove
//	data.pics.padding = 3;	//** remove
	data.pics.width = 140;
	data.pics.height = 140;
	data.pics.filtersHeight = 20;
	data.pics.paginationHeight = 30;
	data.pics.toolbarHeight = 20;
	data.pics.highlightThickness = 5;
	data.pics.highlightColor = '#FD720B';	//'#00ff66';
	data.pics.font= '10px arial,geneva,helvetica';	//** remove

	data.picThumbs.textAlign = 'center';
	data.picThumbs.borderThickness = 1;
	data.picThumbs.border = 'solid ' + data.picThumbs.borderThickness + 'px #aaaaaa';
	data.picThumbs.fontHeight = 10;
	data.picThumbs.font = data.picThumbs.fontHeight + 'px arial,geneva,helvetica';
	data.picThumbs.padding = 7;
	data.picThumbs.bgColor = '#e3e3e3';
	data.picThumbs.taggedBgColor = '#acb5cc';//'#cdd8f3';
	data.picThumbs.highlightedBgColor = '#F8F8F8';
	data.picThumbs.highlightedTaggedBgColor = '#ccd5ec';
	data.picThumbs.highlightedBorder = 'solid ' + data.matThumbs.borderThickness + 'px #cacaca';
	data.picThumbs.width = data.pics.width;	// Must be taken from pics properties

	data.toolAndMats.marginTop = 10;
	data.toolAndMats.tabHeight = 20;

	data.availabilities.PUBLIC = 1;
	data.availabilities.PRIVATE = 2;
	data.availabilities.DELETED = 4;

	data.pageOperationErrors.OUT_OF_BOUNDARIES = 1;
	data.pageOperationErrors.REPLACING_IC = 2;
	data.pageOperationErrors.JUST_PANOS = 3;
	data.pageOperationErrors.PAGE_CANT_BE_MOVED = 4

	data.openingTool.handleSize = 10;
	data.openingTool.handleColor = '#FD720B';	//'#00ff66';
	data.openingTool.borderThickness = 4;

	// Bindings between GUI elements and actions. The parameters are taken from the Event object.
	//** There is something redundant here that should be removed
	data.commands.goAlbumPage = 'goAlbumPage';
	data.commands.gui_goAlbumPageNumber = 'goAlbumPage';
	data.commands.gui_showMats = 'showMats';
	data.commands.gui_showTools = 'showTools';
	data.commands.gui_toggleMatsAndToolsPanel = 'toggleMatsAndToolsPanel';
	data.commands.edit_replaceMat = 'replaceMat';
	data.commands.removePage = 'removePage';
	data.commands.edit_insertMatAt = 'insertMatAt';
	data.commands.removeImage = 'removeImage';
	data.commands.edit_assignImage = 'assignImage';
	data.commands.openBackgroundColorTool = 'openBackgroundColorTool';
	data.commands.openCroppingTool = 'openCroppingTool';
	data.commands.setFlopTool = 'setFlopTool';
	data.commands.setBackgroundColorTool = 'setBackgroundColorTool';
	data.commands.setRotateTool = 'setRotateTool';
	data.commands.setRotateToolOpening = 'setRotateToolOpening';
	data.commands.setToningTool = 'setToningTool';
	data.commands.setTransparencyTool = 'setTransparencyTool';
	data.commands.setBorderTool = 'setBorderTool';
	data.commands.setOpeningStackingOrder = 'setOpeningStackingOrder';
	data.commands.updateOpening = 'updateOpening';
	data.commands.sel_setSelectedAlbumItem = 'setSelectedAlbumItem';
	data.commands.sel_setSelectedMat = 'setSelectedMat';
	data.commands.clearSelectedAlbumItem = 'clearSelectedAlbumItem';
	data.commands.setHighlightArea = 'setHighlightArea';
	data.commands.unsetHighlightArea = 'unsetHighlightArea';
	data.commands.updateMatsFilter = 'updateMatsFilter';
	data.commands.updatePicturesFilter = 'updatePicturesFilter';
	data.commands.applyPicturesFilter = 'applyPicturesFilter';
	data.commands.setPicturesList = 'setPicturesList';
	data.commands.setAvailability = 'setAvailability';
	data.commands.goPicturesPage = 'goPicturesPage';
	data.commands.setPictureRowsPerPage = 'setPictureRowsPerPage';
	data.commands.toggleMatsAndTools = 'toggleMatsAndTools';
	data.commands.showMats = 'showMats';
	data.commands.showTools = 'showTools';
	data.commands.updatePaginationSettings = 'updatePaginationSettings';
	data.commands.elementLoadHandler = 'elementLoadHandler';
	data.commands.elementLoadErrorHandler = 'elementLoadErrorHandler';
	data.commands.xmlHttpLoadHandler = 'xmlHttpLoadHandler';
	data.commands.xmlHttpLoadErrorHandler = 'xmlHttpLoadErrorHandler';
	data.commands.showPendingImages = 'showPendingImages';
	data.commands.saveAlbum = 'saveAlbum';
	data.commands.saveAlbumAs = 'saveAlbumAs';
	data.commands.purchaseAlbum = 'purchaseAlbum';
	data.commands.releaseToOwner = 'releaseToOwner';
	data.commands.emailOwner = 'emailOwner';
	data.commands.openSlideshow = 'openSlideshow';
	data.commands.openHelp = 'openHelp';
	data.commands.deleteAlbum = 'deleteAlbum';
	data.commands.handleSavedAlbum = 'handleSavedAlbum';
	data.commands.handleRefreshLock = 'handleRefreshLock';
	data.commands.handleReleaseToOwner = 'handleReleaseToOwner';
	data.commands.changeView = 'changeView';
	data.commands.setMsg = 'setMsg';
	data.commands.windowPrint = 'windowPrint';
	data.commands.pageZoom = 'pageZoom';
	data.commands.printStoryBoard = 'printStoryBoard';
	

	data.guiIds = { headerControls: {}, browser: {}, editPage: {}, tabs: {}, pictures: {}, mats: {}, areas: {}, toolsPicture: {}, toolsMat: {}, toolsOpening: {} };
	data.guiIds.headerControls.del = { click: 'deleteAlbum', id: 'gui_deleteAlbum'};
	data.guiIds.browser.pageNumber = { change: 'gui_goAlbumPageNumber', page: 'fromTextbox', id: 'gui_goAlbumPageNumber' };
	data.guiIds.editPage.remove = { click: 'edit_removePage', id: 'edit_removePage' };
	data.guiIds.editPage.removeImage = { click: 'edit_removeImage', id: 'edit_removeImage' };
	data.guiIds.pictures.categories = { change: 'setPicturesList', type: 'categories', id: 'picturesCategories' };
	data.guiIds.pictures.folders = { change: 'setPicturesList', type: 'folders', id: 'picturesFolders' };
	data.guiIds.pictures.userScanList = { change: 'setPicturesList', type: 'userList', id: 'userScanList' };
	data.guiIds.pictures.availabilityPublic = { click: 'setAvailability', type: data.availabilities.PUBLIC, id: 'availabilityPublic' };
	data.guiIds.pictures.availabilityPrivate = { click: 'setAvailability', type: data.availabilities.PRIVATE, id: 'availabilityPrivate' };
	data.guiIds.pictures.availabilityDeleted = { click: 'setAvailability', type: data.availabilities.DELETED, id: 'availabilityDeleted' };
	data.guiIds.pictures.picsPerPage = { change: 'setPictureRowsPerPage', id: 'picturesPerPage' };
	data.guiIds.pictures.paginationButton = { click: 'goPicturesPage', id: 'goPicturesPage'};
	data.guiIds.pictures.pageNumber = { change: 'goPicturesPage', pageNumber: 'fromTextbox', id: 'goPicsPageNumber'};
	data.guiIds.pictures.thumbs = '';
	data.guiIds.mats.single = { click: 'updateMatsFilter', id: 'mat_filter_' };
	data.guiIds.mats.singleAll = { click: 'updateMatsFilter', id: 'mat_filter_' };
	data.guiIds.mats.pano = { click: 'updateMatsFilter', id: 'mat_filter_' };
	data.guiIds.mats.panoAll = { click: 'updateMatsFilter', id: 'mat_filter_' };
	data.guiIds.mats.thumbs = '';
	data.guiIds.areas = { click: 'sel_setSelectedAlbumItem', mouseover: 'setHighlightArea', mouseout: 'unsetHighlightArea', id: 'opening_area_' };
	data.guiIds.toolsPicture.border = { change: 'setBorderTool', id: 'toolBorder' };
}

data.reloadSize = function () {
	if (self.innerHeight)  { // all except Explorer
		data.viewport.h = self.innerHeight;	
		data.viewport.w = self.innerWidth;
	}		
	else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		data.viewport.w = document.documentElement.clientWidth;
		data.viewport.h = document.documentElement.clientHeight;
	}
	
	if (data.viewport.w < data.viewport.minWidth) { data.viewport.w = data.viewport.minWidth; }
	if (data.viewport.h < data.viewport.minHeight) { data.viewport.h = data.viewport.minHeight; }
}	
