function updateFormats() {
	var in_options = {
		'internalProjection' : map.baseLayer.projection,
		'externalProjection' : new OpenLayers.Projection('EPSG:4326')
	};
	var out_options = {
		'internalProjection' : map.baseLayer.projection,
		'externalProjection' : new OpenLayers.Projection('EPSG:4326')
	};
	var gmlOptions = {
		featureType : "feature",
		featureNS : "http://example.com/feature"
	};
	var gmlOptionsIn = OpenLayers.Util.extend(OpenLayers.Util.extend({}, gmlOptions), in_options);
	var gmlOptionsOut = OpenLayers.Util.extend(OpenLayers.Util.extend({}, gmlOptions), out_options);
	var kmlOptionsIn = OpenLayers.Util.extend({
		extractStyles : true
	}, in_options);
	formats = {
		'in' : {
			wkt : new OpenLayers.Format.WKT(in_options),
			geojson : new OpenLayers.Format.GeoJSON(in_options),
			georss : new OpenLayers.Format.GeoRSS(in_options),
			gml2 : new OpenLayers.Format.GML.v2(gmlOptionsIn),
			gml3 : new OpenLayers.Format.GML.v3(gmlOptionsIn),
			kml : new OpenLayers.Format.KML(kmlOptionsIn)
		},
		'out' : {
			wkt : new OpenLayers.Format.WKT(out_options),
			geojson : new OpenLayers.Format.GeoJSON(out_options),
			georss : new OpenLayers.Format.GeoRSS(out_options),
			gml2 : new OpenLayers.Format.GML.v2(gmlOptionsOut),
			gml3 : new OpenLayers.Format.GML.v3(gmlOptionsOut),
			kml : new OpenLayers.Format.KML(out_options)
		}
	};
}

function serialize(feature) {
	var type = document.getElementById("formatType").value;
	// second argument for pretty printing (geojson only)

	var str = formats['out'][type].write(feature);
	// not a good idea in general, just for this demo
	str = str.replace(/,/g, ', ');
	document.getElementById('output').value = str;

}

function deserialize() {
	var element = document.getElementById('output');
	var type = document.getElementById("formatType").value;
	var features = formats['in'][type].read(element.value);
	var bounds;
	if(features) {
		if(features.constructor != Array) {
			features = [features];
		}
		for(var i = 0; i < features.length; ++i) {
			if(!bounds) {
				bounds = features[i].geometry.getBounds();
			} else {
				bounds.extend(features[i].geometry.getBounds());
			}

		}
		vectors.addFeatures(features);
		map.zoomToExtent(bounds);
		var plural = (features.length > 1) ? 's' : '';
		element.value = features.length + ' feature' + plural + ' added';
	} else {
		element.value = 'Bad input ' + type;
	}
}

// preload images
(function() {
	var roots = ["draw_point", "draw_line", "draw_polygon", "pan"];
	var onImages = [];
	var offImages = [];
	for(var i = 0; i < roots.length; ++i) {
		onImages[i] = new Image();
		onImages[i].src = "../theme/default/img/" + roots[i] + "_on.png";
		offImages[i] = new Image();
		offImages[i].src = "../theme/default/img/" + roots[i] + "_on.png";
	}
})();
// Tiling mode, can be 'tiled' or 'untiled'
function setTileMode(tilingMode) {
	if(tilingMode == 'tiled') {
		untiled.setVisibility(false);
		tiled.setVisibility(true);
		map.setBaseLayer(tiled);
	} else {
		untiled.setVisibility(true);
		tiled.setVisibility(false);
		map.setBaseLayer(untiled);
	}
}

// changes the current tile format
function setImageFormat(mime) {
	// we may be switching format on setup
	if(tiled == null)
		return;

	tiled.mergeNewParams({
		format : mime
	});
	untiled.mergeNewParams({
		format : mime
	});
	/*
	 var paletteSelector = document.getElementById('paletteSelector')
	 if (mime == 'image/jpeg') {
	 paletteSelector.selectedIndex = 0;
	 setPalette('');
	 paletteSelector.disabled = true;
	 }
	 else {
	 paletteSelector.disabled = false;
	 }
	 */
}

// sets the chosen style
function setStyle(style) {
	// we may be switching style on setup
	if(tiled == null)
		return;

	tiled.mergeNewParams({
		styles : style
	});
	untiled.mergeNewParams({
		styles : style
	});
}

function setAntialiasMode(mode) {
	tiled.mergeNewParams({
		format_options : 'antialias:' + mode
	});
	untiled.mergeNewParams({
		format_options : 'antialias:' + mode
	});
}

function setPalette(mode) {
	if(mode == '') {
		tiled.mergeNewParams({
			palette : null
		});
		untiled.mergeNewParams({
			palette : null
		});
	} else {
		tiled.mergeNewParams({
			palette : mode
		});
		untiled.mergeNewParams({
			palette : mode
		});
	}
}

function setWidth(size) {
	var mapDiv = document.getElementById('map');
	var wrapper = document.getElementById('wrapper');

	if(size == "auto") {
		// reset back to the default value
		mapDiv.style.width = null;
		wrapper.style.width = null;
	} else {
		mapDiv.style.width = size + "px";
		wrapper.style.width = size + "px";
	}
	// notify OL that we changed the size of the map div
	map.updateSize();
}

function setHeight(size) {
	var mapDiv = document.getElementById('map');

	if(size == "auto") {
		// reset back to the default value
		mapDiv.style.height = null;
	} else {
		mapDiv.style.height = size + "px";
	}
	// notify OL that we changed the size of the map div
	map.updateSize();
}

function updateFilter() {
	if(pureCoverage)
		return;

	var filterType = document.getElementById('filterType').value;
	var filter = document.getElementById('filter').value;

	// by default, reset all filters
	var filterParams = {
		filter : null,
		cql_filter : null,
		featureId : null
	};
	if(OpenLayers.String.trim(filter) != "") {
		if(filterType == "cql")
			filterParams["cql_filter"] = filter;
		if(filterType == "ogc")
			filterParams["filter"] = filter;
		if(filterType == "fid")
			filterParams["featureId"] = filter;
	}
	// merge the new filter definitions
	mergeNewParams(filterParams);
}

function resetFilter() {
	if(pureCoverage)
		return;

	document.getElementById('filter').value = "";
	updateFilter();
}

function mergeNewParams(params) {
	tiled.mergeNewParams(params);
	untiled.mergeNewParams(params);
}

function getHost() {

	var urlpart = document.URL.split("/");
	return urlpart[2];
}

function reloadIframe() {
	$.each($("iframe"), function() {
		$("#iframap").attr({
			src : $("#iframap").attr("src")
		});
	});
	return false;
}

function buscarLsd(q) {
	//alert(q)

	$.ajax({
		url : 'class/buscar.lsd.php?q=' + escape(q),
		beforeSend : function(data) {
			$("#lsdResul").fadeIn();
			$("#load").html("<img src='img/ajax-loader.gif' class='loading' >")
		},
		success : function(html) {
			$("#load").html(html);

		}
	});
}

function intro(e, q) {
	tecla = (document.all) ? e.keyCode : e.which;
	if(tecla == 13) {
		buscarLsd(q);
		return false

	}

}

function buscarTag(q) {
	$('#b').val(q);
	$.ajax({
		url : 'class/buscar.lsd.php?q=' + escape(q),
		beforeSend : function(data) {
			$("#lsdResul").fadeIn();
			$("#load").html("<img src='img/ajax-loader.gif' class='loading' >")
		},
		success : function(html) {
			$("#load").html(html);

		}
	});
}

/*detectar explorador*/
var BrowserDetect = {
	init : function() {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString : function(data) {
		for(var i = 0; i < data.length; i++) {
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if(dataString) {
				if(dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			} else if(dataProp)
				return data[i].identity;
		}
	},
	searchVersion : function(dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if(index == -1)
			return;
		return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
	},
	dataBrowser : [{
		string : navigator.userAgent,
		subString : "Chrome",
		identity : "Chrome"
	}, {
		string : navigator.userAgent,
		subString : "OmniWeb",
		versionSearch : "OmniWeb/",
		identity : "OmniWeb"
	}, {
		string : navigator.vendor,
		subString : "Apple",
		identity : "Safari",
		versionSearch : "Version"
	}, {
		prop : window.opera,
		identity : "Opera"
	}, {
		string : navigator.vendor,
		subString : "iCab",
		identity : "iCab"
	}, {
		string : navigator.vendor,
		subString : "KDE",
		identity : "Konqueror"
	}, {
		string : navigator.userAgent,
		subString : "Firefox",
		identity : "Firefox"
	}, {
		string : navigator.vendor,
		subString : "Camino",
		identity : "Camino"
	}, {// for newer Netscapes (6+)
		string : navigator.userAgent,
		subString : "Netscape",
		identity : "Netscape"
	}, {
		string : navigator.userAgent,
		subString : "MSIE",
		identity : "Explorer",
		versionSearch : "MSIE"
	}, {
		string : navigator.userAgent,
		subString : "Gecko",
		identity : "Mozilla",
		versionSearch : "rv"
	}, {// for older Netscapes (4-)
		string : navigator.userAgent,
		subString : "Mozilla",
		identity : "Netscape",
		versionSearch : "Mozilla"
	}],
	dataOS : [{
		string : navigator.platform,
		subString : "Win",
		identity : "Windows"
	}, {
		string : navigator.platform,
		subString : "Mac",
		identity : "Mac"
	}, {
		string : navigator.userAgent,
		subString : "iPhone",
		identity : "iPhone/iPod"
	}, {
		string : navigator.platform,
		subString : "Linux",
		identity : "Linux"
	}]

};
BrowserDetect.init();

/*Funcion cokie*/
function createCookie(name, value, days) {
	if(days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	} else
		var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while(c.charAt(0) == ' ')
		c = c.substring(1, c.length);
		if(c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name, "", -1);
}

//Funcion de JqueryUI
$(function() {

	// Accordion
	$("#accordion").accordion({
		header : "h3"
	});

	// Tabs
	$('#tabs').tabs();

	// Dialog
	$('#dialog').dialog({
		autoOpen : false,
		width : 600,
		height : 500,
		show : "bounce",
		hide : "fold",
		resizable : false,
		draggable : false
	});

	// Dialog Link
	$('#dialog_link').click(function() {
		$('#dialog').dialog('open');
		return false;
	});
	// Datepicker
	$('#datepicker').datepicker({
		inline : true
	});

	// Slider
	$('#slider').slider({
		range : true,
		values : [17, 67]
	});

	// Progressbar
	$("#progressbar").progressbar({
		value : 20
	});

	//hover states on the static widgets
	$('#dialog_link, ul#icons li').hover(function() {
		$(this).addClass('ui-state-hover');
	}, function() {
		$(this).removeClass('ui-state-hover');
	});

	$(".tag3, .tag1, .tag2").click(function() {
		buscarTag($(this).text());
	});
	
});

