/*
 Скрипт взаимодействует со страничкой 
 регистрации пользователя regUs.html
 первично проверяет данные пользователя,
 отправляет запросы на правильности и 
 оригинальность введенных данных ajax-запросами
*/

//alert("OK");

//функция подключается после загрузки документа
//и назначает обработчикам событий объектов
//соответствующие функции

function ChangeMetod(){
    document.getElementById("usnikname").onblur=CheckName;
    document.getElementById("uspass").onkeyup=CheckPass;
    document.getElementById("uspass").onblur=CheckOutPass;
    document.getElementById("duspass").onblur=CheckPasses;
    document.getElementById("duspass").onkeyup=CheckPasses;
    document.getElementById("uspost").onblur=CheckEmail;
    document.getElementById("uspost").onkeyup=CheckEmailKeyUp;
    document.getElementById("main1phone").onkeyup=CheckCallKeyUp;
    document.getElementById("main2phone").onkeyup=CheckCallKeyUp;
    document.getElementById("mainfax").onkeyup=CheckCallKeyUp;
    document.getElementById("main1mobil").onkeyup=CheckCallKeyUp;
    document.getElementById("main2mobil").onkeyup=CheckCallKeyUp;
    document.getElementById("mainmail").onkeyup=CheckEmailKeyUp;
    document.getElementById("uscontrol").onkeyup=CheckControlKeyUp;
    
}

//alert(document.getElementsByTagName("BODY")[0]);

//процедура проверки имени пользователя
function CheckName(){
    //если поле было выбрано, но данные
    //в него внесены не были выходим без анализа
    if(this.value.length==0){
      comment="Поле не заполнено.";
        
      Correct(this,comment,"gray");
      return; 
      
    }
    
    newNick=this.value;
    if(newNick.length<4){
    /*
        prevComm="  Слишком которкий ник, пожалуйста,";
        seckCom=" добавте несколько символов.";
        comment=document.createElement("B");
        comment1=document.createTextNode(prevComm);
        comment2=document.createElement("BR");
        comment3=document.createTextNode(seckCom);
        //comment=appendChild(comment1);
        comment.appendChild(comment1);
        comment.appendChild(comment2);
        comment.appendChild(comment3);
     */   
       comment="слишком короткий Ник.";
        
      Correct(this,comment,"red");
      this.onkeyup=CheckName;
      return;  
    }
    
    CheckServerSide(this.id,this.value);
    
}

//проверка корректности длинны пароля
function CheckPass(){
    //если поле было выбрано, но данные
    //в него внесены не были выходим без анализа
    if(this.value.length==0){
      comment="Поле не заполнено.";
        
      Correct(this,comment,"gray");
      return; 
      
    }
    
    if(this.value.length<5){
        var comment="Слишком маленькая длинна пароля ";
        Correct(this,comment,"red");
    }else{
      if(this.value.length<8){
        var comment=" Рекомендуется увеличить длину.";
        Correct(this,comment,"yellow");
      }else{
        var comment="Надежный пароль.";
         Correct(this,comment,"green");  
      }
    
    }
}

//действия после переведения фокуса с 
//поля пароля (основного поля пароля)
function CheckOutPass(){
    //если поле было выбрано, но данные
    //в него внесены не были выходим без анализа
    if(this.value.length==0){
      comment="Поле не заполнено.";
        
      Correct(this,comment,"gray");
      return; 
      
    }
    if(this.value.length>=5){
        var comment="Пароль принят.";
        Correct(this,comment,"green"); 
    }else{
        var comment="Пароль не принят. Увеличьте длинну.";
        Correct(this,comment,"red");
    }

}

//сравнение введенных паролей
function CheckPasses(){
    //если поле было выбрано, но данные
    //в него внесены не были выходим без анализа
    if(this.value.length==0){
      comment="Поле не заполнено.";
        
      Correct(this,comment,"gray");
      return; 
      
    }
     var OnePass=document.getElementById("uspass").value;
     var SecPass=document.getElementById("duspass").value;
     //alert(OnePass);
     if(SecPass.length<OnePass.length){
          var comment="Длинна недостаточна - продолжите ввод.";
          Correct(this,comment,"red");
          return;
     }
     if(OnePass!=SecPass){
        var comment="Пароль не совпадает, повторите ввод";
        Correct(this,comment,"red");
     }else{
        
        var comment="Пароль введен верно.";
        Correct(this,comment,"green");
     }

}

//проверка правильности введения и наличия
//совпадений эл. адреса
function CheckEmail(){
    //если поле было выбрано, но данные
    //в него внесены не были выходим без анализа
    if(this.value.length==0){
      comment="Поле не заполнено.";
        
      Correct(this,comment,"gray");
      return; 
      
    }
    //проверка на кор. введения на стороне сервера
    CheckServerSide(this.id,this.value);
    
}

//проверка корректности ввода эл.адреса в процессе ввода
function CheckEmailKeyUp(){
        addrUs2="";
            //obj.style.background="#fff";
        var obj=document.getElementById(this.id);
        var str=obj.value;
        
        if((str.match(/[а-яА-Я]/))){
            obj.style.background="#f99";
            return;
        }else{
            obj.style.background="#ddd";
        }
        if(str.length>9){
             var reg=/.{3,}@\D{2,}\.\D{2,3}\b/;
             if(str.match(reg)){
                //obj.style.background="#9f9";
             }
        
        }
     
    }
    
//проверка корректности введения тел.номеров
//в процессе ввода
function CheckCallKeyUp(){
        
        
        var str=this.value;
       //если поле было выбрано, но данные
    //в него внесены не были выходим без анализа
    if(this.value.length==0){
      comment="только цифры";
        
      Correct(this,comment,"gray");
      return; 
      
    } 
        
       if((str.match(/^[0-9]{1,}$/))){
            //alert(str.match(/[0-9]{1,}$/))
            var comment="верный ввод";
            Correct(this,comment,"green");
            return;
        }else{
            var comment="только цифры";
            Correct(this,comment,"red");
            return;
            
        }

}

 //проверка корректности ввода контрольного числа
function CheckControlKeyUp(){
    //если поле было выбрано, но данные
    //в него внесены не были выходим без анализа
    if(this.value.length==0){
      comment="Поле не заполнено.";
        
      Correct(this,comment,"gray");
      return; 
      
    }
    if(this.value.length==4){
        var inteG=this.value;
        
        CheckServerSide(this.id,inteG)
      
    }
    
}

//в конце каждой процедуры ввода проверяем - все ли
//поля заполнены, если да то разблокируем кнопку регистрации
function CheckAllFields(){
   var checkFields=new Array(
                  "usnikname",
                  "uspass",
                  "duspass",          
                  "uspost",
                  "uscontrol"          
                            );
   //перебираем все элементы проверяя
   //цвет их поля 
   for(var i=0; checkFields.length>i;i++){
            var ids=checkFields[i]
          var checkField=document.getElementById(ids);
          /**/ 
          if(checkField.style.backgroundColor!="rgb(187, 255, 187)" &&
                checkField.style.backgroundColor!="green" &&
                        checkField.style.backgroundColor!="#bfb" &&
                            checkField.style.backgroundColor!="#bbffbb" &&
                             checkField.disabled!=true){
   //alert(checkField.style.backgroundColor+" elem "+checkField.id );
            var buttons=document.getElementById("goreg");
            buttons.disabled=true;
            return;
           return;
          } 
   }
   //alert("OK");
   var buttons=document.getElementById("goreg");
   buttons.disabled=false;
   return;

}
 
//функция преобразует цвета комментария  .length+" = "+
//и поля, текст комментария в соответ-
//ствии с полученными установками
function Correct(idElem,comment,clr){
    //если цветом передан красный
    //значит это предупреждение
    //о некорректности введенных данных
        /* */
        if(clr=="red"){
            var clrComm="white";
            var clrField="#fbb";
        }
        
        if(clr=="green"){
            var clrComm="#ccc";
            var clrField="#bfb";
            
        } 
        
        if(clr=="yellow"){
            var clrComm="black";
            var clrField="#ff9";
        }
        
        if(clr=="gray"){
            var clrComm="#ddd";
            var clrField="#ccc";
        }
     //изменяем цвета и содержимое комментария
     
        //получаем его имя комбинируя расширение
        //и полученый ид элемента      
        var commUs=document.getElementById(idElem.id+"com");
        //меняем цвет текста
        commUs.style.color=clrComm;
        //меняем цвет фона
        commUs.style.background=clr;
        //меняем цвет фона текстового поля
        idElem.style.background=clrField;
        //удаляем строки прежнего комментария
        for(i=0;commUs.childNodes.length>0;i++){
            clearCh=commUs.firstChild;
            commUs.removeChild(clearCh);
        }
        //формируем и добавляем новый комментарий
        var commentary=document.createTextNode(comment);
        commUs.appendChild(commentary);
        CheckAllFields();

}   

//запрос к скрипту regUs.php на корректность
//введеных данных применяется:
//к логину
//почте
//хешкоду    
function CheckServerSide(id,value){
    var sid=id;

    var requestServ=ajax_CreateRequest();
    requestServ.open("POST","regUs.php",true);
    requestServ.onreadystatechange=Result_AnswerSrv;
    requestServ.setRequestHeader("Content-Type",
                    "application/x-www-form-urlencoded");
    requestServ.send(sid+"="+value);
    
    function Result_AnswerSrv(){
    
        var vidCur=document.getElementsByTagName('BODY')[0];
        var vidColeco=document.getElementById(sid+"Cls");
        vidColeco.style.visibility="visible";
        vidCur.style.cursor="wait";
        
        
            if(requestServ.readyState==4){
 
                if(requestServ.status==200){
                   vidColeco.style.visibility="hidden";
                   vidCur.style.cursor="default";
                 /*   var resumeServ=requestServ.responseText; 
                   alert(resumeServ);*/
                 
                    var resumeServ=eval('('+requestServ.responseText+')');
                    var clr=resumeServ.answerSrv[0].keyss;
                    var mssg=resumeServ.answerSrv[0].answ;
                    var id=resumeServ.answerSrv[0].id;
                    var obk=document.getElementById(id);
                    if(resumeServ.answerSrv[0].idEl.length>0){
                        var newPicture=resumeServ.answerSrv[0].idEl;
                        document.getElementById(id+"picte").src=newPicture;
                        document.getElementById(id).value="";
                    }
                    
                    Correct(obk,mssg,clr)
                       
                    
                }
            }
    }


}    

