// Copyright Basement.nl, 2009

var FForbiddenNames = new Array("hoi","doei","tot ziens","zeg ik niet","iemand","asdf","naam","mij","moi","je moeder","ik","ikke","lol","admin","moderator","woordjesleren.nl","jezus","allah","nvt","anoniem");
var FForbiddenWords = new Array("lul","kut","mongool","mogool","geil","kanker","hoer","bitch","poep","porno","neuken","neuk", "kk", "penis", "dom", "sterf");
var FPindakaasGesmeerd = false;

function IsValidEmail(AEmail)
{
  var LFilter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return (LFilter.test(AEmail));
}

function IsValidUrl(AUrl)
{
  var LFilter = /^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}((:[0-9]{1,5})?\/.*)?$/i;
  var LResult;
  var LUrl = AUrl.bas_trim();

  if ((LUrl == "") || (LUrl == "http://"))
    LResult = true
  else
  {
    LUrl = DoFormatUrl(LUrl);
    LResult = LFilter.test(LUrl);
  }
  return LResult;
}

function DoSmeerBoterhamMetPindakaas(APindakaasValue)
{
  var LPrefix = 'Go';
  var LMagicNumberArr = APindakaasValue.split(String.fromCharCode(92 / 2));
  var LPart1 = LMagicNumberArr[0] - 4;
  var LPart2 = LMagicNumberArr[1] - 34;
  var LPart3 = LMagicNumberArr[2] - 15;
  var LPart4 = LMagicNumberArr[3] - 1;
  var LMagicNumber = LPart1 + LPart2 + LPart3 - LPart4;
  FPindakaasGesmeerd = true;
  
  return LPrefix + String.fromCharCode(0x5F) + "home " + LMagicNumber;
}

function DoFormatUrl(AUrl)
{
  var LUrl = AUrl.bas_trim();

  if ((LUrl != "") && (LUrl != "http://"))
  {
    // Eventueel default protocol toevoegen
    if (LUrl.substr(0, 4) == "www.")
      LUrl = "http://" + LUrl;
    // Eventueel slash verwijderen
    if (LUrl.substr(LUrl.length - 1) == "/")
      LUrl = LUrl.substr(0, LUrl.length - 1);
  }
  return LUrl;
}

function IsValidName(AName)
{
  var I;
  var LAllCharsEqual = true;
  var LName = AName.toLowerCase();
  var LFirstChar = LName.charAt(0);
  
  for (I = 0; I < LName.length; I++)
  {
    if (LName.charAt(I) != LFirstChar)
    {
      LAllCharsEqual = false;
      break;
    }
  }
  
  return (!LAllCharsEqual && FForbiddenNames.bas_indexOf(LName) < 0 && FForbiddenWords.bas_indexOf(LName) < 0);
}

function IsValidWordLength(AText)
{
  var LWordLength = 0;
  var cMaxWordLength = 90;
  var LResult = true;

  for (var I = 0; I < AText.length; I++)
  {
    if (AText.charAt(I) == " " || AText.charAt(I) == "\n")
      LWordLength = 0
    else
    {
      LWordLength++;
      if (LWordLength > cMaxWordLength)
        LResult = false;
    }
  }
  return LResult;
}

function IsValidComment(AComment)
{
  var I;
  var LChar;
  var LWord = "";
  var LAlphabet = "abcdefghijklmnopqrstuvwxyz";
  var LComment = AComment.toLowerCase();
  var LComments = new Array();
  var LCommentValid = true;

  for (I = 0; I < LComment.length; I++)
  {
    LChar = LComment.charAt(I);

    if (LAlphabet.indexOf(LChar) < 0)
    {
      if (LChar == " " || LChar == "\n")
      {
        LComments[LComments.length] = LWord;
        LWord = "";
      }
    }
    else
      LWord = LWord + LChar;
  }
  if (LWord != "")
    LComments[LComments.length] = LWord;

  if (LComments.length == 1)
    LCommentValid = false
  else
  {
    for (I in LComments)
    {
      if (FForbiddenWords.bas_indexOf(LComments[I]) > -1)
      {
        LCommentValid = false;
        break;
      }
    }
  }
  return LCommentValid;
}

function DoRemoveDoubleChars(AText)
{
  var I;
  var LChar;
  var LPreviousChar = "";
  var LRepeatCount = 0;
  var LResult;
  var cMaxRepeat = 5;
  
  if (AText.length <= 4)
    LResult = AText;
  else
  {
    LResult = "";
    for (I = 0; I < AText.length; I++)
    {
      LChar = AText.charAt(I);

      if (LChar == LPreviousChar)
      {
        if (LRepeatCount < cMaxRepeat - 1)
        {
          LRepeatCount++;
          LResult = LResult + LChar;
        }
      }
      else
      {
        LRepeatCount = 0;
        LResult = LResult + LChar;
        LPreviousChar = LChar;
      }
    }
  }
  return LResult;
}

function DoRemoveDoubleWords(AText)
{
  var LText = AText.bas_trim();
  var LArray = LText.split(" ");
  var LLastWord = "";
  var LCurrentWord;
  var LRepeatCount = 0;
  var LResult = "";
  var I;

  for (var I = 0; I < LArray.length; I++)
  {
    LCurrentWord = LArray[I];
    if (LCurrentWord == "")
      LResult += " "
    else
    {
      if (LCurrentWord != LLastWord)
      {
        LResult += " " + LCurrentWord;
        LLastWord = LCurrentWord;
        LRepeatCount = 0;
      }
      else
      {
        if (LRepeatCount <= 3)
        {
          LResult += " " + LCurrentWord;
          LRepeatCount++;
        }
      }
    }
  }
  return LResult.bas_trim();
}

function DoRemoveDoubleLines(AText)
{
  var LArray = AText.split("\n");
  var LLastLine = "";
  var LCurrentLine;
  var LResult = "";
  var I;
  
  for (var I = 0; I < LArray.length; I++)
  {
    LCurrentLine = DoRemoveDoubleWords(LArray[I]);
    if (LCurrentLine != LLastLine)
    {
      if (LResult == "")
        LResult = LCurrentLine
      else
        LResult += "\n" + LCurrentLine;
      LLastLine = LCurrentLine;
    }
  }
  return LResult;
}
