function checkRegisterForm()
{
	return checkEmail("form_register_login","Please enter a valid email address")
	&& checkInput("form_register_password","Please enter password")
	&& checkInput("form_register_password2","Please repeat password")
	&& compareFields("form_register_password","form_register_password2","Given passwords are not the same");
}

function checkLoginForm()
{
	return checkInput("form_login_login","Please enter your login\n(Your login is your email address)")
	&& checkInput("form_login_password","Please enter your password");
}

function checkSearchForm()
{
	return checkInput("form_search","Please enter a clause to search");
}

function checkDataForm(checkPhone)
{
	var check = checkInput("form_first_name","Please enter your name")
	&& checkInput("form_last_name","Please enter your last name")
	&& checkInput("form_address","Please enter a street")
	&& checkInput("form_post_code","Please enter a post code");
	if(!check)
		return false;

	if(checkPhone)
		check = checkInput("form_phone","Please enter a phone");
	if(!check)
		return false;

	return checkInput("form_city","Please enter a city")
	&& checkEmail("form_email","Please enter a valid email address");
}

function checkCatalogueForm()
{
	return checkInput("form_catalogue_name","Please enter your name")
	&& checkInput("form_catalogue_surname","Please enter your surname")
	&& checkInput("form_catalogue_address","Please enter a street")
	&& checkInput("form_catalogue_city","Please enter a city")
	&& checkInput("form_catalogue_post_code","Please enter a post code")
	&& checkInput("form_catalogue_country","Please enter a cauntry")
	&& checkEmail("form_catalogue_email","Please enter a valid email address");
}

function myAlert(errorMessage, elementFocus)
{
	alert(errorMessage);
	if(elementFocus)
		elementFocus.focus();
	return false;
}

/* ----------------------------------------------------------------------
	DEFAULT VALIDATION FORMS
---------------------------------------------------------------------- */
function checkInput(inputId, errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

	if( input.value == "" )
    	return focusFailedInput(inputId,errorMessage);

    return true;
}

function compareFields(fieldId1, fieldId2, errorMessage)
{
	var field1 = document.getElementById(fieldId1);
	if(!field1)
	{
		alert( "Element " + fieldId1 + " not found!");
		return false;
	}

	var field2 = document.getElementById(fieldId2);
	if(!field2)
	{
		alert( "Element " + fieldId2 + " not found!");
		return false;
	}

	if( field1.value != field2.value )
    	return focusFailedInput(fieldId2,errorMessage);

    return true;
}

function checkTextarea(inputId, errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Textarea " + inputId + " not found!");
		return false;
	}

	if( input.value.length <= 3 )
    	return focusFailedInput(inputId,errorMessage);

    return true;
}

function checkEmail(inputId,errorMessage)
{
	var input = document.getElementById(inputId);
	if(!input)
	{
		alert( "Input " + inputId + " not found!");
		return false;
	}

    if (!isValidEmail(input.value))
    {
        focusFailedInput(inputId,errorMessage);
        return false;
    }
    return true;
}

function isValidEmail(email)
{
 	var template = /^[0-9a-z]+[0-9a-z._-]*\@[0-9a-z]+[0-9a-z._-]*\.[0-9a-z]{2,}$/i;
  	if (template.test(email) == false) return false;
	return true;
}

function clearError()
{
	var labels = document.getElementsByTagName("label");

	for(var i = 0; i < labels.length; i++ )
	{
		var label = labels[i];
		label.className = label.className.replace("error", "");
	}
	return true;
}

function focusFailedInput(inputId, errorMessage)
{
	if(!errorMessage) return false;
	var labels = document.getElementsByTagName("label");

	var tmplabel;
	// set error class to correct label and remove error class from others
	for(var i = 0; i < labels.length; i++ )
	{
		var label = labels[i];
		label.className = label.className.replace("error", "");
		// if anything will be wrong, remove break statement
		// KCI -> KCI i think it is wrong 'couse it coulnd not loop to the end
		if( label.htmlFor == inputId ) { label.className += " error"; break; }
	}

	var element = document.getElementById(inputId);
	if(errorMessage)
		myAlert(errorMessage,element);

	return false;
}

function checkRadio(form, input, errorMessage, inputId)
{
	var tmpForm = document.getElementById(form);
	if(tmpForm)
		form = tmpForm;
	if(!form[input])
		alert( "Element " + input + " not found!");
	var i = 0;
	for( i ; i < form[input].length; i++ )
	{
		if(form[input][i].checked == true) break;
	}

	var tmp = inputId ? inputId : tmp;

	if( i == form[input].length )
    	return focusFailedInput(tmp,errorMessage);

    return true;
}

function groupFields(name,id,cnt,message)
{
	var count = parseInt(cnt);
	for( var i = 1; i <= count; i++ )
		if(document.getElementById(id + "_" + i,message).value == "") return true;
	return focusFailedInput(id + "_1",message);
}

function groupEmails(name,id,cnt,message)
{
	var template = /^[0-9a-z]+[0-9a-z._-]*\@[0-9a-z]+[0-9a-z._-]*\.[0-9a-z]{2,}$/i;
	var count = parseInt(cnt);
	for( var i = 1; i <= count; i++ )
		if(template.test(document.getElementById(id + "_" + i,message).value) == true) return true;
	return focusFailedInput(id + "_1",message);
}