var W3CDOM = (document.getElementsByTagName && document.createElement);

var validForm = false;
var firstError = null;
var errorstring = '';

function setFrom() {
	document.getElementById('validate').onsubmit = function () {
			clear = validate();
			if ( clear == true )	{
				if ( diggest != '' )	{
					pass_temp = document.getElementsByName('password');
					pass_temp = pass_temp[0];
					pass_real = document.getElementsByName(diggest);
					pass_real = pass_real[0];

					if ( pass_temp.value != '' )	{
						password = hex_md5(pass_temp.value);
						pass_real.value = password;
						pass_temp.value = password.substring(0, pass_temp.value.length);
					}
					else
						pass_real.parentNode.removeChild(pass_real);
				}
			}
			return clear;
	}
}

function validate()
{
	validForm = true;
	firstError = null;
	
	errorstring = '';
	
	var x = document.getElementById('validate').elements;
	for (var i = 0; i < required.length; i++)
	{
		if ( !x[ required[i] ].value  )
			writeError( x[ required[i] ],'*', 'errortext' );
		else if ( email && required[i] == email && isEMailAddr( x[email] ) == false )			
			writeError( x[email],'Nieprawidłowy email/Wrong e-mail address', 'errortext' );
	}
	if ( equal )	{
		if ( x[ equal[0] ].value != x[ equal[1] ].value )
			writeError( x[ equal[1] ],'Hasła się różnią', 'errortext' );
	}

	if (!W3CDOM)
		alert(errorstring);
	if ( firstError )
		firstError.focus();
	return validForm;
}

function writeError( obj, message, classname )
{
	if (obj.hasError)	{
		if ( !firstError )
			firstError = obj;

		validForm = false;
		return;
	}
	if (W3CDOM)
	{
/*		obj.className += ' error';*/
		obj.onchange = removeError;
		var sp = document.createElement('span');
		sp.className = classname;
		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);
		obj.hasError = sp;
	}
	else
	{
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}
	if ( !firstError )
		firstError = obj;
	validForm = false;
}

function removeError()
{
/*	this.className = this.className.substring(0,this.className.lastIndexOf(' '));*/
	this.parentNode.removeChild(this.hasError);
	this.hasError = null;
	this.onchange = null;
}

/****************************************************

			FUNKCJA SPRAWDZAJĄCA E-MAIL
regexp:
^[a-zA-Z0-9-_.]+@([-a-z0-9]+\.)+[a-z]{2,}$

****************************************************/

function isEMailAddr(elem) {
    var str = elem.value;
    var reg = "^[a-z0-9-_.]+@([-a-z0-9]+\.)+[a-z]{2,}$";
	var re = new RegExp(reg, "i");
	if ( !re.test( str ) ) {
//        alert("Verify the email address format.");
        return false;
    } else {
        return true;
    }
}
