// --- Kniffel - Javascript-Teil ---------------------------------------------------------

// neue Enderoutine: 10.06.2002
// Wiederwahl Kniffel gesperrt: 16.06.2002
// neue Highscoreliste eingebunden: 22.05.03
// ---------------------------------------------------------------------------------------

var wert =new Array(12);
var flag =new Array(5);
var augen=new Array(5);
var hf   =new Array(6);
var bonus,zwischensumme,gesamtsumme,uebertrag,wcount,count,runde,kniffelflag,feldonly;

// Screen-Objekte ----------------------------------------------------------------------------------------------------
var ima = new Array(6);
var ima_a= new Array(6);
for (var i=0; i<6; i++)
{ ima[i]=new Image(); ima[i].name='w'+(i+1); ima[i].src='w'+(i+1)+'.gif'; 
  ima_a[i]=new Image(); ima_a[i].name='w'+(i+1)+'a'; ima_a[i].src='w'+(i+1)+'a.gif'; 
}

function messi(mess) { document.form1.blabla.value=mess; }
function hilfe() { var win2=window.open("hilfe.htm","Kniffelhilfe","width=592,height=376,scrollbars=yes,resizable=yes"); }
function showhsc() { document.block.modus.value=0; document.block.submit(); }

function enderoutine()
{ if (document.block.punkte.value!=gesamtsumme) document.block.punkte.value=-1;
  document.block.modus.value=1;
  document.block.submit(); 
  neu();  
}

function zeigewert(nr) 
{ if (wert[nr]<0) var t1='--'; else var t1=wert[nr]; 
  if (nr==0) document.block.s1.value=t1; 
  else if (nr==1) document.block.s2.value=t1; 
  else if (nr==2) document.block.s3.value=t1; 
  else if (nr==3) document.block.s4.value=t1; 
  else if (nr==4) document.block.s5.value=t1; 
  else if (nr==5) document.block.s6.value=t1; 
  else if (nr==6) document.block.fh.value=t1; 
  else if (nr==7) document.block.ks.value=t1; 
  else if (nr==8) document.block.gs.value=t1; 
  else if (nr==9) document.block.p3.value=t1; 
  else if (nr==10) document.block.p4.value=t1; 
  else if (nr==11) document.block.ch.value=t1; 
  else document.block.kn.value=t1; 
}

function zeigesummen(su,bo,ue,gsum)
{ document.block.su.value=su; 
  document.block.bo.value=bo; 
  document.block.ue.value=ue; 
  document.block.punkte.value=gsum; 
}


function zeigewuerfel(nr)
{ var t1='w'+(nr+1); var t2=augen[nr]-1;
  if (flag[nr]) document.images[t1].src=ima_a[t2].src; else document.images[t1].src=ima[t2].src; 
}


// ----- Klick-Objekte: -------------------------------------------------------------------------------------------------
function waehlen(nr) { flag[nr]=(!flag[nr]); zeigewuerfel(nr); }

function shelsort()
{ var i,j,k;
  var getauscht=true;
  while (getauscht)
  { getauscht=false;
    for (i=0; i<4; i++)
    { for (j=i+1; j<5; j++) if (augen[i]>augen[j]) { k=augen[i]; augen[i]=augen[j]; augen[j]=k; getauscht=true; } }
  }
  for (i=0; i<5; i++) { flag[i]=false; zeigewuerfel(i); }
}

function wuerfeln()
{ var i,k;
  if (wcount<3) 
  { for (i=0; i<5; i++) if (flag[i]) { k=1+Math.floor(6*Math.random()); augen[i]=k; zeigewuerfel(i); } 
    wcount++;
    if (wcount>=3) for (i=0; i<5; i++) { flag[i]=false; zeigewuerfel(i); messi('Bitte Wurf eintragen!'); }
  }
  else messi('Du darfst nur 3x nachwerfen!');
} 


function neu()
{ var i;
  for (i=0; i<13; i++) { wert[i]=-1; zeigewert(i); }
  calcsummen();
  neuwuerfeln();
  count=0;
  kniffelflag=false;
}

function setzen(nr)
{ var i,j,k;
  if ((wert[nr]>=0) && (nr<12)) { alert('Diese Auswahl ist schon weg!'); messi('Diese Auswahl ist schon weg!'); }
  else if ((wert[nr]==0) && (nr==12)) { alert('Den haste dir verbaut!'); messi('Der ging leider den Bach runter!'); }
  else if ((feldonly) && (nr==12)) { alert('Njet, du Schlaumeier!\nDas ist nicht vorgesehen!'); messi('Diese Auswahl ist gesperrt!'); }
  else
  { wert[nr]=auswertung(nr); 
    zeigewert(nr);
//    alert("Nr.:"+nr+" Wert:"+wert[nr]);
    calcsummen();
    if (kniffelflag) { shelsort(); messi('Kniffel! Und nochmal setzen!'); feldonly=true; } 
    else { if (is_ende()) enderoutine(); else neuwuerfeln(); } // oh, motziller!
  }
}


// ----- Spielelogik ---------------------------------------------------------------------------------------------------

function is_ende() { var ok=true; for (var i=0; i<13; i++) if (wert[i]<0) ok=false; return ok; }

function neuwuerfeln() 
{ var i,k; 
  for (i=0; i<5; i++) { k=1+Math.floor(6*Math.random()); augen[i]=k; }
  shelsort(); 
  wcount=0;
  feldonly=false;
  messi('... denn man tau!');
}

function calcsummen()
{ var i,j,k;
  zwischensumme=0; for (i=0; i<6; i++) if (wert[i]>0) zwischensumme=zwischensumme+wert[i];
  if (zwischensumme<63) bonus=0; else bonus=35;
  uebertrag=zwischensumme+bonus;
  gesamtsumme=uebertrag; 
  for (i=6; i<13; i++) if (wert[i]>0) gesamtsumme=gesamtsumme+wert[i];
  zeigesummen(zwischensumme,bonus,uebertrag,gesamtsumme);
}

function auswertung(nr)
{ var i,s1,s2,s3;
  kniffelflag=false;
  for (i=0; i<6; i++) hf[i]=0;
  for (i=0; i<6; i++) hf[augen[i]-1]++;
  if (nr<6) s1=hf[nr]*(nr+1);  // Serien 1-6
  else if (nr==6)              // Full House
  { s1=0; s2=0; s3=0; 
    for (i=0; i<6; i++) 
    { if (hf[i]==2) s1++; 
      if (hf[i]==3) s2++;
      if (hf[i]==5) s3++;
    }
    if ((s3>0)||((s1>0)&&(s2>0))) s1=25; else s1=0;
  }
  else if (nr==7)  // kleine Strasse
  { s1=0; for (i=0; i<4; i++) if (hf[i]>0) s1++;
    if (s1<4) { s1=0; for (i=0; i<4; i++) if (hf[i+1]>0) s1++; }
    if (s1<4) { s1=0; for (i=0; i<4; i++) if (hf[i+2]>0) s1++; }
    if (s1>3) s1=30; else s1=0;
  }   
  else if (nr==8)  // grosse Strasse
  { s1=0;
    for (i=0; i<5; i++) if (hf[i]>0) s1++;
    if (s1<5) { s1=0; for (i=0; i<5; i++) if (hf[i+1]>0) s1++; }
    if (s1>4) s1=40; else s1=0;
  }   
  else if (nr==9)  // 3er
  { s2=0; for (i=0; i<5; i++) s2=s2+augen[i]; 
    s1=0; for (i=0; i<6; i++) if (hf[i]>2) s1=30; 
    if (s1>0) s1=s1+s2; 
  } 
  else if (nr==10)  // 4er
  { s2=0; for (i=0; i<5; i++) s2=s2+augen[i]; 
    s1=0; for (i=0; i<6; i++) if (hf[i]>3) s1=40; 
    if (s1>0) s1=s1+s2; 
  } 
  else if (nr==11) { s1=0; for (i=0; i<5; i++) s1=s1+augen[i]; }  // Chance
  else if (nr==12) // Kniffel
  { s1=0; 
    for (i=0; i<6; i++) if (hf[i]==5) { if (wert[nr]>0) { s1=augen[0]*100+wert[nr]; kniffelflag=true; } else s1=50; }
  }
  return s1; 
}

// ----------------------------------------------------------------------------------------------------------------------
