$(document).ready(function(){

$("#tbnext").click(function(){
  return testsubmit(0);
})

// текущий step указывает на следующий вопрос, поэтому предыдущий - это - 2
$("#tbprev").click(function(){
  if ($("#step").val() == 'result'){ // возвращаемся с заключительного вопроса
    if ($(".tquestion").attr('id').match(/^q(\d+?)$/)){ // получаем номер вопроса из id 
      var step  = RegExp.$1;
      $("#step").val(step - 1);
    }    
  } else {
    $("#step").val($("#step").val() - 2);    
  }
  if ($("#step").val() < 0) $("#step").val(1);
  return testsubmit(1);
})

tinit();

function testsubmit(flag){
  if (flag==1) return true;
  var q = $(".tquestion");
  for (var i=0; i < q.length; i++){ // цикл по всем вопросам
    var qid;
    if (q[i].id.match(/^q(\d+?)$/)) qid = '#qc' + RegExp.$1;
    var a = $("#" + q[i].id +" .tanswer"); // полуаем все ответы данного вопроса
    var flag = false; // по умолчанию ни один ответ не выбран
    for (var j=0; j < a.length; j++){
      if (a[j].checked == true){ // выбран?
        flag = true;
        break; // выходим из цикла по ответам, и переходим к следующему вопросу
      }
    }
    if (flag==false){
      $('.tqc').removeClass('alert'); // убираем выделение
      $(qid).addClass('alert');  // выделяем вопрос, на который не дан ответ
      var to = $(qid).offset().top;
      $('html,body').animate({scrollTop: to}, "fast"); // позиционируемся на нем
      return false;
    }
  } 
  return flag;
}

function tinit(){
  if ($("#step").val()==2){ // открыт первый вопрос, кнопка "назад" не нужна
    $("#tbprev").hide();
  }
  if ($("#step").val()=='result'){
    $("#showall").hide();
    $("#tbprev").hide();
  }
}

function get_test_info(xml, id){
  var q = xml.documentElement.getElementsByTagName('question');
  if (q.length==0) return;

  var ha = $('.ha');
  var mem = {};
  for (var i=0; i < ha.length; i++){ 
    mem[ha[i].name] = ha[i].value; // запоминаем отмеченные ответы
  }
  $('#ql' + id).html('');
  var qlist = document.getElementById('ql' + id);
  for (var i=0; i < q.length; i++){
    var qid = q[i].getAttribute('id');
    var qtype = q[i].getAttribute('type');
    var d = document.createElement('div');
    d.id = 'q' + qid;
    d.className = 'tquestion';
    var h2 = document.createElement('h2');
    h2.id = 'qc' + qid;
    h2.className = 'tqc';
    h2.innerHTML = q[i].getAttribute('name');
    d.appendChild(h2);
    var a = q[i].getElementsByTagName('answer');
    var letter = new Array('а)', 'б)', 'в)', 'г)', 'д)', 'е)', 'ж)', 'з)', 'и)', 'к)');
    for (var ii=0; ii < a.length; ii++){
      var p = document.createElement('p');

      var aid = a[ii].getAttribute('id');
      var eid = a[ii].getAttribute('eid');
      
      var s = document.createTextNode(letter[ii]); //+ '|' + eid + '|' + mem['h' + aid]
      p.appendChild(s); // создаем текстовое поле
      
      var e = document.createElement(($.browser.msie ? '<input name="' + aid + '">' : 'input')); 
      e.type = qtype==1 ? 'checkbox' : 'radio';      
      e.id = eid;
      e.name = aid;
      e.value = a[ii].getAttribute('score');
      e.className = 'tanswer';     
      
      var s = document.createTextNode(a[ii].getAttribute('name')); // + '|' + aid + '|'
      p.appendChild(e);
      p.appendChild(s);
      d.appendChild(p);
    } 
    qlist.appendChild(d);
    $('#step').val('result');
  }
  $("#tbprev").hide();
  $("#showall").hide();  
  var to = $("#q1").offset().top;
  $('html,body').animate({scrollTop: to}, "fast");

  // включаем уже отмеченные (в постраничном варианте опроса) пункты
  var a = $('.tanswer');
  var msg;
  for (var i=0; i < a.length; i++){
    if (a[i].value == mem[a[i].name]) a[i].checked = 'checked';
  }

}


$('#showall').click(function(){
  //alert($(this).attr('tid'));
  if ($(this).attr('tid').match(/^t(\d+?)$/)){
    var id = RegExp.$1;
    //alert('id = ' +id);
    //alert('/cgi-bin/test.cgi?step=x&id=' + id);
    //?step=x&id=' + id 
    $.ajax({
           'type' : 'POST',
           'data' : { 'step' : 'x', 'id' : id },
           'url' : '/cgi-bin/test.cgi', 
           'dataType' : 'xml', 
           'cache' : false,
           'timeout' : 5000,
           'success' : function(data){
              //alert('ok');
              get_test_info(data, id);
           },
           'error' : function(XMLHttpRequest, textStatus, errorThrown){}
      }); 

    //$('#ql' +id).html('hello!');    
  }
  return false;
}
);


// hack против ff
if ($("#qnum").length){
  //alert('hello!' + $('#memstep').val());

  if ($('#step').val() != $('#memstep').val()){
    $('#step').val($('#memstep').val());
    if ($("#step").val()>2) $("#tbprev").show();
    $("#showall").hide();
  }
}
//$('#step').val('2');

})

