
//Uudistetaan alkulataukset
// 1. Esilasketaan jutut
// 2. Ladataan käyttöliittymä
// 3. Ladataan käyttäjän datat
// 4. Ladataan kartta ja visibility maski
//
//


function readystate(xhttp, fun) {
    if(xhttp.readyState == 4) {
        if(xhttp.status == 200) {
            fun(xhttp);
        }
    }
}


function init_game()
{
 
   if(gamestate==0)
   {
     info("Ladataan peliä...esilasketaan taulukoita");
     gamestate++;
     setTimeout('init_game()', 0);
      
   }
   
   else if(gamestate==1)
   {

      //Esilasketaan sinejä ja cosineja      
      for(var i=0;i<360;i++)
      {
        var sini=new Array();
        var cosi=new Array();
      	for(var ii=0;ii<20;ii++)
      	{      	
   		   sini[ii] = Math.round(ii*Math.sin((i/360.0)*2*3.1415));
   		   cosi[ii] = Math.round(ii*Math.cos((i/360.0)*2*3.1415));   		   		   		   
   	    }
   	   	pre_sin[i]=(sini);
   		pre_cos[i]=(cosi);
   
   		
      }
      
      info("Otetaan elementit välimuistiin..");
      gamestate++;
      setTimeout('init_game()', 0);
      tempvalue=0;
   
   }   
   else if(gamestate==2)
   {
      if(tempvalue<w+1)
      {
        
         //Cachetetaan kaikki elementit
         for(var i=tempvalue;i<tempvalue+5 && i<w+1;i++)
         {
            var tempelement=Array();
            for(var ii=0;ii<30;ii++)
            {
              tempelement[ii]=document.getElementById(i+'-'+ii);
              elementsxy[ii*w+i]=tempelement[ii];
              if(tempelement[ii])
              {
                 tempelement[ii].style.background='#555555';
                 tempelement[ii].style.color='#555555';
              }
            }
         
            elements[i]=tempelement;
         }     
         tempvalue+=5;
         var pros=Math.floor((tempvalue/(w+1))*100);
         if(pros>100) pros=100;
         info("Otetaan elementit välimuistiin.."+pros+"%");
         setTimeout('init_game()', 0);
      }
      else
      {
         //nollataan elementit
         for(var i=0;i<w+30*w;i++)
         {
            if(elementsxy[i])
            {
              elementsxy[i].style.background='#000';  
              elementsxy[i].style.color='#000';
            }
         }
      
         info("Ladataan käyttöliittymä..");
         gamestate++;
         setTimeout('init_game()', 0); 
      
      }
      
   }
   else if(gamestate==3)
   {
	 //Käyttöliittymä?   
	   
	 
	 info("Ladataan kartta ja esineet..");
     gamestate++;
     setTimeout('init_game()', 0); 
   }   
   else if(gamestate==4)
   {
      
      var xhttp = make_worker();
      var mapready = readystate;
      xhttp.open('GET', 'map.php?current', true);
      xhttp.setRequestHeader('Connection', 'close');
      xhttp.onreadystatechange = function() { mapready(xhttp, maploaded); };
      xhttp.send(null); 
   }   
   else if(gamestate==5)
   {    
	  var xhttp = make_worker();
      var visready = readystate;
      xhttp.open('GET', 'map.php?visibility', true);
      xhttp.setRequestHeader('Connection', 'close');
      xhttp.onreadystatechange = function() { visready(xhttp, visloaded); };
      xhttp.send(null);
   }   
   else if(gamestate==6)
   {     
      /*
      var xhttp = make_worker();
      var itemsready = readystate;
      xhttp.open('GET', 'map.php?items', true);
      xhttp.setRequestHeader('Connection', 'close');
      xhttp.onreadystatechange = function() { itemsready(xhttp, itemsloaded); };
      xhttp.send(null); 
      */
      gamestate++;
      setTimeout('init_game()', 0);
      
   }
   
   else if(gamestate==7)
   {
      //Viimeinen aloitusvaihe, valitaan aloituspaikka
      
      
      info("done.");
      gamestate++;
      setTimeout('init_game()', 0);
   }
   else
   {
      //Peli alkaa, heitetään arvot kuntoon ja kutsutaan paria functioo
      setValue('level', level);
      setValue('health', health);
      move();
      vision();
      drawplayer();
   }
}
