// Steingroessen und Steuerung-Anpassung:
// �nderung 9.11.06: �berfl�ssige Sortierroutinen gel�scht, Prio Steine bei Darstellung: xmax*ymax*z,x+y
//                   Erweiterung query-Steuerung auf levels,steinset,styleset
//                   Rausschmiss 32er Stein (abgedeckt vom Original-MahJongg)
xmax=36; ymax=24; zmax=8; 

xoff=48; yoff=80; cmax=144; fmax=36;
s_size =32; s_start=360;

var idx=parseInt(get_winparam('steinset'));
var idy=parseInt(get_winparam('styleset'));
var idz=parseInt(get_winparam('levels'));

// --------------------------------------------------------------------------------------------------------
function save_prefs()
{ var my_obj0=document.form1.steinset,n0=my_obj0[my_obj0.selectedIndex].value;
  var my_obj1=document.form1.styleset,n1=my_obj1[my_obj1.selectedIndex].value;
  var my_obj2=document.form1.levels,n2=my_obj2[my_obj2.selectedIndex].value;
  var ablauf = new Date(),dreimonate = ablauf.getTime()+8640000000; ablauf.setTime(dreimonate);
  document.cookie='mahjongg_big='+n0+','+n1+','+n2+'; expires=' + ablauf.toGMTString();
  alert('Design gespeichert');
}

function load_prefs(flag)
{ var i,t='',paare,wert='';
  if (document.cookie) 
  { paare=document.cookie.split(';');
    anz=paare.length;
    for (i=0; i<anz; i++)
    { t=paare[i].replace(/^\s+/,''); t=t.replace(/\s+$/,''); // trim
      t=paare[i].split('\=');
      if (t[0]=='mahjongg_big') wert=t[1];
    }
  }
  if (wert.length>0) 
  { wert=wert.split(',');
    for (i=0; i<3; i++) wert[i]=parseInt(wert[i]);
    idx=wert[0]; idy=wert[1]; idz=wert[2];
    set_bilder(wert[0]);
    set_style(wert[1]);
    get_level(wert[2]);
    neu(true);
    set_select('','form1','steinset',wert[0]);
    set_select('','form1','styleset',wert[1]);
    set_select('','form1','levels',wert[2]);
    anzeige(false);
  }
  else if (flag) alert('kein Design gespeichert!');
}

// ---------------------------------------------------------------------------------------------------------

var dx=s_size,dy=dx,mstart=s_start;
var i,j,k,l; 
var stein=new Array(144);
if (dx>24) overlap=4; else if (dx>16) overlap=2; else overlap=1;
var dzx=dx/4,dzy=dy/4; 

var ima=new Array();
var ima_a=new Array();
for (i=0; i<fmax; i++) { ima[i]=new Image(); ima_a[i]=new Image(); }

set_bilder(idx);
set_style(idy);

function set_bilder(nr)
{ for (var i=0; i<fmax; i++) switch(nr)
  { case 1: ima[i].src='bw_'+i+'.gif';  ima_a[i].src='bw_'+i+'a.gif';  break;
    case 2: ima[i].src='nautik_'+i+'.gif'; ima_a[i].src='nautik_'+i+'a.gif'; break;
    case 3: ima[i].src='st_'+i+'.gif';  ima_a[i].src='st_a'+i+'.gif';  break;
    case 4: ima[i].src='adv_'+i+'.gif'; ima_a[i].src='adv_'+i+'a.gif'; break;
    case 5: ima[i].src='pingu_'+i+'.gif'; ima_a[i].src='pingu_'+i+'a.gif'; break;
    case 6: ima[i].src='ostern'+i+'.gif'; ima_a[i].src='ostern'+i+'a.gif'; break;
    case 7: ima[i].src='nj_'+i+'.gif'; ima_a[i].src='nj_'+i+'a.gif'; break;
    case 8: ima[i].src='mj_rubin_'+i+'.gif'; ima_a[i].src='mj_rubin_'+i+'a.gif'; break;
    case 9: ima[i].src='mj_uwater_'+i+'.gif'; ima_a[i].src='mj_uwater_'+i+'a.gif'; break;
    case 10: ima[i].src='gypsy_'+i+'.gif'; ima_a[i].src='gypsy_'+i+'a.gif'; break;
    case 11: ima[i].src='maske_'+i+'.gif'; ima_a[i].src='maske_'+i+'a.gif'; break;
    case 12: ima[i].src='gitter_'+i+'.gif'; ima_a[i].src='gitter_'+i+'a.gif'; break;
    case 13: ima[i].src='achat_'+i+'.gif'; ima_a[i].src='achat_'+i+'a.gif'; break;

    default: ima[i].src='stein'+i+'.gif'; ima_a[i].src='stein'+i+'_a.gif'; 
  }
}

function set_style(nr)
{ switch (nr)
  { case 1: document.getElementById("css").href='leder.css';     break;
    case 2: document.getElementById("css").href='halloween.css'; break;
    case 3: document.getElementById("css").href='weihnacht.css'; break;
    case 4: document.getElementById("css").href='eiswelt.css'; break;
    case 5: document.getElementById("css").href='see.css'; break;
    case 6: document.getElementById("css").href='ostern.css'; break;
    case 7: document.getElementById("css").href='silvester.css'; break;
    case 8: document.getElementById("css").href='rubin.css'; break;
    case 9: document.getElementById("css").href='uwater.css'; break;
    case 10: document.getElementById("css").href='wasser.css'; break;
    default: document.getElementById("css").href='my_style.css';
  }
}

// ============================================================

var rest,gewaehlt,i,j,k;
var ind=new Array(cmax);
var liste=new Array(cmax+1);
var li=new Array(cmax);

function cleanup()
{ if ((isNaN(idx)==true) || (isNaN(idy)==true) || (isNaN(idy)==true)) load_prefs(false);
  if (isNaN(idx)==true) idx=0; // Voreinstellung bunt 64
  if (isNaN(idy)==true) idy=0; // Voreinstellung Bastmatte
  if (isNaN(idz)==true) idz=0; // Voreinstellung Drache
  set_select('','form1','steinset',idx);
  set_select('','form1','styleset',idy);
  set_select('','form1','levels',idz);
}

function change_style()
{ var nr=parseInt(get_select('','form1','styleset'));
  set_style(nr);
}

function change_bilder()
{ var nr=parseInt(get_select('','form1','steinset'));
  { set_bilder(nr);
    zeichne_steine();
  }
}

function muster()
{ var nr=get_select('','form1','levels');
  get_level(nr);
  neu(true);
}

function zeichne_steine()
{ for (var i=0; i<cmax; i++) if (stein[i]) with (stein[i]) 
  { set_koords('d_'+i,ix,iy,prio);
    set_bild('d_'+i,'i'+i,ima[bild].src);
    show_hide('d_'+i,ist_da);
  }
  else alert('Objekt '+i+' fehlt!');
}

function mischen()
{ var i,j,k;
  for (i=0; i<cmax; i++)
  { j=Math.floor(cmax*Math.random());
    k=stein[i].id; stein[i].id=stein[j].id; stein[j].id=k;
    k=stein[i].bild; stein[i].bild=stein[j].bild; stein[j].bild=k;
  }
}

function hilfe() { var win2=window.open("hilfe.htm","Hilfe","width=560,height=400,scrollbars=yes"); }

function neu(flag)
{ for (var i=0; i<cmax; i++) stein[i].ist_da=true;
  if (flag) mischen();
  zeichne_steine();
  liste[0]=0;
  rest=cmax;
  gewaehlt=-1;
  set_input('','form1','rest',rest);
}

function ist_frei(nr)
{ var i,xx,yy,ok,rechtszu,linkszu;
  ok=stein[nr].ist_da;
  if (ok)
  if (stein[nr].z<zmax) // --- Blockierung von oben checken:
  { for (i=0; i<cmax; i++) if (stein[i].ist_da)
    { if (ok) if (stein[i].z==(stein[nr].z+1)) 
      { yy=(stein[nr].y-stein[i].y)*(stein[nr].y-stein[i].y);
        if (yy<2) 
        { xx=(stein[nr].x-stein[i].x)*(stein[nr].x-stein[i].x);
          if (xx<2) ok=false;
        }
      }
    }
  }
  rechtszu=false;
  linkszu=false;
  if (ok) // --- rechts oder links frei?:
  { for (i=0; i<cmax; i++) if (stein[i].ist_da)
    { if (ok) if ((stein[i].z==stein[nr].z) && (nr!=i)) 
      { yy=(stein[nr].y-stein[i].y)*(stein[nr].y-stein[i].y);
        if (yy<2) 
        { if ((stein[nr].x-stein[i].x)==2) linkszu=true;
          if ((stein[i].x-stein[nr].x)==2) rechtszu=true;
        }
      }
    }
  }
  if (ok) if ((rechtszu) && (linkszu)) ok=false;
  return ok;
}

function klick(nr)
{ if (ist_frei(nr))
  { if (gewaehlt<0) 
    { set_bild('d_'+nr,'i'+nr,ima_a[stein[nr].bild].src);
      gewaehlt=nr;
    }
    else if (gewaehlt!=nr)
    { set_bild('d_'+gewaehlt,'i'+gewaehlt,ima[stein[gewaehlt].bild].src);
      if (stein[gewaehlt].id==stein[nr].id)
      { stein[nr].ist_da=false;
        stein[gewaehlt].ist_da=false;
        show_hide('d_'+nr,stein[nr].ist_da);
        show_hide('d_'+gewaehlt,stein[gewaehlt].ist_da);
        liste[0]++; liste[liste[0]]=gewaehlt; liste[0]++; liste[liste[0]]=nr;
        rest=rest-2;
        set_input('','form1','rest',rest);
        if (rest==0) endbild();
      }
      gewaehlt=-1;
    }
    else { set_bild('d_'+gewaehlt,'i'+gewaehlt,ima[stein[gewaehlt].bild].src); gewaehlt=-1; }
  }
}

function zug()
{ var i,j,k;
  li[0]=0;
  for (i=0; i<(cmax-1); i++) 
  { if (ist_frei(i))
    { for (j=i+1; j<cmax; j++) 
      { if (stein[i].id==stein[j].id)
        { if (ist_frei(j)) 
          { set_bild('d_'+i,'i'+i,ima_a[stein[i].bild].src);
            set_bild('d_'+j,'i'+j,ima_a[stein[j].bild].src);
            li[0]++; li[li[0]]=i; 
            li[0]++; li[li[0]]=j; 
          }
        }
      }
    }
  }  
  if (li[0]<1) alert('Sorry, kein Zug mehr moeglich!'); else window.setTimeout("wegschalten()",5000);
}

function wegschalten() { for (var i=1; i<=li[0]; i++) set_bild('d_'+li[i],'i'+li[i],ima[stein[li[i]].id].src); }

function zug_rueck()
{ var i,nr; 
  if (liste[0]>1) for (i=0; i<2; i++)
  { nr=liste[liste[0]]; 
    stein[nr].ist_da=true;
    show_hide('d_'+nr,stein[nr].ist_da);
    liste[0]--;
    rest++;
  }
  set_input('steuerung','form1','rest',rest);
}

function stein_sort()
{ var i,k,delta;
  for (i=0; i<cmax; i++) ind[i]=i;
  var getauscht,delta;
  delta=Math.floor(cmax/2);
  while (delta>0) 
  { getauscht=false;
    for (i=0; i<(cmax-delta); i++)
    { if (stein[ind[i]].id>stein[ind[i+delta]].id) 
      { k=ind[i];               
        ind[i]=ind[i+delta];
        ind[i+delta]=k;
        getauscht=true;
      }
    }
    if (!getauscht) delta=Math.floor(delta/2);
  }
}

function restkarten()
{ var i,k=0;
  var temp='<html><head><link rel="stylesheet" href="';
  temp=temp+document.getElementById("css").href;
  temp=temp+'"></head><body onload="this.focus()"><h3>Restliche MahJongg-Bilder</h3>';
  stein_sort();
  for (i=0; i<cmax; i++) if (stein[ind[i]].ist_da) 
  { temp=temp+'<img src="'+ima[stein[ind[i]].bild].src+'" alt="" width=32 height=32 hspace=4 vspace=4>';
    k++;
    if (k%12==0) temp=temp+'<br clear=all>';
  }
  temp=temp+'<br clear=all><br>';
  temp=temp+'<div class="button"><a href="javascript:this.close()">dieses Fenster schlie&szlig;en</a></div></body></html>';
  var win2=window.open("","Restliche_MahJongg_Bilder","width=540,height=400,scrollbars=yes"); 
  win2.document.open();
  win2.document.writeln(temp);
  win2.document.close();
}

function anzeige(flag) { show_hide('steuerung',flag); }

// ==========================================================================================================
function endbild()
{ for (var i=0; i<144; i++)  with (stein[i])
  { set_koords('d_'+i,(i%18)*dx,0,z);
    show_hide('d_'+i,true);
  }
  moveto_posi(0,1);
}

function moveto_posi(count,ebene)
{ var koo=new Array();
  var countup=false;
  for (var i=0; i<144; i++)  with (stein[i]) if (z==ebene)
  { koo=get_koords('d_'+i);
    set_koords('d_'+i,koo[0]+0.5*(ix-koo[0]),koo[1]+0.5*(iy-koo[1]),prio);
  }
  count++;
  if (count>10) { ebene++; count=0; }
  if (ebene<9) timrec1=setTimeout('moveto_posi('+count+','+ebene+')',10); else neu(true);
}

