//*********************************************************************************
// Module Name : jsform.js
// Author      : Budiawan T
// Dated       : 07 OCT 2006
// Revision    : 1.0
// Rev. Date   : n/a
// Purpose     : To validate online submission form.
// Description : Any associated files please refer to your supervisor for the docs.
// Copyright by Netservo Services Sdn Bhd.
//*********************************************************************************
function validateForm(objForm){
	var formname = objForm.name;
	if (formname == "frmRequest") return validateFormRequest(objForm);
	if (formname == "frmEmailSubmission") return validateFormEmailSubmission(objForm);
	if (formname == "frmReservation") return validateFormReservation(objForm);
	return false;
}

function validateFormRequest(objForm){
    var fullname = document.getElementById("Fullname").value;
    var email = document.getElementById("Email").value;
    var telpno = document.getElementById("TelpNo").value;
    var message = document.getElementById("Message").value;

    if (fullname.length == 0){
        alert ("Please enter your name.");
        objForm.Fullname.focus();
        return false;
    }
    if (email.length != 0 && !isEmail(email)){
        alert ("Please enter a valid email.");
        objForm.Email.focus();
        return false;
    }
    //if (telpno.length == 0){
    //    alert ("Please enter your telephone number.");
    //    objForm.TelpNo.focus();
    //    return false;
    //}
    if (message.length == 0){
        alert ("Please enter your request.");
        objForm.Message.focus();
        return false;
    }
    if (objForm.Submit1.value == "Sending"){
        return false;
    }
    objForm.Submit1.value = "Sending";
    return true;
}

function validateFormEmailSubmission(objForm){
    var email = document.getElementById("EmailSubmission").value;

    if (email.length == 0 || !isEmail(email)){
        alert ("Please enter a valid email.");
        objForm.EmailSubmission.focus();
        return false;
    }
    if (objForm.Submit2.value == "Sending"){
        return false;
    }
    objForm.Submit2.value = "Sending";
    return true;
}

function validateFormReservation(objForm){
    var fullname = document.getElementById("Fullname").value;
    var email = document.getElementById("Email").value;
    var telpno = document.getElementById("TelpNo").value;
    var rsvtdate = document.getElementById("ReservationDate").value;
    var rsvttime = document.getElementById("ReservationTime").value;
    var branchname = document.getElementById("BranchName").value;
    var message = document.getElementById("Message").value;

    if (fullname.length == 0){
        alert ("Please enter your name.");
        objForm.Fullname.focus();
        return false;
    }
    if (email.length != 0 && !isEmail(email)){
        alert ("Please enter a valid email.");
        objForm.Email.focus();
        return false;
    }
    if (telpno.length == 0){
        alert ("Please enter your telephone number.");
        objForm.TelpNo.focus();
        return false;
    }
    if (rsvtdate.length == 0){
        alert ("Please enter your reservation date.");
        objForm.ReservationDate.focus();
        return false;
    }
    if (rsvttime.length == 0){
        alert ("Please enter your reservation time.");
        objForm.ReservationTime.focus();
        return false;
    }
    if (branchname.valueOf() == ""){
        alert ("Please select the branch.");
        objForm.BranchName.focus();
        return false;
    }
    //if (message.length == 0){
    //    alert ("Please enter your request.");
    //    objForm.Message.focus();
    //    return false;
    //}
    if (objForm.Submit3.value == "Sending"){
        return false;
    }
    objForm.Submit3.value = "Sending";
    return true;
}

function isEmail(pEmail) {
    var INVALIDCHARS = " #$%^&*(){}[];:'<>/\|?~`,";
    var ch, iAtPos, iPeriodPos, iRet, tempstr;

    pEmail.toLowerCase();   //** Convert all chars into small case.

    //**Before @ sign at least got 3 chars.
    ch = "@";
    iRet = pEmail.indexOf(ch)
    if (iRet <= 0) return false;
    iAtPos = iRet;

    //** Make sure there is one @ sign only.
    iRet = pEmail.indexOf(ch, iRet + 1)
    if (iRet != -1) return false;   //found more than one @ sign char.

    //** Make sure minimal have a dot (.) after @ sign.
    ch = ".";
    iRet = pEmail.indexOf(ch, iAtPos + 1)
    if (iRet <= 0) return false;
    iPeriodPos = iRet;

    //** Also make sure got 2 chars after @ sign.
    if ((iPeriodPos - iAtPos) <= 2) return false;

    //** Make sure after every period (.) got minimal 2 chars after @ sign.
    do {
        iRet = pEmail.indexOf(ch, iRet + 1 );
        if (iRet == -1) break;
        if ((iRet - iPeriodPos) <= 1) return false;
        iPeriodPos = iRet;
    } while (iRet == -1);


    //* also remember after last period (.) must have at least 2 chars go to.
    if ((pEmail.length - iPeriodPos) <= 2)  return false;

    //** NO INVALID CHARS ALLOWED.
    for (var i=0; i < INVALIDCHARS.length; i++) {
        ch = INVALIDCHARS.charAt(i);
        iRet = pEmail.indexOf(ch, iRet);
        if (iRet != -1) return false;
    }

    return true;
}