var cNoteGreenCardCarType = "<table class='tableSimple'><tr><th>Тип/категория</th><th>Пояснение</th></tr>" +
                            "<tr><td>A</td><td>Легковые автомобили, разрешенная максимальная масса которых не превышает 3500 кг и число сидячих мест которых, помимо сиденья водителя, не превышает восьми</td></tr>" +
                            "<tr><td>F1</td><td>Прицепы к легковым автомобилям</td></tr>" +
                            "<tr><td>C</td><td>Грузовые автомобили, тягачи, автомобили категории «С», разрешенная максимальная масса которых превышает 3500 кг, за исключением предназначенных для перевозки пассажиров и имеющих более восьми сидячих мест, помимо сиденья водителя</td></tr>" +
                            "<tr><td>F2</td><td>Прицепы и полуприцепы к грузовым автомобилям и тягачам</td></tr>" +
                            "<tr><td>E</td><td>Автобусы, имеющие свыше 9 сидячих мест, включая водителя</td></tr>" +
                            "<tr><td>B, D</td><td>Мотоциклы, мотороллеры, мотоколяски и мопеды</td></tr>" +
                            "<tr><td>G</td><td>Сельскохозяйственная и строительная техника</td></tr>" +
                            "</table>";
var cTitleGreenCardCarType = "Тип/категория транспорта";

var cNoteGreenCardTerritory = "<table class='tableSimple'><tr><th>Страна</th></tr>" +
                            "<tr><td>Австрия</td></tr>" +
                            "<tr><td>Албания</td></tr>" +
                            "<tr><td>Андорра</td></tr>" +
                            "<tr><td>Беларусь</td></tr>" +
                            "<tr><td>Бельгия</td></tr>" +
                            "<tr><td>Болгария</td></tr>" +
                            "<tr><td>Босния - Герцеговина</td></tr>" +
                            "<tr><td>Великобритания</td></tr>" +
                            "<tr><td>Венгрия</td></tr>" +
                            "<tr><td>Германия</td></tr>" +
                            "<tr><td>Греция</td></tr>" +
                            "<tr><td>Дания</td></tr>" +
                            "<tr><td>Израиль</td></tr>" +
                            "<tr><td>Иран</td></tr>" +
                            "<tr><td>Ирландия</td></tr>" +
                            "<tr><td>Исландия</td></tr>" +
                            "<tr><td>Испания</td></tr>" +
                            "<tr><td>Италия</td></tr>" +
                            "<tr><td>Кипр</td></tr>" +
                            "<tr><td>Латвия</td></tr>" +
                            "<tr><td>Литва</td></tr>" +
                            "<tr><td>Люксембург</td></tr>" +
                            "<tr><td>Македония</td></tr>" +
                            "<tr><td>Мальта</td></tr>" +
                            "<tr><td>Марокко</td></tr>" +
                            "<tr><td>Молдавия</td></tr>" +
                            "<tr><td>Нидерланды</td></tr>" +
                            "<tr><td>Норвегия</td></tr>" +
                            "<tr><td>Польша</td></tr>" +
                            "<tr><td>Португалия</td></tr>" +
                            "<tr><td>Румыния</td></tr>" +
                            "<tr><td>Сербия и Черногория</td></tr>" +
                            "<tr><td>Словакия</td></tr>" +
                            "<tr><td>Словения</td></tr>" +
                            "<tr><td>Тунис</td></tr>" +
                            "<tr><td>Турция</td></tr>" +
                            "<tr><td>Украина</td></tr>" +
                            "<tr><td>Финляндия</td></tr>" +
                            "<tr><td>Франция</td></tr>" +
                            "<tr><td>Хорватия</td></tr>" +
                            "<tr><td>Чехия</td></tr>" +
                            "<tr><td>Швейцария</td></tr>" +
                            "<tr><td>Швеция</td></tr>" +
                            "<tr><td>Эстония</td></tr>" +
                            "</table>";
var cTitleGreenCardTerritory = "Страны Системы Зеленая карта";


var cNoteFlatFlat = "Конструкция квартиры - стены, перекрытия, перегородки, а также оконные и дверные конструкции (кроме межкомнатных), электропроводка, трубопроводы систем отопления, водоснабжения, канализации, газоснабжения.";
var cTitleFlatFlat = "Конструкция квартиры";

var cNoteFlatDecoration = "Отделка – покрытие стен, потолка, пола, межкомнатные двери, встроенная мебель.";
var cTitleFlatDecoration = "Отделка";

var cNoteFlatEquipment = "<ol>" +
                         "<li>Системы водоснабжения и канализации: водозапорные устройства, раковины, ванны, душевые кабины, сантехническое оборудование туалетных комнат.</li>" +
                         "<li>Системы кондиционирования, вентиляции, нагрева и очистки воздуха.</li>" +
                         "<li>Системы очистки воды.</li>" +
                         "<li>Системы 'теплый пол'.</li>" +
                         "<li>Ванны типа 'Джакузи' и устройства гидромассажа.</li>" +
                         "<li>Системы газоснабжения: газовые колонки, плиты.</li>" +
                         "<li>Системы электропитания, в том числе слаботочные (антенна, телефон, сигнализация и т.п.</li>" +
                         "<li>Индивидуальные системы наблюдения и охраны (видео-, звуковые и т.п.).</li>" + 
                         "<li>Индивидуальные системы спутникового телевидения.</li></ol>";
var cTitleFlatEquipment = "Техническое оборудование";

var cNoteFlatFurniture = "Движимое имущество: мебель, предметы домашней обстановки, предметы интерьера, хозяйственный инвентарь, аудио-, видео-, фотоаппаратура, электроика, бытовая техника, музыкальные инструменты, одежда, спортивный и охотничий инвентарь, посуда, предметы домашнего и личного обихода и т.п.";
var cTitleFlatFurniture = "Движимое имущество";

var cNoteFlatLiability = "Ответственность за нанесение ущерба третьим лицам в случае причинения вреда их жизни, здоровью и имуществу.";
var cTitleFlatLiability = "Гражданская ответственность";

var cNoteFlatAccident = "<p>Всех проживающих в квартире можно застраховать от риска гибели или постоянной утраты трудоспособности в результате несчастного случая.</p>" +
                        "<p>На страхование принимаются жильцы квартиры в возрасте от 1 до 70 лет. Страховые суммы на каждого застрахованного устанавливаются одинаковыми.</p>" +
                        "<p>В приведенном расчете страховая сумма на одного проживающего в квартире установлена в размере 150 000 руб.</p>" +
                        "<p>Размер страховой суммы выбирается страхователем.</p>";
var cTitleFlatAccident = "Несчастный случай";

var cNoteHouseHouse = "<p>Включает в себя:</p>" +
                      "<ol>" +
                      "<li>Конструктивные элементы – стены, перекрытия, перегородки, оконные и дверные конструкции (кроме межкомнатных), электропроводку, трубопроводы систем отопления, водо- и газоснабжения;</li>" +
                      "<li>Внешнюю и внутреннюю отделку – покрытие стен, потолка, пола, межкомнатные дверные конструкции, встроенную мебель;</li>" +
                      "<li>Техническое оборудование – нетиповые системы отопления (подогреваемые полы), охраны (домофоны), вентиляции и кондиционирования воздуха, водоснабжения (раковины, душевые кабины), канализации (сантехническое оборудование), электропитания (антенны, сигнализации) и др.</li></ol>";
var cTitleHouseHouse = "Основное строение";

var cNoteHouseFurniture = "<p>В 'Движимое имущество' входят следующие объекты страхования: мебель, предметы домашней обстановки, предметы интерьера, хозяйственный инвентарь, аудио-, видео-, фотоаппаратура, электроника, бытовая техника, музыкальные инструменты, одежда, спортивный и охотничий инвентарь, посуда, предметы домашнего и личного обихода и т.п.</p>";
var cTitleHouseFurniture = "Движимое имущество";

var cNoteHouseholdBuilding = "<p>Включает страхование конструктивных элементов хозяйственного строения, внешнюю и внутреннюю отделку, техническое оборудование.</p>";
var cTitleHouseholdBuilding = "Хозстроение";

var cNoteHouseLiability = "<p>Вы можете застраховать свою гражданскую ответственность за причинение вреда жизни, здоровью и имуществу третьих лиц. Это поможет Вам избежать расходов на возмещение вреда соседям - например, в случае если начавшийся у вас пожар перекинется на соседний участок.</p>";
var cTitleHouseLiability = "Гражданская ответственность";

var cNoteHouseAbsent40 = "<p>Временное проживание - это отсутствие на даче/в доме в течении года более 60 дней. Если человек проводит на даче каждые выходные - это временное проживание.</p>";
var cTitleHouseAbsent40 = "Временное проживание";

var cNoteHouseFranchise = "<p>Франшиза позволяет сэкономить на стоимости полиса до 20%. При страховании с франшизой небольшие убытки (на общую сумму выбранной франшизы), например, разбитое окно, Вы оплачиваете сами. При этом полис надежно защитит Вас от действительно крупных убытков.</p>";
var cTitleHouseFranchise = "Франшиза";

var cNoteHypothecPercent = "Процент от суммы кредита, на который банк требует застраховать Заемщика. Если в расчете премии на на 1 заемщика нужно указывать защитную ставку Банка (допустим, 10%, тогда страховая сумма = сумма кредита + 10%), " +
                           "то тут нужно явно указать, на КАКОЙ ПРОЦЕНТ ОТ СУММЫ КРЕДИТА нужно застраховать каждого из Заемщиков. Как правило, банки указывают этот процент с учетом защитной ставки.";
var cTitleHypothecPercent = "Процент от суммы кредита";

var cNoteHypothecLife = "РЕСО-Гарантия выплатит банку непогашенную часть кредита и проценты по нему в случае смерти по любой причине или утраты общей трудоспособности (I   и II группы инвалидности), а остальную часть страховой суммы – заемщику или его наследникам.";
var cTitleHypothecLife = "Жизнь и трудоспособность";

var cNoteHypothecTimeWorkAbility = "<p>Страховщик оплачивает временную нетрудоспособность, возникшую в результате несчастного случая, начиная с 31 дня.</p><p>Выплата за один день нетрудоспособности составляет 1/30 месячной задолженности Заемщика за каждый день нетрудоспособности</p>";
var cTitleHypothecTimeWorkAbility = "Временная нетрудоспособность";

var cNoteHypothecProperty = "РЕСО-Гарантия возместит ущерб, причиненный застрахованному объекту недвижимости (предмету залога) в случае его повреждения или уничтожения в результате пожара, взрыва бытового газа, стихийных бедствий, обнаружения конструктивных дефектов здания, аварии водопроводной, отопительной, канализационной систем, а также противоправных действий третьих лиц.";
var cTitleHypothecProperty = "Недвижимое имущество";

var cNoteHypothecOwnership = "Страховое возмещение будет выплачено в пределах страховой суммы в случае утраты или ограничения права собственности заемщика на недвижимое имущество вследствие нарушений законодательства РФ, допущенных при оформлении сделок с ним.";
var cTitleHypothecOwnership = "Утрата права собственности";

var cNoteHypothecAge = "<p>На сайте Вы можете рассчитать страховой взнос для лиц от 18 до 64 лет на момент заключения договора.</p><p>Если возраст находится вне данных пределов (моложе 18 или старше 64), обратитесь к менеджеру отдела ипотечного страхования.</p>";
var cTitleHypothecAge = "Возраст";

var cNoteHypothecISum = "<p>Обязанность застраховать жизнь и трудоспособность заемщика или иных лиц, а также страховые суммы для каждого из них (обычно, в процентах от суммы кредита) устанавливаются в кредитном договоре.</p>"+
                       "<p>Введите проценты, указанные для данного лица в кредитном договоре. Если Вы затрудняетесь указать процент ввиду отсутствия кредитного договора, введите 100%.</p>";
var cTitleHypothecISum = "Страховая сумма";

var cNoteAutoCascoTerritory = "<p>Все европейские страны, включая страны Балтии, Скандинавские страны, Украину, Белоруссию, Узбекистан, Китай.</p>";
var cTitleAutoCascoTerritory = "Россия и зарубежные страны";

var cNoteAutoCascoDriverList = "<p>К управлению транспортным средством могут быть допущены любые лица, использующие транспортное средство на законном основании, возрастом старше 23 лет и имеющие стаж вождения более 2-х лет.</p>";
var cTitleAutoCascoDriverList = "Без ограничения";

var cNoteAutoCascoAccident = "<p>Страхование от несчастных случаев водителя и пассажиров осуществляется по системе мест. Расчет произведен для 5-ти посадочных мест.</p>" +
                             "<p>Страховая сумма устанавливается в одинаковом размере на каждое место.</p>" +
                             "<p>Страхованию подлежат все посадочные места согласно паспорта транспортного средства (ПТС).</p>" +
                             "<p>Застрахованными являются водитель и пассажиры на случай смерти или инвалидности вследствие несчастного случая (ДТП).</p>";
var cTitleAutoCascoAccident = "Защита водителя и пассажиров от несчастного случая";

var cNoteAutoCascoHelp = "<p>Программа 'РЕСОавто ПОМОЩЬ' гарантирует:</p>" +
                         "<ul>" +
                         "<li>Выезд аварийного комиссара на ДТП;</li>" +
                         "<li>Эвакуацию автомобиля при повреждении;</li>" +
                         "<li>Экстренную помощь при поломке на дороге;</li>" +
                         "<li>Выезд 'Скорой медицинской помощи'.</li>" +
                         "</ul>" +
                         "<p>Мы предлагаем приобрести полис 'РЕСОавто ПОМОЩЬ' нашим клиентам по автострахованию ОСАГО или КАСКО: тем, кто уже застрахован в РЕСО-Гарантия, и тем, кто только собирается оформить страховку.</p>" +
                         "<p>Годовой полис 'РЕСОавто ПОМОЩЬ' стоит 2 400 рублей для жителей Москвы и Подмосковья, Краснодара и Нижнего Новгорода и 2 100 рублей для жителей Санкт-Петербурга и Ленинградской области – дешевле, чем членство в автоклубе.</p>" +
                         "<p>Что бы ни случилось с Вашим автомобилем в пути, Вас выручит полис 'РЕСОавто ПОМОЩЬ'!</p>" + 
                         "<p>Территория действия полиса и иные существенные условия определены в Дополнительном соглашении к полису.</p>";
var cTitleAutoCascoHelp = "РЕСОавто ПОМОЩЬ";

var cNoteAutoOsagoDriverList = "<p>Договор обязательного страхования автогражданской ответственности без ограничения количества лиц, допущенных к управлению.</p>";
var cTitleAutoOsagoDriverList = "Без ограничения";

var cNoteAutoOsagoBonusMalus = "<p>Класс бонус-малус (КБМ) водителя зависит от наличия или отсутствия выплат по страховым случаям  за предыдущий год страхования.</p>" +
                           "<p>В случае если к управлению допущено несколько лиц (ограниченный список), то в поле «Класс бонус-малус» необходимо указывать минимальный класс среди всех лиц, допущенных к управлению.</p>" +
                           "<p>В случае если к управлению допущено неограниченное число лиц,  необходимо указать класс, определенный для собственника данного транспортного средства.</p>" +
                           "<table class='tableSimple'>" +
                           "<tr><th rowspan=2>Класс на начало годового срока страхования</th><th rowspan=2>Коэффициент</th><th colspan=5>Класс на окончание годового срока страхования</th></tr>" + 
                           "<tr><th>0 страховых выплат</th><th>1 страховая выплата</th><th>2 страховые выплаты</th><th>3 страховые выплаты</th><th>4 и более страховых выплат</th></tr>" +
                           "<tr><td>M</td><td>2.45</td><td>0</td><td>M</td><td>M</td><td>M</td><td>M</td></tr>" +
                           "<tr><td>0</td><td >2.30</td><td >1</td><td >M</td><td >M</td><td >M</td><td >M</td></tr>" +
                           "<tr><td >1</td><td >1.55</td><td >2</td><td >M</td><td >M</td><td >M</td><td >M</td></tr>" +
                           "<tr><td >2</td><td >1.40</td><td >3</td><td >1</td><td >M</td><td >M</td><td >M</td></tr>" +
                           "<tr><td >3</td><td >1.00</td><td >4</td><td >1</td><td >M</td><td >M</td><td >M</td></tr>" +
                           "<tr><td >4</td><td >0.95</td><td >5</td><td >2</td><td >1</td><td >M</td><td >M</td></tr>" +
                           "<tr><td >5</td><td >0.90</td><td >6</td><td >3</td><td >1</td><td >M</td><td >M</td></tr>" +
                           "<tr><td >6</td><td >0.85</td><td >7</td><td >4</td><td >2</td><td >M</td><td >M</td></tr>" +
                           "<tr><td >7</td><td >0.80</td><td >8</td><td >4</td><td >2</td><td >M</td><td >M</td></tr>" +

                           "<tr><td >8</td><td >0.75</td><td >9</td><td >5</td><td >2</td><td >M</td><td>M</td></tr>" +

                           "<tr><td >9</td><td >0.70</td><td >10</td><td >5</td><td >2</td><td >1</td><td >M</td></tr>" +
                           "<tr><td >10</td><td >0.65</td><td >11</td><td >6</td><td >3</td><td >1</td><td >M</td></tr>" +
                           "<tr><td >11</td><td >0.60</td><td >12</td><td >6</td><td >3</td><td >1</td><td >M</td></tr>" +
                           "<tr><td >12</td><td >0.55</td><td >13</td><td >6</td><td >3</td><td >1</td><td >M</td></tr>" +
                           "<tr><td >13</td><td >0.50</td><td >13</td><td >7</td><td >3</td><td >1</td><td >M</td></tr>" +
                           "</table>";
var cTitleAutoOsagoBonusMalus = "Класс-коэффициент бонуса-малуса";

var cNoteAutoOsagoTerritory = "<p>для юридических лиц - место регистрации транспортного средства;</p><p>для физических лиц - место жительства собственника транспортного средства.</p>";
var cTitleAutoOsagoTerritory = "Территория преимущественного использования";

var cNoteAutoOsagoDriverAgeStage = "<p>Если к управлению допущено несколько водителей, укажите группу, к которой относится водитель с наименьшим возрастом.</p>";
var cTitleAutoOsagoDriverAgeStage = "Возраст и водительский стаж";

var cNoteAutoDgoDiscount = "<p>Стоимость полиса при совместной покупке полисов ОСАГО, ДГО, 'РЕСОавто-Помощь' и 'Только Хищение'.</p><p>Стоимость полисов 'Только Хищение' и 'РЕСОавто-Помощь' по данной программе Вы можете рассчитать на калькуляторе КАСКО.</p><p>Программа действует в Москве, Московской области, Санкт-Петербурге и Ленинградской области. Приобрести полис можно в любом филиале в этих регионах.</p><p><a href='http://www.reso.ru/Retail/Motor/Calculator/' target='_blank'>Переход к калькулятору КАСКО</a></p>";
var cTitleAutoDgoDiscount = "ДГО со скидкой";

var cNoteAutoCascoDiscount = "<p>Стоимость полиса при совместной покупке полисов ОСАГО, ДГО, 'РЕСОавто-Помощь' и 'Только Хищение'.</p><p>Стоимость полиса ОСАГО, а также полиса ДГО со скидкой Вы можете рассчитать на калькуляторе ОСАГО.</p><p>Программа действует в Москве, Московской области, Санкт-Петербурге и Ленинградской области. Приобрести полис можно в любом филиале в этих регионах.</p><p><a href='http://www.reso.ru/Retail/AGO/OSAGO/Calculator/' target='_blank'>Переход к калькулятору ОСАГО</a></p>";
var cTitleAutoCascoDiscount = "'РЕСОавто-Помощь' и 'Только Хищение' со скидкой";


var cNoteLifeRisks = "<table class='tableSimple'><tr><th>Код</th><th>Описание</th></tr>" +
                            "<tr><td>011</td><td>Смерть по любой причине (1) + Смерть от НС (1)</td></tr>" +
                            "<tr><td>013</td><td>Смерть по любой причине (1) + Смерть от НС (1) + Смерть от ДТП (1)</td></tr>" +
                            "<tr><td>031</td><td>Смерть от НС (1)</td></tr>" +
                            "<tr><td>033</td><td>Смерть от НС (2) + Смерть от ДТП (1)</td></tr>" +
                            "<tr><td>051</td><td>Дожитие с выплатой выкупной суммы по смерти</td></tr>" +
                            "<tr><td>052</td><td>Страхование к сроку c поступлением в ВУЗ</td></tr>" +
                            "</table>";
var cTitleLifeRisks = "Программы страхования";

var cNoteTourizmTerritory = "<p><b>Территория I</b>: Все страны мира, за исключением  стран Американского континента, стран Карибского бассейна, Японии, Австралии, Новой Зеландии, " +
                            "страны, гражданином которой является Застрахованный, и страны постоянного проживания;</p>"  +
                            "<p><b>Территория II</b>: Все страны мира, за исключением страны, гражданином которой является Застрахованный, и страны постоянного проживания;</p>" +
                            "<p>Исключаются из территории действия договора страхования:</p>" +
                            "<ul>" +
                            "<li>государства, на территории которых ведутся военные действия,</li>" +
                            "<li>государства, в отношении которых применены экономические и/или военные санкции ООН,</li>" +
                            "<li>территории, в пределах которых обнаружены и признаны очаги эпидемий.</li>" +
                            "</ul>";
var cTitleTourizmTerritory = "Территории";

var cNoteTourizmCategory = "<p><b>Полис категории А</b></p>" +
                           "<p>В случае внезапного заболевания или несчастного случая Страховщик обязуется обеспечить:</p>" +
                           "<ul>" +
                           "<li>предоставление медицинской помощи  в стране пребывания или оплату медицинских расходов;</li>" +
                           "<li>возмещение расходов, связанных с болеутоляющим лечением зуба, вследствие несчастного случая в размере не превышающем 100 USD/EURO;</li>" +
                           "<li>организацию и оплату расходов по спасению Застрахованного;</li>" +
                           "<li>перемещение Застрахованного в одну из ближайших больниц страны пребывания;</li>" +
                           "<li>перемещение Застрахованного воздушным (водным, наземным) рейсовым транспортом до ближайшего международного порта страны проживания;</li>" +
                           "<li>перевозку тела   в случае смерти до международного порта, из которого был совершен выезд Застрахованного в зарубежную поездку.</li>" +
                           "</ul>" +
                           "<p><b>Полис категории B</b></p>" +
                           "<p>При заключении договора страхования данной категории Страховщик обязуется оказать услуги, предусмотренные полисом категории А, а также дополнительно:</p>" +
                           "<ul>" +
                           "<li>возместить расходы, связанные с болеутоляющим лечением зуба в размере не превышающем 200 USD/EURO</li>" +
                           "<li>в случае госпитализации Застрахованного, организовать и оплатить расходы по возвращению его детей в возрасте до 15 лет, если они остались без присмотра, рейсовым транспортом из страны временного пребывания до места жительства;</li>" +
                           "<li>оплатить прямой и обратный билет родственнику Застрахованного при его нахождении в больнице более 10 дней, и отсутствии с ним кого-либо из близких родственников;</li>" +
                           "<li>организовать и оплатить расходы по досрочному возвращению Застрахованного до ближайшего международного порта страны постоянного места жительства в случае смерти близкого родственника.</li>" +
                           "</ul>";
var cTitleTourizmCategory = "Категории полисов";

var cNoteAccidentSport = "<p>Спортсмен-любитель - человек, систематически занимающийся избранным видом/видами спорта или физическими упражнениями, принимающий участие в спортивных соревнованиях (на добровольных началах).</p>";
var cTitleAccidentSport = "Занятие спортом на любительском уровне";



var oNote = "copyhistory=no,dependent=yes,directories=no,hotkeys=no,location=no,menubar=no,resizable=no,scrollbars=no,titlebar=no,toolbar=no";
var oNoteOsago = "copyhistory=no,dependent=yes,directories=no,hotkeys=no,location=no,menubar=no,resizable=no,scrollbars=no,titlebar=no,toolbar=no,height=500,width=650";
//var oNoteLife = "copyhistory=no,dependent=yes,directories=no,hotkeys=no,location=no,menubar=no,resizable=no,scrollbars=no,titlebar=no,toolbar=no,height=400,width=500";
var oCarBrand = "copyhistory=no,dependent=yes,directories=no,hotkeys=no,location=no,menubar=no,resizable=no,scrollbars=yes,titlebar=no,toolbar=no,height=620,width=800";


var wNote = null;
var wCarBrands = null;
var wTerritories = null;
var wCarCategories = null;
var wDct = null;

var emailPattern = /^\w([\.-]?\w)*@\w+([\.-]?\w+)*(\.\w{2,3})$/;
var textPattern = /^[ ,\.A-Za-zА-Яа-я0-9_-]{1,}$/;
var intPattern = /^[0-9]{1,}$/;
var codePattern = /^\d{1,6}$/;

var errorField = "<p>Поля, отмеченные красной рамкой, должны быть заполнены корректными значениями.</p>";
var currencies = [ "руб", "$", "&euro;" ];

/*doesn't use */
function changeMainTab() {
    alert("top_menu_content_person=" + document.getElementById( "top_menu_content_person" ).style.display);
    alert("top_menu_content_juridical=" + document.getElementById( "top_menu_content_juridical" ).style.display);
    alert(document.getElementById( "top_menu_content_person" ).style.display.length);

    if ( ( document.getElementById( "top_menu_content_person" ).style.display == "none" ) || ( document.getElementById( "top_menu_content_person" ).style.display.length == 0 ) ) {
      document.getElementById( "top_menu_content_person" ).style.display = "none";     
      document.getElementById( "top_menu_content_juridical" ).style.display = "block";          
    }
    else
    {
      document.getElementById( "top_menu_content_person" ).style.display = "block";     
      document.getElementById( "top_menu_content_juridical" ).style.display = "none";          
    }


    alert("top_menu_content_person=" + document.getElementById( "top_menu_content_person" ).style.display);
    alert("top_menu_content_juridical=" + document.getElementById( "top_menu_content_juridical" ).style.display);

}

//---------------------------------------------------------------------------
// Проверка введенных данных перед расчетом
//---------------------------------------------------------------------------
function beforeSubmitResult( errorMsg ) {
  if ( errorMsg.length > 0  ) {
    document.getElementById( "error" ).innerHTML = errorMsg;

    if ( document.getElementById( "success" ) != null )
      document.getElementById( "success" ).innerHTML = "";
    return false;
  }
  else
    return true;
}

function addElementOption( value, text ) {
  var option = document.createElement("option");
  option.value = value;
  option.text = text;
  return option;
}

// При выборе предмета страхования
function checkFlatRisk( element ) {
  var form = element.form;
  ( form.existsFlat.checked ) ? form.iSumFlat.disabled = false : form.iSumFlat.disabled = true;
  ( form.existsDecoration.checked ) ? form.iSumDecoration.disabled = false : form.iSumDecoration.disabled = true;
  ( form.existsFurniture.checked ) ? form.iSumFurniture.disabled = false : form.iSumFurniture.disabled = true;
  ( form.existsEquipment.checked ) ? form.iSumEquipment.disabled = false : form.iSumEquipment.disabled = true;
  ( form.existsLiability.checked ) ? form.iSumLiability.disabled = false : form.iSumLiability.disabled = true;
  ( form.existsAccident.checked ) ? form.countInhabitant.disabled = false : form.countInhabitant.disabled = true;
}

// Проверка при submit
function checkFlatCalc( element ) {
  var iSumPattern = /^[0-9]{1,}$/;
  var form = element.form;
  var errorMsg = "";
/*  ( form.existsFlat.checked && !iSumPattern.test( form.iSumFlat.value ) ) ? errorMsg = "<p>Конструкция квартиры - некорректное значение.</p>" : errorMsg = "" ;
  ( form.existsDecoration.checked && !iSumPattern.test( form.iSumDecoration.value ) ) ? errorMsg += "<p>Отделка - некорректное значение.</p>" : errorMsg += "" ;
  ( form.existsFurniture.checked && !iSumPattern.test( form.iSumFurniture.value ) ) ? errorMsg += "<p>Движимое имущество - некорректное значение.</p>" : errorMsg += "" ;
  ( form.existsEquipment.checked && !iSumPattern.test( form.iSumEquipment.value ) ) ? errorMsg += "<p>Техническое оборудование - некорректное значение.</p>" : errorMsg += "" ;
  ( form.existsLiability.checked && !iSumPattern.test( form.iSumLiability.value ) ) ? errorMsg += "<p>Гражданская ответственность - некорректное значение.</p>" : errorMsg += "" ;
  ( form.existsAccident.checked && !iSumPattern.test( form.countInhabitant.value ) ) ? errorMsg += "<p>Количество проживающих в квартире - некорректное значение.</p>" : errorMsg += "" ;
  ( form.existsFlat.checked || form.existsDecoration.checked || form.existsFurniture.checked || form.existsEquipment.checked || form.existsLiability.checked || form.existsAccident.checked ) ? errorMsg += "" : errorMsg += "<p>Не выбран ни один из объектов страхования.</p>" ;
  
  return beforeSubmitResult(errorMsg);*/

  ( form.existsFlat.checked && !iSumPattern.test( form.iSumFlat.value ) ) ? form.iSumFlat.className = "inputWrong" : form.iSumFlat.className = "input";
  ( form.existsDecoration.checked && !iSumPattern.test( form.iSumDecoration.value ) ) ? form.iSumDecoration.className = "inputWrong" : form.iSumDecoration.className = "input";
  ( form.existsFurniture.checked && !iSumPattern.test( form.iSumFurniture.value ) ) ? form.iSumFurniture.className = "inputWrong" : form.iSumFurniture.className = "input";
  ( form.existsEquipment.checked && !iSumPattern.test( form.iSumEquipment.value ) ) ? form.iSumEquipment.className = "inputWrong" : form.iSumEquipment.className = "input";
/*  ( form.existsLiability.checked && !iSumPattern.test( form.iSumLiability.value ) ) ? form.iSumLiability.className = "inputWrong" : form.iSumLiability.className = "input";
  ( form.existsAccident.checked && !iSumPattern.test( form.countInhabitant.value ) ) ? form.countInhabitant.className = "inputWrong" : form.countInhabitant.className = "input"; */
  ( form.existsFlat.checked || form.existsDecoration.checked || form.existsFurniture.checked || form.existsEquipment.checked || form.existsLiability.checked || form.existsAccident.checked ) ? errorMsg += "" : errorMsg += "<p>Не выбран ни один из объектов страхования.</p>" ;


  errorMsg = ( ( form.existsFlat.checked && !iSumPattern.test( form.iSumFlat.value ) ) || ( form.existsDecoration.checked && !iSumPattern.test( form.iSumDecoration.value ) ) ||
               ( form.existsFurniture.checked && !iSumPattern.test( form.iSumFurniture.value ) ) || ( form.existsLiability.checked && !iSumPattern.test( form.iSumLiability.value ) ) ||
               ( form.existsLiability.checked && !iSumPattern.test( form.iSumLiability.value ) ) || ( form.existsAccident.checked && !iSumPattern.test( form.countInhabitant.value ) ) ||
               ( !form.existsFlat.checked && !form.existsDecoration.checked && !form.existsFurniture.checked && !form.existsEquipment.checked && !form.existsLiability.checked && !form.existsAccident.checked )
             ) ? errorField + errorMsg : "";


  if ( !beforeSubmitResult(errorMsg) ) {
    document.getElementById("flatPremium").innerHTML = "&nbsp;";  
    document.getElementById("resultAnchor").focus();      
    return false;
  } 
  else
    return true;
}

// Tourizm. Проверка при submit
function checkTourizmCalc( element ) {
  var dayCountPattern = /^[0-9]{1,3}$/;
  var form = element.form;
  var errorMsg = "";

/*  ( !dayCountPattern.test( form.dayCount.value ) ) ? errorMsg = "<p>Количество дней страховки - некорректное значение.</p>" : errorMsg = "" ;
  ( ( form.dayCount.value < 1 ) || ( form.dayCount.value > 365 )  ) ? errorMsg += "<p>Количество дней страховки может быть от 1 до 365.</p>" : errorMsg += "" ;
  return beforeSubmitResult(errorMsg); */

  ( ( !dayCountPattern.test( form.dayCount.value ) ) || ( ( form.dayCount.value < 1 ) || ( form.dayCount.value > 365 ) ) ) ? form.dayCount.className = "inputWrong" : form.dayCount.className = "input";
  ( ( form.dayCount.value < 1 ) || ( form.dayCount.value > 365 ) ) ? errorMsg += "<p>Количество дней страховки может быть от 1 до 365.</p>" : errorMsg += "" ;


  errorMsg = ( ( !dayCountPattern.test( form.dayCount.value ) ) || ( ( form.dayCount.value < 1 ) || ( form.dayCount.value > 365 ) ) ) ? errorField + errorMsg : "";


  if ( !beforeSubmitResult(errorMsg) ) {
    document.getElementById("tourizmPremium").innerHTML = "&nbsp;";  
    document.getElementById("resultAnchor").focus();      
    return false;
  } 
  else
    return true;


}

// House. При выборе риска
function checkHouseRisk( element ) {
  var form = element.form; 

  form.existsFlood.disabled = form.existsDamage.checked;
  form.existsFlood.checked = form.existsUnlawfulAct.disabled = ( element.name == "existsFlood" ) ? form.existsFlood.checked : form.existsDamage.checked;
  form.existsUnlawfulAct.checked = form.existsBurglary.disabled = ( element.name == "existsUnlawfulAct" ) ? form.existsUnlawfulAct.checked : form.existsFlood.checked;
  form.existsBurglary.checked = form.existsNaturalDisaster.disabled = ( element.name == "existsBurglary" ) ? form.existsBurglary.checked : form.existsUnlawfulAct.checked;
  form.existsNaturalDisaster.checked = ( element.name == "existsNaturalDisaster" ) ? form.existsNaturalDisaster.checked : form.existsBurglary.checked;
}


// House. При выборе предмета
function checkHouseSubject( element ) {
  var form = element.form; 
  ( form.existsHouse.checked ) ? form.iSumHouse.disabled = false : form.iSumHouse.disabled = true;
  ( form.existsHouseholdBuilding.checked ) ? form.iSumHouseholdBuilding.disabled = false : form.iSumHouseholdBuilding.disabled = true;
  ( form.existsFurniture.checked ) ? form.iSumFurniture.disabled = false : form.iSumFurniture.disabled = true;
  ( form.existsBathHouse.checked ) ? form.iSumBathHouse.disabled = false : form.iSumBathHouse.disabled = true;
  ( form.existsLiability.checked ) ? form.iSumLiability.disabled = false : form.iSumLiability.disabled = true;
}


// House. Проверка при submit
function checkHouseCalc( element ) {
  var iSumPattern = /^[0-9]{1,}$/;
  var form = element.form;
  var errorMsg = "";

  ( form.existsHouse.checked && !iSumPattern.test( form.iSumHouse.value ) ) ? form.iSumHouse.className = "inputWrong" : form.iSumHouse.className = "input";
  ( form.existsHouseholdBuilding.checked && !iSumPattern.test( form.iSumHouseholdBuilding.value ) ) ? form.iSumHouseholdBuilding.className = "inputWrong" : form.iSumHouseholdBuilding.className = "input";
  ( form.existsFurniture.checked && !iSumPattern.test( form.iSumFurniture.value ) ) ? form.iSumFurniture.className = "inputWrong" : form.iSumFurniture.className = "input";
  ( form.existsBathHouse.checked && !iSumPattern.test( form.iSumBathHouse.value ) ) ? form.iSumBathHouse.className = "inputWrong" : form.iSumBathHouse.className = "input";
  ( form.risk.value == -1 ) ? form.riskName.className = "inputWrong" : form.riskName.className = "input";


  errorMsg += ( ( form.existsHouse.checked && !iSumPattern.test( form.iSumHouse.value ) ) || ( form.existsHouseholdBuilding.checked && !iSumPattern.test( form.iSumHouseholdBuilding.value ) ) ||
               ( form.existsFurniture.checked && !iSumPattern.test( form.iSumFurniture.value ) ) || ( form.existsBathHouse.checked && !iSumPattern.test( form.iSumBathHouse.value ) ) || ( form.risk.value == -1 )
             ) ? errorField + errorMsg : "";

  if ( !form.existsHouse.checked && !form.existsHouseholdBuilding.checked ) {
    errorMsg += "<p>Основное строение и Хозстроение являются обязательными предметами страхования.</p>";
  }


  if ( !beforeSubmitResult(errorMsg) ) {
    document.getElementById("housePremium").innerHTML = "&nbsp;";  
    document.getElementById("resultAnchor").focus();      
    return false;
  } 
  else
    return true;
}


//----------------------------------------------------------------------------
// Medicine. ДМС Доктор РЕСО. При выборе города или возраста
//----------------------------------------------------------------------------
function changeMedCityOrAge( element ) {
  var form = element.form; 
    
  //--------------------------------------------------------------------------
  // Категории полиса
  //--------------------------------------------------------------------------

  //-- Категория I [Дети - Санкт-Петербург, Нижний Новгород, Пермь]
  if (( (form.insurantAge.value >= 0) && (form.insurantAge.value <= 3) ) && 
      ( (form.category[1].checked) || (form.category[3].checked) ) && 
      ( (form.city.value == 1) || (form.city.value == 2) || (form.city.value == 3) || (form.city.value == 4) )) 
  {
    form.category[0].checked = true; 
  }
    
  //-- Категория II+ [Дети - Санкт-Петербург, Нижний Новгород, Пермь]
  if ( ( ( (form.insurantAge.value >= 0) && (form.insurantAge.value <= 3) ) || 
         ( (form.city.value != 0) ) ) &&  
         ( (form.category[2].checked) )) 
  {
    form.category[0].checked = true; 
  }

  //-- Категория II [Дети - Нижний Новгород, Премь]
  form.category[1].disabled = ((form.insurantAge.value >= 0) && (form.insurantAge.value <= 3) && ((form.city.value == 2) || (form.city.value == 3)));
  //-- Категория II+ [Дети - Нижний Новгород, Премь,Санкт-Петербург, Екатеринбург, Новосибирск]
  form.category[2].disabled = ((form.insurantAge.value >= 0) && (form.insurantAge.value <= 3) || ((form.city.value == 1) || (form.city.value == 2) || (form.city.value == 3) || (form.city.value == 4) || (form.city.value == 5)));
  //-- Категория III [Дети - Санкт-Петербург, Нижний Новгород, Екатеринбург, Новосибирск] или [Пермь]
  form.category[3].disabled = ((form.insurantAge.value >= 0) && (form.insurantAge.value <= 3) && ((form.city.value == 1) || (form.city.value == 2) || (form.city.value == 4) || (form.city.value == 5))) || (form.city.value == 3);
  
  //--------------------------------------------------------------------------
  // Программы страхования
  //--------------------------------------------------------------------------  
  
  // Сброс выбранных программ страхования
  form.existsStomatologicalHelp.checked = false;
  form.existsHospital.checked = false;
  form.existsDiagnostic.checked = false;
  
  //-- Cтоматологическая помощь [Пермь]
  form.existsStomatologicalHelp.disabled = (form.city.value == 3);
  //-- Диагностическая программа [Пермь]
  form.existsDiagnostic.disabled = (form.city.value == 3);
  
}

// Проверка при submit
function checkMedCalc( element ) {
  var form = element.form; 
  var errorMsg = "";
  if ( ( form.insurantAge.value == 0 ) || ( form.insurantAge.value == 7 ) )
    errorMsg = "<p>Возраст застрахованного должен быть от 1 года до 75 лет. Для страхования других возрастных категорий обратитесь в офис РЕСО-Гарантия.</p>"
  if ( ( form.insurantAge.value <= 1 ) && ( form.city.value == 1 ) && ( form.category[2].checked ) )
    errorMsg += "<p>Для застрахованных от 1 года до 16 лет в Санкт-Петербурге не может быть выбрана категория полиса III.</p>"

  return beforeSubmitResult(errorMsg);
}


//----------------------------------------------------------------------------
// Medicine. ДМС Экстренная помощь. При выборе города или возраста
//----------------------------------------------------------------------------
function changeMedSpecHelpCityOrAge( element ) {
  var form = element.form;  

  //-- Категория I (Сбрасываем)
  if ( ( ( (form.category[1].checked) || (form.category[2].checked) ) && 
         ( (form.city.value == 0) || (form.city.value == 1) || (form.city.value == 2) )
       ) ||
       ( 
         (form.category[2].checked) &&  
         ( (form.insurantAge.value >= 0) && (form.insurantAge.value <= 2) )
       )
     ) 
  {
    form.category[0].checked = true; 
  }
  
  
  //-- Категория II 
  form.category[1].disabled = ( ( (form.city.value == 0) && (form.insurantAge.value >= 0) && (form.insurantAge.value <= 2) ) || 
                                (form.city.value == 1) || 
                                (form.city.value == 2) );
  //-- Категория III 
  form.category[2].disabled = ( (form.insurantAge.value >= 0) && (form.insurantAge.value <= 2) ) || 
                              ( (form.city.value == 1) || (form.city.value == 2) );
  
  if ((form.insurantAge.value >= 0 ) && ( form.insurantAge.value <= 2 )) form.existsHealthABC.checked = false; 
  if ((form.insurantAge.value >= 3 ) && ( form.insurantAge.value <= 5 )) form.existsSchool.checked = false; 

  form.existsHealthABC.disabled = ((form.insurantAge.value >= 0 ) && ( form.insurantAge.value <= 2 ));
  form.existsSchool.disabled = ((form.insurantAge.value >= 3 ) && ( form.insurantAge.value <= 5 )); 
}


//------------------------------------------------------------------------------
// Проверка данных формы ДМС "Экстренная помощь" при submit
//------------------------------------------------------------------------------
function checkMedCalcSpecHelp( element ) {
  var form = element.form; 
  var errorMsg = "";

  //-- Диагностическая программа "Азбука здоровья"
  if ( (form.existsHealthABC.checked) &&
       ( (form.insurantAge.value == 0 ) || 
         (form.insurantAge.value == 1 ) ||
         (form.insurantAge.value == 2 )))
  {
    errorMsg = "<p>Для застрахованных от 0 до 18 лет не может быть выбрана диагностическая программа \"Азбука здоровья\".</p>";
  }

  //-- Диагностическая программа "Скоро в школу / детский сад"
  if ( (form.existsSchool.checked) &&
       ( (form.insurantAge.value == 3 ) || 
         (form.insurantAge.value == 4 ) ||
         (form.insurantAge.value == 5 )))
  {
    errorMsg += "<p>Для застрахованных от 18 до 75 лет не может быть выбрана диагностическая программа \"Скоро в школу / детский сад\".</p>";
  }

  
  return beforeSubmitResult(errorMsg);
}


// При выборе предмета
function checkHypothecSubject( element ) {
  var form = element.form; 
  ( form.existsLife.checked ) ? form.existsTimeWorkAbility.disabled = false : form.existsTimeWorkAbility.disabled = true;
  if ( form.existsOwnership.checked ) {
    form.existsEncumbrance.disabled = false;
    form.existsProperty.checked = true;
  }
  else
    form.existsEncumbrance.disabled = true;

  ( form.existsProperty.checked ) ? form.propertyType.disabled = false : form.propertyType.disabled = true;

}

// Добавляем заемщика в калькулятор ипотеки
function addHypothecBorrower( currentElement ) {
  var form = currentElement.form; 
  var count = form.borrowerCount.value;

  if ( count >= 3 ) {
    alert("Максимальное количество заемщиков может быть не более трех!" );
	return;
  }

  count++;
  form.borrowerCount.value = count;
  var table = document.getElementById("hypothecBorrowers");

  var row = table.insertRow( ( count - 1 ) * 4 );
  var cell = row.insertCell(0);
  cell.className = "nameLabel";
//  cell.innerHTML = ( "Заемщик" + count ).bold();
  cell.innerHTML = ( "Созаемщик" ).bold();
  cell = row.insertCell(1);

  row = table.insertRow( ( ( count - 1 ) * 4 ) + 1 );
  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "<a href='' onClick='return openNoteWindow( this, cTitleHypothecAge, cNoteHypothecAge );'>Возраст</a>, лет <span class='mandatory'>*</span>";
  cell = row.insertCell(1);
  element = document.createElement("input");
  element.type = "text";
  element.className = "input";
  element.name = "age" + count;
  element.maxLength = 3;
  element.value = 30;
  element.onkeypress = checkIntKeyPress;
  cell.appendChild(element);



  row = table.insertRow( ( ( count - 1 ) * 4 ) + 2 );
  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "Пол <span class='mandatory'>*</span>";
  cell = row.insertCell(1);
  var element = document.createElement("select");
  element.name = "sex" + count;
  var option = document.createElement("option");
  option.value = "M";
  option.text = "муж";
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = document.createElement("option");
  option.value = "F";
  option.text = "жен";
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  cell.appendChild(element); 

  row = table.insertRow( ( ( count - 1 ) * 4 ) + 3 );
  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "<a href='' onClick='return openNoteWindow( this, cTitleHypothecISum, cNoteHypothecISum );'>Страховая сумма</a>, % <span class='mandatory'>*</span>";
  cell = row.insertCell(1);
  element = document.createElement("input");
  element.type = "text";
  element.className = "input";
  element.name = "percent" + count;
  element.maxLength = 3;
  element.value = 25;
  element.onkeypress = checkIntKeyPress;
  cell.appendChild(element);
}

//Удаляем заемщика из калькулятора ипотеки
function deleteHypothecBorrower( currentElement ) {
  var form = currentElement.form; 

  var count = form.borrowerCount.value;

  if ( count  <= 1 ) {
    alert("Минимальное количество заемщиков может быть не менее одного!" );
	return;
  }
  var table = document.getElementById("hypothecBorrowers");
  for ( i = ( ( count - 1 ) * 4 + 3 ); i >= ( ( ( count - 1 ) * 4 )  ) ; i-- )
    table.deleteRow( i );

  form.borrowerCount.value--;
}

// Проверка при submit
function checkHypothecCalc( element ) {
  var form = element.form; 
  var percentPattern = /^[0-9]{1,3}$/;
  var errorMsg = "";
  var borrowersOK = true;

/*  for ( var i = 1; i <= form.borrowerCount.value; i++ ) {
    ( !agePattern.test( eval('form.age' + i + '.value' ) ) ) ? errorMsg = "<p>Возраст заемщика" + i + " - некорректное значение.</p>" : errorMsg = "" ;
    ( eval('form.age' + i + '.value < 18' )  || eval('form.age' + i + '.value > 64' ) )   ? errorMsg += "<p>Возраст заемщика" + i + " может быть от 18 до 64 лет.</p>" : errorMsg += "" ;
    ( !percentPattern.test( eval('form.percent' + i + '.value' ) ) ) ? errorMsg += "<p>Страховая сумма для заемщика" + i + " - некорректное значение.</p>" : errorMsg += "" ;
  }

  ( !iSumPattern.test( form.iSum.value ) ) ? errorMsg += "<p>Сумма кредита - некорректное значение.</p>" : errorMsg += "" ;
  ( !form.existsLife.checked && !form.existsProperty.checked && !form.existsOwnership.checked  ) ? errorMsg += "<p>Не выбран ни один из объектов страхования.</p>" : errorMsg += "" ;

  return beforeSubmitResult(errorMsg); */

  ( !intPattern.test( form.iSum.value ) ) ? form.iSum.className = "inputWrong" : form.iSum.className = "input";
  ( !form.existsLife.checked && !form.existsProperty.checked && !form.existsOwnership.checked  ) ? errorMsg += "<p>Не выбран ни один из объектов страхования.</p>" : errorMsg += "" ;

  for ( var i = 1; i <= form.borrowerCount.value; i++ ) {
    if ( ( !intPattern.test( eval("form.age" + i + ".value" ) ) ) || ( eval("form.age" + i + ".value < 18" )  || eval("form.age" + i + ".value > 64" ) ) ) {
      eval("form.age" + i + ".className = 'inputWrong'" );
      borrowersOK = false;
    }
    else 
      eval( "form.age" + i + ".className = 'input'" );

    ( eval( "form.age" + i + ".value < 18" )  || eval( "form.age" + i + ".value > 64" ) )  ? errorMsg += "<p>Возраст заемщика" + i + " может быть от 18 до 64 лет.</p>" : errorMsg += "" ;

    if ( !percentPattern.test( eval( "form.percent" + i + ".value" ) ) ) {
      eval( "form.percent" + i + ".className = 'inputWrong'" ); 
      borrowersOK = false;
    } 
    else 
      eval( "form.percent" + i + ".className = 'input'" );
  }
  errorMsg =  ( ( !intPattern.test( form.iSum.value ) ) || ( !form.existsLife.checked && !form.existsProperty.checked && !form.existsOwnership.checked ) ||
               ( !borrowersOK ) ) ? errorField + errorMsg : "";


  if ( !beforeSubmitResult(errorMsg) ) {
    document.getElementById("hypothecPremium").innerHTML = "&nbsp;";  
    document.getElementById("resultAnchor").focus();      
    return false;
  } 
  else
    return true;

}

// Выбор предмета расчета
function checkLifeCalcSubject( element ) {
  var form = element.form; 
  var subjectText = document.getElementById("calcSubjectText");
  var resultText = document.getElementById("calcText");
  if ( form.calcSubject[1].checked ) {
//    subjectText.innerHTML = ( "Премия, руб. <span class='mandatory'>*</span>" ).bold();
    subjectText.innerHTML = ( "Премия <span class='mandatory'>*</span>" ).bold();
    resultText.innerHTML = ( "Страховая сумма" ).bold();
  }
  else
  {
//    subjectText.innerHTML = ( "Страховая сумма, руб. <span class='mandatory'>*</span>" ).bold();
    subjectText.innerHTML = ( "Страховая сумма <span class='mandatory'>*</span>" ).bold();
    resultText.innerHTML = ( "Страховая премия" ).bold();
  }
}

// Проверка при submit
function checkLifeCalc( element ) {
  var form = element.form; 
  var premiumPattern = /^[0-9]{1,}\.{0,1}[0-9]*$/;
  var errorMsg = "";

/*  ( !intPattern.test( form.age.value ) ) ? errorMsg += "<p>Возраст застрахованного - некорректное значение.</p>" : errorMsg += "" ;
  ( ( form.age.value != "" ) && ( form.age.value <= 0 ) ) ? errorMsg += "<p>Возраст застрахованного не может быть меньше года.</p>" : errorMsg += "" ;

  ( !intPattern.test( form.duration.value ) ) ? errorMsg += "<p>Срок страхования - некорректное значение.</p>" : errorMsg += "" ;
  ( ( form.duration.value != "" ) && ( form.duration.value <= 0 ) ) ? errorMsg += "<p>Срок страхования не может быть меньше года.</p>" : errorMsg += "" ;

  if ( form.calcSubject[1].checked ) {
    ( !premiumPattern.test( form.iSumPremium.value ) ) ? errorMsg += "<p>Премия - некорректное значение.</p>" : errorMsg += "" ;
    ( ( form.iSumPremium.value != "" ) && ( form.iSumPremium.value <= 0 ) ) ? errorMsg += "<p>Премия не может быть равной нулю.</p>" : errorMsg += "" ;
  }
  else {
    ( !intPattern.test( form.iSumPremium.value ) ) ? errorMsg += "<p>Страховая сумма - некорректное значение.</p>" : errorMsg += "" ;
    ( ( form.iSumPremium.value != "" ) && ( form.iSumPremium.value <= 0 ) ) ? errorMsg += "<p>Страховая сумма не может быть равной нулю.</p>" : errorMsg += "" ;
  }
  ( ( form.risk.value == -1 ) || ( form.risk.value == "" ) ) ? errorMsg += "<p>Необходимо выбрать программу страхования.</p>" : errorMsg += "" ;

  ( !codePattern.test( form.codeImage.value ) ) ? errorMsg += "<p>Необходимо ввести код.</p>" : errorMsg += "" ;

  return beforeSubmitResult(errorMsg); */


  ( ( !intPattern.test( form.age.value ) ) || ( ( form.age.value != "" ) && ( form.age.value <= 0 ) ) ) ? form.age.className = "inputWrong" : form.age.className = "input";
  ( ( form.age.value != "" ) && ( form.age.value <= 0 ) ) ? errorMsg += "<p>Возраст застрахованного не может быть меньше года.</p>" : errorMsg += "" ;

  ( ( !intPattern.test( form.duration.value ) ) || ( ( form.duration.value != "" ) && ( form.duration.value <= 0 ) ) ) ? form.duration.className = "inputWrong" : form.duration.className = "input";
  ( ( form.duration.value != "" ) && ( form.duration.value <= 0 ) ) ? errorMsg += "<p>Срок страхования не может быть меньше года.</p>" : errorMsg += "" ;


  ( ( !premiumPattern.test( form.iSumPremium.value ) ) || ( ( form.iSumPremium.value != "" ) && ( form.iSumPremium.value <= 0 ) ) ) ? form.iSumPremium.className = "inputWrong" : form.iSumPremium.className = "input";
  if ( form.calcSubject[1].checked ) {
    ( ( form.iSumPremium.value != "" ) && ( form.iSumPremium.value <= 0 ) ) ? errorMsg += "<p>Премия не может быть равной нулю.</p>" : errorMsg += "" ;
  }
  else {
    ( ( form.iSumPremium.value != "" ) && ( form.iSumPremium.value <= 0 ) ) ? errorMsg += "<p>Страховая сумма не может быть равной нулю.</p>" : errorMsg += "" ;
  }

  ( ( form.risk.value == -1 ) || ( form.risk.value == "" ) ) ? form.riskName.className = "inputWrong" : form.riskName.className = "input";
   ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input"; 


  errorMsg = ( ( !intPattern.test( form.age.value ) ) || ( ( form.age.value != "" ) && ( form.age.value <= 0 ) ) ||
               ( !intPattern.test( form.duration.value ) ) || ( ( form.duration.value != "" ) && ( form.duration.value <= 0 ) ) ||
               ( !premiumPattern.test( form.iSumPremium.value ) ) || ( ( form.iSumPremium.value != "" ) && ( form.iSumPremium.value <= 0 ) ) ||
               ( form.risk.value == -1 ) || ( form.risk.value == "" ) || ( !codePattern.test( form.codeImage.value ) ) 
             ) ? errorField + errorMsg : "";


  if ( !beforeSubmitResult(errorMsg) ) {
    document.getElementById("lifePremium").innerHTML = "&nbsp;";  
    document.getElementById("resultAnchor").focus();      
    return false;
  } 
  else
    return true;

}

// Добавляем водителя в калькулятор осаго
function addOsagoDriver( currentElement ) {

  var form = currentElement.form; 
  var count = form.driverCount.value;

  if ( count >= 5 ) {
    alert("Максимальное количество водителей может быть не более пяти!" );
	return;
  }

  count++;
  form.driverCount.value = count;
  var table = document.getElementById("drivers");

  var row = table.insertRow( ( count - 1 ) * 3 );
  var cell = row.insertCell(0);
  cell.innerHTML = ( "Водитель" + count ).bold();
  cell = row.insertCell(1);
  row = table.insertRow( ( ( count - 1 ) * 3 ) + 1 );

  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "Возраст";

  cell = row.insertCell(1);
  var element = document.createElement("select");
  element.name = "driverAge" + count;
  var option = document.createElement("option");
  option.value = "0";
  option.text = "до 22х лет";
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = document.createElement("option");
  option.value = "1";
  option.text = "22 года и старше";
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  cell.appendChild(element);

  row = table.insertRow( ( ( count - 1 ) * 3 ) + 2 );
  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "Стаж";

  cell = row.insertCell(1);
  var element = document.createElement("select");
  element.name = "driverStage" + count;
  var option = document.createElement("option");
  option.value = "0";
  option.text = "не более двух лет";
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = document.createElement("option");
  option.value = "1";
  option.text = "более двух лет";
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  cell.appendChild(element);
}

//Удаляем водителя из калькулятора осаго
function deleteOsagoDriver( currentElement ) {
  var form = currentElement.form; 
  var count = form.driverCount.value;

  if ( count  <= 1 ) {
    alert("Минимальное количество водителей может быть не менее одного!" );
	return;
  }
  var table = document.getElementById("drivers");
  for ( i = ( ( count - 1 ) * 3 + 2 ); i >= ( ( ( count - 1 ) * 3 )  ) ; i-- )
    table.deleteRow( i );

  form.driverCount.value--;
}

// ОСАГО При выборе неограниченного кол-ва людей для управления ТС
function checkOsagoDriverUnlim( element ) {
  var form = element.form; 
  var count = form.driverCount.value;
  form.addDriver.disabled = form.deleteDriver.disabled = form.age1.disabled = form.stage1.disabled = !element.checked;

  //для IE, иначе он неадекватен, пытаясь применить два стиля одновременно
  if ( element.checked ) form.addDriver.className = form.deleteDriver.className = "button";

  while ( count > 1) {
    deleteOsagoDriver( element );
    count--;
  }
}

// ОСАГО При выборе ДГО
function checkLiability( element ) {
  var form = element.form; 
  form.liabilityISum.disabled = form.existsNoWear.disabled = !element.checked;
}


// ОСАГО. При выборе неограниченного кол-ва людей для управления ТС
function checkAutoOsagoDriverUnlim( element ) {
  var form = element.form; 
  //var count = form.driverCount.value;
  form.driverAgeStage.disabled = ( element.value == 0 );

  //form.addDriver.disabled = form.deleteDriver.disabled = form.driverAge1.disabled = form.driverStage1.disabled = ( element.value == 0 );
  //form.kbm.disabled = ( element.value == 1 );

  //для IE, иначе он неадекватен, пытаясь применить два стиля одновременно
  /*if ( element.checked ) form.addDriver.className = form.deleteDriver.className = "button";

  while ( count > 1) {
    deleteOsagoDriver( element );
    count--;
  }*/
}


//--------------------------------------------------------------------
// ОСАГО. При смене страхователя, юр лицо или физ лицо.
//--------------------------------------------------------------------
function changeAutoOsagoFace( element ) {
  var form = element.form; 
  form.driverAgeStage.disabled = form.driverList[0].checked = form.driverList[0].disabled = form.driverList[1].disabled = ( element.value == 1 );
  form.driverList[1].checked = ( element.value == 0 );

  //-----------------------------------------------------------------
  // Период использования (для Юридических лиц д.б >= 6 месяцам)
  //-----------------------------------------------------------------
  form.period.options[3].selected = (element.value == 1);
  form.period.options[7].selected = (element.value == 0);
    
  form.period.options[0].disabled = (element.value == 1);
  form.period.options[1].disabled = (element.value == 1);
  form.period.options[2].disabled = (element.value == 1);   
}


// Добавляем водителя в калькулятор авто
function addAutoDriver( currentElement, path ) {
  var form = currentElement.form; 
  var count = form.driverCount.value;

  eraseAutoCalcPremium();

  if ( count >= 5 ) {
    alert("Максимальное количество водителей может быть не более пяти!" );
	return;
  }

  count++;
  form.driverCount.value = count;
  var table = document.getElementById("drivers");

  var row = table.insertRow( ( count - 1 ) * 4 );
  var cell = row.insertCell(0);
//  cell.innerHTML = ( "Водитель" + count ).bold();
  cell.className = "nameLabel";
  cell.innerHTML = ( "Водитель" ).bold();
  cell = row.insertCell(1);
  row = table.insertRow( ( ( count - 1 ) * 4 ) + 1 );

  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "Возраст, лет";

  cell = row.insertCell(1);
  var element = document.createElement("select");
  element.name = "driverAge" + count;
  var option = addElementOption( "0", "18-22" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = addElementOption( "1", "23-27" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = addElementOption( "2", "28-36" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = addElementOption( "3", "37-45" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = addElementOption( "4", "46+" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  cell.appendChild(element);

  row = table.insertRow( ( ( count - 1 ) * 4 ) + 2 );
  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "Стаж";

  cell = row.insertCell(1);
  element = document.createElement("select");
  element.name = "driverStage" + count;
  option = addElementOption( "0", "до года" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = addElementOption( "1", "от 1 до 2-х лет" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = addElementOption( "2", "более 2-х лет" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  cell.appendChild(element);

  row = table.insertRow( ( ( count - 1 ) * 4 ) + 3 );
  cell = row.insertCell(0);
  cell.className = "nameLabel";
  cell.innerHTML = "Пол";

  cell = row.insertCell(1);
  element = document.createElement("select");
  element.name = "driverSex" + count;
  var option = addElementOption( "M", "муж" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  option = addElementOption( "F", "жен" );
  (element.options.add) ? element.options.add(option) : element.add(option, null);
  cell.appendChild(element);
}


//Удаляем водителя из калькулятора
function deleteAutoDriver( currentElement ) {
  var form = currentElement.form; 
  var count = form.driverCount.value;

  eraseAutoCalcPremium();

  if ( count  <= 1 ) {
    alert("Минимальное количество водителей может быть не менее одного!" );
	return;
  }
  var table = document.getElementById("drivers");
  for ( i = ( ( count - 1 ) * 4 + 3 ); i >= ( ( ( count - 1 ) * 4 )  ) ; i-- )
    table.deleteRow( i );

  form.driverCount.value--;
}


// Вызов агента. Проверка при submit
function checkAgentCall( element ) {

  var form = element.form; 
  var errorMsg = "";

  ( !textPattern.test( form.name.value ) ) ? form.name.className = "inputWrong" : form.name.className = "input";
  ( !emailPattern.test( form.email.value ) )  ? form.email.className = "inputWrong" : form.email.className = "input";

  if ( form.filial.value.indexOf("top_") != -1 ) {
    errorMsg += "<p>В поле Ближайший филиал нужно выбрать либо определенный город, либо станцию метро.</p>";
    form.filial.className = "inputWrong";
  }
  else if ( form.filial.value == "" ) {
    errorMsg += "<p>В поле Ближайший филиал выбран филиал, у которого отсутствует e-mail.</p>";
    form.filial.className = "inputWrong";
  }
  else
    form.filial.className = "input";

  ( form.text.value == "" ) ? form.text.className = "inputWrong" : form.text.className = "input";
  ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input";

  errorMsg = ( ( !textPattern.test( form.name.value ) ) || ( !emailPattern.test( form.email.value ) ) || 
               ( form.filial.value.indexOf("top_") != -1 ) || ( form.filial.value == "" ) || ( form.text.value == "" ) ||
               ( !codePattern.test( form.codeImage.value ) ) ) ? "<p>Поля отмеченные красной рамкой должны быть заполнены корректными значениями.</p>" + errorMsg : "";

  return beforeSubmitResult(errorMsg);
}


// Окно с примечанием-пояснением
function openNoteWindow( element, header, msg, height, width ) {
  if( wNote != null )
    if( wNote.closed ) { wNote = null; }
    else { wNote.close(); }

  if ( msg == null )  msg = "";
  if ( height == null ) height = 370;
  if ( width == null ) width = 400;
  options = oNote + ",height=" + height + ",width=" + width;
  wNote = open("", "WindowNote", options);
//  var noteHeight = Math.round(height * 0.75);
  var noteHeight = height - 100;

  with ( wNote.document ) {
    write("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n");
    write("<html>\n");
    write("<head>\n");
    write("<meta http-equiv='content-type' content='text/html; charset=windows-1251'>\n");
    write("<link rel='stylesheet' type='text/css' href='/system/modules/reso.site/resources/css/default.css' media='all'>");
    write("<title>");
    write("РЕСО-Гарантия - Примечание");
    write("</title>");
    write("</head>");
    write("<body style='min-width: 0px;'>");
//    write("<body>");
    write("<div class='noteTitle'>");
    write("<h2>" + header + "</h2>");
    write("</div>");
    write("<div class='note' style='height : " + noteHeight + "px;'>");
    write( ( ( msg == "null" ) ? "" : msg ) );
    write("</div>");
    write("<div class='noteTitle'>");
    write("<input class='button' type='button' value='Закрыть' onClick='window.close();'>");
    write("</div>");
    write("</body>");
    write("<html>");
    close();
  }

  return false;
}

//ОСАГО. Установка значения из справочника территорий
function setTerritoryDctValue( form, id, name ) {
  form.territory.value = id;
  form.territoryName.value = name;
  //Для Онлайн-РЕСО
  if ( form.ownerCity != null ) {
    form.ownerCity.value = name;
    if ( ( name.indexOf("другие населенные пункты") != -1 ) || ( name.indexOf("область") != -1 ) ) { 
      form.ownerCity.value = "";
    }
  }
  window.close();
}


// ОСАГО. Словарь территорий
function showOsagoTerritoryDct( element, path ) {
  var form = element.form; 
  if ( wTerritories != null )
    if ( wTerritories.closed ) { wTerritories = null; }
    else { wTerritories.focus(); return; }
  wTerritories = open( '', 'WindowTerritories', oCarBrand );
  with ( wTerritories.document ){
    write( '<form name="territories" method="post" action="' + path + '">' );
    write( '<input type="hidden" name="action"  value=\'viewOsagoTerritories\'>' );
    write( '</form>' );
    close();
    territories.submit();
  }
}


//ОСАГО. Словарь категорий
function showCarCategoryDct( element, path ) {
  var form = element.form; 
  if ( wCarCategories != null )
    if ( wCarCategories.closed ) { wCarCategories = null; }
    else { wCarCategories.focus(); return; }
  wCarCategories = open( '', 'WindowTerritories', oCarBrand );
  with ( wCarCategories.document ){
    write( '<form name="categories" method="post" action="' + path + '">' );
    write( '<input type="hidden" name="action"  value=\'viewCarCategories\'>' );
    write( '</form>' );
    close();
    categories.submit();
  }
}


//ОСАГО
function setCarCategoryDctValue( form, id , name ) {
  form.categoryName.value = name;
  form.category.value = id;
  window.close();
}

// ОСАГО. Проверка при submit
function checkAutoOsagoCalc( element, action ) {
  var form = element.form; 
  form.action.value = action;
  var errorMsg = "";

  ( ( form.territory.value == "" ) || ( form.territory.value == "-1" ) ) ? form.territory.className = "inputWrong" : form.territory.className = "input";
  ( ( form.category.value == "" ) || ( form.category.value == "-1" ) ) ? form.category.className = "inputWrong" : form.category.className = "input";
  ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input";

  errorMsg = ( ( form.territory.value == "" ) || ( form.territory.value == "-1" ) || ( form.category.value == "" ) || ( form.category.value == "-1" ) ||
               ( !codePattern.test( form.codeImage.value ) )  
             ) ? errorField : "";

  if ( !beforeSubmitResult(errorMsg) ) {
    document.getElementById("osagoPremium").innerHTML = "&nbsp;";  
    document.getElementById("liabilityPremium").innerHTML = "&nbsp;";  
    document.getElementById("resultAnchor").focus();      
    return false;
  } 
  else
    return true; 

}


// КАСКО. Словарь автомобилей. Не используется
function showCarDct( element, path ){
/*  var form = element.form; 
  if ( wCarBrands != null )
    if ( wCarBrands.closed ) { wCarBrands = null; }
    else { wCarBrands.focus(); return; }
  wCarBrands = open( '', 'WindowCarBrands', oCarBrand );
  with (wCarBrands.document){
    write('<form name="carBrands" method="post" action="' + path + '">');
    write('<input type="hidden" name="action"  value=\'viewCarBrands\'>');
    write('</form>');
    close();
    carBrands.submit();
  }
*/
}


//----------------------------------------------------------------------------------------
// КАСКО. Установка значения из справочника автомобилей
//----------------------------------------------------------------------------------------
function setCarDctValue( form, modelName, seats, modelCode ) {
  form.modelName.value = modelName;
  form.seats.value = seats;
  window.opener.document.getElementById( "seatsText" ).innerHTML = seats;
  form.modelCode.value = modelCode;
  window.close();
}


//----------------------------------------------------------------------------------------
// КАСКО. Установка значения из справочника автомобилей
//----------------------------------------------------------------------------------------
function setCarDctValue( form, modelName, seats, modelCode, vehicleType ) {
  form.modelName.value = modelName;
  form.seats.value = seats;
  form.modelCode.value = modelCode;

  //для Онлайн-РЕСО
  if ( form.vehicleType != null ) {
    form.vehicleType.value = vehicleType;
  }

  if ( form.seats != null ) { 
    form.seats.value = seats;
  }

  if ( window.opener.document.getElementById( "seatsText" ) != null ) { 
    window.opener.document.getElementById( "seatsText" ).innerHTML = seats;
  }

  window.close();
}


//----------------------------------------------------------------------------------------
// [kajam - 2011-05-23]
// КАСКО. Установка значения из справочника автомобилей
//----------------------------------------------------------------------------------------
function setCarDctValue( form, modelName, seats, modelCode, enableCarType, carTypesStr, carTypesCount ) {
  form.modelName.value = modelName;
  form.seats.value = seats;
  form.modelCode.value = modelCode;


  //--------------------------------------------------------- 
  // Тип ТС
  //--------------------------------------------------------- 
  
  if ( form.vehicleType != null ) {
    form.vehicleType.disabled = enableCarType;
    //-- kajam 
    //form.vehicleType.value = vehicleType;

        
    //-- Очищаем список типов ТС
    while (form.vehicleType.options.length) {
      form.vehicleType.options[0] = null;
    }    
     
    //--
    var fromPos = 0; 

    //-- Формируем список типов ТС из строки carTypesStr
    for (var i = 1; i <= carTypesCount; i++) {   
      //-- 
      var toPos = carTypesStr.indexOf("##", fromPos);

      //-- 
      var carTypeItemStr = carTypesStr.substring(fromPos,toPos);

      var fromPosItem = 0;       
      //--
      if (carTypeItemStr.indexOf("@") > 0) {
        isSelected = true;        
        fromPosItem = carTypeItemStr.indexOf("@") + 1;
      } else {
        isSelected = false;
      }

            
      text = carTypeItemStr.substring(fromPosItem, carTypeItemStr.indexOf("="));
      value = carTypeItemStr.substring(carTypeItemStr.indexOf("=") + 1, carTypeItemStr.length);

      //-- Все Browsers                            
      try {
        var objOption = new Option(text, value);            
        objOption.selected = isSelected;
        form.vehicleType.options[form.vehicleType.length] = objOption;
      }
      //-- Из-за особенности работы "IE" дочерний элемент надо создавать том окне где находится родительский
      catch(e) {      
        if(window.opener){
          var objOption = window.opener.addElementOption( value, text );
          objOption.selected = isSelected;
        }
                
        form.vehicleType.add(objOption);
      }


      //-- 
      fromPos = toPos + 2;
    }
    
  }

  //--------------------------------------------------------- 
  // Кол-во мест в ТС
  //--------------------------------------------------------- 
  if ( form.seats != null ) { 
    form.seats.value = seats;
  }

  if ( window.opener.document.getElementById( "seatsText" ) != null ) { 
    window.opener.document.getElementById( "seatsText" ).innerHTML = seats;
  }


  window.close();
}


// КАСКО. Установка значения программы выплаты из справочника. Не используется
function setPaymentProgrammDctValue( form, id , name ) {
  form.paymentName.value = name;
  form.payment.value = id;
  window.close();
}


// КАСКО. Проверка при submit
function checkAutoCalc( element ) {
  var form = element.form; 
  var premiumPattern = /^[0-9]{1,}\.{0,1}[0-9]*$/;
  var errorMsg = "";

  ( ( form.modelCode.value == "" ) || ( form.modelCode.value == "-1" ) ) ? form.modelName.className = "inputWrong" : form.modelName.className = "input";
  ( ( !premiumPattern.test( form.price.value ) ) || ( form.price.value == 0 ) ) ? form.price.className = "inputWrong" : form.price.className = "input";
  ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input"; 

  errorMsg = ( ( form.modelCode.value == "" ) || ( form.modelCode.value == "-1" ) || ( !premiumPattern.test( form.price.value ) ) || ( form.price.value == 0 ) ||
               ( !codePattern.test( form.codeImage.value ) )  
             ) ? errorField : "";


  if ( !beforeSubmitResult(errorMsg) ) {
//    table = document.getElementById( "result" );
    document.getElementById("resultAnchor").focus();    

    eraseAutoCalcPremium();

//    for ( i = ( table.rows.length - 1); i >= 8 ; i-- )
//      document.getElementById( "result" ).deleteRow(i);
    return false;
  } 
  else
    return true;
}

//Очищаем значение премий при измении данных в форме
function eraseAutoCalcPremium() {
  table = document.getElementById( "result" );

  for ( i = ( table.rows.length - 1); i >= 8 ; i-- )
    document.getElementById( "result" ).deleteRow(i);
}


//Словарь для калькуляторов
function showDct( element, path, action ) {
  var form = element.form; 
  if ( wDct != null )
    if ( wDct.closed ) { wDct = null; }
    else { wDct.focus(); return; }
  wDct = open( '', 'WindowDct', oCarBrand );
  with ( wDct.document ){
    write( '<form name="dct" method="post" action="' + path + '">' );
    write( '<input type="hidden" name="action"  value="' + action + '">' );
    write( '</form>' );
    close();
    dct.submit();
  }
}

//Добавление значение из словаря
function setDctValue( dctID, dctName, elementID, elementName ) {
  elementName.value = dctName;
  elementID.value = dctID;
  window.close();
}



function checkSendAskToQS( element ) {
  var form = element.form; 
  var errorMsg;

  ( !textPattern.test( form.surName.value ) ) ? form.surName.className = "inputWrong" : form.surName.className = "input";
  ( !textPattern.test( form.name.value ) ) ? form.name.className = "inputWrong" : form.name.className = "input";
  ( !textPattern.test( form.secondName.value ) ) ? form.secondName.className = "inputWrong" : form.secondName.className = "input";
  ( !emailPattern.test( form.email.value ) )  ? form.email.className = "inputWrong" : form.email.className = "input";
  ( form.phone.value == "" )  ? form.phone.className = "inputWrong" : form.phone.className = "input";
  ( form.text.value == "" ) ? form.text.className = "inputWrong" : form.text.className = "input";
  ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input";

  errorMsg = ( ( !textPattern.test( form.surName.value ) ) || ( !textPattern.test( form.name.value ) ) || 
               ( !textPattern.test( form.secondName.value ) ) || ( !emailPattern.test( form.email.value ) ) || 
               ( form.phone.value == "" ) || ( form.text.value == "" ) ||
               ( !codePattern.test( form.codeImage.value ) ) ) ? errorField : "";

  return beforeSubmitResult(errorMsg);
}


function checkSendVacancy( element ) {
  var form = element.form; 
  var errorMsg;

  ( !textPattern.test( form.surName.value ) ) ? form.surName.className = "inputWrong" : form.surName.className = "input";
  ( !textPattern.test( form.name.value ) ) ? form.name.className = "inputWrong" : form.name.className = "input";
  ( !textPattern.test( form.secondName.value ) ) ? form.secondName.className = "inputWrong" : form.secondName.className = "input";
  ( !textPattern.test( form.phone.value ) )  ? form.phone.className = "inputWrong" : form.phone.className = "input";
  ( !emailPattern.test( form.email.value ) )  ? form.email.className = "inputWrong" : form.email.className = "input";

  ( form.birthDate.value == "" ) ? form.birthDate.className = "inputWrong" : form.birthDate.className = "input";
  ( form.town.value == "" ) ? form.town.className = "inputWrong" : form.town.className = "input";
  ( form.vacancy.value == "" ) ? form.vacancy.className = "inputWrong" : form.vacancy.className = "input";
  ( form.education.value == "" ) ? form.education.className = "inputWrong" : form.education.className = "input";
  ( form.experience.value == "" ) ? form.experience.className = "inputWrong" : form.experience.className = "input";
  ( form.skills.value == "" ) ? form.skills.className = "inputWrong" : form.skills.className = "input";


  ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input";

  errorMsg = ( ( !textPattern.test( form.surName.value ) ) || ( !textPattern.test( form.name.value ) ) || ( !textPattern.test( form.town.value ) ) ||
               ( !textPattern.test( form.secondName.value ) ) || ( !emailPattern.test( form.email.value ) ) || 
               ( !textPattern.test( form.phone.value ) ) || ( form.birthDate.value == "" ) || ( form.education.value == "" ) ||
               ( form.experience.value == "" ) || ( form.skills.value == "" ) || ( form.vacancy.value == "" ) ||
               ( !codePattern.test( form.codeImage.value ) ) ) ? errorField : "";

  return beforeSubmitResult(errorMsg);
}


function checkSendFeedBack( element ) {
  var form = element.form; 
  var errorMsg;

  ( !textPattern.test( form.surName.value ) ) ? form.surName.className = "inputWrong" : form.surName.className = "input";
  ( !textPattern.test( form.name.value ) ) ? form.name.className = "inputWrong" : form.name.className = "input";
  ( !textPattern.test( form.region.value ) ) ? form.region.className = "inputWrong" : form.region.className = "input";
  ( !emailPattern.test( form.email.value ) )  ? form.email.className = "inputWrong" : form.email.className = "input";
  ( form.phone.value == "" )  ? form.phone.className = "inputWrong" : form.phone.className = "input";
  ( form.text.value == "" ) ? form.text.className = "inputWrong" : form.text.className = "input";
  ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input";

  errorMsg = ( ( !textPattern.test( form.surName.value ) ) || ( !textPattern.test( form.name.value ) ) || 
               ( !textPattern.test( form.region.value ) ) || ( !emailPattern.test( form.email.value ) ) || 
               ( form.phone.value == "" ) || ( form.text.value == "" ) ||
               ( !codePattern.test( form.codeImage.value ) ) ) ? errorField : "";

  return beforeSubmitResult(errorMsg);
}


// КАСКО. При выборе неограниченного кол-ва людей для управления ТС
function checkAutoDriverUnlim( element ) {
  var form = element.form; 
  var count = form.driverCount.value;

  form.addDriver.disabled = form.deleteDriver.disabled = form.driverAge1.disabled = form.driverSex1.disabled = form.driverStage1.disabled = ( ( form.driverList[1].checked ) || ( form.driverList[0].checked ) || ( form.face.value == 1 ) );

  //для IE, иначе он неадекватен, пытаясь применить два стиля одновременно
  //if ( element.checked ) form.addDriver.className = form.deleteDriver.className = "button";

  while ( count > 1) {
    deleteAutoDriver( element );
    count--;
  }
}

// Калькулятор КАСКО. Изменение валюты.
function changeCurrency( element ) {
  var form = element.form;
  document.getElementById( "isum" ).innerHTML = currencies[element.value];
  //form.payPeriod.disabled = false;
  //form.payPeriod.disabled = ( element.value == 0 );
  //form.payPeriod.value = ( element.value == 0 ) ? 0 : form.payPeriod.value;
}

//-----------------------------------------------------------------------------------
// Калькулятор КАСКО. Изменение владельца
//-----------------------------------------------------------------------------------
function changeOwner( element ) {
  //-- Тип владельца ТС
  var form = element.form;

  //-- Для физ. лиц в разделе Лица допущенные к управлению не доступны "Штатные сотрудники"
  form.driverList[0].disabled = ( element.value == 0 );
  form.driverList[2].checked = ( ( ( element.value == 0 ) && ( form.driverList[0].checked || form.driverList[2].checked ) ) || ( ( element.value == 1 ) && form.driverList[2].checked ) );  

  //-- [kajam 2011-07-04] Для Юр. лиц в разделе Лица допущенные к управлению не доступны "Ограниченный список"
  //form.driverList[2].disabled = ( element.value == 1 );
  
  //-- Физ. лицо
  //if (element.value == 0) {
  //  form.driverList[2].checked = ( element.value == 0 );  
  //} 

  //-- Юр. лицо
  //if (element.value == 1) {
  //  form.driverList[1].checked = ( element.value == 1 );  
  //} 
 
  checkAutoDriverUnlim( document.getElementById( "driverList" ) );
}


function checkAccidentRisk( element ) {
  var form = element.form; 
  ( form.existsPermanentDisablement.checked ) ? form.iSumPermanentDisablement.disabled = false : form.iSumPermanentDisablement.disabled = true;

//  ( form.existsInjury.checked ) ? form.iSumInjury.disabled = form.injuryTable[0].disabled = form.injuryTable[1].disabled = false : form.iSumInjury.disabled = form.injuryTable[0].disabled = form.injuryTable[1].disabled = true;
//  ( form.existsTemporaryDisablement.checked ) ? form.iSumTemporaryDisablement.disabled = form.existsFranchise.disabled = false : form.iSumTemporaryDisablement.disabled = form.existsFranchise.disabled = true;

  if ( form.existsInjury.checked && ( element == form.existsInjury ) ) {
    form.existsTemporaryDisablement.checked = false;
    form.iSumTemporaryDisablement.value = '';
  }

  if ( form.existsTemporaryDisablement.checked && ( element == form.existsTemporaryDisablement ) ) {
    form.existsInjury.checked = false;
    form.iSumInjury.value = '';
  }

  ( form.existsInjury.checked ) ? form.iSumInjury.disabled = form.injuryTable[0].disabled = form.injuryTable[1].disabled = false : form.iSumInjury.disabled = form.injuryTable[0].disabled = form.injuryTable[1].disabled = true;
  ( form.existsTemporaryDisablement.checked ) ? form.iSumTemporaryDisablement.disabled = form.existsFranchise.disabled = false : form.iSumTemporaryDisablement.disabled = form.existsFranchise.disabled = true;

}


//Проверка формата даты
function checkElementAsDate( element ) {
  var datePattern = /^[0-3]{1}\d{1}\.[0-1]{1}\d{1}\.\d{4}$/;

  if ( !datePattern.test( element.value ) )
  {
    return false;
  }
  var curDate = element.value.split(".");
  var curDay = curDate[0];
  var curMonth = curDate[1];
  var curYear = curDate[2];
  var countDays = getDaysInMonth( curYear, curMonth );
  if ( ( (curMonth < 1 ) || ( curMonth > 12 ) ) || ( ( curDay < 1 ) || ( curDay > countDays ) ) ) {
      return false;
  }
  return true;
}


//function checkIntKeyPress( element, event ) {
function checkIntKeyPress( event ) {
  var key, keyChar;

  if ( window.event )
    key = window.event.keyCode;
  else if ( event )
    key = event.which;
  else true;

  if ( key == null || key == 0 || key == 8 || key == 13 || key == 13 || key == 27 )
    return true;

  keyChar = String.fromCharCode( key );
  if ( /\d/.test( keyChar ) ) {
    return true;
  }
  else
    return false;

}

function checkFloatKeyPress( event ) {
  var key, keyChar;
  var premiumPattern = /[0-9.]/;

  if ( window.event )
    key = window.event.keyCode;
  else if ( event )
    key = event.which;
  else true;
  if ( key == null || key == 0 || key == 8 || key == 13 || key == 13 || key == 27 )
    return true;

  keyChar = String.fromCharCode( key );
  if ( premiumPattern.test( keyChar ) ) {
    return true;
  }
  else
    return false;

}


function getDaysInMonth( year, month ) {
  return [31,((!(year % 4 ) && ( (year % 100 ) || !( year % 400 ) ))?29:28),31,30,31,30,31,31,30,31,30,31][month-1];
}

function setActionAndSubmit( element, actionName ) {
  var form = element.form;
  form.action.value = actionName;
  form.submit();
}

// FeedBack. При Отправке в службу качества
function checkQS( element ) {
  var form = element.form; 
  ( form.sentToQS.checked ) ? form.pNumber.disabled = false : form.pNumber.disabled = true;
}

function checkSendToQS( element ) {
  var form = element.form; 
  var errorMsg;

  ( !textPattern.test( form.surName.value ) ) ? form.surName.className = "inputWrong" : form.surName.className = "input";
  ( !textPattern.test( form.name.value ) ) ? form.name.className = "inputWrong" : form.name.className = "input";
  ( !textPattern.test( form.secondName.value ) ) ? form.secondName.className = "inputWrong" : form.secondName.className = "input";
  ( !textPattern.test( form.city.value ) ) ? form.city.className = "inputWrong" : form.city.className = "input";
  ( form.phone.value == "" )  ? form.phone.className = "inputWrong" : form.phone.className = "input";
  ( form.email.value == "" )  ? form.email.className = "inputWrong" : form.email.className = "input";
  ( form.text.value == "" ) ? form.text.className = "inputWrong" : form.text.className = "input";
  ( !codePattern.test( form.codeImage.value ) ) ? form.codeImage.className = "inputWrong" : form.codeImage.className = "input";
  ((form.sentToQS.checked) && (!textPattern.test( form.pNumber.value ))) ? form.pNumber.className = "inputWrong" : form.pNumber.className = "input";

  errorMsg = ( ( !textPattern.test( form.surName.value ) ) || ( !textPattern.test( form.name.value ) ) || 
               ( !textPattern.test( form.secondName.value ) ) ||
               ( form.phone.value == "" ) || ( form.text.value == "" ) || ( !textPattern.test( form.city.value ) ) || ( (form.sentToQS.checked) && ( !textPattern.test( form.pNumber.value ) )  ) ||
               ( form.email.value == "" ) || ( !codePattern.test( form.codeImage.value ) ) ) ? errorField : "";

  return beforeSubmitResult(errorMsg);
}

