<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2912" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi , </FONT></DIV>
<DIV><FONT size=2><FONT size=3>We have been at work with the filters of layers 
and we like tho share the created functions. <FONT size=3>We hoped that help to 
them.</FONT></FONT></FONT></DIV>
<DIV><FONT size=2><FONT size=3></FONT></FONT>&nbsp;</DIV>
<DIV><FONT size=2><FONT 
size=3>***********************************************************</FONT></FONT></DIV>
<DIV><FONT size=2><FONT face=Arial size=2>//Function for apply filters on WMS 
Layers using selecting value, the main objetive of this function is make one sld 
and then //apply to point layers, although with some simple modification is 
extensive to another layers Ej. Polygon.....&nbsp;&nbsp;&nbsp; 
</FONT></FONT></DIV>
<DIV>&nbsp;</DIV><FONT size=2><FONT face=Arial size=2>
<DIV><BR>//*****&nbsp; Function for make one filter of point layer 
***********//</DIV>
<DIV>&nbsp;</DIV>
<DIV>function&nbsp; 
Crear_PropertyIsEqualTo(pPropertyName,pLiteral)<BR>{<BR>&nbsp;var 
PropertyIsEqualTo = '&lt;PropertyIsEqualTo&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
PropertyIsEqualTo += 
'&lt;PropertyName&gt;'+pPropertyName+'&lt;/PropertyName&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
PropertyIsEqualTo += 
'&lt;Literal&gt;'+pLiteral+'&lt;/Literal&gt;';<BR>&nbsp;&nbsp;PropertyIsEqualTo 
+= '&lt;/PropertyIsEqualTo&gt;';<BR>&nbsp;&nbsp;<BR>&nbsp; return 
PropertyIsEqualTo;<BR>}&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>// this function make one properties for filters </DIV>
<DIV>&nbsp;</DIV>
<DIV>function&nbsp; 
Crear_PropertyIsLessThanOrEqualTo(pPropertyName,pLiteral)<BR>{<BR>&nbsp;var 
PropertyIsLessThanOrEqualTo = 
'&lt;PropertyIsLessThanOrEqualTo&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
PropertyIsLessThanOrEqualTo += 
'&lt;PropertyName&gt;'+pPropertyName+'&lt;/PropertyName&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
PropertyIsLessThanOrEqualTo += 
'&lt;Literal&gt;'+pLiteral+'&lt;/Literal&gt;';<BR>&nbsp;&nbsp;PropertyIsLessThanOrEqualTo 
+= '&lt;/PropertyIsLessThanOrEqualTo&gt;';<BR>&nbsp;&nbsp;<BR>&nbsp; return 
PropertyIsLessThanOrEqualTo;<BR>}&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>function&nbsp; 
Crear_PropertyIsGreaterThanOrEqualTo(pPropertyName,pLiteral)<BR>{<BR>&nbsp;var 
PropertyIsGreaterThanOrEqualTo = 
'&lt;PropertyIsGreaterThanOrEqualTo&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
PropertyIsGreaterThanOrEqualTo += 
'&lt;PropertyName&gt;'+pPropertyName+'&lt;/PropertyName&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
PropertyIsGreaterThanOrEqualTo += 
'&lt;Literal&gt;'+pLiteral+'&lt;/Literal&gt;';<BR>&nbsp;&nbsp;PropertyIsGreaterThanOrEqualTo 
+= '&lt;/PropertyIsGreaterThanOrEqualTo&gt;';<BR>&nbsp;&nbsp;<BR>&nbsp; return 
PropertyIsGreaterThanOrEqualTo;<BR>}&nbsp;<BR>&nbsp;<BR>// thsi function make 
one filters for inside SLD using the propperties list meke before </DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>function Crear_Filter(Lista_Propertys,Cantidad)<BR>{<BR>&nbsp;var 
Filter = '&lt;Filter xmlns:gml="<A 
href="http://www.opengis.net/gml&quot;>'">http://www.opengis.net/gml"&gt;'</A>;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp; 
if(Cantidad == 0)<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp; Filter = 
'';<BR>&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp; else if(Cantidad == 
1)<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp; Filter += 
Lista_Propertys;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Filter += 
'&lt;/Filter&gt;';<BR>&nbsp;}<BR>&nbsp;else 
<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp; Filter += 
'&lt;And&gt;';<BR>&nbsp;&nbsp;&nbsp;&nbsp; for( var i = 0;i &lt; Cantidad 
;i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; Filter += 
Lista_Propertys[i];&nbsp;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;Filter += 
'&lt;/And&gt;';<BR>&nbsp;&nbsp;Filter += '&lt;/Filter&gt;';<BR>&nbsp;}&nbsp; 
<BR>&nbsp;<BR>&nbsp;&nbsp; return Filter;<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>// This function return the image name that wil be show in the SLD 
simbology </DIV>
<DIV>&nbsp;</DIV>
<DIV>function GetImagen()<BR>{<BR>&nbsp; 
if(document.getElementById('tipo_anav').value != "-1")<BR>&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(document.getElementById('tipo_anav').value == 
"FV")<BR>&nbsp;&nbsp;&nbsp; return "FV.gif";<BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(document.getElementById('tipo_anav').value == 
"FA")<BR>&nbsp;&nbsp;&nbsp; return "FA.gif";<BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(document.getElementById('tipo_anav').value == 
"BY")<BR>&nbsp;&nbsp;&nbsp; return "BY.gif";<BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(document.getElementById('tipo_anav').value == 
"BZ")<BR>&nbsp;&nbsp;&nbsp; return "BZ.gif";&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('tipo_anav').value == "ENF")<BR>&nbsp;&nbsp;&nbsp; 
return "ENF.gif";&nbsp; &nbsp;&nbsp;&nbsp; <BR>&nbsp; }&nbsp; <BR>&nbsp; 
else<BR>&nbsp;&nbsp;&nbsp; return "FV.gif"; <BR>}<BR>&nbsp;<BR>// This function 
create the Rule contained into the SLD </DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>function Crear_Rule(pFilter)<BR>{ <BR>&nbsp;var Rule 
='&lt;Rule&gt;';<BR>&nbsp; if(pFilter != '') <BR>&nbsp;&nbsp; Rule += 
pFilter;<BR>&nbsp; Rule 
+='&lt;PointSymbolizer&gt;&lt;Graphic&gt;&lt;ExternalGraphic&gt;&lt;OnlineResource 
xmlns:xlink="<A 
href="http://www.w3.org/1999/xlink">http://www.w3.org/1999/xlink</A>" 
xlink:type="simple" 
xlink:href="file:/D:/AppServ/www/SIGANAV/images/'+GetImagen()+'"/&gt;&lt;Format&gt;image/gif&lt;/Format&gt;&lt;/ExternalGraphic&gt;&lt;Opacity&gt;&lt;Literal&gt;1.0&lt;/Literal&gt;&lt;/Opacity&gt;&lt;Size&gt;&lt;Literal&gt;20.0&lt;/Literal&gt;&lt;/Size&gt;&lt;Rotation&gt;&lt;Literal&gt;0.0&lt;/Literal&gt;&lt;/Rotation&gt;&lt;/Graphic&gt;&lt;/PointSymbolizer&gt;'; 
<BR>&nbsp; Rule +='&lt;/Rule&gt;';&nbsp;&nbsp;&nbsp; <BR>&nbsp;return Rule; 
<BR>}<BR>&nbsp;<BR>// This function create the SLD using the rule </DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>function Crear_StyledLayerDescriptor(pRule) &nbsp;<BR>{<BR>&nbsp;&nbsp; 
var StyledLayerDescriptor;<BR>&nbsp; StyledLayerDescriptor 
='&lt;StyledLayerDescriptor 
version="1.0.0"&gt;&lt;UserLayer&gt;&lt;Name&gt;topp:sennal&lt;/Name&gt;&lt;UserStyle&gt;&lt;Name&gt;UserSelection&lt;/Name&gt;&lt;FeatureTypeStyle&gt;'+pRule+'&lt;/FeatureTypeStyle&gt;&lt;/UserStyle&gt;&lt;/UserLayer&gt;&lt;/StyledLayerDescriptor&gt;';<BR>&nbsp;<BR>&nbsp; 
return StyledLayerDescriptor;<BR>}<BR>&nbsp;<BR>&nbsp;<BR>// This function is 
one example tha How filter the layer using the selecting elements 
<BR>&nbsp;<BR>function FiltrarCapa()<BR>{<BR>&nbsp; var listaPropiedades = new 
Array();<BR>&nbsp; var Cant = 0;&nbsp; <BR>&nbsp; <BR>&nbsp; 
if(document.getElementById('emp').value != "-1")<BR>&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('empresa',document.getElementById('emp').value 
);<BR>&nbsp; }<BR>&nbsp; if(document.getElementById('est').value != 
"-1")<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('estacion',document.getElementById('est').value 
);<BR>&nbsp; }<BR>&nbsp; if(document.getElementById('tipo_anav').value != 
"-1")<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('tipo_senal',document.getElementById('tipo_anav').value 
);<BR>&nbsp; }</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; if(document.getElementById('categoria').value != "-1")<BR>&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('categoria',document.getElementById('categoria').value 
);<BR>&nbsp; }<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp; 
if(document.getElementById('ciega').checked == true)<BR>&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('ciega_luminica','C');<BR>&nbsp; }&nbsp;&nbsp; 
<BR>&nbsp; if(document.getElementById('luminica').checked == true)<BR>&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('ciega_luminica','L');<BR>&nbsp; }&nbsp;&nbsp;&nbsp; 
<BR>&nbsp; </DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if(document.getElementById('sennal_fuera_serv').checked == 
true)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; var valor = 
"true";<BR>listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('fuera_servicio',valor);<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('fecha_ini').value != "")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsLessThanOrEqualTo('fecha_falla',document.getElementById('fecha_ini').value 
);<BR>&nbsp; &nbsp;&nbsp;} </DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('fecha_fin').value != "")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsGreaterThanOrEqualTo('fecha_falla',document.getElementById('fecha_fin').value 
);<BR>&nbsp; &nbsp;&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('tipo_falla').value != "-1")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('tipo_falla',document.getElementById('tipo_falla').value 
);<BR>&nbsp; &nbsp;&nbsp;}&nbsp; 
<BR>&nbsp;&nbsp;&nbsp;if(document.getElementById('origen_falla').value != 
"-1")<BR>&nbsp; &nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('origen_falla',document.getElementById('origen_falla').value 
);<BR>&nbsp;&nbsp;&nbsp; }&nbsp; <BR>&nbsp; <BR>&nbsp; }<BR>&nbsp;&nbsp;&nbsp; 
<BR>&nbsp; if(document.getElementById('mant_plan').checked == true)<BR>&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('fecha_ini').value != "-1")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsLessThanOrEqualTo('fecha_mant_planificado',document.getElementById('fecha_ini').value 
);<BR>&nbsp; &nbsp;&nbsp;} </DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('fecha_fin').value != "-1")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsGreaterThanOrEqualTo('fecha_mant_planificado',document.getElementById('fecha_fin').value 
);<BR>&nbsp; &nbsp;&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('tipo_mant').value != "-1")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('tipo_mant_realizado',document.getElementById('tipo_mant').value 
);<BR>&nbsp; &nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; }<BR>&nbsp; 
if(document.getElementById('mant_ejec').checked == true)<BR>&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('fecha_ini').value != "-1")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsLessThanOrEqualTo('fecha_mant_realizado',document.getElementById('fecha_ini').value 
);<BR>&nbsp; &nbsp;&nbsp;} </DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('fecha_fin').value != "-1")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsGreaterThanOrEqualTo('fecha_mant_realizado',document.getElementById('fecha_fin').value 
);<BR>&nbsp; &nbsp;&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if(document.getElementById('tipo_mant').value != "-1")<BR>&nbsp; 
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; listaPropiedades[Cant++] = 
Crear_PropertyIsEqualTo('tipo_mant_realizado',document.getElementById('tipo_mant').value 
);<BR>&nbsp; &nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; 
}<BR>//********************** Example of Call this 
functions&nbsp;&nbsp;&nbsp;&nbsp; ************************//</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp; var Filtro = 
Crear_Filter(listaPropiedades,Cant);<BR>&nbsp;&nbsp; var Regla&nbsp; = 
Crear_Rule(Filtro);<BR>&nbsp;&nbsp; var StyledLayerDescriptor = 
Crear_StyledLayerDescriptor(Regla);&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; 
map.layers[2].mergeNewParams({SLD_BODY:StyledLayerDescriptor});&nbsp;&nbsp; 
<BR>}&nbsp;</FONT></FONT></DIV>
<DIV><FONT size=2><FONT face=Arial size=2></FONT></FONT>&nbsp;</DIV>
<DIV><FONT size=2><FONT 
size=3>************************************************************</FONT></FONT></DIV>
<DIV><FONT face=Arial size=2><FONT size=2>
<P>Best Regards , Salas</P>
<P>&nbsp;</P></FONT></FONT></DIV>
<DIV><FONT size=2><FONT face=Arial size=2></FONT></FONT>&nbsp;</DIV>
<DIV><FONT size=2><FONT size=3></FONT>&nbsp;</DIV></FONT></BODY></HTML>