﻿/*
    FORM VALIDATION SCRIPT
    Copyright PERPLEX 2008
*/


///-------- CUSTOMISABLE VARIABLES ------------ 
var strColorOrg = '#FFFFFF'; 
var strBorderOrg = ''//'1px black solid';
var strColor = '#FFFFD0';   
var strBorder = ''//'1px red solid';
var msgString = '';

///--------------------------------------------
// Requires a special div like this (not runat=server!):  
//  <span id="errLabelJS"></span> 
// & including this div in the call of the function:
// return CheckForm('errLabel')
///--------------------------------------------

function CheckForm(msgEl) {
		document.getElementById("btnSend").value = 'Beoordeling wordt verzonden';
		document.getElementById("btnSend").disabled = true;
    var forms = document.forms.length;
    var f;
    //var msgString = '';
    var blnDo = true;
    var MSG, VP, FRM;
    for (f=0;f<forms;f = f + 1)
        {
        var lengte = document.forms[f].elements.length;    
        var i;
        for (i=0;i<lengte;i++)
            {  
            blnDo = false;
            var elCur = document.forms[f].elements[i];         
            var naam = elCur.name;
            var typeveld = elCur.type;
            var waarde = elCur.value;
            VP = elCur.getAttribute("VP"); // Verplicht
            if(VP != null)
                {   MSG = elCur.getAttribute("MSG"); // Message
                    FRM = elCur.getAttribute("FRM");} // Format
             else
                {   MSG = null;
                    FRM = null;}
            if((typeveld=='button')||(typeveld=='submit')){ // Skip buttons
                    continue;
                }
            if((VP == '1')&&(typeveld == "select-one")){ 								// Listbox
                    if(waarde=='0') {blnDo = true;}
                }
            if((VP == '1')&&(waarde == '')){            // Empty textbox
                    blnDo = true;
                   }
            if((VP == '1')&&(typeveld == "checkbox")){  // Empty checkbox
                    var status = elCur.checked;
                    if(status==false)
                    {blnDo = true;}
                   }
            if(blnDo == true){
                if(MSG != null)
                    { msgString = msgString + '<li>' + MSG + '</li>'; }
                    //elCur.focus();
                    //elCur.style.border = strBorder;
                    elCur.style.background =  strColor;
                    }
                else{   
                    //elCur.style.border = strBorderOrg; // Set default
                    elCur.style.background =  strColorOrg;
                    //continue;        
                    }   
              
                // Optional Formatting
               /*if(FRM == '1') FormatVoorLetters(waarde, naam); // Hoofdletters met puntjes
                if(FRM == '2') FormatNaam(waarde, naam); // Begin elk woord met hoofdletter
                if(FRM == '3') FormatTussenVoegsel(waarde, naam); // alles lowercase
                if(FRM == '4') FormatPostCode(waarde, naam); //    4 cijfers met 2 hoofdletters, geen spatie
                if(FRM == '5') FormatNummer(waarde, naam); // juiste nederlandse notatie*/
            } // end loop elements
      } // end loop forms
      
    // General checks (require fieldnames)
    //if(IsPostCode('Postcode') == false) { msgString = msgString + '<li>Postcode is onjuist</li>'; }
    if(IsEmail('Email') == false) { //msgString = msgString + '<li>E-mail adres is onjuist</li>';
    	}
    //if(IsTelefoonNummer('TextBox3') == false) { msgString = msgString + '<li>Telefoonnummer is onjuist</li>';}    
   // if(CheckDatum('Datum') == false) { msgString = msgString + '<li>Datum is onjuist</li>';}
    

    if((msgString != '')&&(msgString != null)) { // Check for output (true validation)
    				msgString = "Uw reactie is nog niet volledig:<hr>" + msgString  
            document.getElementById(msgEl).innerHTML = msgString;
            document.getElementById(msgEl).style.display = 'block';
            msgString = '';
						document.getElementById("btnSend").value = 'Voeg beoordeling toe';
						document.getElementById("btnSend").disabled = false;
            return false;	
            }
     else   {
            document.getElementById(msgEl).style.display = 'none';
            document.forms('frmMain').submit();
            return true;   
            }
    } // end function




function SchermMaximaal(){
    var maxLengte = screen.height - 1;
    var maxBreedte = screen.width - 1;
    top.window.resizeTo(maxBreedte,maxLengte);
    var windowX = 1;
    var windowY = 1;
    top.window.moveTo(windowY,windowX);
}

function SchermGecentreerd(width,height){
    var maxLengte = screen.height - 1;
    var maxBreedte = screen.width - 1;
    var posx = (maxBreedte-width)/2;
    var posy = (maxLengte-height)/2;
    top.window.moveTo(posx,posy);
}
        
function GetDate(){
    dayName = new Array("", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag");
    monName = new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
    now = new Date;
    document.write(dayName[now.getDay()] + " " + now.getDate() + " " + monName[now.getMonth()] + " " + now.getFullYear());
}

function Left(str, n)
{
    if (n <= 0)  
        return "";
    else if (n > String(str).length)
        return str;              
    else
        return String(str).substring(0,n);
}
 

function FormatNummer(waarde, naam)
{
    var forms = document.forms.length;
    var f;
    for (f=0;f<forms;f++)
        {
        var Naam = naam;
        var Nummer = waarde;
        var lengte = document.forms[f].elements.length;         
        Nummer = FormatNumber(Nummer, 2);
        var i;
        for (i=0;i<lengte;i++)
            {
            if(document.forms[f].elements[i].name == Naam)
                {
                document.forms[f].elements[i].value = Nummer;    // Nieuwe format in veld plaatsen
                return true;
                }
            }
        }
}
    

function FormatNumber(num,decimalNum)
{
    
    if (isNaN(parseInt(num))) return false;
    var tmpNum = num;
    var iSign = num < 0 ? -1 : 1;        // Get sign of number
    
    // Adjust number so only the specified number of numbers after
    // the decimal point are shown.
    tmpNum *= Math.pow(10,decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10,decimalNum);
    tmpNum *= iSign;                    // Readjust for sign
    
    // Create a string object to do our formatting on
    var tmpNumStr = new String(tmpNum);
    tmpNumStr = tmpNumStr.replace(".", ",");
    var iComma = tmpNumStr.indexOf(",");
    if(iComma > 0)
        {
        var Links = tmpNumStr.substring(0,iComma);
        var Rechts = tmpNumStr.substring(iComma,tmpNumStr.length);
        Rechts = Left((Rechts + "00"), 3);
        tmpNumStr = Links + Rechts;
        }
    else
        {
        tmpNumStr = tmpNumStr + ",00";
        }
    return tmpNumStr;        // Return our formatted string!
}    
    
    
function FormatPostCode(waarde, naam)
{
    var forms = document.forms.length;
    var f;
    for (f=0;f<forms;f++)
        {
        var Naam = naam;
        var PC = waarde;
        var lengte = document.forms[f].elements.length;         
        PC = PC.replace(/\s*/g, "");                // Spatie verwijderen
        PC = PC.toUpperCase();
        var i;
        for (i=0;i<lengte;i++)
            {
            if(document.forms[f].elements[i].name == Naam)
                {
                document.forms[f].elements[i].value = PC;    // Nieuwe format in veld plaatsen
                return true;
                }
            }
        }
}

function IsPostCode(naam)
    {
    var IsPostCode = true;
    var PC = document.getElementById(naam)
    var PCval = PC.value;
    if ((PCval.search(/^\d{4}[a-z]{2}$/i) == -1)&&(PCval.length > 0)) 
     // Klopt het patroon nu: 4 letters en 2 cijfers
        {
        //alert('De postcode moet bestaan uit 4 cijfers en 2 letters.');
        msgString += '<li>De postcode moet bestaan uit 4 cijfers en 2 letters.</li>';

        IsPostCode = false;
         if (PC.createTextRange)
             {        // Cursor aan het einde plaatsen
            var r = PC.createTextRange();
            r.moveStart('character', PCval.length);
            r.collapse();
            r.select();
            }
        PC.focus();
        PC.style.border = strBorder;
        PC.style.background =  strColor;
        }
    return IsPostCode;
    }


function IsTelefoonNummer(naam)
    {
    var IsTelefoonNummer = true;
    var TN = document.getElementById(naam);
    var TEL = TN.value;
    if ((TEL.search(/^[0]\d{9}$/) == -1)&&(TEL.length > 0))      
        {
        //alert('Dit nummer moet bestaan uit minimaal 10 cijfers en beginnen met een \'0\'.');
        msgString += "<li>Het nummer moet bestaan uit minimaal 10 cijfers en beginnen met een \'0\'.</li>";
        
        IsTelefoonNummer =  false;
         if (TN.createTextRange)
             {        // Cursor aan het einde plaatsen
            var r = TN.createTextRange();
            r.moveStart('character', TN.value.length);
            r.collapse();
            r.select();
            }
        TN.focus();
        TN.style.border = strBorder;
        TN.style.background =  strColor;
        }
    return IsTelefoonNummer;
    }

function FormatVoorLetters(waarde, naam)
{
    var Naam = naam;
    var PC = waarde;
    var HPC = '';
    var lengte = document.forms[0].elements.length;         
    PC = PC.replace(/\s*/g, "");            // Spatie verwijderen
    PC = PC.replace(/\./g, "");                // Punten verwijderen
    PC = PC.toUpperCase();
    var a;
    for(a=0;a<PC.length;a++)
        {
        HPC = HPC + PC.slice(a,a+1) + '.';        // Punten toevoegen
        }
    for (i=0;i<lengte;i++)
        {
        if(document.forms[0].elements[i].name == Naam)
            {
            document.forms[0].elements[i].value = HPC;    // Nieuwe format in veld plaatsen
            return true;
            }
        }
}

function FormatTussenVoegsel(waarde, naam)
{
    var Naam = naam;
    var PC = waarde;
    var lengte = document.forms[0].elements.length;         
    PC = PC.toLowerCase();
    var i;
    for (i=0;i<lengte;i++)
        {
        if(document.forms[0].elements[i].name == Naam)
            {
            document.forms[0].elements[i].value = PC;    // Nieuwe format in veld plaatsen
            return true;
            }
        }
}

function FormatNaam(waarde, naam)
{
    var Naam = naam;
    var PC = waarde;
    var HPC = '';
    var curWord = '';
    var Char1 = '';
    var CharRest = '';
    var lengte = document.forms[0].elements.length;         
    PC = PC.toLowerCase();
    arPC = PC.split(" ");
    var a;
    for(a=0;a<arPC.length;a++)
        {
        curWord = arPC[a];
        Char1 = curWord.substring(0, 1);
        CharRest = curWord.substring(1, curWord.length)
        HPC = HPC + Char1.toUpperCase() + CharRest + ' ';
        }
    while (HPC.substring(0,1) == ' ') HPC = HPC.substring(1);    // Trimmen van de laatste spatie
       while (HPC.substring(HPC.length-1,HPC.length) == ' ') HPC = HPC.substring(0,HPC.length-1);        
       var i;
    for (i=0;i<lengte;i++)
        {
        if(document.forms[0].elements[i].name == Naam)
            {
            document.forms[0].elements[i].value = HPC;    // Nieuwe format in veld plaatsen
            return true;
            }
        }
}


function IsEmail(naam)
{
    var IsEmail = true;
    var EM = document.getElementById(naam);
    var Naam = EM.name;
    var Email = EM.value;
    if (Email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.([A-Za-z0-9]+)$/) != -1) //
        {
        Email = Email.toLowerCase();    
        var ok = 0;
        var extensie = Email.substring(Email.lastIndexOf("."));
        var domeinen = new Array (".org",".com",".fm",".nl",".de",".nu",".info",".biz",".be",".net",".eu");
        for (var loop = 0; loop < domeinen.length; loop++)
        {
            domein = domeinen[loop];        
            if(extensie == domein)
                {
                  var ok = 1;
                  }
        }
        if(ok == 0)
        { // Extensie kwam niet voor in array van domeinen
            //alert('Emailadres ongeldig : domein \'' + extensie + '\' niet toegestaan.');
            msgString += '<li>Dit emailadres is ongeldig : domein \'' + extensie + '\' niet toegestaan..</li>';
            IsEmail = false;    
            if (EM.createTextRange)
                     {        // Cursor aan het einde plaatsen
                    var r = EM.createTextRange();
                    r.moveStart('character', EM.value.length);
                    r.collapse();
                    r.select();
                       }
        }
        // checken op topdomeinen :
        EM.value = Email;    // Nieuwe format in veld plaatsen
        }            
    else
        {
        if (Email.length > 0)
            {    
             msgString += '<li>Dit emailadres is ongeldig.</li>';
             if (EM.createTextRange)
                     {        // Cursor aan het einde plaatsen
                    var r = EM.createTextRange();
                    r.moveStart('character', EM.value.length);
                    r.collapse();
                    r.select();
                       }
            IsEmail = false;
            }
        }
    if(IsEmail == false){
        EM.focus();
        EM.style.border = strBorder;
        EM.style.background =  strColor;
        }
    return IsEmail;
    }


function AlleenGetallen() {    // alleen positieve getallen
    if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;
}

function AlleenGetallenKommaenStreepjeGeenPunt() {    // alleen positieve getallen, komma of streepje en geen punt
    if ((event.keyCode < 44 || event.keyCode > 57) || event.keyCode == 46 )event.returnValue = false;    //punt = 46, komma = 44, streepje = 45
}

function MakeUpper(waarde, naam) {
    var Naam = naam;
    var PC = waarde;
    var lengte = document.forms[0].elements.length;         
    PC = PC.toUpperCase();
    var i;
    for (i=0;i<lengte;i++)
        {
        if(document.forms[0].elements[i].name == Naam)
            {
            document.forms[0].elements[i].value = PC;    // Nieuwe format in veld plaatsen
            return true;
            }
        }
}
    
function GeenGetallen() {    // geen getallen
    if (event.keyCode > 44 && event.keyCode < 58) event.returnValue = false;
}

function AlleenDigits()    {    // alleen zowel positieve als negatieve getallen
    if (event.keyCode < 46 || event.keyCode > 57) event.returnValue = false;
}


function AlleenLettersEnSpatie(){
    if (event.keyCode > 44 && event.keyCode < 58) event.returnValue = false;

    if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97))
        {
        event.returnValue = false;
        }
    }

// Controleert juiste invoer USA datum (yyyy-mm-dd) format
function GeldigDatumFormat_old (datum) {    
    var Datum = datum;
    var dlength = datum.value.length;
    var i
    if (dlength < 8)
    {
        alert('Een geldige datum moet minimaal 8 tekens bevatten');
        Event.returnValue = false;
    }
    
}

function GeenRareTekens() {
    if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 
57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97))
        {
            alert("Alleen letters, cijfers en spaties zijn hier toegestaan.");
            event.returnValue = false;
        }
}



