//------------------------------------------------------------------------------
// Copyright (c) 2000, 2007 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
// 
// Contributors:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------

/* resource files for content page javascript 
 * this file should be localized
*/
ContentPageResource = function() {


this.expandAllText = "Развернуть все разделы";
this.collapseAllText = "Свернуть все разделы";
this.backToTopText = "В начало";

this.expandAllSubSectionsText = "Развернуть все шаги";
this.collapseAllSubSectionsText = "Свернуть все шаги";

this.toolbar_bookmark = "Добавить закладку на эту страницу";
this.toolbar_back = "Назад";
this.toolbar_forward = "Вперед";
this.toolbar_expand_all = "Развернуть все";
this.toolbar_collapse_all = "Свернуть все";
this.toolbar_print = "Печать";

this.expandText = "Развернуть"
this.collapseText = "Свернуть"
this.checkedAltText = "Да"	

};

