// JavaScript Document

var formIsValid = true;

function getElementsByClassName(name)
{
	var foundElements = new Array();
	var elements = document.getElementsByTagName("*");
	var k = 0;
	/* 
	// maybe use to only check a list of tags in future
	for (var k=0; k<tags.length;k++)
	{
		var elements[k] = document.getElementsByTagName(tags[k]);
		if (k > 0)
		{
			elements[k] = combineNodeLists(elements[k],elements[k-1]);
		}
	}
	*/	
	for (var i=0;i<elements.length;i++)
	{
		// check that element has className and that is it "required"	
		if (elements[i].className && elements[i].className.indexOf("required") >= 0)
			{
				foundElements[k] = elements[i];			
				k++;
			}
	}
	return foundElements;
}

function combineNodeLists(a,b)
{
	// used to combine NodeLists
	return c;
}

function setError(element,error)
{
	formIsValid = false;
	element.className += " alert";
	error.style.display = "block";
}

function checkErrorPanel()
{
	var errorPanel = document.getElementById("ErrorPanel");
	if (errorPanel == null)
	{
		alert("no error panel defined \n please create a div with id 'ErrorPanel' and associate css style");
		return false;
	}
	return errorPanel;
}

function checkForm ()
{
	formIsValid = true;
	
	// get errorPanel element and check that it is valid
	var errorPanel = checkErrorPanel();
	if (errorPanel == false)
		return false;
		
	// get all element with ClassName "required" 
	var elements = getElementsByClassName("required");
	
	// search node list and check for empty or unfilled values
	for (var i=0;i<elements.length;i++)
	{
		if (elements[i].value == "")
		{
			setError(elements[i],errorPanel);
		}
		else if (elements[i].HTMLselectedElement <= 0 || elements[i].HTMLselectedElement == "")
		{
			setError(elements[i],errorPanel);
		}
		else if (elements[i].name.indexOf("email") >= 0 && (/^([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z]{2,4})+/i).test(elements[i].value) == false )
		{
			setError(elements[i],errorPanel);
		}else{
			elements[i].className = "required";
//			errorPanel.style.display = "none";
		}
	}
	return formIsValid;
}

function checkEmailForm()
{
	var errorPanel = checkErrorPanel();
	
	if (errorPanel == false)
		return false;

	if (checkForm())
	{
		var email1 = document.getElementById("email1");
		var email2 = document.getElementById("email2");
		
		if (email1.value == email2.value)
		{
			formIsValid = true;
		}else{
			setError(email1,errorPanel);
			setError(email2,errorPanel);
			formIsValid = false;
		}
	}
	return formIsValid;
}


function checkCallBackForm()
{
	var errorPanel = checkErrorPanel();
	if (checkForm())
	{
		var phone1 = document.getElementById("phone1");
		var phone2 = document.getElementById("phone2");
		
		if (phone1.value == phone2.value)
		{
			formIsValid = true;
		}else{
			setError(phone1,errorPanel);
			setError(phone2,errorPanel);
			formIsValid = false;
		}
	}
	return formIsValid;
}

