/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/


//#pragma CHARSET_ANSI

#include "sections.hrc"
#include "bibliography.hrc"

#define FT_POS          12
#define FTSIZE_LEFT     88
#define ED_POS_LEFT		FT_POS+FTSIZE_LEFT+1
#define ED_SIZE         70
#define ED_POS_LEFT2	ED_POS_LEFT + ED_SIZE +1
#define FT_POS_MIDDLE	ED_POS_LEFT2 + 5
#define FT_POS_RIGHT 	FT_POS_MIDDLE + FT_POS_MIDDLE - FT_POS

#define FL_POS          6
#define PAGE_WIDTH      FT_POS_RIGHT + FTSIZE_LEFT + (FTSIZE_LEFT * 8 / 10) + FL_POS + 5
#define FL_WIDTH        PAGE_WIDTH - 2 * FL_POS

TabPage RID_TP_GENERAL
{
	SVLook = TRUE ;
    Size = MAP_APPFONT( PAGE_WIDTH, 209 );
	HelpId = HID_BIB_CONTROL_PAGE;

	FixedText FT_IDENTIFIER
	{
		Pos = MAP_APPFONT( FT_POS, 6 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
	};
	FixedText FT_AUTHTYPE
	{
		Pos = MAP_APPFONT( FT_POS_MIDDLE, 6 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_YEAR
	{
		Pos = MAP_APPFONT( FT_POS_RIGHT, 6 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_AUTHOR
	{
		Pos = MAP_APPFONT( FT_POS, 20 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_TITLE
	{
		Pos = MAP_APPFONT( FT_POS_MIDDLE, 20 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_PUBLISHER
	{
		Pos = MAP_APPFONT( FT_POS, 34 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_ADDRESS
	{
		Pos = MAP_APPFONT( FT_POS_MIDDLE, 34 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_ISBN
	{
		Pos = MAP_APPFONT( FT_POS_RIGHT, 34 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_CHAPTER
	{
		Pos = MAP_APPFONT( FT_POS, 48 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_PAGE
	{
		Pos = MAP_APPFONT( FT_POS_MIDDLE, 48 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
    FixedLine FL_1
    {
        Pos = MAP_APPFONT( FL_POS, 62 );
        Size = MAP_APPFONT( FL_WIDTH, 8 );
    };
	FixedText FT_EDITOR
	{
        Pos = MAP_APPFONT( FT_POS, 73 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_EDITION
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 73 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_BOOKTITLE
	{
        Pos = MAP_APPFONT( FT_POS, 87 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_VOLUME
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 87 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_HOWPUBLISHED
	{
        Pos = MAP_APPFONT( FT_POS_RIGHT, 87 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_ORGANIZATION
	{
        Pos = MAP_APPFONT( FT_POS, 101 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_INSTITUTION
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 101 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_SCHOOL
	{
        Pos = MAP_APPFONT( FT_POS_RIGHT, 101 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_REPORT
	{
        Pos = MAP_APPFONT( FT_POS, 115);
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_MONTH
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 115 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
    FixedLine FL_2
    {
        Pos = MAP_APPFONT( FL_POS, 129 );
        Size = MAP_APPFONT( FL_WIDTH, 8 );
    };
    FixedText FT_JOURNAL
	{
        Pos = MAP_APPFONT( FT_POS, 140 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };

	FixedText FT_NUMBER
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 140 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_SERIES
	{
        Pos = MAP_APPFONT( FT_POS_RIGHT, 140 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_ANNOTE
	{
        Pos = MAP_APPFONT( FT_POS, 154 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_NOTE
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 154 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_URL
	{
        Pos = MAP_APPFONT( FT_POS_RIGHT, 154 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
    FixedLine FL_3
    {
        Pos = MAP_APPFONT( FL_POS, 168 );
        Size = MAP_APPFONT( FL_WIDTH, 8 );
    };
    FixedText FT_CUSTOM1
	{
        Pos = MAP_APPFONT( FT_POS, 179 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_CUSTOM2
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 179 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_CUSTOM3
	{
        Pos = MAP_APPFONT( FT_POS_RIGHT, 179 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_CUSTOM4
	{
        Pos = MAP_APPFONT( FT_POS, 193 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	FixedText FT_CUSTOM5
	{
        Pos = MAP_APPFONT( FT_POS_MIDDLE, 193 );
		Size = MAP_APPFONT( FTSIZE_LEFT, 10 );
        Right = TRUE;
    };
	String ST_ERROR_PREFIX
	{
		Text [ en-US ] = "The following column names could not be assigned:\n";
	};
	String ST_TYPE_ARTICLE
	{
		Text [ en-US ] = "Article";
	};
	String ST_TYPE_BOOK
	{
		Text [ en-US ] = "Book";
	};
	String ST_TYPE_BOOKLET
	{
		Text [ en-US ] = "Brochures";
	};
	String ST_TYPE_CONFERENCE
	{
		Text [ en-US ] = "Conference proceedings";
	};
	String ST_TYPE_INBOOK
	{
		Text [ en-US ] = "Book excerpt";
	};
	String ST_TYPE_INCOLLECTION
	{
		Text [ en-US ] = "Book excerpt with title";
	};
	String ST_TYPE_INPROCEEDINGS
	{
		Text [ en-US ] = "Conference proceedings";
	};
	String ST_TYPE_JOURNAL
	{
		Text [ en-US ] = "Journal";
	};
	String ST_TYPE_MANUAL
	{
		Text [ en-US ] = "Techn. documentation";
	};
	String ST_TYPE_MASTERSTHESIS
	{
		Text [ en-US ] = "Thesis";
	};
	String ST_TYPE_MISC
	{
		Text [ en-US ] = "Miscellaneous";
	};
	String ST_TYPE_PHDTHESIS
	{
		Text [ en-US ] = "Dissertation";
	};
	String ST_TYPE_PROCEEDINGS
	{
		Text [ en-US ] = "Conference proceedings";
	};
	String ST_TYPE_TECHREPORT
	{
		Text [ en-US ] = "Research report";
	};
	String ST_TYPE_UNPUBLISHED
	{
		Text [ en-US ] = "Unpublished";
	};
	String ST_TYPE_EMAIL
	{
		Text [ en-US ] = "e-mail";
	};
	String ST_TYPE_WWW
	{
		Text [ en-US ] = "WWW document";
	};
	String ST_TYPE_CUSTOM1
	{
		Text [ en-US ] = "User-defined1";
	};
	String ST_TYPE_CUSTOM2
	{
		Text [ en-US ] = "User-defined2";
	};
	String ST_TYPE_CUSTOM3
	{
		Text [ en-US ] = "User-defined3";
	};
	String ST_TYPE_CUSTOM4
	{
		Text [ en-US ] = "User-defined4";
	};
	String ST_TYPE_CUSTOM5
	{
		Text [ en-US ] = "User-defined5";
	};
	Text [ en-US ] = "General";
};
Menu RID_POPUP_ME_VIEW
{
	ItemList =
	{
		MenuItem
		{
			Identifier = PU_INSERT;
			Text [ en-US ] = "Insert Section...";
		};
		MenuItem
		{
			Identifier = PU_REMOVE;
			Text [ en-US ] = "Delete Section...";
		};
		MenuItem
		{
			Identifier = PU_CHG_NAME;
			Text [ en-US ] = "Modify Name...";
		};
	};
};

String ST_IDENTIFIER
{
    Text [ en-US ] = "~Short name";
};
String ST_AUTHTYPE
{
    Text [ en-US ] = "~Type";
};
String ST_YEAR
{
    Text [ en-US ] = "~Year";
};
String ST_AUTHOR
{
	Text [ en-US ] = "Author(s)";
};
String ST_TITLE
{
    Text [ en-US ] = "Tit~le";
};
String ST_PUBLISHER
{
    Text [ en-US ] = "~Publisher";
};
String ST_ADDRESS
{
    Text [ en-US ] = "A~ddress";
};
String ST_ISBN
{
    Text [ en-US ] = "~ISBN";
};
String ST_CHAPTER
{
    Text [ en-US ] = "~Chapter";
};
String ST_PAGE
{
    Text [ en-US ] = "Pa~ge(s)";
};
String ST_EDITOR
{
    Text [ en-US ] = "Editor";
};
String ST_EDITION
{
    Text [ en-US ] = "Ed~ition";
};
String ST_BOOKTITLE
{
    Text [ en-US ] = "~Book title";
};
String ST_VOLUME
{
	Text [ en-US ] = "Volume";
};
String ST_HOWPUBLISHED
{
    Text [ en-US ] = "Publication t~ype";
};
String ST_ORGANIZATION
{
    Text [ en-US ] = "Organi~zation";
};
String ST_INSTITUTION
{
    Text [ en-US ] = "Instit~ution";
};
String ST_SCHOOL
{
	Text [ en-US ] = "University";
};
String ST_REPORT
{
	Text [ en-US ] = "Type of re~port";
};
String ST_MONTH
{
    Text [ en-US ] = "~Month";
};
String ST_JOURNAL
{
    Text [ en-US ] = "~Journal";
};

String ST_NUMBER
{
    Text [ en-US ] = "Numb~er";
};
String ST_SERIES
{
    Text [ en-US ] = "Se~ries";
};
String ST_ANNOTE
{
    Text [ en-US ] = "Ann~otation";
};
String ST_NOTE
{
    Text [ en-US ] = "~Note";
};
String ST_URL
{
    Text [ en-US ] = "URL";
};
String ST_CUSTOM1
{
    Text [ en-US ] = "User-defined field ~1";
};
String ST_CUSTOM2
{
    Text [ en-US ] = "User-defined field ~2";
};
String ST_CUSTOM3
{
    Text [ en-US ] = "User-defined field ~3";
};
String ST_CUSTOM4
{
    Text [ en-US ] = "User-defined field ~4";
};
String ST_CUSTOM5
{
    Text [ en-US ] = "User-defined field ~5";
};




























































































