// Copyright Basement.nl, 2009

var FForbiddenNames = ["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 = ["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 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 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 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 = [];
  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 = "";

  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 = "";
  
  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;
}
