function userValid(username, password, email) 
{
	var valid_email = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i 
	var valid_username = /^[\.A-Za-z0-9_-]{4,30}$/;
	var valid_password =  /^[A-Za-z0-9!@#$%^&*()_]{4,60}$/;
	var errors = [];
	
	if (!valid_username.test(username))
	{
		errors[errors.length] = "You must enter a valid username.";
	}
	if (!valid_password.test(password))
	{
		errors[errors.length] = "The password contains illegal characters or is empty.";
	}
	if (email != null) 
	{
		if (!valid_email.test(email))
		{
			errors[errors.length] = "You must enter a valid email address.";
		}
	}
	if (errors.length > 0)
	{
		return reportErrors(errors);
	}
	else
	{
		return '';
	}
}

function customerValid(userType, companyName, VAT, phone) {
	var errors = [];
	
	if (userType == 0)
		errors[errors.length] = "Select type.";
	if (companyName == '' || companyName == null)
		errors[errors.length] = "Company name must be filled out!";
	if (phone == '' || phone == null)
		errors[errors.length] = "Phone must be filled out!";
	if (errors.length > 0)
		return reportErrors(errors);
	else
		return '';
}

function endUserValid(postalCode, country)
{
	var valid_postalCode = /^[A-Za-z0-9 ]{4,15}$/;
	var errors = [];
	
	if (!valid_postalCode.test(postalCode))
	{
		errors[errors.length] = "You must enter a valid postal code.";
	}
	if (country == 0)
	{
		errors[errors.length] = "Select country.";
	}
	if (errors.length > 0)
	{
		return reportErrors(errors);
	}
	else
	{
		return '';
	}
}

function reportErrors(errors)
{
 	var msg = "";
 	
 	for (var i = 0; i<errors.length; i++)
 	{
  		msg += "<br />" + errors[i];
	}
	 return msg;
}

function validCreateCustomerAccForm(formId)
{
	var formIDElement = document.getElementById(formId);
	var divID = document.getElementById('formErrCustomer');
	var submitID = document.getElementById('submitCompanyId');
	
	errMsgUserValid = userValid(formIDElement.joinUserName.value, formIDElement.joinUserPass.value, formIDElement.joinUserEmail.value);
	errMsgCustomerValid = customerValid(formIDElement.joinUserType.selectedIndex, formIDElement.joinCompanyName.value, formIDElement.joinVatNumber.value, formIDElement.joinUserPhone.value);
	if (errMsgUserValid == '' && errMsgCustomerValid == '')
	{
		divID.style.display = 'block';
		submitID.name='submit_join_company';
		submitID.value='1';
		formIDElement.submit();
	}
	else
	{
		divID.style.display = 'block';
		divID.innerHTML = errMsgUserValid+errMsgCustomerValid;
	}
}

function validCreateUserAccForm(formId)
{
	var formID = document.getElementById(formId);
	var divID = document.getElementById('formErrUser');
	var submitID = document.getElementById('submitUserId');
	
	errMsgUserValid = userValid(formID.joinUserName.value, formID.joinUserPass.value, formID.joinUserEmail.value);
	errMsgEndUserValid = endUserValid(formID.joinUserPostalCode.value, formID.joinUserCountry.selectedIndex, formID.joinUserBotcheck.value);
	
	if (errMsgUserValid == '' && errMsgEndUserValid == '')
	{
		divID.style.display = 'block';
		submitID.name='submit_join_user';
		submitID.value='1';
		formID.submit();
	}
	else
	{
		divID.style.display = 'block';
		divID.innerHTML = errMsgUserValid+errMsgEndUserValid;
	}
}
var visualErr = Boolean();
function validUserLoginForm(formId, botcheck)
{
	var formID = document.getElementById(formId);
	var divID = document.getElementById('loginFormErrId');
	var submitID = document.getElementById('submitLoginFormId');
	
	errMsgUserValid = userValid(formID.userName.value, formID.userPassword.value, null);
	errMsgBotcheck = '';
	botcheckErr = false;
	
	if (botcheck == true)
	{
		if (formID.botcheck.value == '' || formID.botcheck.value == null)
		{
			errMsgBotcheck = 'Botcheck symbols must be filled out!';
			divID.style.visibility = 'visible';
			divID.innerHTML = errMsgBotcheck+'<br />';
			botcheckErr = true;
		}
	}
	if (errMsgUserValid == '' && botcheckErr == false)
	{
		submitID.name='user_login_submit';
		submitID.value = '1';
		formID.submit();
	}
	if (errMsgUserValid != '' && visualErr == false)
	{
		visualErr = true;
		divID.style.visibility = 'visible';
		divID.innerHTML += errMsgUserValid;
	}
}

function checkVisualErr()
{
	var divErrId = document.getElementById('loginFormErrId');
	var divLogin = document.getElementById('loginForm');
	
	if (divErrId && divLogin) {
	if (visualErr == true && divLogin.style.visibility == 'visible')
	{
		divErrId.style.visibility = 'visible';
	}
	else
	{
		divErrId.style.visibility = 'hidden';
	}
	}
}

function validCategory(formID)
{
	var formId = document.getElementById(formID);
	var divId = document.getElementById('errMsg');
	var submitId = document.getElementById('submitCat');
	var errors = [];
	var errMsg = null;

	if (formId.nameCategory.value == '' || formId.nameCategory.value == null)
	{
		errors[errors.length] = 'Please enter category name!';
	}
	if (formId.nameCategory.value.length < 3)
	{
		errors[errors.length] = 'Category name has to be at least 3 characters!';
	}
	if (errors.length > 0)
	{
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else
	{
		submitId.name='save';
		submitId.value='1';
		formId.submit();
	}
}

function validUserType()
{
	var formId = document.getElementById('usertypeForm');
	var divId = document.getElementById('errMsgUserTypeId');
	var submitId = document.getElementById('submitUserType');
	var errors = [];
	var errMsg = null;
	
	if (formId.nameUserType == '' || formId.nameUserType == null)
	{
		errors[errors.length] = 'Please enter user type name!';
	}
	if (formId.nameUserType.value.length < 2)
	{
		errors[errors.length] = 'User type name has to be at least 2 characters!';
	}
	if(document.usertypeForm.groupUserType.options[document.usertypeForm.groupUserType.selectedIndex].value == 0)
	{
		errors[errors.length] = 'Please select user type group!';
	}
	if (errors.length > 0)
	{
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else
	{
		submitId.name='save';
		submitId.value='1';
		formId.submit();
	}
}

function validItem(paramSaveButton) {
	var formId = document.getElementById('editProduct');
	var divErrMsg = document.getElementById('errProductMsg');
	var submitId = document.getElementById('submitProduct');
	var errors = [];
	var errMsg = null;

	if (formId.productName.value < 2)
		errors[errors.length] = 'Item name has to be at least 2 characters!';
	
	if (errors.length > 0) {
		divErrMsg.style.visibility = 'visible';
		divErrMsg.innerHTML = reportErrors(errors);
	}
	else {
		if (paramSaveButton == 1) { submitId.name='saveAboveMultimediaPanels'; }
		else { submitId.name='save'; }
		submitId.value = '1';
		formId.submit();
	}
}

function confirmUploadPictureSuccess(formID, submitElementId, uploadName, edit) {
	var formId = document.getElementById(formID);
	var submitId = document.getElementById(submitElementId);
	
	if (edit == true) {
		submitId.name= uploadName;
		submitId.value = '1';
		formId.submit();
	}
	else {
		if (formID == 'editProduct') 
			alert('In order to continue, note that you should save your item first.');
		else if (formID == 'editBanner')
			alert('In order to continue, note that you should save your banner first.');
		else
			alert('In order to continue, note that you should save your account first.');
	}
}

function validUserAccount(newuser, group)
{
	var formId = document.getElementById('editUser');
	var divId = document.getElementById('errMsgId');
	var submitId = document.getElementById('submitUser');
	var errors = [];
	var errMsg = '';
	
	if (newuser == true)	errMsg = userValid(formId.userName.value, formId.userPass.value, null);	
	if (group == 2 || group == 3 || group == 4)
	{
		if (formId.userCompanyName.value.length < 2 || formId.userCompanyName.value.length > 50) errors[errors.length] = "Company name length must be between 2 and 50 symbols!";
	}
	if (formId.userEmail.value.length < 4) errors[errors.length] = "You must enter a valid email address.";
	if (formId.userZip.value.length < 4 || formId.userZip.value.length > 15) errors[errors.length] = "ZIP length must be between 4 and 15 symbols!";
	if (formId.userCountry.options[formId.userCountry.selectedIndex].value == 0) errors[errors.length] = "Please, select country!";
	/*if (formId.userCity.value.length < 4 || formId.userCity.value.length > 50) errors[errors.length] = "City length must be between 4 and 50 symbols!";*/
	
	if (errors.length > 0)
	{
		divId.style.visibility = 'visible';
		divId.innerHTML = errMsg+reportErrors(errors);
	}
	else
	{
		submitId.name='save';
		submitId.value = '1';
		formId.submit();
	}
}

function validBanner()
{
	var formId = document.getElementById('editBanner');
	var divId = document.getElementById('errBannerMsg');
	var submitId = document.getElementById('submitBanner');
	var errors = [];
	var errMsg = '';
	
	if (formId.bannerURL.value <= 7) 
		errors[errors.length] = 'Banner url address has to be at least 7 characters!';
	if (formId.bannerUserTypeID.options[formId.bannerUserTypeID.selectedIndex].value == 0) 
		errors[errors.length] = "Please, select user type!";
	if (errors.length > 0)
	{
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else
	{
		submitId.name='save';
		submitId.value = '1';
		formId.submit();
	}	
}

function validCMSString() {
	var formId = document.getElementById('editCMSString');
	var divId = document.getElementById('errMsgPanel');
	var submitId = document.getElementById('submitCMS');
	var errors = [];
	var errMsg = '';
	
	if (formId.cmsValue.value < 2) 
		errors[errors.length] = 'CMS string value has to be at least 2 characters!';
	if (errors.length > 0) {
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else {
		submitId.name='save';
		submitId.value = '1';
		formId.submit();
	}
}

function validCountry() {
	var formId = document.getElementById('editCountry');
	var divId = document.getElementById('errMsgPanel');
	var submitId = document.getElementById('submitCountry');
	var errors = [];
	var errMsg = '';
	
	if (formId.countryName.value < 2) 
		errors[errors.length] = 'Country name has to be at least 2 characters!';
	if (errors.length > 0) {
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else {
		submitId.name='save';
		submitId.value = '1';
		formId.submit();
	}
}

function validFAQ() {
	var formId = document.getElementById('editFAQ');
	var divId = document.getElementById('errMsgPanel');
	var submitId = document.getElementById('submitFAQ');
	var errors = [];
	var errMsg = '';
	
	if (formId.faq_question.value < 2) 
		errors[errors.length] = 'Question has to be at least 2 characters!';
	if (formId.faq_answer.value < 2) 
		errors[errors.length] = 'Answer has to be at least 2 characters!';
	if (errors.length > 0) {
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else {
		submitId.name='save';
		submitId.value = '1';
		formId.submit();
	}
}

function validService() {
	var formId = document.getElementById('editService');
	var divId = document.getElementById('errMsgPanel');
	var submitId = document.getElementById('submitService');
	var errors = [];
	var errMsg = '';
	
	if (formId.serviceName.value < 2) 
		errors[errors.length] = 'Service name has to be at least 2 characters!';
	if (errors.length > 0) {
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else {
		submitId.name='save';
		submitId.value = '1';
		formId.submit();
	}
}

function validLink() {
	var formId = document.getElementById('link');
	var divId = document.getElementById('errMsg');
	var submitId = document.getElementById('submitLink');
	var errors = [];
	
	if (formId.content.value < 2)
		errors[errors.length] = 'Content has to be at least 2 characters!';
	if (formId.url.value < 7)
		errors[errors.length] = 'URL has to be at least 7 characters!';
	
	if (errors.length > 0) {
		divId.style.visibility = 'visible';
		divId.innerHTML = reportErrors(errors);
	}
	else {
		submitId.name='save';
		submitId.value='1';
		formId.submit();
	}
}