/**
 *
 * Created by ALavrys 2008
 *
 *
 */

// Вызывается на событие onSubmit.
function validateForm(nameCurrentForm)
{
   var vInput = document.forms[nameCurrentForm].getElementsByTagName("input");
   var valid = "true";
   var errorFlag = 0 ;

   for (var vCount = 0; vCount < vInput.length; vCount ++ )
   {
      var sInput = vInput[vCount].id;

      valid = validateIt(vInput[vCount], nameCurrentForm);

      if (valid == false)
      {
         errorFlag ++ ;
      }

   }

   if(errorFlag > 0)
   {
      return false;
   }
   else
   {
      return true;
   }

}

//  ---------------------------------------

function getForm(nameCurrentForm)
{

   //var vButton = document.forms[nameCurrentForm].getElementById("submit");

   if (document.getElementsByTagName)
   {
      var vInput = document.forms[nameCurrentForm].getElementsByTagName("input");
      var vTextarea = document.forms[nameCurrentForm].getElementsByTagName("textarea");
      for (var vCount = 0; vCount < vInput.length;
      vCount ++ )
      vInput[vCount].onblur = function()
      {
         return validateIt(this, nameCurrentForm);

      }

      for (var vCount = 0; vCount < vTextarea.length; vCount ++ )
      vTextarea[vCount].onblur = function()
      {
         return validateIt(this, nameCurrentForm);

      }
   }
}

//  ---------------------------------------

// Устанавливает правильность заполнения поля формы (устанавливает зеленой или красной статус - изображение).

function setStatus(vId, statusEl, nameCurrentForm){
   var sInput = document.getElementById(vId);
   var sInputErr = document.getElementById('err' + vId);

   if(statusEl == false){
      sInput.style.color = "#ff0000";
      sInputErr.style.visibility = 'visible';
        //document[vId].src = "tpl/avialine/images/error.png";      
     
   }   else if(statusEl == true){
      sInput.style.color = "#000000";
      sInputErr.style.visibility = 'hidden';      
        //document[vId].src = "tpl/avialine/images/blank.gif";        

   }   else {
      sInput.style.color = "#ff0000";
      sInputErr.style.visibility = 'visible';      
        //document[vId].src = "tpl/avialine/images/error.png";      
         
   }

}

//  ---------------------------------------

//  Функция правильности заполнения поля формы
function validateIt(vInput, nameCurrentForm)
{

   var triger = "false";
   // Each input field's id
   validId = vInput.id;
   validValue = vInput.value;

   getValue = vInput.className;
   if(getValue.indexOf(" ") == - 1 )
   {
      validName = getValue;
      vRequired = "";
      triger = "true";
   }
   else
   {
      vRules = vInput.className.split(" ");
      vRequired = vRules[0];
      validName = vRules[1];
      if(vRequired == "required")
      {
         triger = switchCaseSet(validName, validValue, vRequired);
         setStatus(validName, triger, nameCurrentForm);

      } else if(vRequired == "optional" && validValue == '' ){
        triger = 'none';
        setStatus(validName, triger, nameCurrentForm);        
        
      } else{
         triger = switchCaseSet(validName, validValue, vRequired);
         setStatus(validName, triger, nameCurrentForm);
               
      }
   }


   return triger;
}

//  ---------------------------------------

// Возвращает true или false после проверки правильности заполнения поля формы.

function switchCaseSet(validName, validValue, required)
{
   /*if(required == "required")
   {*/
      switch (validName){
      
        case 'login' :
            return validateLogin(validValue);
        case 'fio' :
            return validateFIO(validValue);
        case 'email' :
            return validateEmail(validValue);
        case 'email2' :
            return validateEmail(validValue);            
        case 'phone' :
            //return validatePhone(validValue);
            validValue.replace('+', '');
            validValue.replace(/(^\s+)|(\s+$)/g, "");  
            validValueClean = validValue.replace('+', '');      
              return ajaxValidatePhone(validValueClean);
        case 'fax' :
            return validateFax(validValue);
        case 'icq' :
            return validateICQ(validValue);
        case 'address' :
            return notEmptyField(validValue); 
        case 'name' :
            return validateName(validValue);        
        case 'company' :
            return notEmptyField(validValue);        
        case 'work_phone' :
            return validateMobile_phone(validValue);
        case 'mobile_phone' : 
            return validateMobile_phone(validValue);
        case 'city_start' : 
            return validateCity_start(validValue);  
        case 'city_dest' : 
            return validateCity_dest(validValue);
        case 'date_start' : 
            return validateDate_start(validValue);  
        case 'date_back' : 
            return validateDate_back(validValue);
        case 'quant_adult' : 
            return validateQuant_adult(validValue);
        case 'quant_kid' : 
            return validateQuant_kid(validValue);                                                      
        case 'tender_price' :                
            return validateTender_price(validValue);             
        case 'mfo' :
            return validateMFO(validValue);
        case 'edrpou' :
            return validateEDRPOU(validValue); 
        case 'nds' :
            return validateNDS(validValue); 
        case 'bankaccount' :
            return notEmptyField(validValue); 
        case 'payacc' :        
            return validatePayacc(validValue);                                                                       
        case 'pass' :
            return validatePass(validValue);
        case 'cpass' :
            return validateCPass(validValue);                        
        case 'd_ftp_login' :
            return validateQuantity3_20(validValue);
        case 'd_ftp_pass' :
            return validateQuantity3_20(validValue);
        case 'd_ip' :
            return rr_validate_ip4(validValue);
        case 'd_ns1' :
            return ajaxValidate(validName, validValue);
        case 'd_ns2' :
            return ajaxValidate(validName, validValue);
        default :
            return false;

      }
  // }
   /*else if(required == "")
   {
      return true;
   }
   else return false;
   */
}

//  ---------------------------------------

// Validation of Login
function validateLogin(validValue)
{

    var uniqueLogin = ajaxValidateLogin(validValue);
    
   if(validValue.match(/^[a-zA-Z0-9]{4,12}$/) && uniqueLogin == true) {
      document.getElementById('unique_login').innerHTML = '';         
      
      return true;
   }   else {
   
   if(uniqueLogin == false){
   document.getElementById('unique_login').innerHTML = 'логин занят';
   }    else{
        document.getElementById('unique_login').innerHTML = '';   
   }
      
      return false;
   }


}

function validateName(validValue){
	if(validValue.match(/^[a-zA-Zа-яА-Я\s\-]{1,100}$/)) {
		return true;
	} else {
		return false;
	}
}

// Validation of FIO
function validateFIO(validValue)
{
  
   if(validValue.length > 5) {
  
      return true;
      
   }   else {
      return false;
      
   }


}

// Validation of an Email Address
function validateEmail(validValue){
	if(validValue.match(/^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/)) {
		return true;
	} else {
		return false;
	}
}

function validatePhone2(validValue){
	//if(validValue.match(/^(\+\d{2})*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/)) {
	if(!validValue.match(/^\+\d{1,2}\d{3}\d{7}$/)) {	
		return false;
	} else if(!validValue.match(/^\+((350|500|240)\d{5,6} | (504|971|357|372|244|423|505|507|501|975)\d{7,8} | (220|672|675|236|268|974|509|256|680|679|297|230|670|592|965|267)\d{6,8} | (95|291|226|691|371|228|355|251|961|598|263|692|260|673|239|593)\d{7} | (233|968)\d{5,8} | (376|599|676|229|245)\d{6,7} | (690)\d{4,5} | (39|46)\d{8,11} | (43)\d{4,13} | (850|82)\d{4,10} | (359|53)\d{5,9} | (44|57|261|420|351|1|34)\d{8,12} | (964|65|886|216|880|94)\d{7,9} | (235|597)\d{6} | (55|62)\d{9,10} | (63|30)\d{9,11} | (247)\d{3,4} | (27|998|31|81|973|992|249|594|996|33|595|61|92|375|380|40|381|421)\d{9} | (241|224|253|681|299|687|269|257|248)\d{5,7} | (32|386|298|872|20|231|243|853|374|684|689|389|674|966|590|856|970|596|223|993|234|385|212|352|238|873|47|976|855|852|227|977|264|246|377|871|232|225|266|995|508|290|221|64|258|56|66|237|503|370|967|506|222|252|870|250|960|373|387|962|354|36|213|51|356|591|874|265|242)\d{8} | (86)\d{2,3} | (683)\d{4} | (48|254)\d{6,9} | (353)\d{7,10} | (358|84|994|93|60|218|502|963|41|45|972)\d{8,9} | (49)\d{10,11} | (677|686|685|688|678)\d{4,6} | (90|58|262|98|7|255|91|52|54)\d{10} | (378)\d{10,12} | (682)\d{5})$/)) {

		return false;
	}
	return true;
}

function validateTender_price(){
	if(validValue.match(/^\d{1,}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateCity_start(validValue){
	if(validValue.match(/^.{1,}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateCity_dest(validValue){
	if(validValue.match(/^.{1,}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateDate_start(validValue){
	if(validValue.match(/^\d{4}[\-]{1}\d{2}[\-]{1}\d{2}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateDate_back(validValue){
	if(validValue.match(/^\d{4}[\-]{1}\d{2}[\-]{1}\d{2}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateQuant_adult(){
	if(validValue.match(/^\d{1,}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateQuant_kid(){
	if(validValue.match(/^\d{1,}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateFax(validValue){
	//if(validValue.match(/^(\+\d{2})*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/)) {
	if(validValue.match(/^\+\d{1,2}\d{3}\d{7}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateWork_phone(validValue){
	//if(validValue.match(/^(\+\d{2})*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/)) {
	if(validValue.match(/^\+\d{1,2}\d{3}\d{7}$/)) {	
		return true;
	} else {
		return false;
	}
}

function validateMobile_phone(validValue){
	//if(validValue.match(/^(\+\d{2})*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/)) {
	if(validValue.match(/^\+\d{1,2}\d{3}\d{7}$/)) {	
		return true;
	} else {
		return false;
	}
}



function validateICQ(validValue){
	if(validValue.match(/^[\d]{6,9}$/)) {
		return true;
	} else {
		return false;
	}
}

function validateMFO(){
	if(validValue.match(/^[\d]{6}$/)) {
		return true;
	} else {
		return false;
	}
}

function validateEDRPOU(){
	if(validValue.match(/^[\d]{12}$/)) {
		return true;
	} else {
		return false;
	}
}

function validateNDS(){
	if(validValue.match(/^[\d]{9}$/)) {
		return true;
	} else {
		return false;
	}
}

// Validation of an pass
function validatePass(validValue){
	if(validValue.match(/^[a-zA-Z0-9]{6,100}$/)) {
		return true;
	} else {
		return false;
	}
}

// Validation of an pass
function validateCPass(validValue){
    var pass = document.getElementById('pass').value;

	if(validValue.match(/^[a-zA-Z0-9]{4,12}$/) && validValue == pass) {
		return true;
	} else {
		return false;
	}
}


function notEmptyField(validValue)
{
   if(validValue.length > 0)
   {
      return true;
   }
   else
   {
      return false;
   }
}

function notEmptyField2(validValue)
{
   if(validValue.length == 1)
   {
      return true;
   }
   else
   {
      return false;
   }
}

function validatePayacc(validValue){
    var paySystNum = document.getElementById('paysystem').value;
    
    switch(paySystNum){
        case '1':
            return validateYaMoney(validValue);    
        case '7':
            return  validateWMZ(validValue);
        case '8':
            return validateWMR(validValue);
        case '9':
            return validateWME(validValue);
        case '10':
            return validateEGold(validValue);
        case '11':
            return validateMMail(validValue);                                     
            default :
            return false;
    }
}

function validateYaMoney(validValue){
	if(validValue.match(/^(4100){1}[\d]{4,10}$/)) {
		return true;
	} else {
		return false;
	}
}

function validateWMZ(validValue){
	if(validValue.match(/^Z{1}[\d]{12}$/)) {
		return true;
	} else {
		return false;
	}
}

function validateWMR(validValue){
	if(validValue.match(/^R{1}[\d]{12}$/)) {
		return true;
	} else {
		return false;
	}
}

function validateWME(validValue){
	if(validValue.match(/^E{1}[\d]{12}$/)) {
		return true;
	} else {
		return false;
	}
}

function validateEGold(validValue){

   if(validValue.length >= 3){
      return true;
      
   }    else{
      return false;
      
   }
}

function validateMMail(validValue){

   if(validValue.length >= 3){
      return true;
      
   }    else{
      return false;
      
   }

}
 
function validateQuantity3_20(validValue)
{
   if(validValue.length >= 3 && validValue.length <= 20)
   {
      return true;
   }
   else
   {
      return false;
   }
}

//  ---------------------------------------


 // Проверка правильности заполнения поля IP.

function rr_validate_ip4(ip)
{
   var error_count = 0;

   quad = ip.split(".");
   if (quad.length != 4)
   {
      error_count ++ ;
   }
   for (n = 0; n < 4; n ++ )
   {
      q = quad[n];
      if ( ((isNaN(q)) || (parseInt(q) < 0)) || ((isNaN(q)) || (parseInt(q) > 255)) )
      {
         error_count ++ ;
      }
   }

   if(error_count > 0)
   {
      return false;
   }
   else
   {
      return true;
   }
}

//  **************   AJAX   ***************

function getAjaxResult(validName, validValue)
{

   if(xmlHttp.readyState == 4)
   {
      if(xmlHttp.status == 200)
      {
         xmlResponse = xmlHttp.responseText;
         // alert (xmlResponse);

         if(xmlResponse == 'true')
         {

            ajaxResp = true;
            haveDone = true;
            return ajaxResp;
         }
         else
         {

            ajaxResp = false;
            haveDone = true;
            return ajaxResp;
         }
      }
      setTimeout('ajaxValidate(validName, validValue)', 500);
   }
   haveDone = true;
   return ajaxResp;

}

function getAjaxResultLogin(validValue)
{

   if(xmlHttp.readyState == 4)
   {
      if(xmlHttp.status == 200)
      {
         xmlResponse = xmlHttp.responseText;
         // alert (xmlResponse);

         if(xmlResponse == 'true')
         {

            ajaxResp = true;
            haveDone = true;
            return ajaxResp;
         }
         else
         {

            ajaxResp = false;
            haveDone = true;
            return ajaxResp;
         }
      }
      setTimeout('ajaxValidateLogin(validValue)', 500);
   }
   haveDone = true;
   return ajaxResp;

}

function getAjaxResultPhone(validValue)
{

   if(xmlHttp.readyState == 4)
   {
      if(xmlHttp.status == 200)
      {
         xmlResponse = xmlHttp.responseText;
         // alert (xmlResponse);

         if(xmlResponse == 'true')
         {

            ajaxResp = true;
            haveDone = true;
            return ajaxResp;
         }
         else
         {

            ajaxResp = false;
            haveDone = true;
            return ajaxResp;
         }
      }
      setTimeout('ajaxValidatePhone(validValue)', 500);
   }
   haveDone = true;
   return ajaxResp;

}

//  ---------------------------------------


function ajaxValidate(validName, validValue)
{

   if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
   {
      ajaxResp = false;
      id_ = "d_ns=" + validName;
      d_ns_ = "&d_nsvalue=" + validValue;
      url = "includes/form_validation/validation.php?" + id_ + d_ns_ ;
      xmlHttp.open("GET", url, false);
      xmlHttp.onreadystatechange = function()
      {
         getAjaxResult(validName, validValue);
      };
      xmlHttp.send(null);

      if(xmlHttp.responseText == 'true')
      {
         return true;
      }
      else
      {
         return false;
      }


   }
   else
   {
      setTimeout('ajaxValidate(validName, validValue)', 500);

   }




}

function ajaxValidateLogin(login)
{

   if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
   {
      ajaxResp = false;
      id_ = "login=" + login;
      url = "includes/form_validation/login_validation.php?" + id_ ;
      xmlHttp.open("GET", url, false);
      xmlHttp.onreadystatechange = function()
      {
         getAjaxResultLogin(validName, validValue);
      };
      xmlHttp.send(null);

      if(xmlHttp.responseText == 'true')
      {
         return true;
      }
      else
      {
         return false;
      }


   }
   else
   {
      setTimeout('ajaxValidateLogin(login)', 500);

   }
}
   
function ajaxValidatePhone(phone){

   if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
   {
      ajaxResp = false;
      id_ = "phone=" + phone;
      url = "includes/form_validation/phone_validation.php?" + id_ ;
      xmlHttp.open("GET", url, false);
      xmlHttp.onreadystatechange = function()
      {
         getAjaxResultPhone(validName, validValue);
      };
      xmlHttp.send(null);

      if(xmlHttp.responseText == 'true')
      {
         return true;
      }
      else
      {
         return false;
      }


   }
   else
   {
      setTimeout('ajaxValidatePhone(phone)', 500);

   }




}






//  ---------------------------------------
