Validation.add('v_longer_than_three', '', { minLength: 3 });
Validation.add('v_equal_to_new_password', '', { equalToField: 'new_password' });
Validation.add('v_is_checked', '', function (v, f) { if (f.checked) { return true; } else { return false; } });
Validation.add('v_valid_email', 'Please enter a valid email address', function (str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)

	if (str.indexOf(at)==-1){
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false;
	}

	if (str.indexOf(at,(lat+1))!=-1){
	   return false;
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	   return false;
	}

	if (str.indexOf(dot,(lat+2))==-1){
	   return false;
	}
		
	if (str.indexOf(" ")!=-1){
	   return false;
	}

	return true;

});

Validation.add('v_unique_email', '', function(str, field) {
  // console.log("checking email: '" + str + "'" + field);
  // console.log(field);
	var request = new Ajax.Request('/accounts/checkEmailUniquity.php', { 
		asynchronous: false,
		method: 'get',
		parameters: { email: str },
		onSuccess: function(w) { result = w.responseText }
		});
	// console.log("response was '" + result + "'")
	return result == "unique";
});

Validation.add('v_unique_username', '', function(str, field) {
	// console.log("checking username: '" + str + "'");
	indicator = $(field.id + '_loading_indicator');
	if (indicator) {
	  indicator.show();
	}
	var request = new Ajax.Request('/accounts/checkUsernameUniquity.php', { 
		asynchronous: false,
		method: 'get',
		parameters: { username: str },
		onSuccess: function(w) { result = w.responseText; if (indicator) { indicator.hide(); } }
		});
	// console.log("response was '" + result + "'")
  Validation.last_validation = 'v_unique_username';
	return result == "unique";
});
