var SCHEMAS_URL = window.location.protocol + "//" + window.location.host + "/schemas/rest/1.0/";
$(function() {
	$(".toggle-xsd-expand").click(function() {
		var expandDiv = $(this);
		var linkSchema = expandDiv.prev().attr("href");
		if(!expandDiv.next().hasClass('xsd-expand-area')) {
		var xsdSchema = $.ajax({
			url: linkSchema,
			async: false
			}).responseText;
			var descEnglish = "No description yet.";
		var htmlDesc = $.ajax({
			url: linkSchema + ".meta.xml",
			async: false,
			dataType: "xml",
			success: function(data){
			$(data).find("DescriptionEnglish").each(function() {
				descEnglish = $(this).text();
			});
			}
		});
		
		xsdSchema = createSchemaHover(xsdSchema);
		
		// Only encode schema-specifik tags
		xsdSchema = xsdSchema.replace(/(	|\n| )>/g, '&gt;').replace(/(	|\n| )</g, '&lt;').replace(/>/, '&gt;').replace(/</, '&lt;');
		expandDiv.after('<div class="xsd-expand-area">'
			+ '<div style=\'margin-top:10px;width:775px;overflow:auto;padding:0px;margin-right:0px\'><strong>Skema beskrivelse:</strong><br/><p style=\"margin-top:10px;\"><font face=\'monospace\'>' + descEnglish.replace(/>/g, '&gt;').replace(/</g, '&lt;') +  '</font></p></div>'
			+ '<div style=\'width:775px;overflow:auto;padding:0px;margin-right:0px;margin-top:10px;\'><strong>Skema definition:</strong><br/><pre>' + xsdSchema + '</pre></div>'
			+ '</div>');
			$('a').hoverbox();
		}
		else {
			expandDiv.next().toggle();
		}
	});

	function createSchemaHover(xsdSchema) {
		$(xsdSchema).find("include").each(function() {
			schemaLocation = $(this).attr("schemaLocation");
			var htmlDesc = $.ajax({
				url: SCHEMAS_URL + schemaLocation + ".meta.xml",
				async: false,
				dataType: "xml",
				success: function(data){
				$(data).find("DescriptionEnglish").each(function() {
					xsdSchema = xsdSchema.replace("=\""+ schemaLocation+"\"", "=\"<a href=\""
						+ SCHEMAS_URL + schemaLocation
						+ "\" title=\""
						+ "<dl><dt>XSD: </dt><dd>" + schemaLocation + "</dd>"
						+ "<dt>Skema beskrivelse: </dt><dd>" + $(this).text().replace(/>/g, '&amp;gt;').replace(/</g, '&amp;lt;') + "</dd></dl>" 
						+ "\">" + schemaLocation + "</a>\"");
				});
				}
			})
		});
		return xsdSchema;
	}
});
