/* 
 * www.styleweb.cz
 * 
 */
var casova_konstanta=1500;

var cas_rotace=1000;

var cas_posunu=50;

var rotory=new Array();

var rotor_modul=new Array();

var rotor_aktiv=new Array();

var pocet_radku=12;

var pocet_sloupcu=28;

var pravdepodobnost=0;

var jmeno_id="one_zero";

//var oznaceny_div_one_zero=document.getElementsByClassName(jmeno_id);
var oznaceny_div_one_zero=null;

window.onload=function(){
    
//alert(oznaceny_div_one_zero);
oznaceny_div_one_zero=document.getElementById(jmeno_id);
//alert(oznaceny_div_one_zero);
}

//alert(dokument.getElementById("header"));

var animace;

var obrazec=new Array();

var vybrany_obrazec=0;

var predesly_obrazec=0;

var pred_predesly_obrazec=0;

var pocet_obrazcu;

var aktualni_sloupec=0;

var pocet_kroku_premeny=0;

//*****************************************************nastaveni

obrazec[0]=new Array();
obrazec[0][0] ="0000000000000000000000000000";
obrazec[0][1] ="0000000000000000000000000000";
obrazec[0][2] ="0000000000000000000000000000";
obrazec[0][3] ="0000000111101111011110000000";
obrazec[0][4] ="0000000100001000010010000000";
obrazec[0][5] ="0000000111101111010010000000";
obrazec[0][6] ="0000000000101000010010000000";
obrazec[0][7] ="0000000111101111011110000000";
obrazec[0][8] ="0000000000000000000000000000";
obrazec[0][9] ="0000000000000000000000000000";
obrazec[0][10]="0000000000000000000000000000";
obrazec[0][11]="0000000000000000000000000000";

obrazec[1]=new Array();
obrazec[1][0] ="0000000000000000000000000000";
obrazec[1][1] ="0000000000000000000000000000";
obrazec[1][2] ="0000000000000000000000000000";
obrazec[1][3] ="0000000111101001011110000000";
obrazec[1][4] ="0000000100101001010010000000";
obrazec[1][5] ="0000000111101111011110000000";
obrazec[1][6] ="0000000100001001010000000000";
obrazec[1][7] ="0000000100001001010000000000";
obrazec[1][8] ="0000000000000000000000000000";
obrazec[1][9] ="0000000000000000000000000000";
obrazec[1][10]="0000000000000000000000000000";
obrazec[1][11]="0000000000000000000000000000";

obrazec[2]=new Array();
obrazec[2][0] ="0000000000000000000000000000";
obrazec[2][1] ="0000000000000000000000000000";
obrazec[2][2] ="0000000000000000000000000000";
obrazec[2][3] ="0001001011111010001010000000";
obrazec[2][4] ="0001001000100011011010000000";
obrazec[2][5] ="0001111000100010101010000000";
obrazec[2][6] ="0001001000100010001010000000";
obrazec[2][7] ="0001001000100010001011110000";
obrazec[2][8] ="0000000000000000000000000000";
obrazec[2][9] ="0000000000000000000000000000";
obrazec[2][10]="0000000000000000000000000000";
obrazec[2][11]="0000000000000000000000000000";

obrazec[3]=new Array();
obrazec[3][0] ="0000000000000000000000000000";
obrazec[3][1] ="0000000000000000000000000000";
obrazec[3][2] ="0000000000000000000000000000";
obrazec[3][3] ="0000011000001001100100010000";
obrazec[3][4] ="0000100100001010010010100000";
obrazec[3][5] ="0000111101001011110001000000";
obrazec[3][6] ="0000100101001010010010100000";
obrazec[3][7] ="0000100100110010010100010000";
obrazec[3][8] ="0000000000000000000000000000";
obrazec[3][9] ="0000000000000000000000000000";
obrazec[3][10]="0000000000000000000000000000";
obrazec[3][11]="0000000000000000000000000000";

obrazec[4]=new Array();
obrazec[4][0] ="0000000000000000000000000000";
obrazec[4][1] ="0000000000000000000000000000";
obrazec[4][2] ="0000000000000000000000000000";
obrazec[4][3] ="0000000111101111011110000000";
obrazec[4][4] ="0000000100001000010000000000";
obrazec[4][5] ="0000000100001111011110000000";
obrazec[4][6] ="0000000100000001000010000000";
obrazec[4][7] ="0000000111101111011110000000";
obrazec[4][8] ="0000000000000000000000000000";
obrazec[4][9] ="0000000000000000000000000000";
obrazec[4][10]="0000000000000000000000000000";
obrazec[4][11]="0000000000000000000000000000";

rotory[0] ="0000000000000000000000000000";
rotory[1] ="0000000000000000000000000000";
rotory[2] ="0000000000000000000000000000";
rotory[3] ="0000000111101111011110000000";
rotory[4] ="0000000100001000010010000000";
rotory[5] ="0000000111101111010010000000";
rotory[6] ="0000000000101000010010000000";
rotory[7] ="0000000111101111011110000000";
rotory[8] ="0000000000000000000000000000";
rotory[9] ="0000000000000000000000000000";
rotory[10]="0000000000000000000000000000";
rotory[11]="0000000000000000000000000000";





//******************************************************funkce

function spust_rotaci(){

   animace=setTimeout("rotace()",cas_posunu+casova_konstanta);
   
   setTimeout("rotace_do_obrazce()",cas_rotace+casova_konstanta);
   
   vyber_obrazec();
  
}

function rotace(){
    
    vytvor_rotor_modul(false);
    
    rotuj_rotory(false);
    
    rotory_print(false);
    //alert("spustena rotace");
    animace=setTimeout("rotace()",cas_posunu);
    
    aktualni_sloupec=0;
    
    pocet_kroku_premeny=0;
}

function rotace_do_obrazce(){
    
    clearTimeout(animace);
    
    vytvor_rotor_modul(true);
    
    var bool=rotuj_rotory(true);
    
    rotory_print(false);
    
    if (bool==true){
        
        setTimeout("rotace_do_obrazce()",cas_posunu);

    }else{

        rotory_print(true);
        
        animace=setTimeout("rotace()",cas_posunu+casova_konstanta);
        
        setTimeout("rotace_do_obrazce()",cas_rotace+casova_konstanta);
        
        vyber_obrazec();
    
    }
    
}

function nulu_rotor_aktiv(){
    
    for (var i = 0; i < pocet_radku; i++) {
        
        rotor_aktiv[i]=0;
    
    }
    
}

function vytvor_rotor_modul(bool){
    
    if (bool==false){
        rotor_modul="";
        for (var i=0;i<pocet_sloupcu;i++){
            rotor_modul+=jedna_nebo_nula();
        }
    }else{
        rotor_modul="";
        for ( i=0;i<pocet_sloupcu;i++){
            rotor_modul+=jedna_nebo_nula();
        }
        pole_rotor=rotor_modul.split("");
        for (var j=0;j<=aktualni_sloupec;j++){
            var jj=pocet_kroku_premeny-j;
            if (jj>=pocet_radku){
                jj=pocet_radku-1;
            }
           // alert(obrazec);
            pole_rotor[j]=obrazec[vybrany_obrazec][pocet_radku-1-jj].substr(j, 1);
            
            //alert(obrazec[vybrany_obrazec]);
        
        }
       
       rotor_modul=pole_rotor.toString().replace(/,/g, "");
       //alert(rotor_modul);
       pocet_kroku_premeny++;
       
       if (aktualni_sloupec<pocet_sloupcu){
       
            aktualni_sloupec++;
       
        }
       // alert(rotor_modul+"  "+rotor_modul[1]+" "+rotor_modul.toString().replace(/,/g, ""));
       // rotor_modul=rotor_modul.(" ","",);
    }
   
}

function rotuj_rotory(bool){
    
    if (bool==false){
    
    for (var i=pocet_radku;i>0;i--){
        
        rotory[i]=rotory[i-1];
     
    }
    
    rotory[0]=rotor_modul;
    
    }else{
        var jj=0;
        /*
        while (pocet_kroku_premeny-(jj+1*pocet_radku)>0){
            jj++;
        }*/
        if (pocet_kroku_premeny-pocet_radku>0){
            jj=pocet_kroku_premeny-pocet_radku;
        }
        //alert(jj);
        for ( i=pocet_radku;i>0;i--){
            
            //rotory[i]=rotory[i].substr(0,jj)+rotory[i-1].substr(jj, pocet_sloupcu-jj);
            if (jj<=0){
                rotory[i]=rotory[i-1];
            }else{
                rotory[i]=rotory[i].substr(0,jj)+rotory[i-1].substr(jj, pocet_sloupcu-jj);
            }
        }
            if (jj<=0){
               rotory[0]=rotor_modul; 
            }else{
               rotory[0]=rotory[0].substr(0,jj)+rotor_modul.substr(jj, pocet_sloupcu-jj); 
            }
            if (jj==pocet_sloupcu){
                return false;
            }
            
            return true;
       //rotory[0]=rotory[0].substr(0,jj)+rotor_modul.substr(jj, pocet_sloupcu-jj);
       //rotory[0]=rotor_modul.substr(jj, pocet_sloupcu-jj);
        
    }
    return true;
    
}

function rotory_print(bool){
    
    var rotor_retezec="";
    
    for (var i=0;i<pocet_radku;i++){
        
        rotor_retezec=rotor_retezec+rotory[i]+"<br>";
        
    }
    
    if (bool==true){
        var index=-1;
        var text_konstanta=0;
       // alert("jedem");
        while ((index=rotor_retezec.indexOf("1", index+1+text_konstanta))!=-1){
            //alert(index);
            rotor_retezec=rotor_retezec.substr(0,index)+"<font color='black'>1</font>"+rotor_retezec.substr(index+1,rotor_retezec.length-index);
            // alert(index);
            text_konstanta=20;
            }
    }
    if (oznaceny_div_one_zero!=null){
        oznaceny_div_one_zero.innerHTML=rotor_retezec;
    }
    
}

function jedna_nebo_nula(){
    var vyber=Math.random(new Date())*100;
    
    if (vyber>49&&pravdepodobnost>-40){
        pravdepodobnost-=10;
        if (pravdepodobnost>0){
            pravdepodobnost=-20;
        }
    }
    if (vyber<50&&pravdepodobnost<40)
    {
        pravdepodobnost+=10;
        if (pravdepodobnost<0){
            pravdepodobnost=20;
        }
    }
    
  //  alert(vyber+" "+pravdepodobnost);
   
   return Math.round(Math.abs(vyber+pravdepodobnost)/100);
   //return 1;
}


function vyber_obrazec(){
    
    var pom;
        while(((pom=Math.round(Math.random()*(obrazec.length-1)))==vybrany_obrazec)||(pom==predesly_obrazec)||(pom==pred_predesly_obrazec));
        
        pred_predesly_obrazec=predesly_obrazec;
        predesly_obrazec=vybrany_obrazec;
        vybrany_obrazec=pom;
    
 
}

