/*
Script name: formTest.js

Author: Marcus Kielly
Date: 23 March 2009
Company: Deckchair

Description:
This script tests the input element against various criteria
for validation purposes. The validation criteria are determined
by the target elements classname, which the script matches

Relationships:
- FUNCTION: checkFormValues()
- LOCATION: formHandlers.js
*/

function testFormInput(currentInput){
        //find classname validation triggers with regexp
        var ptrnReq = new RegExp("(^| )"+"req"+"( |$)");
        var ptrnEmail = new RegExp("(^| )"+"req_email"+"( |$)");
        var ptrnPhone = new RegExp("(^| )"+"phone"+"( |$)");
        var ptrnDate = new RegExp("(^| )"+"req_date"+"( |$)");


        var inputReport = [];
        var inputClass=currentInput.className;
        var inputClasses=inputClass.split(" ");

        for(var i=0;i < inputClasses.length; i++){
//test REQUIRED.................................................................
        if ( inputClasses[i]=="req" )
            {
                if ( !currentInput.value )
        			{
                    inputReport = [currentInput,'required'];
                    return inputReport;
                    }
            }

//test EMAIL....................................................................
		else if ( inputClasses[i]=="email" )
            {
                if ( !validateEmail(currentInput.value) )
        			{
                    inputReport = [currentInput,'email'];
                    return inputReport;
        			}
            }


//TEST TELEPHONE................................................................
		else if ( inputClasses[i]=="phone" )
            {
                if ( !validateTelephone(currentInput.value) )
        			{
                    inputReport = [currentInput,'phone'];
                    return inputReport;
        			}
            }

//TEST DATE.....................................................................
		else if ( inputClasses[i]=="date" )
            {
                if ( !validateDate(currentInput.value) )
        			{
                    inputReport = [currentInput,'date'];
                    return inputReport;
        			}
            }

//TEST CHECKBOX.................................................................

// THIS NEEDS TO BE MODIFIED TO APPLY TO ANY CHECK REQUIREMENT (i.e: not always privacy)

		else if ( inputClasses[i]=="checkreq" )
            {
            if (!currentInput.checked)
                {
                inputReport = [currentInput,'checkreq'];
                return inputReport;
                }
            }
/*
//TEST CHECKBOX GROUP...........................................................
		else if ( inputClasses[i]=="checkgrp" )
            {

            if (!currentInput.checked)
                {
                inputReport = [currentInput,''];
                return inputReport;
                }
            }

//TEST RADIO GROUP..............................................................
          else if ( inputClasses[i]=="check" )
            {

            if (!currentInput.checked)
                {
                inputReport = [currentInput,'privacy'];
                return inputReport;
                }
            }



//TEST SELECT...................................................................
	if ( document.getElementsByTagName("select").length > 0 )
      	{
      		chkSelect = document.getElementsByTagName("select");

      		for ( var i=0; i<chkSelect.length; i++ )
      		{
      			if ( /req$/.test(chkSelect[i].className) )
      			{
      				if ( !chkSelect[i].value )
      				{
      				 return currentInput;
      				}
      			}
      		}
      	}

*/
        }
}


//FILTERING PATTERNS.............................................................

function validateDate(value)
{
	var filter = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/;

	if ( !filter.test(value) )
	{
		return false;
	}

	return true;
}

function validateEmail(value)
{
	var filter = /^.+@.+\..{2,3}$/;

	if ( !filter.test(value) )
	{
		return false;
	}
	return true;
}

function validateTelephone(value)
{
	var filter = /^([0-9 ]{7,})$/;

	if ( !filter.test(value) )
	{
		return false;
	}
	return true;
}

function validateKeyword(value)
{
	return true;
	var filter = /([ \.]+)/;

	if ( !filter.test(value) )
	{
		return true;
	}
	return false;
}

function validateImg(value)
{
	var filter = /(jpg|jpeg)/;

	if ( value == "" )
	{
		return true;
	}

	if ( filter.test(value.toLowerCase()) )
	{
		return true;
	}

	return false;

}









