function retrievePrefix(id) {
   lastIndex = id.lastIndexOf(":");
   return(lastIndex != -1 ? id.substring(0, lastIndex + 1) : "");
}

function retrieveForm(id) {
   firstIndex = id.indexOf(":");
   formId = firstIndex != -1 ? id.substring(0, firstIndex) : id;
   for (var i = 0; i < document.forms.length; i++) {
      if (document.forms[i].id == formId) {
         return(document.forms[i]);
      }
   }
   return(null);
}

function retrieveFormFromObject(obj) {
    var forms = document.forms;
    for(var i = 0; i < forms.length; i++) {
        if (isDescendant(forms[i], obj)) {
            return forms[i];
        }
    }
    
    return null;
}

function isDescendant(father, obj) {
    if (father == null) {
        return false;
    }
    if (obj == null) {
        return false;
    }
    
    if (father == obj) {
        return true;
    }
    
    try {
        var childArr = father.childNodes;
    
        if (childArr == null) {
            return false;
        }
        
        for (var i = 0; i < childArr.length; i++) {
            if (isDescendant(childArr[i], obj)) {
                return true;
            }
        }
        
        return false;
    } catch (err) {
        return false;
    }
}

var iyIsValid = true;

function iyValidation() {
	var iyIsValidAux = iyIsValid;
	iyIsValid = true;
	return(iyIsValidAux);
}

function setSelection(elem, prefix, evt) {
   var form = elem.form;
   var elements = getElements(form, prefix);
   var anchor = form[prefix + "-Anchor"];
   if (evt.shiftKey == true) {
      for (var i = 0; i < elements.length; i++) {
         if (elem.id < anchor.value) {
            if ((elements[i].id >= elem.id) && (elements[i].id <= anchor.value)) {
               elements[i].checked = true;
            } else {
               elements[i].checked = false;
            }
         } else {
            if ((elements[i].id >= anchor.value) && (elements[i].id <= elem.id)) {
               elements[i].checked = true;
            } else {
               elements[i].checked = false;
            }
         }
         
      }
   } else {
      anchor.value = elem.id;
   }
};

function setSelectionAll(formId, prefix) {
   var form = document.getElementById(formId);
   var elements = getElements(form, prefix);
   var taggedAll = form[prefix + ":Tagged-All"];
   if (taggedAll != null) {
      taggedAll.checked = false;
      for (var i = 0; i < elements.length; i++) {
         taggedAll.checked = elements[i].checked;
         if (taggedAll.checked == false) {
            break;
         }      
      }
   }
}

function selectAll(elem, prefix) {
   var form = elem.form;
   var elements = getElements(form, prefix);
   for (var i = 0; i < elements.length; i++) {
      elements[i].checked = elem.checked;
   }      
}

function getElements(form, prefix) {
   var elements = new Array();
   for (var i = 0; i < form.length; i++) {
      firstIndex = form[i].id.indexOf(prefix + ":");
      if (firstIndex == 0) {
         lastIndex = form[i].id.lastIndexOf(":Tagged");
         if ((lastIndex == (form[i].id.length - 7)) && (lastIndex != -1)) {
            elements = elements.concat(form[i]);
         }
      }
   }
   return elements;
}

function validateCPF(elem, msg) {
   if (isValidCPF(elem.value) == false) {
      alert(msg);
      elem.focus();
   }
}

function isValidCPF(cpf) {
   if (cpf == '') {
      return true;
   }
   if (cpf.length != 12) {
      return false;
   }
   if (cpf.charAt(9) != '-') {
      return false;
   }
   for (var i = 0; i < 9; i++) {
      if ((cpf.charAt(i) < '0') || (cpf.charAt(i) > '9')) {
         return false;
      }
   }
   var digit1 = 0;
   var total1 = 0;
   for (var i = 0; i < 9; i++) {
      total1 = total1 + cpf.charAt(i) * (10 - i);
   }
   var rest1 = total1 % 11;
   if (rest1 >= 2) {
      digit1 = 11 - rest1;
   }
   if (digit1 != cpf.charAt(10)) {
      return false;
   }
   var digit2 = 0;
   var total2 = digit1 * 2;
   for (var i = 0; i < 9; i++) {
      total2 = total2 + cpf.charAt(i) * (11 - i);
   }
   var rest2 = total2 % 11;
   if (rest2 >= 2) {
      digit2 = 11 - rest2;
   }
   if (digit2 != cpf.charAt(11)) {
      return false;
   }
   return true;
}
