//Global error variables login
var loginEmailValid = false;
var loginPasswordValid = false;

//Global error variables createuser
var userNameValid = false;
var emailValid = false;
var email1Valid = false;
var passwordValid = false;
var password1Valid = false;
var zipValid = false;

//Global error variables misc
var emailSyntaxValid = false;
var emailSyntaxValid1 = false;
var emailSyntaxValid2 = false;
var nameValid = false;
var nameValid1 = false;
var conditionsValid = false;
var message1Valid = false;




//Global ajax helper variable
var v1 = false;
var v2 = false;

//Global message map
message_map = {
	//username
	'blank-username':			'indtast fornavn',
	'bad-username':				'ugyldige tegn i fornavn',
	//name
	'blank-name':				'indtast dit navn',
	//email
	'blank-email':				'indtast email',
	'blank-email1':				'gentag email',
	'invalid-email':			'ugyldig email',
	'email-taken':				'allerede brugt, <a href="/forgotpassword">glemt kodeord?</a>',
	'mismatch-emails':			'emails matcher ikke',
	'nonregistred-email':		'email ikke registrered',
	//password
	'blank-password':			'indtast kodeord',
	'blank-password1':			'gentag kodeord',
	'bad-password':				'ugyldige tegn i kodeord',
	'mismatch-passwords':		'kodeord matcher ikke',
	'short-password':			'minimum 6 tegn',
	//zip
	'blank-zip':				'indtast postnummer',
	'short-zip':				'skal være 4 tal',
	'bad-zip':					'ugyldig postnummer',
	'blank-conditions':			'accepter vilkar',
	'blank-message':			'indtast besked',
	'blank-msg':				''
};

function trim(str) {
	return str.replace(/^\s*/,"").replace(/\s*$/,"");
}


function loginFormValid() {
	return loginEmailValid && loginPasswordValid;
}

function submitCreateUserForm(e) {
	YAHOO.util.Event.preventDefault(e);
	if(validateCreateUserForm()) {
		$('CREATEUSERFORM').submit();
	}
}

function submitLoginForm(e) {
	YAHOO.util.Event.preventDefault(e);
	if(validateLoginForm()) {
		$('LOGINFORM').submit();
	}
}

function submitTipFriendForm(e) {
	YAHOO.util.Event.preventDefault(e);
	if(validateEmailForm()) {
		sendMail();
	}
}

function submitContactSellerForm(e) {
	YAHOO.util.Event.preventDefault(e);
	if(validateContactSellerForm()) {
		sendContactSellerMail();
	}
}



function submitResultEmailForm(e) {
	YAHOO.util.Event.preventDefault(e);
	if(validateEmailForm()) {
		 $('tipFriendForm').submit();
	}
}

function feedback(field, msg, state){

	var m   = message_map[msg];

	if(state == 'OK') {
		$('' + field.id + '_result').removeClassName("messaging_error");
		$('' + field.id + '_result').addClassName("messaging_validate_ok");
		$('' + field.id + '_result').innerHTML  = "";
	} else if(state == 'ERROR') {
		$('' + field.id + '_result').removeClassName("messaging_validate_ok");
		$('' + field.id + '_result').addClassName("messaging_error");
		$('' + field.id + '_result').innerHTML  = m;
	} else {
		$('' + field.id + '_result').removeClassName("messaging_error");
		$('' + field.id + '_result').removeClassName("messaging_validate_ok");
		$('' + field.id + '_result').innerHTML  = "";
	}
}

function validate(o) {
	switch(o.id) {
		case 'email':
			loginEmailValid = validateEmail(o, 'LOGIN');
		break
		case 'password':
			loginPasswordValid = validatePassword(o);
		break
		/*case 'cu_username':
			userNameValid = validateUsername(o);
		break*/
		case 'cu_email':
			emailValid = validateEmail(o, 'CU');
			email1Valid = validateEmail1($('cu_email1'));
		break
		case 'cu_email1':
			email1Valid = validateEmail1(o);
		break
		case 'cu_password':
			passwordValid = validatePassword(o);
			password1Valid = validatePassword1($('cu_password1'));
		break
		case 'cu_password1':
			password1Valid = validatePassword1(o);
		break
		case 'cu_zip':
			zipValid = validateZip(o);
		break
		case 'email_syntax':
		case 'email_syntax1':
		case 'email_syntax2':
			emailSyntaxValid = validateEmailSyntax(o);
		break
		case 'name':
		case 'name1':
			nameValid = validateName(o);
		break
		case 'conditions':
			conditionsValid = validateConditions(o);
		break
		case 'message1':
			message1Valid = validateMessage(o);
		break
	}
}

function validateCreateUserForm() {
		/*if(!userNameValid) {
			userNameValid = validateUsername($('cu_username'));
			valid = false;
		}*/
		if(!emailValid) {
			emailValid = validateEmail($('cu_email'), 'CU');
		}
		if(!email1Valid) {
			email1Valid = validateEmail1($('cu_email1'));
		}
		if(!passwordValid) {
			passwordValid = validatePassword($('cu_password'));
		}
		if(!password1Valid) {
			password1Valid = validatePassword1($('cu_password1'));
		}
		if(!conditionsValid) {
			conditionsValid = validateConditions($('conditions'));
		}
		/*if(!zipValid) {
			zipValid = validateZip($('cu_zip'));
			valid = false;
		}*/
	return emailValid && email1Valid && passwordValid && password1Valid && conditionsValid;
}

function validateLoginForm() {
		if(!loginEmailValid) {
			loginEmailValid = validateEmail($('email'), 'LOGIN');
		}
		if(!loginPasswordValid) {
			loginPasswordValid = validatePassword($('password'));
		}
		return loginEmailValid && loginPasswordValid;
}

/*function validateEmailForm() {
		if(!emailSyntaxValid) {
			emailSyntaxValid = validateEmailSyntax($('email_syntax'));
		}
		return emailSyntaxValid;
}*/
function validateEmailForm() {
		//Just check when it is  activated in the form
		if($('email_syntax1'))
		{
			if(!emailSyntaxValid1) {
				emailSyntaxValid1 = validateEmailSyntax($('email_syntax1'));
			}
		}
		else
		{
			emailSyntaxValid1 = true;
		}
		//Just check when it is  activated in the form
		if($('name'))
		{
			if(!nameValid) {
				nameValid = validateName($('name'));
			}
		}
		else
		{
			nameValid = true;
		}
		if(!emailSyntaxValid) {
			emailSyntaxValid = validateEmailSyntax($('email_syntax'));
		}
		return emailSyntaxValid1 && nameValid && emailSyntaxValid;
}

function validateContactSellerForm() {
		//Just check when it is  activated in the form
		if($('email_syntax2'))
		{

				emailSyntaxValid2 = validateEmailSyntax($('email_syntax2'));

		}
		else
		{
			emailSyntaxValid2 = true;
		}
		//Just check when it is  activated in the form
		if($('name1'))
		{

				nameValid1 = validateName($('name1'));

		}
		else
		{
			nameValid1 = true;
		}
		//Just check when it is  activated in the form
		if($('message1'))
		{

				message1Valid = validateMessage($('message1'));

		}
		else
		{
			messageValid1 = true;
		}

		return emailSyntaxValid2 && nameValid1 && message1Valid
}

/*
function validateUsername(u) {
	var username_char	= /^[a-z0-9\.\_\-\ \æ\Æ\ø\Ø\å\Å\Ä\ä\Ü\ü\Ö\ö]*$/i;
	var username = trim(u.value);
	var valid = false;
	if (username == '') {
	  feedback(u, 'blank-username', 'ERROR');
	  valid = false;
	} else if (username.search(username_char) == -1) {
	  feedback(u, 'bad-username', 'ERROR');
	  valid = false;
	} else {
	  feedback(u, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}
*/

function validateName(u) {
	var username = trim(u.value);
	var valid = false;
	if (username == '') {
	  feedback(u, 'blank-name', 'ERROR');
	  valid = false;
	} else {
	  feedback(u, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}

function validateMessage(u) {
	var message = trim(u.value);
	var valid = false;
	if (message == '') {
	  feedback(u, 'blank-message', 'ERROR');
	  valid = false;
	} else {
	  feedback(u, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}

function validateConditions(u) {
	var checked = u.checked;
	var valid = false;
	if (checked == false) {
	  feedback(u, 'blank-conditions', 'ERROR');
	  valid = false;
	} else {
	  feedback(u, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}



function validateEmail(e, mode) {
	email_regex    = /^[A-Za-z0-9\.\_\%\+\-]+\@[A-Za-z0-9\.\_\-]+\.[A-Za-z]{2,4}$/i;
	var email = trim(e.value);
	var valid = false;
	if (email == '') {
	  feedback(e, 'blank-email', 'ERROR');
	  valid = false;
	} else if (email.search(email_regex) == -1) {
	  feedback(e, 'invalid-email', 'ERROR');
	  valid = false;
	} else {
	  var callback = {
		success: function(o) {
			if(o.responseText == 'FREE') {
			  if(mode == 'LOGIN') {
				feedback(e, 'nonregistred-email', 'ERROR')
				v2 =  false;
			  } else {
				feedback(e, 'blank-msg', 'OK')
				v1 =  true;
			  }
			} else if(o.responseText == 'TAKEN') {
			  if(mode == 'LOGIN') {
				feedback(e, 'blank-msg', 'OK')
				v2 =  true;
			  } else {
				feedback(e, 'email-taken', 'ERROR')
				v1 = false;
			  }
			}
		}
	  }
	  var url = '/ajaxvalidate.do' + '?email=' + trim(e.value);
	  var connectionObject = YAHOO.util.Connect.asyncRequest('GET', url, callback);
	  if(mode == 'LOGIN') {
		valid = v2;
	  } else {
		valid = v1;
	  }
	}
	return valid;
}

function validateEmailSyntax(e) {
	email_regex    = /^[A-Za-z0-9\.\_\%\+\-]+\@[A-Za-z0-9\.\_\-]+\.[A-Za-z]{2,4}$/i;
	var email = trim(e.value);
	if (email == '') {
		  feedback(e, 'blank-email', 'ERROR');
		  return false;
	}
	var valid = false;
	var splitArray = email.split(";");
	var nodes = $A(splitArray);

	nodes.each(function(node){
		if (node.search(email_regex) == -1) {
		  valid = false;
		}
		else
		{
			valid = true;
		}
	});

	if(!valid)
	{
		feedback(e, 'invalid-email', 'ERROR');
	}
	else
	{
		feedback(e, 'blank-msg', 'OK');
	}
	return valid;
}

function validateEmail1(e1) {
	var email = trim($('cu_email').value);
	var email1 = trim(e1.value);
	var valid = false;
	if(email1 == '') {
	  feedback(e1, 'blank-email1', 'ERROR')
	  valid = false;
	} else if(	email != email1) {
	  feedback(e1, 'mismatch-emails', 'ERROR')
	  valid = false;
	} else {
	  feedback(e1, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}

function validatePassword(p) {
	var password_min	= 6;
	var password_char	= /^[\x21-\x7E]*$/;
	var password = trim(p.value);
	var valid = false;
	if (password == '') {
	  feedback(p, 'blank-password', 'ERROR');
	  valid = false;
	} else if (password.search(password_char) == -1) {
	  feedback(p, 'bad-password', 'ERROR');
	  valid = false;
	} else if (password.length < password_min) {
		feedback(p, 'short-password', 'ERROR');
		valid = false;
	} else {
	  feedback(p, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}

function validatePassword1(p1) {
	var password = trim($('cu_password').value);
	var password1 = trim(p1.value);
	var valid = false;
	if (password1 == '') {
	  feedback(p1, 'blank-password1', 'ERROR');
	  valid = false;
	} else if(	password != password1) {
	  feedback(p1, 'mismatch-passwords', 'ERROR')
	  valid = false;
	} else {
	  feedback(p1, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}

function validateZip(z) {
	var zip_min	= 4;
	var zip_char	= /^[0-9\.\_]*$/i;
	var zip = trim(z.value);
	var valid = false;
	if(zip == '') {
	  feedback(z, 'blank-zip', 'ERROR')
	  valid = false;
	} else if (zip.search(zip_char) == -1) {
	  feedback(z, 'bad-zip', 'ERROR');
	  valid = false;
	} else if (zip.length < zip_min) {
	  feedback(z, 'short-zip', 'ERROR');
	  valid = false;
	} else {
	  feedback(z, 'blank-msg', 'OK')
	  valid = true;
	}
	return valid;
}

function sendMail()
{
	var formObject = $('tipFriendForm');
	YAHOO.util.Connect.setForm(formObject, true);

	var callback =
	{
		upload: function(o) {
			//Close the sendEmail div
			toggleSendMail();
			if(o.responseText == 'SEND')
			{
				$('emailresult').className = 'messageToUserSection';
				$('emailresult').innerHTML = 'Din e-mail er sendt';
			}
			else if(o.responseText == 'ERROR')
			{
				$('emailresult').className = 'messageToUserSection';
				$('emailresult').innerHTML = 'Din e-mail er IKKE sendt';
			}
			else
			{
				window.location="/login.do?message=true";
			}
		}
	};
	var url = '/ajaxsendmail.do';
	YAHOO.util.Connect.asyncRequest('GET', url, callback);
}

function sendContactSellerMail()
{
	var formObject = $('contactSellerForm');
	YAHOO.util.Connect.setForm(formObject, true);

	var callback =
	{
		upload: function(o) {

			if(o.responseText == 'SEND')
			{
				$('emailresult2').className = 'messageToUserSection2';
				$('emailresult2').innerHTML = 'Din e-mail er sendt';
				formObject.reset();
			}
			else if(o.responseText == 'ERROR')
			{
				$('emailresult2').className = 'messageToUserSection2';
				$('emailresult2').innerHTML = 'Din e-mail er IKKE sendt';
			}
			else
			{
				window.location="/login.do?message=true";
			}
		}
	};
	var url = '/ajaxsendmail.do';
	YAHOO.util.Connect.asyncRequest('GET', url, callback);
}

function toggleSendMail() {
	var maildiv = $('tipFriend');
	var emailMessage = $('emailresult'); // added by JMH
	maildiv.className = maildiv.className == 'hidden' ? '' : 'hidden';
	emailMessage.className = emailMessage.className == 'messageToUserSection' ? 'messageToUserSectionEmpty' : 'messageToUserSectionEmpty';// added by JMH
	emailMessage.innerHTML = emailMessage.innerHTML == 'Din e-mail er sendt' ? '&nbsp;' : '&nbsp;' // added by JMH
}

function toggleSendMail2() {
	var maildiv = $('tipFriend');
	maildiv.className = maildiv.className == 'hidden' ? '' : 'hidden';
}
