
function validateAdvanceSearchForm(form) {
   	if (form.dateRange[0].checked && isEmpty(form.query.value) && isEmpty(form.author.value) && (form.industry.value==-1)){
    	alert("Please supply a keyword, author, or industry");
    	return false;
    }

    if (form.save.checked && isEmpty(form.searchName.value)){
    	alert("Please supply a search name");
		return false;
    }

    //date range
	if(form.dateRange[2].checked){
		var startDate = form.startDate.value;
		var endDate = form.endDate.value;

		if (isEmpty(startDate) && isEmpty(endDate)) {
			alert("Please enter a date range");
			return false;
		} else if (!isEmpty(startDate) && !isValidDate(startDate, "'From' date")) {
			return false;
		} else if (!isEmpty(endDate) && !isValidDate(endDate, "'To' date")) {
			return false;
		}
	}

	//exact date
	if(form.dateRange[3].checked){
		var exactDate = form.exactDate.value;
		if (isEmpty(exactDate)) {
			alert("Please enter a date");
			return false;
		} else if (!isValidDate(exactDate, "'Exact date'")) {
			return false;
		}
	}

    return true;
}

function validateIssueForm(form){
	var date = form.issueDate.value;
    if (isEmpty(date)) {
    	alert("Please enter an issue date");
    	return false;
    } else if (!isValidDate(date, "'Issue Date'")) {
		return false;
	}
    return true;
}

function isValidDate(date, title){
	var DATE_FORMAT = "M/d/yyyy";
	if(!isDate(date, DATE_FORMAT)){
		alert("Invalid date!!  Please re-enter " + title + " in MM/dd/yyyy format.");
		return false;
	}
	return true;
}

function isEmpty(term){
	if( term.length == 0){
		return true;
	}
	var i=0;
	while( term.charAt(i) == " "){
		i++;
	}
	if( i == term.length){
		return true;
	}
	return false;
}

function isValidQuery(term){
	return (checkAsterisk(term) && checkQuotes(term) && checkQuestionMark(term));
}

function checkAsterisk(query)
{
  matches = query.match(/^[\*]*$|[\s]\*|^\*[^\s]/);
  if(matches != null)
  {
    alert("Invalid search query! The wildcard (*) character must be preceded by at least one alphabet or number. Please try again.")
    return false;
  }
  return true;
}

function checkQuotes(query)
{
  matches = query.match(/\"/g);
  if(matches != null && matches.length > 0)
  {
    var number = matches.length;
    if((number % 2) > 0)
    {
      alert("Invalid search query! Please close all quote (\") marks.");
      return false;
    }
    matches = query.match(/""/);
    if(matches != null)
    {
      alert("Invalid search query! Quotes must contain at least one character. Please try again.")
      return false;
    }
  }
  return true;
}

function checkQuestionMark(query)
{
  matches = query.match(/^(\?)|([^a-zA-Z0-9_+\-:.()\"*?&|!{}\[\]\^~\\@#$%'=]\?+)/);
  if(matches != null && matches.length > 0)
  {
    alert("Invalid search query! The question mark (?) character must be preceded by at least one alphabet or number. Please try again.")
    return false;
  }
  return true;
}

