// JavaScript Document
var oldC="-";
var tmcell="";
var iv=0;
var btnClear=null;
var edText=null;
var isGame=false;
var selC="selCell";
var notSelC="notSelCell";
var color_="#99FF00";
var milisec=0;
var seconds=0;
var minutes = 0;
var clArray = new Array(9);
var strURL = "/myresult.jsp?pID=";
var viewer = null;
var viewRes = false;



function initAllData() {
        var req = opensocial.newDataRequest();
        req.add(req.newFetchPersonRequest("OWNER"), "owner_data");
        req.add(req.newFetchPersonRequest("VIEWER"), "viewer_data");
        var idspec = new opensocial.IdSpec({
            'userId' : 'OWNER',
            'groupId' : 'FRIENDS'
        });
        req.add(req.newFetchPeopleRequest(idspec), 'site_friends');
        req.send(onData);
      };
      
      function onData(data) {
        if (!data.get("owner_data").hadError()) {
          var owner_data = data.get("owner_data").getData();
          //document.getElementById("site-name").innerHTML = owner_data.getDisplayName();
        }
		var pinfo = document.getElementById("persInfo");
		if (data.get("viewer_data").hadError()) {
			pinfo.innerHTML = "Для просмотра своей статистики необходимо авторизоваться.";
			}
		else{
			
			viewer = data.get("viewer_data").getData();
			 strURL = "/myresult.jsp?pID="+viewer.getField(opensocial.Person.Field.ID);
			pinfo.innerHTML = "<a href='"+strURL+"' target='_blank'>Ваша статистика</a><br />Нажмите на ссылку Проверить что бы убедиться что головоломка решена правильно! Если все правильно, то Вам будет зачислено соответствующее количество баллов!" ;
			var d = new Date();
		document.forms.sgame.DName.value=viewer.getDisplayName();
		document.forms.sgame.usId.value=viewer.getField(opensocial.Person.Field.ID);
		document.forms.sgame.gDate.value=d.getFullYear().toString()+"-"+d.getMonth().toString()+"-"+d.getDate().toString();
			
		}
        var viewer_info = document.getElementById("authorize");
        if (data.get("viewer_data").hadError()) {
		
          viewer_info.innerHTML = "<a href='#' onclick='google.friendconnect.requestSignIn()'>Войти (OpenID)</a>"+ " | "
		  +"<a href='http://ru.wikipedia.org/wiki/OpenID' target='_blank'>Что такое OpenID?</a>"+ " | "  + 
              "<a href='http://openid.net/get-an-openid/'  target='_blank'>Получить OpenID</a>";
		viewer_info.innerHTML = viewer_info.innerHTML + "<p id='opidsample'><strong>Например</strong>, если у Вас есть учетная запись (почта) на Яндекс.ру, в виде ВашеИмя@yandex.ru, Вы можете авторизоваться, нажав последовательно на ссылки: Войти, далее нажав на ссылку OpenID и введя в поле 'URL вашего OpenID' следующую строку: <strong>openid.yandex.ru/ВашеИмя</strong>. Для пользователей Рамблер.ру (ВашеИмя@rambler.ru) требуется ввести строку: <strong>id.rambler.ru/users/ВашеИмя</strong> или еще проще: <strong>http://rambler.ru/</strong> (до входа на наш сайт необходимо зайти под своей записью на сам Рамблер). Пользователи сервиса Mail.Ru (ВашеИмя@Mail.Ru) должны ввести: <strong>ВашеИмя.id.mail.ru</strong>. При первом входе на наш сайт Ваш OpenID провайдер задаст вопрос - войти или нет, на который необходимо ответить утвердительно (нажав OK или Continue)</p>";
			document.forms.sgame["DName"].value="";
			document.forms.sgame["usId"].value="";
			document.forms.sgame["gDate"].value="";
			document.forms.sgame["isSolv"].value="";
        } else {
		//viewer.getField(opensocial.Person.Field.ID)
          
		 //document.infForm.pID.value= "001";//viewer.getField(opensocial.Person.Field.ID);
          viewer_info.innerHTML = "Здравствуйте, " + viewer.getDisplayName() + "<br />" +
              "<a href='#' onclick='google.friendconnect.requestSettings()'>Настройки</a> | " + 
              "<a href='#' onclick='google.friendconnect.requestInvite()'>Пригласить</a> | " +
              "<a href='#' onclick='google.friendconnect.requestSignOut()'>Выйти</a>";
		  var d = new Date();
		document.forms.sgame.DName.value=viewer.getDisplayName();
		document.forms.sgame.usId.value=viewer.getField(opensocial.Person.Field.ID);
		document.forms.sgame.gDate.value=d.getFullYear().toString()+"-"+d.getMonth().toString()+"-"+d.getDate().toString();
        }
      }
	  
function rfalse() 
{ 
return false; 
} 

function ViewDiv(n){
    var a = document.getElementById(n).style;
    if(a.display=='block') {
        a.display='none';
        }
    else {
        a.display='block';
        }
    return false;
}

function retInerHtml(isGame){
    if(!isGame){
        return "<div id='innerTab'><table ><tr><td onclick='setCellVal(1);'>1</td><td onclick='setCellVal(2);'>2</td><td onclick='setCellVal(3);'>3</td></tr><tr><td onclick='setCellVal(4);'>4</td><td onclick='setCellVal(5);'>5</td><td onclick='setCellVal(6);'>6</td></tr><tr><td onclick='setCellVal(7);'>7</td><td onclick='setCellVal(8);'>8</td><td onclick='setCellVal(9);'>9</td></tr></table></div>";
    }
    else{
        return "<div id='innerTab'><table ><tr>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(1);'>1</td>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(2);'>2</td>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(3);'>3</td></tr><tr>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(4);'>4</td>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(5);'>5</td>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(6);'>6</td></tr><tr>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(7);'>7</td>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(8);'>8</td>\n\
<td onclick='retClass(this)' ondblclick='setCellVal(9);'>9</td></tr>\n\
</table></div>";
    }
}
function retClass(td){
    if(td.className!=selC){td.className=selC;
        td.innerHTML=td.innerHTML+".";
    }
    else {
        td.className=notSelC;
        td.innerHTML=td.innerHTML.toString().substr(0, 1);
    }
}
function addTabVar(cell){
    var cl=document.getElementById(cell);
    var cl_val=cl.innerHTML.toString().substr(0, 1);
    if(oldC!="-"&&iv==0){
            var tmcl=document.getElementById(oldC);
            if(cl_val!="1"&&cl_val!="2"&&
                cl_val!="3"&&cl_val!="4"&&
                cl_val!="5"&&cl_val!="6"&&
                cl_val!="7"&&cl_val!="8"&&
                cl_val!="9"){
                    tmcl.innerHTML="";
                    oldC=cell;
                    iv=1;
                }
        }
    if(cl.innerHTML== "" && cell.substring(0,1)=="c") {
          cl.innerHTML=retInerHtml(isGame);
//          oldC=cell;
//          iv==1;
        }else
        if(cl_val=="1"||cl_val=="2"||cl_val=="3"||
            cl_val=="4"||cl_val=="5"||cl_val=="6"||
            cl_val=="7"||cl_val=="8"||cl_val=="9")
            addImg(1, cell);
}

function addEditVar(cell){
    var cl=document.getElementById(cell);
    var cl_val=cl.innerHTML.toString().substr(0, 1);
    if(oldC!="-"&&iv==0){
            var tmcl=document.getElementById(oldC);
            if(cl_val!="1"&&cl_val!="2"&&
                cl_val!="3"&&cl_val!="4"&&
                cl_val!="5"&&cl_val!="6"&&
                cl_val!="7"&&cl_val!="8"&&
                cl_val!="9"){
                    tmcl.innerHTML="";
                    oldC=cell;
                    iv=1;
                    //tmcl.removeChild(btnClear);
            }
        }
    if(cl.innerHTML== "" && cell.substring(0,1)=="c") {
          cl.innerHTML="<div id='innerEdit'><input type='text' name='inpVal' maxlength='1' onKeyDown='javascript:if(13==event.keyCode){return false;};setKbVal(event.keyCode);' style='align:center; width: 40px; height:40px; border:1px dotted #778; color:#009900; text-align:center;font-size:34px;' /></div>";
          
        }else
        if(cl_val=="1"||cl_val=="2"||cl_val=="3"||
            cl_val=="4"||cl_val=="5"||cl_val=="6"||
            cl_val=="7"||cl_val=="8"||cl_val=="9")
            addImg(1, cell);

}
function setKbVal(key){
    var cl=document.getElementById(tmcell);
    if(key>95&&key<106){
        var KeyVal="0";
        switch(key){
            case 96:
                KeyVal="0";
                break;
            case 97:
                KeyVal="1";
                break;
            case 98:
                KeyVal="2";
                break;
            case 99:
                KeyVal="3";
                break;
            case 100:
                KeyVal="4";
                break;
            case 101:
                KeyVal="5";
                break;
            case 102:
                KeyVal="6";
                break;
            case 103:
                KeyVal="7";
                break;
            case 104:
                KeyVal="8";
                break;
            case 105:
                KeyVal="9";
                break;
        }
        cl.innerHTML=KeyVal;
    }
    else
        cl.innerHTML=String.fromCharCode(key);
}

function fillArr(){
	for(i=0; i<9; i++){
		clArray[i] = new Array(9);
		for( j=0;j<9;j++){
			tmcl=document.getElementById("c"+i.toString()+j.toString());
            var cl_val=tmcl.innerHTML.toString().substr(0, 1);
               if(cl_val!="1"&&cl_val!="2"&&
                    cl_val!="3"&&cl_val!="4"&&
                    cl_val!="5"&&cl_val!="6"&&
                    cl_val!="7"&&cl_val!="8"&&
                    cl_val!="9")
                    clArray[i][j] = 0; else clArray[i][j]= parseInt(cl_val);
           }	
		}
		var _mTable = document.getElementById("mTable");
		 if (document.addEventListener)
        {
            _mTable.addEventListener("onselectstart",rfalse,false);
        }
         
        else
        {
            _mTable.attachEvent('onselectstart', rfalse);
        }
}

function viewSubTab(isgame, cell){
    if(iv==0){
        clTab();
        iv=1;
    }
    tmcell=cell;
    var isKeyb = document.getElementById("keyb").checked;
    if(isgame==0){
        isGame=false;
        if(!isKeyb) {addTabVar(cell);}
        else{addEditVar(cell)}
    }else{
        isGame=true;

		//----2	
		
		 var _r = parseInt(cell.substring(1,2));
		 var _c = parseInt(cell.substring(2,3));
		 //alert(cell.substring(2,3));
		 if(clArray[_r][_c]==0){
            if(!isKeyb) {addTabVar(cell);}
            else{addEditVar(cell)}


		}
    }
}

function setCellVal(cv){
    var cl=document.getElementById(tmcell);
    if(cv!=""){
        cl.innerHTML=cv;
        iv=1;
        addImg(iv, tmcell);
    }
    else
        if(iv==0||cl.style.backgroundImage!="")
        {
            cl.innerHTML=cv;
            iv=1;
        }
}
	
function addImg(ind, cell){
    var cl=document.getElementById(cell);
    if(btnClear==null)
        btnClear = document.createElement("div");
    if(ind=="1"){
        btnClear.setAttribute('id', 'btnDelCell');
       // btnClear.setAttribute('onClick',al);

        tmcell=cell;
        
        if (document.addEventListener)
        {
            btnClear.addEventListener("mousedown",al,false);
        }
         
        else
        {
            btnClear.attachEvent("onmousedown",al);
        }

        cl.appendChild(btnClear);

    }

}

function al(e){
    var v=document.getElementById(tmcell);
    v.innerHTML="";
    clTab();
}

function hideSubTab(isgame, cell){
    iv=0;
    addImg(0, cell);
    //clTab();
}

function clTab(){
    var isKeyb = document.getElementById("keyb").checked;
    var cl_class=0;
    for(i=0;i<9;i++)
        for(j=0;j<9;j++){
            cl_class=0;
            tmcl=document.getElementById("c"+i.toString()+j.toString());
            var cl_val=tmcl.innerHTML.toString().substr(0, 1);
            if(!isKeyb){
                cl_class=tmcl.innerHTML.toString().indexOf(".");
                if(cl_val!="1"&&cl_val!="2"&&
                    cl_val!="3"&&cl_val!="4"&&
                    cl_val!="5"&&cl_val!="6"&&
                    cl_val!="7"&&cl_val!="8"&&
                    cl_val!="9"&&cl_class==-1)
                    tmcl.innerHTML="";
            }else{
               if(cl_val!="1"&&cl_val!="2"&&
                    cl_val!="3"&&cl_val!="4"&&
                    cl_val!="5"&&cl_val!="6"&&
                    cl_val!="7"&&cl_val!="8"&&
                    cl_val!="9")
                    tmcl.innerHTML="";
           }
   }
}

function mainClear(){
    for(i=0;i<9;i++)
        for(j=0;j<9;j++){
            tmcl=document.getElementById("c"+i.toString()+j.toString());
            var cl_val=tmcl.innerHTML.toString().substr(0, 1);
            if(cl_val!="1"&&cl_val!="2"&&
                    cl_val!="3"&&cl_val!="4"&&
                    cl_val!="5"&&cl_val!="6"&&
                    cl_val!="7"&&cl_val!="8"&&
                    cl_val!="9")
                    tmcl.innerHTML="";
           }
}

function run(val){
    mainClear();
    document.sgame.userVal.value = "";
    document.sgame.lev.value = val;
    sval="";
    document.sgame.keyb.checked = false;
    if(val=="S"){
        //alert(val);
        for(i=0;i<9;i++)
            for(j=0;j<9;j++){
                cl=document.getElementById("c"+i.toString()+j.toString());
                if(cl.innerHTML== "") iVal=0
                else
                    iVal = parseInt(cl.innerHTML.toString().substr(0, 1));
                    sval=sval+iVal.toString();
                }
        document.sgame.userVal.value= sval;
    }
    document.sgame.submit();
//    document.sgame.userVal.value = "";
//    sval="";
//    for(i=0;i<9;i++)
//        for(j=0;j<9;j++){
//            cl=document.getElementById("c"+i.toString()+j.toString());
//            if(cl.innerHTML== "") iVal=0
//            else
//                iVal = parseInt(cl.innerHTML.toString().substr(0, 1));
//                sval=sval+iVal.toString();
//            }
//
//    document.sgame.userVal.value= sval;
	//initAllData() ;
	if(viewer!=null){
		var d = new Date();
		document.forms.sgame.DName.value=viewer.getDisplayName();
		document.forms.sgame.usId.value=viewer.getField(opensocial.Person.Field.ID);
		document.forms.sgame.gDate.value=d.getFullYear().toString()+"-"+d.getMonth().toString()+"-"+d.getDate().toString();
	}
}


function check(){
    var sum=0;
	var sumY=0;
    var lab="Не решено...";
    for(i=0;i<9;i++)
        for(j=0;j<9;j++){
            cl=document.getElementById("c"+i.toString()+j.toString());
            if(cl.innerHTML== "") iVal=0
            else
                iVal = parseInt(cl.innerHTML);
            sum=sum+iVal;
			cl=document.getElementById("c"+j.toString()+i.toString());
            if(cl.innerHTML== "") iVal=0
            else
                iVal = parseInt(cl.innerHTML);
			sumY = sumY + iVal;	
        }
    if(sum==405&&sumY==405) {
		viewRes=true;
		lab = "Решено!";
                //alert(lab);
		document.getElementById('checkInfo').innerHTML=lab;
		if(document.forms.sgame["DName"].value!="" && document.forms.sgame["usId"].value!=""){
			document.forms.sgame["isSolv"].value="yes";
			
			document.sgame.submit();
			document.forms.sgame["DName"].value="";
			document.forms.sgame["usId"].value="";
			document.forms.sgame["gDate"].value="";
		}
	}
	document.getElementById('checkInfo').innerHTML=lab;
	
}

function asimmetric(){
    if(document.sgame.asimm.value=="0"||document.sgame.asimm.value=="") {
        document.sgame.asimm.value = "1";

    }
    else{
        document.sgame.asimm.value = "0";
    }
}

function setValue(cell){
    var cl=document.getElementById(cell);
    if(cl.innerHTML== "")
        cl.innerHTML="1";
    else {
        var iVal = parseInt(cl.innerHTML);
        if(iVal==9) {iVal=0;cl.innerHTML=""}
            else{
                iVal++;
                cl.innerHTML=iVal.toString();
            }
    }
}
function setUserValue(cell){
    var cl=document.getElementById(cell);
    if(cl.innerHTML== ""){
        cl.innerHTML="1";
        iVal=1;
    }
    else {
        var iVal = parseInt(cl.innerHTML);
        if(iVal==9) {iVal=0;cl.innerHTML=""}
            else{
                iVal++;
                cl.innerHTML=iVal.toString();
            }
    }
    v="cl"+cell.substring(1,3);
    document.forms.sgame["cl"+cell.substring(1,3)].value=iVal.toString();
}
function startGameTimer(){
	if (milisec>=9){
		milisec=0;
		seconds+=1;
	}
	else
	if (seconds>=60){
		milisec=0;
		minutes+=1;
		seconds=0;
	}
	else
	milisec+=1
	t=document.getElementById("Gtimer");
	if(minutes<10) {minu = "0"+minutes;} else minu=minutes;
	if(seconds<10) {seco = "0"+seconds;} else seco = seconds; 
	t.innerHTML=minu+"."+seco+"."+milisec;
	setTimeout("startGameTimer()",100)
}

function printSudoku(){
    win=window.open("","Print","width=550,height=550,location=0,menubar=1");
    win.document.write("<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>");
    win.document.write("<html xmlns='http://www.w3.org/1999/xhtml'>");
    win.document.write("<head>");
    win.document.write("<link href='prntab.css' rel='stylesheet' type='text/css'  media='all'/>");
    win.document.write("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />");
    win.document.write("</head>");
    win.document.write("<body>");
    win.document.write("<div id='prnForm' align='center'>Распечатано с сайта SudokuWeb.RU");
    win.document.write("<table border='1' align='center' onselectstart='return false' style='-moz-user-select: none'>");
    win.document.write("<tbody>");
    for(i=0;i<9;i++){
        win.document.write("<tr>");
        for(j=0;j<9;j++){
            cl="";
            if(j==3||j==6) cl="id='leftS'";
            if(i==2||i==5) cl="id='downS'";
            if(i==2&&j==6||i==2&&j==3||i==5&&j==6||i==5&&j==3) cl="id='downleftS'";
            win.document.write("<td "+cl+">");
            cl=document.getElementById("c"+i.toString()+j.toString());
            str=cl.innerHTML;
            if(str== "1"||str== "2"||str== "3"||str== "4"||str== "5"||str== "6"||str== "7"||str== "8"||str== "9")
                win.document.write(str);
            win.document.write("</td>");
        }
        win.document.write("</tr>");
    }
    win.document.write("</tbody>");
    win.document.write("</table>");
    win.document.write("</div>");
    win.document.write("</body>");
    win.document.write("</html>");
}

function retRes(){
	var res = 0;
	var v=document.sgame.lev.value;
	if(v=="G") res=100;
	if(v=="Y") res=200;
	if(v=="R") res=350;
	return res;
}

function canViewRes(){
	
	return viewRes;
}

function loadimg(){

    var Pic = new Array();
    Pic[0] = 'img/shop/1.png'
    Pic[1] = 'img/shop/2.png'
    Pic[2] = 'img/shop/3.png'
    Pic[3] = 'img/shop/4.png'
    Pic[4] = 'img/shop/5.png'
    Pic[5] = 'img/shop/6.png'

    pSS = Pic.length

    for (i = 0; i < pSS; i++){
        preLoad[i] = new Image()
        preLoad[i].src = Pic[i]
    }
}
function runSlideShow(){

    document.images.SlideShow.src = preLoad[jSS].src
    jSS = jSS + 1
    if (jSS > (pSS-1)) jSS=0
    t = setTimeout('runSlideShow()', 2000)
}

function a4print(level){
    var asimmetr = document.getElementById("print_asimm");
    //var paramstr = "?Lev="+level;
    var prn_asimmetr = "Asm=N";
    if (asimmetr.checked) prn_asimmetr = "Asm=Y"
    //paramstr = paramstr + prn_asimmetr;
    var params = "?Lev="+level+"&"+prn_asimmetr;
    window.open("tab.jsp"+params, "Print")
}
