function gid(a){
 return window.document.getElementById(a)
}


aktuals=0;
aktualm=0;
function obnovCas(){
	 aktuals= aktuals +1 ;
	 if(aktuals > 60) {
	  aktuals= aktuals-60;
	  aktualm= aktualm + 1; 
	 }
	 aktualnicas = aktualm + ":" + aktuals;
	 if(gid("cas")){
	   gid("cas").innerHTML = aktualnicas;
	 }
}
window.setInterval("obnovCas()", 999); 

// sem stačí napsat v?echny ID polí, které se nemají doplňovat...
var $fieldsForNoAutoFill = new Array(
'v1','p1','v2','p2','v3','p3','v4','p4','v5','p5','v6','p6','v7','p7','v8','p8','v9','p9','v10','p10',
'v11','p11','v12','p12','v13','p13','v14','p14','v15','p15','v16','p16','v17','p17','v18','p18','v19','p19','v20','p20',
'v21','p21','v22','p22','v23','p23','v24','p24','v25','p25','v26','p26','v27','p27','v28','p28','v29','p29','v30','p30',
'v31','p31','v32','p32','v33','p33','v34','p34','v35','p35','v36','p36','v37','p37','v38','p38','v39','p39','v40','p40',
'v41','p41','v42','p42','v43','p43','v44','p44','v45','p45','v46','p46','v47','p47','v48','p48','v49','p49','v50','p50',
'v51','p51','v52','p52','v53','p53','v54','p54','v55','p55','v56','p56','v57','p57','v58','p58','v59','p59','v60','p60',
'v61','p61','v62','p62','v63','p63','v64','p64','v65','p65','v66','p66','v67','p67','v68','p68','v69','p69','v70','p70',
'v71','p71','v72','p72','v73','p73','v74','p74','v75','p75','v76','p76','v77','p77','v78','p78','v79','p79','v80','p80',
'v81','p81');
 
// funkce se musí inicialzovat na onload v body
function init() {
 // prevent browser from starting the autofill function
 for($i=0; $i<$fieldsForNoAutoFill.length; $i++){
  if(gid($fieldsForNoAutoFill[$i])){
    if (gid($fieldsForNoAutoFill[$i]).getAttribute("value")==null){
      gid($fieldsForNoAutoFill[$i]).setAttribute("autocomplete", "off"); 
    }
  }
 }
}
 
//TIMER
//globalne pouzivam
var nwatr= "width=500,height=400,left=20,top=20,resizable=yes,scrollbars=yes";// new window atributy

function savedraft() {
// (c) Marek Cierny, sudokuonline.cz 
	hodnoty= "";
	for (s= 1; s<= 81; s++) {
		idp= "p"+s;
		pval= document.getElementById(idp).value;
		if( pval == " "){
			hodnoty += "";
		}else{
			hodnoty += pval;
		};
		//pridam vpisky
		idv= "v"+s;
		vval= document.getElementById(idv).value;
		if (vval != "" && vval != " "){
			hodnoty += "(" + vval +")";
		};
		//pridam carku
		if (s != 81){
		hodnoty += ",";
		};
	};
	// v promenne hodnoty mam aktualni string hodnot. Otevru okno, ktere bude mit v promenne hodnoty , a kterje je ulozi 
	name = prompt(lang['set_name'], "");
	if (name == null){
		return false;
	}else{
		if (name == ""){
			name = "noname";
		};
		adr= "/save_draft.php?name=" + name + "&sudoku=" +hodnoty ;
		window.open(adr, "_blank", nwatr);
	};
};

function loaddraft(){
// (c) Marek Cierny, sudokuonline.cz 
	adr= "/load_draft.php";
	window.open(adr, "_blank", nwatr);
};

function writebutton(){
  document.write("<input type=\"button\" onclick=\"savedraft()\" value=\""+lang['save']+"\" />\n<input type=\"button\" onclick=\"loaddraft()\" value=\""+lang['prev_played']+"\" />");
};

function displayButton(){
if (gid("json")){
  gid("json").style.display="inline";
};
if (gid("jsoff")){
  gid("jsoff").style.display="none";
};
};

window.setTimeout("displayButton()", 600);


function vypistabulku(pwval, vwval){
  document.write("<table class='sudoku'>\n");
  i=0;
  for (r=1; r<=9; r++) {
	if (r == 4 || r == 7) {  
		document.write('<tr class="horni">');
	}else{
		document.write('<tr>');
	};
    for (s= 1; s <= 9; s++) {  

		if (s == 3 || s == 6) {  
			trida= "prave";
		}else{
			trida= "";
		};

		if (pwval[i]== '') {   		//pro rozli?ení zadaných a zadávaných čísel
			barva= '#777';
			vlastnost= '';
		}else {
			barva= '#000';
			vlastnost= 'readonly';
		};

      document.write('<td class="' +trida+ '"><input id="v'+ (i+1) +'" class="vpisky" style="width: 50px" value="'+vwval[i]+'"/><input type="text" id="p'+ (i+1) +'" size="1" value="' +pwval[i]+ '" style="color: ' +barva+ '; " ' +vlastnost+ ' /></td>');
	  document.write("\n");
	  i++;
    };

    document.write("</tr>\n");
  };
  document.write("</table>\n");
};

//
//skripty pro kontrolu reseni 
function setsek(rs){ // fce urci v kterem sektoru se nachazi policko v danem radku a sloupci
	r=rs.charAt(0);
	s=rs.charAt(1);
	if (r<=3){//radek
		moznesek= new Array ("1", "2", "3");
	}else if (r<=6){
		moznesek= new Array ("4", "5", "6");
	}else {
		moznesek= new Array ("7", "8", "9");
	}
	if (s<=3){//sloupec
		return moznesek[0];
	}else if (s<=6){
		return moznesek[1];
	}else {
		return moznesek[2];
	}	
};

function polesektoru(sek){ // fce vrati pole policek v danem sektoru
	gensek_r= new Array("0", "1", "1", "1", "2", "2", "2", "3", "3", "3");
	gensek_s= new Array("0", "1", "2", "3", "1", "2", "3", "1", "2", "3");
// genealogickky zapi sektoru gensek_r[sek] + gensek_s[sek]
	var last_r= gensek_r[sek]*3;
	var last_s= gensek_s[sek]*3;
	var ret= new Array();
	var i=1;
	for (r= (last_r-2); r<= last_r; r++ ){
		for (s= (last_s-2); s<= last_s; s++ ){
	    	ret[i]= ""+r+""+s;
	    	i++;
		};
	};
	return ret;
};

//doplnkove zjedusujisi fce
function setbylo(){
	return new Array(0, false, false, false, false, false, false, false, false, false);
};

function vyhodnot(idecko, kde, kdenum){
	ah= pval(ide); // aktualni hodnota
	if (ah=="" || ah==" "){
// pokud je pole prazdne, nema to cele
		matocele= false;
	}else{
		if (bylo[ah]){
			return lang_report_er(kde, kdenum, ah);
		}; 
		bylo[ah]= true;
	};
	return true;
};

function check(){
// (c) Marek Cierny, sudokuonline.cz webmaster
	matocele= true;
//kontrola radku
	for (r= 1; r<=9; r++){
		// vytvoreni boolean promennych, urcujicich zda dane cislo uz bylo v sloupci
		bylo= setbylo();
		for (s= 1; s<=9; s++){
			ide= "p"+r+s;
			pom= vyhodnot(ide, "lang['checkjs_inrow']", r);
			if (pom!=true) return alert(pom);
		};
	};
//kontrola sloupcu
	for (s= 1; s<=9; s++){
		bylo= setbylo();
		for (r= 1; r<=9; r++){
			ide= "p"+r+s;
			pom= vyhodnot(ide, 'lang["checkjs_incolumn"]', s);
			if (pom!=true) return alert(pom);
		};
	};
//kontrola sektoru
	for (sek= 1; sek<=9; sek++){
		pole= polesektoru(sek);
		bylo= setbylo();
		for (a=1; a<=9; a++){
		//bylo[a] obsahuje cislo policka
			ide= "p"+pole[a];
			jsmevsek = setsek(pole[a]);
			pom= vyhodnot(ide, "lang['checkjs_insector']",jsmevsek);
			if (pom!=true) return alert(pom);
		};
	};
	// evaluation
	if (matocele){
		return alert('lang["checkjs_success"]');
	}else{
		return alert('lang["checkjs_sofarsuccess"]');
	};
};
