
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 = { // Methods
      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;

function setAjaxRequest(method, url, params, onload, onerror, contentType, headers) {
      // Check of necessary parameters
      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" )
     {

         for (k = 1; k<n; k++ ) {

             lectionres += retresult(k);
         }

         sumres = parseInt(document.getElementById("usercurrentresult").innerHTML);



        if (result.usersumresult!="") {
            lectionres += parseInt(result.usersumresult);
        }
        if (result.lidersumresult!="") {
            liderresult = parseInt(result.lidersumresult);
        }
        else
        {
            liderresult = 0;
        }
        ressquare =  Math.round(lectionres/(sumres/10));
        if (result.avgresult=="") {
            avgresults = 0;
        }
        else
        {
           avgresults = result.avgresult;
        }
           for (j = 1; j<=ressquare; j++ ) {
             document.getElementById("square_green"+j).style.display = "inline";
             document.getElementById("square_gray"+j).style.display = "none";
            }
            for (j = 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(25+(lectionres/(sumres/10)*19));
             red_pos_temp = Math.round(25+(liderresult/(sumres/10)*19));
             red_pos = red_pos_temp-green_pos-10;
             blue_pos = Math.round(25+(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";




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

}

function getGoals()
{
    result = eval( '(' + this.req.responseText + ')' );
    document.getElementById("div_mygoals").innerHTML = result.results_goal;
}

function outputGraph()
{
    result = eval( '(' + this.req.responseText + ')' );
    document.getElementById("graph_bar").innerHTML = '<a target="_blank" href="/'+result.results_graph_bar_big+'"  ><img src="/'+result.results_graph_bar_small+'" ></a>';
    document.getElementById("graph_pie").innerHTML = '<a target="_blank" href="/'+result.results_graph_pie_big+'"  ><img src="/'+result.results_graph_pie_small+'" ></a>';
    document.getElementById("graph_bar_co2").innerHTML = '<a target="_blank" href="/'+result.results_graph_bar_co2_big+'"  ><img src="/'+result.results_graph_bar_co2_small+'" ></a>';
    document.getElementById("graph_pie_co2").innerHTML = '<a target="_blank" href="/'+result.results_graph_pie_co2_big+'"  ><img src="/'+result.results_graph_pie_co2_small+'" ></a>';


}



function errorHandler() {
/*      document.getElementById("graph_div").innerHTML = 'Error';*/
}

function doit(moduleurl, idq, fl) {
      idforquestion = parseInt(idq);
      var method = "GET";
      var url = moduleurl;
      if (fl == 1)
          url = url+"&fl=1";
      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  viewGraph( moduleurl ) {

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

function  getMyGoals( moduleurl ) {

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

function retresult(idq)
{
    id = "question_"+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;
}

