var peticionSLD;
var scriptFin = "</FeatureTypeStyle></UserStyle></UserLayer></StyledLayerDescriptor>";
var scriptMedio ="</FeatureTypeConstraint></LayerFeatureConstraints><UserStyle><Name>default:prueba</Name><Title>default:prueba</Title><Abstract>default:prueba</Abstract><FeatureTypeStyle><Name>default:prueba</Name>";
var scriptPointSymbolizer = "<Rule><Name>Regla estilo prueba alta escala</Name><MinScaleDenominator>0.0</MinScaleDenominator><MaxScaleDenominator>17000.0</MaxScaleDenominator><PointSymbolizer><Graphic><Mark><WellKnownName>circle</WellKnownName><Fill><CssParameter name=\"fill\">#ff0000</CssParameter><CssParameter name=\"fill-opacity\">0.4</CssParameter></Fill></Mark><Size>20.0</Size></Graphic></PointSymbolizer></Rule><Rule><Name>Regla estilo prueba media escala</Name><MinScaleDenominator>17000.0</MinScaleDenominator><MaxScaleDenominator>34000.0</MaxScaleDenominator><PointSymbolizer><Graphic><Mark><WellKnownName>circle</WellKnownName><Fill><CssParameter name=\"fill\">#ff0000</CssParameter><CssParameter name=\"fill-opacity\">0.4</CssParameter></Fill></Mark><Size>15.0</Size></Graphic></PointSymbolizer></Rule><Rule><Name>Regla estilo capa sld</Name><MinScaleDenominator>34000.0</MinScaleDenominator><MaxScaleDenominator>800000000.0</MaxScaleDenominator><PointSymbolizer><Graphic><Mark><WellKnownName>circle</WellKnownName><Fill><CssParameter name=\"fill\">#ff0000</CssParameter><CssParameter name=\"fill-opacity\">0.4</CssParameter></Fill></Mark><Size>8.0</Size></Graphic></PointSymbolizer></Rule>";
var scriptLineSymbolizer = "<Rule><Name>Regla estilo capa sld</Name><MinScaleDenominator>0.0</MinScaleDenominator><MaxScaleDenominator>800000000.0</MaxScaleDenominator><LineSymbolizer><Stroke><CssParameter name=\"stroke\">#ff0000</CssParameter><CssParameter name=\"stroke-width\"><ogc:Literal>3.0</ogc:Literal></CssParameter><CssParameter name=\"stroke-linejoin\">mitre</CssParameter><CssParameter name=\"stroke-opacity\">0.8</CssParameter><CssParameter name=\"stroke-linecap\">butt</CssParameter></Stroke></LineSymbolizer></Rule>";
var scriptPolygonSymbolizer = "<Rule><Name>Regla estilo capa sld</Name><MinScaleDenominator>0.0</MinScaleDenominator><MaxScaleDenominator>800000000.0</MaxScaleDenominator><PolygonSymbolizer><Fill><CssParameter name=\"fill-opacity\">0.2</CssParameter><CssParameter name=\"fill\">#ff0000</CssParameter></Fill><Stroke><CssParameter name=\"stroke\">#ff0000</CssParameter><CssParameter name=\"stroke-width\"><ogc:Literal>2.0</ogc:Literal></CssParameter><CssParameter name=\"stroke-linejoin\">mitre</CssParameter><CssParameter name=\"stroke-opacity\">0.8</CssParameter><CssParameter name=\"stroke-linecap\">butt</CssParameter></Stroke></PolygonSymbolizer></Rule>";
var scriptInicio = "<StyledLayerDescriptor version=\"1.0.0\" xmlns=\"http://www.opengis.net/sld\" xmlns:ogc=\"http://www.opengis.net/ogc\"><UserLayer><Name>prueba</Name><RemoteOWS><Service>WFS</Service><OnlineResource xmlns:xlink=\"http://www.w3.org/xlink\" xlink:type=\"simple\" xlink:href=\"http://www.dicoruna.es/eiel/wfs?\"/></RemoteOWS><LayerFeatureConstraints><FeatureTypeConstraint>";


function filtraFeatureGeoid(feature, geoid, municipio, tipoGeometria){

	var featureInicio = "<FeatureTypeName>";
	var featureFin = "</FeatureTypeName>";
	var filtroInicio = "<ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>geoid</ogc:PropertyName><ogc:Literal>";
	var filtroFin = "</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>";
	//var path ="http://193.147.40.216/webeiel/";
	var path ="http://www.dicoruna.es/webeiel/";
	
	var finalPregenerado = scriptMedio + scriptPointSymbolizer +scriptLineSymbolizer + scriptPolygonSymbolizer + scriptFin;

	if(tipoGeometria == 'punto'){
		finalPregenerado = scriptMedio + scriptPointSymbolizer + scriptFin;
	}else if(tipoGeometria == 'linea'){
		finalPregenerado = scriptMedio + scriptLineSymbolizer + scriptFin;
	}else if(tipoGeometria == 'poligono'){
		finalPregenerado = scriptMedio + scriptPolygonSymbolizer + scriptFin;
	}

	peticionSLD = scriptInicio + featureInicio + feature + featureFin + filtroInicio + "'"+geoid+"'"+ filtroFin + finalPregenerado;
	
	
	
	var opciones = "resizable=yes,scrollbars=no,status=no,width=" + "980" + ",height=" + "690";
		opciones += "menubar=no,toolbar=no,location=no,directories=no";
	var ventanaApplet = window.open('','ventanaApplet', opciones);
	ventanaApplet.focus();
	if(ventanaApplet.document.applets[0]!=null){
		ventanaApplet.document.applets[0].setSLD(peticionSLD)
		ventanaApplet.document.applets[0].parse();
	}else{
		
		var url = 'GoToMapaTematico.do';
		url = url + '?municipio=' + municipio;
		url = url + '&mapa=' + 'mapatematico_7';
		url = url + '&entidad=' + 'vacio';
		url = url + '&nucleo=' + 'vacio';
		url = url + '&tipo=' + '2';
		url = url + '&alto=' + '690';
		url = url + '&ancho=' + '980';
		url = path+url;
		ventanaApplet = window.open(url, 'ventanaApplet', opciones);
		ventanaApplet.focus();

		cargaSLD();
	}
}

//Se presentan dos opciones, o bien controlar aqui los que tengan el atributo vacio
//o hacer un nuevo metodo que filtre unicamente por municipio,
// tambien hay qu controlar los que no tengan municipio, ya que habra que sacar todos
function filtraFeatureMunicipioAtributoValor(feature, municipio, filtros, tipoGeometria){

	var featureInicio = "<FeatureTypeName>";
	var featureFin = "</FeatureTypeName>";
	var filtroInicio = "<ogc:Filter>";
		var filtroInicioAux = "<ogc:Filter><ogc:And>";
	var filtroMunicipioInicio = "<ogc:PropertyIsEqualTo><ogc:PropertyName>municipio</ogc:PropertyName><ogc:Literal>";
	var filtroMunicipioFin = "</ogc:Literal></ogc:PropertyIsEqualTo>";
	var filtroAtributoInicio = "<ogc:PropertyIsEqualTo><ogc:PropertyName>";
	var filtroAtributoFin = "</ogc:PropertyName>";
	var filtroValorInicio = "<ogc:Literal>";
	var filtroValorFin = "</ogc:Literal></ogc:PropertyIsEqualTo>";
	var filtroFin = "</ogc:Filter>";
	var filtroFinAux = "</ogc:And></ogc:Filter>";
	var path ="http://www.dicoruna.es/webeiel/";

	var filtrosScript = "";

	var finalPregenerado = scriptMedio + scriptPointSymbolizer +scriptLineSymbolizer + scriptPolygonSymbolizer + scriptFin;

	if(tipoGeometria == 'punto'){
		finalPregenerado = scriptMedio + scriptPointSymbolizer + scriptFin;
	}else if(tipoGeometria == 'linea'){
		finalPregenerado = scriptMedio + scriptLineSymbolizer + scriptFin;
	}else if(tipoGeometria == 'poligono'){
		finalPregenerado = scriptMedio + scriptPolygonSymbolizer + scriptFin;
	}

	if(filtros==',;'){
	//en este caso no hay filtros por lo que esta parte ira vacia y no habra que hacer nada

	}else{
	//en este caso si que tenemos filtros por lo que debemos procesar el string
	//para separa todos

		var filtrosArray = filtros.split(';');
		//asi obtenemos un array de strings como este 'atributo,valor'
		var i;
		var fin = filtrosArray.length -1;
		if(fin>1){
			filtrosScript = filtrosScript + "<ogc:Or>";
		}
		for(i=0; i<fin; i++){
			var filtroArray = filtrosArray[i].split(',');
			filtrosScript = filtrosScript + filtroAtributoInicio + filtroArray[0]
				+ filtroAtributoFin + filtroValorInicio + "'"+ filtroArray[1] + "'"+ filtroValorFin;
		}
		if(fin>1){
			filtrosScript = filtrosScript + "</ogc:Or>";
		}
		//alert(filtrosScript);
	}

	//si el municipio es vacio no lo tenemos que meter dentro del filtro
	//ademas de esto tendremos que controlar el atributo y el valor, que podran estar vacios,
	//asi como encargarnos de construir los filtro que lleven varios atributos y valores

	var municipioScript = "";
	if(municipio=='-1'){
		//en este caso hay que cambiar el municipio a 'vacio'
		municipio = 'vacio';
	}else{
		if(filtrosScript==''){
			municipioScript = filtroMunicipioInicio + "'"+ municipio + "'"+ filtroMunicipioFin;
		}else{
			municipioScript = "<ogc:And>"+ filtroMunicipioInicio + "'"+ municipio + "'"+ filtroMunicipioFin;
			filtrosScript= filtrosScript + "</ogc:And>";
		}

		//alert(municipioScript);
	}

	//si no hay ni filtrado por municipio ni por atributos debemos quitar lo del
	//filtro inicio, si no no funciona
	if(filtrosScript=='' && municipioScript==''){
		peticionSLD = scriptInicio + featureInicio + feature + featureFin + finalPregenerado;
	}else{
		peticionSLD = scriptInicio + featureInicio + feature + featureFin + filtroInicio +municipioScript + filtrosScript + filtroFin + finalPregenerado;
	}


	//alert(peticionSLD);
	var opciones = "resizable=yes,scrollbars=no,status=no,width=" + "980" + ",height=" + "690";
	opciones += "menubar=no,toolbar=no,location=no,directories=no";

	var ventanaApplet = window.open('','ventanaApplet', opciones);
	ventanaApplet.focus();
	if(ventanaApplet.document.applets[0]!=null){
		ventanaApplet.document.applets[0].setSLD(peticionSLD)
		ventanaApplet.document.applets[0].parse();
	}else{
		var url = 'GoToMapaTematico.do';
		url = url + '?municipio=' + municipio;
		url = url + '&mapa=' + 'mapatematico_7';
		url = url + '&entidad=' + 'vacio';
		url = url + '&nucleo=' + 'vacio';
		url = url + '&tipo=' + '2';
		url = url + '&alto=' + '690';
		url = url + '&ancho=' + '980';
		
		url = path+url;
		var opciones = "resizable=yes,scrollbars=no,status=no,width=" + "980" + ",height=" + "690";
		opciones += "menubar=no,toolbar=no,location=no,directories=no";
		ventanaApplet = window.open(url, 'ventanaApplet', opciones);
		ventanaApplet.focus();

		cargaSLD();
	}
}

function cargaSLD(){
	var ventanaApplet = window.open('','ventanaApplet');
	if(ventanaApplet.document.applets[0]==null){
		setTimeout("cargaSLD()", 500);
	}else{
		setTimeout("ponSLD()",2000);
	}
}

function ponSLD(){

		var ventanaApplet = window.open('','ventanaApplet');
		ventanaApplet.document.applets[0].setSLD(peticionSLD);
		ventanaApplet.document.applets[0].parse();
}



