/* Copyright (c) 2003 Forty Two International Pty. Ltd.
   All Rights Reserved.

   Modified by David Eyles 20/06/05 */

var lastElement = ""
var lastElementValue = "" 
var msg = ""
var ignoreEvent = 0 
var comMsg;
var messageSwitch = "";


	NS4 = (document.layers)
	IE = (document.all)

   function ValidateElement(El,Reqd,Type,Domain,Max,Local,Server,MinValue,MaxValue,Case, Caption,warningColor,msgs) { 
      msg = "";
      if (messageSwitch != ""){msgs = messageSwitch;}

      if (El == null) return true;
      formatField(El, Domain, Case);
         
      // validate fields 
      if (ignoreEvent) {}
 
      else {
         validateField(El,Reqd,Type,Domain,Max,Local,Server,MinValue,MaxValue, Caption); 
      }
 

      if (msg != "") {
         ignoreEvent = 1;
         lastElement = El.name
         lastElementValue = El.value
         ignoreEvent = 0;
        // if (El.type == "text") {
          //  El.focus();
            //El.select(); 
         //}
	if (IE) {
		El.style.background = warningColor;
	}
	comMsg = comMsg + msg

	if (msgs != "OFF"){

		 valMsg = "This field was not entered correctly:\n" +
        	 "____________________________________\n" +
	        msg + "\n____________________________________" +
	         "\n\nPlease re-enter it with the proper format!";


	
	     
        	 alert(valMsg);
	      
	}
     }else if (IE){El.style.background = "";}
   }

   function formatField(El, Domain, Case) {
      // transformations (no error messages)
      if (Case == "UPPER")
         {El.value = El.value.toUpperCase()}
      else if (Case == "LOWER")
         {El.value = El.value.toLowerCase()}
      else if (Case == "TITLE") {
         var s = El.value.toLowerCase();
         s = s.substring(0,1).toUpperCase() + s.substring(1,s.length);
         
         for (var i=1;i < s.length; i++) {
            if (s.substring(i - 1,i) == " ") {
               s = s.substring(0,i) +
               s.substring(i,i + 1).toUpperCase() +
               s.substring(i + 1,s.length);
            }
         }
         El.value = s;
      }
      else if (Domain == "HTML")
         {domainHtml(El)} 
   }

   function validateField(El,Reqd,Type,Domain,Max,Local,Server,MinValue,MaxValue, Caption) {

      if (El == null) return true;

      var msgStart = "\n       -  " + Caption + ": "; 
      msg = ""; 
      if (Reqd == "1") {
         var fErr=false;

         if (El.type == "select-one") { 
            if (El.options[El.selectedIndex].value == "")
               fErr = true;
         } else if (El.type == "select-multiple") { 
            if (El.selectedIndex == -1)
               fErr = true;
         } else if (El.type == null) {
            if (El[0].type == "checkbox" ||  El[0].type == "radio") {
                fErr = true;
                msgStart = "\n       -  " + Caption + ": ";
                var iLen = El.length;
                for(var i=0; i < iLen; i++) {
                   if (El[i].checked) {
                      fErr = false;
                      break;
                   }
                } 
            }
         } else {
            if (El.value == "")
               fErr = true; 
         }
         if (fErr)   
            msg="Required Field"; 
      }
      if (El.value == "")
      { }
      else if (Domain == "POSTAL")
      {domainPostal(El)}
      else if (Domain == "PHONE")
      {domainPhone(El)}
      else if (Domain == "EMAIL")
      {domainEmail(El)} 
      else if (Domain == "PERCENT")
      {domainPercent(El)}
      else if (Type == "MONEY")
      {typeCurrency(El,"$", 2, 0)}
      else if (Type == "DATE") 
      {typeDate(El)}
      else if (Type == "TIME") 
      {typeTime(El)}
      else if (Type == "NUMBER" && parseFloat(El.value) != El.value)
      {msg="Value Entered is not a Number";}
      else if (Type == "INTEGER" && parseInt(El.value,10) != El.value)
      {msg="Value Entered is not a Number";}
      else if (Type == "INTEGER" && parseInt(El.value,10) > 32768)
      {msg="Value Entered is not an Integer (0-32768)";} 
      else if (Type == "LISTBOX")
      {validateListbox(El);}
      else if (Type == "RADIO")
      {validateRadio(El);}
      else if (Type == "CHECKBOX")
      {validateCheckBox(El);}

      if (Max && El.value.length > Max)
      {msg="Maximum length of " + Max + " exceeded";}
      if (MinValue  && parseFloat(stringUtil(1,El.value,0,1,1,"$,%"),10) < MinValue )
      {msg="Value is out of range - Less than minimum of " + MinValue}
      if (MaxValue  && parseFloat(stringUtil(1,El.value,0,1,1,"$,%"),10) > MaxValue )
      {msg="Value is out of range - Greater than maximum value of " + MaxValue}
      
      if (msg == "") {
         return true;
      } else {
         msg = msgStart + msg;
         return false;
      }
   }

   function ibConfirmField(Elp, Elc, bDisplayAlert, Caption) { 

      msg = ""; 
      if (Elp.value != Elc.value) { 
         if (bDisplayAlert) {
            var valMsg;
            valMsg = "The '" + Caption + "' entry was not correctly confirmed.  " +
            "Be sure that the confirmation value exactly \n" +
            "matches the new value.";
            alert(valMsg);
            Elp.focus();
            Elp.select(); 
         } else {
            msg = "\n       -  " + Caption + ": Not correctly confirmed"; 
         }
      }
   }

    function typeDate(El) {

//! Select the date Format for the server location: USA = mm-dd-yy; INT = dd-mm-yy
//////var dFormat = "USA";
      var dFormat = "INT";

      var date, dDate, sDate, sDay, sMonth, sYear, today, delim, i, c, mPos, m1, m2, pos1, pos2, leapYearInd, msg, ok;
      monthNames = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
      monthDays  = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
      date       = El.value;
      today      = new Date();
      today      = today.toString();
         msg        = "";

      monthName = ""; mPos = 0
      delim = "";
      for (i=0; i < date.length; i++) {
        c = date.charAt(i);
        if (c < "0" || c > "9") {
          if (c < "A" || c > "Z") {
            if (c < "a" || c > "z") {
              delim = c;
            } else {
              if (mPos == 0 || mPos == i - 1) {monthName += c; mPos = i}
            }
          } else {
            if (mPos == 0 || mPos == i - 1) {monthName += c; mPos = i}
          }
        }
      }

      sMonth = "";
      if (monthName != "") {
        m1 = date.indexOf(monthName);
        m2 = m1 + monthName.length;
        monthName = date.substring(m1,m2);
        if (monthName.length > 3) {monthName = monthName.substring(0,3)}
        monthName = monthName.toUpperCase();
        for (i=0; i < 12; i++) {
          if (monthNames[i] == monthName) {
            sMonth = i + 1;
            break;
          }
        }

            if (sMonth == "") {msg = "Please check spelling"};
        if (m1 > 0) {dFormat = "INT"}
      }

      if (delim == "") {
        // no delimiter
        if (dFormat == "USA") {
          if (sMonth == "") {
            sMonth = date.substring(0,2)
            sDay = date.substring(2,4);
              sYear  = date.substring(4,date.length);
          } else {
            sDay = date.substring(m2,m2 + 2);
             sYear  = date.substring(m2 + 2,date.length);
          }
        } else {
          if (sMonth == "") {
            sMonth = date.substring(2,4)
              sYear  = date.substring(4,date.length);
          } else {
              sYear  = date.substring(m2 + 2,date.length);
          }
          sDay = date.substring(0,2);
        }
      } else {
        // has  delimiter 
        pos1 = date.indexOf(delim);
        pos2 = date.lastIndexOf(delim);
        if (pos2 == pos1) {pos2 = date.length};

        if (dFormat == "USA") {
          if (sMonth == "") {sMonth = date.substring(0,pos1)}
          sDay   = date.substring(pos1 + 1, pos2);
        } else {
          sDay   = date.substring(0,pos1);
          if (sMonth == "") {sMonth = date.substring(pos1 + 1, pos2)}
        }
        sYear  = date.substring(pos2 + 1, date.length);
      } 

      if (sYear.length < 4) {
         sYear = today.substring(today.length - 4,today.length - sYear.length) + sYear;
      }

      // validate 
      if (msg == "") { 
        ok = 1;
        for (i = 0; i < sYear.length; i++) {
         c = sYear.substring(i, i + 1);
         if (c < "0" || c > "9") {
            ok = 0;
            break;
         }
        }
      
        if (ok == 0) {msg = "Year (" + sYear + ") must be between 0001 and 9999"} else {
          if (eval(sDay < 01 || sDay > 31)) {msg = "Day (" + sDay + ") must be between 1 and 31"} else {
            if (eval(sMonth - 1) < 0 || eval(sMonth - 12) > 0) {msg = "Month (" + sMonth + ") must be from 01 to 12"} else {
              if (eval(sDay - monthDays[sMonth]) > 0) {
                if (eval(sMonth) == 2 && sDay == 29) {
                  leapYearInd = sYear / 4;
                  leapYearInd = leapYearInd.toString();
                  if (leapYearInd.indexOf(".") >= 0) {msg = leapYearInd.indexOf(".") + ", " + "29th is only valid for leap years"};
                } else {
                  msg = monthNames[sMonth - 1] + " has only " + monthDays[sMonth] + " days";
                }
              }
            }
          }
        }
      }
      if (msg != "") {
        alert(msg)
      } else {
        El.value = sDay + "-" + monthNames[sMonth - 1] + "-" + sYear;
      }
    }
          
   function typeTime(El) {
        var iTod = -1;
        var sTime, s, sTod;
        var sMin, sHour;
        
        sTime = trimString(El.value.toUpperCase()); 

        sTod  = "AM"
        if  (sTime.indexOf("PM") != -1) { 
            iTod = sTime.indexOf("PM");
            sTod = "PM"; 
        } else if (sTime.indexOf("AM") != -1) {
            iTod = sTime.indexOf("AM");
            sTod = "AM"; 
        }
        if (iTod != -1) {sTime = trimString(sTime.substring(0, iTod))}

        s = stringUtil(0,sTime, 1, 0, 0, ": ");
        if (s.length == 0 && sTime.length > 0) {    
            iCol1 = sTime.indexOf(":");
            if (iCol1 != -1) 
                s = ":"
            else {
                iCol1 = sTime.indexOf(" ");
                s = " ";
            }
            
            iCol2 = sTime.indexOf(s,iCol1+1); 
            if (iCol2 == -1) 
                iCol2 = sTime.length
   
            if (iCol1 < 0) {iCol1 = iCol2}
            sHour = sTime.substring(0,iCol1)  
            sMin = sTime.substring(iCol1+1,iCol2)

            if (sMin.length == 0) {sMin = "00"} else {if (sMin.length == 1) {sMin = "0" + sMin;}}
            
            if (sTod == "PM" && parseInt(sHour,10) < 13) {sHour = parseInt(sHour,10) + 12 + ""};
  
            if (sHour.length == 0 || parseInt(sHour,10) > 24 || parseInt(sMin,10) < 0 || parseInt(sMin,10) > 59) 
                msg = "Invalid Time Entered. Please use military format or AM/PM format with ':'";
            else {
                newdate = new Date('01/01/97 ' + sHour + ':' + sMin + ':00');
                newdate = newdate.toLocaleString(); 
                if (newdate.indexOf('Invalid') != -1) 
                    msg = "Invalid Time Entered. Please use military format or AM/PM format with ':'";
                else {
                    if (parseInt(sHour,10) > 12) {sHour = parseInt(sHour,10) - 12 + ""; sTod = "PM"}
                    if (parseInt(sHour,10) == 0) {sHour = "12"}
                    if (sHour.length == 1) {sHour = "0" + sHour}
                    El.value = sHour + ':' + sMin + ' ' + sTod;
                }
            } 
        } else {
          msg = "Invalid Time Entered. Please use military format or AM/PM format with ':'"
        } 
   }  
   
    function domainPostal(El) {
        var s, sPostal;
        var fValid, iLen;
        s = stringUtil(0, El.value,1,0,0,"-");
        if (s.length == 0) {  
            s = stringUtil(1, El.value, 0, 0, 0, "-");   
           iLen = s.length;  
            fValid = 1;
            if (iLen == 9) {
               sPostal = s.substring(0,5) + "-" + s.substring(5,10)
            } else if (iLen == 5) {
               sPostal = s;
            } else if (iLen == 4) {
               sPostal = s;
            } else {
               fValid = 0;
            }
            if (fValid) 
                El.value = sPostal; 
            else if (msg.length == 0)
                msg = "Invalid postal number.";
                 
        } else {
            msg ="Invalid postal number. '" + s + "' is not a valid character for this field.";
        }
    } 
    
    function domainPhone(El) { 
        var s, sPhone;
        var fValid, iLen;
             
        s = stringUtil(0, El.value,1,1,1,"()-. ");
        if (s.length == 0) {  
            s = stringUtil(1, El.value, 0, 0, 0, "()-. ");   
            iLen = s.length;  
            fValid = 1;
            if (iLen == 7) { 
                msg = "You must enter an area code."; 
                fValid = 0;
            } else if (iLen == 10) { 
                sPhone = "(" + s.substring(0,3) + ") " + s.substring(3,6) + "-" + s.substring(6,10);
            } else if (iLen == 11) {
                sPhone = s.substring(0,1) + " (" + s.substring(1,4) + ") " + s.substring(4,7) + "-" + s.substring(7,11);
            } else if (iLen == 12) {
                sPhone =  "(" + s.substring(0,2) + " " + s.substring(2,5) + ") " + s.substring(5,8) + "-" + s.substring(8,12);
            } else {
                fValid = 0;
            } 
            if (fValid) 
                El.value = sPhone; 
            else if (msg.length == 0)
                msg = "Invalid phone number.";
                 
        } else {
            msg = "Invalid phone number. '" + s + "' is not a valid character for this field.";
        }
        
    }
    
    function domainEmail(El) { 
        var s, sAddr, sDomain;
        var iErr=0;
        
        El.value = trimString(El.value);
        if (!El.value.length) return; 
        iPos = El.value.indexOf("@");
        if (iPos != -1 && iPos != El.value.length - 1) {
            sAddr = El.value.substring(0,iPos);
            sDomain = El.value.substring(iPos + 1, El.value.length);
            s = stringUtil(0, sAddr,1,1,1,"_-."); 
            if (s.length > 0) {
                if (s == "@")
                    iErr = 2;
                else
                    iErr = 3;
            } else {
                s = stringUtil(0, sDomain,1,1,1,"_-.");
                if (s.length > 0) {
                    if (s == "@")
                        iErr = 2;
                    else 
                        iErr = 3;
                } 
                iPos = sDomain.lastIndexOf(".");
                if (iPos == -1 || iPos == sDomain.length -1)
                    iErr = 1;
            } 
        } else {
            iErr = 1;
        }
        
        if (iErr > 0) 
            msg="Invalid email address.";
        if (iErr == 2)
            msg="Invalid Email address. Too many '@' characters.";
        else if (iErr == 3)
            msg="Invalid email address. '" + s + "' is not a valid character for this field.";
    }

    function domainPercent(El) { 
        var s, sWhole, sPart, sMinus; msg;
        var i, j, iPos, iLen; 
        var invalidPercentMsg = "Please enter a percentage between 0.00 and 100.00";
        
        sWhole=""; sPart=""; sMinus="";
        El.value = trimString(El.value);
        s = stringUtil(0, El.value,1,0,0,".-");
        if (!s.length) {
           if (El.value.charAt(0) == "-") sMinus = "-"; 

           iPos = El.value.lastIndexOf(".");
           if (iPos != -1) iPos = El.value.length - iPos - 1;
            
           sWhole = stringUtil(1, El.value, 0, 0, 0, ".-");
           if (!sWhole.length) return;

           if (iPos != -1) {
              iLen   = sWhole.length;
              sPart  = sWhole.substring(iLen - iPos, iLen); 
              sWhole = sWhole.substring(0, iLen - iPos); 
           }
           if (!sWhole.length) sWhole = "0"; 
           if (!sPart.length) sPart = "00";
           if (sPart.length > 2) {
              sPart = sPart.substring(0,2) + "." + sPart.substring(2,sPart.length);
              sPart = Math.round(sPart)+"";
              if (sPart.length > 2) {
                 sWhole = eval(sWhole) + eval(sMinus + "1") + "";
                 for (i=0, sPart = ""; i < 2; i++ , sPart += "0");
              }
           } else {
              for (i=sPart.length; i < 2; i++) {sPart += "0";}
           }

           if (eval(sWhole) > 100 || (eval(sWhole) == 100 && eval(sPart) > 0)) msg += invalidPercentMsg;

        } else {
           msg += invalidPercentMsg;
        }
        
        if (!msg.length) { 
            El.value = sMinus + sWhole + "." + sPart;
        } 
    }

    function typeCurrency(El,sSign, iDec, iFormat) { 
        var s, sDollars, sCents, sMinus;
        var i, j, iPos, iLen; 
        
        sDollars=""; sCents=""; sMinus="";
        El.value = trimString(El.value);
        s = stringUtil(0, El.value,1,0,0,"().+-,"+sSign);
        if (!s.length) {
            if (El.value.charAt(0) == "-" || (El.value.charAt(0) == "(" && El.value.charAt(El.value.length-1) == ")"))
                sMinus = "-"; 
            iPos = El.value.lastIndexOf(".");
            
            if (iPos != -1) 
                iPos = El.value.length - iPos - 1;
            
            sDollars = stringUtil(1, El.value, 0, 0, 0, "().-,"+sSign);
            if (!sDollars.length) return;
            if (iPos != -1) {
                iLen = sDollars.length;
                sCents = sDollars.substring(iLen - iPos, iLen); 
                sDollars = sDollars.substring(0, iLen - iPos); 
            }
            if (!sDollars.length) sDollars = "0"; 
            if (!sCents.length) sCents = "00";
            if (sCents.length > iDec) {
                sCents = sCents.substring(0,iDec) + "." + sCents.substring(iDec,sCents.length);
                sCents = Math.round(sCents)+"";
                if (sCents.length > iDec) {
                    sDollars = eval(sDollars) + eval(sMinus + "1") + "";
                    for (i=0, sCents = ""; i < iDec; i++ , sCents += "0");
                }
            } else {
              for (i=sCents.length; i < iDec; i++) {sCents += "0";}
            }
            j=0;
            for (i=sDollars.length-1; i >= 0; i--, j++) { 
                if (j%3 == 0 && j > 0)
                    sDollars = sDollars.substring(0,i+1) + "," + sDollars.substring(i+1, sDollars.length);
            }
        } else {
            msg = "Invalid currency value. Eg. 1.00";
        }
        
        if (!msg.length) { 
            sDollars = sSign + sDollars + "." + sCents;
            if (!iFormat)
                sDollars = sMinus + sDollars;
            else if (iFormat == 1 && sMinus == "-")
                sDollars = "(" + sDollars + ")";
                
            El.value = sDollars;
        } 
    }

   function domainHtml(El) {
        var i = 1
        var work = El.value
        var strLength = work.length
        var search = "\r"
        var replace = "<br>"
        var hasHtml = "<"
        
        if (work.indexOf(hasHtml) == -1) {
            while (i <= strLength) { 
                pos  = work.indexOf(search,i);
                if (work.substring(pos+1,work.length) != "") {
                    if (pos !=-1) 
                        work = work.substring(0,pos) + replace + work.substring(pos+1,work.length);
                }
                i = pos + 1;
                if (pos == -1) i = 99999;
            }
            El.value = work;
        }
    }

   function showMsg(El,msg) {
        if (msg != "") {
            ignoreEvent = 1;
            lastElement = El.name
            lastElementValue = El.value
            ignoreEvent = 0;
            if (El.type == "text") {
               El.focus();
               El.select(); 
            }
            alert(msg);
        }
    }
  
   function clearSelect(selectElement) {
       var cnt = selectElement.length
       for (var i=0; i < cnt; i++)
            selectElement.options[0] = null;
   }

   function stringUtil(iMode, sString, fNumeric, fUAlpha, fLAlpha, sSpecial) { 
        var iLen, i; 
        var s, c;
        var fFlag=1;
        
        s = ""; c = "";
        iLen = sString.length;
        for (i=0; i < iLen; i++) {
            c = sString.charAt(i); 
            if (fNumeric && c >= "0" && c <= "9")
                fFlag = 1; 
            else if (fUAlpha && c >= "A" && c <= "Z")
                fFlag = 1;
            else if (fLAlpha && c >= "a" && c <= "z")
                fFlag = 1;
            else if (sSpecial.indexOf(c) != -1) 
                fFlag = 1;
            else
                fFlag = 0;
            
            if (!fFlag) {
                if (iMode == 0) 
                    break;
                else  
                    s += c; 
            }
        } 
        if (iMode == 0) {
            if (fFlag)
                s = "";
            else
                s = c; 
        }
        
        return s;  
   }
   
   function getFieldName(El) {
      var sCaption;
      
      if (El.type) 
         sCaption = El.name;
      else
         sCaption = El[0].name; 
                  
      var aName = sCaption.split("_")
      if (aName.length == 3)
         sCaption = aName[2]; 
         
      return sCaption;
   }
   
   function trimString(sString) {
      var i, iLen;
      var sTrim;
      
      sTrim = sString;
      
      iLen = sTrim.length;
      for (i = 0; i < iLen && sTrim.charAt(i) == " "; i++); 
      if (i > 0 && i < iLen) 
         sTrim = sTrim.substring(i, iLen);
         
      iLen = sTrim.length - 1;
      for (i = iLen; i >=0 && sTrim.charAt(i) == " "; i--); 
      if (i < iLen && i >= 0)
         sTrim = sTrim.substring(0, i+1); 

      return sTrim;
   } 
	 

function masterValidate(fObj,msgs){
	messageSwitch = msgs;
	coreMasterValidate(fObj,msgs);
}


function coreMasterValidate(formObj,msgs){
	var i = 0;
	comMsg = 'These fields were not entered correctly:\n';
	comMsgLength = comMsg.length;

	while ((i < formObj.elements.length)){

		if (eligible(formObj.elements[i].type)){
			formObj.elements[i].focus();
			formObj.elements[i].blur();
		}
		i++;

	}
	formName = formObj;
	flag = msgs;
	setTimeout('finalise(comMsgLength,formName,flag)',10);
}

function finalise(comMsgLength,formObj,msgs){
	messageSwitch = "";
	if ((comMsgLength < comMsg.length) && (msgs == "OFF")){
		alert(comMsg);
	}
	else {
		buildAction(formObj)
		formObj.submit()
	}
}


	function eligible(type){
		switch (type.toUpperCase()){
			case "BUTTON":
			case "HIDDEN":
			case "SUBMIT":
			case "RESET":
				return false;
			default:
				return true;
				
		}
	
	}


function buildAction(formObj){
	var names = "ServerAttachmentNames='";
	var values = "ServerAttachmentPaths='";
	var i=0;
	var action;
	var oneExists = false;

	while ((i < formObj.elements.length)){
		El = formObj.elements[i]
		if (El.type.toUpperCase() == "FILE"){
			if (oneExists){
				names = names +  "," + El.name;
				values = values +  "," + El.value;
			}else{
				names = names + El.name;
				values = values + El.value;
				oneExists=true;
			}
		}
		i++;
	}

	names = names +"'";
	values = values + "'";
	action = formObj.action;
	
	if (action == null)
		action = "";
	
	// Check for an existing trailing ampersand.
	if (action.length > 0 && action.charAt (action.length - 1) == "&")
		action = action + names + "&" + values;
	else
		action = action + "&" + names + "&" +values;

	formObj.action=action;
}

function validateListbox (listbox) {

	if (!listbox.getElementsByTagName) {
		msg = "";
		return;
	}

	var options = listbox.getElementsByTagName("option");
	var q;
	for (q=0; q < options.length; q++) {
		if (options[q].defaultSelected) {
			if (options[q].selected) {
				returnval = false;
				msg += "Default value is selected."
			}
		}
	}
}

function validateRadio (radioButton) {
	var buttons;
	var rName;
	var oneChecked = false;
	var i = 0;

	if ((!radioButton.name)&&(radioButton.name == "")) { return; }

	buttons = document.getElementsByName(radioButton.name);

	if (buttons.length == 0) { return; }
	for(i=0; i < buttons.length; i++) {
		if ((buttons[i].type)&&(buttons[i].type.toLowerCase() == "radio")) {
			// radio button validation.
			if ((buttons[i].name != null)&&(buttons[i].name == radioButton.name)) {
				if (buttons[i].checked) {
					oneChecked = true;
				}
			}
		}
	}

	if (oneChecked == false) {
		msg += "No radio button selected."
	}

}

function validateCheckBox (checkbox) {
	if (!checkbox.checked) {
		msg = "Checkbox must be checked";
	}
}
