
var net = new Object();

net.READY_STATE_UNINITIALIZED = 0;
net.READY_STATE_LOADING = 1;
net.READY_STATE_LOADED = 2;
net.READY_STATE_INTERACTIVE = 3;
net.READY_STATE_COMPLETE = 4;

net.ContentLoader = function(key, method, url, params, onload, onerror, contentType, headers) {
      this.hashKey = key;

      this.unrequestBrowser = false;

      this.req = null;
      this.onload = onload;

      this.onerror = (onerror) ? onerror : this.defaultError;

      this.loadXMLDoc(method, url, params, contentType, headers);
}

net.ContentLoader.prototype = {

      loadXMLDoc : function(method, url, params, contentType, headers) {
            if (!method) method="GET";
            if (!contentType && method=="POST") contentType='application/x-www-form-urlencoded';
            if (window.XMLHttpRequest) {
                  this.req=new XMLHttpRequest();
            } else if (window.ActiveXObject) {
                  this.req=new ActiveXObject("Microsoft.XMLHTTP");
            } else {
                  this.unrequestBrowser = true;
                  return;
            }
            if (this.req) {
                  try {
                        this.req.open(method,url,true);
                        if (contentType){
                              this.req.setRequestHeader('Content-Type', contentType);
                        }
                        if (headers) {
                              for (var h in headers) {
                                    this.req.setRequestHeader(h,headers[h]);
                              }
                        }
                        var loader=this;
                        this.req.onreadystatechange=function() {
                              loader.onReadyState.call(loader);
                        }
                        this.req.send(params);
                  } catch (err){
                        this.onerror.call(this);
                  }
            }
      },

      onReadyState : function() {
            var req=this.req;
            var ready=req.readyState;
            if (ready==net.READY_STATE_COMPLETE) {
                  var httpStatus=req.status;
                  if (httpStatus==200 || httpStatus==0) {
                        this.onload.call(this);
                  } else {
                        this.onerror.call(this);
                  }
            }
      },

      defaultError : function() {
            alert("error fetching data!"+"\n\nreadyState:"+this.req.readyState +"\nstatus: "+this.req.status+"\nheaders: "+this.req.getAllResponseHeaders());
      }
}

var requestsHash = [];
var idforquestion =0;

function setAjaxRequest(method, url, params, onload, onerror, contentType, headers) {

      if (!url) {
            alert("Necessary parameters are not specified");
            return;
      }
      requestsHash.push(new net.ContentLoader(requestsHash.length, method, url, params, onload, onerror, contentType, headers));
      return requestsHash[requestsHash.length - 1].unrequestBrowser;
}

function ansHandler() {

     result = eval( '(' + this.req.responseText + ')' );
     lectionres = 0;
     n = idforquestion+1;


     if ( result.error_code=="0" )
     {
         if (result.lectionresult > 0)
         {
              lectionres = 0;
         }
         else
         {
             for (var k = 1; k<n; k++ ) {
                 lectionres += retresult(k);
             }
         }
        if (result.usersumresult!="") {
            lectionres += parseInt(result.usersumresult);
        }
        if (result.lidersumresult!="") {
            liderresult = parseInt(result.lidersumresult);
        }
        else
        {
            liderresult = 0;
        }

        sumres = parseInt(document.getElementById("usercurrentresulthidden").innerHTML);
        ressquare =  Math.round(lectionres/(sumres/10));
        if (result.avgresult=="") {
            avgresults = 0;
        }
        else
        {
           avgresults = result.avgresult;
        }

        gr =  Math.round((lectionres/(sumres/10)));
        red = Math.round((liderresult/(sumres/10)));
        blue = Math.round((avgresults/(sumres/10)));

      if ( /MSIE [56]/.test( navigator.appVersion ) )
      {

            green_pos =25 + gr*20;
            red_pos =25 + red*20;
            blue_pos =25 + blue*20;


      }
      else
      {

        var    koef_gr = 0;
         if ( gr >= 4  ) {
             koef_gr = 1;
         }
         if ( gr >= 6  ) {
             koef_gr = 2;
         }
         if ( gr >= 7  ) {
             koef_gr = 3;
         }

         if ( gr >= 9  ) {
             koef_gr = 4;
         }
         var    koef_red = 0;
          if ( red >= 4  ) {
              koef_red = 1;
          }
          if ( red >= 6  ) {
              koef_red = 2;
          }
          if ( red >= 7  ) {
              koef_red = 3;
          }

          if ( red >= 9  ) {
              koef_red = 4;
          }
          var    koef_blue = 0;
           if ( blue >= 4  ) {
               koef_blue = 1;
           }
           if ( blue >= 6  ) {
               koef_blue = 2;
           }
           if ( blue >= 7  ) {
               koef_blue = 3;
           }

           if ( blue >= 9  ) {
               koef_blue = 5;
           }


          green_pos =20 + koef_gr + gr*20;
          red_pos =20 + koef_red + red*20;
          blue_pos =20 + koef_blue + blue*20;
         }
          document.getElementById("usercurrentresult").innerHTML=lectionres+' av '+sumres;
          document.getElementById("green_btn").style.left = green_pos + 'px';
          document.getElementById("red_btn").style.left = red_pos + 'px';
          document.getElementById("blue_btn").style.left = blue_pos + 'px';





           for ( m = 1; m<=parseInt(ressquare); m++ ) {
               document.getElementById("square_gray"+m).style.display = "none";
               document.getElementById("square_green"+m).style.display = "inline";

            }
            for ( j = parseInt(ressquare)+1; j<=10; j++ ) {
              document.getElementById("square_green"+j).style.display = "none";
              document.getElementById("square_gray"+j).style.display = "inline";
            }

             /*
             green_pos = Math.round((lectionres/(sumres/10)*19));
             red_pos_temp = Math.round((liderresult/(sumres/10)*19));
             red_pos = red_pos_temp-green_pos-10;
             blue_pos = Math.round((avgresults/(sumres/10)*19));


             if ((red_pos_temp-green_pos) > 0) {
                 blue_pos = blue_pos-red_pos_temp-10;
             }
             else
             {
                 blue_pos = blue_pos-green_pos-10;
             }

             document.getElementById("green_btn").style.marginLeft = green_pos+"px";
             document.getElementById("red_btn").style.marginLeft = red_pos+"px";
             document.getElementById("blue_btn").style.marginLeft = blue_pos+"px";
             */

            // green_pos =25 + Math.round((lectionres/(sumres/10)*19));
            // red_pos =25 + Math.round((liderresult/(sumres/10)*19));
            // blue_pos =25 + Math.round((avgresults/(sumres/10)*19));

           //  green_pos =1.6 + Math.round((lectionres/(sumres/10)))*1.71;
           //  red_pos =1.6 + Math.round((liderresult/(sumres/10)))*1.71;
           //  blue_pos =1.6 + Math.round((avgresults/(sumres/10)))*1.71;


          //   document.getElementById("usercurrentresult").innerHTML=lectionres+' av '+sumres;
          //   document.getElementById("green_btn").style.left = green_pos + 'em';
          //   document.getElementById("red_btn").style.left = red_pos + 'em';
          //   document.getElementById("blue_btn").style.left = blue_pos + 'em';





     }
     else
     {
        document.getElementById("usercurrentresult").innerHTML = "Error: "+result.error_code;
     }

}


function ansHandlerUserpage() {

     result = eval( '(' + this.req.responseText + ')' );
     lectionres = 0;

     if ( result.error_code=="0" )
     {
        if (result.usersumresult!="") {
            lectionres += parseInt(result.usersumresult);
        }
        if (result.lidersumresult!="") {
            liderresult = parseInt(result.lidersumresult);
        }
        else
        {
            liderresult = 0;
        }

        sumres = parseInt(document.getElementById("usercurrentresulthidden").innerHTML);
        ressquare =  Math.round(lectionres/(sumres/10));

        if (result.avgresult=="") {
            avgresults = 0;
        }
        else
        {
           avgresults = result.avgresult;
        }


        gr =  Math.round((lectionres/(sumres/10)));
        red = Math.round((liderresult/(sumres/10)));
        blue = Math.round((avgresults/(sumres/10)));

      if ( /MSIE [56]/.test( navigator.appVersion ) )
      {

            green_pos =25 + gr*20;
            red_pos =25 + red*20;
            blue_pos =25 + blue*20;


      }
      else
      {

        var    koef_gr = 0;
         if ( gr >= 4  ) {
             koef_gr = 1;
         }
         if ( gr >= 6  ) {
             koef_gr = 2;
         }
         if ( gr >= 7  ) {
             koef_gr = 3;
         }

         if ( gr >= 9  ) {
             koef_gr = 4;
         }
         var    koef_red = 0;
          if ( red >= 4  ) {
              koef_red = 1;
          }
          if ( red >= 6  ) {
              koef_red = 2;
          }
          if ( red >= 7  ) {
              koef_red = 3;
          }

          if ( red >= 9  ) {
              koef_red = 4;
          }
          var    koef_blue = 0;
           if ( blue >= 4  ) {
               koef_blue = 1;
           }
           if ( blue >= 6  ) {
               koef_blue = 2;
           }
           if ( blue >= 7  ) {
               koef_blue = 3;
           }

           if ( blue >= 9  ) {
               koef_blue = 5;
           }


          green_pos =20 + koef_gr + gr*20;
          red_pos =20 + koef_red + red*20;
          blue_pos =20 + koef_blue + blue*20;
         }

//          document.getElementById("usercurrentresult").innerHTML=lectionres+' av '+sumres;
//alert('green='+green_pos);
//alert('red='+red_pos);
//alert('blue='+blue_pos);
          document.getElementById("green_btn").style.left = green_pos + 'px';
          document.getElementById("red_btn").style.left = red_pos + 'px';
          document.getElementById("blue_btn").style.left = blue_pos + 'px';





           for ( m = 1; m<=parseInt(ressquare); m++ ) {
               document.getElementById("square_gray"+m).style.display = "none";
               document.getElementById("square_green"+m).style.display = "inline";

            }
            for ( j = parseInt(ressquare)+1; j<=10; j++ ) {
              document.getElementById("square_green"+j).style.display = "none";
              document.getElementById("square_gray"+j).style.display = "inline";
            }
     }
     else
     {
        document.getElementById("usercurrentresult").innerHTML = "Error: "+result.error_code;
     }

}




function errorHandler() {
      document.getElementById("usercurrentresult").innerHTML = 'Error';
}

function doit(moduleurl, idq, fl) {
      idforquestion = parseInt(idq);
      if (idforquestion >= 0) {
          var method = "GET";
          var url = moduleurl;
          if (fl == 1)
              url = url+"&fl=1";
          else if (fl == 2)
              url = url+"&fl=2";
          else
              url = url+"&fl=0";
          var params = '';
          var onload = ansHandler;
          var onerror = errorHandler;
          var contentType = headers = false;
          return setAjaxRequest(method, url, params, onload, onerror, contentType, headers);
      }
}

function doituserpage(moduleurl)
{
          var method = "GET";
          var url = moduleurl;
          var params = '';
          var onload = ansHandlerUserpage;
          var onerror = errorHandler;
          var contentType = headers = false;
          return setAjaxRequest(method, url, params, onload, onerror, contentType, headers);
}

function retresult(idq)
{
    id = "questionanswers_"+idq;
    res = parseInt(document.getElementById(id+"_price").value);
    userres = 0;
    userball = 0;

    children_input = document.getElementById(id).getElementsByTagName("input");
    for ( i = 0; i < children_input.length; i++ )
    {
        if( children_input.item(i).checked)
        {
            id_answer = id+"_price_"+i;
            userball = parseInt(document.getElementById(id_answer).value);
            if ( userball > 0 ) {
              userres = userres + userball;
            }
         }

    }
    children_select = document.getElementById(id).getElementsByTagName("select");
    for ( i = 0; i < children_select.length; i++ )
    {
        id_answer = id+"_price_"+children_select.item(i).selectedIndex;
        userball = parseInt(document.getElementById(id_answer).value);
        if ( userball > 0 ) {
              userres = userres + userball;
        }
    }
     return userres;
}
