///////////////////////////////////////////////
// VALIDATION OF PASSWORD, CUSTOMER USERNAME 
// AND CONTROLL QUESTION ANSWER
//---------------------------------------------

// Enum - Return/Error codes - validatePassword
var VALIDATE_PASSWORD = {
	"OK" : 0, 
	"LENGTH" : 1, 
	"SAME_DIGITS" : 3, 
	"SEQUENCE_DIGITS" : 4, 
	"SEQUENCE_LETTERS" : 5, 
	"PERSONAL_ID" : 6, 
	"USERID" : 7, 
	"USERNAME" : 8,
	"DIGITS" : 9,
	"LETTERS" : 10,
	"FORMAT" : 11,
	"FIRSTNAME" : 12,
	"LASTNAME" : 13
}; 

// Enum - Return/Error codes - validateCustomerUsername
var VALIDATE_USERNAME = {
	"OK" : 0, 
	"LENGTH" : 1, 
	"DIGITS" : 9, 
	"FORMAT" : 11
};

// Enum - Return/Error codes - validateControlQuestionAnswer
var VALIDATE_CONTROLQUESTION_ANSWER = {
	"OK" : 0, 
	"LENGTH" : 1,
	"FORMAT" : 11,
	"EMPTY" : 14
};

// Prototype - String.reverse() - Returns the string reversed
String.prototype.reverse = function(){
	splitext = this.split("");
	revertext = splitext.reverse();
	reversed = revertext.join("");
	return reversed;
}

// Validates customer username
function validateCustomerUsername(customerUserName)
{
	// - Tillåten längd 6-30 tecken 
	if (customerUserName.length < 6 || customerUserName.length > 30) {
		return VALIDATE_USERNAME.LENGTH;
	}
	
	// - Användarnamn får inte bara innehålla siffror
	var reg1 = new RegExp(/^\d{6,30}$/);

	if (reg1.test(customerUserName))
	{
		return VALIDATE_USERNAME.DIGITS;
	}

	// - Tillåten längd 6-30 tecken
	// - Tillåtna bokstäver A-Z, a-z
	// - Tillåtna siffror 0-9
	// - Tillåtna specialtecken @, -, . 
	var reg3 = new RegExp(/^[A-Za-z0-9@\-.]{6,30}$/);
	if (!reg3.test(customerUserName))
	{
		return VALIDATE_USERNAME.FORMAT;
	}
	return VALIDATE_USERNAME.OK;
}

// Validates password
// sb = spebutiksflagga, 1 = anrop från spelbutik
function validatePassword(password, customerUserName, customerId, firstName, lastName, ssn, sb)
{
	var ssnFirstPart = ssn.substr(0,6);
	var ssnSecondPart = ssn.substr(6);

	var digits = "0123456789";
	var alphabet = "abcdefghijklmnopqrstuvwxyz";
	
	// - Tillåten längd 8-18 tecken 
	if (password.length < 8 || password.length > 18) {
		return sendCodeToFlash(VALIDATE_PASSWORD.LENGTH, sb);
	}

	// - Lösenord får inte bara innehålla siffror
	var reg1 = new RegExp(/^\d{8,18}$/);
	if (reg1.test(password))
	{
		return sendCodeToFlash(VALIDATE_PASSWORD.DIGITS, sb);
	}

	// - Lösenord får inte bara innehålla bokstäver
	var reg2 = new RegExp(/^[A-Za-z]{8,18}$/);
	if (reg2.test(password))
	{
		return sendCodeToFlash(VALIDATE_PASSWORD.LETTERS, sb);
	}

	// - Tillåten längd 8-18 tecken
	// - Tillåtna bokstäver A-Z, a-z
	// - Tillåtna siffror 0-9
	// - Tillåtna specialtecken @, -, . 
	var reg3 = new RegExp(/^[A-Za-z0-9@\-.]{8,18}$/);
	if (!reg3.test(password))
	{
		return sendCodeToFlash(VALIDATE_PASSWORD.FORMAT, sb);
	}

	return sendCodeToFlash(VALIDATE_PASSWORD.OK, sb);
}

// Validates the answer for the control question
function validateControlQuestionAnswer(controlQuestionAnswer)
{
	// - Tillåten längd 1-40 tecken 
	if (controlQuestionAnswer.length < 3 || controlQuestionAnswer.length > 40) {
		return VALIDATE_CONTROLQUESTION_ANSWER.LENGTH;
	}
	
	// - Säkerhetssvar får inte bara innehålla mellanslag
	reg1 = new RegExp(/^\s{3,40}$/);
	if (reg1.test(controlQuestionAnswer))
	{
		return VALIDATE_CONTROLQUESTION_ANSWER.EMPTY;
	}
	// - Tillåten längd 1-40 tecken
	// - Tillåtna bokstäver A-Z, ÅÄÖ, a-z, åäö
	// - Tillåtna siffror 0-9
	// - Tillåtna specialtecken @, -, . och blanksteg
	reg2 = new RegExp(/^[A-ZÅÄÖa-zåäö0-9@\-.\s]{3,40}$/);
	if (!reg2.test(controlQuestionAnswer))
	{
		return VALIDATE_CONTROLQUESTION_ANSWER.FORMAT;
	}
	return VALIDATE_CONTROLQUESTION_ANSWER.OK;
}

function sendCodeToFlash(code,sb)
{
	if (sb == 1)
	{
		thisMovie("base").passwordValidationCB(code);
		return false;	
	} 
	else 
	{
		return code;
	}
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}

//---------------------------------------------
// END - VALIDATION OF PASSWORD, CUSTOMER
// USERNAME AND CONTROLL QUESTION ANSWER
///////////////////////////////////////////////