// Set RegEx Variables
var r_end      = /[a-z0-9]$/i;

var r_name     = /^[a-z \- а-я\,ёієї]*$/i;
var r_city     = /^[a-z .-]*$/i;
var r_phone    = /^\(?\d{3}\)?[ \-]?\d{3}[ \-]?\d{4}$/;
var r_phoneN   = /[() \-]/g;
var r_password = /^.{3,30}$/i;
var r_start    = /^[a-z0-9_]/i;
var r_email    = /^[a-z0-9_]+[-a-z0-9._'+]*@[-a-z0-9_']+(\.[-a-z0-9_']{1,})*\.[a-z0-9]{2,}/i;

var r_bcode      = /^[A-Z0-9\-_]*$/i;

var el;
var msg;


function v_name(input,padezh1,padezh2) { 
  if (!r_name.test(input.value)) {
    alert (padezh1+' может содержать только буквы'); 
    input.focus(); 
    return false;
  }
  if (input.value == '') {
    alert('Пожалуйста, введите '+padezh2);
    input.focus(); 
    return false;
  }
  return true;
}

function v_agree(input) {
	if (!input.checked) {
		alert ('Вы должны быть согласны с правилами участия'); 
		input.focus(); 
		return false;
	}
	return true;
}


function v_bcode(input) { 
	if (input.value.length && !r_bcode.test(input.value)) {
		alert('Бонусный код может содержать только латинские буквы и/или цифры');
		input.focus();
		return false;
	}
	return true;
}

function v_city(input, req) { 
  if ( req && (input.value == '')) {
    alert ('Необходимо указать Ваш город'); 
    input.focus(); 
    return false;
  }
  if ((input.value != '') &&(!r_city.test(input.value))) {
    alert ('Название города введено неверно'); 
    input.focus(); 
    return false;
  }
  return true;
}


function v_state(input) {
  profileForm = document.getElementById("profileForm");
  if (document.profileForm.getElementById("address.state").value == 'Unknown') {
    alert ('Пожалуйста, введите область');
    input.focus(); 
    return false;
  }
  return true;
}


function v_country(input) {
  if (input.value == 'Unknown') {
    alert ('Please select a country');
    input.focus(); 
    return false;
  }
  return true;
}



function v_phone(input, type, req) { 
  if ( req && (input.value == '')) {
    alert ('Необходимо указать' + type + ' телефон'); 
    input.focus(); 
    return false;
  }
  if ((input.value != '') &&(!r_phone.test(input.value))) {
    alert (type + ' ' + ' телефон введен неверно'); 
    input.focus(); 
    return false;
  }
  input.value = input.value.replace(r_phoneN, '');
  return true;
}

function v_email(input) {
 msg="";
  email = input.value;
    if (!r_start.test(email)) {
      msg = "Email должен начинаться с буквы или цифры"; 
    } else if (email.indexOf('@', 1) == -1) {
      msg = "Email должен содержать символ \'@\'"; 
    } else if (email.indexOf('.', email.indexOf('@', 0)) == -1) {
      msg = "Email должен содержать символ \'.\' после \'@\'"; 
    } else if (input.value.length  - email.indexOf('.', 0)  < 3 ) {
      msg = "Email должен содержать как миниум две буквы после последней точки"; 
    } else if (!r_end.test(email)) { 
      msg = "Email не может оканчиваться на \" " +email.charAt(email.length - 1 )+ " \""; 
    } else if (!r_email.test(email)){
      msg = "Пожалуйста, используйте работающий Email";
    }

/*
	var maildomen = email.substring(email.indexOf('@', 1)+1,email.length);
	if (maildomen=='rambler.ru' || maildomen=='RAMBLER.RU') {
		 msg = "К сожалению, регистрация ящиков на сервере Rambler временно недоступна";
	}
*/

  if (msg) {
    alert (msg); 
    input.select();
    input.focus(); 
    return false;
  }
  return true;
}

function v_email_msg(email) {
	 msg="";
    if (!r_start.test(email)) {
      msg = "Email должен начинаться с английской буквы или цифры"; 
    } else if (email.indexOf('@', 1) == -1) {
      msg = "Email должен содержать символ \'@\'"; 
    } else if (email.indexOf('.', email.indexOf('@', 0)) == -1) {
      msg = "Email должен содержать символ \'.\' после \'@\'"; 
    } else if (email.length  - email.indexOf('.', 0)  < 3 ) {
      msg = "Email должен содержать как миниум две буквы после последней точки"; 
    } else if (!r_end.test(email)) { 
      msg = "Email не может оканчиваться на \" " +email.charAt(email.length - 1 )+ " \""; 
    } else if (!r_email.test(email)){
      msg = "Пожалуйста, используйте работающий Email";
    }
  return msg;
}


function v_name_msg(value,fieldname) { 
	msg = '';
	if (!r_name.test(value)) {
		msg = fieldname+' может содержать только буквы';
	}
	if (value == '') {
		msg = 'Пожалуйста, введите '+fieldname;
	}
	return msg;
}



function v_email2(input) {
 msg="";
  email = input.value;
    if (!r_start.test(email)) {
      msg = "Email должен начинаться с буквы или цифры"; 
    } else if (email.indexOf('@', 1) == -1) {
      msg = "Email должен содержать символ \'@\'"; 
    } else if (email.indexOf('.', email.indexOf('@', 0)) == -1) {
      msg = "Email должен содержать символ \'.\' после \'@\'"; 
    } else if (input.value.length  - email.indexOf('.', 0)  < 3 ) {
      msg = "Email должен содержать как миниум две буквы после последней точки"; 
    } else if (!r_end.test(email)) { 
      msg = "Email не может оканчиваться на \" " +email.charAt(email.length - 1 )+ " \""; 
    } else if (!r_email.test(email)){
      msg = "Пожалуйста, используйте работающий Email";
    }


  if (msg) {
    alert (msg); 
    input.select();
    input.focus(); 
    return false;
  }
  return true;
}


function v_password(input) {
msg="";
  if (!r_password.test(input.value)) {
    msg='Пароль должен содержать как миниум 3 символа';
  } else if (input.value == '') {
    msg = 'Пожалуйста, введите пароль';
  }
  if (msg) {
    alert (msg); 
    input.select();
    input.focus(); 
    return false;
  }
  return true;
}


function v_address(input) {
msg="";
normInput = input.value.toLowerCase()
	if (input.value == '') {
    msg = 'Пожалуйста, введите свой адрес';
  } 
  if (msg) {
    alert (msg); 
    input.select();
    input.focus(); 
    return false;
  }
  return true;
}

function v_passmatch() {
  msg="";
 input = el.password1;
  if (el.password1.value != el.password2.value) {
    msg='Пароли не совпадают'; 
  }
  if (msg) {
    alert (msg); 
    input.select();
    input.focus(); 
    return false;
  }
  return true;
}

function enhancedgender(input) {
  if (input.selectedIndex == 0) {
    alert('Пожалуйста, укажите ваш пол');
    input.focus();
    return false;
  }
  return true;
}


function v_region(input) {
  if (input.options[input.selectedIndex].value == '') {
    alert('Пожалуйста, укажите ваш регион');
    input.focus();
    return false;
  }
  return true;
}

function checkage(inputMonth,inputDate,inputYear) {
 // Get our values and cast as integers
 var month = parseInt(inputMonth.value, 10);
 var date = parseInt(inputDate.value, 10);
 var year = parseInt(inputYear.value, 10);

 // Convert our month to zero-based index for javascript 
 // b/c EMP expects vals 1-12 from the reg form and js works w/ 0-11
 month = (month - 1);

 // Make sure we have some values
 if( isNaN(month) || isNaN(date) || isNaN(year) ){
   alert("Пожалуйста, укажите полностью дату Вашего рождения.")
	if (isNaN(year)) {
		inputYear.focus();
	}
	if (isNaN(month)) {
		inputMonth.focus();
	}
	if (isNaN(date)) {
		inputDate.focus();
	}
   return false;
 }

 // Now see if we have a valid date
 if(!IsValidDate(month,date,year) ){
	inputDate.focus();
   return false;
 }

 // See if the user is eighteen years old or not
 if( GetAge(month, date, year) < 13 ) {
   alert("Просим прощения, но Вам должно быть больше 13 лет, чтобы стать участником программы.")
   return false;
 }

 return true;
}

function v_zipcode(input) {
  if (input.value == '') {
    alert ('Пожалуйста, введите Ваш почтовый индекс');
    input.focus(); 
    return false;
  }
  return true;
}

function enhancedzip(input) {
  if (!input.value) {
    alert('Пожалуйста, введите Ваш почтовый индекс');
    input.focus();
    return false;
  }
  if (input.value.length < 5) {
    alert('Почтовый индекс должен содержать как миниум 5 цифр');
    input.focus();
    return false;
  }
  return true;

}

function v_vuser(){
  if(el.vuser != null && el.vuserName != null){
    if(!customValidation()) return false;
  }
  return true;
}
//**********************************************************
function profileValidation(myForm) {
  if (!v_name(myForm.firstName, 'Имя', 'Имя')) return false;
  if (!v_name(myForm.lastName, 'Фамилию', 'Фамилия')) return false;
  if (!enhancedgender(myForm.gender)) return false;
  if (!v_phone(myForm.homePhone, 'Домашний', false)) return false;
  if (!v_phone(myForm.altPhone, 'Альтернативный', false)) return false;
  
  if (!v_city(myForm["address.city"], false)) return false;
//  if (!checkage(myForm.birthDateMonth,myForm.birthDateDay,myForm.birthDateYear)) return false;
  if (!enhancedzip(myForm["address.postalCode"])) return false;
return true;
}

function TrackSubmit() {
//document.getElementById("submitTracker").src = 'https://www.mypoints.com/emp/u/a.do?cell=PDKs5dadc33PT_xZkA9s';
// alert ("src changed - click tracked:" + document.getElementById('submitTracker').src );
}

function SetACookie(cookieName,cookieValue,nDays) {
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
}


function submitProfile() {
proForm = document.getElementById("profileForm");
// alert ("img should have loaded - submitting");
proForm.submit();
}


function profileValidator() {
    var agt=navigator.userAgent.toLowerCase();
	if ((agt.indexOf("msie") != -1)) {
	//alert ("IE");
	profileFormer = document.forms("profileForm");
	} else {
	profileFormer = document.getElementById("profileForm");
	}
	if (!v_name(profileFormer.firstName,'Имя','Имя')) return false;
	if (!v_name(profileFormer.lastName,'Фамилия','Фамилию'))  return false;
	if (!v_city(profileFormer["address.city"], true)) return false;
	if (!enhancedgender(profileFormer.gender)) return false;
	if (!enhancedzip(profileFormer["address.postalCode"])) return false;
	if (!v_phone(profileFormer.homePhone, 'Домашний', true)) return false;
	if (!v_phone(profileFormer.altPhone, 'Альтернативный', false)) return false;
	if (!v_address(profileFormer["address.street1"], true)) return false;
//  if (!v_address(profileFormer["address.street2"], false)) return false;
//  if (!checkage(profileFormer.birthYear)) return false;
//  if (!v_state(profileInfo)) return false;
//  if (!v_country(profileFormer["address.country"])) return false;
//	v_state();
	SetACookie("BTS_edit","Somevalue","60");
	submitProfile();
//	return true;
}



function enhancedgender3(input1,input2) {
  if (!input1.checked && !input2.checked) {
    alert('Пожалуйста, укажите ваш пол');
    return false;
  }
  return true;
}

function signupValidator() {
	el = document.signupform;
	if (el.startsertid) {
		var sertselected = false;
		for (var i = 0;i<el.startsertid.length;i++) {
			if (el.startsertid[i].checked) {
				sertselected = true;
			}
		}
		if (!sertselected) {
			alert('Выберите свой первый подарок');
			return false;
		}
	}
  if (!v_name(el.fname,'Имя','Имя')) return false;
  if (!v_name(el.lname,'Фамилия', 'Фамилию'))  return false;
  if (!v_email(el.email)) return false;
  if (!checkage(el.birthDateMonth,el.birthDateDay,el.birthDateYear)) return false;
  if (!enhancedgender3(document.getElementById('gender11'),document.getElementById('gender22'))) {return false;}
  if (!v_region(el.region)) return false;
  if (!v_password(el.password1)) return false;
  if (el.password2 && !v_password(el.password2)) return false;
  if (el.password2 && !v_passmatch()) return false;
  if (el.bcode && !v_bcode(el.bcode)) return false;
  //if (!v_vuser()) return false;
  if (el.agree && !v_agree(el.agree)) return false;
  return true;
}

function signupValidator2() {
el = document.signupform;
	if (el.startsertid) {
		var sertselected = false;
		for (var i = 0;i<el.startsertid.length;i++) {
			if (el.startsertid[i].checked) {
				sertselected = true;
			}
		}
		if (!sertselected) {
			alert('Выберите свой первый подарок');
			return false;
		}
	}
  if (!v_email(el.email)) return false;
  if (!v_password(el.password1)) return false;
  if (el.password2 && !v_password(el.password2)) return false;
  if (el.password2 && !v_passmatch()) return false;
  if (!v_name(el.fname,'Имя','Имя')) return false;
  if (!v_name(el.lname,'Фамилия', 'Фамилию'))  return false;
  if (!enhancedgender3(document.getElementById('gender11'),document.getElementById('gender22'))) {return false;}
  if (!v_region(el.region)) return false;
  if (!checkage(el.birthDateMonth,el.birthDateDay,el.birthDateYear)) return false;
  if (el.bcode && !v_bcode(el.bcode)) return false;
  //if (!v_vuser()) return false;
  if (el.agree && !v_agree(el.agree)) return false;
  return true;
}

function loginValidator() {
	el = document.loginform;
  if (!v_email2(el.email)) return false;
  if (!v_password(el.password)) return false;
  return true;
}


function passwordResetValidator(whichform) {
 el = document.forms[whichform];
  if (!v_password(el.oldPassword)) return false;
  if (!v_password(el.password1)) return false;
  if (!v_password(el.password2)) return false;
  if (!v_passmatch()) return false;
  el.submit()
//  return true;
}

function loginIt() {
	if (!loginValidator()) {
		return false;
	}
	document.loginform.submit();
}

function sendIt() {
  if (!signupValidator()) { 
	  return false;
  }
  document.signupform.submit();
}//end function

function sendIt2() {
	try
	{
		if (wideClosed==true) {
			continueButton();
			return false;
		}
	}
	catch (event)
	{
	}
  if (!signupValidator2()) { 
	  return false;
  }
  document.signupform.submit();
}//end function

// function to enforce a maximum character length for a field
function CheckLength(oField,intMaxLength){
  if(!oField || !intMaxLength) return;

  var strValue = new String();
  strValue = oField.value;
  if(strValue.length > intMaxLength){
    oField.value = strValue.substr(0,intMaxLength);
  }else{
    return;
  }
}

// function to detect whether the 'Enter' key has been pressed
// (mostly useful when called from a form's onKeyPress event --> to submit the form if true)
function detectEnter(e)
{
  if(!e){ var e = window.event; }

  if (e.keyCode){
    var code = e.keyCode; 
  }else if (e.which){
    var code = e.which; 
  }
  
  if(code == 13){ //if generated character code is equal to ascii 13 (if enter key)
    return true; 
  }else{ 
    return false; 
  }
}



