/* ------------------------------------------------------ */
/* threadviewer Db-Schrijfnet: client-side javascript     */
/*           (c) 2003-2015 Renzo Kooi                     */
/* ------------------------------------------------------ */

/* check of cookies enabled zijn, 
   en of juiste browser, altijd */

/*----------[globale regexps voor controle op invoer]-----------*/
 var DiacSet           = "[äáàãâÄÁÀÂÃçÇëéèêËÉÈÊïíìîÏÍÌÎöóòõôÖÓÒÕÔüúùûÚÜÙÛÿýÝ]";
 var TitleSet          = "[0-9]|[\\\(\\\)\\s-\\.\\_\\'\\?\\!\\:\\,\\;\\\"\\\+]";
 var AlleenLetters     = "/[a-zA-Z]|"+DiacSet+"|[\\s]/"; 
 var LettersTekens     = "/[a-zA-Z]|"+DiacSet+"|[- \\s]/";
 var LettersMeerTekens = "/[a-zA-Z]|"+DiacSet+"|"+TitleSet+"/";
 var Titel             = "/[0-9]|[a-zA-Z]|"+DiacSet+"|"+TitleSet+"/";
 var LetterCijfer      = "/[a-zA-Z]|[0-9]|_/";
 var EmailChar         = "/[a-zA-Z]|[0-9]|[\_\.\@]|-/";
 var aHEX              = "/[a-fA-F]|[0-9]/";
 var pcLetters         = "/[a-zA-Z]/";
 var AlleenCijfers     = "/[0-9]/";


/* keyPress afvangen: zowel NN6 als IE5/6 
   NN6: charCode, omdat anders de ctrl en 
   andere toetsen niet meer werken (stooopid)  */
function CheckInput(evt,chkstr)
{
 if (navigator.appName.match(/netscape/i) 
     && evt.keyCode == 0)
   return AlfaCheck(evt.charCode,chkstr)
 else if (navigator.appName.match(/microsoft|explorer/i))
  return AlfaCheck(evt.keyCode,chkstr)
}

/* CHECK IE*/
function fnIsIE()
{
  var ua= navigator.userAgent;
  return ua.indexOf("MSIE") > 0 ? true : false;
}

/* IN: thisThread.asp. Zorgt dat gekozen bijdrage een     */
/*     highlightkleur en wijzertje krijgt                 */
/* ------------------------------------------------------ */
function fnThreadHighLight(sIID)
   {
    var oScrollEl = document.getElementById(sIID);
    returnIDS     = document.getElementsByTagName("TR");
    var sPoint    = '/pic/point.gif';
    var sPointBl  = '/pic/pointblank.gif';

    var oRedImg =  eval('document.images.R'+sIID)
      if (oRedImg)
       oRedImg.src = "/pic/sn/gelezen.gif"

     for (var x=0; x < returnIDS.length; x++)
     {
       var thisID   = returnIDS[x];
       sGetId       = 'i'+thisID.id; 

       if (sGetId  != 'i')
       {
        var oImg    = eval('document.images.'+sGetId)
       }
        if (thisID.id == String(sIID))
        {
          thisID.style.backgroundColor='#E6F2F2';
          if (sGetId != 'i')
           oImg.src = sPoint
        }
        else
        {
          thisID.style.backgroundColor='#FFFFF0';
           if (sGetId != 'i')
            oImg.src = sPointBl
        }   
     }
   window.scrollTo(0,(oScrollEl.offsetTop)-65);
 }

/* in getText.asp: waarschuwt en retourneert t/f obv userklik */
function fnWarnDelete()
{
   var WarnTxt = 'Let op!\n'+
                'Wanneer je deze bijdrage verwijdert, verwijder\n'+
                'je tevens alle recensies daaronder '+
                '(de gehele\n(sub)thread dus).\n\n'+
                'de (sub)thread wordt niet direct verwijderd, maar\n'+
                'blijft nog twaalf uur beschikbaar. Het is binnen de\n'+
                'verwijderde (sub)thread echter niet meer mogelijk te\n'+
                'bewerken of te reageren.\n\n'+
                'Verwijdering van een (sub)thread is definitief en\n'+
                'op geen enkele manier ongedaan te maken.\n\n'+
                'Deswege de vraag: weet je het zeker?';
   return confirm(WarnTxt)
}


/* IN: thisThread.asp. Haalt in topframe de geklikte      */
/*     titel op                                           */
/* ------------------------------------------------------ */
function fnShowTxt(sID)
  { bTtlVisible = false; 
    parent.frames.threadvw.fnThreadHighLight(sID);
    var sReplaceRef = "/snbeta3/mod_reader/getText.asp?textId="+sID;
    parent.frames.tekstvw.location.replace(sReplaceRef);
    parent.frames.tekstvw.focus();
    status="Done...";
    return
  }

/* IN: getText.asp. Zet titel bijdrage in bovenbalkje     */
/*     en zet een highlight in het threadvenster          */
/*     (onLoad-handler voor getText.asp)                  */                       
/* ------------------------------------------------------ */
function fnTtlInfo(sTitle,sID)
  {
    var oTitleBar = parent.frames.tekstvw.document.getElementById('ttlInfo');
    oTitleBar.innerHTML = sTitle.replace(/\*/,'');
    window.status = 'Done...';
  }

function fnSingleClick(oRef,sAction)
{
  if (String(oRef.href).match(/fnSingleClick/i))
  {
    ref.href="javascript:alert('je kunt deze knop maar een keer klikken.\n"+
              "Wacht svp op het vervolgscherm.\n"+
              "ga, als dit niet verschijnt, terug naar\n"+
              "de inhoudsopgave')";
    eval(sAction)
  }
   else 
    eval(ref.href)
}

function fnAnonLogin()
{
  var oForm=document.forms.loginForm;
  oForm.username.value='anoniem';
  oForm.passwd.value  ='anoniem';
  oForm.submit()
}

/*++++++++++++++++++OVERGENOMEN VAN SNOUD+++++++++++++++++++++*/
/*****************************************/
/* hulpjes bij SchrijfNet                */
/*                                       */
/* laatst bewerkt 26/05/02               */
/* (c)2002-2010 Renzo Kooi               */
/*****************************************/

/* alleen NN6.x, IE5/6.x 
if ( navigator.userAgent.indexOf('Netscape6')   < 0 &&
     navigator.userAgent.indexOf('MSIE 5')      < 0 &&
     navigator.userAgent.indexOf('MSIE 6')      < 0 &&
     navigator.userAgent.indexOf('Mozilla/5.0') < 0   )
 location.replace('/snbeta3/client/novalidbrws.html')*/

/*
document.onContextMenu = cRight();
document.onDragStart   = cRight();
document.onSelectStart = cRight();
*/

/* noContext */
function cRight()
{
 alert('(c) 2002 SchrijfNet')
}

/*--------------------------------------------------------------
  controleert of er een getal is ingevuld
  resultaat T/F                                               */
 function NumCheck(teken)
 {
   if (teken != '0' && !parseInt(teken))
    return false
   else
    return true
 } 

/*--------------------------------------------------------------
   controleert of er een teken binnen vooraf
   gedefinieerde range is ingevuld resultaat T/F              */
 function AlfaCheck(teken, ThisExp)
 {
  if (!String.fromCharCode(teken).match(eval(ThisExp)))
     return false
  return
 }

/* wordt in controle-functies gebruikt
   checkt [val] op regexp [soort]        
   zie voor regexps bovenin           */
function CheckInval(val,soort)
{
  var srtarr = val.split("");
  for (var i=0;i<srtarr.length;i++)
  {
    if (!srtarr[i].match(eval(soort)))
     return true
  }
 return false
}

/* checkPassField: controleer wachtwoord-velden
   op juiste tekens & synchroniteit             */
function checkAlzheimer()
{
 var alertTxt = "je invoer is onvolledig of onjuist\n";
 var isOk     = true;
 var theForm  = document.forms[0];
 var rE       = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
  if (!rE.test(theForm.eaddress.value) || 
       !theForm.eaddress.value           )
    { 
      alertTxt += "* onjuist formaat email-adres/geen email ingevuld";
      isOk      = false 
    } 
   if (!isOk)
    { 
       alert(alertTxt);
       return false 
    }
 return true
}

/* checkPassField: controleer wachtwoord-velden
   op juiste tekens & synchroniteit             */
function checkPassField()
{
 var alertTxt = "je invoer is onvolledig of onjuist\n";
 var isOk     = true;
 var theForm  = document.forms[0];
   if (CheckInval(theForm.passwd.value,LetterCijfer))
   { 
      alertTxt += "* uw wachtwoord is te lang,\n"+
                  "   bevat onjuiste tekens "+
                  "of is niet ingevuld\n";
      isOk      = false 
    } 
   if (theForm.passwd.value != theForm.passwd2.value)
   {
      alertTxt += "* de wachtwoorden komen niet overeen";
      isOk      = false 
   }
    if (!isOk)
    { 
       alert(alertTxt);
       return false 
    }
 
 return true
}

/* checkOldUsrFld: controleer emailveld
   bestaande gebruiker                   */
function checkOldUsrFld()
{
 var alertTxt = "je invoer is onvolledig of onjuist\n";
 var isOk     = true;
 var theForm  = document.forms[0];
 var rE       = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
  if (!rE.test(theForm.eaddress.value) || 
       !theForm.eaddress.value           )
    { alertTxt += "* onjuist formaat email-adres/geen email ingevuld";
      isOk      = false } 
  if (!isOk)
    { alert(alertTxt);
      return false }
 return true
}

/* checkUsrFlds: controle invoer gebruikersvelden (OBSOLETE)
   (naam/emailadres) op volledigheid & juistheid */
function fnCheckUsrFlds()
{
 var alertTxt = "je invoer is onvolledig of onjuist\n";
 var isOk     = true;
 var theForm  = document.forms[0];
 var rE       = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
  if (theForm.username.value.length > 10          || 
      !theForm.username.value                     || 
      CheckInval(theForm.username.value,LetterCijfer))
    { alertTxt += "* gebruikersnaam is te lang (max 10 tekens),\n"+
                  "   bevat onjuiste tekens "+
                  "of is niet ingevuld\n";
      isOk      = false } 
  if (!rE.test(theForm.eaddress.value) || 
       !theForm.eaddress.value           )
    { alertTxt += "* onjuist formaat email-adres/geen email ingevuld";
      isOk      = false } 
  if (!isOk)
    { alert(alertTxt);
      return }

 /********usr_rs.js neemt het hier over*******/
  fnPostData()
}

function fnSubmitEdited()
{
  if (checkEditFlds())
   document.forms[0].submit()
}

function fnSubmitRe()
{
  if (fnCheckReFlds())
   document.forms[0].submit()
}

function chkTTL(sTtl)
{ var cando = true;
  var aTTL = sTtl.split('');
  for (i=0;i<aTTL.length;i++)
   if (!aTTL[i].match(eval(Titel+"gi")))
   { cando = false; break; return cando }

  return cando
}

function fnSubmitNewThread()
{
  if (checkFlds())
   document.forms[0].submit()
}

//!theForm.subject.value.match(eval(sTtlChk)
/* fnCheckReFlds: invoer recensie              */
/* op volledigheid & juistheid controleren   */
function fnCheckReFlds()
{
 var alertTxt = "je invoer is onvolledig of onjuist\n";
 var isOk     = true;
 var theForm  = document.forms[0];
 var sTtlChk  = Titel+"i";
 if (!theForm.pseudo.value.match(/[a-z]|[\'\-\s ]|[0-9]/gi) || 
      theForm.pseudo.value.match(/<|>/gi)                   ||
      theForm.pseudo.value.length > 35                      )
    { alertTxt += "* geen of onjuiste naam ingevuld\n";
       if (theForm.pseudo.value.match(/<|>/gi))
        { alertTxt += "  (je kunt hier geen html gebruiken)\n" }
       if (theForm.pseudo.value.length > 35)
        { alertTxt += "  (je kunt maximaal 35 tekens gebruiken)\n" }
      isOk      = false } 
 if (!chkTTL(theForm.subject.value) || 
     theForm.subject.value.match(/<|>/gi))
    { alertTxt += "* geen of onjuiste titel ingevuld\n";
       if (theForm.subject.value.match(/<|>/gi))
        { alertTxt += "  (je kunt hier geen html gebruiken)\n" }
      isOk      = false } 
  if (!theForm.MssgTxt.value.match(/[a-z]/gi) || 
      theForm.MssgTxt.value.length <= 25 )
    { alertTxt += "* geen, of te korte tekst ingevuld\n  (tekst moet minimaal 1"+
                  " regel\n  met 25 tekens lang zijn)\n";
      isOk      = false } 
  if (theForm.MssgTxt.value.match(/(\/script)|(<script)|(<\/script)|(javascript\:)/gi) )
    { alertTxt += "* script-tags zijn in de tekst niet toegestaan\n";
      isOk      = false } 
  if (!isOk)
    { alert(alertTxt);
      return false }
 return true
}

/* checkFlds: invoer nieuwe bijdrage         */
/* op volledigheid & juistheid controleren   */
function checkFlds()
{
 var alertTxt = "je invoer is onvolledig of onjuist\n";
 var isOk     = true;
 var theForm  = document.forms[0];
 if (!theForm.pseudo.value.match(/[a-z]|[\'\-\s ]|[0-9]/gi) || 
      theForm.pseudo.value.match(/<|>/gi)                   ||
      theForm.pseudo.value.length > 35                      )
    { alertTxt += "* geen of onjuiste naam ingevuld\n";
       if (theForm.pseudo.value.match(/<|>/gi))
        { alertTxt += "  (je kunt hier geen html gebruiken)\n" }
       if (theForm.pseudo.value.length > 35)
        { alertTxt += "  (je kunt maximaal 35 tekens gebruiken)\n" }
      isOk      = false } 
 if (!theForm.subject.value.match(/[a-zA-Z]|[0-9]/gi) || 
     theForm.subject.value.match(/<|>/gi))
    { alertTxt += "* geen of onjuiste titel ingevuld\n";
       if (theForm.subject.value.match(/<|>/gi))
        { alertTxt += "  (je kunt hier geen html gebruiken)\n" }
      isOk      = false } 
  if (theForm.CAT.value == 999)
    { alertTxt += "* kies een categorie!\n";
      isOk      = false } 
  if (!theForm.MssgTxt.value.match(/[a-z]/gi) || 
      theForm.MssgTxt.value.length <= 25 )
    { alertTxt += "* geen, of te korte tekst ingevuld\n  (tekst moet minimaal 1"+
                  " regel\n  met 25 tekens lang zijn)\n";
      isOk      = false } 
  if (theForm.MssgTxt.value.match(/(\/script)|(<script)|(<\/script)|(javascript\:)/gi) )
    { alertTxt += "* script-tags zijn in de tekst niet toegestaan\n";
      isOk      = false } 
  if (!isOk)
    { alert(alertTxt);
      return false }
 return true
}

/* checkEditFlds: invoer bewerkte bijdrage   */
/* op volledigheid & juistheid controleren   */
function checkEditFlds()
{
 var alertTxt = "uw bewerking is helaas onvolledig of onjuist\n";
 var isOk     = true;
 var theForm  = document.forms[0];
 if (!theForm.subject.value.match(/[a-zA-Z]/gi) || 
     theForm.subject.value.match(/<|>/gi))
    { alertTxt += "* geen of onjuiste titel ingevuld\n";
       if (theForm.subject.value.match(/<|>/gi))
        { alertTxt += "  (je kunt hier geen html gebruiken)\n" }
      isOk      = false } 
  if (theForm.CAT.value == 999)
    { alertTxt += "* kies een categorie!\n";
      isOk      = false } 
  if (!theForm.MssgTxt.value.match(/[a-zA-Z]/gi) || 
      theForm.MssgTxt.value.length <= 25 )
    { alertTxt += "* geen, of te korte tekst ingevuld\n  (tekst moet minimaal 1"+
                  " regel\n  met 25 tekens lang zijn)\n";
      isOk      = false } 
  if (theForm.MssgTxt.value.match(/(\/script)|(<script)|(<\/script)|(javascript\:)/gi) )
    { alertTxt += "* script-tags zijn in de tekst niet toegestaan\n";
      isOk      = false } 
  if (!isOk)
    { alert(alertTxt);
      return false }
 return true
}

function fnImgUpDown(oImg,bDown)
{
 if (!oImg)
   return

  var sSrc = String(oImg.src);

  var sExt = '.gif';

   if (sSrc.match(/jpg/))
    var sExt = '.jpg'

   if (bDown)
    sSrc   = sSrc.replace(sExt,'_d'+sExt)
   else
     sSrc   = sSrc.replace('_d'+sExt,sExt)

  oImg.src = sSrc;
  return
}

/* WarnEdit: bewerken alleen door eigenaar     */
/* eigenaar-parameter wordt door script gezet  */
function WarnEdit(No_Owner)
{
  if (No_Owner && No_Owner != "LOCKED")
  {
   var WarnTxt = 'Je bent niet gerechtigd deze bijdrage te bewerken';
   alert(WarnTxt);
   return false
  }
 return true
}

/* WarnDelete: verwijderen alleen door eigenaar */
/* met waarschuwing voor consequenties          */
/* eigenaar-parameter wordt door script gezet   */


/* Tja? wat was dit ook alweer? O ja, replace
   'harde spaties'                           */
function SpaceReplace()
{
  var theTxt  = document.forms[0].MssgTxt.value; 
  if (theTxt.match(/&amp;nbsp;/))
   alert("boe!");
  theTxt      = theTxt.replace(/&nbsp;/g,"bollocks");
  document.forms[0].MssgTxt.value = theTxt;
}


/* tekst textarea links lijnen (eenvoudige div) */
function TextLeft()
{
  var theTxt  = document.forms[0].MssgTxt.value; 
  var theSel  = document.forms[0].textLeft;
  var theCode = new Array("<div style=\"text-align:left\">","</div>");
  var sCode   = eval("/"+theCode[0]+"/i");
  if (!theSel.checked)
  {
    theSel.checked = false; 
    theTxt = theTxt.replace(theCode[0],"");
    theTxt = theTxt.replace(theCode[1],"");
    document.forms[0].MssgTxt.value = theTxt
  }
 else
  {
   if (theTxt.match(sCode))
    {
      alert("uw tekst is zo te zien al links gelijnd!");
      theSel.checked = true;
      return
    }
   theSel.checked = true;
   theTxt         = theCode[0]+theTxt+theCode[1];
   document.forms[0].MssgTxt.value = theTxt
  }
 return
}

function fnReTxtInfo(bHide)
{
  var oFull = document.getElementById("infoFull");
  var oPart = document.getElementById("infoPartial");
  var oTxt  = document.getElementById("textInfo");

  if (bHide)
  {
   oPart.style.visibility = 'visible';
   oFull.style.visibility = 'hidden';
   oPart.style.pixelLeft  = oTxt.offsetLeft+oTxt.offsetWidth-15;
  }
  else
  {
   oPart.style.visibility = 'hidden';
   oFull.style.visibility = 'visible';
   oFull.style.pixelLeft  = oTxt.offsetLeft+oTxt.offsetWidth-oFull.offsetWidth-2;
  }

}

function fnPrintWin(fileID)
{
  var openWinSettings = "height=600,width=600,status=yes,toolbar=no,menubar=no,"+
                        "location=no,scrollbars=yes,resizable=yes";
  var theLink         = "/cgi-bin/beta2/tview.cgi\?PWIN="+fileID;
  var printOpen = window.open(theLink,'pWin',openWinSettings);
  printOpen.focus();
}

function WaitIn()
{
    var theWaitWin = document.getElementById("WaitWin");
    theWaitWin.style.visibility='visible'
}

function fnWantCookie()
{
 var cookieName = 'testCookie' + (new Date().getTime());
 var cookieValue = 'test'
 document.cookie = cookieName + '='+cookieValue;
 var cookiesEnabled = document.cookie.indexOf(cookieName);
  
   if (cookiesEnabled == -1)
    location.replace('/snbeta3/client/nocooks.html')
}

/* BrowserCheck en document handlers voor NS6/7.x/Mozilla1.x) */
function fnCheckBrowser()
{
  /* alleen NN6.x, Mozilla,IE5/6.x */
  if ( navigator.userAgent.indexOf('Netscape6')   < 0 &&
       navigator.userAgent.indexOf('MSIE 5')      < 0 &&
       navigator.userAgent.indexOf('MSIE 6')      < 0 &&
       navigator.userAgent.indexOf('Mozilla/5.0') < 0   )
    location.replace('/snbeta3/client/novalidbrws.html')

  if (navigator.appName.match(/netscape/i) 
     && !navigator.userAgent.match(/netscape6/i) )
  { 
   document.captureEvents(Event.KEYPRESS)
   document.onkeypress =
    function (evt) 
    {
      if (evt.which >= 35 && evt.target.constructor=='Input')
      {
       if (evt.target.name == 'pseudo' ||
           evt.target.name == 'subject' )
         return AlfaCheck(evt.which,LettersMeerTekens)
      }
     return
    }
  }
}

//*************************************************************************
// nwthrinfo of newsvisibility
function fnGetInfo(sThisOne)
{
 if (sThisOne == 'COUNTER')
 {
  if (!document.getElementById('COUNTER'))
   return
  document.getElementById('NEWS').style.visibility='hidden';
  document.getElementById('COUNTER').style.visibility='visible'
 }
 else
 {
  if (!document.getElementById('NEWS'))
   return
  document.getElementById('NEWS').style.visibility='visible';
  document.getElementById('COUNTER').style.visibility='hidden'
 }
}
