//==============

function EnblDsblField(chkname, fldname, num, kk){

   if(typeof(num) != "undefined" && num != ""){
     chkname= chkname+num;
     fldname=fldname+num;
   }
   if(document.getElementById(chkname)){
    try{
      K = document.forms['quiz'].elements['ownansw[' + num + ']'].value;
    }catch(e){
      K = 'no';
    }
    if(document.getElementById(chkname).type == 'checkbox'){
      M = document.getElementById(chkname).checked;
    }else{
      M = (document.getElementById(chkname).value == 'own'
            && document.getElementById(chkname).checked) ? 1 : 0;
    }
    if(M==true){
      document.getElementById(fldname).disabled=false;
      if(K!='no'){
        ClearAnsw('quiz', num, kk);
      }
    }else{
      document.getElementById(fldname).disabled=true;
      if(K==''){
        document.forms['quiz'].elements['ownansw[' + num + ']'].value=kk;
      }
    }
   }
}

//==============

function ClearAnsw(fname, aid, kk){
  M = document.forms[fname].elements['ownansw[' + aid + ']'].value;
  if(M==kk){
    document.forms[fname].elements['ownansw[' + aid + ']'].value='';
  }
}

//==============

var QuizQstnAnsw = new Array();
function setOptionStyle(){
  var Mode = arguments[0];//1-Multiple; 0-One only;
  var Qstn = arguments[1];//Qstn Id
  var Answ = arguments[2];//Answ Id (0 - own answer)
  var Chkd = arguments[3];//Is field checked or doesn't

  var cls0 = '';       //Inactive style
  var cls1 = 'greenn'; //Active style
  var cls2 = 'kart ';  //Image style
  var sreg = /kart/;

  //Determine for selected answers
  if(!QuizQstnAnsw[QuizQstnNmbr]){
    QuizQstnAnsw[QuizQstnNmbr] = 0;
  }

  if(Mode){//Form with checkbox-fields
    var field  = 'answdesc[' + Answ + ']';
    var clsImg = (sreg.exec(document.getElementById(field).className)) ? cls2 + ' ' : '';
    if(Chkd){
      QuizQstnAnsw[QuizQstnNmbr]++;
      document.getElementById(field).className = clsImg + cls1;
    }else{
      QuizQstnAnsw[QuizQstnNmbr]--;
      document.getElementById(field).className = clsImg + cls0;
    }
  }else{//Form with radio-fields
    QuizQstnAnsw[QuizQstnNmbr] = 1;
    var i = 0;
    while(1 == 1){
      var chkid = (i == 0) ? 'own' + Qstn : Qstn + '_' + i;
      if(document.getElementById(chkid)){
        var tAnsw  = (i == 0) ? 0 : document.getElementById(chkid).value;
        var field  = 'answdesc[' + tAnsw + ']';
        var clsImg = (sreg.exec(document.getElementById(field).className)) ? cls2 + ' ' : '';
        if(Answ == tAnsw){
          document.getElementById(field).className = clsImg + cls1;
        }else{
          document.getElementById(field).className = clsImg + cls0;
        }
      }else if(i != 0){
        break;
      }

      i++;
    }
  }
}

//==============

var QuizQstnNmbr = 0;
function changeQstnBlock(){
  var Move = arguments[0];//Moving direction; 1-Forward; 0-Backward;
  var Rslt = arguments[1];//Restructuring on Results preview

  var Sbmt = false;//Submit form
  var FrNm = 'quiz';

  if(!QuizQstnAnsw[QuizQstnNmbr]){
    if(Rslt){
      if(!QuizQstnNmbr){
        QuizQstnNmbr = 1;
      }
      QuizQstnAnsw[QuizQstnNmbr] = 1;
    }else{
      QuizQstnAnsw[QuizQstnNmbr] = 0;
    }
  }

  if(Move){
    if(!QuizQstnNmbr){
      if(document.getElementById('blockq') && document.getElementById('blockp')){
        document.getElementById('blockp').style.display='none';
        document.getElementById('blockq').style.display='block';
      }else if(QuizQstnAnsw[QuizQstnNmbr]){
        Sbmt = true;
      }
    }
    if(!Sbmt){
      if(document.getElementById('blockq_' + (QuizQstnNmbr+1))){
        if(QuizQstnAnsw[QuizQstnNmbr] && QuizQstnNmbr){
          document.getElementById('blockq_' + QuizQstnNmbr).style.display='none';
        }
        if(!QuizQstnNmbr || QuizQstnAnsw[QuizQstnNmbr]){
          document.getElementById('blockq_' + (QuizQstnNmbr+1)).style.display='block';
          QuizQstnNmbr++;

          //Change visual number of question, if exists
          if(document.getElementById('blockq_cur')){
            document.getElementById('blockq_cur').innerHTML=QuizQstnNmbr;
          }
        }
      }else if(QuizQstnAnsw[QuizQstnNmbr]){
        Sbmt = true;
      }
    }
    if(Sbmt && gFormActive && document.forms[FrNm]){
      document.forms[FrNm].submit();
    }
  }else{
    if(document.getElementById('blockq_' + (QuizQstnNmbr-1))){
      document.getElementById('blockq_' + QuizQstnNmbr).style.display='none';
      document.getElementById('blockq_' + (QuizQstnNmbr-1)).style.display='block';
      QuizQstnNmbr--;

      //Change visual number of question, if exists
      if(document.getElementById('blockq_cur')){
        document.getElementById('blockq_cur').innerHTML=QuizQstnNmbr;
      }
    }else if(QuizQstnNmbr && document.getElementById('blockq') && document.getElementById('blockp')){
      document.getElementById('blockq').style.display='none';
      document.getElementById('blockp').style.display='block';
      QuizQstnNmbr--;
    }
  }

  initScroll("contentNameBig", "containerNameBig", "scrollAreaNameBig", "scrollerNameBig");
  initScroll("contentBig", "containerBig", "scrollAreaBig", "scrollerBig");
  initScroll("contentName", "containerName", "scrollAreaName", "scrollerName");
  initScroll("content", "container", "scrollArea", "scroller");
  initScroll("contentAnsw", "containerAnsw", "scrollAreaAnsw", "scrollerAnsw");
  initScroll("contentQstn"+QuizQstnNmbr, "containerQstn"+QuizQstnNmbr, "scrollAreaQstn"+QuizQstnNmbr, "scrollerQstn"+QuizQstnNmbr);
  initScroll("contentAnsw"+QuizQstnNmbr, "containerAnsw"+QuizQstnNmbr, "scrollAreaAnsw"+QuizQstnNmbr, "scrollerAnsw"+QuizQstnNmbr);

  return false;
}

//==============


var Drag = {

    obj : null,

    init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
    {
        o.onmousedown   = Drag.start;

        o.hmode         = bSwapHorzRef ? false : true ;
        o.vmode         = bSwapVertRef ? false : true ;

        o.root = oRoot && oRoot != null ? oRoot : o ;

        if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
        if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
        if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
        if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";

        o.minX  = typeof minX != 'undefined' ? minX : null;
        o.minY  = typeof minY != 'undefined' ? minY : null;
        o.maxX  = typeof maxX != 'undefined' ? maxX : null;
        o.maxY  = typeof maxY != 'undefined' ? maxY : null;

        o.xMapper = fXMapper ? fXMapper : null;
        o.yMapper = fYMapper ? fYMapper : null;

        o.root.onDragStart  = new Function();
        o.root.onDragEnd    = new Function();
        o.root.onDrag       = new Function();
    },

    start : function(e)
    {
        var o = Drag.obj = this;
        e = Drag.fixE(e);
        var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
        var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
        o.root.onDragStart(x, y);

        o.lastMouseX    = e.clientX;
        o.lastMouseY    = e.clientY;

        if (o.hmode) {
            if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;
            if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;
        } else {
            if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
            if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
        }

        if (o.vmode) {
            if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;
            if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;
        } else {
            if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
            if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
        }

        document.onmousemove    = Drag.drag;
        document.onmouseup      = Drag.end;

        return false;
    },

    drag : function(e)
    {
        e = Drag.fixE(e);
        var o = Drag.obj;

        var ey  = e.clientY;
        var ex  = e.clientX;
        var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
        var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
        var nx, ny;

        if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
        if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
        if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
        if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

        nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
        ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));

        if (o.xMapper)      nx = o.xMapper(y)
        else if (o.yMapper) ny = o.yMapper(x)

        Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
        Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
        Drag.obj.lastMouseX = ex;
        Drag.obj.lastMouseY = ey;

        Drag.obj.root.onDrag(nx, ny);
        return false;
    },

    end : function()
    {
        document.onmousemove = null;
        document.onmouseup   = null;
        Drag.obj.root.onDragEnd(    parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]),
                                    parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
        Drag.obj = null;
    },

    fixE : function(e)
    {
        if (typeof e == 'undefined') e = window.event;
        if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
        if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
        return e;
    }
};

//==============


 function initScroll(scontent, scontainer, sscrolla, sscroll){

    //collect the variables
 try{
    var scrollerName= new Object();
    scrollerName.docH = document.getElementById(scontent).offsetHeight;
    scrollerName.contH = document.getElementById(scontainer).offsetHeight;
    scrollerName.scrollAreaH = document.getElementById(sscrolla).offsetHeight;

    //calculate height of scroller and resize the scroller div
    //(however, we make sure that it isn't to small for long pages)
    scrollerName.scrollH = (scrollerName.contH * scrollerName.scrollAreaH) / scrollerName.docH;

    if(scrollerName.docH < scrollerName.contH || scrollerName.scrollH == scrollerName.scrollAreaH){
      document.getElementById(sscrolla).style.border = 0 + "px";
      document.getElementById(sscrolla).style.width = 0 + "px";
      return false;
    }

    if(scrollerName.scrollH < 7) scrollerName.scrollH = 7;
    document.getElementById(sscroll).style.height = Math.round(scrollerName.scrollH) + "px";

    //what is the effective scroll distance once the scoller's height has been taken into account
    scrollerName.scrollDist = Math.round(scrollerName.scrollAreaH-scrollerName.scrollH);

    //make the scroller div draggable
    Drag.init(document.getElementById(sscroll),null,0,0,0,scrollerName.scrollDist);//fifth argument '-1'->'0' for fix BR11360

    //add ondrag function
    document.getElementById(sscroll).onDrag = function (x,y) {
      var scrollY = parseInt(document.getElementById(sscroll).style.top);
      var docY = 0 - (scrollY * (scrollerName.docH - scrollerName.contH) / scrollerName.scrollDist);
      tmp=scrollY+scrollerName.scrollH+1;
      if(tmp>=scrollerName.scrollAreaH){
        document.getElementById(scontent).style.top = docY-10 + "px";
      }else{
        document.getElementById(scontent).style.top = docY + "px";
      }
    }
  }catch(e){
  }
 }


