// JavaScript Document
var bCancel = false; 

		function validateform(form) {                                                                   
        if (bCancel) 
      return true; 
        else 
       return validateRequired(form); 
   } 

    function maxlength () { 
     this.aa = new Array("psc", "Položka PSČ: musí obsahovat nejvíce 5 znaků.", new Function ("varName", "this.maxlength='5'; this.mask=/^[0-9]+\.*$/; this.minlength='5';  return this[varName];"));
	 this.ab = new Array("ico", "Položka IČ: musí obsahovat nejvíce 8 znaků.", new Function ("varName", "this.maxlength='20'; this.mask=/^[0-9]*$/; this.minlength='8';  return this[varName];"));
     this.ac = new Array("tel1", "Položka Telefon1: musí obsahovat nejvíce 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.ad = new Array("tel2", "Položka Telefon2: musí obsahovat nejvíce 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.ae = new Array("tel3", "Položka Telefon3: musí obsahovat nejvíce 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.af = new Array("fax", "Položka fax: musí obsahovat nejvíce 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
    } 

    function required () { 
     this.aa = new Array("raison", "Položka Název CK: je povinná.", new Function ("varName", "this.maxlength='50';  return this[varName];"));
     this.ab = new Array("adresse", "Položka Ulice,čp: je povinná.", new Function ("varName", "this.maxlength='50';  return this[varName];"));
	 this.ac = new Array("psc", "Položka PSČ: je povinná.", new Function ("varName", "this.maxlength='5'; this.mask=/^[0-9]*$/; this.minlength='5';  return this[varName];"));
     this.ad = new Array("ville", "Položka Obec: je povinná.", new Function ("varName", " return this[varName];"));
     this.ae = new Array("ico", "Položka IČO: je povinná.", new Function ("varName", "this.maxlength='20'; this.mask=/^[0-9]*$/; this.minlength='8';  return this[varName];"));
	 this.af = new Array("branchnum", "Položka Pořadové číslo pobočky: je povinná.", new Function ("varName", "this.maxlength='8'; this.mask=/^[0-9]*$/; this.minlength='8';  return this[varName];"));
     this.ag = new Array("tel1", "Položka Telefon1: je povinná.", new Function ("varName", "this.maxlength='30'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.ah = new Array("fax", "Položka Fax: je povinná.", new Function ("varName", "this.maxlength='30'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.ai = new Array("mail", "Položka E-mail: je povinná.", new Function ("varName", " return this[varName];"));
	 this.aj = new Array("contact", "Položka Kontaktní osoba: je povinná.", new Function ("varName", " return this[varName];"));
	 this.ak = new Array("region", "Položka Region: je povinná.", new Function ("varName", "this.maxlength='50';  return this[varName];"));
    } 

    function mask () { 
     this.aa = new Array("psc", "Položka PSČ: je v neplatném formátu.", new Function ("varName", "this.maxlength='5'; this.mask=/^[0-9]*$/; this.minlength='5';  return this[varName];"));
     this.ab = new Array("ico", "Položka IČ: je v neplatném formátu.", new Function ("varName", "this.maxlength='8'; this.mask=/^[0-9]*$/; this.minlength='8';  return this[varName];"));
     this.ac = new Array("tel1", "Položka Telefon 1: je v neplatném formátu.", new Function ("varName", "this.mask=/^[0-9]*$/;  return this[varName];"));
	 this.ad = new Array("tel2", "Položka Telefon 2: je v neplatném formátu.", new Function ("varName", "this.mask=/^[0-9]*$/;  return this[varName];"));
	 this.ae = new Array("tel3", "Položka Telefon 3: je v neplatném formátu.", new Function ("varName", "this.mask=/^[0-9]*$/;  return this[varName];"));
     this.af = new Array("fax", "Položka Fax: je v neplatném formátu.", new Function ("varName", "this.mask=/^[0-9]*$/;  return this[varName];"));
         } 

    function minlength () { 
     this.aa = new Array("psc", "Položka PSČ: musí obsahovat nejméně 5 znaků.", new Function ("varName", "this.maxlength='5'; this.mask=/^[0-9]*$/; this.minlength='5';  return this[varName];"));
	 this.ab = new Array("ico", "Položka IČO: musí obsahovat nejméně 8 znaků.", new Function ("varName", "this.maxlength='8'; this.mask=/^[0-9]*$/; this.minlength='8';  return this[varName];"));
     this.ac = new Array("tel1", "Položka Telefon 1: musí obsahovat nejméně 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.ad = new Array("tel2", "Položka Telefon 2: musí obsahovat nejméně 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.ae = new Array("tel3", "Položka Telefon 3: musí obsahovat nejméně 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
	 this.af = new Array("fax", "Položka Fax: musí obsahovat nejméně 9 znaků.", new Function ("varName", "this.maxlength='9'; this.mask=/^[0-9]*$/; this.minlength='9';  return this[varName];"));
    } 

function email(){
this.aa = new Array("mail", "Položka E-mail: je v neplatném formátu.", new Function ("varName", " return this[varName];"));
}

function TwoFieldsEquals(form) {
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            oTwoFields = new twofieldsequals();
            for (x in oTwoFields) {
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'password') {
            
                    var value;
                    var secondValue;
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                        value = field.options[si].value;
                        secondValue = secondField.options[si].value;
                    } else {
                        value = field.value;
                        secondValue = secondField.value;
                    }
                
                    if (value != secondValue) {
                    
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;
                    }
                }
            }
            
            if (fields.length > 0) {
                focusField.focus();
                alert(fields.join('\n'));
            }
            
            return bValid;
        }
function validateMaxLength(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMaxLength = new maxlength();
                for (x in oMaxLength) {
                    var field = form[oMaxLength[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' || field.type == 'password') {
                        
                        var iMax = parseInt(oMaxLength[x][2]("maxlength"));
                        if (field.value.length > iMax) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMaxLength[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
function validateRequired(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRequired = new required();
                for (x in oRequired) {
                	var field = form[oRequired[x][0]];
                	
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'file' ||
                        field.type == 'select-one' ||
                        field.type == 'radio' ||
                        field.type == 'password' ||
                        field.type == 'checkbox') {
                        
                        var value = '';
						// get field's value
						if (field.type == "select-one") {
							var si = field.selectedIndex;
							if (si >= 0) {
								value = field.options[si].value;
							}
						} else {
							value = field.value;
						}
                        
                        if (value == '') {
                        
	                        if (i == 0) {
	                            focusField = field;
	                        }
	                        fields[i++] = oRequired[x][1];
	                        isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
function TwoFieldsNotEquals(form) {
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            oTwoFields = new twofieldsnotequals();
            for (x in oTwoFields) {
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'password') {
            
                    var value;
                    var secondValue;
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                        value = field.options[si].value;
                        secondValue = secondField.options[si].value;
                    } else {
                        value = field.value;
                        secondValue = secondField.value;
                    }
                
                    if (value == secondValue) {
                    
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;
                    }
                }
            }
            
            if (fields.length > 0) {
                focusField.focus();
                alert(fields.join('\n'));
            }
            
            return bValid;
        }
function validateEmail(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oEmail = new email();
                for (x in oEmail) {
                    if ((form[oEmail[x][0]].type == 'text' ||
                         form[oEmail[x][0]].type == 'textarea') &&
                        (form[oEmail[x][0]].value.length > 0)) {
                        if (!checkEmail(form[oEmail[x][0]].value)) {
                            if (i == 0) {
                                focusField = form[oEmail[x][0]];
                            }
                            fields[i++] = oEmail[x][1];
                            bValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return bValid;
            }

            /**
             * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
             * http://javascript.internet.com
             */
            function checkEmail(emailStr) {
               if (emailStr.length == 0) {
                   return true;
               }
               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) {
                   return false;
               }
               var user=matchArray[1];
               var domain=matchArray[2];
               if (user.match(userPat) == null) {
                   return false;
               }
               var IPArray = domain.match(ipDomainPat);
               if (IPArray != null) {
                   for (var i = 1; i <= 4; i++) {
                      if (IPArray[i] > 255) {
                         return false;
                      }
                   }
                   return true;
               }
               var domainArray=domain.match(domainPat);
               if (domainArray == null) {
                   return false;
               }
               var atomPat=new RegExp(atom,"g");
               var domArr=domain.match(atomPat);
               var len=domArr.length;
               if ((domArr[domArr.length-1].length < 2) ||
                   (domArr[domArr.length-1].length > 3)) {
                   return false;
               }
               if (len < 2) {
                   return false;
               }
               return true;
            }
function validateMask(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMasked = new mask();
                for (x in oMasked) {
                    var field = form[oMasked[x][0]];
                    
                    if ((field.type == 'text' || 
                         field.type == 'textarea' || field.type == 'password') && 
                         (field.value.length > 0)) {
                        
                        if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMasked[x][1];
                            isValid = false;
                        }
                    }
                }
                
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }

            function matchPattern(value, mask) {
               return mask.exec(value);
            }
function validateMinLength(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMinLength = new minlength();
                for (x in oMinLength) {
                    var field = form[oMinLength[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' || field.type == 'password' ) {
                        
                        var iMin = parseInt(oMinLength[x][2]("minlength"));
                        if ((field.value.length > 0) && (field.value.length < iMin)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMinLength[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
