// SRC="H99_form_val.js"
// Application: beachrentalsofdaytona.com
//
// Copyright July 2005, brymar.net - All rights reserved.
//
ckinClr = 1; ckoutClr = 1; phoneClr = 1
function clrCkin(){if(ckinClr){document.request_H01.ckin.value = ""; ckinClr = 0}}
function clrCkout(){if(ckoutClr){document.request_H01.ckout.value = ""; ckoutClr = 0}}
function clrPhone(){if(phoneClr){document.request_H01.phone.value = ""; phoneClr = 0}}
//
function snapTo(snapNum){document.request_H01[snapNum].focus()}
function snapSel(selNum){document.request_H01[selNum].select()}
function dsplyErr(errNum){if(errMsg == ""){return}; alert(msgList[errNum])}
//
msgList = new Array(22)
msgList[0] = "unknown error."
msgList[1] = "e-mail field is required."
msgList[2] = "Check-in and Check-out dates are both required fields."
msgList[3] = "Please enter a valid e-mail."
msgList[4] = "Please double check your e-mail entry."
msgList[5] = "Please enter a valid check-in date (mm/dd/yyyy)."
msgList[6] = "Please enter a valid check-out date (mm/dd/yyyy)."
msgList[7] = "Please enter a valid zip code (either nnnnn or nnnnn-nnnn)."
msgList[8] = "Please enter a valid phone number that includes area code (nnn)nnn-nnnn."
msgList[9] = "Please enter complete address information."
msgList[10] = "Ckeck-in date must be greater than current date."
msgList[11] = "Check-in date must be numeric."
msgList[12] = "Check-in month not valid."
msgList[13] = "Check-in day not valid."
msgList[14] = "Ckeck-out date can not be more than a year from now."
msgList[15] = "Check-out date must be numeric."
msgList[16] = "Check-out month not valid."
msgList[17] = "Check-out day not valid."
msgList[18] = "Name field is required."
msgList[19] = "Check-out date must be greater than check-in date."
msgList[20] = "Ckeck-in date can not be more than a year from now."
msgList[21] = "Entry must be numeric."
//
mDay = new Array(13)
mDay[0] = "  "
mDay[1] = "31"
mDay[2] = "29"
mDay[3] = "31"
mDay[4] = "30"
mDay[5] = "31"
mDay[6] = "30"
mDay[7] = "31"
mDay[8] = "31"
mDay[9] = "30"
mDay[10] = "31"
mDay[11] = "30"
mDay[12] = "31"
//
// >>>>  Begin form validation  <<<<
function valiForm(){errMsg = "";
                    if(!document.request_H01.name.value){errMsg = 18; dsplyErr(errMsg); snapTo(0); return false}; 
                    if(!document.request_H01.email.value){errMsg = 1; dsplyErr(errMsg); snapTo(8); return false}; 
                    if(!document.request_H01.ckin.value || ckinClr){errMsg = 2; dsplyErr(errMsg); snapTo(11); snapSel(11); return false}; 
                    if(!document.request_H01.ckout.value || ckoutClr){errMsg = 2; dsplyErr(errMsg); snapTo(12); snapSel(12); return false};
                    valiAddr(); if(valiAddr()){dsplyErr(errMsg); return false};
                    valiMail(); if(valiMail()){dsplyErr(errMsg); snapTo(8); snapSel(8); return false};
                    valiCkin(); if(valiCkin()){dsplyErr(errMsg); snapTo(11); snapSel(11); return false};
                    valiCkout(); if(valiCkout()){dsplyErr(errMsg); snapTo(12); snapSel(12); return false}
                   }
//  >>>> End form validation  <<<<
//  >>>> called form validation routines  <<<<
//
function valiDa(ckMo, ckDa){if(ckMo < "10"){ckMo = ckMo.slice(1)};
                            if(ckDa > mDay[parseInt(ckMo)] || ckDa < "01" || ckDa.length > 2){dayErr = 1} else dayErr = 0}
function valiAddr(){fldCnt = 0;  
                    if(document.request_H01.addr1.value){fldCnt = fldCnt + 1};
                    if(document.request_H01.city.value){fldCnt = fldCnt + 1};
                    if(document.request_H01.state.value || document.request_H01.country.value){fldCnt = fldCnt + 1};
                    if(document.request_H01.zip.value){fldCnt = fldCnt + 1};
                    if(fldCnt == 0 || fldCnt >= 4){return false} else errMsg = 9; return true}
function valiMail(){badStuff = " /:,;"; eAddr = document.request_H01.email.value;
                    for(i=0; i<badStuff.length; i++){badChar = badStuff.charAt(i); if(eAddr.indexOf(badChar) > -1){errMsg = 3; return true}};  // bad character found
                    atLoc = eAddr.indexOf("@", 1); if(atLoc == -1){errMsg = 3; return true};
                    dotLoc = eAddr.indexOf(".", atLoc); if(dotLoc == -1){errMsg = 3; return true}; if(dotLoc+3 > eAddr.length){errMsg = 3; return true};
                    return false}
//
function valiCkin(){curDate = new Date(); litZe = "0"; litCent = "20";    //   initialize values
                    nextYrin = (curDate.getYear() + 1).toString();
                    if(curDate.getYear() < 200){nextYrin = (curDate.getYear() + 1901).toString()};
                    curYr = (curDate.getYear()).toString();
                    if(curDate.getYear() < 200){curYr = (curDate.getYear() + 1900).toString()};
                    curMo = (curDate.getMonth() + 1).toString(); if(curMo.length == "1"){curMo = litZe.concat(curMo)}
                    curDa = curDate.getDate().toString();
                    curYMD = (curYr.concat(curMo)).concat(curDa);   // end build current date (yyyymmdd) string
                    nextYMDin = (nextYrin.concat(curMo)).concat(curDa);
                    Ckin = document.request_H01.ckin.value; ckinLen = Ckin.length;
                    inLoc1 = Ckin.indexOf("-", 1); if(inLoc1 == -1){inLoc1 = Ckin.indexOf("/", 1); if(inLoc1 == -1){errMsg = 5; return true}};
                    inLoc2 = Ckin.indexOf("-", inLoc1 + 1); if(inLoc2 == -1){inLoc2 = Ckin.indexOf("/", inLoc1 + 1); if(inLoc2 == -1){errMsg = 5; return true}};
                    ckinMo = Ckin.slice(0, inLoc1); ckinDa = Ckin.slice(inLoc1 + 1, inLoc2); ckinYr = Ckin.slice(inLoc2 + 1);
                    if(ckinMo.length < 2){ckinMo = litZe.concat(ckinMo)}; if(ckinDa.length < 2){ckinDa = litZe.concat(ckinDa)};
                    if(ckinYr.length == 1 || ckinYr.length == 3 || ckinYr.length > 4){errMsg = 5; return true};
                    if(ckinYr.length < 4){ckinYr = litCent.concat(ckinYr)};
                    ckinYMD = (ckinYr.concat(ckinMo)).concat(ckinDa); 
                    if(isNaN(ckinYMD)){errMsg = 11; return true};
                    if(ckinMo > 12 || ckinMo < 1){errMsg = 12; return true};
                    if(ckinYMD > nextYMDin){errMsg = 20; return true}; if(ckinYMD < curYMD){errMsg = 10; return true};
                    valiDa(ckinMo, ckinDa); if(dayErr){errMsg = 13; return true} else return false}
//
function valiCkout(){curDate = new Date(); litZe = "0"; litCent = "20";    //   initialize values
                    nextYrout = (curDate.getYear() + 1).toString();
                    if(curDate.getYear() < 200){nextYrout = (curDate.getYear() + 1901).toString()};
                    curYr = (curDate.getYear()).toString();
                    if(curDate.getYear() < 200){curYr = (curDate.getYear() + 1900).toString()};
                    curMo = (curDate.getMonth() + 1).toString(); if(curMo.length == "1"){curMo = litZe.concat(curMo)}
                    curDa = curDate.getDate().toString();
                    curYMD = (curYr.concat(curMo)).concat(curDa);      // end build current date (yyyymmdd) string
                    nextYMDout = (nextYrout.concat(curMo)).concat(curDa);
                    Ckout = document.request_H01.ckout.value; ckinLen = Ckout.length;
                    outLoc1 = Ckout.indexOf("-", 1); if(outLoc1 == -1){outLoc1 = Ckout.indexOf("/", 1); if(outLoc1 == -1){errMsg = 6; return true}};
                    outLoc2 = Ckout.indexOf("-", outLoc1 + 1); if(outLoc2 == -1){outLoc2 = Ckout.indexOf("/", outLoc1 + 1); if(outLoc2 == -1){errMsg = 6; return true}};
                    ckoutMo = Ckout.slice(0, outLoc1); ckoutDa = Ckout.slice(outLoc1 + 1, outLoc2); ckoutYr = Ckout.slice(outLoc2 + 1);
                    if(ckoutMo.length < 2){ckoutMo = litZe.concat(ckoutMo)}; if(ckoutDa.length < 2){ckoutDa = litZe.concat(ckoutDa)}; 
                    if(ckoutYr.length == 1 || ckoutYr.length == 3 || ckoutYr.length > 4){errMsg = 6; return true}; 
                    if(ckoutYr.length < 4){ckoutYr = litCent.concat(ckoutYr)};
                    ckoutYMD = (ckoutYr.concat(ckoutMo)).concat(ckoutDa); 
                    if(isNaN(ckoutYMD)){errMsg = 15; return true};
                    if(ckoutMo > 12 || ckoutMo < 1){errMsg = 16; return true}; 
                    if(ckoutYMD > nextYMDout){errMsg = 14; return true}; if(ckoutYMD < ckinYMD){errMsg = 19; return true};
                    valiDa(ckoutMo, ckoutDa); if(dayErr){errMsg = 17; return true} else return false}
//
