var formWasValidated = 0;
var formObjGlobal;
var timeoutId;
function isset(varname)
{
	return(typeof(varname)!='undefined');
}

function createXMLHttpRequest( ) 
{
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
	try { return new XMLHttpRequest( ); } catch(e) {}
	alert("XMLHttpRequest not supported");
	return null;
}


function eroare( input ) 
{
	document.getElementById( "errorDiv" ).innerHTML += "Nu ati completat corect campul '" + input.name.replace(/_/g, " ") + "'.<br>";	
}

function validateForm ( formObj, rules )
{
	formObjGlobal = formObj;
	displayLoadingDiv();	
	formWasValidated = rules.length;
	
	document.getElementById( "errorDiv" ).innerHTML = "";
	
	formIsValid = true;
	
	for ( i=0; i < rules.length; i++ )
	{
		eval( 'input = formObj.' + rules[i][0] + ';');
		
		if( !isset( input ) )
		{
			alert( "validatorError : the field " + rules[i][0] + " does not exist." );
			eroare("campu " + rules[i][0] + " nu e corect");
			hideLoadingDiv();
			clearTimeout( timeoutId );
		}
		
		validateField( input, rules[i][1], rules[i][2] );
	}	
	
	submitForm( );
	return false;
}


function submitForm(  )
{
	if( formWasValidated == 0 )
	{
		formObjGlobal.submit();
	}
	else
	{
		timeoutId = setTimeout(	"submitForm( )", 1000 ); 
	}
}


function setInvalid( input )
{
	eroare( input);
	hideLoadingDiv();
	clearTimeout( timeoutId );		
	input.className = 'error';	
}	

function setValid( input )
{
	formWasValidated--;	
	input.className = inputNormalStyle;
}


function validateField( input, rule, length )
{
	
	switch( rule )
	{
		case 'a-z' :
					{
						var rule1 = new RegExp("[a-z]{" + length + "}","g");
						var rule2 = new RegExp("[0-9]{1,}","g");
						
						if( rule1.test(input.value) && !rule2.test(input.value) )
						{
							setValid( input );
						}
						else
						{
							setInvalid(	input );
						}
						break;
					}
		case '0-9' :
					{
						var rule1 = new RegExp("[0-9]{" + length + "}","g");
						var rule2 = new RegExp("[a-z]{1,}","g");
						
						
						if( rule1.test(input.value) && !rule2.test(input.value) )
						{
							setValid( input );
						}
						else
						{
							setInvalid(	input );	
						}	
						break;
					}
		case 'email' :
					{
						var rule1 = new RegExp("^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$","g");
						
						if( rule1.test(input.value))
						{
							setValid( input );
						}
						else
						{
							setInvalid(	input );	
						}	
						break;
					}
		case 'ajax' :
					{
							var aux = length.split("?");
							aux[1] = aux[1].replace( "|VALUE|", input.value );
							var params= aux[1];
							
							var xhr = createXMLHttpRequest( );
							xhr.open("POST", aux[0], true);
							xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
							xhr.setRequestHeader("Content-length", params.length);
							xhr.setRequestHeader("Connection", "close");
							
							var response;
							var noResponse = true;
							xhr.onreadystatechange = function( ) 
							{
								if (xhr.readyState==4) 
								{
									if (xhr.status==200) 
									{
										noResponse = false;	
										if( xhr.responseText == "0" )
										{
											setValid( input );
										}
										else
										{
											setInvalid(	input );	
										}	
										
									}
								}
							}
							
							xhr.send(params);
							
							break;
					}			
		default    :	return false;	 			
		
	}
}

function displayLoadingDiv()
{
	document.getElementById( 'loadingDiv' ).style.display = 'block' ;
}

function hideLoadingDiv()
{
	document.getElementById( 'loadingDiv' ).style.display = 'none' ;		
}