/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/

#define FT_CATEGORY					1
#define LB_CATEGORY					2
#define FT_DECIMALS					3
#define ED_DECIMALS					4
#define FT_LEADZEROES				5
#define ED_LEADZEROES				6
#define BTN_NEGRED					7
#define BTN_THOUSAND				8
#define TBX_CATEGORY				9
#define ID_NUMBER					10
#define ID_PERCENT					11
#define ID_CURRENCY 				12
#define ID_DATE						13
#define ID_TEXT						14

//===============================================================position=============================================

#define MBOX_WIDTH							28
#define	LOCAL_TOOLBOX_ITEM_HEIGHT					12
#define CHECKBOX_HEIGHT						10

#define FT_CATEGORY_X						SECTIONPAGE_MARGIN_HORIZONTAL
#define FT_CATEGORY_Y						SECTIONPAGE_MARGIN_VERTICAL_TOP
#define LB_CATEGORY_X						FT_CATEGORY_X
#define LB_CATEGORY_Y						FT_CATEGORY_Y + TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL

#define TBX_CATEGORY_X						SECTIONPAGE_MARGIN_HORIZONTAL + 1
#define TBX_CATEGORY_Y						LB_CATEGORY_Y + MBOX_HEIGHT + CONTROL_SPACING_VERTICAL

#define FT_DECIMALS_X						SECTIONPAGE_MARGIN_HORIZONTAL
#define FT_DECIMALS_Y						TBX_CATEGORY_Y + LOCAL_TOOLBOX_ITEM_HEIGHT + 4 + CONTROL_SPACING_VERTICAL
#define LB_DECIMALS_X						FT_CATEGORY_X
#define LB_DECIMALS_Y						FT_DECIMALS_Y + TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL

#define FT_LEADZEROES_X						SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH*2 + CONTROL_SPACING_HORIZONTAL
#define FT_LEADZEROES_Y						FT_DECIMALS_Y
#define LB_LEADZEROES_X						FT_LEADZEROES_X
#define LB_LEADZEROES_Y						FT_LEADZEROES_Y + TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL

#define BTN_NEGRED_X						SECTIONPAGE_MARGIN_HORIZONTAL
#define BTN_NEGRED_Y						LB_LEADZEROES_Y + MBOX_HEIGHT + CONTROL_SPACING_VERTICAL

#define BTN_THOUSAND_X						SECTIONPAGE_MARGIN_HORIZONTAL
#define BTN_THOUSAND_Y						BTN_NEGRED_Y + CHECKBOX_HEIGHT + CONTROL_SPACING_VERTICAL - 3

#define PROPERTYPAGE_HEIGHT					BTN_THOUSAND_Y + CHECKBOX_HEIGHT + 2

// eof
