function getRemovedValues( tags ){
	var tagSet = "";
	var allTags = tags;
	if( tags!=null && tags.length>0 ){
		var tokenizer = TagTokenizer( tags );
		for( var i=0; i<tokenizer.length; i++ ){
			var tag = tokenizer[i].toUpperCase();
			if( tag.indexOf("<INPUT ")==0 && (tag.indexOf("TYPE=")==-1 || tag.indexOf("TYPE=TEXT")!=-1 || tag.indexOf("TYPE=\"TEXT\"")!=-1 || tag.indexOf("TYPE=HIDDEN")!=-1 || tag.indexOf("TYPE=\"HIDDEN\"")!=-1 ) ){
				if( tag.indexOf(" VALUE=")!=-1 ){
					var i1 = tag.indexOf(" VALUE=");
					var i2 = i1;
					if( tag.charAt(i1+7)=="\"" ){
						i2 = tag.indexOf("\"",i1+8)+1;
					}else if( tag.charAt(i1+7)=="'" ){
						i2 = tag.indexOf("'",i1+8)+1;
					}else{
						i2 = tag.indexOf(" ",i1+7);
					}
					tagSet += tokenizer[i].substring(0,i1) + tokenizer[i].substring(i2);
				}else{
					tagSet += tokenizer[i];
				}
			}else{
				tagSet += tokenizer[i];
			}
		}
	}
	
	return tagSet;
}

function TagTokenizer( tags ){
	var tokenizer = new Array();
	var stream = tags;
	var tag = "";
	var index = 0;
	while( index < stream.length ){
		var c = stream.charAt(index);
		if( (c=='<' || c=='>') && tag.length > 0 ){
			if(c=='>'){
				tag += c; 
				tokenizer[tokenizer.length]=tag;
				tag = "";
			}
			if(c=='<'){
				tokenizer[tokenizer.length]=tag;
				tag = c;
			}
		}else{
			tag += c;
		}
		index++;
	}
	if( tag.length > 0 ){
		tokenizer[tokenizer.length] = tag;
	}
	
	return tokenizer;
}

function getLastLine(attributeLines){
	var s = "";
	if (attributeLines.indexOf("<BR>") != -1){
		s=attributeLines.substring(attributeLines.lastIndexOf("<BR>")+4);
	}else{
		s = attributeLines;
	}
	
	return s;
}

function getRemovedRepeaters(line){
	var s="";
	var tt=TagTokenizer(line);
	var i=0,found=false;
	while(i<tt.length && !found){
		if( tt[i].indexOf("crementMultipleAttribute(")!=-1 ){
			found=true;
		}else{
			s+=tt[i];
		}
		i++;
	}

	return s;
}

function getRemovedLastLine(attributeLines){
	var s="";
	if( attributeLines.indexOf("<BR>")!=-1 ){
		s=attributeLines.substring(0,attributeLines.lastIndexOf("<BR>"));
	}else{
		s="";
	}

	return s;
}

function incrementMultipleAttribute(attrId,position){
	var spanObj = eval( "span_attr_"+attrId+"_0" );
	var spanContent = spanObj.innerHTML;

	var lastLine = getLastLine(spanContent);
	lastLine = getRemovedRepeaters(lastLine);
	spanContent = getRemovedLastLine(spanContent);

	var addedLine = "";
	var tt = TagTokenizer(lastLine);
	for(var i=0;i<tt.length;i++) addedLine += emptyValueTag(getIncrementedVariables(tt[i]));
      
	lastLine += "<A href=\"javascript:decrementMultipleAttribute('"+attrId+"',"+position+")\">"+
				"<IMG src=\"../icons/group-delete.gif\" border=\"0\" width=\"15\" height=\"12\" alt=\"Excluir\">"+
				"</A>";

	addedLine += "<A href=\"javascript:decrementMultipleAttribute('"+attrId+"',"+(position+1)+")\">"+
				 "<IMG src=\"../icons/group-delete.gif\" border=\"0\" width=\"15\" height=\"12\" alt=\"Excluir\">"+
				 "</A>"+
				 "<A href=\"javascript:incrementMultipleAttribute('"+attrId+"',"+(position+1)+")\">"+
				 "<IMG src=\"../icons/group-add.gif\" border=\"0\" width=\"15\" height=\"12\" ALT=\"Adicionar\">"+
				 "</A>";

	if( spanContent.length > 0 ) spanContent+="<BR>";

	spanContent += lastLine+"<BR>"+addedLine;
	spanObj.innerHTML = spanContent;
}
    
function decrementMultipleAttribute(attrId,position){
	var spanObj = eval( "span_attr_"+attrId+"_0" );
	var spanContent = spanObj.innerHTML;
	var lines = getLineArray( spanContent );
	var newLines = "";
	var i=0;
	while(i<position){
		var line = getRemovedRepeaters( lines[i] );
		line += "<A href=\"javascript:decrementMultipleAttribute('"+attrId+"',"+(i)+")\">"+
				"<IMG src=\"../icons/group-delete.gif\" border=\"0\" width=\"15\" height=\"12\" alt=\"Excluir\">"+
				"</A>";
		if(i==lines.length-2){
			line += "<A href=\"javascript:incrementMultipleAttribute('"+attrId+"',"+(i)+")\">"+
					"<IMG src=\"../icons/group-add.gif\" border=\"0\" width=\"15\" height=\"12\" ALT=\"Adicionar\">"+
					"</A>";
		}
		newLines += line + (i<lines.length-2?"<BR>":"");
		i++
	}
	i=position+1;
	var added=false;
	while(i<lines.length){
		var line=getRemovedRepeaters(lines[i]);
		line += "<A href=\"javascript:decrementMultipleAttribute('"+attrId+"',"+(i-1)+")\">"+
				"<IMG src=\"../icons/group-delete.gif\" border=\"0\" width=\"15\" height=\"12\" alt=\"Excluir\">"+
				"</A>";
		newLines += line + (i<lines.length-1?"<BR>":"");
		i++;
		added=true;
	}
	if(added){
		newLines += "<A href=\"javascript:incrementMultipleAttribute('"+attrId+"',"+(i)+")\">"+
					"<IMG src=\"../icons/group-add.gif\" border=\"0\" width=\"15\" height=\"12\" ALT=\"Adicionar\">"+
					"</A>";
	}
	if( newLines.indexOf("<BR>")==-1 ){
		newLines = getRemovedRepeaters(newLines);
		newLines += "<A href=\"javascript:incrementMultipleAttribute('"+attrId+"',"+0+")\">"+
					"<IMG src=\"../icons/group-add.gif\" border=\"0\" width=\"15\" height=\"12\" ALT=\"Adicionar\">"+
					"</A>";
	}

	spanObj.innerHTML = newLines;
}

    function getLineArray(attributeLines){
      var lines=new Array();
      if( attributeLines.indexOf("<BR>")!=-1){
        var s=attributeLines;
        while( s.indexOf("<BR>")!=-1 ){
          lines[lines.length] = s.substring( 0, s.indexOf("<BR>")+4 );
          s=s.substring(s.indexOf("<BR>")+4);
        }
        lines[lines.length]=s;
      }else{
        lines[lines.length]=attributeLines;
      }
      return lines;
    }

    function doSearchList( dataForm ){
      expandAllGroups( dataForm );
      assignCanvases( dataForm.name );
      dataForm.operation.value = "searchlist";
      dataForm.submit();
    }

    function doRefreshCorp( dataForm, id, ver, ln ){
      dataForm._ASSET_A_ID.value = id;
      dataForm._ASSET_A_VER.value = ver;
      dataForm._ASSET_A_LN.value = ln;
      dataForm.operation.value = "select";
      dataForm.submit();
    }

    function isContainedIn( val, valList ){
      var status = false;
      var valSplit=val.split(',');
      var listSplit=valList.split(',');
      for(var i=0;i<valSplit.length;i++){
        for(var j=0;j<listSplit.length;j++){
          if(valSplit[i]==listSplit[j]) status=true;
        }
      }
      return status;
    }

    var verifiedDependencies="";

    function isVerified( id ){
      var status = false;
      if( verifiedDependencies.indexOf( ',' + id + ',' )!=-1 ){
        status=true;
      }
      return status;
    }

    function verifyAllDependencies(){
      verifiedDependencies="";
      if( attributeDependencies!=null && attributeDependencies.length>0 ){
        var i=0;
        while(i<attributeDependencies.length){
          var depAttrId = attributeDependencies[i].dependencyAttrId;
          var baseField=null;
          var isDomain=false;
          if(eval("document.corporate._ATTR_DOMAIN_"+depAttrId)){
            baseField=eval("document.corporate._ATTR_DOMAIN_"+depAttrId);
            isDomain=true;
          }else{
            baseField=eval("document.corporate._ATTR_"+depAttrId);
          }
          if( isDomain ){
            if(!isVerified(depAttrId)){
              verifyDependency(baseField,depAttrId,null,depAttrId,false,0);
              verifiedDependencies+=','+depAttrId+',';
            }
          }else{
            if(baseField && baseField.length){
              if(!isVerified(depAttrId)){
                try{
                for(var j=0;j<baseField.length;j++){
                  verifyDependency(baseField[j],depAttrId,null,depAttrId,false,j);
                }
                }catch(error){
                  window.status=error.message;
                }
                verifiedDependencies+=','+depAttrId+',';
              }
            }else{
              if(!isVerified(depAttrId)){
                verifyDependency(baseField,depAttrId,null,depAttrId,false,0);
                verifiedDependencies+=','+depAttrId+',';
              }
            }
          }
          i++;
        }
      }
    }

    function getAttributeLock(attrId){
      var lock=false;
      if( allDomains!=null ){
        var i=0;
        while(!lock && i<allDomains.length){
          if(allDomains[i].id==attrId && allDomains[i].includeId){
            lock=true;
            t=allDomains[i].includeId;
          }
          i++;
        }
      }
      return lock;
    }

    function isRedundant(formField,value){
      var status=false;
      var i=0;
      if(formField.options.length>0){
        while(i<formField.options.length && !status){
          if(formField.options[i].value == value ) status=true;
          i++;
        }
      }
      return status;
    }

    function sortPair( formField, field ){
      var list = new Array();
      if( formField.options.length>1 ){
        for(var i=1;i<formField.options.length;i++){
          var itemValue = formField.options[i].value;
          var itemText  = formField.options[i].text;
          if(field=="value"){
            list[list.length] = itemValue + '~' + itemText;
          }else{
            list[list.length] = itemText + '~' + itemValue;
          }
        }
      }
      if( list.length>0 ){
        list.sort();
        formField.options.length = 1;
        formField.options[0].value="";
        formField.options[0].text="";
        for(var i=0;i<list.length;i++){
          formField.options.length++;
          var itemSplit = list[i].split('~');
          if(field=="value"){
            formField.options[i+1].value = itemSplit[0];
            formField.options[i+1].text = itemSplit[1];
          }else{
            formField.options[i+1].value = itemSplit[1];
            formField.options[i+1].text = itemSplit[0];
          }
        }
      }
    }

    function verifyDependency( formField, dependencyAttrId, dependencyAttrValue, thisAttrId, recursive, thisAttrSeq ){
      var status=true;
      if( formField && formField.name ){
        var isLock=getAttributeLock(thisAttrId);
        var srcCheckbox=false;
        for(var j=0;j<attributeDependencies.length;j++){
          if( attributeDependencies[j].dependencyAttrId == thisAttrId ){
            var myType = "";
            try{
              myType=formField[0].type.toLowerCase();
            }catch(error){
              myType=formField.type.toLowerCase();
            }
            var myValue = "";
            if( myType.substring(0,6)=="select" ){
              myValue=formField.options[formField.selectedIndex].value;
            }else if( myType.substring(0,8)=="checkbox"){
              srcCheckbox=true;
              if(formField.checked){
                myValue="Y";
              }else{
                myValue="N";
              }
            }else{
              myValue=formField.value;
            }
            if(srcCheckbox && eval("document.corporate.checkbox_safe_"+thisAttrId+"_"+thisAttrSeq)!=null){
              if(attributeDependencies[j].dependencyAttrValue==myValue){
                //mostra o conte?do do safe...
                if(eval("document.corporate.checkbox_safe_"+thisAttrId+"_"+thisAttrSeq+".value")!=""){
                  eval("span_check_"+thisAttrId+"_"+thisAttrSeq+".innerHTML=document.corporate.checkbox_safe_"+thisAttrId+"_"+thisAttrSeq+".value");
                  eval("document.corporate.checkbox_safe_"+thisAttrId+"_"+thisAttrSeq+".value=''");
                }
                //neste ponto deveria executar o verifyDependency para todos os campos abertos do safe...

              }else{
                //esconde o conte?do do safe...
                if(eval("span_check_"+thisAttrId+"_"+thisAttrSeq+".innerHTML")!=""){
                  eval("document.corporate.checkbox_safe_"+thisAttrId+"_"+thisAttrSeq+".value=span_check_"+thisAttrId+"_"+thisAttrSeq+".innerHTML");
                  eval("span_check_"+thisAttrId+"_"+thisAttrSeq+".innerHTML=''");
                }
              }
            }else{
              if(attributeDependencies[j].dependencyAttrValue!=null && attributeDependencies[j].dependencyAttrValue.length>0 ){
                //if(attributeDependencies[j].dependencyAttrValue==myValue){
                if( isMatchingDependency(myValue,attributeDependencies[j].dependencyAttrValue) ){
                  performDependencyAdjust(j,myValue,true,isLock,srcCheckbox,thisAttrSeq,thisAttrId);
                }else{
                  performDependencyAdjust(j,myValue,false,isLock,srcCheckbox,thisAttrSeq,thisAttrId);
                }
              }else{
                performDependencyAdjust(j,myValue,true,isLock,srcCheckbox,thisAttrSeq,thisAttrId);
              }
            }
            if( recursive==null || recursive ){
              verifyDependency( eval("document.corporate."+attributeDependencies[j].fieldName), attributeDependencies[j].dependencyAttrId, attributeDependencies[j].dependencyAttrValue, attributeDependencies[j].attrId, true, 0 );
            }
          }
        }
      }
      return status;
    }

    function getTrim( text ){
      var t=text;
      var i=0;
      if( t!=null ){
        while(t.length>0 && t.charAt(0)==' ') t=t.substring(1);
        while(t.length>0 && t.charAt(t.length-1)==' ') t=t.substring(0,t.length-1);
      }else{
        t="";
      }
      return t;
    }

    function isMatchingDependency( subjectValue, dependencyValue ){
      var status = false;
      if( dependencyValue.indexOf(',')!=-1 ){
        var valueSplit = dependencyValue.split(',');
        for(var i=0;i<valueSplit.length;i++){
          if( getTrim(subjectValue) == getTrim(valueSplit[i] ) ){
            status = true;
          }
        }
      }else{
        status = (subjectValue==dependencyValue);
      }
      return status;
    }

    function getSpanStartQty(spanPrefix){
      var qty=0;
      var allSpans = document.getElementsByTagName("span");
      for(var i=0;i<allSpans.length;i++){
        var currSpanId = allSpans[i].getAttribute("id");
        if( currSpanId.length>spanPrefix.length && currSpanId.substring(0,spanPrefix.length) == spanPrefix ){
          qty++;
        }
      }
      return qty;
    }

    function getSpanItem(spanName,index){
      var spanObject=null;
      var allSpans=document.getElementByTagName("span");
      var position=0;
      for(var i=0;i<allSpans.length;i++){
        if( allSpans[i].getAttribute("id") == spanName && position==index ){
          spanObject=allSpans[i];
          position++;
        }
      }
      return spanObject;
    }

    function performDependencyAdjust( attrIndex, value, match, isLock, srcCheckbox, attrSeq, parentAttrId ){
      try{
        var formField = eval("document.corporate."+attributeDependencies[attrIndex].fieldName);
        var spanName = "span_attr_"+attributeDependencies[attrIndex].attrId+"_"+attrSeq;
        var spanObject=eval(spanName);
        var spanContent=(spanObject?spanObject.innerHTML:"");
        if(isLock){
          // the current form field is a splitted combo...
          formField = eval("document.corporate."+attributeDependencies[attrIndex].fieldName);
          var originalValue=(formField.selectedIndex!=-1 ? formField.options[formField.selectedIndex].value : "" );
          if(originalValue.indexOf('^')!=-1) originalValue=originalValue.substring(0,originalValue.indexOf('^'));
          formField.options.length=1;
          formField.options[0].value="";
          formField.options[0].text="";
          //var value1 = (value!=null && value.indexOf('^')!=-1 ? value.substring(0,value.indexOf('^')) : value );
          var value1 = getExternalValue( parentAttrId,value);
          value1=value1.indexOf('^')!=-1?value1.substring(0,value1.indexOf('^')):value1;
          var found=false;
          for(var i=0;i<allDomains.length;i++){
            if(allDomains[i].id==attributeDependencies[attrIndex].attrId){
              if( allDomains[i].value.indexOf('^') != -1 ){
                if( allDomains[i].value.substring(allDomains[i].value.indexOf('^')+1)==value ){
                    formField.options.length++;
                    formField.options[formField.options.length-1].value=allDomains[i].internalId;
                    formField.options[formField.options.length-1].text=allDomains[i].value.substring(0,allDomains[i].value.indexOf('^'));
                }
              }
            }
          }
          if( formField.options.length>1 ){
            sortPair( formField, "value" );
            rebuildTitlePair(attributeDependencies[attrIndex].attrId,value,value1);
          }else{
            rebuildTitlePair(attributeDependencies[attrIndex].attrId,null,null);
          }
          if(originalValue!=""){
            var foundSelect=false;
            for(var i=0;i<formField.options.length;i++){
              if(formField.options[i].value==originalValue){
                formField.options[i].selected=true;
                foundSelect=true;
              }
            }
            if(foundSelect) filterTitlePair(attributeDependencies[attrIndex].attrId,originalValue);
          }
        }else{
          // the current form field is NOT a splitted combo...
          if(attributeDependencies[attrIndex].fieldType=="select"){  // aqui ? o tipo do campo dependente...
              var originalValue="";
              var myType="";
              if(formField.length && formField.length>1){
                myType=formField[attrSeq].type;
              }else{
                myType=formField.type;
              }
              if(myType=="text"){
                originalValue=formField.value;
              }else{
                originalValue=formField.options[formField.selectedIndex].value;
                if(originalValue.indexOf('^')!=-1){
                  originalValue=originalValue.substring(0,originalValue.indexOf('^'));
                }
              }
              if(myType=="text"){
                var k=spanContent.toLowerCase().indexOf("<input");
                if(k!=-1){
                  spanContent=spanContent.substring(0,k)+
                              "<select name=\"_ATTR_DOMAIN_" + attributeDependencies[attrIndex].attrId + "\" size=\"1\" "+
                              "onChange=\"verifyDependency(this,'" + attributeDependencies[attrIndex].dependencyAttrId + "','" + attributeDependencies[attrIndex].dependencyAttrValue + "','" + attributeDependencies[attrIndex].attrId +"',true,"+attrSeq+")\">"+
                              "<option value=\"\"></option></select>"+
                              spanContent.substring(spanContent.indexOf('>',k)+1);
                  spanObject.innerHTML=spanContent;
                }
              }      
              var matchCount=0;
              formField = eval("document.corporate."+attributeDependencies[attrIndex].fieldName);
              formField.options.length=1;
              formField.options[0].value="";
              formField.options[0].value="";
              var alreadySelected=false;
              for(var i=0;i<allDomains.length;i++){
                if(allDomains[i].id==attributeDependencies[attrIndex].attrId){
                  if(srcCheckbox){
                    formField.options.length++;
                    formField.options[formField.options.length-1].value=allDomains[i].value;
                    formField.options[formField.options.length-1].text=allDomains[i].text;
                    if(allDomains[i].value.indexOf('^')!=-1){
                      if(originalValue!="" && allDomains[i].value.substring(0,allDomains[i].value.indexOf('^'))==originalValue){
                        formField.options[formField.options.length-1].selected=true;
                      }else{
                        if(allDomains[i].value.substring(0,allDomains[i].value.indexOf('^'))==attributeDependencies[attrIndex].defaultValue){
                          formField.options[formField.options.length-1].selected=true;
                        }
                      }
                    }else{
                      if(originalValue!="" && allDomains[i].value==originalValue){
                        formField.options[formField.options.length-1].selected=true;
                      }else{
                        if(allDomains[i].value==attributeDependencies[attrIndex].defaultValue){
                          formField.options[formField.options.length-1].selected=true;
                        }
                      }
                    }
                  }else{
                    if( allDomains[i].value.indexOf('^')!=-1 && allDomains[i].value.substring(allDomains[i].value.indexOf('^')+1)==(value.indexOf('^')!=-1?value.substring(0,value.indexOf('^')):value) ){
                      formField.options.length++;
                      formField.options[formField.options.length-1].value=allDomains[i].value;
                      formField.options[formField.options.length-1].text=allDomains[i].text;
                      if(originalValue!="" && allDomains[i].value.substring(0,allDomains[i].value.indexOf('^'))==originalValue){
                        formField.options[formField.options.length-1].selected=true;
                        alreadySelected = true;
                      }else if(!alreadySelected){
                        if(allDomains[i].value.substring(0,allDomains[i].value.indexOf('^'))==attributeDependencies[attrIndex].defaultValue){
                          formField.options[formField.options.length-1].selected=true;
                        }
                      }
                      matchCount++;
                    }
                  }
                }
              }
              if(srcCheckbox){
                if(match){
                  formField.disabled=false;
                }else{
                  formField.disabled=true;
                }
              }else{
                if(matchCount==0){
                  //aqui precisa converter o field para texto...
                  if( domainContains(attributeDependencies[attrIndex].attrId,originalValue) ){
                    originalValue = "";
                  }
                  var k=spanContent.toLowerCase().indexOf("<select");
                  if(k!=-1){
                    spanContent=spanContent.substring(0,k)+
                                "<input type=\"text\" name=\"_ATTR_DOMAIN_" + attributeDependencies[attrIndex].attrId + "\" "+
                                "size=\"30\" maxlength=\"50\" onFocus=\"this.className='fieldOver'\" "+
                                "value=\"" + originalValue + "\" "+
                                "onBlur=\"this.className='fieldOut'\" "+
                                "onChange=\"verifyDependency(this,'" + attributeDependencies[attrIndex].dependencyAttrId + "','" + attributeDependencies[attrIndex].dependencyAttrValue + "','" + attributeDependencies[attrIndex].attrId +"',true,"+attrSeq+")\">"+
                                spanContent.substring(spanContent.toLowerCase().indexOf('</select>',k)+9);
                    spanObject.innerHTML=spanContent;
                  }
                }
              }
          }else{
            // nao eh um select...
            if(match){
              if(formField.length){
                //for(var f=0;f<formField.length;f++){
                  formField[attrSeq].disabled=false;
                //}
              }else{
                formField.disabled=false;
              }
            }else{
              if(formField.length){
                //for(var f=0;f<formField.length;f++){
                  ///formField[attrSeq].value="";
                  ///formField[attrSeq].disabled=true;
                //}
              }else{
                ///formField.value="";
                if(!srcCheckbox) formField.disabled=true;
              }
            }
          }
        }


      }catch(error){
       // alert(error.message);
      }
    }

    function getExternalValue( attrId, internalValue ){
      var externalValue = "";
      for(var i=0;i<allDomains.length;i++){
        if(allDomains[i].id==attrId){
          if(allDomains[i].internalId==internalValue){
            externalValue =(allDomains[i].value.indexOf('^')!=-1 ? allDomains[i].value.substring(0,allDomains[i].value.indexOf('^')) : allDomains[i].value );
          }
        }
      }
      return externalValue;
    }

    function getAttrIdForField(fieldName){
      var id=-1;
      for(var i=0;i<attributeDependencies.length;i++){
        if(attributeDependencies[i].fieldName==fieldName){
          id=attributeDependencies[i].attrId;
        }
      }
      return id;
    }

    function emptyValueTag(tag){
      var t="";
      var lt=tag.toLowerCase();
      if( lt.indexOf("<input")!=-1 
          && 
          (lt.indexOf('type=hidden')==-1 && lt.indexOf('type="hidden"')==-1 && lt.indexOf('type=button')==-1 && lt.indexOf('type="button"')==-1) 
          && 
          lt.indexOf("value=")!=-1
      ){
        var i=lt.indexOf("value=");
        var c=lt.charAt(i+6);
        var j=0;
        if( c=='"' ){
          j=lt.indexOf('"',i+7)+1;
        }else if( c=="'" ){
          j=lt.indexOf("'",i+7)+1;
        }else if( lt.indexOf(' ',i+7)!=-1 ){
          j=lt.indexOf(' ',i+7);
        }else{
          j=lt.indexOf(">",i+7);
        }
        t=tag.substring(0,i+6)+tag.substring(j);
        if(t.indexOf("value= ")!=-1 || t.indexOf("value=>")!=-1){
          t=t.substring(0,t.indexOf("value=")+6)+'""'+t.substring(t.indexOf("value=")+6);
        }
      }else{
        t=tag;
      }
      return t;
    }

    function getReplaced(s,s1,s2){
      var t=s;
      while( t.indexOf(s1)!=-1 ){
        t=t.substring(0,t.indexOf(s1))+s2+t.substring(t.indexOf(s1)+s1.length);
      }
      return t;
    }


    function getReenumeratedGroup(content){
      var newContent="";
      var tags = TagTokenizer(content);
      var i=0;
      var en=1;
      while(i<tags.length){
        var tag=tags[i];
        if( tag.toLowerCase()=="<h4 class=\"tipo-g\">" || tag.toLowerCase()=="<h4 class=tipo-g>" ){
          newContent+=tag;
          i++;
          tag=tags[i];
          newContent+=tag.substring(0,tag.lastIndexOf(' ')+1) + en;
          en++;
        }else{
          newContent+=tag;
        }
        i++;
      }
      return newContent;
    }


    function getIncrementedVariables(content,increment){
      var newContent="";
      var tags = TagTokenizer(content);
      var i=0;
      while(i<tags.length){
        var tag=tags[i];
        if(tag.indexOf("chooseFile")!=-1){
          var usStart=tag.indexOf("uploadsimple");
          var nxtParmStart=tag.indexOf(",",usStart)+2;
          var nxtParmEnd=tag.indexOf("'",nxtParmStart);
          var idxStart=tag.indexOf('[',nxtParmStart)+1;
          var idxEnd  =tag.indexOf(']',idxStart);
          var newTag=tag.substring(0,idxStart)+
                     (increment!=null?
                      increment
                      :
                      parseInt(tag.substring(idxStart,idxEnd))+1
                     )+
                     tag.substring(idxEnd);
          newContent+=newTag;
        }else if(tag.indexOf("_ATTR_TMP_")!=-1){
          newContent+=emptyValueTag(tag);
        }else if(tag.indexOf("span_thumb_")!=-1){
          var spIdxStart=tag.lastIndexOf('_')+1;
          var spVal="";
          var spIdx=spIdxStart;
          while( "0123456789".indexOf(tag.charAt(spIdx))!=-1 ){
            spVal+=tag.charAt(spIdx);
            spIdx++;
          }
          var newTag=tag.substring(0,spIdxStart)+
                     (increment!=null?
                      increment
                      :
                      parseInt(spVal)+1
                     )+
                     tag.substring(spIdx);
          i++;
          newContent+=newTag+"<img width=100 height=1 src=../icons/px.gif>";
        }else if(tag.indexOf("generateAutoSequence")!=-1){
          var asIdxStart=tag.indexOf("generateAutoSequence");
          var asIdxEnd=tag.indexOf(')',asIdxStart);
          var asIdx=asIdxEnd;
          while(tag.charAt(asIdx)!=',') asIdx--;
          var asVal=parseInt(tag.substring(asIdx+1,asIdxEnd));
          var newTag=tag.substring(0,asIdx+1)+
                     (increment!=null?
                      increment
                      :
                      asVal+1
                     )+
                     tag.substring(asIdxEnd);
          newContent+=newTag;
        }else if(tag.indexOf("handleTyping")!=-1){
          var htIdxStart=tag.indexOf("handleTyping");
          var htPosIdxStart=tag.indexOf(',',htIdxStart)+1;
          var posVal=tag.substring(htPosIdxStart,tag.indexOf(',',htPosIdxStart));
          var newTag=tag.substring(0,htPosIdxStart)+
                     (increment!=null?
                      increment
                      :
                      parseInt(posVal)+1
                     )+
                     tag.substring(tag.indexOf(',',htPosIdxStart));
          if( newTag.indexOf('verifyDependency(')!=-1 ){
            var depStartIdx=newTag.indexOf("verifyDependency(");
            var depEndIdx=newTag.indexOf(')',depStartIdx);
            depStartIdx=depEndIdx-1;
            while("0123456789".indexOf(newTag.charAt(depStartIdx))!=-1) depStartIdx--;
            depStartIdx++;
            var depSeq=parseInt(newTag.substring(depStartIdx,depEndIdx));
            newTag=newTag.substring(0,depStartIdx)+
                   (increment!=null?
                    increment
                    :
                    depSeq+1
                   )+
                   newTag.substring(depEndIdx);
          }
          newContent+=emptyValueTag(newTag);
        }else if(tag.toLowerCase().indexOf("<img ")!=-1 && tag.toLowerCase().indexOf("id=")!=-1 && tag.toLowerCase().indexOf("end_")!=-1){
          newContent+="";
        }else if(tag.length>14 && tag.toLowerCase().substring(0,14)=="<span id=group_"){
          var divSeq = parseInt(tag.substring(tag.lastIndexOf('_')+1,tag.lastIndexOf('>')));
          newContent += tag.substring(0,tag.lastIndexOf('_')+1)+
                        (increment!=null?
                         increment
                         :
                         divSeq+1
                        )+
                        ">";
        }else if( tag.length>14 && tag.toLowerCase().substring(0,15)=="<span id=\"group_"){
          var divSeq = parseInt(tag.substring(tag.lastIndexOf('_')+1,tag.lastIndexOf('">')));
          newContent += tag.substring(0,tag.lastIndexOf('_')+1)+
                        (increment!=null?
                         increment
                         :
                         divSeq+1
                        )+
                        "\">";
        }else if( tag.indexOf("name=checkbox_safe_")!=-1 ){
          var seqStartIdx = tag.indexOf("name=checkbox_safe_");
          seqStartIdx=tag.indexOf('_',seqStartIdx+19)+1;
          var seqEndIdx=seqStartIdx;
          while("0123456789".indexOf(tag.charAt(seqEndIdx))!=-1) seqEndIdx++;
          var checkSeq = parseInt(tag.substring(seqStartIdx,seqEndIdx));
          var newTag=tag.substring(0,seqStartIdx)+
                     (increment!=null?
                      increment
                      :
                      checkSeq+1
                     )+
                     tag.substring(seqEndIdx);
          newContent += newTag;
        }else if( tag.indexOf("span_check_")!=-1 ){
          var spanStartIdx=tag.lastIndexOf('_')+1;
          var spanEndIdx=spanStartIdx;
          while("0123456789".indexOf(tag.charAt(spanEndIdx))!=-1) spanEndIdx++;
          var spanSeq=parseInt(tag.substring(spanStartIdx,spanEndIdx));
          var newTag=tag.substring(0,spanStartIdx)+
                     (increment!=null?
                      increment
                      :
                      spanSeq+1
                     )+
                     tag.substring(spanEndIdx);
          newContent+=newTag;
        }else if( tag.indexOf("type=checkbox")!=-1 ){
          var depStartIdx=tag.indexOf("verifyDependency(");
          var depEndIdx=tag.indexOf(')',depStartIdx);
          depStartIdx=depEndIdx-1;
          while("0123456789".indexOf(tag.charAt(depStartIdx))!=-1) depStartIdx--;
          depStartIdx++;
          var depSeq=parseInt(tag.substring(depStartIdx,depEndIdx));
          var newTag=tag.substring(0,depStartIdx)+
                     (increment!=null?
                      increment
                      :
                      depSeq+1
                     )+
                     tag.substring(depEndIdx);
          newContent+=newTag;
        }else if( tag.toLowerCase().indexOf("<span id=span_attr_")!=-1 ){
          var spanStartIdx=tag.lastIndexOf('_')+1;
          var spanEndIdx=spanStartIdx;
          while("0123456789".indexOf(tag.charAt(spanEndIdx))!=-1) spanEndIdx++;
          var spanSeq=parseInt(tag.substring(spanStartIdx,spanEndIdx));
          var newTag=tag.substring(0,spanStartIdx)+
                     (increment!=null?
                      increment
                      :
                      spanSeq+1
                     )+
                     tag.substring(spanEndIdx);
          newContent+=newTag;
        }else if( tag.toLowerCase().indexOf("javascript:deletegroup(")!=-1 ){
          var dgIdxStart=tag.indexOf("javascript:deleteGroup(");
          var dgPosIdxStart=tag.indexOf(',',dgIdxStart)+1;
          var posVal=tag.substring(dgPosIdxStart,tag.indexOf(')',dgPosIdxStart));
          var newTag=tag.substring(0,dgPosIdxStart)+
                     (increment!=null?
                      increment
                      :
                      parseInt(posVal)+1
                     )+
                     tag.substring(tag.indexOf(')',dgPosIdxStart));
	  newContent+=newTag;
        }else if( tag.toLowerCase().indexOf("_radio_attr_domain_")!=-1 ){
          var rdIdxStart=tag.indexOf("_RADIO_ATTR_DOMAIN_");
          var rdFirstUnderscoreIdxStart=tag.indexOf('_',rdIdxStart+18); //underscore preceding attrid...
          var rdSecndUnderscoreIdxStart=tag.indexOf('_',rdFirstUnderscoreIdxStart+1); //underscore preceding position...
          var currRadioPosition="";
          var irb=rdSecndUnderscoreIdxStart+1;
          while("0123456789".indexOf(tag.charAt(irb))!=-1){
            currRadioPosition+=tag.charAt(irb);
            irb++;
          }
          var rp=(increment!=null?increment:parseInt(currRadioPosition)+1);
          var newTag=tag.substring(0,rdSecndUnderscoreIdxStart)+'_'+rp+tag.substring(rdSecndUnderscoreIdxStart+1+currRadioPosition.length);
          newContent+=newTag;
        }else if( tag.toLowerCase().indexOf("javascript:deletefileattrcontent(")!=-1 ){
          var dfIdxStart=tag.indexOf("javascript:deleteFileAttrContent(");
          var dfPosIdxStart=tag.indexOf(',',dfIdxStart)+1;
          var posVal=tag.substring(dfPosIdxStart,tag.indexOf(')',dfPosIdxStart));
          var newTag=tag.substring(0,dfPosIdxStart)+
                     (increment!=null?
                      increment
                      :
                      parseInt(posVal)+1
                     )+
                     tag.substring(tag.indexOf(')',dfPosIdxStart));
	  newContent+=newTag;

        //}else if( tag.indexOf("<INPUT")!=-1 ){
        //  newContent+=emptyValueTag(tag);

        //}else if( tag.toLowerCase()=="<h4 class=\"tipo-g\">" || tag.toLowerCase()=="<h4 class=tipo-g>" ){
        //  newContent+=tag;
        //  i++;
        //  tag=tags[i];
        //  newContent+=tag.substring(0,tag.lastIndexOf(' ')+1);
        //  var currItemPos = tag.substring(tag.lastIndexOf(' ')+1);
        //  newContent+=parseInt(currItemPos)+(increment+1);
        }else{
          newContent+=tag;
        }
        i++;
      }

      return newContent;
    }

    var attributeDependencies=new Array();
    
    function AttributeDependency(attrId,dependencyAttrId,dependencyAttrValue,fieldName,fieldType,defaultValue){
      this.attrId=attrId;
      this.dependencyAttrId=dependencyAttrId;
      this.dependencyAttrValue=dependencyAttrValue;
      this.fieldName=fieldName;
      this.fieldType=fieldType;
      this.defaultValue=defaultValue;
    }

    function isNumeric( s ){
      var status=true;
      if( s!=null && s.length>0 ){
        for(var i=0;i<s.length;i++){
          if( "0123456789".indexOf(s.charAt(i))==-1 ){
            status=false;
          }
        }
      }else{
        status=false;
      }
      return status;
    }

    function addAttributeDependency(attrId,dependencyAttrId,dependencyAttrValue,fieldName,fieldType,defaultValue){
      if( isNumeric(attrId) ){
        if(!existDependency(attrId)){
          attributeDependencies[attributeDependencies.length] = new AttributeDependency(attrId,dependencyAttrId,(dependencyAttrValue!=null&&dependencyAttrValue!="null"?dependencyAttrValue:null),fieldName,fieldType,(defaultValue!=null&&defaultValue!="null"?defaultValue:null));
        }
      }
    }

    function existDependency(attrId){
      var status=false;
      for(var i=0;i<attributeDependencies.length;i++){
        if(attributeDependencies[i].attrId==attrId){
          status=true;
        }
      }
      return status;
    }

    var allDomains = new Array();

    function Domain(id,value,text,includeId,internalId){
      this.id=id;
      this.value=value;
      this.text=text;
      this.includeId = (includeId!=null?includeId:false);
      this.internalId = internalId;
    }

    function addDomain(id,value,text,includeId,internalId){
      allDomains[allDomains.length]=new Domain(id,value,text,includeId,internalId);
    }

    function domainContains( id, value ){
      var status=false;
      var i=0;
      while(i<allDomains.length && !status){
        if(allDomains[i].id==id){
          var value1=(allDomains[i].value.indexOf('^')!=-1?allDomains[i].value.substring(0,allDomains[i].value.indexOf('^')):allDomains[i].value);
          if(value1==value){
            status=true;
          }
        }
        i++;
      }
      return status;
    }
    
    function clearAllFields(dataForm){
      expandAllGroups(dataForm);
      for( var i=0; i<dataForm.elements.length; i++ ){
        var formField = dataForm.elements[i];
        if( formField.type.toLowerCase() == "text" ){
          formField.value="";
        }else if( formField.type.toLowerCase().substring(0,6) == "select" ){
          if( formField.name != "model_palette" && formField.style.backgroundColor!="#e7f1f8" ){
            formField.options[0].selected=true;
          }
        }
      }
      for(var i=0;i<textFieldArray.length;i++){
        try{
          var obj=null;
          eval("obj=document.frames('" + textFieldArray[i] + "')" );
          if(obj!=null) setCanvasHtml(obj,textFieldArray[i],"<DIV></DIV>");
        }catch(error){
        }
      }
    }

    function generateAutoSequence(cid,mid,attrid,field,position){
      if(field.length && field.length>1){
        eval( "document.corporate.autoseq_"+attrid+"["+position+"].disabled=true;");
        lov("corporatesequence.jsp?cid="+cid+"&mid="+mid+"&attrid="+attrid+"&position="+position+"&field_name="+field[position].name,200,100,"corpseq",false,false);
      }else{
        eval( "document.corporate.autoseq_"+attrid+".disabled=true;");
        lov("corporatesequence.jsp?cid="+cid+"&mid="+mid+"&attrid="+attrid+"&position="+position+"&field_name="+field.name,200,100,"corpseq",false,false);
      }
    }

    function getFieldQty(dataForm,fieldName){
      var qty=0;
      for(var i=0;i<dataForm.elements.length;i++){
        if( dataForm.elements[i].name == fieldName ){
          qty++;
        }
      }
      return qty;
    }

    function getDateFieldQty(attrId){
      var qty=0;
      for(var i=0;i<splittedDates.length;i++){
        if(splittedDates[i].substring(0,splittedDates[i].indexOf('^')) == attrId ){
          qty = parseInt( splittedDates[i].substring(splittedDates[i].indexOf('^')+1) );
        }
      }
      return qty;
    }


    function splitContains(value){
      var status=false;
      for(var i=0;i<splittedDates.length;i++){
        if(splittedDates[i]==value){
          status=true;
        }
      }
      return status;
    }

    function splitIndex(arr,value){
      var index=-1;
      for(var i=0;i<arr.length;i++){
        if(arr[i].substring(0,arr[i].indexOf('^'))==value){
          index=i;
        }
      }
      return index;
    }

    var splitQtys = null;
    
    function assignSplittedDates(dataForm){
      splitQtys=new Array();
      for(var i=0;i<splittedDates.length;i++){
        var attrId = splittedDates[i];
        var dateQty = getFieldQty(dataForm,"split_date_day_"+attrId);
        splitQtys[i]=attrId+"^"+dateQty;
      }
      for(var i=0;i<splitQtys.length;i++){
        var attrId = splitQtys[i].substring(0,splitQtys[i].indexOf('^'));
        var attrQt = parseInt(splitQtys[i].substring(splitQtys[i].indexOf('^')+1));
        if( attrQt == 1 ){
          var dayField=eval("document."+dataForm.name+".split_date_day_"+attrId);
          var monthField=eval("document."+dataForm.name+".split_date_month_"+attrId);
          var yearField =eval("document."+dataForm.name+".split_date_year_"+attrId);
          var d=dayField.options[dayField.selectedIndex].value;
          var m=monthField.options[monthField.selectedIndex].value;
          var y=yearField.options[yearField.selectedIndex].value;
          eval("document."+dataForm.name+"._ATTR_"+attrId+".value=\""+d+"/"+m+"/"+y+"\";");
        }else{
          for(var j=0;j<attrQt;j++){
            try{
              var dayField  =eval("document."+dataForm.name+".split_date_day_"+attrId+"["+j+"]");
              var monthField=eval("document."+dataForm.name+".split_date_month_"+attrId+"["+j+"]");
              var yearField =eval("document."+dataForm.name+".split_date_year_"+attrId+"["+j+"]");
              var d=dayField.options[dayField.selectedIndex].value;
              var m=monthField.options[monthField.selectedIndex].value;
              var y=yearField.options[yearField.selectedIndex].value;
              eval("document."+dataForm.name+"._ATTR_"+attrId+"["+j+"].value=\""+d+"/"+m+"/"+y+"\";");
            }catch(error){
              alert( error.message );
            }
          }
        }
      }
    }


    function rebuildTitlePair(attrId,internalValue,externalValue){
      var list = eval("document.corporate.title_pair_"+attrId);
      list.options.length=1;
      list.options[0].value="";
      list.options[0].text="";
      var value2 = (externalValue!=null && externalValue.indexOf('^')!=-1?externalValue.substring(0,externalValue.indexOf('^')):externalValue);
      for(var i=0;i<allDomains.length;i++){
        if(allDomains[i].id==attrId){
          var value1=(allDomains[i].value.indexOf('^')!=-1?allDomains[i].value.substring(allDomains[i].value.indexOf('^')+1):allDomains[i].value);
          if( value1==internalValue){
            //var value3=(allDomains[i].value.indexOf('^')!=-1?allDomains[i].value.substring(0,allDomains[i].value.indexOf('^')):allDomains[i].value);
            var value3=allDomains[i].internalId;
            list.options.length++;
            list.options[list.options.length-1].value=value3;
            list.options[list.options.length-1].text=allDomains[i].text;
          }
        }
      }

      if( list.options.length > 1 ){
        sortPair( list, "text" );
        list.options[0].selected=true;
      }
    }
    
    function clearTitlePair(attrId){
      var list = eval("document.corporate.title_pair_"+attrId);
      if( list!=null && list.options!=null ){
        list.options.length=1;
        list.options[0].value="";
        list.options[0].text="";
      }
    }

    function filterTitlePair(attrId,selectedId){
      //var externalValue = getExternalValue( attrId, selectedId );
      var list = eval("document.corporate.title_pair_"+attrId);
      if(list!=null){
        var value1 = ( selectedId!=null && selectedId.indexOf('^')!=-1 ? selectedId.substring(0,selectedId.indexOf('^')) : selectedId );
        list.options[0].selected=true;
        for(var i=0;i<list.options.length;i++){
          if(list.options[i].value==value1){
            list.options[i].selected=true;
          }
        }
      }
    }

    function filterIdPair(attrId,selectedId){
      //var externalValue = getExternalValue( attrId, selectedId );
      var list = eval("document.corporate._ATTR_DOMAIN_"+attrId);
      if(list!=null){
        var value1 = ( selectedId!=null && selectedId.indexOf('^')!=-1 ? selectedId.substring(0,selectedId.indexOf('^')) : selectedId );
        list.options[0].selected=true;
        for(var i=0;i<list.options.length;i++){
          if(list.options[i].value==value1){
            list.options[i].selected=true;
          }
        }
      }
    }


    function getDateIndex( attrId ){
      var index=-1;
      for(var i=0;i<splittedDates.length;i++){
        if( splittedDates[i].substring(0,splittedDates[i].indexOf('^')) == attrId ){
          index=i;
        }
      }
      return index;
    }

    function generateDropDownForm(attrId,attrDependency,attrDependencyValue,position,selectedValue){
      var code = "<select name=\"_ATTR_DOMAIN_" + attrId + "\" size=\"1\""
                 + " onChange=\"filterTitlePair('"+attrId+"',this.options[this.selectedIndex].value);verifyDependency(this,'" + attrDependency + "','" + attrDependencyValue + "','" + attrId + "',true," + position + ")\"" 
                 + " style=\"width:75px\">"+
                 "<option value=\"\"></option>\n";
      var found = false;
                if( allDomains!=null && allDomains.length>0 ){
                  for(var i=0;i<allDomains.length;i++){
                    if(allDomains[i].id==attrId){

                      if(selectedValue!=null && selectedValue.length>0 && allDomains[i].internalId==selectedValue){
                        code += "<option value=\"" + allDomains[i].internalId + "\" selected>" + 
                                (allDomains[i].value.indexOf('^') != -1 ? allDomains[i].value.substring(0,allDomains[i].value.indexOf('^')) : allDomains[i].value ) + 
                                "</option>\n";
                        found = true;
                      }else{
                        code += "<option value=\"" + allDomains[i].internalId + "\">" + 
                                (allDomains[i].value.indexOf('^') != -1 ? allDomains[i].value.substring(0,allDomains[i].value.indexOf('^')) : allDomains[i].value ) + 
                                "</option>\n";
                      }
                      
                    }
                  }
                }
      code += "</select>&nbsp;"+
              "<select name=\"title_pair_" + attrId + "\" size=\"1\""
              + " onChange=\"filterIdPair('"+attrId+"',this.options[this.selectedIndex].value);verifyDependency(document.corporate._ATTR_DOMAIN_" + attrId +",'" + attrDependency + "','" + attrDependencyValue + "','"+attrId+"',true,"+position+")\"" 
              + " style=\"width:400px\">"+
              "<option value=\"\"></option>\n";

              if( allDomains!=null && allDomains.length>0 ){
                for(var i=0;i<allDomains.length;i++){
                  if(allDomains[i].id==attrId){
                    code += "<option value=\"" + allDomains[i].internalId + "\"" + (allDomains[i].internalId==selectedValue?" selected":"") + ">" + 
                            allDomains[i].text + 
                            "</option>\n";
                  }
                }
              }
              
      code += "</select>";
      document.write( code );
    }

    function isDistinct(list,value){
      var status=true;
      for(var i=0;i<list.length;i++){
        if(list[i]==value){
          status=false;
        }
      }
      return status;
    }


  function doTextCanvas( name, value, maxLength ){
    if(maxLength!=null){
      document.write("<script>var bMaxLegth_" + name + "=" + maxLength + ";</script>");
      document.write("<script>var bTypingLength_"+name+"=" + (value!=null&&value!=""?value.length:0) + ";</script>");
    }
    document.write("<textarea class=\"textarea grande\" id=\"text-descricao\" cols=\"100%\" name=\"_"+name+"\" onKeyUp=\"controlTextMaxLength(this,'"+maxLength+"','remaining_typing_"+name+"')\">");
    if(value!=null){
      document.write(decodeQuotes(value));
    }
    document.write("</textarea>");
    if( maxLength!=null ){
      document.write("<div class=\"contador\"><label for=\"contador\">Número de caracteres restantes:</label><input name=\"remaining_typing_"+name+"\" type=\"text\" readonly=\"readonly\" value=\""+maxLength+"\" /></div>");
    }
  }

  function controlTextMaxLength(textObj,maxLength,spanObj){
    if(maxLength!=''){
      var maxl = parseInt(maxLength);
      var txtl = textObj.value.length;
      if( txtl>maxl ){
        textObj.value = textObj.value.substring(0,maxl);
        txtl = textObj.value.length;
      }
      var remainingCharQty = maxl - txtl;
      //spanObj.innerHTML = remainingCharQty;
      eval("document.corporate."+spanObj+".value='"+remainingCharQty+"'");
    }
  }

  function decodeQuotes( value ){
    return value.replace( /&quot;/g, "\"" );
  }

  function getExpressionStart( str ){
    var exp = null;
    if( str.toLowerCase().substring(0,2)=="dd" ){
      exp="dd";
    }else if( str.toLowerCase().substring(0,2)=="mm" ){
      exp="mm";
    }else if( str.substring(0,3)=="mon" ){
      exp="mon";
    }else if( str.substring(0,3)=="MON" ){
      exp="MON";
    }else if( str.toLowerCase().substring(0,4)=="yyyy" || str.toLowerCase().substring(0,4)=="aaaa" ){
      exp="yyyy";
    }else if( str.toLowerCase().substring(0,2)=="yy" || str.toLowerCase().substring(0,2)=="aa" ){
      exp="yy";
    }else if( str.toLowerCase().substring(0,4)=="hh24" ){
      exp="hh24";
    }else if( str.toLowerCase().substring(0,4)=="hh12" ){
      exp="hh12";
    }else if( str.toLowerCase().substring(0,2)=="hh" ){
      exp="hh";
    }else if( str.toLowerCase().substring(0,2)=="mi" ){
      exp="mi";
    }else if( str.toLowerCase().substring(0,2)=="ss" ){
      exp="ss";
    }else if( str.toLowerCase().substring(0,1)=="9" ){
      exp="9";
    }else if( str.toLowerCase().substring(0,1)=="." ){
      exp=".";
    }else if( str.toLowerCase().substring(0,1)=="," ){
      exp=",";
    }else if( str.toLowerCase().substring(0,1)=="*" ){
      exp="*";
    }else if( str.substring(0,1)=="[" ){
      exp=str.substring(0,str.indexOf(']')+1);
    }
    return exp;
  }

  function doValidateExpression( dataField, expression, kCode ){
    if( kCode != 8 ){
      var v=dataField.value, i=0, x=expression, v1="", lastExp="";
      while( i <= v1.length && x != "" ){
        var exp = getExpressionStart( x );
        if( exp == null ){
          v1 += x.charAt(0);
          x = x.substring(1);
          i++;
        }else{
          if( exp == "9" || exp=="." || exp=="," ){
            if( isDigit( v.substring(i,i+1) ) || v.substring(i,i+1)=='.' || v.substring(i,i+1)==','  ){
              v1 += v.substring(i,i+1);
            }
            i+=1;
          }else if( exp == "dd" ){
            var q = getDigitQty(v.substring(i,i+2));
            if( q==2 && " 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ".indexOf(" "+v.substring(i,i+2)+" ")!=-1 ){
              v1 += v.substring(i,i+2);
            }else if( q==2 && "0123".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }else if( q==1 && "0123".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }
            i+=2;
          }else if( exp == "mm" ){
            var q = getDigitQty(v.substring(i,i+2));
            if( q==2 && " 01 02 03 04 05 06 07 08 09 10 11 12 ".indexOf(" "+v.substring(i,i+2)+" ")!=-1 ){
              v1 += v.substring(i,i+2);
            }else if( q==2 && "01".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }else if( q==1 && "01".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }
            i+=2;
          }else if( exp == "mon" ){
            if( " jan feb mar apr may jun jul aug sep oct nov dec ".indexOf(" "+v.substring(i,i+3).toLowerCase()+" ")!=-1 ){
              v1 += v.substring(i,i+3).toLowerCase();
            }else if( " ja fe ma ap ma ju ju au se oc no de ".indexOf(" "+v.substring(i,i+2).toLowerCase()+" ")!=-1 ){
              v1 += v.substring(i,i+2).toLowerCase();
            }else if( " j f m a m j j a s o n d ".indexOf(" "+v.substring(i,i+1).toLowerCase()+" ")!=-1 ){
              v1 += v.substring(i,i+1).toLowerCase();
            }
            i+=3;
          }else if( exp == "MON" ){
            if( " JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ".indexOf(" "+v.substring(i,i+3).toUpperCase()+" ")!=-1 ){
              v1 += v.substring(i,i+3).toUpperCase();
            }else if( " JA FE MA AP MA JU JU AU SE OC NO DE ".indexOf(" "+v.substring(i,i+2).toUpperCase()+" ")!=-1 ){
              v1 += v.substring(i,i+2).toUpperCase();
            }else if( " J F M A M J J A S O N D ".indexOf(" "+v.substring(i,i+1).toUpperCase()+" ")!=-1 ){
              v1 += v.substring(i,i+1).toUpperCase();
            }
            i+=3;
          }else if( exp == "yyyy" ){
            var q = getDigitQty(v.substring(i,i+4));
            v1 += v.substring(i,i+q);
            i+=4;
          }else if( exp == "yy" ){
            var q = getDigitQty(v.substring(i,i+2));
            v1 += v.substring(i,i+q);
            i+=2;
          }else if( exp == "hh24" ){
            var q = getDigitQty(v.substring(i,i+2));
            if( q==2 && " 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ".indexOf(" "+v.substring(i,i+2)+" ")!=-1 ){
              v1 += v.substring(i,i+2);
            }else if( q==2 && "012".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }else if( q==1 && "012".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }
            i+=2;
          }else if( exp == "hh12" || exp == "hh" ){
            var q = getDigitQty(v.substring(i,i+2));
            if( q==2 && " 00 01 02 03 04 05 06 07 08 09 10 11 12 ".indexOf(" "+v.substring(i,i+2)+" ")!=-1 ){
              v1 += v.substring(i,i+2);
            }else if( q==2 && "01".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }else if( q==1 && "01".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }
            i+=2;
          }else if( exp == "mi" ){
            var q = getDigitQty(v.substring(i,i+2));
            if( q==2 && " 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ".indexOf(" "+v.substring(i,i+2)+" ")!=-1 ){
              v1 += v.substring(i,i+2);
            }else if( q==2 && "012345".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }else if( q==1 && "012345".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }
            i+=2;
          }else if( exp == "ss" ){
            var q = getDigitQty(v.substring(i,i+2));
            if( q==2 && " 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ".indexOf(" "+v.substring(i,i+2)+" ")!=-1 ){
              v1 += v.substring(i,i+2);
            }else if( q==2 && "012345".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }else if( q==1 && "012345".indexOf(v.substring(i,i+1))!=-1 ){
              v1 += v.substring(i,i+1);
            }
            i+=2;
          }else if( exp.charAt(0)=='[' && exp.charAt(exp.length-1)==']' ){
            v1 += exp.substring(1,exp.length-1);
            i+=exp.length-2;
          }
          x = x.substring( exp.length );
        }
        lastExp=exp;
      }
      dataField.value = v1;
    }
  }

  function isAlpha( c ){
    var alphaMatrix = "abcdefghijklmnopqrstuvwxyz????????????????????????";
    return (alphaMatrix.indexOf(c)!=-1 || alphaMatrix.toLowerCase().indexOf(c)!=-1);
  }

  function isDigit( c ){
    return "0123456789".indexOf(c)!=-1;
  }

  function getDigitQty( str ){
    var i = 0;
    while( i < str.length && "0123456789".indexOf( str.charAt( i ) ) != -1 ){
      i++;
    }
    return i;
  }

  function isAllDigit( str ){
    var ret = true;
    var i=0;
    for( i = 0; i < str.length; i++ ){
      if( "0123456789".indexOf( str.charAt( i ) ) == -1 ){
        ret = false;
      }
    }
    return ret;
  }

  function getField( value, field, expression ){
    var fieldValue = null;
    var i = expression.indexOf( field );
    if( i != -1 && value.length >= i+field.length ){
      fieldValue = value.substring( i, i+field.length );
    }
    return fieldValue;
  }
  
  function getDay( date, expression ){
    return getField( date, "dd", expression );
  }

  function getMonth( date, expression ){
    var month = getField( date, "mm", expression );
    if( month == null ) month = getField( date, "mon", expression );
    return month;
  }

  function getYear( date, expression ){
    var year = getField( date, "yyyy", expression );
    if( year == null ) year = getField( date, "yy", expression );
    return year;
  }

  function getMaxRepeat(repeatArray,groupName){
    var m=0;
    for(var i=0;i<repeatArray.length;i++){
      if( repeatArray[i][0] == groupName ){
        m=parseInt( repeatArray[i][1]);
      }
    }
    return m;
  }
  
function repeatGroup(group){
  var groupTemplateName = "canonical_group_"+group;
  var canonicalVal = eval( groupTemplateName );
  while(canonicalVal.indexOf('{^Q}')!=-1 ) canonicalVal=canonicalVal.replace('{^Q}','"');
  while(canonicalVal.indexOf('{^R}')!=-1 ) canonicalVal=canonicalVal.replace('{^R}','\r');
  while(canonicalVal.indexOf('{^N}')!=-1 ) canonicalVal=canonicalVal.replace('{^N}','\n');
  while(canonicalVal.indexOf('{^L}')!=-1 ) canonicalVal=canonicalVal.replace('{^L}','<');
  while(canonicalVal.indexOf('{^G}')!=-1 ) canonicalVal=canonicalVal.replace('{^G}','>');
  var groupSpanObj = document.getElementById( "groupspan_"+group );
  //var groupSpanObj = eval( "groupspan_"+group );
  var currGroupVal = groupSpanObj.innerHTML;
  var groupItems = getGroupItems( currGroupVal, group );
  var lastPosition = groupItems.length;
  var maxRepeat = getMaxRepeat(_repeatControl,group);
  if( maxRepeat>0 && maxRepeat<=lastPosition ){
    alert("Atenção: Este grupo ultrapassou o limite de repetições");
  }else{
    canonicalVal = getIncrementedVariables( canonicalVal, lastPosition );
    var currGroupSpanVal = groupSpanObj.innerHTML;
    //var pAddButtonStart = currGroupSpanVal.toLowerCase().lastIndexOf('<p');
    //var pAddButtonEnd   = currGroupSpanVal.toLowerCase().lastIndexOf('</p>',pAddButtonStart);
    //if(pAddButtonStart != -1 && pAddButtonEnd != -1){
    //  currGroupSpanVal = currGroupSpanVal.substring(0,pAddButtonStart)+canonicalVal+currGroupSpanVal.substring(pAddButtonStart);
    //}else{
      currGroupSpanVal += canonicalVal;
    //}

    currGroupSpanVal = getReenumeratedGroup(currGroupSpanVal);

    groupSpanObj.innerHTML = currGroupSpanVal;
  }
}

function deleteGroup(group,position){
  var groupSpanObj = document.getElementById( "groupspan_" + group );
  var groupVal = groupSpanObj.innerHTML;
  var items = getGroupItems(groupVal,group);
  var newGroupVal = "";
  for(var i = 0; i < position; i++){
    newGroupVal += items[i];
  }
  for(var i = position + 1; i < items.length; i++){
    newGroupVal += getIncrementedVariables(items[i],i-1);
  }
  if(newGroupVal==""){
    var groupTemplateName = "canonical_group_"+group;
    var canonicalVal = eval( groupTemplateName );
    while(canonicalVal.indexOf('{^Q}')!=-1 ) canonicalVal=canonicalVal.replace('{^Q}','"');
    while(canonicalVal.indexOf('{^R}')!=-1 ) canonicalVal=canonicalVal.replace('{^R}','\r');
    while(canonicalVal.indexOf('{^N}')!=-1 ) canonicalVal=canonicalVal.replace('{^N}','\n');
    while(canonicalVal.indexOf('{^L}')!=-1 ) canonicalVal=canonicalVal.replace('{^L}','<');
    while(canonicalVal.indexOf('{^G}')!=-1 ) canonicalVal=canonicalVal.replace('{^G}','>');
    newGroupVal=canonicalVal;
  }

  newGroupVal = getReenumeratedGroup(newGroupVal);

  groupSpanObj.innerHTML = newGroupVal;
}


function startsWith(str,segment){
  var status=false;
  var _str=str.replace(/"/g,'');
  var _seg=segment.replace(/"/g,'');

  if( _str.substring(0,_seg.length) == _seg ){
    status=true;
  }

  return status;
}




function getGroupItems(txt){
  var items=new Array();
  var currItem="";
  var currLevel=0;
  var tags = TagTokenizer(txt);
  var i=0;
  var considerTag=false;
  var firstTagOpen=null;
  var sameFirstTagOpen=null;
  var firstTagClose=null;
  while(i<tags.length){
    var tag=tags[i];
    if( firstTagOpen==null && tag.length>=3 && tag.charAt(0)=='<' && tag.charAt(tag.length-1)=='>' ){
      firstTagOpen=tag;
      firstTagClose = '</' + tag.substring(1,tag.indexOf(' ')!=-1?tag.indexOf(' '):tag.length-1) + ">";
      sameFirstTagOpen = '<' + tag.substring(1,tag.indexOf(' ')!=-1?tag.indexOf(' '):tag.length-1);
      currItem+=tag;
      currLevel++;
    }else if(firstTagOpen!=null){
      if( tag.toLowerCase()==firstTagClose.toLowerCase() ){
        currLevel--;
        currItem+=tag;
        if(currLevel==0){
          items[items.length]=currItem;
          currItem="";
        }
      }else if(startsWith(tag.toLowerCase(),sameFirstTagOpen.toLowerCase())){
        currItem+=tag;
        currLevel++;
      }else{
        currItem+=tag;
      }
    }
    i++;
  }
  return items;
}




/*
function getGroupItems( groupContent, canonicalGroupName ){
	var items=new Array();
	var hasItems = true;
	var i=0;
	var groupContentLower = groupContent.toLowerCase();
        var tags = TagTokenizer(groupContent);
        while(i<tags.length){
          var tag=tags[i];
	  

	}
	var toFind = "<span id=\"group_"+canonicalGroupName;
	if( groupContentLower.indexOf(toFind)==-1 ){
	  toFind = "<span id=group_"+canonicalGroupName;
	}
	var startIdx=groupContentLower.indexOf(toFind);
	if( startIdx!=-1 ){
		items[items.length] = groupContent.substring(0,startIdx);
		hasItems=true;
	}else{
		items[items.length] = groupContent;
		hasItems=false;
	}
        i=startIdx;
	while( hasItems ){
		var startIdx = groupContentLower.indexOf(toFind,i);
		if(startIdx!=-1){
			var endIdx = groupContentLower.indexOf("</span>",startIdx);
			items[items.length] = groupContent.substring( startIdx, endIdx+6 );
			i=endIdx;
		}else{
			hasItems=false;
		}
	}
	return items;
}
*/

  function viewGroup(group){
    var groupSpanObj = eval( "groupspan_" + group );
    var groupVal = groupSpanObj.innerHTML;
    var items = getGroupItems(groupVal);
    for(var i=0;i<items.length;i++){
      alert( items[i] );
    }
  }



  var splittedDates=new Array();
  var obligatoryFields = new Array();
  var obligatoryLabelFields = new Array();
  var futureFields = new Array();
  var futureLabelFields = new Array();
  var dateFields = new Array();
  var dateLabelFields=new Array();

  function noz(t){
    return(t!=null&&t.charAt(0)=='0'?t.substring(1):t);
  }

  function getDateValidation( d, m, y, onlyFuture ){
    var today = new Date(Y,M,D,0,0,0);
    var nd=(d!='  '?parseInt(noz(d)):1);
    var nm=(m!='  '?parseInt(noz(m)):1);
    var ny=(y!='    '?parseInt(noz(y)):0);
    var error=0;
    var errorMsg=null;
    if( !(nd>=1 && nd<=31) ) error = -1;
    if( error==0 ) if( !(nm>=1 && nm<=12) ) error = -2;
    if( error==0 ) if( (nd>30) && (nm==4||nm==6||nm==9||nm==11) ) error = -3;
    if( error==0 ) if( (nd>29 ) && (nm==2) ) error = -3;
    if( error==0 && nd==29 && nm==2 && ny!=0 ){
      if( !((ny%4==0 && ny%100!=0) || (ny%400==0)) ) error = -4;
    }
    if(error<0){
      if(error==-1) errorMsg = 'Dia inv?lido!';
      if(error==-2) errorMsg = 'M?s inv?lido!';
      if(error==-3) errorMsg = 'N?mero de dias inv?lido para o m?s informado!';
      if(error==-4) errorMsg = 'O ano informado n?o ? bissexto, portanto a data ? inv?lida!';
    }
    if( error==0 && onlyFuture && d!='  ' && m!='  ' && y!='    '){
      var isPast = false;
      var candidateDate = new Date(ny,nm-1,nd,0,0,0);
      if( candidateDate.getTime() < today.getTime() ) isPast=true;
      if( isPast ){
        errorMsg = 'A data ? inv?lida porque este campo s? aceita datas do futuro';
      }
    }
    return errorMsg;
  }

  function isEmptyField(fieldObj){
    var status=false;
    var fieldType = fieldObj.type.toLowerCase();
    if( fieldType=="text" || fieldType=="textarea" ){
      status = (fieldObj.value=="");
    }else if( fieldType.substring(0,6)=="select" ){
      status = (fieldObj.selectedIndex!=-1 && fieldObj.options[fieldObj.selectedIndex].value=="");
    }else if( fieldType=="hidden" ){
      status = (fieldObj.value=="" || fieldObj.value=="  /  /    ");
    }
    return status;
  }

  function validateObligatoryFields(formObject){
    var status = true;
    if( obligatoryFields.length>0 ){
      var i=0;
      while(i<obligatoryFields.length && status){
        try{
          var fieldName = obligatoryFields[i];
          var fieldDesc = obligatoryLabelFields[i];
          var fieldObj  = eval( "document." + formObject.name + "." + fieldName );
          if( fieldObj!=null ){
            var qty = getFieldQty(formObject,fieldName);
            if( qty == 1 ){
              if( isEmptyField(fieldObj) ){
                alert("O campo "+fieldDesc+" deve ser fornecido");
                if( fieldObj.type.toLowerCase()!="hidden") eval( "document." + formObject.name + "." + fieldName + ".focus()" );
                status=false;
              }
              //alert( fieldName + ": "+fieldObj.type+", unidade" );
            }else if(qty>1){
              for( var j=0;j<qty;j++ ){
                if( isEmptyField(fieldObj[j]) ){
                  alert("O campo "+fieldDesc+" deve ser fornecido");
                  if( fieldObj[j].type.toLowerCase()!="hidden") eval( "document." + formObject.name+"."+fieldName+"["+j+"].focus()");
                  status=false;
                }
              }
            }
          }
        }catch(error){
        }
        i++;
      }
    }
    return status;
  }

  function validateDateFields(formObject){
    var status=true;
    if( dateFields.length>0 ){
      var i=0;
      while(i<dateFields.length && status){
        try{
          var attrId = dateFields[i].substring(dateFields[i].lastIndexOf('_')+1);
          var df=null;
          var validationMsg=null;
          if( document.getElementById("split_date_day_"+attrId) ){
            var qty = getFieldQty(formObject,"split_date_day_"+attrId);
            if( qty==1 ){
              df = eval( "document.corporate." + "split_date_day_"+attrId );
              var mf = eval( "document.corporate." + "split_date_month_"+attrId );
              var yf = eval( "document.corporate." + "split_date_year_"+attrId );
              validationMsg = getDateValidation( df.options[df.selectedIndex].value, mf.options[mf.selectedIndex].value, yf.options[yf.selectedIndex].value, false );
            }else if( qty > 1 ){
              var j=0;
              while(j<qty && validationMsg==null){
                df = eval( "document.corporate." + "split_date_day_"+attrId+"["+j+"]" );
                var mf = eval( "document.corporate." + "split_date_month_"+attrId+"["+j+"]" );
                var yf = eval( "document.corporate." + "split_date_year_"+attrId+"["+j+"]" );
                validationMsg = getDateValidation( df.options[df.selectedIndex].value, mf.options[mf.selectedIndex].value, yf.options[yf.selectedIndex].value, false );
                j++;
              }
            }
          }else{
            df = eval("document.corporate._ATTR_"+attrId);
            var dtVal = df.value;
            if( dtVal.length>0 ){
              var d = dtVal.substring(0,2);
              var m = dtVal.substring(3,5);
              var y = dtVal.substring(6,10);
              validationMsg = getDateValidation( d, m, y, false );
            }
          }
          if( validationMsg!=null ){
            df.focus();
            status=false;
            alert( validationMsg + "\n"+ "Campo: " + dateLabelFields[i] );
          }
        }catch(error){
          //alert( "VALIDATEDATEFIELDS: " + error.message );
        }
        i++;
      }
    }
    return status;
  }

  function validateFutureFields(formObject){
    var status=true;
    if( futureFields.length>0 ){
      var i=0;
      while(i<futureFields.length && status){
        try{
          var attrId = futureFields[i].substring(futureFields[i].lastIndexOf('_')+1);
          var df=null;
          var validationMsg=null;
          //if( document.getElementById("split_date_day_"+attrId) ){
          if( futureFields[i].indexOf("FILE")==-1 ){
            var qty = getFieldQty(formObject,"split_date_day_"+attrId);
            if( qty==1 ){
              df = eval( "document.corporate." + "split_date_day_"+attrId );
              var mf = eval( "document.corporate." + "split_date_month_"+attrId );
              var yf = eval( "document.corporate." + "split_date_year_"+attrId );
              validationMsg = getDateValidation( df.options[df.selectedIndex].value, mf.options[mf.selectedIndex].value, yf.options[yf.selectedIndex].value, true );
            }else if( qty > 1 ){
              var j=0;
              while(j<qty && validationMsg==null){
                df = eval( "document.corporate." + "split_date_day_"+attrId+"["+j+"]" );
                var mf = eval( "document.corporate." + "split_date_month_"+attrId+"["+j+"]" );
                var yf = eval( "document.corporate." + "split_date_year_"+attrId+"["+j+"]" );
                validationMsg = getDateValidation( df.options[df.selectedIndex].value, mf.options[mf.selectedIndex].value, yf.options[yf.selectedIndex].value, true );
                j++;
              }
            }else{  // 0
              df = eval( "document.corporate._ATTR_" + attrId );
              var txtDt = df.value;
              var df1 = txtDt.substring(0,2);
              var mf1 = txtDt.substring(3,6);
              var yf1 = txtDt.substring(6); if(yf1.indexOf(' ')!=-1) yf1=yf1.substring(0,yf1.indexOf(' '));
              validationMsg = getDateValidation( df1, mf1, yf1, true );
            }
          }
          if( validationMsg!=null ){
            df.focus();
            status=false;
            alert( validationMsg + "\n"+ "Campo: " + futureLabelFields[i] );
          }
        }catch(error){
          //alert( "VALIDATEFUTUREFIELDS: " + error.message );
        }
        i++;
      }
    }
    return status;
   }
    
   function validateFields(formObject){
     var i=0, j=0;
     var formField;
     var inLoop = true;
     var status = true;
     if( status ) status = validateObligatoryFields(formObject);
     if( status ) status = validateDateFields(formObject);
     if( status ) status = validateFutureFields(formObject);
     return status;
   }

	function setUpload( ctl, fileName, tmpFileName ){
		var attrId = ctl.substring( 0, ctl.indexOf('[') );
		var attrSq = ctl.substring( ctl.indexOf('[')+1, ctl.indexOf(']') );
		var widgetLen = 0;
		var isFileDB = (","+_fileDBAttrIds+",".indexOf(","+attrId+",")!=-1);
		eval( "widgetLen=document.corporate._ATTR_FILE_"+(isFileDB?"DB_":"")+attrId+".length" );
		if( widgetLen > 0 ){
			eval( "document.corporate._ATTR_FILE_" + (isFileDB?"DB_":"") + attrId + "[" + attrSq + "].value='" + fileName + "'" );
			eval( "document.corporate._ATTR_TMP_" + attrId + "[" + attrSq + "].value='" + tmpFileName + "'" );

		}else{
			eval( "document.corporate._ATTR_FILE_" + (isFileDB?"DB_":"") + attrId + ".value='" + fileName + "'" );
			eval( "document.corporate._ATTR_TMP_" + attrId + ".value='" + tmpFileName + "'" );
		}
		
		var objIcon = eval("document.corporate.icon_perfil_" + attrId);
			if (objIcon != undefined)
				eval( "document.corporate.icon_perfil_" + attrId + ".src='/admcomunidades/tmp/" + tmpFileName + "'" );
	}

   function isAllowedTag(token,tags){
     var status = false;
     for(var i=0;i<tags.length;i++){
       if(token==tags[i]){
         status=true;
       }
     }
     return status;
   }

   function getPureText( value ){
     var text = "";
     var allowedTags = ["<br>","<p>","</p>","<b>","</b>","<i>","</i>","<u>","</u>","<strong>","</strong>","<em>","</em>"];
     var tokenizer = TagTokenizer(value);
     for( var i=0; i<tokenizer.length; i++ ){
       var token = tokenizer[i];
       if( token.charAt(0)=='<' && token.charAt(token.length-1)=='>' ){
         if( isAllowedTag(token.toLowerCase(),allowedTags) ){
           text += token;
         }
       }else{
         text += token;
       }
     }
     return text.replace( /\r/g, '' ).replace( /\n/g, '<BR>' );

     //while( text.indexOf('<')!=-1 && text.indexOf('>',text.indexOf('<'))!=-1 ){
     //  text = text.substring(0,text.indexOf('<'))+text.substring(text.indexOf('>')+1);
     //}
     //return text.replace( /\r/g, '' ).replace( /\n/g, '<BR>' );
   }

   function cleanTexts( dataForm ){
     for(var i=0;i<dataForm.elements.length;i++){
       if( dataForm.elements[i].type.toLowerCase() == 'textarea' ){
         dataForm.elements[i].value = getPureText(dataForm.elements[i].value);
       }
     }
   }

   function assignRadioButtons(dataForm){
     for(var i=0;i<dataForm.elements.length;i++){
       var ffname=dataForm.elements[i].name;
       if(ffname.substring(0,19)=="_RADIO_ATTR_DOMAIN_"){  // _RADIO_ATTR_DOMAIN_ID_POSITION
         if(dataForm.elements[i].checked){
           var radioValue = dataForm.elements[i].value;
           var ffattrid=ffname.substring(19,ffname.indexOf('_',19));
           var ffattrps=ffname.substring(ffname.lastIndexOf('_')+1);
           var ffhidrad="_ATTR_DOMAIN_"+ffattrid;
           var objHids=eval("document.corporate."+ffhidrad);
           if(objHids!=null){
             if(objHids.length && objHids.length>1){
               objHids[parseInt(ffattrps)].value = radioValue;
             }else{
               objHids.value =radioValue;
             }
           }
         }
       }
     }
   }


   function doUpdateCorp( dataForm, txId ){
     assignSplittedDates( dataForm );
     assignRadioButtons(dataForm);
     cleanTexts( dataForm );
     if( validateFields( dataForm ) ){
       dataForm.operation.value = "update";
       if(txId!=null) dataForm.transitionid.value=txId;
       dataForm.submit();
     }
   }

   function doDeleteCorp( dataForm ){
     if( confirm("Tem certeza que deseja excluir este post?") ){
       verificationLoop=false;
       dataForm.operation.value = "delete";
	   dataForm.secao.value = "post";
	   dataForm.transitionid.value = "";
       dataForm.submit();
     }
   }

   function deleteFileAttrContent( attrId, position ){
     var fileWidget = null;
     var isFileDB = (","+_fileDBAttrIds+",".indexOf(","+attrId+",")!=-1);
     eval( "fileWidget=document.corporate._ATTR_FILE_" + (isFileDB?"DB_":"") + attrId );
     if( fileWidget.length > 0){
       eval( "document.corporate._ATTR_FILE_"+(isFileDB?"DB_":"")+attrId+"["+position+"].value=''" );
       eval( "document.corporate._ATTR_TMP_"+attrId+"["+position+"].value='_'" );
     }else{
       eval( "document.corporate._ATTR_FILE_"+(isFileDB?"DB_":"")+attrId+".value=''" );
       eval( "document.corporate._ATTR_TMP_"+attrId+".value='_'" );
     }
   }

   function doInsertCorp( dataForm ){
     verificationLoop=false;
     assignSplittedDates( dataForm );
     assignRadioButtons(dataForm);
     cleanTexts( dataForm );
     if( validateFields( dataForm ) ){
       dataForm.operation.value = "insert";
       dataForm.submit();
     }
    }


  function chooseFile(ctl,attrctl,maxSize,cid){
    lov( "upload.jsp?cid="+cid+"&language=pt_BR&operation=build&ctl="+(ctl!=null?ctl:"uploadctl")+(attrctl!=null?"&attrctl="+attrctl:"")+(maxSize!=null?"&maxsize="+maxSize:""), 550,296, "upload", false, true );
  }

  function lov( url, w, h, name, resizable, scroll ){
    var oAttr = (resizable==null||(resizable!=null&&resizable)?",resizable=yes":",resizable=no") +
                (scroll==null||(scroll!=null&&scroll)?",scrollbars=yes":",scrollbars=no") +
                ",location=no,toolbar=no,directories=no,status=no,width=" + w + ",height=" + h;
    var w=window.open( url, name!=null?name:"lov", oAttr );
    w.focus();
  }


  function setCorpWfControl( assetId,activityIcon, transitionId, stateId, transitionType, notifyAuthor, notifyTarget, formIndex, requestCustomPublishing, userId, cid, mid, localizador ){
    if( assetId != null ){
      var operation = transitionType; //activityIcon;
          operation = (operation=="authoring"?"select":operation);
          operation = (operation=="exclusion"?"delete":operation);
      if(operation=='revision' && (notifyAuthor=='Y' || notifyTarget=='Y')){
        lov( "revisionpad.jsp?nauth=" + notifyAuthor + "&ntarget=" + notifyTarget + "&asset=" + assetId + "&operation="+operation+"&stateid="+stateId+"&transitionid="+transitionId+"&starttime="+document.corporate.starttime.value+"&uid="+userId+"&cid="+cid+"&mid="+mid+"&localizador="+localizador, 550, 380, "revision" );
        //var result = showModalDialog( "revisionprops.jsp?nauth=" + notifyAuthor + "&ntarget=" + notifyTarget + "&language=pt_BR&asset=" + assetId, "", "font-family:Verdana; font-size:12; dialogWidth:550px; dialogHeight:380px" );
        //if( result != null ){
        //  finalizeCorpTransitionExecution(assetId,'pt_BR',operation,stateId,transitionId,document.corporate.starttime.value);
        //}
      }else{
        finalizeCorpTransitionExecution(assetId,'pt_BR',operation,stateId,transitionId,document.corporate.starttime.value);
      }
    }
  }

  function finalizeCorpTransitionExecution(assetId,language,operation,stateId,transitionId,startTime,pubType,pubDate,unpubDate){
    var assetSplit=assetId.split(',');
    var pubComplement=(pubType!=null&&pubType=="POSTPONED"?"&pubtype=POSTPONED":"")+(pubDate!=null?"&pubdate="+pubDate:"")+(unpubDate!=null?"&unpubdate="+unpubDate:"");
    if( assetSplit[0] == 'C' ){
      document.location = "home.jsp?secao=post&operation="+operation+"&localizador="+document.corporate.localizador.value+"&stateid="+stateId+"&transitionid="+transitionId+"&starttime="+startTime+pubComplement;
    }
  }

  function doCrop(tmpFileField,dimension){
    lov( "crop.jsp?field=" + tmpFileField.name + "&file=" + tmpFileField.value + "&dimension=" + dimension, 600, 450, "crop" );
  }



