/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*/
/*            Validation             */
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*/

var validFields = Array();
var validateForm = '';

// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
  trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8;    // Ё
trans[0x451] = 0xB8;    // ё
trans[0x407] = 0xAF;    // Ї
trans[0x457] = 0xBF;    // ї
trans[0x404] = 0xAA;    // Є
trans[0x454] = 0xBA;    // є

// Сохраняем стандартную функцию escape()
var escapeOrig = window.escape;

// Переопределяем функцию escape()
window.escape = function(str)
{
//    str = String(str).replace(/&/g, "-");
    str = String(str).replace(/[\n|\r|\']/g, "");
  var ret = [];
  // Составляем массив кодов символов, попутно переводим кириллицу
  for (var i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined')
      n = trans[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return escapeOrig(String.fromCharCode.apply(null, ret));
}

function validateField(field, type, required) {
	if (field) {
		if (required==1 && field.value.length<=0) {return false;}
		switch( type ) {
	    	case 'string':
	        	if (!field.value.match (/^.*$/)) {return false;}
	        	break;
	    	case 'year':
	        	if (!field.value.match (/^((19|20)[0-9]{2})?$/)) {return false;}
	        	break;
	    	case 'int':
	        	if (!field.value.match (/^[0-9]*$/)) {return false;}
	        	break;
	    	case 'tel':
	        	if (!field.value.match (/^[-+ 0-9\)\(,]*$/)) {return false;}
	        	break;
	    	case 'number':
		        if (!field.value.match (/^[0-9\., ]*$/) ) {return false;}
		        break;
	    	case 'float':
		        if (!field.value.match (/^[0-9,]*$/) ) {return false;}
		        break;
	    	case 'floatbid':
		        if (!field.value.match (/^[0-9\.]*$/) ) {return false;}
		        break;
		case 'mail':
		        if (!field.value.match (/^([^@]+@([^@\.]+\.)+[^@\.]{2,})?$/i)) {return false;}
		        break;
		case 'login':
		        if (!field.value.match (/^[-_0-9a-zA-Z]{3,}$/)) {return false;}
		        break;
		case 'password':
		        if (!field.value.match (/^[-_0-9a-zA-Z]{4,}$/)) {return false;}
		        break;
		
		case 'select':
		        if (field.value == 0) {return false;}
		        break;
	    	default:
	        	if (!field.value.match (/^.*$/)) {return false;}
	        	break;
	    }
	}
    return true;

}
 function validation(field,type,required)
 {
    var valid = validateField(field, type, required);

//    markField(field, valid);

    // return if no changes
    if ( typeof validFields[field]!='undefined' && validFields[field][0]==valid ) {
    	return;
    }

    // add entry into array
    validFields[field.id] = Array(type, required);


    return valid;

 }

function markField(field, valid) {
	if (field) {
		if (valid) {
	        field.className = field.className.replace(/fillError/g, '');
	    } else if( field.className.indexOf('fillError')==-1 ) {
	    	field.className = field.className+' fillError';
	    }
	}
}

function disableButton () {
	var disable = false;
	var field;
	for (var iField in validFields) {
		field = document.getElementById(iField);
        valid = validateField(field, validFields[iField][0], validFields[iField][1]);
    	markField(field, valid);

    	if( !valid ) {
    		disable = true;
    	}
    }

    // locate button to disable
	var button;
    if ( document.getElementById ('submit') ) {
        button = document.getElementById ('submit');
    } else if ( document.getElementById ('SuperSubmit') ) {
        button = document.getElementById ('SuperSubmit');
    } else {
    	return false;
    }

    button.disabled = disable;

    if( !validateForm ) {
	    window.clearInterval(validateForm);
	   	validateForm = '';
	    if( disable ) {
	    	validateForm = window.setInterval("disableButton ()", 1000);
	    }
	}
}

function disableButton1 () {
	var disable = false;
	var field;
	for (var iField in validFields) {
		field = document.getElementById(iField);
        valid = validateField(field, validFields[iField][0], validFields[iField][1]);
    	markField(field, valid);

    	if( !valid ) {
    		disable = true;
    	}
    }

    // locate button to disable
	var button;
    if ( document.getElementById ('submit1') ) {
        button = document.getElementById ('submit1');
    } else {
    	return false;
    }

    button.disabled = disable;

    if( !validateForm ) {
	    window.clearInterval(validateForm);
	   	validateForm = '';
	    if( disable ) {
	    	validateForm = window.setInterval("disableButton1()", 1000);
	    }
	}
}



function textareaValid(field, maxLength) {
	if (field.value.length > maxLength) {
		if( field.className.indexOf('fillError')<0 ) {
		//	field.className += ' fillError';
		}

		// alert userabout to long text
		alert('Текст объявления не может быть больше ' + maxLength + ' символов.');

		// cut too long text
		field.value = field.value.substr(0, maxLength);
    } else {
    //	field.className = field.className.replace(/fillError/g, '');
    }
}

function textareaLimit( field, maxLength, alertText ) {
	if (field.value.length > maxLength) {
		field.value = field.value.substr(0, maxLength);
		alert( alertText );
    }
}


function RegAndAdd(login_,pwd1_,pwd2_,mail_, title_, txt_ ,region_, brand_ , cost_, model_)
{
          if (document.getElementById('SuperSubmit').disabled == true) return false;
          pnum_ = document.getElementById('pnum').value;
          if(pnum_ == '' ) pnum_ = document.Data.pnum.value;
          if (region_.value<=0)
          {
            region_.focus();
            alert("Начните с выбора региона!");
            return false;
          }
          
          if (cost_.value<=0)
          {
            cost_.focus();
            alert("Укажите пожалуйста цену товара!");
            return false;
          }


          if (brand_.value<=0 && brand_.value!=-1)
          {
            brand_.focus();
            alert("Выберите пожалуйста производителя товара!");
            return false;
          }

          if (model_.value <=0 && model_.value != -1 && model_.value != -2)
          {
            model_.focus();
            alert("Выберите пожалуйста модель!");
            return false;
          }
          if ( txt_.value.length<=20 ){
            alert( 'Текст - должен быть содержательным!!!!' );
            txt_.focus();
            return false;
          }
          if ( pwd1_.value != pwd2_.value ){
            alert("Пароли не совпадают! \nБудьте внимательнее!");
            pwd1_.focus();
            return false;
          }

          error_in = '';

          if (!validation(mail_,'',1))  error_in = mail_;
          if (!validation(pwd2_,'',1))  error_in = pwd2_;
          if (!validation(pwd1_,'',1))  error_in = pwd1_;
          if (!validation(login_,'',1)) error_in = login_;
          if (!validation(title_,'',1)) error_in = title_;

          if (error_in)
          {
            alert("Не заполнены обязательные поля! \n\nВнимательней просмотрите поля \nвыделенные цветом!");
            error_in.focus();
            return false;
          }
          txt_str = String(txt_.value).replace(/[а-я]/ig, "-");
          var link = '1&mail=' + escape (mail_.value) + '&login=' + escape (login_.value) + '&title=' + escape (title_.value) + '&txt=' + escape (txt_str)+ '&pnum=' + escape (pnum_) ;
          ajax('check', 'mes', encodeURI(link));
          return;
}


function AddMessage(title_, txt_, region_, brand_ , cost_, model_)
{        
          pnum_ = document.getElementById('pnum').value;
          if(pnum_ == '' ) pnum_ = document.Data.pnum.value;
          if (document.getElementById('SuperSubmit').disabled == true) return false;


          if (region_.value<=0)
          {
            region_.focus();
            alert("Начните с выбора региона!");
            return false;
          }

          if (cost_.value<=0)
          {
            cost_.focus();
            alert("Укажите пожалуйста цену товара!");
            return false;
          }


          if (brand_.value<=0 && brand_.value!=-1)
          {
            brand_.focus();
            alert("Выберите пожалуйста производителя товара!");
            return false;
          }

          if (model_.value <=0 && model_.value != -1 && model_.value != -2)
          {
            model_.focus();
            alert("Выберите пожалуйста модель!");
            return false;
          }


          
          if ( txt_.value.length<=20 ){
            alert( 'Текст - должен быть содержательным!!!!' );
            txt_.focus();
            return false;
          }

          error_in = '';

          if (!validation(title_,'',1)) error_in = title_;

          if (error_in)
          {
            alert("Не заполнены обязательные поля! \n\nВнимательней просмотрите поля \nвыделенные цветом!");
            error_in.focus();
            return false;
          }

          txt_str = String(txt_.value).replace(/[а-я]/ig, "-"); //.replace(/[а-я]/ig, "-");  replace(/[\n|\r|\']/g, "");

          var link = '1&title=' +  escape(title_.value) + '&txt=' + escape(txt_str) + '&pnum=' + escape (pnum_) ;
          ajax('check', 'mes', encodeURI(link));
          return;
}


function Registration(login_, pwd1_, pwd2_, mail_, check_)
{
          if (document.getElementById('SuperSubmit').disabled == true) return false;

          if ( pwd1_.value != pwd2_.value ){
            alert("Пароли не совпадают! \nБудьте внимательнее!");
            pwd1_.focus();
            return false;
          }

          error_in = '';

          if (!validation(mail_,'',1))  error_in = check_;
          if (!validation(mail_,'',1))  error_in = mail_;
          if (!validation(pwd2_,'',1))  error_in = pwd2_;
          if (!validation(pwd1_,'',1))  error_in = pwd1_;
          if (!validation(login_,'',1)) error_in = login_;

          if (error_in)
          {
            alert("Не заполнены обязательные поля! \n\nВнимательней просмотрите поля \nвыделенные цветом!");
            error_in.focus();
            return false;
          }

          var link = '1&mail=' + escape (mail_.value) + '&login=' + escape (login_.value) + '&pnum=' + escape (check_.value);
          ajax('check', 'reg', encodeURI(link));
          return;
}
