// DEFINE VARIABLES

// whitespace characters
var whitespace = " \t\n\r";

// Check whether string s is empty.

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

/****************************************************************/

// Returns true if string s is empty or 
// whitespace characters only.

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
	// Check that current character isn't whitespace.
	var c = s.charAt(i);

	if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}



// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c ... in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isEmail (s)
{   

    var isFieldEmail = true;

    if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) isFieldEmail = false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) isFieldEmail = false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) isFieldEmail= false;
    else isFieldEmail = true;

    if (isFieldEmail == false) alert('You have not entered a valid e-mail address.');
    return isFieldEmail;
}

function isURL (s)
{
var isFieldURL = true;
if (isEmpty(s)) return true;
if ((s.charAt(0) != "h") && (s.charAt(1) != "t") && (s.charAt(2) != "t") && (s.charAt(3) != "p") && (s.charAt(4) != ":") && (s.charAt(5) != "/") && (s.charAt(6) != "/")) isFieldURL = false;

    // there must be >= 1 character before ., so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 6;
    var sLength = s.length;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != ".")) isFieldURL = false;

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) isFieldURL = false;
    else isFieldURL = true;


return isFieldURL;
}

function ValidSubmit()

{
  if (isEmpty(submit.SiteURL.value)) 
	{ alert('You have to enter the URL of your site.');
	   return false }
  if (isURL(submit.SiteURL.value) == false)
	{ alert('The URL you have entered is not valid.');
	   return false }
  if (isEmpty(submit.SiteName.value))
	{ alert('You have to enter the name of your site.');
	   return false }
  if (isURL(submit.BannerURL.value) == false)
	{ alert('The banner URL you have entered is not valid.');
	   return false }
  if (submit.Language.selectedIndex == 0)
	{ alert('You have to choose a language. If it is not listed, choose Other.');
	   return false }
  if (isEmpty(submit.keywords.value))
	{ alert('You have to enter the keywords of your site.');
	   return false }
  if (isEmpty(submit.Description.value))
	{ alert('You have to enter the description of your site.');
	   return false }

}

function CheckFeedback()
//Changed by WBR on October 17, 2006
//Altered fieldnames to avoid spam
{

  if (isEmpty(elvisfind_feedback.feedback_realname.value))
	{ alert ('You have to enter your name.');
	   return false }
  if (isEmpty(elvisfind_feedback.feedback_email.value))
	{ alert('You have to enter your e-mail address.');
	   return false }
  if (isEmail(elvisfind_feedback.feedback_email.value) == false) return false;
  if (isEmpty(elvisfind_feedback.feedback_comments.value))
	{ alert('You have to enter some comment.');
	   return false }
  if (isURL(elvisfind_feedback.feedback_URL.value) == false)
	{ alert('The URL you have entered is not valid.');
	   return false }
}

function ValidEdit()

{
  if (isEmpty(submit.SiteURL.value)) 
	{ alert('You have to enter the URL of your site.');
	   return false }
  if (isURL(submit.SiteURL.value) == false)
	{ alert('The URL you have entered is not valid.');
	   return false }
  if (isEmpty(submit.SiteName.value))
	{ alert('You have to enter the name of your site.');
	   return false }
  if (isEmpty(submit.MemberName.value))
	{ alert('You have to enter your name.');
	   return false }
  if (isEmail(submit.MemberEmail.value) == false)
	{ return false }
  if (isURL(submit.BannerURL.value) == false)
	{ alert('The banner URL you have entered is not valid.');
	   return false }
  if (submit.Language.selectedIndex == 0)
	{ alert('You have to choose a language. If it is not listed, choose Other.');
	   return false }
  if (isEmpty(submit.keywords.value))
	{ alert('You have to enter the keywords of your site.');
	   return false }
  if (isEmpty(submit.Description.value))
	{ alert('You have to enter the description of your site.');
	   return false }
  if (submit.PasswordDB.value != submit.Password.value)
	{ alert('The password you have entered is not the same as the one you registered with. Enter the correct password.');
	   return false }

}

function CheckVote()

{
  if (isEmpty(vote.name.value))
	{ alert ('You have to enter your name.');
	   return false }
  if (isEmpty(vote.email.value))
	{ alert('You have to enter your e-mail address.');
	   return false }
  if (isEmail(vote.email.value) == false) return false;
  if (vote.contents.value < 1)
	{ alert('Invalid rating for content.');
	   return false }
  if (vote.contents.value > 10)
	{ alert('Invalid rating for content.');
	   return false }
  if (vote.design.value < 1)
	{ alert('Invalid rating for design.');
	   return false }
  if (vote.design.value > 10)
	{ alert('Invalid rating for design.');
	   return false }
}

function ConfirmDelete(id)
{

var DeleteSite = false;
DeleteSite = confirm('Are you sure you wish to delete this site, including all votes and reviews?');
if (DeleteSite == true)
  {
    window.navigate('scripts/delete.asp?id=' + id);
  }

}

function CheckComments()

{
  if (isEmpty(comments.name.value))
	{ alert ('You have to enter your name.');
	   return false }
  if (isEmpty(comments.email.value))
	{ alert('You have to enter your e-mail address.');
	   return false }
  if (isEmail(comments.email.value) == false) return false;
  if (isEmpty(comments.comment.value))
	{ alert ('You have to enter your comments.');
	  return false }
  if (comments.rating.value < 1)
	{ alert('Invalid rating for content.');
	   return false }
  if (comments.rating.value > 5)
	{ alert('Invalid rating for content.');
	   return false }
}

function CheckForgotPassword()

{
  if (isEmpty(emailform.email.value))
	{ alert('You have to enter your e-mail address.');
	   return false }
  if (isEmail(emailform.email.value) == false) return false;
}

function CheckRegister()

{
  if (isEmpty(register.name.value))
	{ alert ('You have to enter your name.');
	   return false }
  if (isEmpty(register.email.value))
	{ alert('You have to enter your e-mail address.');
	   return false }
  if (isEmail(register.email.value) == false) return false;
  if (isEmpty(register.password.value))
	{ alert ('You have to enter your password twice.');
	  return false }
  if (isEmpty(register.password2.value))
	{ alert ('You have to enter your password twice.');
	  return false }
  if ((register.password.value) != (register.password2.value)) 
	{ alert ('You have to enter the same password twice.');
	  return false }
}