function getElement(id)
{
    if(document.all)
	{
		return eval("document.all['" + id + "']");

	}
	else
	{
		return document.getElementById(id);
	}
}

var countingFields = false;

function validate(f)
{

	var vFlag = true; //initalise vFlag 

	var form = f.elements //first get an array of all form elements.

	//the form elements that need validating have a div with an id name of 'fieldnameTip'.
	//so, to 'dynamically' find out which elements need validation, 'test' the existence
	//of a Div with the name 'fieldnameTip'. If the div exists, the form field needs validation. 
	for(i=0;i<form.length;i++)
	{
        var fieldName = form[i].name;
      
        //alert(fieldName);
	    var re = /props\[|\]/g;

	    var baseFieldName = fieldName.replace(re, '');

        //alert(baseFieldName);

	    var tipDiv = getElement(baseFieldName+"Tip");

        if(tipDiv != null)
	    {
            //alert("checking for value of "+baseFieldName);

		    //div exists! so validate the element.
		    if(checkForValue(form[i],baseFieldName,tipDiv) == false)
		    {
		        vFlag = false;
            	//alert("vFlag is false");
		    }
	    }
	}


	if(vFlag) // If the function is going to return true
	{
	    setTip("form-message-div","none");
	}
	else // If the function is going to return false
	{
	    setTip("form-message-div","block");
		window.scrollTo(0,0);
		//alert("vFalg is "+vFlag);
	}


	return vFlag;
}

function checkForValue(field,baseFieldName,tipDiv)
{
        //alert("checkForValue()");

	var eFlag = true;

    // DEFINE THE RE AND StrING TO CHECK FOR A VALID EMAIL BELOW
    var reEmail = /^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i;
    var email = field.value;

    // THE REGULAR EXPRESSION AND email ARE DEFINED AT THE START
    // OF THIS FUNCTION

    if((baseFieldName == 'email' || baseFieldName == 'user_email')  && !email.match(reEmail))
    {
	setTip((baseFieldName+"Tip"),"block");
	eFlag = false;
    }
    else if(baseFieldName == 'user_entry' && field.value == "")
    {
       setTip((baseFieldName+"Tip"),"block");
       eFlag = false;
    }
    else if(baseFieldName == 'user_entry' && field.value.match (/\S+/g).length > 25 )
    {
        setTip((baseFieldName+"Tip"),"block");
        eFlag = false;
    }
    else if(field.value != "")
    {
	if(tipDiv != null)
	{
	    setTip((baseFieldName+"Tip"),"none");
	}
    }
    else
    {
	if(tipDiv != null)
	{
	    setTip((baseFieldName+"Tip"),"block");
  	}
        //alert("field.value == ''");
	eFlag = false;
    }

    return eFlag;
}

function setTip(id,state)
{
	//alert("setTip checking "+id+" : "+getElement(id));
	getElement(id).style.display = state;		
}



