function validateFileType(fileName,fileTypes)
{

  dots = fileName.split(".");
  fileType = dots[dots.length-1];

		//create a string from the array and find position of filetype within that
  var result = fileTypes.join(".").indexOf(fileType);

		if(result== -1)
		{
			  return false;

		}
		else
		{
		   return true;
		}
}


function checkdate(input)
{

			var validformat=/^\d{2}\/\d{2}\/\d{4}$/
			returnVal = null;

			if(!validformat.test(input.value))
			{
					  returnVal = "INVALID_FORMAT";
			}
			else
			{ //Detailed check for valid date ranges
			   var dayfield=input.value.split("/")[0]
						var monthfield=input.value.split("/")[1]
						var yearfield=input.value.split("/")[2]
						var dayobj = new Date(yearfield, monthfield-1, dayfield)

						var now = new Date();

					if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
					{
								returnVal = "INVALID_DATE";
					}
     else if (dayobj < now)
					{
						  returnVal = "PAST_DATE";
					}
					else
					{
						  returnVal = "VALID_DATE";
					}

			}//valid format

			return returnVal;

}



function validateForm(idArray,formName)
{


			var errorFound = false;
			for(i=0;i<idArray.length;i++)
			{
						var element = document.getElementById(idArray[i]);
						warnSpan = idArray[i]+"WARN";

						switch(element.className)
						{
							 //validate input of class TEXT
						  case 'TEXT':

											if( element.value.length == 0)
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Mandatory Text Field";
											}
											else
											{
													document.getElementById(warnSpan).style.display = 'none';
											}

								break;

								//validate EMAIL
						  case 'EMAIL':

											if((element.value.length > 0 )&& (element.value.indexOf(".") > 2) && (element.value.indexOf("@") > 0))
											{
													document.getElementById(warnSpan).style.display = 'none';
											}

											else
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Valid Address Required";
											}

								break;

						  case 'PERCENT':

										 if( (element.value.length == 0)||(isNaN(element.value))||(element.value < 0))
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Positive Decimal Expected";
											}
											else
											{
													document.getElementById(warnSpan).style.display = 'none';
											}

								break;

								case 'POUND':

											if( (element.value.length == 0)||(isNaN(element.value))||(element.value < 0))
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Positive Decimal Expected";
											}
											else
											{
													document.getElementById(warnSpan).style.display = 'none';
											}

								break;

								case 'TEXT_AREA':
								    if( (element.value.length == 0)||(element.value.length < 10))
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Manadatory Text Area";
											}
											else
											{
													document.getElementById(warnSpan).style.display = 'none';
											}
								break;

									case 'IMAGE':


								   if( (element.value.length == 0))
											{

													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Image File Required";
											}
											else
											{
													document.getElementById(warnSpan).style.display = 'none';
											}

								break;

									case 'MEDIA':

		         var validTypes = new Array('avi','mpg','wmv','flv','pdf');

									  if( (element.value.length == 0) || (!validateFileType(element.value,validTypes)) )
											{

													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Valid File Required";
											}
											else
											{
													document.getElementById(warnSpan).style.display = 'none';
											}

								break;

									case 'DATE':

										var dateCheck = checkdate(element);

		        	if(dateCheck == 'INVALID_FORMAT')
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Invalid Date Format<br/>dd/yy/mm expected";
											}
											else if(dateCheck == 'INVALID_DATE')
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Invalid Date";
											}
											else if(dateCheck == 'PAST_DATE')
											{
													errorFound = true;
													document.getElementById(warnSpan).style.display = 'block';
													document.getElementById(warnSpan).innerHTML = "Date must be in the future";
											}
											else if(dateCheck == 'VALID_DATE')
											{
													document.getElementById(warnSpan).style.display = 'none';
											}

								break;

						}


			}//for

			if(!errorFound)
			{
					document.getElementsByName(formName)[0].submit();
			}

}


