document.charset = "utf-8";

//Zend naar chat
function submitForm(form) {
        if (checkIt(form)) {
                document.entryform1.language.value = "7";
                form.action="http://www.questionpoint.org/crs/servlet/org.oclc.chat.ClientInit";
                form.submit();
          }
}

//Zend naar mail
        function submitFormMail(form) {
                if (checkIt(form)) {
                form.action = "/script/formulieren/qp/qp.php";
<!--                document.entryform1.language.value = "7";-->
                document.entryform1.email.value = form.chat_email.value;
                document.entryform1.name.value =  form.chat_name.value;
                form.submit();
                form.reset();
        }
}

//checkIt verifies that required fields contain data, that e-mail address conforms to proper
//e-mail syntax, and that the hidden library field contains data
function checkIt(form) {

        var name = form.chat_name.value;
        var email = form.chat_email.value;
        var emailconfirmed = form.emailconfirmed.value;
        var ques = form.question.value;
        var lib = form.library.value;
        var msg = '';

//document.entryform1.field1.value = request.ip;
document.entryform1.field2.value = document.referrer;
        if (document.URL.search("ADBPC")>0) {
        document.entryform1.field2.value = document.referrer+" vanaf ADBPC: "+document.URL;
        }
document.entryform1.field4.value = navigator.appName+" "+navigator.appVersion+" "+navigator.platform;


        //Make sure the E-mail field contains data
        if (email.length < 1) {
                msg += '* uw e-mail adres\r\n';
                document.entryform1.chat_email.focus();
        }


        // Make sure the Confirm e-mail address field contains some data
      if(emailconfirmed.length < 1) {
                      msg += '* bevestiging van e-mail-adres\r\n';
                     document.entryform1.emailconfirmed.focus();
                  }

        //Make sure Name field contains data
                if (name.length < 1)
                msg += '* uw naam\r\n';
                document.entryform1.chat_name.focus();

        if (ques.length < 1) {
                msg += '* uw vraag\r\n\r\nCorrigeer s.v.p. uw invoer...';
                document.entryform1.question.focus()
        }

        //Display message to patron if required field(s) are blank
        if (msg != '') {
                alert("Gegevens nog niet ingevuld:\r\n\r\n" + msg);
                return false;
        }

        //Display message if library hidden field is blank.
        if(lib.length < 1) {
                alert("Er zit een fout in deze pagina; mail whittier@uva.nl dat er een fout is op deze pagina m.b.t. het bibliotheeknummer s.v.p.\r\n");
                return false;
        }

        //control two equal mail-adrss
          if (email != emailconfirmed) {
                alert("Uw e-mail-adres is niet juist door u bevestigd!")
                return false;
        }

        //Check e-mail address for proper syntax by calling emailCheck function
        if (emailCheck(email, true)) {
                return true;
        }
        else {
          return false;
        }
}

//function that validates e-mail address syntax
function emailCheck (emailStr, alertflag) {
        var emailPat=/^(.+)@(.+)$/
        var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
        var validChars="\[^\\s" + specialChars + "\]"
        var quotedUser="(\"[^\"]*\")"
        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
        var atom=validChars + '+'
        var word="(" + atom + "|" + quotedUser + ")"
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
        var matchArray=emailStr.match(emailPat)

        if (matchArray==null) {
                        if (alertflag)
                alert("Dit e-mail-adres is niet juist. Corrigeer het s.v.p.")
                return false
        }

        var user=matchArray[1]
        var domain=matchArray[2]

        // See if "user" is valid
        if (user.match(userPat)==null) {
                // user is not valid
                 if (alertflag)
                alert("Deze naam als e-mail-adres is niet mogelijk.")
                return false
        }

        /* if the e-mail address is at an IP address (as opposed to a symbolic
           host name) make sure the IP address is valid. */
        var IPArray=domain.match(ipDomainPat)

        if (IPArray!=null) {
                // this is an IP address
                  for (var i=1;i<=4;i++) {
                        if (IPArray[i]>255) {
                  if (alertflag)
                                alert("Dit internet-adres is onjuist!")
                        return false
                        }
                }
                return true
        }

        // Domain is symbolic name
        var domainArray=domain.match(domainPat)

        if (domainArray==null) {
                  if (alertflag)
                alert("De domein-naam in uw E-mail-adres is onjuist.")
                return false
        }

        var atomPat=new RegExp(atom,"g")
        var domArr=domain.match(atomPat)
        var len=domArr.length
        musExp = /.museum/
        isMus = domain.search(musExp)

        if ( ( (domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 6) ) ||
                (domArr[domArr.length-1].length == 5) ||
                ( (domArr[domArr.length-1].length == 6) && (isMus == -1) ) ) {
           // the address must end in a two, three, or four letter word, or .museum.
          if (alertflag)
                   alert("De extensie van uw E-mail-adres (bijv. .nl) is onjuist.")
             return false
}
// Make sure there's a host name preceding the domain.
        if (len<2) {
           var errStr="Vul ook de naam van de provider van uw E-mail in: bijv. @hotmail."
                  if (alertflag)
           alert(errStr)
           return false
        }

        // If we've gotten this far, everything seems to be valid!
        return true;
}
