var webver = "2.0";
var fullwebver = "Версия " + webver + " (2009, сентябрь)";

// Авторская подпись 
// -----------------
function signRU()
{
  var str = '<DIV class=sign>&copy; ' +  fullwebver + ', Александр Александрович Дуванов, <A href="mailto:kurs@robotland.pereslavl.ru">kurs@robotland.pereslavl.ru</A></DIV>';
  document.write(str);
}

// Вывод текущей версии
function putwebver()
{
  document.write("Версия: "+webver+". <A class=off href='http://www.botik.ru/~robot/sale/web.htm'>Проверить наличие обновлений</A>");
}

// Имитатор кнопки Назад

function BackRU()
{
  window.history.back();
  return false;
}

function emptyf()
{
  return false;
}

// -- Заголовочная часть с меткой --

function titleWeb()
{
var str = "";
str += '<A href="index.htm"><TABLE class=title title="Web-конструирование (на главную)"';
str += '       style="cursor:hand"\n';
str += '       onclick="location.href=\'index.htm\'"';
str += '       width=649 height=104 border=0 cellspacing=0 cellpadding=0>';
str += '<TR valign=top>';
str += '<TD><IMG class=label src="pic/label.gif" border=0';
str += '  hspace=0 vspace=0 alt="Регистрационная метка покупателя"></TD>';
str += '</TR></TABLE></A>';
document.write(str);
}

function  NewBrouserRU(html, okno)
{
   var num;
   if (NewBrouserRU.arguments.length < 2)
      num = window.open(html,"","left=100,top=100,width=500,height=400,menubar=1,resizable=1,scrollbars=1");
   else
      num = window.open(html,"", okno);
   return num;
}

// Универсальный Зачетный класс (C) март, 2000, А.А.Дуванов
// Объект CheckTasks длЯ проверки решений Зачетного класса
//---------------------------------------------------------

// Рекомендации по использованию
// -----------------------------
// 1) Создать объект до входа в зачетный класс
// 2) По событию click на кнопке type="reset" вызывать метод Ini();
//    form - ссылка на форму, в которую "одет" Зачетный класс
// 3) Решение задачи с номером i фиксировать методом Check(i);
// 4) Общую оценку выводить методом Bonus();


// Конструктор объекта
// -------------------
// Входные данные конструктора
// num  - число задач
// form - форма, в которую одет зачетный класс
// rez  - основа имени длЯ строки, в которую выводитсЯ сообщение
//        о правильности выполнениЯ i-го заданиЯ.
//        Например, пусть основа есть "result". Тогда теги INPUT
//        длЯ вывода информационного сообщениЯ должны иметь имена:
//        "result1" -- длЯ первой задачи
//        "result2" -- длЯ второй задачи
//         ...
// Можно не задавать аргумент rez, тогда по умолчанию он будет
// определен как "result".
                                 
function CheckTasks(num, forma, rez)
{
  // свойства объекта
  this.Num        = num;            // число заданий
  this.Forma      = forma;
  this.Task       = new Array();    // если задача решалась -- true
  this.Error      = 0;              // число ошибок
  this.Yes        = "верно";        // верный ответ
  this.No         = "есть ошибки";  // неверный ответ
  this.Answer;                      // результат проверки ответа
  this.Rez = rez ? rez:"result";    // основа имени тега с инф. сообщением

  // методы объекта
  this.Ini   = _Ini;   // начальные установки
  this.Check = _Check; // проверка заданиЯ
  this.Bonus = _Bonus; // вывод оценки

  for(var i=0; i<this.Num; i++) this.Task[i] = false; // задачи не решались
  this.Forma.reset();
}


//--------------------------------------------------------
// начальные установки
// -------------------
function _Ini()
{
  this.Error = 0;                                     // ошибок нет
  for(var i=0; i<this.Num; i++) this.Task[i] = false; // задачи не решались
  this.Forma.reset();

}

//--------------------------------------------------------
// Фиксирование решениЯ задачи с номером ntask
// -------------------------------------------
// Задачи нумеруютсЯ от 1 до this.Num

function _Check(ntask)
{
  // Защита от неверных данных
  if (ntask < 1 || ntask > this.Num)
  { alert("Неверный номер задачи: "+ntask); return;}

  this.Task[ntask-1] = true;                 // задача решалась
  if (this.Answer == this.No) this.Error++;  // ошибки суммируютсЯ
  var temp = this.Answer;
  this.Forma[this.Rez+ntask].value = temp;

  //eval("this.Forma.result"+ntask+".value=temp");
}

//--------------------------------------------------------
// Вывести оценку
// --------------
// Алгоритм определениЯ оценки:
//
// 5 - ошибок нет
// 4 - ошибок меньше 2/5 от числа задач
// 3 - ошибок меньше 1/2 от числа задач
// 2 - в остальных случаЯх

function  _Bonus()
{
   var result = "";
   var bonus;
   var ntask;

   // Проверим, все ли задачи были решены
   ntask = 0;
   for(var i=0; i<this.Num; i++)
     if (this.Task[i]) ntask++;
     else result += eval(i+1)+", ";
   // задачи решены все, вычислЯем оценку
   if (ntask == this.Num)
   {
     if (!this.Error)                    bonus = 5;
     else if (this.Error < 2*this.Num/5) bonus = 4;
     else if (this.Error < this.Num/2)   bonus = 3;
     else                                bonus = 2;
     //alert("\nВаша оценка: "+bonus+"\n"+
     //      "Число ошибок: "+ this.Error);
     var arg = Array(bonus, this.Error);
     // Показать оценку во всплывающем окне

     showBonus(bonus-1, this.Error);
     
     //alert(arg)
     // window.showModalDialog("../bonus.htm", arg,
     //  "dialogWidth:340px;dialogHeight:390px;cеnter:yes;help:no;status:no");

   }
   // задачи решены не все, сообщаем, какие не решались
   else
   {
    var str=result;
    if (result.charAt(result.length-2) == ",")
          str = result.substring(0,result.length-2);
    alert("\nНе решены задани\я:\n" + str);
   }
}

var nameRU = new Array("Незнайка","Незнайка","Торопыжка","Студент","Профессор");
var picNameRU  = new Array(
       "<IMG src=./pic/prav00.gif width=140 height=150 border=0 "+
            "class=field "+
            "alt=Незнайка hspace=0 vspace=0 "+
            "onmouseover=\"this.src=\'./pic/prav01.gif\'\" "+
            "onmouseout=\"this.src=\'./pic/prav00.gif\'\">",

       "<IMG src=./pic/prav00.gif width=140 height=150 border=0 "+
            "class=field "+
            "alt=Незнайка hspace=0 vspace=0 "+
            "onmouseover=\"this.src=\'./pic/prav01.gif\'\" "+
            "onmouseout=\"this.src=\'./pic/prav00.gif\'\">",

       "<IMG src=./pic/prav10.gif width=140 height=150 border=0 "+
            "class=field "+
            "alt=Торопыжка hspace=0 vspace=0 "+
            "onmouseover=\"this.src=\'./pic/prav11.gif\'\" "+
            "onmouseout=\"this.src=\'./pic/prav10.gif\'\">",

       "<IMG src=./pic/prav20.gif width=140 height=150 border=0 "+
            "class=field "+
            "alt=\"Студент\" hspace=0 vspace=0 "+
            "onmouseover=\"this.src=\'./pic/prav21.gif\'\" "+
            "onmouseout=\"this.src=\'./pic/prav20.gif\'\">",

       "<IMG src=./pic/prav30.gif width=140 height=150 border=0 "+
            "class=field "+
            "alt=Профессор hspace=0 vspace=0 "+
            "onmouseover=\"this.src=\'./pic/prav31.gif\'\" "+
            "onmouseout=\"this.src=\'./pic/prav30.gif\'\">");

// Показать оценку во всплывающем блоке 
function showBonus (bonus, error)
{
  var win = window.open("", null, "top=100,left=150,width=340,height=390");
  win.document.open();
  var str = 
'<STYLE>\n'+
'BODY {background:#EEE5DB;font-family:sans-serif;font-size:12pt;}\n'+
'.field {border:5px ridge white;}\n'+
'.header {text-align:center;color: #009900;font-weight:bold;font-size:20pt;}\n'+
'</STYLE>\n'+
'<BODY bgcolor=#EEE5DB text=#4C3300 '+
' onload="document.title=\'Оценка зачётного класса\'"'+
' onblur="window.close()"'+
' onkeypress="if (event.keyCode==27) {window.close()}">'+
'<P class=header>'+nameRU[bonus]+
'<P align=center>'+picNameRU[bonus]+
'<P class=header>Число ошибок: '+error+
'</BODY>';
  win.document.write(str);
  win.document.close();
}



// меню
// ----
var ItemMenu = new Array (
  new Array ( "начало", "./index.htm", "Начало"),
  new Array ( "тема 1",  "./09.htm", "Одностраничный документ"),
  new Array ( "тема 2",  "./10.htm", "Основы CSS"),
  new Array ( "тема 3",  "./11.htm", "Многостраничный документ"),
  new Array ( "тема 4",  "./12.htm", "Графика на страницах"),
  new Array ( "тема 5",  "./13.htm", "Работа с таблицами"),
  new Array ( "от автора",  "./about.htm", "От автора"));

// Функции
// -------

// Построение меню нулевого уровня
// Входные параметры:
// NotA   -- номер позиции, которая не ссылка 
function putMenu0(NotA)
{
  var str = "";
  for (var i=0; i<ItemMenu.length; i++)
  {
    if (i!=NotA) str += "<A href='" +  ItemMenu[i][1] + "' title='" + ItemMenu[i][2] + "'>";
    str += ItemMenu[i][0];
    if (i!=NotA) str += "</A>";
    if (i != ItemMenu.length-1) str += " | ";      
  }
  document.write(str);
}


// Построение меню  первого уровня
// Входные параметры:
// Mark   -- номер отмеченной позиции 
function putMenu1(Mark)
{
  var str = "";
  for (var i=0; i<ItemMenu.length; i++)
  {
    if (i==Mark) str += "<SPAN class=father>";
    str += "<A href='" +  ItemMenu[i][1] + "' title='" + ItemMenu[i][2] + "'>" +
           ItemMenu[i][0] + "</A>";
    if (i==Mark) str += "</SPAN>";
    if (i != ItemMenu.length-1) str += " | "
    else str += "<BR>";      
  }
  document.write(str);
}
