$(document).ready(function(){
	var selectorHandler = new SelectorHandler();
	var lastUserName = null;
	var lastEmail = null;
	var setValid = function(control, isValid, message){
		var validHouse = $('div.ValidationResults',control[0].parentNode);
		validHouse.empty();
		if (isValid == null)
			validHouse.append('<img src="'+spinnerSmallImage+'" alt="Checking" class="InProgress" />');
		else if (isValid){
			//validHouse.append('<img src="/Modules/SIRELWizard/icons/button_ok.png" alt="Tick" />');
		}else
			validHouse.append('<img src="/Modules/SocialProfile/images/icons/cross.png" alt="Cross" class="Invalid" />');
		if (message)
			validHouse.append(message);
	}
	var checkValid = function(){
		ctrl = $(this);
		var isValid = true;
		switch(this.className){
			case 'Experience':
			case 'FirstName':
			case 'LastName':
				if (ctrl.val() == '')
					setValid(ctrl, false, 'This is required');
				else
					setValid(ctrl, true);			
			break;
			case 'TandC Checkbox':
				if (!ctrl[0].checked)
					setValid(ctrl, false, 'This is required');
				else
					setValid(ctrl, true);
			break;
			case 'UserName':
				if (ctrl.val() != lastUserName){
					if (ctrl.val().length < 3){
						setValid(ctrl, false, 'Profile Name should be at least 3 characters long.');
						return;
					}
					lastUserName = ctrl.val();
					setValid(ctrl, null);
					sv.checkUserNameTaken(ctrl.val(), function(response){
						if (response.result)
							setValid(ctrl, false, 'This profile name is already taken.');
						else
							setValid(ctrl, true);
					});
				}
			break;
			case 'Password':
				if (ctrl.val().length < 5)
					setValid(ctrl, false, 'Password should be at least 5 characters long.');
				else
					setValid(ctrl, true);
			break;
			case 'Email':
				if (ctrl.val() != lastEmail){
					if (ctrl.val() == ''){
						setValid(ctrl, false, 'This is required');
						return;
					}
					if (!ctrl.val().match(/.+@.+\.\w{2,4}/)){
						setValid(ctrl, false, 'This does not appear to be a valid email address.');
						return;
					}
					lastEmail = ctrl.val();
					setValid(ctrl, null);
					
					selectorHandler.checkEmailAddressConsultant(ctrl.val(), function(response){
						if (response.result == 'EXISTS')
							setValid(ctrl, false, 'This email address is already registered.');
						else if (response.result == 'BLOCKED')
							//setValid(ctrl, false, 'This email domain has been blocked. If you would like to contact us regarding this please email <a href="mailto:consultant@sap1.com">consultant@sap1.com</a>.');
							setValid(ctrl, false, 'This email domain has been blocked or if you are a recruitment consultant, please click <a href="agent-registration.aspx">here</a>');
						else
							setValid(ctrl, true);
					});
				}
			break;
			case 'EmailAgain':
				if ($('.EmailSet img.Invalid').length > 0)
					$('div',ctrl[0].parentNode).empty();
				else if (ctrl.val() != $('.ValidationSet input.Email').val())
					setValid(ctrl, false, 'Email address doesn\'t match.');
				else
					setValid(ctrl, true);
			break;
			case 'CVUpload':
				if (ctrl.val() == '')
					setValid(ctrl, false, 'This is required');
				else if (!ctrl.val().match(/.+\.(doc|odf|txt|rtf|docx)/i))
					setValid(ctrl, false, 'Valid CV formats are Word Document (.doc & .docx), Open Office (.odf), Plain Text (.txt) and Rich Text Format (.rtf)');
				else
					setValid(ctrl, true);
			break;
		}
	}
	$('.ValidationSet select, .ValidationSet input').blur(checkValid);
});
function validateRegistration(whenDone){
	$('.ValidationSet select, .ValidationSet input').blur();
	if ($('img.Invalid').length > 0){
		return false;
	}else if ($('img.InProgress').length > 0){
		setTimeout(200, function(){validateRegistration('submit');});
		return false;
	}else{
		if (whenDone == 'submit')
			$('.RegisterButton').click()
		return true;
	}
}