Browse Source

create LodLive repository

Alessia 1 year ago
commit
963188d55e
82 changed files with 9019 additions and 0 deletions
  1. BIN
      .DS_Store
  2. 3 0
      Dockerfile
  3. 7 0
      LICENSE
  4. 18 0
      README.md
  5. 313 0
      app_en.html
  6. 318 0
      app_fr.html
  7. 322 0
      app_gl.html
  8. 325 0
      app_it.html
  9. BIN
      css/.DS_Store
  10. 692 0
      css/lodlive.app.css
  11. 742 0
      css/lodlive.core.css
  12. 398 0
      css/lodlive.profile.css
  13. BIN
      css/ui-lightness/images/animated-overlay.gif
  14. BIN
      css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
  15. BIN
      css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
  16. BIN
      css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
  17. BIN
      css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
  18. BIN
      css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
  19. BIN
      css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
  20. BIN
      css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
  21. BIN
      css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
  22. BIN
      css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
  23. BIN
      css/ui-lightness/images/ui-icons_222222_256x240.png
  24. BIN
      css/ui-lightness/images/ui-icons_228ef1_256x240.png
  25. BIN
      css/ui-lightness/images/ui-icons_ef8c08_256x240.png
  26. BIN
      css/ui-lightness/images/ui-icons_ffd27a_256x240.png
  27. BIN
      css/ui-lightness/images/ui-icons_ffffff_256x240.png
  28. 4 0
      css/ui-lightness/jquery-ui-1.10.3.custom.min.css
  29. BIN
      favicon.png
  30. 22 0
      foafPerson/alessandro-antonuccio.rdf
  31. 23 0
      foafPerson/diego-valerio-camarda.rdf
  32. 30 0
      foafPerson/silvia-mazzini.rdf
  33. BIN
      img/ajax-loader-black.gif
  34. BIN
      img/ajax-loader-gray.gif
  35. BIN
      img/ajax-loader-white.gif
  36. BIN
      img/ajax-loader.gif
  37. BIN
      img/bestexperienced.png
  38. BIN
      img/browsers.png
  39. BIN
      img/favicon.png
  40. BIN
      img/immagine-vuota-en.png
  41. BIN
      img/immagine-vuota-fr.png
  42. BIN
      img/immagine-vuota-it.png
  43. BIN
      img/logoLodLive.jpg
  44. BIN
      img/logoRestore.png
  45. BIN
      img/pannelloBlackBackground.png
  46. BIN
      img/pannelloBlueBackground.png
  47. BIN
      img/shadow.png
  48. BIN
      img/sprite-balls.png
  49. BIN
      img/sprite-balls@2x.png
  50. BIN
      img/sprite-home-eng.png
  51. BIN
      img/sprite-home-fr.png
  52. BIN
      img/sprite-home.png
  53. BIN
      img/sprite-legenda.png
  54. BIN
      img/sprite-legenda@2x.png
  55. BIN
      img/thumbBlueNoFoto.png
  56. 3 0
      js/jquery-2.0.3.min.js
  57. 4 0
      js/jquery-ui-1.9.2.min.js
  58. 10 0
      js/jquery.ThreeDots.min.js
  59. 9 0
      js/jquery.doTimeout.js
  60. BIN
      js/jquery.fancybox/blank.gif
  61. BIN
      js/jquery.fancybox/fancybox_loading.gif
  62. BIN
      js/jquery.fancybox/fancybox_loading@2x.gif
  63. BIN
      js/jquery.fancybox/fancybox_overlay.png
  64. BIN
      js/jquery.fancybox/fancybox_sprite.png
  65. BIN
      js/jquery.fancybox/fancybox_sprite@2x.png
  66. 274 0
      js/jquery.fancybox/jquery.fancybox.css
  67. 46 0
      js/jquery.fancybox/jquery.fancybox.pack.js
  68. 38 0
      js/jquery.gmap3.js
  69. 61 0
      js/jquery.jcanvas.js
  70. 23 0
      js/jquery.json-2.3.min.js
  71. 3 0
      js/jquery.jsonp-2.4.0.min.js
  72. 8 0
      js/jquery.jstorage.js
  73. 15 0
      js/jquery.slimScroll.min.js
  74. 610 0
      js/lodlive.app.js
  75. 3118 0
      js/lodlive.core.js
  76. 88 0
      js/lodlive.custom-lines.js
  77. 215 0
      js/lodlive.lang.js
  78. 117 0
      js/lodlive.profile-localhost-example.js
  79. 855 0
      js/lodlive.profile.js
  80. 281 0
      js/lodlive.utils.js
  81. 2 0
      robots.txt
  82. 22 0
      stats.html

BIN
.DS_Store


+ 3 - 0
Dockerfile

@@ -0,0 +1,3 @@
+FROM nginx
+
+COPY . /usr/share/nginx/html/

+ 7 - 0
LICENSE

@@ -0,0 +1,7 @@
+Copyright (c) 2012 <Diego Valerio Camarda, Silvia Mazzini, Alessandro Antonuccio>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 18 - 0
README.md

@@ -0,0 +1,18 @@
+LodLive
+=======
+
+browse the web of data - a SPARQL navigator
+
+LodLive is an experimental project that was set-up to spread and promote the linked-open-data philosophy and to create a tool that can be used for connecting RDF browser capabilities with the effectiveness of data graph representation. 
+
+LodLive is the first navigator to use RDF resources based solely on SPARQL endpoints. 
+
+LodLive aims to demonstrate how resources published by W3C standards for the semantic web can be made easily accessible and legible with a few viable tools. 
+
+LodLive is capable of connecting the resources existing in its configured endpoints, allowing the user to pass from one endpoint to another by making use of LOD interconnection capacities.
+
+## About us
+LodLive is ideated and maintained by Diego Valerio Camarda and Alessandro Antonuccio with the support of Silvia Mazzini.  
+Diego is the RDF guy behind the technology (see https://www.linkedin.com/in/dvcama)   
+Alessandro is the designer responsible for the interface and the UX (see http://hstudio.it)
+

+ 313 - 0
app_en.html

@@ -0,0 +1,313 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-rdfa-2.xsd" lang="it" xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+	<head profile="http://www.w3.org/1999/xhtml/vocab">
+
+		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+		<meta name="viewport" content="width=device-width, initial-scale=1" />
+
+		<title property="dc:title">LodLive - browsing the Web of Data</title>
+		<link rel="shortcut icon" href="favicon.png" />
+		<link rel="icon" type="image/png" href="favicon.png" />
+		<link rel="image_src" href="http://lodlive.it/img/logoLodLive.jpg" />
+		<meta property="og:image" content="http://lodlive.it/img/logoLodLive.jpg" />
+
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/diego-valerio-camarda" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/silvia-mazzini" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/alessandro-antonuccio" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/Semantic_Web" />
+		<link property="dc:subject" href="http://dbpedia.org/page/Linked_Data" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/SPARQL" />
+
+		<link property="cc:licence" href="http://www.opensource.org/licenses/mit-license.php" />
+
+		<meta property="og:title" content="LodLive - browsing the Web of Data" />
+		<meta property="og:description" content="LodLive &egrave; un progetto sperimentale nato per divulgare la filosofia dei linked open data e per creare uno strumento in grado di associare le potenzialità di un browser RDF all'efficacia della rappresentazione a grafo proponendosi come primo navigatore di risorse RDF basato unicamente su endpoint SPARQL." />
+
+		<meta property="dcterms:created" content="2012-04-25T13:00:00" />
+		<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+
+		<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
+		<script>
+			window.jQuery || document.write('<script src="js/jquery-2.0.3.min.js"><\/script>')
+		</script>
+
+		<script type="text/javascript">
+			var _gaq = _gaq || [];
+			_gaq.push(['_setAccount', 'UA-1940652-20']);
+			_gaq.push(['_setDomainName', 'lodlive.it']);
+			_gaq.push(['_trackPageview']);
+
+			(function() {
+				var ga = document.createElement('script');
+				ga.type = 'text/javascript';
+				ga.async = true;
+				ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(ga, s);
+			})();
+		</script>
+
+		<script type="text/javascript">
+			WebFontConfig = {
+				google : {
+					families : ['Open+Sans:400italic,700italic,800italic,300italic,600italic,400,300,600,800,700:latin']
+				}
+			};
+			(function() {
+				var wf = document.createElement('script');
+				wf.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
+				wf.type = 'text/javascript';
+				wf.async = 'true';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(wf, s);
+			})();
+		</script>
+		<script type="text/javascript" src="js/jquery-ui-1.9.2.min.js"></script>
+
+		<link rel="stylesheet" href="js/jquery.fancybox/jquery.fancybox.css" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.core.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.profile.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.app.css?01" type="text/css" media="all" />
+
+		<script type="text/javascript" src="js/jquery.fancybox/jquery.fancybox.pack.js"></script>
+		<script type="text/javascript" src="js/jquery.slimScroll.min.js"></script>
+		<script type="text/javascript" src="js/jquery.json-2.3.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jsonp-2.4.0.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jstorage.js"></script>
+		<script type="text/javascript" src="js/jquery.jcanvas.js"></script>
+		<script type="text/javascript" src="js/jquery.doTimeout.js"></script>
+		<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
+		<script type="text/javascript" src="js/jquery.gmap3.js"></script>
+		<script type="text/javascript" src="js/jquery.ThreeDots.min.js"></script>
+
+		<script type="text/javascript" src="js/lodlive.profile.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.core.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.lang.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.utils.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.custom-lines.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.app.js?01"></script>
+		<script type="text/javascript">
+			$.jStorage.set('selectedLanguage', 'en')
+		</script>
+	</head>
+	<body>
+		<div id="lang-en">
+			<div id="lang">
+				<a href="http://lodlive.it" title="versione italiana">IT</a> / <a href="http://en.lodlive.it" title="english version">EN</a> / <a href="http://fr.lodlive.it" title="version française">FR</a> / <a href="http://gl.lodlive.it" title="versión en galego">GL</a>
+			</div>
+			<div id="nextPage" class="spriteHome paginator"></div>
+			<div id="prevPage" class="spriteHome paginator"></div>
+			<div id="startPanel">
+				<div id="logo" class="sprite"></div>
+				<div id="boxes">
+					<div id="firstLineBoxes"></div>
+					<div id="boxesCont"></div>
+				</div>
+				<div class="startBoxMainText">
+					<div>
+						<p>
+							LodLive project provides a demonstration of the use of Linked Data standards (RDF, SPARQL) to browse RDF resources. The application aims to spread linked data principles using a simple and friendly interface with reusable techniques.
+						</p>
+					</div>
+					<p>
+						<a href="https://github.com/dvcama/LodLive" target="_blank">DOWNLOAD LodLive</a>
+					</p>
+				</div>
+				<div class="startBoxMainTextPlain">
+					<div>
+						<p>
+							The basic principle underlying LodLive is to prove that resources published according to the W3C SPARQL standard are easy to reach and understand, with hopes that the LodLive approach can stimulate Public Administrations and large-scale data owners to add their resources to the LOD and share them. You can start browsing by querying the endpoint for a specific resource, or start from one of the provided URI examples.
+						</p>
+					</div>
+					<p>
+						LodLive is composed of a jQuery plug-in (lodlive-core.js), a JSON configuration map (lodlive-profile.js), an HTML page, a few images (sprites), and some other jQuery public plug-ins. It is as simple as that.
+					</p>
+				</div>
+			</div>
+			<div id="footer">
+				<div id="footerContainer">
+					<div class="footerBox segnala">
+						<h2>share</h2>
+						<a class="tw spriteHomeEn" href="http://twitter.com/home?status=via+%40LodLive+-+%23lodlive+-+browsing+the+web+of+data" target="_blank" title="condividi su Twitter"></a><a class="fb spriteHomeEn" href="http://www.facebook.com/sharer.php?s=100&amp;p[title]=LodLive+-+browsing+the+web+of+data&amp;p[summary]=LodLive+%C3%A8+un+progetto+sperimentale+nato+per+divulgare+la+filosofia+dei+linked+open+data+e+per+creare+uno+strumento+in+grado+di+associare+le+potenzialità+di+un+browser+RDF+all'efficacia+della+rappresentazione+a+grafo.&amp;p[url]=http://lodlive.it&amp;&amp;p[images][0]=http://lodlive.it/img/logoLodLive.jpg" target="_blank" title="condividi su FaceBook"></a>
+						<br />
+						<br />
+						<h2>follow</h2>
+						<a class="tw spriteHomeEn" href="https://twitter.com/#!/LodLive" target="_blank" title="segui su Twitter"></a><a class="fb spriteHomeEn" href="https://www.facebook.com/lodlive.browser" target="_blank" title="segui su FaceBook"></a>
+					</div>
+					<div class="footerBox" id="menu">
+						<h2>menu</h2>
+						<ul>
+							<li>
+								<a href="#what">What is LodLive?</a>
+							</li>
+							<li>
+								<a href="http://blog.lodlive.it">Blog/documentation</a>
+							</li>
+							<li>
+								<a href="#faq">FAQ</a>
+							</li>
+							<li>
+								<a href="#send">Signal an endpoint</a>
+							</li>
+							<li>
+								<a href="#links">Useful Links</a>
+							</li>
+							<li>
+								<a href="#get">Download</a>
+							</li>
+							<li>
+								<a href="#credits">Credits and contacts</a>
+							</li>
+						</ul>
+					</div>
+					<div class="footerBox">
+						<h2>best experienced with</h2>
+						LodLive does not make use of any server component.
+						<br />
+						For a proper function of the application, we recommend using the latest up-dated browsers. <div class="spriteHomeEn browsers" title="FireFox - Chrome - Safari - Opera"></div>
+					</div>
+					<div class="best">
+						2012, lodlive.it <a href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA</a>, lodlive.js <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT License</a>
+						<div class="license	 spriteHomeEn"></div>
+					</div>
+				</div>
+			</div>
+			<div id="faq" class="hd">
+				<p>
+					<strong>When navigating the data graph, how will I know which endpoint I'm at?</strong>
+					<br />
+					By going over the resource with your mouse, a box will appear in the lower left-hand corner in which certain features will be indicated, including the resource's endpoint.
+					<br />
+					<br />
+					<strong>The system seems to freeze when I open certain resources, and with IE it does not seem to work.</strong>
+					<br />
+					LodLife makes full use of the computer's power that it is accessing, and this has allowed us to develop an application that does not require any server component. The application can therefore be used immediately once it is downloaded.
+					<br />
+					We recommend using a recently up-dated browser, particularly Opera,
+					Safari or Google Chrome; FireFox will work but with a slower navigation function; Internet Explorer does not currently work with the application because it is not capable of managing certain LodLive features and functions.
+				</p>
+			</div>
+			<div id="links" class="hd">
+				<p>
+					<strong>Regarding SPARQL</strong>
+					<br />
+					<a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank">www.w3.org/TR/rdf-sparql-query</a>
+					<br />
+					<br />
+					<strong>Regarding standards and the semantic web</strong>
+					<br />
+					<a href="http://www.w3.org/RDF/" target="_blank">www.w3.org/RDF</a>
+					<br />
+					<a href="http://www.w3.org/standards/semanticweb/" target="_blank">www.w3.org/standards/semanticweb</a>
+					<br />
+					<a href="http://www.w3.org/DesignIssues/LinkedData.html" target="_blank">www.w3.org/DesignIssues/LinkedData.html</a>
+					<br />
+					<br />
+					<strong>A sparql tutorial for the w3c working group can be found at</strong>
+					<br />
+					<a href="http://www.cambridgesemantics.com/it/semantic-university/sparql-by-example"
+					target="_blank">www.cambridgesemantics.com/it/semantic-university/sparql-by-example</a>
+					<br />
+					<br />
+				</p>
+			</div>
+			<div id="get" class="hd">
+				<p>
+					LodLive is available on GitHub <a href="https://github.com/dvcama/LodLive" target="_blank">https://github.com/dvcama/LodLive</a>
+				</p>
+			</div>
+			<div id="credits" class="hd">
+				<p>
+					<strong>Direct project participants</strong>
+					<br />
+					<span itemscope itemtype="http://data-vocabulary.org/Person"><span itemprop="name">Diego Valerio Camarda</span> (diego@lodlive.it), <span itemprop="name">Silvia Mazzini</span> (silvia@lodlive.it) e <span itemprop="name">Alessandro Antonuccio</span> (ale@lodlive.it)</span>
+					<br />
+					<br />
+					Diego is responsible for the app development, Silvia established the criteria basis, and Alessandro developed the interface design. The group has worked together day after day, and the tasks at hand have often blended through their collaboration.
+					<br />
+					<br />
+					For further information and contacts: info@lodlive.it.
+				</p>
+			</div>
+			<div id="send" class="hd">
+				<p>
+					It is possible to signal an endpoint at info@lodlive.it so that it can be inserted in the application and made available at lodlive.it. Generally the best results are obtained with datasets having owl:sameAs properties towards other resources available on SPARQL endpoints.
+					<br />
+					It is important to provide as much information as possible on the resources existing in the endpoint and on the specificities of the dataset. LodLive can be specifically configured to best represent the contents that it navigates.
+				</p>
+			</div>
+			<div id="what" class="hd">
+				<p>
+					LodLive is an experimental project that was set-up to spread and promote the linked-open-data philosophy and to create a tool that can be used for connecting RDF browser capabilities with the effectiveness of data graph representation.
+					<br />
+					<br />
+					LodLive is the first navigator to use RDF resources based solely on SPARQL endpoints.
+					<br />
+					<br />
+					LodLive aims to demonstrate how resources published by W3C standards for the semantic web can be made easily accessible and legible with a few viable tools.
+					<br />
+					<br />
+					LodLive is capable of connecting the resources existing in its configured endpoints, allowing the user to pass from one endpoint to another by making use of LOD interconnection capacities.
+				</p>
+			</div>
+			<div class="help hd">
+				<div>
+					<h2>HELP</h2>
+					<p>
+						<a href="http://www.youtube.com/embed/BQ9Ckh2ov-c?rel=0" class="sprite videoHelp"></a>
+					</p>
+					<p>
+						Here you can follow the direct and inverse connections provided by the resource by moving freely from one "circle" to the others.
+					</p>
+					<p>
+						Every new pop-open resource will guide the user to those relating to it, automatically connecting the new "circle" to the ones they have already opened.
+					</p>
+					<p>
+						Every time an owl:sameAs property is reached throughout the course of navigation, LodLive will connect to the related endpoint, enabling the user to move to the new available resources within the same navigation environment.
+					</p>
+				</div>
+			</div>
+			<div class="legenda hd">
+				<div>
+					<h2>SYMBOL LEGEND</h2>
+					<ul class="optionsList legend">
+						<li>
+							<span class="spriteLegenda"></span>tools
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>view additional information
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>close circle
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>focus on circle
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>open resource URI
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>expand all visible relations
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>direct relation
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>group of direct relations
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>inverse relation
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>group of inverse relations
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>owl:sameAs relation
+						</li>
+					</ul>
+				</div>
+			</div>
+
+		</div>
+	</body>
+</html>

+ 318 - 0
app_fr.html

@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-rdfa-2.xsd" lang="it" xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+	<head profile="http://www.w3.org/1999/xhtml/vocab">
+
+		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+		<meta name="viewport" content="width=device-width, initial-scale=1" />
+
+		<title property="dc:title">LodLive - browsing the Web of Data</title>
+		<link rel="shortcut icon" href="favicon.png" />
+		<link rel="icon" type="image/png" href="favicon.png" />
+		<link rel="image_src" href="http://lodlive.it/img/logoLodLive.jpg" />
+		<meta property="og:image" content="http://lodlive.it/img/logoLodLive.jpg" />
+
+
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/diego-valerio-camarda" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/silvia-mazzini" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/alessandro-antonuccio" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/Semantic_Web" />
+		<link property="dc:subject" href="http://dbpedia.org/page/Linked_Data" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/SPARQL" />
+
+		<link property="cc:licence" href="http://www.opensource.org/licenses/mit-license.php" />
+
+		<meta property="og:title" content="LodLive - browsing the Web of Data" />
+		<meta property="og:description" content="LodLive &egrave; un progetto sperimentale nato per divulgare la filosofia dei linked open data e per creare uno strumento in grado di associare le potenzialità di un browser RDF all'efficacia della rappresentazione a grafo proponendosi come primo navigatore di risorse RDF basato unicamente su endpoint SPARQL." />
+
+		<meta property="dcterms:created" content="2012-04-25T13:00:00" />
+		<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+
+		<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
+		<script>
+			window.jQuery || document.write('<script src="js/jquery-2.0.3.min.js"><\/script>')
+		</script>
+
+		<script type="text/javascript">
+			var _gaq = _gaq || [];
+			_gaq.push(['_setAccount', 'UA-1940652-20']);
+			_gaq.push(['_setDomainName', 'lodlive.it']);
+			_gaq.push(['_trackPageview']);
+
+			(function() {
+				var ga = document.createElement('script');
+				ga.type = 'text/javascript';
+				ga.async = true;
+				ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(ga, s);
+			})();
+		</script>
+
+		<script type="text/javascript">
+			WebFontConfig = {
+				google : {
+					families : ['Open+Sans:400italic,700italic,800italic,300italic,600italic,400,300,600,800,700:latin']
+				}
+			};
+			(function() {
+				var wf = document.createElement('script');
+				wf.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
+				wf.type = 'text/javascript';
+				wf.async = 'true';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(wf, s);
+			})();
+		</script>
+		<script type="text/javascript" src="js/jquery-ui-1.9.2.min.js"></script>
+
+		<link rel="stylesheet" href="js/jquery.fancybox/jquery.fancybox.css" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.core.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.profile.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.app.css?01" type="text/css" media="all" />
+
+		<script type="text/javascript" src="js/jquery.fancybox/jquery.fancybox.pack.js"></script>
+		<script type="text/javascript" src="js/jquery.slimScroll.min.js"></script>
+		<script type="text/javascript" src="js/jquery.json-2.3.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jsonp-2.4.0.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jstorage.js"></script>
+		<script type="text/javascript" src="js/jquery.jcanvas.js"></script>
+		<script type="text/javascript" src="js/jquery.doTimeout.js"></script>
+		<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
+		<script type="text/javascript" src="js/jquery.gmap3.js"></script>
+		<script type="text/javascript" src="js/jquery.ThreeDots.min.js"></script>
+
+		<script type="text/javascript" src="js/lodlive.profile.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.core.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.lang.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.utils.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.custom-lines.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.app.js?01"></script>
+		<script type="text/javascript">
+			$.jStorage.set('selectedLanguage', 'fr')
+		</script>
+	</head>
+	<body>
+		<div id="lang-en">
+			<div id="lang">
+				<a href="http://lodlive.it" title="versione italiana">IT</a> / <a href="http://en.lodlive.it" title="english version">EN</a> / <a href="http://fr.lodlive.it" title="version française">FR</a> / <a href="http://gl.lodlive.it" title="versión en galego">GL</a>
+			</div>
+			<div id="nextPage" class="spriteHome paginator"></div>
+			<div id="prevPage" class="spriteHome paginator"></div>
+			<div id="startPanel">
+				<div id="logo" class="sprite"></div>
+				<div id="boxes">
+					<div id="firstLineBoxes"></div>
+					<div id="boxesCont"></div>
+				</div>
+				<div class="startBoxMainText">
+					<div style="height: 186px;">
+						<p>
+							Le projet LodLive fournit un exemple de l'usage qui peut être fait des standards du web sémantique (RDF, SPARQL) pour parcourir librement les ressources RDF. L'application a pour but de parcourir les données liées à l'aide d'une interface simple et accueillante qui fonctionne avec des techniques d'emploi courant.
+						</p>
+					</div>
+					<p>
+						<a href="https://github.com/dvcama/LodLive" target="_blank">TÉLÉCHARGER LodLive</a>
+					</p>
+				</div>
+				<div class="startBoxMainTextPlain">
+					<div>
+						<p>
+							Le principe qui sous-tend LodLive est notre intention de démontrer que les ressources publiées conformément à la norme W3C SPARQL sont faciles à atteindre et à comprendre, avec l'espoir que l'approche LodLive puisse donner envie aux Administrations publiques et aux propriétaires de données à grande échelle d'ajouter leurs ressources au LOD, afin de les partager. Vous pouvez commencer à naviguer en interrogeant le point d'accès (endpoint) d'une ressource spécifique, ou démarrer à partir de l'un des exemples URI déjà fournis.
+						</p>
+					</div>
+					<p>
+						<br />LodLive est composé d'un jQuery plug-in (lodlive-core.js), d'une carte de configuration JSON (lodlive-profile.js), d'une page HTML, de quelques images (sprites) et de quelques autres jQuery public plug-ins. C'est aussi simple que cela.<br /><br />
+					</p>
+				</div>
+			</div>
+			<div id="footer" style="top: 910px;">
+				<div id="footerContainer">
+					<div class="footerBox segnala">
+						<h2>partagez</h2>
+						<a class="tw spriteHomeEn" href="http://twitter.com/home?status=via+%40LodLive+-+%23lodlive+-+browsing+the+web+of+data" target="_blank" title="condividi su Twitter"></a><a class="fb spriteHomeEn" href="http://www.facebook.com/sharer.php?s=100&amp;p[title]=LodLive+-+browsing+the+web+of+data&amp;p[summary]=LodLive+%C3%A8+un+progetto+sperimentale+nato+per+divulgare+la+filosofia+dei+linked+open+data+e+per+creare+uno+strumento+in+grado+di+associare+le+potenzialità+di+un+browser+RDF+all'efficacia+della+rappresentazione+a+grafo.&amp;p[url]=http://lodlive.it&amp;&amp;p[images][0]=http://lodlive.it/img/logoLodLive.jpg" target="_blank" title="condividi su FaceBook"></a>
+						<br />
+						<br />
+						<h2>suivez</h2>
+						<a class="tw spriteHomeEn" href="https://twitter.com/#!/LodLive" target="_blank" title="segui su Twitter"></a><a class="fb spriteHomeEn" href="https://www.facebook.com/lodlive.browser" target="_blank" title="segui su FaceBook"></a>
+					</div>
+					<div class="footerBox" id="menu">
+						<h2>menu</h2>
+						<ul>
+							<li>
+								<a href="#what">Qu'est-ce que LodLive?</a>
+							</li>
+							<li>
+								<a href="http://blog.lodlive.it">Blog/documentation</a>
+							</li>
+							<li>
+								<a href="#faq">FAQ</a>
+							</li>
+							<li>
+								<a href="#send">Indiquer un endpoint</a>
+							</li>
+							<li>
+								<a href="#links">Liens utiles</a>
+							</li>
+							<li>
+								<a href="#get">Télécharger</a>
+							</li>
+							<li>
+								<a href="#credits">Crédits et contacts</a>
+							</li>
+						</ul>
+					</div>
+					<div class="footerBox">
+						<h2>best experienced with</h2>
+						LodLive ne dépend d'aucun composant coté serveur. Pour un bon fonctionnement de l'application, nous vous recommandons d'utiliser un browser de dernière génération.
+						<div class="spriteHomeEn browsers" title="FireFox - Chrome - Safari - Opera"></div>
+					</div>
+					<div class="best">
+						2012, lodlive.it <a href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA</a>, lodlive.js <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT License</a>
+						<div class="license	 spriteHomeEn"></div>
+					</div>
+				</div>
+			</div>
+			<div id="faq" class="hd">
+				<p>
+					<strong>Pendant la navigation dans le graphe des données, comment savoir sur quel point d'accès je me trouve?</strong>
+					Quand vous passer la souris sur la ressource, une fenêtre s'ouvre dans le coin inférieur gauche qui précise certaines caractéristiques, dont le point d'accès de la ressource.
+					<br />
+					<strong>Le système semble se figer quand j'ouvre certaines ressources, et avec IE il ne semble pas vouloir fonctionner.</strong>
+					LodLive utilise pleinement la puissance de l'ordinateur qui y accède, et c'est cela qui nous a permis de développer une application qui n‘a besoin d'aucun composant coté serveur. L'application peut donc être utilisée immédiatement une fois qu'elle a été téléchargée.
+					Nous vous recommandons d'utiliser un navigateur récemment mis à jour, par exemple opéra, Safari ou Google Chrome; FireFox fonctionne également,
+					mais la navigation sera plus lente; par contre, actuellement Internet Explorer ne fonctionne pas avec l'application, car il n'est pas en mesure de gérer certaines des fonctions et caractéristiques particulières  du javascript/html5 utilisé par LodLive.
+				</p>
+			</div>
+			<div id="links" class="hd">
+				<p>
+					<strong>Au sujet de SPARQL</strong>
+					<br />
+					<a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank">www.w3.org/TR/rdf-sparql-query</a>
+					<br />
+					<br />
+					<strong>Concernant les normes et standards  du web sémantique</strong>
+					<br />
+					<a href="http://www.w3.org/RDF/" target="_blank">www.w3.org/RDF</a>
+					<br />
+					<a href="http://www.w3.org/standards/semanticweb/" target="_blank">www.w3.org/standards/semanticweb</a>
+					<br />
+					<a href="http://www.w3.org/DesignIssues/LinkedData.html" target="_blank">www.w3.org/DesignIssues/LinkedData.html</a>
+					<br />
+					<br />
+					<strong>Un tutoriel sparql fait pour le groupe de travail du w3c se trouve à</strong>
+					<br />
+					<a href="http://www.cambridgesemantics.com/it/semantic-university/sparql-by-example"
+					target="_blank">www.cambridgesemantics.com/it/semantic-university/sparql-by-example</a>
+					<br />
+					<br />
+				</p>
+			</div>
+			<div id="get" class="hd">
+				<p>
+					LodLive est disponible sur GitHub <a href="https://github.com/dvcama/LodLive" target="_blank">https://github.com/dvcama/LodLive</a>
+				</p>
+			</div>
+			<div id="credits" class="hd">
+				<p>
+					<strong>Les personnes qui ont participé à la crèation du projet sont</strong>
+					<br />
+					<span itemscope itemtype="http://data-vocabulary.org/Person"><span itemprop="name">Diego Valerio Camarda</span> (diego@lodlive.it), <span itemprop="name">Silvia Mazzini</span> (silvia@lodlive.it) e <span itemprop="name">Alessandro Antonuccio</span> (ale@lodlive.it)</span></span>
+					<br />
+					<br />
+					On doit à Diego le développement de l'app; Silvia a établi le contour général et Alessandro a mis au point la conception de l'interface. Le groupe s'est partagé le travail lors d'échanges quotidiens, et il est difficile de préciser les contours de la participation de chacun dans le cadre de cette collaboration étroite.
+					<br /><br />
+					Un grand merci à Pierre Laurent pour la version française du texte!
+					<br />
+					<br />
+					Pour toutes informations et contacts: info@lodlive.it.
+				</p>
+			</div>
+			<div id="send" class="hd">
+				<p>
+					Il est possible de signaler un endpoint à info@lodlive.it afin que celui-ci puisse être introduit dans l'application et devienne disponible à lodlive.it.
+					<br />
+					Généralement les meilleurs résultats sont obtenus avec des ensembles de données ayant des propriétés owl:sameAs vers d'autres ressources disponibles sur les endpoints SPARQL. Il est important de fournir le plus d'informations possible sur les ressources existantes dans  le point d'accès, ainsi que sur les spécificités du dataset. On peut configurer LodLive de façon spécifique pour représenter de la meilleure façon possible les thèmes sur lesquels il est appelé à naviguer.
+				</p>
+			</div>
+			<div id="what" class="hd">
+				<p>
+					LodLive est un projet expérimental qui a été mis en place dans le but de diffuser et de promouvoir la philosophie des linked-open-data et de créer un outil qui puisse être utilisé pour associer les fonctionnalités d'un navigateur RDF à l'efficacité de la représentation graphique de données.
+					<br />
+					LodLive est le premier navigateur à utiliser les ressources RDF qui soit uniquement basées sur des endpoints SPARQL.
+					<br />
+					LodLive vise à démontrer comment les ressources publiées par les normes et standards du W3C pour le web sémantique peuvent être rendues facilement accessibles et lisibles avec les instruments adéquats.
+					<br />
+					LodLive est en mesure de relier les ressources qui se trouvent dans les endpoints qui y sont configurés, permettant à l'utilisateur de passer d'un endpoint à l' autre en faisant usage des capacités d'interconnexions caractéristiques des LOD.
+				</p>
+			</div>
+			<div class="help hd">
+				<div>
+					<h2>Aide</h2>
+					<p>
+						<a href="http://www.youtube.com/embed/BQ9Ckh2ov-c?rel=0" class="sprite videoHelp"></a>
+					</p>
+					<p>
+						Ici, vous pouvez suivre les connexions directes et inverses fournies par la ressource en vous déplaçant librement d'un « cercle » aux autres.
+					</p>
+					<p>
+						Chaque nouvelle ressource qui s'ouvre guidera l'utilisateur vers toutes celles qui s'y rapportent, reliant de façon automatique le nouveau « cercle » à ceux qu'il a déjà ouvert.
+					</p>
+					<p>
+						Chaque fois qu'une propriété owl:sameAs est atteinte en cours de navigation, LodLive se connecte à l'endpoint qui s'y réfère, ce qui permet à l'utilisateur d'atteindre les nouvelles ressources disponibles sans quitter son environnement de navigation.
+					</p>
+				</div>
+			</div>
+			<div class="legenda hd">
+				<div>
+					<h2>SYMBOLE DE LÉGENDE</h2>
+					<ul class="optionsList legend">
+						<li>
+							<span class="spriteLegenda"></span>outils
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>afficher des informations <br><span></span> supplémentaires
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>fermer le cercle
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>focus sur le cercle
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>ouvrir l'URI de la ressource
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>développez toutes les relations <br><span></span> visibles
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relation directe
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>groupe de relations directes
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relation inverse
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>groupe des relations inverses
+
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relation owl:sameAs
+
+						</li>
+					</ul>
+				</div>
+			</div>
+
+		</div>
+	</body>
+</html>

+ 322 - 0
app_gl.html

@@ -0,0 +1,322 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-rdfa-2.xsd" lang="gl" xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+	<head profile="http://www.w3.org/1999/xhtml/vocab">
+
+		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+		<meta name="viewport" content="width=device-width, initial-scale=1" />
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<title property="dc:title">LodLive - browsing the Web of Data</title>
+		<link rel="shortcut icon" href="favicon.png" />
+		<link rel="icon" type="image/png" href="favicon.png" />
+		<link rel="image_src" href="./img/logoLodLive.jpg" />
+		<meta property="og:image" content="./img/logoLodLive.jpg" />
+
+
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/diego-valerio-camarda" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/silvia-mazzini" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/alessandro-antonuccio" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/Semantic_Web" />
+		<link property="dc:subject" href="http://dbpedia.org/page/Linked_Data" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/SPARQL" />
+
+		<link property="cc:licence" href="http://www.opensource.org/licenses/mit-license.php" />
+
+		<meta property="og:title" content="LodLive - browsing the Web of Data" />
+		<meta property="og:description" content="LodLive &eacute; un proxecto experimental concibido para divulgar a filosofía dos Linked Open Data e para crear un instrumento que asocie a potencialidade dun navegador RDF á eficacia da representación cun grafo, propoñéndose como o primeiro navegador de recursos RDF baseado unicamente en puntos de acceso SPARQL." />
+
+		<meta property="dcterms:created" content="2012-04-25T13:00:00" />
+		<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+
+		<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
+		<script>
+			window.jQuery || document.write('<script src="js/jquery-2.0.3.min.js"><\/script>')
+		</script>
+
+
+		<script type="text/javascript">
+			var _gaq = _gaq || [];
+			_gaq.push(['_setAccount', 'UA-1940652-20']);
+			_gaq.push(['_setDomainName', 'lodlive.it']);
+			_gaq.push(['_trackPageview']);
+
+			(function() {
+				var ga = document.createElement('script');
+				ga.type = 'text/javascript';
+				ga.async = true;
+				ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(ga, s);
+			})();
+		</script>
+
+		<script type="text/javascript">
+			WebFontConfig = {
+				google : {
+					families : ['Open+Sans:400italic,700italic,800italic,300italic,600italic,400,300,600,800,700:latin']
+				}
+			};
+			(function() {
+				var wf = document.createElement('script');
+				wf.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
+				wf.type = 'text/javascript';
+				wf.async = 'true';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(wf, s);
+			})();
+		</script>
+		<script type="text/javascript" src="js/jquery-ui-1.9.2.min.js"></script>
+
+		<link rel="stylesheet" href="js/jquery.fancybox/jquery.fancybox.css" type="text/css" media="all" />
+
+		<link rel="stylesheet" href="css/lodlive.core.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.profile.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.app.css?01" type="text/css" media="all" />
+
+		<script type="text/javascript" src="js/jquery.fancybox/jquery.fancybox.pack.js"></script>
+		<script type="text/javascript" src="js/jquery.slimScroll.min.js"></script>
+		<script type="text/javascript" src="js/jquery.json-2.3.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jsonp-2.4.0.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jstorage.js"></script>
+		<script type="text/javascript" src="js/jquery.jcanvas.js"></script>
+		<script type="text/javascript" src="js/jquery.doTimeout.js"></script>
+		<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
+		<script type="text/javascript" src="js/jquery.gmap3.js"></script>
+		<script type="text/javascript" src="js/jquery.ThreeDots.min.js"></script>
+
+		<script type="text/javascript" src="js/lodlive.profile.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.core.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.lang.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.utils.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.custom-lines.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.app.js?01"></script>
+		<script type="text/javascript">
+			$.jStorage.set('selectedLanguage', 'gl')
+		</script>
+	</head>
+	<body>
+		<!-- <h1 style="display: none" property="dc:title">LodLive - browsing the Web of Data</h1> -->
+		<div id="lang-en">
+			<div id="lang">
+
+				<a href="http://lodlive.it" title="versione italiana">IT</a> / <a href="http://en.lodlive.it" title="english version">EN</a> / <a href="http://fr.lodlive.it" title="version française">FR</a> / <a href="http://gl.lodlive.it" title="versión en galego">GL</a>
+
+			</div>
+			<div id="nextPage" class="spriteHomeEn paginator"></div>
+			<div id="prevPage" class="spriteHomeEn paginator"></div>
+			<div id="startPanel">
+				<div id="logo" class="sprite"></div>
+				<div id="boxes">
+					<div id="firstLineBoxes"></div>
+					<div id="boxesCont"></div>
+				</div>
+				<div class="startBoxMainText">
+					<div>
+						<p>
+							O proxecto LodLive constitúe un exemplo do uso que se pode facer dos estándares da web semántica (RDF, SPARQL) para percorrer libremente os recursos RDF. LodLive asocia o potencial dun explorador de recursos RDF coa eficacia da representación con grafos.
+						</p>
+					</div>
+					<a href="https://github.com/dvcama/LodLive" target="_blank">DESCARGAR LodLive</a>
+				</div>
+				<div class="startBoxMainTextPlain">
+						<p>O principio que subxace tras LodLive é a intención de demostrar que os recursos publicados en conformidade co estándar W3C SPARQL son fáciles de conseguir e comprender, coa esperanza de animar as administracións públicas e os propietarios de datos a gran escala para compartiren os seus recursos como LOD (Linked Open Data).</p>
+
+						<p>LodLive consiste nun complemento jQuery (lodlive-core.js), un ficheiro de configuración JSON (lodlive-profile.js), unha páxina HTML, algunhas imaxes e outros complementos jQuery plugins públicos. Así de simple. LodLive é de balde, de código aberto baixo a <a href="http://www.opensource.org/licenses/MIT" rel="cc:license">licenza MIT</a> e intégrase de moi doadamente noutras aplicacións. Tamén se pode utilizar en liña en <a href="http://lodlive.it">lodlive.it</a>.
+					</p>
+				</div>
+			</div>
+			<div id="footer">
+				<div id="footerContainer">
+					<div class="footerBox segnala">
+						<h2>comparta LodLive</h2>
+						<a class="tw spriteHomeEn" href="http://twitter.com/home?status=via+%40LodLive+-+%23lodlive+-+browsing+the+web+of+data" target="_blank" title="condividi su Twitter"></a><a class="fb spriteHomeEn" href="http://www.facebook.com/sharer.php?s=100&amp;p[title]=LodLive+-+browsing+the+web+of+data&amp;p[summary]=LodLive+%C3%A8+un+progetto+sperimentale+nato+per+divulgare+la+filosofia+dei+linked+open+data+e+per+creare+uno+strumento+in+grado+di+associare+le+potenzialità+di+un+browser+RDF+all'efficacia+della+rappresentazione+a+grafo.&amp;p[url]=http://lodlive.it&amp;&amp;p[images][0]=http://lodlive.it/img/logoLodLive.jpg" target="_blank" title="condividi su FaceBook"></a>
+						<br />
+						<br />
+						<h2>seguimento de LodLive</h2>
+						<a class="tw spriteHomeEn" href="https://twitter.com/#!/LodLive" target="_blank" title="segui su Twitter"></a><a class="fb spriteHomeEn" href="https://www.facebook.com/lodlive.browser" target="_blank" title="segui su FaceBook"></a>
+					</div>
+					<div class="footerBox" id="menu">
+						<h2>menú</h2>
+						<ul>
+							<li>
+								<a href="#what">Que é LodLive?</a>
+							</li>
+							<li>
+								<a href="http://blog.lodlive.it">Blogue/documentación</a>
+							</li>
+							<li>
+								<a href="#faq">Preguntas frecuentes</a>
+							</li>
+							<li>
+								<a href="#send">Indicar un punto de acceso</a>
+							</li>
+							<li>
+								<a href="#links">Enlaces útiles</a>
+							</li>
+							<li>
+								<a href="#get">Descarga</a>
+							</li>
+							<li>
+								<a href="#credits">Créditos e contactos</a>
+							</li>
+						</ul>
+					</div>
+					<div class="footerBox">
+						<h2>A mellor experiencia con</h2>
+						LodLive non precisa de compoñentes de software de servidor.
+						<br />
+						Aconséllase un navegador de última xeración para utlizalo. <div class="spriteHomeEn browsers" title="FireFox - Chrome - Safari - Opera"></div>
+					</div>
+					<div class="best">
+						2012, lodlive.it <a href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA</a>, lodlive.js <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT License</a>
+						<div class="license	 spriteHomeEn"></div>
+					</div>
+				</div>
+			</div>
+			<div id="faq" class="hd">
+				<p>
+					<strong>Durante a navegación co grafo, como se sabe cal é o punto de acceso?</strong>
+					<br />
+					Ao pasar o rato sobre o recurso aparece na esquina inferior esquerda un cadro que indica as súas características, incluído o punto de acceso ao que pertence.
+					<br />
+					<br />
+					<strong>Parece ser que o sistema se bloquea ao abrir certos recursos, e con IE parece ser que non funciona.</strong>
+					<br />
+					LodLive utiliza toda a potencia do comuptador desde o que se realiza o acceso e por este motivo conseguiuse desenvolver unha aplicación que non precisa de ningún compoñente de servidor e que unha vez descargada xa está preparada para o seu uso.
+					<br />
+					Aconséllase utilizar un nvagador actualizado, particularmente Opera, Safari ou Google Chrome; FireFox tamén funziona pero a navegación é maís lenta; Internet Explorer non tan soporte polo momento, porque non pode executar algunhas das funcionalidades que usa LodLive.
+				</p>
+			</div>
+			<div id="links" class="hd">
+				<p>
+					<strong>Sobre SPARQL</strong>
+					<br />
+					<a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank">www.w3.org/TR/rdf-sparql-query</a>
+					<br />
+					<br />
+					<strong>Sobre estándares e web semántica</strong>
+					<br />
+					<a href="http://www.w3.org/RDF/" target="_blank">www.w3.org/RDF</a>
+					<br />
+					<a href="http://www.w3.org/standards/semanticweb/" target="_blank">www.w3.org/standards/semanticweb</a>
+					<br />
+					<a href="http://www.w3.org/DesignIssues/LinkedData.html" target="_blank">www.w3.org/DesignIssues/LinkedData.html</a>
+					<br />
+					<br />
+					<strong>Tutorial de SPARQL do grupo de traballo do W3C</strong>
+					<br />
+					<a href="http://www.cambridgesemantics.com/it/semantic-university/sparql-by-example" target="_blank">www.cambridgesemantics.com/it/semantic-university/sparql-by-example</a>
+					<br />
+					<br />
+				</p>
+			</div>
+			<div id="get" class="hd">
+				<p>
+					LodLive está dsipoñíbel en GitHub <a href="https://github.com/dvcama/LodLive" target="_blank">https://github.com/dvcama/LodLive</a>
+
+				</p>
+			</div>
+			<div id="credits" class="hd">
+				<p>
+					<strong>Persoas que participaron no proxecto</strong>
+					<br />
+					<span itemscope itemtype="http://data-vocabulary.org/Person"><span itemprop="name">Diego Valerio Camarda</span> (diego@lodlive.it), <span itemprop="name">Silvia Mazzini</span> (silvia@lodlive.it) e <span itemprop="name">Alessandro Antonuccio</span> (ale@lodlive.it)</span>
+					<br />
+					<br />
+					Diego levou a cabo o desenvolvemento, Silvia estabeleceu os criterios base e Alessandro ocupouse do deseño da interface. O grupo compartiu o traballo, polo que resulta difícil discernir os límites da competencia de cada membro.
+					<br />
+					<br />
+					Grazas a Miguel Solla para a tradución en galego!
+					<br><br>
+					Para máis información e contactos info@lodlive.it.
+				</p>
+			</div>
+			<div id="send" class="hd">
+				<p>
+					É posíbel indicar un punto de acceso en info@lodlive.it para inserilo na aplicación dispoñíbel en lodlive.it. En xeral, obtéñense mellores resultados con conxuntos de datos que teñen a relación owl:sameAs ca con outros recursos dispoñíbeis en puntos de acceso SPARQL.
+					<br />
+					<br />
+					É importante fornecer a maior información posíbel sobre os recursos presentes no punto de acceso e sobre as especificidades do conxunto de datos. LodLive pódese configurar especificamente para representar do mellor xeito os contidos que debe navegar.
+				</p>
+			</div>
+			<div id="what" class="hd">
+				<p>
+					LodLive é un proxecto experimental concibido para divulgar a filosofía dos Linked Open Data e para crear unha ferramenta que poida ser utilizada para asociar as funcionalidades dun navegador RDF coa eficacia da representación gráfica dos datos.
+					<br />
+					<br />
+					LodLive é o primeiro nvagador de recursos RDF baseado unicamente en puntos de acceso SPARQL.
+					<br />
+					<br />
+					LodLive quere demostrar que os recursos publicados polos estándares do W3C para a web semántica poden ser ferramentas facilmente comprensíbeis e accesíbeis cos instrumentos adecuados.
+					<br />
+					<br />
+					LodLive é capaz de relacionar os recursos presentes nos puntos de acceso que estean configurados e permite moverse dun punto de acceso para outro facendo uso dascapacidades de interconexión dos Linked Open Data.
+				</p>
+			</div>
+			<div class="help hd">
+				<div>
+					<h2>AXUDA</h2>
+					<p>
+						<a href="http://www.youtube.com/embed/BQ9Ckh2ov-c?rel=0" class="sprite videoHelp"></a>
+					</p>
+					<p>
+						No centro de cada círculo aparece a etiqueta do recurso.
+					</p>
+					<p>
+						Arredor do círculo colócanse outros pequenos círculos que indican as conexións con outros recursos internos e externos. Ao pulsar sobre eles aparece o círculo do novo recurso e conéctase automaticamente cos que xa están abertos.
+					</p>
+					<p>
+						Pódense explorar estas conexións movéndose libremente dun círculo cara a outro.
+					</p>
+					<p>
+						A cor dos círculos respecta a lóxica das clases de asociación de recursos e, daquela, os recursos pertencentes ás mesmas clases terán o círculo da mesma cor.
+					</p>
+					<p>
+						Pode arrastrar os círculos para colocalos ao seu gusto.
+					</p>
+				</div>
+			</div>
+			<div class="legenda hd">
+				<div>
+					<h2>LENDA DOS SÍMBOLOS</h2>
+					<ul class="optionsList legend">
+						<li>
+							<span class="spriteLegenda"></span>ferramentas
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>amosar información adicional
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>pechar o recurso
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>centrar o recurso
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>abrir a URI do recurso
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>expandir todas as relacións visíbeis
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relación directa
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>grupo de relacións directas
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relación inversa
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>grupo de relacións inversas
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relación owl:sameAs
+						</li>
+					</ul>
+				</div>
+			</div>
+
+		</div>
+
+	</body>
+</html>

+ 325 - 0
app_it.html

@@ -0,0 +1,325 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml-rdfa-2.xsd" lang="it" xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+	<head profile="http://www.w3.org/1999/xhtml/vocab">
+
+		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+		<meta name="viewport" content="width=device-width, initial-scale=1" />
+
+		<title property="dc:title">LodLive - browsing the Web of Data</title>
+		<link rel="shortcut icon" href="favicon.png" />
+		<link rel="icon" type="image/png" href="favicon.png" />
+		<link rel="image_src" href="http://lodlive.it/img/logoLodLive.jpg" />
+		<meta property="og:image" content="http://lodlive.it/img/logoLodLive.jpg" />
+
+
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/diego-valerio-camarda" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/silvia-mazzini" />
+		<link property="dc:creator" href="http://purl.org/net/foaf:Person/alessandro-antonuccio" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/Semantic_Web" />
+		<link property="dc:subject" href="http://dbpedia.org/page/Linked_Data" />
+		<link property="dc:subject" href="http://dbpedia.org/resource/SPARQL" />
+
+		<link property="cc:licence" href="http://www.opensource.org/licenses/mit-license.php" />
+
+		<meta property="og:title" content="LodLive - browsing the Web of Data" />
+		<meta property="og:description" content="LodLive &egrave; un progetto sperimentale nato per divulgare la filosofia dei linked open data e per creare uno strumento in grado di associare le potenzialità di un browser RDF all'efficacia della rappresentazione a grafo proponendosi come primo navigatore di risorse RDF basato unicamente su endpoint SPARQL." />
+
+		<meta property="dcterms:created" content="2012-04-25T13:00:00" />
+		<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+
+
+		<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
+		<script>
+			window.jQuery || document.write('<script src="js/jquery-2.0.3.min.js"><\/script>')
+		</script>
+
+		<script type="text/javascript">
+			var _gaq = _gaq || [];
+			_gaq.push(['_setAccount', 'UA-1940652-20']);
+			_gaq.push(['_setDomainName', 'lodlive.it']);
+			_gaq.push(['_trackPageview']);
+
+			(function() {
+				var ga = document.createElement('script');
+				ga.type = 'text/javascript';
+				ga.async = true;
+				ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(ga, s);
+			})();
+		</script>
+
+		<script type="text/javascript">
+			WebFontConfig = {
+				google : {
+					families : ['Open+Sans:400italic,700italic,800italic,300italic,600italic,400,300,600,800,700:latin']
+				}
+			};
+			(function() {
+				var wf = document.createElement('script');
+				wf.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
+				wf.type = 'text/javascript';
+				wf.async = 'true';
+				var s = document.getElementsByTagName('script')[0];
+				s.parentNode.insertBefore(wf, s);
+			})();
+		</script>
+		<script type="text/javascript" src="js/jquery-ui-1.9.2.min.js"></script>
+
+		<link rel="stylesheet" href="js/jquery.fancybox/jquery.fancybox.css" type="text/css" media="all" />
+
+		<link rel="stylesheet" href="css/lodlive.core.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.profile.css?01" type="text/css" media="all" />
+		<link rel="stylesheet" href="css/lodlive.app.css?01" type="text/css" media="all" />
+
+		<script type="text/javascript" src="js/jquery.fancybox/jquery.fancybox.pack.js"></script>
+		<script type="text/javascript" src="js/jquery.slimScroll.min.js"></script>
+		<script type="text/javascript" src="js/jquery.json-2.3.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jsonp-2.4.0.min.js"></script>
+		<script type="text/javascript" src="js/jquery.jstorage.js"></script>
+		<script type="text/javascript" src="js/jquery.jcanvas.js"></script>
+		<script type="text/javascript" src="js/jquery.doTimeout.js"></script>
+		<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
+		<script type="text/javascript" src="js/jquery.gmap3.js"></script>
+		<script type="text/javascript" src="js/jquery.ThreeDots.min.js"></script>
+
+		<script type="text/javascript" src="js/lodlive.profile.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.core.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.lang.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.utils.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.custom-lines.js?01"></script>
+		<script type="text/javascript" src="js/lodlive.app.js?01"></script>
+		<script type="text/javascript">
+			$.jStorage.set('selectedLanguage', 'it')
+		</script>
+	</head>
+	<body>
+		<h1 style="display: none" property="dc:title">LodLive - browsing the Web of Data</h1>
+		<div id="lang-it">
+			
+			<div id="nextPage" class="spriteHome paginator"></div>
+			<div id="prevPage" class="spriteHome paginator"></div>
+			<div id="startPanel">
+				<div id="logo" class="sprite"></div>
+				<div id="boxes">
+					<div id="firstLineBoxes"></div>
+					<div id="boxesCont"></div>
+				</div>
+				<div class="startBoxMainText">
+					<div>
+						<p>
+							LodLive &egrave; il primo navigatore di risorse RDF basato unicamente su endpoint <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a>.
+						</p>
+						<p>
+							LodLive associa le potenzialit&agrave; di un browser RDF all'efficacia della rappresentazione a grafo.
+						</p>
+					</div>
+					<a href="https://github.com/dvcama/LodLive" target="_blank">DOWNLOAD LodLive</a>
+				</div>
+				<div class="startBoxMainTextPlain">
+					<div>
+						<p>
+							LodLive &egrave; realizzato interamente in Javascript, si compone di un plug-in jQuery (LodLive-core), un file JSON di configurazione (LodLive-profile), una pagina HTML, poche immagini (sprites) e alcuni plug-in pubblici. LodLive &egrave; in grado di connettere le risorse presenti negli endpoint configurati al suo interno, consentendo all'utente di passare da un endpoint all'altro sfruttando le capacit&agrave; di interconnesione insite nella LOD.
+						</p>
+					</div>
+					<p>
+						LodLive &egrave; gratuito, opensource e pronto per essere utilizzato da subito, viene rilasciato sotto <a href="http://www.opensource.org/licenses/MIT" rel="cc:license">licenza MIT</a> ed &egrave; facilmente integrabile nelle proprie applicazioni o utilizzabile online su <a href="http://lodlive.it">lodlive.it</a>
+					</p>
+				</div>
+			</div>
+			<div id="footer">
+				<div id="footerContainer">
+					<div class="footerBox segnala">
+						<h2>condividi LodLive</h2>
+						<a class="tw spriteHome" href="http://twitter.com/home?status=via+%40LodLive+-+%23lodlive+-+browsing+the+web+of+data" target="_blank" title="condividi su Twitter"></a><a class="fb spriteHome" href="http://www.facebook.com/sharer.php?s=100&amp;p[title]=LodLive+-+browsing+the+web+of+data&amp;p[summary]=LodLive+%C3%A8+un+progetto+sperimentale+nato+per+divulgare+la+filosofia+dei+linked+open+data+e+per+creare+uno+strumento+in+grado+di+associare+le+potenzialità+di+un+browser+RDF+all'efficacia+della+rappresentazione+a+grafo.&amp;p[url]=http://lodlive.it&amp;&amp;p[images][0]=http://lodlive.it/img/logoLodLive.jpg" target="_blank" title="condividi su FaceBook"></a>
+						<br />
+						<br />
+						<h2>segui LodLive</h2>
+						<a class="tw spriteHome" href="https://twitter.com/#!/LodLive" target="_blank" title="segui su Twitter"></a><a class="fb spriteHome" href="https://www.facebook.com/lodlive.browser" target="_blank" title="segui su FaceBook"></a>
+					</div>
+					<div class="footerBox" id="menu">
+						<h2>menu</h2>
+						<ul>
+							<li>
+								<a href="#what">Cosa &egrave; LodLive?</a>
+							</li>
+							<li>
+								<a href="http://blog.lodlive.it">Blog/documentazione</a>
+							</li>
+							<li>
+								<a href="#faq">FAQ</a>
+							</li>
+							<li>
+								<a href="#send">Segnala un endpoint</a>
+							</li>
+							<li>
+								<a href="#links">Link utili</a>
+							</li>
+							<li>
+								<a href="#get">Download</a>
+							</li>
+							<li>
+								<a href="#credits">Crediti e contatti</a>
+							</li>
+						</ul>
+					</div>
+					<div class="footerBox">
+						<h2>best experienced with</h2>
+						LodLive non sfrutta alcuna componente server.
+						<br />
+						Per il suo utilizzo si consiglia un browser di ultima generazione. <div class="spriteHome browsers" title="FireFox - Chrome - Safari - Opera"></div>
+					</div>
+					<div class="best">
+						2012, lodlive.it <a href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank">CC BY-SA</a>, lodlive.js <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT License</a>
+						<div class="license	 spriteHome"></div>
+					</div>
+				</div>
+			</div>
+			<div id="faq" class="hd">
+				<p>
+					<strong>Navigando il grafo, come faccio a capire su quale endpoint mi trovo?</strong>
+					<br />
+					Passando con il mouse sulla risorsa, in basso a sinistra compare un box in cui vengono ne evidenziate le caratteristiche, incluso l'endpoint di appartenenza.
+					<br />
+					<br />
+					<strong>Il sistema sembra bloccarsi all'apertura di certe risorse e con IE non sembra funzionare.</strong>
+					<br />
+					LodLive sfrutta in tutto e per tutto la potenza del computer dal quale si sta facendo accesso e questo ci ha consentito di sviluppare un'applicazione che non necessita di alcuna componente server e che, una volta scaricata, &egrave; subito pronta all'utilizzo.
+					<br />
+					Consigliamo di usare un browser aggiornato, in particolare Opera,
+					Safari o Google Chrome; FireFox funziona a dovere ma la navigazione nel suo complesso risulta pi&ugrave; lenta; Internet Explorer non &egrave; attualmente supportato perch&eacute; non gestisce alcune delle funzionalit&agrave; di cui LodLive si avvale.
+				</p>
+			</div>
+			<div id="links" class="hd">
+				<p>
+					<strong>A proposito di SPARQL</strong>
+					<br />
+					<a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank">www.w3.org/TR/rdf-sparql-query</a>
+					<br />
+					<br />
+					<strong>A proposito di standard e web semantico</strong>
+					<br />
+					<a href="http://www.w3.org/RDF/" target="_blank">www.w3.org/RDF</a>
+					<br />
+					<a href="http://www.w3.org/standards/semanticweb/" target="_blank">www.w3.org/standards/semanticweb</a>
+					<br />
+					<a href="http://www.w3.org/DesignIssues/LinkedData.html" target="_blank">www.w3.org/DesignIssues/LinkedData.html</a>
+					<br />
+					<br />
+					<strong>Tutorial sparql del working group del w3c</strong>
+					<br />
+					<a href="http://www.cambridgesemantics.com/it/semantic-university/sparql-by-example" target="_blank">www.cambridgesemantics.com/it/semantic-university/sparql-by-example</a>
+					<br />
+					<br />
+				</p>
+			</div>
+			<div id="get" class="hd">
+				<p>
+					LodLive &egrave; scaricabile da GitHub <a href="https://github.com/dvcama/LodLive" target="_blank">https://github.com/dvcama/LodLive</a>
+
+				</p>
+			</div>
+			<div id="credits" class="hd">
+				<p>
+					<strong>Hanno partecipato</strong>
+					<br />
+					<span itemscope itemtype="http://data-vocabulary.org/Person"><span itemprop="name">Diego Valerio Camarda</span> (diego@lodlive.it), <span itemprop="name">Silvia Mazzini</span> (silvia@lodlive.it) e <span itemprop="name">Alessandro Antonuccio</span> (ale@lodlive.it)</span>
+					<br />
+					<br />
+					Diego ha curato la realizzazione, Silvia stabilito i criteri di base e Alessandro si &egrave; occupato del disegno dell'interfaccia. Il gruppo ha lavorato insieme giorno per giorno ed &egrave; difficile stabilire i limiti delle competenze di ognuno.
+					<br />
+					<br />
+					Per maggiorni informazioni e contatti info@lodlive.it.
+				</p>
+			</div>
+			<div id="send" class="hd">
+				<p>
+					&Egrave; possibile segnalare a info@lodlive.it un endpoint di modo che sia inserito nell'applicazione disponibile su lodlive.it. In generale si ottengono risultati migliori con dataset che hanno relazioni owl:sameAs verso altre risorse disponibili su un endpoint SPARQL.
+					<br />
+					<br />
+					&Egrave; importante fornire pi&ugrave; informazioni possibili sulle risorse presenti nell'endpoint e sulle specificit&agrave; del dataset. LodLive pu&ograve; essere configurato specificatamente per rappresentare al meglio i contenuti che deve navigare.
+				</p>
+			</div>
+			<div id="what" class="hd">
+				<p>
+					LodLive &egrave; un progetto sperimentale nato per divulgare la filosofia dei linked open data e per creare uno strumento in grado di associare le potenzialit&agrave; di un browser RDF all'efficacia della rappresentazione a grafo.
+					<br />
+					<br />
+					LodLive &egrave; il primo navigatore di risorse RDF basato unicamente su endpoint SPARQL.
+					<br />
+					<br />
+					LodLive vuole dimostrare che le risorse pubblicate secondo gli standard del W3C per il semantic web possono essere facilmente accessibili e comprensibili con strumenti adeguati.
+					<br />
+					<br />
+					LodLive &egrave; in grado di connettere le risorse presenti negli endpoint configurati al suo interno, consentendo all'utente di passare da un endpoint all'altro
+					sfruttando le capacit&agrave; di interconnessione insite nei LOD.
+				</p>
+			</div>
+			<div class="help hd">
+				<div>
+					<h2>HELP</h2>
+					<p>
+						<a href="http://www.youtube.com/embed/BQ9Ckh2ov-c?rel=0" class="sprite videoHelp"></a>
+					</p>
+					<p>
+						Al centro di ogni cerchio viene visualizzata la label della risorsa.
+					</p>
+					<p>
+						Il colore dei cerchi rispetta la logica delle classi di appartenenza delle risorse, quindi per risorse appartenenti a medesime classi si avr&agrave; il cerchio dello stesso colore.
+					</p>
+					<p>
+						Intorno al cerchio vengono posizionati altri piccoli cerchi che indicano i collegamenti con altre risorse sia interne al medesimo dataset che esterne (purch&eacute; fruibili attraverso un Endpoint SPARQL).
+					</p>
+					<p>
+						LodLive riconosce la propriet&agrave; owl:sameAs presente nella risorsa per favorire la "navigazione trasversale" e consentire il passaggio da un endpoint ad un altro.
+					</p>
+					<p>
+						&Egrave; possibile trascinare con drag and drop i cerchi per posizionarli come si preferisce.
+					</p>
+				</div>
+			</div>
+			<div class="legenda hd">
+				<div>
+					<h2>LEGENDA</h2>
+					<ul class="optionsList legend">
+						<li>
+							<span class="spriteLegenda"></span>strumenti
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>informazioni aggiuntive
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>chiudi la risorsa
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>"centra" la risorsa
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>apri l'URI della risorsa
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>espandi tutte le relazioni visibili
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relazione diretta
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>gruppo di relazioni dirette
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relazione inversa
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>gruppo di relazioni inverse
+						</li>
+						<li>
+							<span class="spriteLegenda"></span>relazioni di tipo owl:sameAs
+						</li>
+					</ul>
+				</div>
+			</div>
+
+		</div>
+
+	</body>
+</html>

BIN
css/.DS_Store


+ 692 - 0
css/lodlive.app.css

@@ -0,0 +1,692 @@
+/* app home page */
+input:focus, select:focus, textarea:focus, button:focus {
+	outline: none;
+}
+
+div#logo {
+	background-position: -785px -400px;
+	height: 30px;
+	width: 200px;
+	clear: right;
+	margin: 20px 20px 20px 0;
+}
+
+div#lang {
+	position: absolute;
+	left: 50%;
+	margin-left: 394px;
+	width: 80px;
+	top: 25px;
+	z-index: 999;
+	color: #fff;
+	font-size: 11px;
+}
+
+div#lang a {
+	text-decoration: none;
+	color: #fff;
+	font-size: 11px;
+}
+
+div#startPanel {
+	width: 930px;
+	float: left;
+	position: absolute;
+	left: 50%;
+	margin-left: -470px
+}
+
+.spriteHome {
+	background: url(../img/sprite-home.png) no-repeat
+}
+.spriteHomeEn {
+	background: url(../img/sprite-home-eng.png) no-repeat
+}
+.spriteHomeFr {
+	background: url(../img/sprite-home-fr.png) no-repeat
+}
+
+div.startBox {
+	width: 300px;
+	float: left;
+	border: 0;
+	background-position: -10px -10px;
+	color: #575757;
+	height: 300px;
+	margin-bottom: 10px;
+	overflow: auto;
+	margin-right: 10px;
+}
+
+div#boxes {
+	width: 920px;
+	overflow: hidden;
+	float: left;
+	height: 610px
+}
+
+div#firstLineBoxes {
+	float: left;
+	height: 310px;
+	width: 930px;
+}
+
+div#boxesCont {
+	float: left;
+	height: 305px;
+}
+
+#nextPage {
+	position: absolute;
+	left: 50%;
+	margin-left: 460px;
+	cursor: pointer;
+	z-index: 900;
+	width: 20px;
+	height: 40px;
+	background-position: -660px -10px;
+	top: 490px;
+	display:none;
+}
+
+#nextPage:hover {
+	background-position: -720px -10px;
+}
+
+#prevPage {
+	display: none;
+	position: absolute;
+	left: 50%;
+	margin-left: -500px;
+	cursor: pointer;
+	z-index: 900;
+	width: 20px;
+	height: 40px;
+	background-position: -630px -10px;
+	left: 50%;
+	margin-left: -500px;
+	cursor: pointer;
+	z-index: 900;
+	width: 20px;
+	height: 40px;
+	background-position: -630px -10px;
+	top: 490px;
+}
+
+#prevPage:hover {
+	background-position: -690px -10px;
+}
+
+.startBoxMainText p a {
+	font-weight: bold;
+}
+
+.startBoxMainText {
+	margin-top: 10px;
+	line-height: 20px;
+	font-weight: bold;
+	font-size: 13px;
+	width: 295px;
+	float: left;
+	border: 0;
+	color: #000;
+	height: 175px;
+	margin-bottom: 10px;
+	margin-right: 10px;
+	font-weight: bold;
+	line-height: 20px;
+}
+
+#startPanel p {
+	padding: 0;
+	margin: 0
+}
+
+.startBoxMainText div {
+	overflow: hidden;
+	height: 146px;
+}
+
+.startBoxMainTextPlain div {
+	overflow: hidden;
+	height: 126px;
+}
+
+.startBoxMainText a, .startBoxMainTextPlain a {
+	font-weight: normal;
+	color: #000;
+}
+
+.startBoxMainTextPlain {
+	margin-top: 10px;
+	line-height: 20px;
+	font-size: 13px;
+	width: 600px;
+	float: left;
+	border: 0;
+	color: #000;
+	height: 175px;
+	margin-bottom: 10px;
+	margin-right: 10px;
+	margin-left: 5px;
+}
+
+.startBox h1 {
+	margin: 11px 20px 21px 18px;
+	overflow: hidden;
+	font-size: 20px;
+	font-weight: 300;
+	line-height: 28px;
+	display: block;
+	height: 28px
+}
+
+.startBox form {
+	margin: 10px 0 0 20px;
+	padding: 0
+}
+
+.startBox h2 {
+	padding-left: 5px;
+}
+
+.startBox .select {
+	width: 260px;
+	display: block;
+	border: 0;
+	height: 20px;
+	margin-top: 40px;
+	background: #fff;
+	cursor: pointer;
+	overflow: hidden;
+}
+
+.selectionList {
+	background: #fff;
+	width: 260px;
+	color: #575757;
+	border-top: 2px solid #e3e3e3;
+	overflow: hidden;
+	-moz-box-shadow: 0 6px 6px -5px rgba(0, 0, 0, 0.5);
+	-webkit-box-shadow: 0 6px 6px -5px rgba(0, 0, 0, 0.5);
+	box-shadow: 0 6px 6px -5px rgba(0, 0, 0, 0.5);
+}
+
+.slimScrollDiv {
+	background: #fff;
+	width: 260px;
+	color: #575757;
+	border-top: 2px solid #e3e3e3;
+	overflow: hidden;
+	-moz-box-shadow: 0 6px 6px -5px rgba(0, 0, 0, 0.5);
+	-webkit-box-shadow: 0 6px 6px -5px rgba(0, 0, 0, 0.5);
+	box-shadow: 0 6px 6px -5px rgba(0, 0, 0, 0.5);
+}
+
+.selectionList span {
+	font-size: 11px;
+	font-weight: normal;
+	display: block;
+	padding-left: 6px;
+	cursor: pointer;
+	line-height: 20px
+}
+
+.selectionList span:hover {
+	background: #d0d0d0;
+}
+
+.inviaForm {
+	position: relative;
+	width: 50px;
+	z-index: 99;
+	cursor: pointer;
+	height: 16px;
+	left: 0;
+	top: 140px;
+}
+
+.inviaForm2 {
+	position: relative;
+	width: 50px;
+	z-index: 99;
+	cursor: pointer;
+	height: 16px;
+	left: 200px;
+	top: -20px;
+}
+
+.startBox .cerca {
+	width: 260px;
+	display: block;
+	border: 0;
+	height: 80px;
+	margin-top: 10px;
+}
+
+.startBox .select span, .startBox .cerca span {
+	font-size: 11px;
+	font-weight: normal;
+	color: black;
+	padding-top: 2px;
+	display: block;
+	padding-left: 6px;
+	float: left;
+	width: 233px;
+	overflow: hidden;
+}
+
+.cerca .slimScrollDiv  .selectEle span {
+	width: 248px;
+	word-break: break-all;
+	line-height: 15px;
+	padding-bottom: 5px;
+}
+
+.endpList .slimScrollDiv  .selectEle span {
+	width: 188px;
+	word-break: break-all;
+	line-height: 15px;
+	padding-bottom: 5px;
+}
+
+.cerca .slimScrollDiv .selectionList, .endpList .slimScrollDiv .selectionList {
+	border-top: 0;
+}
+
+.cerca .slimScrollDiv {
+	border-top: 2px solid #e3e3e3;
+	z-index: 9999;
+}
+
+.endpList .slimScrollDiv {
+	border-top: 2px solid #8b8b8b;
+	z-index: 9999;
+}
+
+.startBox .select span.arrow, .startBox .cerca span.arrow {
+	font-size: 11px;
+	font-weight: normal;
+	color: #000;
+	float: right;
+	background-position: -626px -57px;
+	width: 10px;
+	height: 10px;
+	margin-top: 5px;
+	margin-right: 2px;
+}
+
+.startBox .input {
+	width: 260px;
+	display: block;
+	border: 0;
+	height: 20px;
+	line-height: 20px;
+	margin-top: 10px;
+	color: #575757;
+	background-color: #bdbdbd;
+	overflow: hidden;
+}
+
+.startBox .input.textarea {
+	width: 260px;
+	display: block;
+	border: 0;
+	height: 50px;
+	line-height: 20px;
+	margin-top: 10px;
+	color: #575757;
+	background-color: #fff;
+	overflow: hidden;
+}
+
+.startBox .input textarea {
+	padding-top: 0;
+	padding-left: 5px;
+	width: 258px;
+	display: block;
+	border: 0;
+	height: 48px;
+	color: #575757;
+	background-color: #fff;
+	font-size: 11px;
+	font-weight: normal;
+}
+
+.startBox .input input {
+	padding-top: 0;
+	padding-left: 5px;
+	width: 251px;
+	display: block;
+	border: 0;
+	height: 18px;
+	color: #575757;
+	background-color: #bdbdbd;
+	font-size: 11px;
+	font-weight: normal;
+}
+
+.startBox .inputClass {
+	width: 200px;
+	display: block;
+	border: 0;
+	height: 20px;
+	line-height: 20px;
+	margin-top: 40px;
+	color: #575757;
+	background-color: #bdbdbd;
+}
+
+.startBox .inputClass input {
+	padding-top: 0;
+	padding-left: 5px;
+	width: 191px;
+	display: block;
+	border: 0;
+	height: 18px;
+	color: #575757;
+	background-color: #bdbdbd;
+	font-size: 11px;
+	font-weight: normal; 
+}
+
+#footer {
+	float: left;
+	border-top: 1px solid #b1b1b1;
+	background: #dcdcdc;
+	width: 100%;
+	top: 890px;
+	position: absolute;
+	padding-top: 15px;
+}
+
+#footer #footerContainer {
+	width: 930px;
+	float: left;
+	position: relative;
+	left: 50%;
+	margin-left: -470px;
+	line-height: 20px;
+	font-size: 11px;
+	color: #575757;
+}
+
+#footer #footerContainer h2 {
+	color: #616693;
+	text-transform: uppercase;
+	font-size: 11px;
+	font-weight: bold;
+	padding: 0;
+	margin: 0;
+}
+
+#footer #footerContainer ul {
+	padding: 0;
+	margin: 0;
+	list-style: none;
+}
+
+#footer #footerContainer a {
+	color: #575757;
+	text-decoration: none;
+}
+
+#footer #footerContainer a:hover {
+	text-decoration: underline;
+}
+
+#footer #footerContainer .browsers {
+	background-position: -630px -250px;
+	width: 110px;
+	height: 22px;
+	margin-top: 2px;
+}
+
+#footer #footerContainer .footerBox {
+	width: 300px;
+	float: left;
+	border: 0;
+	background-position: -10px -10px;
+	color: #575757;
+	margin-bottom: 10px;
+	overflow: auto;
+	margin-right: 10px;
+}
+
+#footer #footerContainer .best {
+	border-top: 1px solid #b1b1b1;
+	width: 920px;
+	float: left;
+	height: 80px;
+	margin-top: 4px;
+	padding-top: 5px;
+}
+
+#footer #footerContainer .best .license {
+	background-position: -630px -280px;
+	width: 120px;
+	height: 22px;
+	margin-top: 3px;
+}
+
+#footer #footerContainer .segnala a {
+	float: left;
+	display: block;
+	width: 16px;
+	height: 16px;
+	margin-right: 14px;
+	margin-top: 4px;
+}
+
+#footer #footerContainer .segnala a.tw {
+	background-position: -660px -190px;
+}
+
+#footer #footerContainer .segnala a.fb {
+	background-position: -690px -190px;
+}
+
+#footer #footerContainer .best a {
+	text-decoration: underline;
+}
+
+.hd {
+	display: none;
+}
+
+.text {
+	z-index: 999;
+	position: fixed;
+	width: 510px;
+	height: 350px;
+	left: 50%;
+	top: 50%;
+	margin-left: -250px;
+	margin-top: -170px;
+	background-position: -10px -630px;
+	cursor: pointer;
+}
+
+.text a {
+	color: #000;
+	font-size: 11px;
+	line-height: 20px;
+	text-decoration: underline;
+}
+
+.text h3 {
+	line-height: 24px;
+	font-size: 24px;
+	font-weight: normal;
+	padding: 20px 20px 0 20px;
+	margin: 0;
+}
+
+.text div.padding {
+	color: #000;
+	margin: 20px 30px 20px 20px;
+	font-size: 11px;
+	line-height: 20px;
+}
+
+.myalert {
+	z-index: 999;
+	position: absolute;
+	width: 286px;
+	height: 98px;
+	left: 50%;
+	top: 50%;
+	margin-left: -150px;
+	margin-top: -53px;
+	background-position: -630px -80px;
+	cursor: pointer;
+	position: absolute;
+}
+
+.myalert div {
+	color: #fff;
+	margin-left: 84px;
+	margin-top: 30px;
+	margin-right: 20px;
+}
+
+.info {
+	height: 15px;
+	width: 8px;
+	display: block;
+	background-position: -630px -230px;
+	margin-top: 7px;
+}
+
+h1 span {
+	float: left;
+	cursor: pointer;
+}
+
+div.startBox.infoHome {
+	z-index: 900;
+	display: none;
+	background: #fff;
+	color: #575757;
+	cursor: pointer;
+}
+
+div.startBox.endpList {
+	background-position: -940px -990px;
+	color: #fff;
+	display: block;
+	cursor: auto;
+	background-color: gray;
+}
+
+#startPanel div.startBox.infoHome p {
+	margin: 0 20px 0 20px;
+	font-size: 11px;
+	line-height: 20px;
+	padding-top: 14px;
+}
+
+#boxO {
+	background-position: -10px -990px;
+	color: #fff;
+	display: none;
+	cursor: auto;
+}
+
+#boxO .selectionlist span {
+	color: #975E1C;
+}
+
+#boxO .selectionlist span:hover {
+	background-color: #dcaf7a;
+}
+
+#boxO div.input, #boxO div.input input, #boxO.startBox .inputClass input, #boxO.startBox .inputClass {
+	background-color: #dcaf7a;
+}
+
+#boxO .inputClass input {
+	width: 251px;
+}
+
+#boxO .inputClass {
+	width: 260px;
+	margin-top: 60px;
+}
+
+#boxO .info, #boxV .info, #boxB .info {
+	background-position: -640px -230px;
+}
+
+#boxO .selectionList {
+	border-top: 2px solid #c47922;
+}
+
+#boxO.startBox .select span, #boxO.startBox .cerca span {
+	color: #975E1C;
+}
+
+#boxV {
+	background-position: -10px -1300px;
+	color: #fff;
+	display: block;
+	cursor: auto;
+}
+
+#boxB {
+	background-position: -10px -1610px;
+	color: #fff;
+	display: block;
+	cursor: auto;
+}
+
+.textBox {
+	width: 65.5% !important;
+	height:auto;
+	background-color: #e3e3e3;
+}
+
+.textBox p {
+	margin: 11px 20px 21px 18px !important;
+	font-size: 12.5px;
+	text-align: justify;
+	overflow: auto;
+	line-height: 2;
+}
+
+.textBox ul li {
+	font-size:12.5px;
+	line-height: 2;
+}
+
+.textBox h1 {
+	width: fit-content;
+	float: left;
+}
+
+.exampleBox h2 {
+	margin: 11px 20px 21px 18px !important;
+}
+
+#boxB.startBox .input textarea {
+	background-color: #fff;
+	color: #50547c;
+}
+
+#boxB.startBox .input {
+	margin-top: 40px;
+	background-color: #fff;
+}
+
+.endpList .select {
+	margin-top: 260px;
+	width: 200px;
+}
+
+.endpList .selectionList {
+	width: 200px;
+}
+
+.endpList .select span {
+	width: 173px;
+}

+ 742 - 0
css/lodlive.core.css

@@ -0,0 +1,742 @@
+* {
+	font-family: 'Open Sans', verdana;
+}
+
+body {
+	padding: 0;
+	margin: 0;
+	font-family: 'Open Sans', verdana;
+	font-size: 10px;
+	background: #c7c7c7;
+}
+
+.spriteLegenda {
+	background-image: url(../img/sprite-legenda.png);
+	background-repeat: no-repeat;
+	background-size: 20px 400px;
+}
+
+.sprite {
+	background-image: url(../img/sprite-balls.png);
+	background-repeat: no-repeat;
+	background-size: 2210px 800px;
+}
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5) , only screen and (min-resolution: 144dppx) {
+	.sprite {
+		background-image: url(../img/sprite-balls@2x.png);
+	}
+
+	.spriteLegenda {
+		background-image: url(../img/sprite-legenda@2x.png);
+	}
+}
+
+#lodlogo {
+	background-position: -785px -450px;
+	position: fixed;
+	z-index: 0;
+	left: 60px;
+	top: 29px;
+	width: 97px;
+	height: 23px;
+}
+
+#controlPanel {
+	position: absolute;
+	width: 30px;
+}
+
+#controlPanel .panel, #controlPanel .panel2 {
+	height: 40px;
+	width: 30px;
+	margin-top: 10px;
+}
+
+#controlPanel .panel.options {
+	background-position: -655px -400px;
+	cursor: pointer;
+}
+
+#panelContent ul.optionsList {
+	list-style: none;
+	margin: 0 0 20px 10px;
+	padding: 0;
+	font-size: 11px;
+	line-height: 20px;
+}
+
+#panelContent ul.optionsList li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	font-size: 11px;
+	line-height: 20px;
+	cursor: pointer;
+	display: block;
+	padding-left: 10px;
+}
+
+#panelContent ul.optionsList li span {
+	display: block;
+	float: left;
+	height: 10px;
+	margin-right: -10px;
+	margin-top: 6px;
+	width: 10px;
+	position: relative;
+	left: -20px;
+}
+
+#panelContent ul.optionsList.legend * {
+	cursor: auto
+}
+
+#panelContent ul.optionsList.legend li span {
+	display: block;
+	float: left;
+	height: 20px;
+	margin: 0;
+	width: 20px;
+	position: relative;
+	left: -7px;
+}
+
+#panelContent ul.optionsList li.reload span {
+	background-position: -1px -230px;
+}
+
+#panelContent ul.optionsList li.check span {
+	background-position: -1px -240px;
+}
+
+#panelContent ul.optionsList li.checked span {
+	background-position: -1px -250px;
+}
+
+#panelContent ul.optionsList li.reload:hover span {
+	background-position: -11px -230px;
+}
+
+#panelContent ul.optionsList li.check:hover span {
+	background-position: -11px -240px;
+}
+
+#panelContent ul.optionsList li.checked:hover span {
+	background-position: -11px -250px;
+}
+
+#controlPanel .panel.legend {
+	background-position: -700px -400px;
+	cursor: pointer;
+}
+
+#panelContent  ul.optionsList.legend {
+	margin: 0 0 20px -5px;
+}
+
+#controlPanel .panel2.images {
+	background-position: -610px -400px;
+	cursor: pointer;
+}
+
+#mapsCnt {
+	display: block;
+	width: 765px;
+	height: 370px;
+	margin: 0;
+	padding: 0
+}
+
+#controlPanel .panel2.maps {
+	background-position: -565px -400px;
+	cursor: pointer;
+}
+
+#controlPanel .panel.help {
+	background-position: -745px -400px;
+	cursor: pointer;
+}
+
+#panelContent .videoHelp {
+	display: block;
+	margin-left: 67px;
+	background-position: -781px -549px;
+	cursor: pointer;
+	width: 56px;
+	height: 28px;
+	background-position: -781px -549px;
+}
+
+#controlPanel .panel.close2 {
+	background-position: -565px -500px;
+	cursor: pointer;
+}
+
+#controlPanel .panel.close {
+	background-position: -655px -500px;
+	cursor: pointer;
+}
+
+#controlPanel div#panelContent {
+	width: 240px;
+	background: url(../img/pannelloBlackBackground.png);
+	color: #fff;
+	left: 0;
+	top: 10px;
+	position: absolute;
+	font-size: 11px;
+	line-height: 20px;
+}
+
+#controlPanel div#panel2Content {
+	height: 400px;
+	background: url(../img/pannelloBlueBackground.png);
+	background: url(../img/pannelloBlueBackground.png);
+	color: #fff;
+	left: 0;
+	top: 10px;
+	position: absolute;
+	font-size: 11px;
+	line-height: 20px;
+	overflow: hidden;
+	color: #fff;
+	left: 0;
+	top: 10px;
+	position: absolute;
+	font-size: 11px;
+	line-height: 20px;
+	overflow: hidden;
+}
+
+#imagePanel span#imgesCnt {
+	background: url(../img/thumbBlueNoFoto.png);
+	float: left;
+	width: 100%;
+	height: 375px;
+	display: block;
+}
+
+#imagePanel a.relatedImage {
+	background-position: -1825px -395px;
+	text-decoration: none;
+	color: #fff;
+	display: block;
+	float: left;
+	width: 113px;
+	margin-bottom: 15px;
+	margin-right: 15px;
+	overflow: hidden;
+	height: 113px;
+}
+
+#imagePanel a.relatedImage span {
+	display: block;
+	text-align: left;
+}
+
+#imagePanel a.relatedImage span.imgControls {
+	display: block;
+}
+
+#imagePanel a.relatedImage span.imgTitle {
+	cursor: auto;
+	margin: 30px 10px 10px 10px;
+	float: none;
+	line-height: 13px;
+}
+
+#imagePanel a.relatedImage span.imgControls span.imgControlCenter {
+	cursor: pointer;
+	margin: -25px 5px 0 2px;
+	float: right;
+	width: 13px;
+	height: 13px;
+}
+
+#imagePanel a.relatedImage span.imgControls span.imgControlZoom {
+	cursor: pointer;
+	margin: -25px 0 0 0;
+	float: right;
+	width: 13px;
+	height: 13px;
+	position: relative;
+	left: -20px;
+}
+
+.bullet {
+	margin-right: 5px;
+	width: 3px;
+	height: 5px;
+	display: block;
+	float: left;
+	position: relative;
+	left: -4px;
+	top: 8px;
+	padding-left: 10px;
+	background-position: -560px -400px;
+}
+
+ul.lista {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	text-indent: -13px;
+	padding-left: 8px;
+}
+
+#controlPanel div#panelContent div {
+	padding: 10px 10px 10px 20px;
+}
+
+#controlPanel div#panel2Content div#imagePanel {
+	padding: 15px 0 0 20px;
+}
+
+#controlPanel div#panel2Content div#mapPanel {
+	margin: 0;
+	padding: 0;
+	height: 400px;
+	width: 800px
+}
+
+#controlPanel div#panel2Content div span.amsg {
+	display: block;
+	cursor: auto;
+	margin: 30px 30px 10px 10px;
+	float: none;
+	line-height: 13px;
+}
+
+#controlPanel div#panelContent h2 {
+	padding: 0 0 20px 0;
+	color: #fff;
+	margin: 0;
+	font-weight: normal;
+	font-size: 11px;
+}
+
+.boxWrapper {
+	width: 130px;
+	height: 130px;
+	position: absolute;
+	z-index: 97;
+}
+
+a.relatedImage {
+	display: block;
+	width: 80px;
+	height: 80px;
+	text-align: center;
+	float: left;
+	overflow: hidden
+}
+
+#aSpace {
+	width: 3000px;
+	height: 3000px;
+}
+
+#docInfo {
+	position: absolute;
+	width: 280px;
+	z-index: 99999;
+	color: #fff;
+	font-size: 11px;
+	line-height: 20px;
+	font-weight: normal;
+	margin-top: 10px;
+	margin-right: 20px
+} 
+#docInfo ul {
+	padding: 0;
+	margin: 0;
+}
+
+#docInfo ul li a {
+	display: block;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	color: #fff;
+	font-size: 11px;
+}
+
+#docInfo .topSection {
+	background-position: -264px -390px;
+	height: 20px;
+	line-height: 20px;
+}
+
+#docInfo .topSection span {
+	display: block;
+	float: right;
+	width: 12px;
+	height: 12px;
+	cursor: pointer;
+}
+
+#docInfo .section {
+	background: #000;
+	padding-left: 10px;
+	padding-right: 10px;
+	overflow-x: hidden;
+}
+
+#docInfo .separ {
+	background-position: -265px -460px;
+	height: 20px;
+}
+
+#docInfo .separLast {
+	height: 11px;
+	background: #c7c7c7;
+	position: relative;
+	top: -10px;
+}
+
+#docInfo label {
+	font-size: 11px;
+	line-height: 20px;
+	font-weight: 800;
+}
+
+.contents p {
+	display: block;
+	font-size: 12px;
+	margin: 5px 0 0 0;
+	padding: 0 15px 0 0;
+}
+
+div.box {
+	background-position: 0 -390px;
+	top: 0;
+	left: 0;
+	position: absolute;
+	width: 130px;
+	height: 130px;
+	z-index: 99;
+	text-align: center;
+	font-size: 11px;
+	line-height: 12px;
+	position: absolute;
+	cursor: move;
+}
+
+div.relatedBox {
+	background-position: -1052px -412px;
+	cursor: pointer;
+	position: absolute;
+	width: 16px;
+	height: 16px;
+	border: 0;
+	z-index: 101;
+	text-align: center;
+}
+
+div.pagePrev {
+	background-position: -1414px -410px;
+	cursor: pointer;
+	position: absolute;
+	width: 16px;
+	height: 16px;
+	border: 0;
+	z-index: 101;
+	text-align: center;
+}
+
+div.pagePrev:hover {
+	background-position: -1414px -430px;
+}
+
+div.pageNext {
+	background-position: -1390px -412px;
+	cursor: pointer;
+	position: absolute;
+	width: 16px;
+	height: 16px;
+	border: 0;
+	z-index: 101;
+	text-align: center;
+}
+
+div.pageNext:hover {
+	background-position: -1390px -432px;
+}
+
+div#msg {
+	position: absolute;
+	color: #393939;
+	line-height: 20px;
+	width: 330px;
+	font-size: 11px
+}
+
+div#msg .endpoint {
+	padding: 0 0 0 10px;
+	background: #fff;
+	font-weight: bold;
+}
+
+div#msg .corner {
+	height: 10px;
+	background-position: -1030px -500px;
+}
+
+div#msg .from {
+	padding: 6px 10px 0 10px;
+	background: #fff
+}
+
+div#msg .from.upperline {
+	padding-bottom: 0;
+	padding-top: 0;
+}
+
+div#msg .separline {
+	height: 21px;
+	background-position: -1030px -520px;
+}
+
+div#msg .separ {
+	height: 21px;
+	background-position: -1030px -550px;
+	width: 330px;
+}
+
+div#msg .separ.inverse {
+	height: 21px;
+	background-position: -1030px -580px;
+	width: 330px;
+}
+
+.relatedBox.isSameAs {
+	background-position: -1032px -412px;
+}
+
+.groupedRelatedBox.isSameAs {
+	background-position: -1032px -432px;
+}
+.relatedBox.isType {
+	background-position: -1012px -412px;
+}
+
+.groupedRelatedBox.isType {
+	background-position: -1012px -432px;
+}
+
+.showGroupedRelated div.relatedBox {
+	position: static;
+	display: inline-block;
+}
+
+.showGroupedRelated span.relatedBox {
+	float: right;
+	font-size: 10px;
+	line-height: 16px;
+}
+
+.groupedRelatedBox {
+	background-position: -1052px -432px;
+	cursor: pointer;
+	position: absolute;
+	width: 16px;
+	height: 16px;
+	z-index: 101;
+	text-align: center;
+	height: 16px;
+}
+
+.relatedBox.inverse {
+	background-position: -1052px -452px;
+}
+
+.groupedRelatedBox.inverse {
+	background-position: -1052px -472px;
+}
+
+.showGroupedRelated {
+	width: 150px;
+	position: absolute;
+	display: none;
+	background: #fff;
+	border-top: 1px solid #ccc;
+	border-left: 1px solid #ccc;
+	padding: 5px;
+	z-index: 101;
+}
+
+.actionBox {
+	cursor: pointer;
+	position: absolute;
+	width: 20px;
+	height: 20px;
+	border: 0;
+	z-index: 100;
+	text-align: center;
+	font-size: 11px;
+	line-height: 20px;
+}
+
+.actionBox.contents {
+	left: 97px;
+	top: 17px;
+}
+
+.toolBox .innerActionBox {
+	cursor: pointer;
+	display: block;
+	width: 15px;
+	height: 15px;
+	margin-right: 1px;
+	float: left;
+}
+
+.actionBox.tools {
+	left: 77px;
+	top: 3px;
+}
+
+.toolBox {
+	background-position: -135px -395px;
+	height: 23px;
+	width: 80px;
+	position: absolute;
+	z-index: 100;
+	background-repeat: no-repeat;
+}
+
+.box a {
+	font-size: 11px;
+	text-decoration: none;
+	color: #fff;
+	display: block;
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+}
+
+.box a:hover {
+	text-decoration: underline;
+}
+
+.boxTitle {
+	color: #fff;
+	margin-left: 15px;
+	line-height: 13px;
+	width: 100px;
+	overflow: hidden;
+}
+
+.boxTitle a span {
+	width: 10px;
+	height: 10px;
+	background-position: -7px -85px;
+	display: block;
+	float: left;
+}
+
+}
+#selectionBox input {
+	width: 300px;
+	display: inline;
+	border: 1px solid #ccc;
+}
+
+#selectionBox a {
+	font-size: 20px;
+	text-decoration: none;
+}
+
+.queryConsole {
+	position: fixed;
+	z-index: 999;
+	width: 630px;
+	left: 50%;
+	top: 70px;
+	margin-left: -315px
+}
+
+.queryConsole h3 {
+	width: 630px;
+	background-position: -10px -650px;
+	height: 42px;
+	margin: 0;
+	padding: 0;
+	font-size: 13px;
+}
+
+.queryConsole h3 span {
+	float: left;
+	padding: 12px 20px 0 20px
+}
+
+.queryConsole h3 a {
+	display: block;
+	width: 29px;
+	height: 40px;
+	cursor: pointer;
+	float: right;
+	background-position: -611px -650px;
+}
+
+.queryConsole div {
+	background-color: #fff;
+	display: none;
+	width: 598px;
+	margin-left: 1px;
+	position: relative;
+	top: -1px;
+}
+
+.queryConsole span {
+	display: block;
+	padding: 10px 20px 0 20px
+}
+
+.queryConsole div span {
+	padding: 10px 19px 30px 30px;
+}
+
+.queryConsole div span span.contentArea {
+	padding: 0;
+	width: 500px;
+}
+
+.queryConsole div span span.linkArea {
+	padding: 0;
+	float: right;
+	width: 10px;
+	height: 10px;
+	background-position: -610px -600px;
+	cursor: pointer;
+}
+
+.queryConsole strong {
+	font-weight: normal;
+}
+
+.queryConsole h4 {
+	width: 600px;
+	background-position: -680px -650px;
+	height: 40px;
+	margin: 0;
+	padding: 0;
+	cursor: pointer;
+}
+
+.queryConsole h4 span {
+	padding: 12px 20px 0 20px
+}
+
+#docInfo .slimScrollDiv {
+	color: #fff;
+	border: 0;
+	background-color:#c7c7c7; 
+}
+
+/*.ellipsis_text {
+ max-height: 42px;
+ overflow: hidden;
+ display: block;
+ }*/

+ 398 - 0
css/lodlive.profile.css

@@ -0,0 +1,398 @@
+div.box.errorBox {
+	background-position: -1690px -390px;
+}
+
+div.boxWrapper.bnode .box {
+	background-position: 0 0;
+}
+
+div.boxWrapper.box1 .box {
+	background-position: -130px 0;
+}
+
+div.boxWrapper.box2 .box {
+	background-position: -260px 0;
+}
+
+div.boxWrapper.box3 .box {
+	background-position: -390px 0;
+}
+
+div.boxWrapper.box4 .box {
+	background-position: -650px 0;
+}
+
+div.boxWrapper.box5 .box {
+	background-position: -780px 0;
+}
+
+div.boxWrapper.box6 .box {
+	background-position: -1040px 0;
+}
+
+div.boxWrapper.box7 .box {
+	background-position: -910px 0;
+}
+
+div.boxWrapper.box8 .box {
+	background-position: -1430px 0;
+}
+
+div.boxWrapper.box9 .box {
+	background-position: -1300px 0;
+}
+
+div.boxWrapper.box10 .box {
+	background-position: -520px 0;
+}
+
+div.boxWrapper.box11 .box {
+	background-position: -1560px 0;
+}
+
+div.boxWrapper.box12 .box {
+	background-position: -1690px 0;
+}
+
+div.boxWrapper.box13 .box {
+	background-position: -1170px 0;
+}
+
+/*  ---------------------------------------- */
+div.boxWrapper.box1 div.relatedBox {
+	background-position: -1072px -412px;
+}
+
+div.boxWrapper.box1 .groupedRelatedBox {
+	background-position: -1072px -432px;
+}
+
+div.boxWrapper.box1 .relatedBox.inverse {
+	background-position: -1072px -452px;
+}
+
+div.boxWrapper.box1 .groupedRelatedBox.inverse {
+	background-position: -1072px -472px;
+}
+
+div.boxWrapper.box2 div.relatedBox {
+	background-position: -1092px -412px;
+}
+
+div.boxWrapper.box2 .groupedRelatedBox {
+	background-position: -1092px -432px;
+}
+
+div.boxWrapper.box2 .relatedBox.inverse {
+	background-position: -1092px -452px;
+}
+
+div.boxWrapper.box2 .groupedRelatedBox.inverse {
+	background-position: -1092px -472px;
+}
+
+div.boxWrapper.box3 div.relatedBox {
+	background-position: -1112px -412px;
+}
+
+div.boxWrapper.box3 .groupedRelatedBox {
+	background-position: -1112px -432px;
+}
+
+div.boxWrapper.box3 .relatedBox.inverse {
+	background-position: -1112px -452px;
+}
+
+div.boxWrapper.box3 .groupedRelatedBox.inverse {
+	background-position: -1112px -472px;
+}
+
+div.boxWrapper.box4 div.relatedBox {
+	background-position: -1152px -412px;
+}
+
+div.boxWrapper.box4 .groupedRelatedBox {
+	background-position: -1152px -432px;
+}
+
+div.boxWrapper.box4 .relatedBox.inverse {
+	background-position: -1152px -452px;
+}
+
+div.boxWrapper.box4 .groupedRelatedBox.inverse {
+	background-position: -1152px -472px;
+}
+
+div.boxWrapper.box5 div.relatedBox {
+	background-position: -1172px -412px;
+}
+
+div.boxWrapper.box5 .groupedRelatedBox {
+	background-position: -1172px -432px;
+}
+
+div.boxWrapper.box5 .relatedBox.inverse {
+	background-position: -1172px -452px;
+}
+
+div.boxWrapper.box5 .groupedRelatedBox.inverse {
+	background-position: -1172px -472px;
+}
+
+div.boxWrapper.box6 div.relatedBox {
+	background-position: -1212px -412px;
+}
+
+div.boxWrapper.box6 .groupedRelatedBox {
+	background-position: -1212px -432px;
+}
+
+div.boxWrapper.box6 .relatedBox.inverse {
+	background-position: -1212px -452px;
+}
+
+div.boxWrapper.box6 .groupedRelatedBox.inverse {
+	background-position: -1212px -472px;
+}
+
+div.boxWrapper.box7 div.relatedBox {
+	background-position: -1192px -412px;
+}
+
+div.boxWrapper.box7 .groupedRelatedBox {
+	background-position: -1192px -432px;
+}
+
+div.boxWrapper.box7 .relatedBox.inverse {
+	background-position: -1192px -452px;
+}
+
+div.boxWrapper.box7 .groupedRelatedBox.inverse {
+	background-position: -1192px -472px;
+}
+
+div.boxWrapper.box8 div.relatedBox {
+	background-position: -1272px -412px;
+}
+
+div.boxWrapper.box8 .groupedRelatedBox {
+	background-position: -1272px -432px;
+}
+
+div.boxWrapper.box8 .relatedBox.inverse {
+	background-position: -1272px -452px;
+}
+
+div.boxWrapper.box8 .groupedRelatedBox.inverse {
+	background-position: -1272px -472px;
+}
+
+div.boxWrapper.box9 div.relatedBox {
+	background-position: -1252px -412px;
+}
+
+div.boxWrapper.box9 .groupedRelatedBox {
+	background-position: -1252px -432px;
+}
+
+div.boxWrapper.box9 .relatedBox.inverse {
+	background-position: -1252px -452px;
+}
+
+div.boxWrapper.box9 .groupedRelatedBox.inverse {
+	background-position: -1252px -472px;
+}
+
+div.boxWrapper.box10 div.relatedBox {
+	background-position: -1132px -412px;
+}
+
+div.boxWrapper.box10 .groupedRelatedBox {
+	background-position: -1132px -432px;
+}
+
+div.boxWrapper.box10 .relatedBox.inverse {
+	background-position: -1132px -452px;
+}
+
+div.boxWrapper.box10 .groupedRelatedBox.inverse {
+	background-position: -1132px -472px;
+}
+
+div.boxWrapper.box11 div.relatedBox {
+	background-position: -1292px -412px;
+}
+
+div.boxWrapper.box11 .groupedRelatedBox {
+	background-position: -1292px -432px;
+}
+
+div.boxWrapper.box11 .relatedBox.inverse {
+	background-position: -1292px -452px;
+}
+
+div.boxWrapper.box11 .groupedRelatedBox.inverse {
+	background-position: -1292px -472px;
+}
+
+div.boxWrapper.box12 div.relatedBox {
+	background-position: -1312px -412px;
+}
+
+div.boxWrapper.box12 .groupedRelatedBox {
+	background-position: -1312px -432px;
+}
+
+div.boxWrapper.box12 .relatedBox.inverse {
+	background-position: -1312px -452px;
+}
+
+div.boxWrapper.box12 .groupedRelatedBox.inverse {
+	background-position: -1312px -472px;
+}
+
+div.boxWrapper.box13 div.relatedBox {
+	background-position: -1232px -412px;
+}
+
+div.boxWrapper.box13 .groupedRelatedBox {
+	background-position: -1232px -432px;
+}
+
+div.boxWrapper.box13 .relatedBox.inverse {
+	background-position: -1232px -452px;
+}
+
+div.boxWrapper.box13 .groupedRelatedBox.inverse {
+	background-position: -1232px -472px;
+}
+
+div.boxWrapper.Class .box {
+	background-position: -1820px 0;
+}
+
+div.boxWrapper.Class div.relatedBox {
+	background-position: -1332px -412px;
+}
+
+div.boxWrapper.Class .groupedRelatedBox {
+	background-position: -1332px -432px;
+}
+
+div.boxWrapper.Class .relatedBox.inverse {
+	background-position: -1332px -452px;
+}
+
+div.boxWrapper.Class .groupedRelatedBox.inverse {
+	background-position: -1332px -472px;
+}
+
+div.boxWrapper.ObjectProperty .box {
+	background-position: -1950px 0;
+}
+
+div.boxWrapper.ObjectProperty div.relatedBox {
+	background-position: -1352px -412px;
+}
+
+div.boxWrapper.ObjectProperty .groupedRelatedBox {
+	background-position: -1352px -432px;
+}
+
+div.boxWrapper.ObjectProperty .relatedBox.inverse {
+	background-position: -1352px -452px;
+}
+
+div.boxWrapper.ObjectProperty .groupedRelatedBox.inverse {
+	background-position: -1352px -472px;
+}
+
+div.boxWrapper.Property .box {
+	background-position: -2080px 0;
+}
+
+div.boxWrapper.Property div.relatedBox {
+	background-position: -1372px -412px;
+}
+
+div.boxWrapper.Property .groupedRelatedBox {
+	background-position: -1372px -432px;
+}
+
+div.boxWrapper.Property .relatedBox.inverse {
+	background-position: -1372px -452px;
+}
+
+div.boxWrapper.Property .groupedRelatedBox.inverse {
+	background-position: -1372px -472px;
+}
+
+div.boxWrapper.DatatypeProperty .box {
+	background-position: -2080px 0;
+}
+
+div.boxWrapper.DatatypeProperty div.relatedBox {
+	background-position: -1372px -412px;
+}
+
+div.boxWrapper.DatatypeProperty .groupedRelatedBox {
+	background-position: -1372px -432px;
+}
+
+div.boxWrapper.DatatypeProperty .relatedBox.inverse {
+	background-position: -1372px -452px;
+}
+
+div.boxWrapper.DatatypeProperty .groupedRelatedBox.inverse {
+	background-position: -1372px -472px;
+}
+
+* div.boxWrapper div.groupedRelatedBox.isSameAs {
+	background-position: -1032px -432px;
+}
+
+* div.boxWrapper div.groupedRelatedBox.isSameAs.inverse {
+	background-position: -1032px -472px;
+}
+
+* div.boxWrapper div.relatedBox.isSameAs.inverse {
+	background-position: -1032px -452px;
+}
+
+* div.boxWrapper div.relatedBox.isSameAs {
+	background-position: -1032px -412px;
+}
+
+* div.boxWrapper div.groupedRelatedBox.isType {
+	background-position: -1012px -432px;
+}
+
+* div.boxWrapper div.groupedRelatedBox.isType.inverse {
+	background-position: -1012px -472px;
+}
+
+* div.boxWrapper div.relatedBox.isType.inverse {
+	background-position: -1012px -452px;
+}
+
+* div.boxWrapper div.relatedBox.isType {
+	background-position: -1012px -412px;
+}
+
+
+
+* div.boxWrapper div.groupedRelatedBox.isBnode {
+	background-position: -992px -432px;
+}
+
+* div.boxWrapper div.groupedRelatedBox.isBnode.inverse {
+	background-position: -992px -472px;
+}
+
+* div.boxWrapper div.relatedBox.isBnode.inverse {
+	background-position: -992px -452px;
+}
+
+* div.boxWrapper div.relatedBox.isBnode {
+	background-position: -992px -412px;
+}

BIN
css/ui-lightness/images/animated-overlay.gif


BIN
css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png


BIN
css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png


BIN
css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png


BIN
css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png


BIN
css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png


BIN
css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png


BIN
css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png


BIN
css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png


BIN
css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png


BIN
css/ui-lightness/images/ui-icons_222222_256x240.png


BIN
css/ui-lightness/images/ui-icons_228ef1_256x240.png


BIN
css/ui-lightness/images/ui-icons_ef8c08_256x240.png


BIN
css/ui-lightness/images/ui-icons_ffd27a_256x240.png


BIN
css/ui-lightness/images/ui-icons_ffffff_256x240.png


File diff suppressed because it is too large
+ 4 - 0
css/ui-lightness/jquery-ui-1.10.3.custom.min.css


BIN
favicon.png


+ 22 - 0
foafPerson/alessandro-antonuccio.rdf

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+	<foaf:Person rdf:about="http://purl.org/net/foaf:Person/alessandro-antonuccio">
+		<foaf:name>Alessandro Antonuccio</foaf:name>
+		<foaf:givenName>Alessandro</foaf:givenName>
+		<foaf:familyName>Antonuccio</foaf:familyName>
+		<foaf:mbox>ale@lodlive.it</foaf:mbox>
+		<foaf:nick>hstudio.venezia</foaf:nick>
+		<foaf:nick>hstudio_venezia</foaf:nick>
+		<foaf:workplaceHomepage rdf:resource="http://hstudio.it"/>
+		<foaf:schoolHomepage rdf:resource="http://www.liceoamaldi.it/"/>
+		<foaf:knows>
+			<foaf:Person rdf:resource="http://purl.org/net/foaf:Person/diego-valerio-camarda"/>
+		</foaf:knows>
+		<foaf:currentProject rdf:resource="http://storia.camera.it"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh97005138"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh85143917"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh2007006475"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh00006889"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh85037199"/>
+	</foaf:Person>
+</rdf:RDF>

+ 23 - 0
foafPerson/diego-valerio-camarda.rdf

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+	<foaf:Person rdf:about="http://purl.org/net/foaf:Person/diego-valerio-camarda">
+		<foaf:name>Diego Valerio Camarda</foaf:name>
+		<foaf:givenName>Diego Valerio</foaf:givenName>
+		<foaf:familyName>Camarda</foaf:familyName>
+		<foaf:mbox>diego@lodlive.it</foaf:mbox>
+		<foaf:nick>dvcama</foaf:nick>
+		<foaf:workplaceHomepage rdf:resource="http://regesta.com"/>
+		<foaf:schoolHomepage rdf:resource="http://www.liceomorgagni.it/"/>
+		<foaf:currentProject rdf:resource="http://storia.camera.it"/>
+		<foaf:currentProject rdf:resource="http://dati.camera.it"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh85102553"/>
+		<foaf:topic_interest rdf:resource="http://www.w3.org/TR/rdf-sparql-query/"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh96004880"/>
+		<foaf:topic_interest rdf:resource="http://www.w3.org/TR/owl-features/"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh2003010124"/>
+		<foaf:topic_interest rdf:resource="http://dbpedia.org/resource/Linked_Data"/>
+		<foaf:topic_interest rdf:resource="http://dbpedia.org/resource/Semantic_Web"/>
+		<foaf:topic_interest rdf:resource="http://dbpedia.org/resource/SPARQL"/>
+
+	</foaf:Person>
+</rdf:RDF>

+ 30 - 0
foafPerson/silvia-mazzini.rdf

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
+	<foaf:Person rdf:about="http://purl.org/net/foaf:Person/silvia-mazzini">
+		<foaf:name>Silvia Mazzini</foaf:name>
+		<foaf:givenName>Silvia</foaf:givenName>
+		<foaf:familyName>Mazzini</foaf:familyName>
+		<foaf:mbox>dilvia@lodlive.it</foaf:mbox>
+		<foaf:workplaceHomepage rdf:resource="http://regesta.com"/>
+		<foaf:nick>regesta_sm</foaf:nick>
+		<foaf:schoolHomepage rdf:resource="http://www.dipartimentodistoria.uniroma2.it/"/>
+		<foaf:knows>
+			<foaf:Person>
+				<foaf:name>Chiara Veninata</foaf:name>
+				<foaf:mbox>venclaruz@gmail.com</foaf:mbox>
+			</foaf:Person>
+		</foaf:knows>
+		<foaf:currentProject rdf:resource="http://dati.camera.it"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh2002000569"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh97007825"/>
+		<foaf:topic_interest rdf:resource="http://id.loc.gov/authorities/subjects/sh2003010124"/>
+		<foaf:topic_interest rdf:resource="http://www.w3.org/TR/owl-features/"/>
+		<foaf:topic_interest rdf:resource="http://linkeddata.org"/>
+		<foaf:topic_interest rdf:resource="http://www.w3.org/2005/Incubator/lld/"/>
+		<foaf:topic_interest rdf:resource="http://www.loc.gov/ead/"/>
+		<foaf:topic_interest rdf:resource="http://eac.staatsbibliothek-berlin.de/"/>
+		<foaf:topic_interest rdf:resource="http://dbpedia.org/resource/Linked_Data"/>
+		<foaf:topic_interest rdf:resource="http://dbpedia.org/resource/Semantic_Web"/>
+		<foaf:topic_interest rdf:resource="http://dbpedia.org/resource/SPARQL"/>
+	</foaf:Person>
+</rdf:RDF>

BIN
img/ajax-loader-black.gif


BIN
img/ajax-loader-gray.gif


BIN
img/ajax-loader-white.gif


BIN
img/ajax-loader.gif


BIN
img/bestexperienced.png


BIN
img/browsers.png


BIN
img/favicon.png


BIN
img/immagine-vuota-en.png


BIN
img/immagine-vuota-fr.png


BIN
img/immagine-vuota-it.png


BIN
img/logoLodLive.jpg


BIN
img/logoRestore.png


BIN
img/pannelloBlackBackground.png


BIN
img/pannelloBlueBackground.png


BIN
img/shadow.png


BIN
img/sprite-balls.png


BIN
img/sprite-balls@2x.png


BIN
img/sprite-home-eng.png


BIN
img/sprite-home-fr.png


BIN
img/sprite-home.png


BIN
img/sprite-legenda.png


BIN
img/sprite-legenda@2x.png


BIN
img/thumbBlueNoFoto.png


File diff suppressed because it is too large
+ 3 - 0
js/jquery-2.0.3.min.js


File diff suppressed because it is too large
+ 4 - 0
js/jquery-ui-1.9.2.min.js


File diff suppressed because it is too large
+ 10 - 0
js/jquery.ThreeDots.min.js


+ 9 - 0
js/jquery.doTimeout.js

@@ -0,0 +1,9 @@
+/*
+ * jQuery doTimeout: Like setTimeout, but better! - v1.0 - 3/3/2010
+ * http://benalman.com/projects/jquery-dotimeout-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($){var a={},c="doTimeout",d=Array.prototype.slice;$[c]=function(){return b.apply(window,[0].concat(d.call(arguments)))};$.fn[c]=function(){var f=d.call(arguments),e=b.apply(this,[c+f[0]].concat(f));return typeof f[0]==="number"||typeof f[1]==="number"?this:e};function b(l){var m=this,h,k={},g=l?$.fn:$,n=arguments,i=4,f=n[1],j=n[2],p=n[3];if(typeof f!=="string"){i--;f=l=0;j=n[1];p=n[2]}if(l){h=m.eq(0);h.data(l,k=h.data(l)||{})}else{if(f){k=a[f]||(a[f]={})}}k.id&&clearTimeout(k.id);delete k.id;function e(){if(l){h.removeData(l)}else{if(f){delete a[f]}}}function o(){k.id=setTimeout(function(){k.fn()},j)}if(p){k.fn=function(q){if(typeof p==="string"){p=g[p]}p.apply(m,d.call(n,i))===true&&!q?o():e()};o()}else{if(k.fn){j===undefined?e():k.fn(j===false);return true}else{e()}}}})(jQuery);

BIN
js/jquery.fancybox/blank.gif


BIN
js/jquery.fancybox/fancybox_loading.gif


BIN
js/jquery.fancybox/fancybox_loading@2x.gif


BIN
js/jquery.fancybox/fancybox_overlay.png


BIN
js/jquery.fancybox/fancybox_sprite.png


BIN
js/jquery.fancybox/fancybox_sprite@2x.png


+ 274 - 0
js/jquery.fancybox/jquery.fancybox.css

@@ -0,0 +1,274 @@
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+.fancybox-wrap,
+.fancybox-skin,
+.fancybox-outer,
+.fancybox-inner,
+.fancybox-image,
+.fancybox-wrap iframe,
+.fancybox-wrap object,
+.fancybox-nav,
+.fancybox-nav span,
+.fancybox-tmp
+{
+	padding: 0;
+	margin: 0;
+	border: 0;
+	outline: none;
+	vertical-align: top;
+}
+
+.fancybox-wrap {
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 8020;
+}
+
+.fancybox-skin {
+	position: relative;
+	background: #f9f9f9;
+	color: #444;
+	text-shadow: none;
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	        border-radius: 4px;
+}
+
+.fancybox-opened {
+	z-index: 8030;
+}
+
+.fancybox-opened .fancybox-skin {
+	-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+	   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+	        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+}
+
+.fancybox-outer, .fancybox-inner {
+	position: relative;
+}
+
+.fancybox-inner {
+	overflow: hidden;
+}
+
+.fancybox-type-iframe .fancybox-inner {
+	-webkit-overflow-scrolling: touch;
+}
+
+.fancybox-error {
+	color: #444;
+	font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+	margin: 0;
+	padding: 15px;
+	white-space: nowrap;
+}
+
+.fancybox-image, .fancybox-iframe {
+	display: block;
+	width: 100%;
+	height: 100%;
+}
+
+.fancybox-image {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+	background-image: url('fancybox_sprite.png');
+}
+
+#fancybox-loading {
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	margin-top: -22px;
+	margin-left: -22px;
+	background-position: 0 -108px;
+	opacity: 0.8;
+	cursor: pointer;
+	z-index: 8060;
+}
+
+#fancybox-loading div {
+	width: 44px;
+	height: 44px;
+	background: url('fancybox_loading.gif') center center no-repeat;
+}
+
+.fancybox-close {
+	position: absolute;
+	top: -18px;
+	right: -18px;
+	width: 36px;
+	height: 36px;
+	cursor: pointer;
+	z-index: 8040;
+}
+
+.fancybox-nav {
+	position: absolute;
+	top: 0;
+	width: 40%;
+	height: 100%;
+	cursor: pointer;
+	text-decoration: none;
+	background: transparent url('blank.gif'); /* helps IE */
+	-webkit-tap-highlight-color: rgba(0,0,0,0);
+	z-index: 8040;
+}
+
+.fancybox-prev {
+	left: 0;
+}
+
+.fancybox-next {
+	right: 0;
+}
+
+.fancybox-nav span {
+	position: absolute;
+	top: 50%;
+	width: 36px;
+	height: 34px;
+	margin-top: -18px;
+	cursor: pointer;
+	z-index: 8040;
+	visibility: hidden;
+}
+
+.fancybox-prev span {
+	left: 10px;
+	background-position: 0 -36px;
+}
+
+.fancybox-next span {
+	right: 10px;
+	background-position: 0 -72px;
+}
+
+.fancybox-nav:hover span {
+	visibility: visible;
+}
+
+.fancybox-tmp {
+	position: absolute;
+	top: -99999px;
+	left: -99999px;
+	visibility: hidden;
+	max-width: 99999px;
+	max-height: 99999px;
+	overflow: visible !important;
+}
+
+/* Overlay helper */
+
+.fancybox-lock {
+    overflow: hidden !important;
+    width: auto;
+}
+
+.fancybox-lock body {
+    overflow: hidden !important;
+}
+
+.fancybox-lock-test {
+    overflow-y: hidden !important;
+}
+
+.fancybox-overlay {
+	position: absolute;
+	top: 0;
+	left: 0;
+	overflow: hidden;
+	display: none;
+	z-index: 8010;
+	background: url('fancybox_overlay.png');
+}
+
+.fancybox-overlay-fixed {
+	position: fixed;
+	bottom: 0;
+	right: 0;
+}
+
+.fancybox-lock .fancybox-overlay {
+	overflow: auto;
+	overflow-y: scroll;
+}
+
+/* Title helper */
+
+.fancybox-title {
+	visibility: hidden;
+	font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+	position: relative;
+	text-shadow: none;
+	z-index: 8050;
+}
+
+.fancybox-opened .fancybox-title {
+	visibility: visible;
+}
+
+.fancybox-title-float-wrap {
+	position: absolute;
+	bottom: 0;
+	right: 50%;
+	margin-bottom: -35px;
+	z-index: 8050;
+	text-align: center;
+}
+
+.fancybox-title-float-wrap .child {
+	display: inline-block;
+	margin-right: -100%;
+	padding: 2px 20px;
+	background: transparent; /* Fallback for web browsers that doesn't support RGBa */
+	background: rgba(0, 0, 0, 0.8);
+	-webkit-border-radius: 15px;
+	   -moz-border-radius: 15px;
+	        border-radius: 15px;
+	text-shadow: 0 1px 2px #222;
+	color: #FFF;
+	font-weight: bold;
+	line-height: 24px;
+	white-space: nowrap;
+}
+
+.fancybox-title-outside-wrap {
+	position: relative;
+	margin-top: 10px;
+	color: #fff;
+}
+
+.fancybox-title-inside-wrap {
+	padding-top: 10px;
+}
+
+.fancybox-title-over-wrap {
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	color: #fff;
+	padding: 10px;
+	background: #000;
+	background: rgba(0, 0, 0, .8);
+}
+
+/*Retina graphics!*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+	   only screen and (min--moz-device-pixel-ratio: 1.5),
+	   only screen and (min-device-pixel-ratio: 1.5){
+
+	#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+		background-image: url('fancybox_sprite@2x.png');
+		background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
+	}
+
+	#fancybox-loading div {
+		background-image: url('fancybox_loading@2x.gif');
+		background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
+	}
+}

+ 46 - 0
js/jquery.fancybox/jquery.fancybox.pack.js

@@ -0,0 +1,46 @@
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
+width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
+keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
+(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
+openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
+isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
+c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
+k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
+b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
+setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
+d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
+a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
+b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
+y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
+if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
+(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
+{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
+mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
+!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
+"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
+this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
+f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
+e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
+outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
+g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
+"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
+h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
+h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
+"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
+y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
+!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
+b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
+a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
+(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
+f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
+{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
+b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
+f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
+b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
+p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
+f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
+b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
+e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
+":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
+d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);

File diff suppressed because it is too large
+ 38 - 0
js/jquery.gmap3.js


+ 61 - 0
js/jquery.jcanvas.js

@@ -0,0 +1,61 @@
+/*
+ jCanvas v13.11.21
+ Copyright 2013 Caleb Evans
+ Released under the MIT license
+*/
+(function(d,Ka,sa,da,ta,A,E,f,D){function L(c){Y(this,c);return this}function J(c){c?Y(L.prototype,c):J.prefs=L.prototype=Y({},ia);return this}function K(c){return c&&c.getContext?c.getContext("2d"):f}function ja(c){c=Y({},c);c.masks=c.masks.slice(0);return c}function ea(c,b){var a;c.save();a=ja(b.transforms);b.savedTransforms.push(a)}function U(c,b,a){$(a.fillStyle)?b.fillStyle=a.fillStyle.call(c,a):b.fillStyle=a.fillStyle;$(a.strokeStyle)?b.strokeStyle=a.strokeStyle.call(c,a):b.strokeStyle=a.strokeStyle;
+b.lineWidth=a.strokeWidth;a.rounded?b.lineCap=b.lineJoin="round":(b.lineCap=a.strokeCap,b.lineJoin=a.strokeJoin,b.miterLimit=a.miterLimit);b.shadowOffsetX=a.shadowX;b.shadowOffsetY=a.shadowY;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.globalAlpha=a.opacity;b.globalCompositeOperation=a.compositing;a.imageSmoothing&&(b.webkitImageSmoothingEnabled=b.mozImageSmoothingEnabled=a.imageSmoothing)}function ua(c,b,a){a.mask&&(a.autosave&&ea(c,b),c.clip(),b.transforms.masks.push(a._args))}function X(c,
+b,a){a.closed&&b.closePath();a.shadowStroke&&0!==a.strokeWidth?(b.stroke(),b.fill(),b.shadowColor="transparent",b.shadowBlur=0,b.stroke()):(b.fill(),"transparent"!==a.fillStyle&&(b.shadowColor="transparent"),0!==a.strokeWidth&&b.stroke());a.closed||b.closePath();a._transformed&&b.restore();a.mask&&(c=P(c),ua(b,c,a))}function va(c,b,a){b._toRad=b.inDegrees?M/180:1;c.translate(b.x,b.y);c.rotate(b.rotate*b._toRad);c.translate(-b.x,-b.y);a&&(a.rotate+=b.rotate*b._toRad)}function wa(c,b,a){1!==b.scale&&
+(b.scaleX=b.scaleY=b.scale);c.translate(b.x,b.y);c.scale(b.scaleX,b.scaleY);c.translate(-b.x,-b.y);a&&(a.scaleX*=b.scaleX,a.scaleY*=b.scaleY)}function xa(c,b,a){b.translate&&(b.translateX=b.translateY=b.translate);c.translate(b.translateX,b.translateY);a&&(a.translateX+=b.translateX,a.translateY+=b.translateY)}function Q(c,b,a,e,h){a._toRad=a.inDegrees?M/180:1;a.arrowAngle*=a._toRad;a._transformed=A;b.save();h===D&&(h=e);a.fromCenter||a._centered||(a.x+=e/2,a.y+=h/2,a._centered=A);a.rotate&&va(b,
+a,{});1===a.scale&&1===a.scaleX&&1===a.scaleY||wa(b,a,{});(a.translate||a.translateX||a.translateY)&&xa(b,a,{})}function P(c){var b;fa._canvas===c&&fa._data?b=fa._data:(b=d.data(c,"jCanvas"),b||(b={canvas:c,layers:[],layer:{names:{},groups:{}},intersecting:[],lastIntersected:f,cursor:d(c).css("cursor"),drag:{},event:{type:f,x:f,y:f},events:{},transforms:ja(ma),savedTransforms:[],animating:E,animated:f,pos:0,pixelRatio:1,scaled:!1},d.data(c,"jCanvas",b)),fa._canvas=c,fa._data=b);return b}function ya(c,
+b,a){for(var e in J.events)J.events.hasOwnProperty(e)&&(a[e]||a.cursors&&a.cursors[e])&&za(c,b,a,e)}function za(c,b,a,e){e=Aa(e);J.events[e](c,b);a._event=A}function Ba(c,b,a){var e,h,g;if(a.draggable||a.cursor||a.cursors){e=["mousedown","mousemove","mouseup"];for(g=0;g<e.length;g+=1)h=e[g],za(c,b,a,h);b.events.mouseoutdrag||(c.bind("mouseout.jCanvas",function(){var a=b.drag.layer;a&&(b.drag={},a.dragcancel&&a.dragcancel.call(c[0],a),c.drawLayers())}),b.events.mouseoutdrag=A);a._event=A}}function ka(c,
+b,a,e){c=b.layer.names;e?e.name!==D&&"string"===aa(a.name)&&a.name!==e.name&&delete c[a.name]:e=a;"string"===aa(e.name)&&(c[e.name]=a)}function na(c,b,a,e){c=b.layer.groups;var h,g,d,H;a.group!==f&&(a.groups=[a.group],a.dragGroupWithLayer&&(a.dragGroups=[a.group]));e&&e.group!==D&&(e.group===f?e.groups=f:(e.groups=[e.group],e.dragGroupWithLayer&&(e.dragGroups=[e.group])));if(!e)e=a;else if(e.groups!==D&&a.groups!==f)for(g=0;g<a.groups.length;g+=1)if(h=a.groups[g],b=c[h]){for(H=0;H<b.length;H+=1)if(b[H]===
+a){d=H;b.splice(H,1);break}0===b.length&&delete c[h]}if(e.groups!==D&&e.groups!==f)for(g=0;g<e.groups.length;g+=1)h=e.groups[g],b=c[h],b||(b=c[h]=[],b.name=h),d===D&&(d=b.length),b.splice(d,0,a)}function ca(c,b,a,e){e||(e=b.cursors?b.cursors[a]:b.cursor);e&&c.css({cursor:e});b[a]&&b[a].call(c[0],b)}function O(c,b,a,e){var h=b;b._args=a;b.canvas=c;if(b.draggable||b.dragGroups)b.layer=A,b.draggable=A;b._method=e?e:b.method?d.fn[b.method]:b.type?d.fn[la[b.type]]:function(){};b.layer&&!b._layer&&(a=d(c),
+e=a.getLayers(),c=P(c),h=new L(b),h.layer=A,h._layer=A,ka(a,c,h),na(a,c,h),ya(a,c,h),Ba(a,c,h),b._event=h._event,h.index===f&&(h.index=e.length),e.splice(h.index,0,h));return h}function Ca(c){var b,a;for(a=0;a<ga.length;a+=1)b=ga[a],c[b]=c["_"+b]}function Da(c,b){var a,e;for(e=0;e<ga.length;e+=1)a=ga[e],c["_"+a]=c[a],oa[a]=A,b&&delete c[a]}function La(c,b,a){for(var e in a)a.hasOwnProperty(e)&&$(a[e])&&(a[e]=a[e].call(c,b,e));return a}function Ea(c){var b,a,e=[],h=1;c.match(/^#?\w+$/gi)&&("transparent"===
+c&&(c="rgba(0,0,0,0)"),a=Ka.head,b=a.style.color,a.style.color=c,c=d.css(a,"color"),a.style.color=b);c.match(/^rgb/gi)&&(e=c.match(/\d+/gi),c.match(/%/gi)&&(h=2.55),e[0]*=h,e[1]*=h,e[2]*=h,e[3]=e[3]!==D?ta(e[3]):1);return e}function Ma(c){var b=3,a;"array"!==aa(c.start)&&(c.start=Ea(c.start),c.end=Ea(c.end));c.now=[];if(1!==c.start[3]||1!==c.end[3])b=4;for(a=0;a<b;a+=1)c.now[a]=c.start[a]+(c.end[a]-c.start[a])*c.pos,3>a&&(c.now[a]=Na(c.now[a]));1!==c.start[3]||1!==c.end[3]?c.now="rgba("+c.now.join(",")+
+")":(c.now.slice(0,3),c.now="rgb("+c.now.join(",")+")");c.elem.nodeName?c.elem.style[c.prop]=c.now:c.elem[c.prop]=c.now}function Aa(c){void 0!==window.ontouchstart&&pa[c]&&(c=pa[c]);return c}function Oa(c){J.events[c]=function(b,a){var e,h;h=a.event;e="mouseover"===c||"mouseout"===c?"mousemove":c;a.events[e]||(b.bind(e+".jCanvas",function(a){h.x=a.offsetX;h.y=a.offsetY;h.type=e;h.event=a;b.drawLayers({resetFire:A});a.preventDefault()}),a.events[e]=A)}}function V(c,b,a){var e,h,g,d;(a=a._args)&&a._event&&
+(c=P(c),e=c.event,e.x!==f&&e.y!==f&&(g=e.x*c.pixelRatio,d=e.y*c.pixelRatio,h=b.isPointInPath(g,d)||b.isPointInStroke&&b.isPointInStroke(g,d)),b=c.transforms,a.eventX=a.mouseX=e.x,a.eventY=a.mouseY=e.y,a.event=e.event,e=c.transforms.rotate,g=a.eventX,d=a.eventY,0!==e?(a._eventX=g*R(-e)-d*T(-e),a._eventY=d*R(-e)+g*T(-e)):(a._eventX=g,a._eventY=d),a._eventX/=b.scaleX,a._eventY/=b.scaleY,h&&c.intersecting.push(a),a.intersects=h)}function Fa(c){for(;0>c;)c+=2*M;return c}function Ga(c,b,a,e,h,g,d){var f,
+z,y;a.arrowRadius&&!a.closed&&(y=Pa(d-h,g-e),y-=M,f=a.strokeWidth*R(y),z=a.strokeWidth*T(y),c=g+a.arrowRadius*R(y+a.arrowAngle/2),e=d+a.arrowRadius*T(y+a.arrowAngle/2),h=g+a.arrowRadius*R(y-a.arrowAngle/2),a=d+a.arrowRadius*T(y-a.arrowAngle/2),b.moveTo(c-f,e-z),b.lineTo(g-f,d-z),b.lineTo(h-f,a-z),b.moveTo(g-f,d-z),b.lineTo(g+f,d+z))}function ha(c,b,a,e,h,g,d,f,z,y,F){a.startArrow&&Ga(c,b,a,e,h,g,d);a.endArrow&&Ga(c,b,a,f,z,y,F)}function Ha(c,b){isNaN(Number(b.fontSize))||(b.fontSize+="px");c.font=
+b.fontStyle+" "+b.fontSize+" "+b.fontFamily}function Ia(c,b,a,e){var h,g;if(Z.text===a.text&&Z.fontStyle===a.fontStyle&&Z.fontSize===a.fontSize&&Z.fontFamily===a.fontFamily&&Z.maxWidth===a.maxWidth&&Z.lineHeight===a.lineHeight)a.width=Z.width,a.height=Z.height;else{a.width=b.measureText(e[0]).width;for(g=1;g<e.length;g+=1)h=b.measureText(e[g]).width,h>a.width&&(a.width=h);b=c.style.fontSize;c.style.fontSize=a.fontSize;a.height=ta(d.css(c,"fontSize"))*e.length*a.lineHeight;c.style.fontSize=b}}function Ja(c,
+b){var a=b.maxWidth,e=b.text.split("\n"),h=[],g,d,f,z,y;for(f=0;f<e.length;f+=1){z=e[f];y=z.split(" ");g=[];d="";if(1===y.length||c.measureText(z).width<a)g=[z];else{for(z=0;z<y.length;z+=1)c.measureText(d+y[z]).width>a&&(""!==d&&g.push(d),d=""),d+=y[z],z!==y.length-1&&(d+=" ");g.push(d)}h=h.concat(g.join("\n").replace(/( (\n))|( $)/gi,"$2").split("\n"))}return h}var ia,Y=d.extend,ba=d.inArray,aa=d.type,$=d.isFunction,Na=da.round,M=da.PI,T=da.sin,R=da.cos,Pa=da.atan2,Qa=d.event.fix,pa,qa,la,fa={},
+Z={},ra={},ma={rotate:0,scaleX:1,scaleY:1,translateX:0,translateY:0,masks:[]},ga,oa;d.fn.jCanvas=J;J.events={};ia={align:"center",arrowAngle:90,arrowRadius:0,autosave:A,baseline:"middle",bringToFront:E,ccw:E,closed:E,compositing:"source-over",concavity:0,cornerRadius:0,count:1,cropFromCenter:A,cursor:f,cursors:f,disableEvents:E,draggable:E,dragGroups:f,group:f,groups:f,data:{},each:f,end:360,fillStyle:"transparent",fireDragGroupEvents:E,fontStyle:"normal",fontSize:"12pt",fontFamily:"sans-serif",fromCenter:A,
+fn:f,height:f,imageSmoothing:A,inDegrees:A,index:f,lineHeight:1,layer:E,load:f,mask:E,maxWidth:f,miterLimit:10,name:f,opacity:1,r1:f,r2:f,radius:0,repeat:"repeat",respectAlign:E,rotate:0,rounded:E,scale:1,scaleX:1,scaleY:1,shadowBlur:0,shadowColor:"transparent",shadowStroke:!1,shadowX:0,shadowY:0,sHeight:f,sides:0,source:"",spread:0,start:0,strokeCap:"butt",strokeJoin:"miter",strokeStyle:"transparent",strokeWidth:1,sWidth:f,sx:f,sy:f,text:"",translate:0,translateX:0,translateY:0,type:f,visible:A,
+width:f,x:0,y:0};J();J.extend=function(c){J.defaults=Y(ia,c.props);J();c.name&&(d.fn[c.name]=function a(e){var h,g,d,f;for(g=0;g<this.length;g+=1)if(h=this[g],d=K(h))f=new L(e),O(h,f,e,a),U(h,d,f),c.fn.call(h,d,f);return this});return d.fn[c.name]};d.fn.getLayers=function(c){var b=this[0],a,e,h=[];if(b&&b.getContext)if(a=P(b),a=a.layers,$(c))for(e=0;e<a.length;e+=1)c.call(b,a[e])&&h.push(a[e]);else h=a;return h};d.fn.getLayer=function(c){var b=P(this[0]),a=b.layers,e=aa(c),h;if(c&&c.layer)h=c;else if("number"===
+e)0>c&&(c=a.length+c),h=a[c];else if("regexp"===e)for(b=0;b<a.length;b+=1){if("string"===aa(a[b].name)&&a[b].name.match(c)){h=a[b];break}}else h=b.layer.names[c];return h};d.fn.getLayerGroup=function(c){var b=aa(c),a,e;if("array"===b)return c;if("regexp"===b)for(a in b=P(this[0]),b=b.groups,b){if(a.match(c)){e=b[a];break}}else b=P(this[0]),e=b.layer.groups[c];return e};d.fn.getLayerIndex=function(c){var b=this.getLayers();c=this.getLayer(c);return ba(c,b)};d.fn.setLayer=function(c,b){var a,e,h,g;
+for(e=0;e<this.length;e+=1)if(a=d(this[e]),h=P(this[e]),g=d(this[e]).getLayer(c))ka(a,h,g,b),na(a,h,g,b),b.index!==D&&a.moveLayer(g,b.index),Y(g,b),ya(a,h,g),Ba(a,h,g);return this};d.fn.setLayerGroup=function(c,b){var a,e,h,g;for(e=0;e<this.length;e+=1)if(a=d(this[e]),h=a.getLayerGroup(c))for(g=0;g<h.length;g+=1)a.setLayer(h[g],b);return this};d.fn.setLayers=function(c,b){var a,e,h,g;for(e=0;e<this.length;e+=1)for(a=d(this[e]),h=a.getLayers(b),g=0;g<h.length;g+=1)a.setLayer(h[g],c);return this};d.fn.moveLayer=
+function(c,b){var a,e,h;for(e=0;e<this.length;e+=1)if(a=d(this[e]),h=a.getLayers(),a=a.getLayer(c))a.index=ba(a,h),h.splice(a.index,1),h.splice(b,0,a),0>b&&(b=h.length+b),a.index=b;return this};d.fn.removeLayer=function(c){var b,a,e,h,g;for(a=0;a<this.length;a+=1)if(b=d(this[a]),e=P(this[a]),h=b.getLayers(),g=b.getLayer(c))g.index=ba(g,h),h.splice(g.index,1),ka(b,e,g,{name:f}),na(b,e,g,{groups:f});return this};d.fn.removeLayerGroup=function(c){var b,a,e,h,g,N,H;if(c!==D)for(a=0;a<this.length;a+=1)if(b=
+d(this[a]),e=P(this[a]),h=b.getLayers(),g=b.getLayerGroup(c)){for(H=0;H<g.length;H+=1)N=g[H],N.index=ba(N,h),h.splice(N.index,1),ka(b,e,N,{name:f});delete e.layer.groups[g.name]}return this};d.fn.removeLayers=function(){var c,b;for(c=0;c<this.length;c+=1)d(this[c]),b=P(this[c]),b.layers.length=0,b.layer.names={},b.layer.groups={};return this};d.fn.addLayerToGroup=function(c,b){var a,e,h,g=[];for(e=0;e<this.length;e+=1)a=d(this[e]),h=a.getLayer(c),h.groups&&-1===ba(b,h.groups)&&(g=h.groups.slice(0),
+g.push(b),a.setLayer(h,{groups:g}));return this};d.fn.removeLayerFromGroup=function(c,b){var a,e,h,g=[],f;for(e=0;e<this.length;e+=1)a=d(this[e]),h=a.getLayer(c),f=ba(b,h.groups),-1!==f&&(g=h.groups.slice(0),g.splice(f,1),a.setLayer(h,{groups:g}));return this};d.fn.drawLayer=function(c){var b,a,e;for(b=0;b<this.length;b+=1)a=d(this[b]),K(this[b]),(e=a.getLayer(c))&&e.visible&&e._method&&(e._next=f,e._method.call(a,e));return this};d.fn.drawLayers=function(c){var b,a,e=Y({},c),h,g,N,H,z,y,F;e.index||
+(e.index=0);for(c=0;c<this.length;c+=1)if(b=d(this[c]),a=K(this[c])){H=P(this[c]);e.clear!==E&&b.clearCanvas();a=H.layers;for(N=e.index;N<a.length&&(h=a[N],h.index=N,e.resetFire&&(h._fired=E),h._event=!h.disableEvents,y=b,z=h,g=N+1,z&&z.visible&&z._method&&(z._next=g?g:f,z._method.call(y,z)),h._masks=H.transforms.masks.slice(0),h._method!==d.fn.drawImage||!h.visible);N+=1);h=H;g=z=y=void 0;y={};for(z=h.intersecting.length-1;0<=z;z-=1)if(y=h.intersecting[z],y._masks){for(g=y._masks.length-1;0<=g;g-=
+1)if(!y._masks[g].intersects){y.intersects=E;break}if(y.intersects)break}h=y;z=H.event;y=z.type;h[y]||qa[y]&&(y=qa[y]);F=H.drag;g=H.lastIntersected;g!==f&&h!==g&&g._hovered&&!g._fired&&(H.lastIntersected=f,g._fired=A,g._hovered=E,ca(b,g,"mouseout",H.cursor));h._event&&h.intersects&&(H.lastIntersected=h,!(h.mouseover||h.mouseout||h.cursor||h.cursors)||h._hovered||h._fired||(h._fired=A,h._hovered=A,ca(b,h,"mouseover")),h._fired||(h._fired=A,z.type=f,ca(b,h,y)),!h.draggable||"mousedown"!==y&&"touchstart"!==
+y||(F.layer=h));if(F.layer){h=H;var t=g=z=void 0,B=F=void 0,l=void 0,u=t=void 0;F=h.drag;g=F.layer;B=g.dragGroups||[];z=h.layers;if("mousemove"===y||"touchmove"===y){if(!F.dragging){F.dragging=A;g.bringToFront&&(z.splice(g.index,1),g.index=z.push(g));for(u=0;u<B.length;u+=1)if(t=B[u],l=h.layer.groups[t],g.groups&&l)for(t=0;t<l.length;t+=1)l[t]!==g&&(l[t]._startX=l[t].x,l[t]._startY=l[t].y,l[t]._endX=g._eventX,l[t]._endY=g._eventY,l[t].bringToFront&&(l[t].index=ba(l[t],z),z.splice(l[t].index,1),z.splice(-1,
+0,l[t]),l[t].index=z.length-2),l[t].dragstart&&g.fireDragGroupEvents&&l[t].dragstart.call(b[0],l[t]));F._startX=g._startX=g.x;F._startY=g._startY=g.y;F._endX=g._endX=g._eventX;F._endY=g._endY=g._eventY;ca(b,g,"dragstart")}g.x=g._eventX-(F._endX-F._startX);g.y=g._eventY-(F._endY-F._startY);for(u=0;u<B.length;u+=1)if(t=B[u],l=h.layer.groups[t],g.groups&&l)for(t=0;t<l.length;t+=1)l[t]!==g&&(l[t].x=g._eventX-(l[t]._endX-l[t]._startX),l[t].y=g._eventY-(l[t]._endY-l[t]._startY),l[t].drag&&g.fireDragGroupEvents&&
+l[t].drag.call(b[0],l[t]));ca(b,g,"drag")}else if("mouseup"===y||"touchend"===y){F.dragging&&(ca(b,g,"dragstop"),F.dragging=E);for(u=0;u<B.length;u+=1)if(t=B[u],l=h.layer.groups[t],g.groups&&l)for(t=0;t<l.length;t+=1)l[t]!==g&&l[t].dragstop&&g.fireDragGroupEvents&&l[t].dragstop.call(b[0],l[t]);h.drag={}}}N===a.length&&(H.intersecting.length=0,H.transforms=ja(ma),H.savedTransforms.length=0)}return this};d.fn.addLayer=function(c){var b,a;for(b=0;b<this.length;b+=1)if(a=K(this[b]))a=new L(c),a.layer=
+A,O(this[b],a,c);return this};ga=["width","height","opacity","lineHeight"];oa={};d.fn.animateLayer=function(){function c(a,b,c){return function(){Ca(c);b.animating&&b.animated!==c||a.drawLayers();g[4]&&g[4].call(a[0],c);c._animating=E;b.animating=E;b.animated=f}}function b(a,b,c){return function(e,h){c._pos!==h.pos&&(c._pos=h.pos,Ca(c),c._animating||b.animating||(c._animating=A,b.animating=A,b.animated=c),b.animating&&b.animated!==c||a.drawLayers(),g[5]&&g[5].call(a[0],e,h,c))}}var a,e,h,g=[].slice.call(arguments,
+0),N,H;"object"===aa(g[2])?(g.splice(2,0,g[2].duration||f),g.splice(3,0,g[3].easing||f),g.splice(4,0,g[4].done||g[4].complete||f),g.splice(5,0,g[5].step||f)):(g[2]===D?(g.splice(2,0,f),g.splice(3,0,f),g.splice(4,0,f)):$(g[2])&&(g.splice(2,0,f),g.splice(3,0,f)),g[3]===D?(g[3]=f,g.splice(4,0,f)):$(g[3])&&g.splice(3,0,f));for(e=0;e<this.length;e+=1)if(a=d(this[e]),h=K(this[e]))h=P(this[e]),(N=a.getLayer(g[0]))&&N._method!==d.fn.draw&&(H=Y({},g[1]),H=La(this[e],N,H),Da(H,A),Da(N),N.style=oa,d(N).animate(H,
+{duration:g[2],easing:d.easing[g[3]]?g[3]:f,complete:c(a,h,N),step:b(a,h,N)}));return this};d.fn.animateLayerGroup=function(c){var b,a,e=[].slice.call(arguments,0),h,g;for(a=0;a<this.length;a+=1)if(b=d(this[a]),h=b.getLayerGroup(c))for(g=0;g<h.length;g+=1)b.animateLayer.apply(b,[h[g]].concat(e.slice(1)));return this};d.fn.delayLayer=function(c,b){var a,e;b=b||0;for(a=0;a<this.length;a+=1)e=d(this[a]).getLayer(c),d(e).delay(b);return this};d.fn.delayLayerGroup=function(c,b){var a,e,h,g;b=b||0;for(e=
+0;e<this.length;e+=1)if(a=d(this[e]),a=a.getLayerGroup(c))for(g=0;g<a.length;g+=1)(h=a[g])&&d(h).delay(b);return this};d.fn.stopLayer=function(c,b){var a,e;for(e=0;e<this.length;e+=1)a=d(this[e]),(a=a.getLayer(c))&&d(a).stop(b);return this};d.fn.stopLayerGroup=function(c,b){var a,e,h,g;for(e=0;e<this.length;e+=1)if(a=d(this[e]),a=a.getLayerGroup(c))for(g=0;g<a.length;g+=1)(h=a[g])&&d(h).stop(b);return this};(function(c){var b;for(b=0;b<c.length;b+=1)d.fx.step[c[b]]=Ma})("color backgroundColor borderColor borderTopColor borderRightColor borderBottomColor borderLeftColor fillStyle outlineColor strokeStyle shadowColor".split(" "));
+pa={mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove"};qa={touchstart:"mousedown",touchend:"mouseup",touchmove:"mousemove"};(function(c){var b;for(b=0;b<c.length;b+=1)Oa(c[b])})("click dblclick mousedown mouseup mousemove mouseover mouseout touchstart touchmove touchend".split(" "));d.event.fix=function(c){var b,a;c=Qa.call(d.event,c);if(b=c.originalEvent)if(a=b.changedTouches,c.pageX!==D&&c.offsetX===D){if(b=d(c.currentTarget).offset())c.offsetX=c.pageX-b.left,c.offsetY=c.pageY-b.top}else a&&
+(b=d(c.currentTarget).offset())&&(c.offsetX=a[0].pageX-b.left,c.offsetY=a[0].pageY-b.top);return c};la={arc:"drawArc",bezier:"drawBezier",ellipse:"drawEllipse","function":"draw",image:"drawImage",line:"drawLine",polygon:"drawPolygon",slice:"drawSlice",quadratic:"drawQuadratic",rectangle:"drawRect",text:"drawText",vector:"drawVector"};d.fn.draw=function b(a){var e,h,g=new L(a);if(la[g.type])this[la[g.type]](g);else for(e=0;e<this.length;e+=1)if(d(this[e]),h=K(this[e]))g=new L(a),O(this[e],g,a,b),g.visible&&
+g.fn&&g.fn.call(this[e],h,g);return this};d.fn.clearCanvas=function a(e){var h,g,d=new L(e);for(h=0;h<this.length;h+=1)if(g=K(this[h]))d.width===f||d.height===f?(g.save(),g.setTransform(1,0,0,1,0,0),g.clearRect(0,0,this[h].width,this[h].height),g.restore()):(O(this[h],d,e,a),Q(this[h],g,d,d.width,d.height),g.clearRect(d.x-d.width/2,d.y-d.height/2,d.width,d.height),d._transformed&&g.restore());return this};d.fn.saveCanvas=function e(h){var g,d,f,z,y;for(g=0;g<this.length;g+=1)if(d=K(this[g]))for(z=
+P(this[g]),f=new L(h),O(this[g],f,h,e),y=0;y<f.count;y+=1)ea(d,z);return this};d.fn.restoreCanvas=function h(g){var d,f,z,y,F;for(d=0;d<this.length;d+=1)if(f=K(this[d]))for(y=P(this[d]),z=new L(g),O(this[d],z,g,h),F=0;F<z.count;F+=1){var t=f,B=y;0===B.savedTransforms.length?B.transforms=ja(ma):(t.restore(),B.transforms=B.savedTransforms.pop())}return this};d.fn.restoreCanvasOnRedraw=function(h){h=Y({},h);h.layer=A;this.restoreCanvas(h);return this};d.fn.rotateCanvas=function g(d){var f,z,y,F;for(f=
+0;f<this.length;f+=1)if(z=K(this[f]))F=P(this[f]),y=new L(d),O(this[f],y,d,g),y.autosave&&ea(z,F),va(z,y,F.transforms);return this};d.fn.scaleCanvas=function N(d){var f,y,F,t;for(f=0;f<this.length;f+=1)if(y=K(this[f]))t=P(this[f]),F=new L(d),O(this[f],F,d,N),F.autosave&&ea(y,t),wa(y,F,t.transforms);return this};d.fn.translateCanvas=function H(d){var f,F,t,B;for(f=0;f<this.length;f+=1)if(F=K(this[f]))B=P(this[f]),t=new L(d),O(this[f],t,d,H),t.autosave&&ea(F,B),xa(F,t,B.transforms);return this};d.fn.drawRect=
+function z(d){var f,t,B,l,u,C,q,v;for(f=0;f<this.length;f+=1)if(t=K(this[f]))B=new L(d),O(this[f],B,d,z),B.visible&&(U(this[f],t,B),Q(this[f],t,B,B.width,B.height),t.beginPath(),l=B.x-B.width/2,u=B.y-B.height/2,(v=B.cornerRadius)?(B.closed=A,C=B.x+B.width/2,q=B.y+B.height/2,0>C-l-2*v&&(v=(C-l)/2),0>q-u-2*v&&(v=(q-u)/2),t.moveTo(l+v,u),t.lineTo(C-v,u),t.arc(C-v,u+v,v,3*M/2,2*M,E),t.lineTo(C,q-v),t.arc(C-v,q-v,v,0,M/2,E),t.lineTo(l+v,q),t.arc(l+v,q-v,v,M/2,M,E),t.lineTo(l,u+v),t.arc(l+v,u+v,v,M,3*M/
+2,E)):t.rect(l,u,B.width,B.height),V(this[f],t,B),X(this[f],t,B));return this};d.fn.drawArc=function y(d){var f,B,l,u,C,q,v,p,k,n,m;for(f=0;f<this.length;f+=1)if(B=K(this[f]))l=new L(d),O(this[f],l,d,y),l.visible&&(U(this[f],B,l),Q(this[f],B,l,2*l.radius),l.inDegrees||360!==l.end||(l.end=2*M),l.start*=l._toRad,l.end*=l._toRad,l.start-=M/2,l.end-=M/2,B.beginPath(),B.arc(l.x,l.y,l.radius,l.start,l.end,l.ccw),k=M/180*1,l.ccw&&(k*=-1),u=l.x+l.radius*R(l.start+k),C=l.y+l.radius*T(l.start+k),q=l.x+l.radius*
+R(l.start),v=l.y+l.radius*T(l.start),p=l.x+l.radius*R(l.end+k),k=l.y+l.radius*T(l.end+k),n=l.x+l.radius*R(l.end),m=l.y+l.radius*T(l.end),ha(this[f],B,l,u,C,q,v,n,m,p,k),V(this[f],B,l),X(this[f],B,l));return this};d.fn.drawEllipse=function F(d){var f,l,u,C,q;for(f=0;f<this.length;f+=1)if(l=K(this[f]))u=new L(d),O(this[f],u,d,F),u.visible&&(U(this[f],l,u),Q(this[f],l,u,u.width,u.height),C=4/3*u.width,q=u.height,l.beginPath(),l.moveTo(u.x,u.y-q/2),l.bezierCurveTo(u.x-C/2,u.y-q/2,u.x-C/2,u.y+q/2,u.x,
+u.y+q/2),l.bezierCurveTo(u.x+C/2,u.y+q/2,u.x+C/2,u.y-q/2,u.x,u.y-q/2),V(this[f],l,u),u.closed=A,X(this[f],l,u));return this};d.fn.drawPolygon=function t(d){var f,u,C,q,v,p,k,n,m,x;for(f=0;f<this.length;f+=1)if(u=K(this[f]))if(C=new L(d),O(this[f],C,d,t),C.visible){U(this[f],u,C);Q(this[f],u,C,2*C.radius);v=2*M/C.sides;p=v/2;q=p+M/2;k=C.radius*R(p);u.beginPath();for(x=0;x<C.sides;x+=1)n=C.x+C.radius*R(q),m=C.y+C.radius*T(q),u.lineTo(n,m),C.concavity&&(n=C.x+(k+-k*C.concavity)*R(q+p),m=C.y+(k+-k*C.concavity)*
+T(q+p),u.lineTo(n,m)),q+=v;V(this[f],u,C);C.closed=A;X(this[f],u,C)}return this};d.fn.drawSlice=function B(f){var u,C,q,v,p;for(u=0;u<this.length;u+=1)if(d(this[u]),C=K(this[u]))q=new L(f),O(this[u],q,f,B),q.visible&&(U(this[u],C,q),Q(this[u],C,q,2*q.radius),q.start*=q._toRad,q.end*=q._toRad,q.start-=M/2,q.end-=M/2,q.start=Fa(q.start),q.end=Fa(q.end),q.end<q.start&&(q.end+=2*M),v=(q.start+q.end)/2,p=q.radius*q.spread*R(v),v=q.radius*q.spread*T(v),q.x+=p,q.y+=v,C.beginPath(),C.arc(q.x,q.y,q.radius,
+q.start,q.end,q.ccw),C.lineTo(q.x,q.y),V(this[u],C,q),q.closed=A,X(this[u],C,q));return this};d.fn.drawLine=function l(d){var f,q,v,p,k,n;for(f=0;f<this.length;f+=1)if(q=K(this[f]))if(v=new L(d),O(this[f],v,d,l),v.visible){U(this[f],q,v);Q(this[f],q,v,0);p=1;for(q.beginPath();A;)if(k=v["x"+p],n=v["y"+p],k!==D&&n!==D)q.lineTo(k+v.x,n+v.y),p+=1;else break;p-=1;ha(this[f],q,v,v.x2+v.x,v.y2+v.y,v.x1+v.x,v.y1+v.y,v["x"+(p-1)]+v.x,v["y"+(p-1)]+v.y,v["x"+p]+v.x,v["y"+p]+v.y);V(this[f],q,v);X(this[f],q,v)}return this};
+d.fn.drawQuadratic=function u(f){var d,v,p,k,n,m,x,w;for(d=0;d<this.length;d+=1)if(v=K(this[d]))if(p=new L(f),O(this[d],p,f,u),p.visible){U(this[d],v,p);Q(this[d],v,p,0);k=2;v.beginPath();for(v.moveTo(p.x1+p.x,p.y1+p.y);A;)if(n=p["x"+k],m=p["y"+k],x=p["cx"+(k-1)],w=p["cy"+(k-1)],n!==D&&m!==D&&x!==D&&w!==D)v.quadraticCurveTo(x+p.x,w+p.y,n+p.x,m+p.y),k+=1;else break;k-=1;ha(this[d],v,p,p.cx1+p.x,p.cy1+p.y,p.x1+p.x,p.y1+p.y,p["cx"+(k-1)]+p.x,p["cy"+(k-1)]+p.y,p["x"+k]+p.x,p["y"+k]+p.y);V(this[d],v,p);
+X(this[d],v,p)}return this};d.fn.drawBezier=function C(d){var f,p,k,n,m,x,w,s,I,S,W;for(f=0;f<this.length;f+=1)if(p=K(this[f]))if(k=new L(d),O(this[f],k,d,C),k.visible){U(this[f],p,k);Q(this[f],p,k,0);n=2;m=1;p.beginPath();for(p.moveTo(k.x1+k.x,k.y1+k.y);A;)if(x=k["x"+n],w=k["y"+n],s=k["cx"+m],I=k["cy"+m],S=k["cx"+(m+1)],W=k["cy"+(m+1)],x!==D&&w!==D&&s!==D&&I!==D&&S!==D&&W!==D)p.bezierCurveTo(s+k.x,I+k.y,S+k.x,W+k.y,x+k.x,w+k.y),n+=1,m+=2;else break;n-=1;m-=2;ha(this[f],p,k,k.cx1+k.x,k.cy1+k.y,k.x1+
+k.x,k.y1+k.y,k["cx"+(m+1)]+k.x,k["cy"+(m+1)]+k.y,k["x"+n]+k.x,k["y"+n]+k.y);V(this[f],p,k);X(this[f],p,k)}return this};d.fn.drawVector=function q(f){var d,k,n,m,x,w,s,I,S,W,G,E;for(d=0;d<this.length;d+=1)if(k=K(this[d]))if(n=new L(f),O(this[d],n,f,q),n.visible){U(this[d],k,n);Q(this[d],k,n,0);m=1;k.beginPath();S=G=s=n.x;W=E=I=n.y;for(k.moveTo(n.x,n.y);A;)if(x=n["a"+m],w=n["l"+m],x!==D&&w!==D)x*=n._toRad,x-=M/2,S=G,W=E,G+=w*R(x),E+=w*T(x),1===m&&(s=G,I=E),k.lineTo(G,E),m+=1;else break;ha(this[d],k,
+n,s,I,n.x,n.y,S,W,G,E);V(this[d],k,n);X(this[d],k,n)}return this};d.fn.drawText=function v(p){var k,n,m,x,w,s,I;for(k=0;k<this.length;k+=1)if(d(this[k]),n=K(this[k]))if(m=new L(p),O(this[k],m,p,v),m.visible){U(this[k],n,m);n.textBaseline=m.baseline;n.textAlign=m.align;Ha(n,m);x=m.maxWidth!==f?Ja(n,m):m.text.toString().split("\n");Ia(this[k],n,m,x);p&&m.layer&&(p.width=m.width,p.height=m.height);Q(this[k],n,m,m.width,m.height);s=m.x;"left"===m.align?m.respectAlign?m.x+=m.width/2:s-=m.width/2:"right"===
+m.align&&(m.respectAlign?m.x-=m.width/2:s+=m.width/2);for(w=0;w<x.length;w+=1)n.shadowColor=m.shadowColor,I=m.y+w*m.height/x.length-(x.length-1)*m.height/x.length/2,n.fillText(x[w],s,I),"transparent"!==m.fillStyle&&(n.shadowColor="transparent"),n.strokeText(x[w],s,I);m._event&&(n.beginPath(),n.rect(m.x-m.width/2,m.y-m.height/2,m.width,m.height),V(this[k],n,m),n.closePath());m._transformed&&n.restore()}Z=m;return this};d.fn.measureText=function(d){var f,k;f=this.getLayer(d);if(!f||f&&!f._layer)f=new L(d);
+if(d=K(this[0]))Ha(d,f),k=Ja(d,f),Ia(this[0],d,f,k);return f};d.fn.drawImage=function p(k){function n(k,p,n,s,r,w){return function(){U(m[p],n,r);r.width===f&&r.sWidth===f&&(r.width=r.sWidth=G.width);r.height===f&&r.sHeight===f&&(r.height=r.sHeight=G.height);w&&(w.width=r.width,w.height=r.height);r.sWidth!==f&&r.sHeight!==f&&r.sx!==f&&r.sy!==f?(r.width===f&&(r.width=r.sWidth),r.height===f&&(r.height=r.sHeight),r.cropFromCenter||(r.sx+=r.sWidth/2,r.sy+=r.sHeight/2),0>r.sy-r.sHeight/2&&(r.sy=r.sHeight/
+2),r.sy+r.sHeight/2>G.height&&(r.sy=G.height-r.sHeight/2),0>r.sx-r.sWidth/2&&(r.sx=r.sWidth/2),r.sx+r.sWidth/2>G.width&&(r.sx=G.width-r.sWidth/2),Q(m[p],n,r,r.width,r.height),n.drawImage(G,r.sx-r.sWidth/2,r.sy-r.sHeight/2,r.sWidth,r.sHeight,r.x-r.width/2,r.y-r.height/2,r.width,r.height)):(Q(m[p],n,r,r.width,r.height),n.drawImage(G,r.x-r.width/2,r.y-r.height/2,r.width,r.height));n.beginPath();n.rect(r.x-r.width/2,r.y-r.height/2,r.width,r.height);V(m[p],n,r);n.closePath();r._transformed&&n.restore();
+ua(n,s,r);r.load&&r.load.call(k,w);r.layer&&(r._args._masks=s.transforms.masks.slice(0),r._next&&d(k).drawLayers({clear:E,resetFire:A,index:r._next}))}}var m=this,x,w,s,I,S,W,G,M,J;for(w=0;w<m.length;w+=1)if(x=m[w],s=K(m[w]))I=P(m[w]),S=new L(k),W=O(m[w],S,k,p),S.visible&&(J=S.source,M=J.getContext,J.src||M?G=J:J&&(ra[J]!==D?G=ra[J]:(G=new sa,G.src=J,ra[J]=G)),G&&(G.complete||M?n(x,w,s,I,S,W)():(d(G).bind("load",n(x,w,s,I,S,W)),G.src=G.src)));return m};d.fn.createPattern=function(p){function k(){s=
+m.createPattern(w,x.repeat);x.load&&x.load.call(n[0],s)}var n=this,m,x,w,s,I;(m=K(n[0]))?(x=new L(p),I=x.source,$(I)?(w=d("<canvas />")[0],w.width=x.width,w.height=x.height,p=K(w),I.call(w,p),k()):(p=I.getContext,I.src||p?w=I:(w=new sa,w.src=I),w.complete||p?k():(d(w).bind("load",k),w.src=w.src))):s=f;return s};d.fn.createGradient=function(d){var k,n=[],m,x,w,s,I,A,E;d=new L(d);if(k=K(this[0])){d.x1=d.x1||0;d.y1=d.y1||0;d.x2=d.x2||0;d.y2=d.y2||0;k=d.r1!==f||d.r2!==f?k.createRadialGradient(d.x1,d.y1,
+d.r1,d.x2,d.y2,d.r2):k.createLinearGradient(d.x1,d.y1,d.x2,d.y2);for(s=1;d["c"+s]!==D;s+=1)d["s"+s]!==D?n.push(d["s"+s]):n.push(f);m=n.length;n[0]===f&&(n[0]=0);n[m-1]===f&&(n[m-1]=1);for(s=0;s<m;s+=1){if(n[s]!==f){A=1;E=0;x=n[s];for(I=s+1;I<m;I+=1)if(n[I]!==f){w=n[I];break}else A+=1;x>w&&(n[I]=n[s])}else n[s]===f&&(E+=1,n[s]=x+(w-x)/A*E);k.addColorStop(n[s],d["c"+(s+1)])}}else k=f;return k};d.fn.setPixels=function k(d){var m,x,w,s,A,E,D,G,J;for(x=0;x<this.length;x+=1)if(m=this[x],w=K(m)){s=new L(d);
+O(m,s,d,k);Q(this[x],w,s,s.width,s.height);if(s.width===f||s.height===f)s.width=m.width,s.height=m.height,s.x=s.width/2,s.y=s.height/2;if(0!==s.width&&0!==s.height){E=w.getImageData(s.x-s.width/2,s.y-s.height/2,s.width,s.height);D=E.data;J=D.length;if(s.each)for(G=0;G<J;G+=4)A={r:D[G],g:D[G+1],b:D[G+2],a:D[G+3]},s.each.call(m,A,s),D[G]=A.r,D[G+1]=A.g,D[G+2]=A.b,D[G+3]=A.a;w.putImageData(E,s.x-s.width/2,s.y-s.height/2);w.restore()}}return this};d.fn.getCanvasImage=function(d,n){var m=this[0];n===D&&
+(n=1);return m&&m.toDataURL?m.toDataURL("image/"+d,n):f};d.fn.detectPixelRatio=function(f){var n,m,x,w,s,D,E;for(m=0;m<this.length;m+=1)n=this[m],d(this[m]),x=K(n),E=P(this[m]),E.scaled||(w=window.devicePixelRatio||1,s=x.webkitBackingStorePixelRatio||x.mozBackingStorePixelRatio||x.msBackingStorePixelRatio||x.oBackingStorePixelRatio||x.backingStorePixelRatio||1,w/=s,1!==w&&(s=n.width,D=n.height,n.width=s*w,n.height=D*w,n.style.width=s+"px",n.style.height=D+"px",x.scale(w,w)),E.pixelRatio=w,E.scaled=
+A,f&&f.call(n,w));return this};d.support.canvas=d("<canvas />")[0].getContext;J.defaults=ia;J.transformShape=Q;J.detectEvents=V;J.closePath=X;J.getTouchEventName=Aa;d.jCanvas=J})(jQuery,document,Image,Math,parseFloat,!0,!1,null);

+ 23 - 0
js/jquery.json-2.3.min.js

@@ -0,0 +1,23 @@
+
+(function($){var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.toJSON=typeof JSON==='object'&&JSON.stringify?JSON.stringify:function(o){if(o===null){return'null';}
+var type=typeof o;if(type==='undefined'){return undefined;}
+if(type==='number'||type==='boolean'){return''+o;}
+if(type==='string'){return $.quoteString(o);}
+if(type==='object'){if(typeof o.toJSON==='function'){return $.toJSON(o.toJSON());}
+if(o.constructor===Date){var month=o.getUTCMonth()+1,day=o.getUTCDate(),year=o.getUTCFullYear(),hours=o.getUTCHours(),minutes=o.getUTCMinutes(),seconds=o.getUTCSeconds(),milli=o.getUTCMilliseconds();if(month<10){month='0'+month;}
+if(day<10){day='0'+day;}
+if(hours<10){hours='0'+hours;}
+if(minutes<10){minutes='0'+minutes;}
+if(seconds<10){seconds='0'+seconds;}
+if(milli<100){milli='0'+milli;}
+if(milli<10){milli='0'+milli;}
+return'"'+year+'-'+month+'-'+day+'T'+
+hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
+if(o.constructor===Array){var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i])||'null');}
+return'['+ret.join(',')+']';}
+var name,val,pairs=[];for(var k in o){type=typeof k;if(type==='number'){name='"'+k+'"';}else if(type==='string'){name=$.quoteString(k);}else{continue;}
+type=typeof o[k];if(type==='function'||type==='undefined'){continue;}
+val=$.toJSON(o[k]);pairs.push(name+':'+val);}
+return'{'+pairs.join(',')+'}';}};$.evalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(src){return eval('('+src+')');};$.secureEvalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(src){var filtered=src.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered)){return eval('('+src+')');}else{throw new SyntaxError('Error parsing JSON, source is not valid.');}};$.quoteString=function(string){if(string.match(escapeable)){return'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
+c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
+return'"'+string+'"';};})(jQuery);

+ 3 - 0
js/jquery.jsonp-2.4.0.min.js

@@ -0,0 +1,3 @@
+// jquery.jsonp 2.4.0 (c)2012 Julian Aubourg | MIT License
+// https://github.com/jaubourg/jquery-jsonp
+(function(e){function t(){}function n(e){C=[e]}function r(e,t,n){return e&&e.apply&&e.apply(t.context||t,n)}function i(e){return/\?/.test(e)?"&":"?"}function O(c){function Y(e){z++||(W(),j&&(T[I]={s:[e]}),D&&(e=D.apply(c,[e])),r(O,c,[e,b,c]),r(_,c,[c,b]))}function Z(e){z++||(W(),j&&e!=w&&(T[I]=e),r(M,c,[c,e]),r(_,c,[c,e]))}c=e.extend({},k,c);var O=c.success,M=c.error,_=c.complete,D=c.dataFilter,P=c.callbackParameter,H=c.callback,B=c.cache,j=c.pageCache,F=c.charset,I=c.url,q=c.data,R=c.timeout,U,z=0,W=t,X,V,J,K,Q,G;return S&&S(function(e){e.done(O).fail(M),O=e.resolve,M=e.reject}).promise(c),c.abort=function(){!(z++)&&W()},r(c.beforeSend,c,[c])===!1||z?c:(I=I||u,q=q?typeof q=="string"?q:e.param(q,c.traditional):u,I+=q?i(I)+q:u,P&&(I+=i(I)+encodeURIComponent(P)+"=?"),!B&&!j&&(I+=i(I)+"_"+(new Date).getTime()+"="),I=I.replace(/=\?(&|$)/,"="+H+"$1"),j&&(U=T[I])?U.s?Y(U.s[0]):Z(U):(E[H]=n,K=e(y)[0],K.id=l+N++,F&&(K[o]=F),L&&L.version()<11.6?(Q=e(y)[0]).text="document.getElementById('"+K.id+"')."+p+"()":K[s]=s,A&&(K.htmlFor=K.id,K.event=h),K[d]=K[p]=K[v]=function(e){if(!K[m]||!/i/.test(K[m])){try{K[h]&&K[h]()}catch(t){}e=C,C=0,e?Y(e[0]):Z(a)}},K.src=I,W=function(e){G&&clearTimeout(G),K[v]=K[d]=K[p]=null,x[g](K),Q&&x[g](Q)},x[f](K,J=x.firstChild),Q&&x[f](Q,J),G=R>0&&setTimeout(function(){Z(w)},R)),c)}var s="async",o="charset",u="",a="error",f="insertBefore",l="_jqjsp",c="on",h=c+"click",p=c+a,d=c+"load",v=c+"readystatechange",m="readyState",g="removeChild",y="<script>",b="success",w="timeout",E=window,S=e.Deferred,x=e("head")[0]||document.documentElement,T={},N=0,C,k={callback:l,url:location.href},L=E.opera,A=!!e("<div>").html("<!--[if IE]><i><![endif]-->").find("i").length;O.setup=function(t){e.extend(k,t)},e.jsonp=O})(jQuery)

+ 8 - 0
js/jquery.jstorage.js

@@ -0,0 +1,8 @@
+(function(g){function m(){if(e.jStorage)try{c=n(""+e.jStorage)}catch(a){e.jStorage="{}"}else e.jStorage="{}";j=e.jStorage?(""+e.jStorage).length:0}function h(){try{e.jStorage=o(c),d&&(d.setAttribute("jStorage",e.jStorage),d.save("jStorage")),j=e.jStorage?(""+e.jStorage).length:0}catch(a){}}function i(a){if(!a||"string"!=typeof a&&"number"!=typeof a)throw new TypeError("Key name must be string or numeric");if("__jstorage_meta"==a)throw new TypeError("Reserved key name");return!0}function k(){var a,
+b,d,e=Infinity,f=!1;clearTimeout(p);if(c.__jstorage_meta&&"object"==typeof c.__jstorage_meta.TTL){a=+new Date;d=c.__jstorage_meta.TTL;for(b in d)d.hasOwnProperty(b)&&(d[b]<=a?(delete d[b],delete c[b],f=!0):d[b]<e&&(e=d[b]));Infinity!=e&&(p=setTimeout(k,e-a));f&&h()}}if(!g||!g.toJSON&&!Object.toJSON&&!window.JSON)throw Error("jQuery, MooTools or Prototype needs to be loaded before jStorage!");var c={},e={jStorage:"{}"},d=null,j=0,o=g.toJSON||Object.toJSON||window.JSON&&(JSON.encode||JSON.stringify),
+n=g.evalJSON||window.JSON&&(JSON.decode||JSON.parse)||function(a){return(""+a).evalJSON()},f=!1,p,l={isXML:function(a){return(a=(a?a.ownerDocument||a:0).documentElement)?"HTML"!==a.nodeName:!1},encode:function(a){if(!this.isXML(a))return!1;try{return(new XMLSerializer).serializeToString(a)}catch(b){try{return a.xml}catch(c){}}return!1},decode:function(a){var b="DOMParser"in window&&(new DOMParser).parseFromString||window.ActiveXObject&&function(a){var b=new ActiveXObject("Microsoft.XMLDOM");b.async=
+"false";b.loadXML(a);return b};if(!b)return!1;a=b.call("DOMParser"in window&&new DOMParser||window,a,"text/xml");return this.isXML(a)?a:!1}};g.jStorage={version:"0.1.6.1",set:function(a,b){i(a);if(l.isXML(b))b={_is_xml:!0,xml:l.encode(b)};else{if("function"==typeof b)return;b&&"object"==typeof b&&(b=n(o(b)))}c[a]=b;h();return b},get:function(a,b){i(a);return a in c?c[a]&&"object"==typeof c[a]&&c[a]._is_xml&&c[a]._is_xml?l.decode(c[a].xml):c[a]:"undefined"==typeof b?null:b},deleteKey:function(a){i(a);
+return a in c?(delete c[a],c.__jstorage_meta&&"object"==typeof c.__jstorage_meta.TTL&&a in c.__jstorage_meta.TTL&&delete c.__jstorage_meta.TTL[a],h(),!0):!1},setTTL:function(a,b){var d=+new Date;i(a);b=Number(b)||0;if(a in c){if(!c.__jstorage_meta)c.__jstorage_meta={};if(!c.__jstorage_meta.TTL)c.__jstorage_meta.TTL={};0<b?c.__jstorage_meta.TTL[a]=d+b:delete c.__jstorage_meta.TTL[a];h();k();return!0}return!1},flush:function(){c={};h();return!0},storageObj:function(){function a(){}a.prototype=c;return new a},
+index:function(){var a=[],b;for(b in c)c.hasOwnProperty(b)&&"__jstorage_meta"!=b&&a.push(b);return a},storageSize:function(){return j},currentBackend:function(){return f},storageAvailable:function(){return!!f},reInit:function(){var a;if(d&&d.addBehavior){a=document.createElement("link");d.parentNode.replaceChild(a,d);d=a;d.style.behavior="url(#default#userData)";document.getElementsByTagName("head")[0].appendChild(d);d.load("jStorage");a="{}";try{a=d.getAttribute("jStorage")}catch(b){}e.jStorage=
+a;f="userDataBehavior"}m()}};(function(){var a=!1;if("localStorage"in window)try{window.localStorage.setItem("_tmptest","tmpval"),a=!0,window.localStorage.removeItem("_tmptest")}catch(b){}if(a)try{if(window.localStorage)e=window.localStorage,f="localStorage"}catch(c){}else if("globalStorage"in window)try{window.globalStorage&&(e=window.globalStorage[window.location.hostname],f="globalStorage")}catch(g){}else if(d=document.createElement("link"),d.addBehavior){d.style.behavior="url(#default#userData)";
+document.getElementsByTagName("head")[0].appendChild(d);d.load("jStorage");a="{}";try{a=d.getAttribute("jStorage")}catch(h){}e.jStorage=a;f="userDataBehavior"}else{d=null;return}m();k()})()})(window.jQuery||window.$);

+ 15 - 0
js/jquery.slimScroll.min.js

@@ -0,0 +1,15 @@
+
+/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ *
+ * Version: 0.6.5
+ * 
+ */
+(function(d){jQuery.fn.extend({slimScroll:function(m){var a=d.extend({wheelStep:20,width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:0.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:"0.2",railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,scroll:0,touchScrollStep:200},m);this.each(function(){function e(i,d,e){var f=i;d&&(f=parseInt(c.css("top"))+i*parseInt(a.wheelStep)/
+100*c.outerHeight(),d=b.outerHeight()-c.outerHeight(),f=Math.min(Math.max(f,0),d),c.css({top:f+"px"}));g=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());f=g*(b[0].scrollHeight-b.outerHeight());e&&(f=i,i=f/b[0].scrollHeight*b.outerHeight(),c.css({top:i+"px"}));b.scrollTop(f);n();j()}function t(){p=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),m);c.css({height:p+"px"})}function n(){t();clearTimeout(u);g==~~g&&(k=a.allowPageScroll,v!=g&&b.trigger("slimscroll",0==~~g?"top":"bottom"));
+v=g;p>=b.outerHeight()?k=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&h.stop(!0,!0).fadeIn("fast"))}function j(){a.alwaysVisible||(u=setTimeout(function(){if((!a.disableFadeOut||!l)&&!q&&!r)c.fadeOut("slow"),h.fadeOut("slow")},1E3))}var l,q,r,u,w,p,g,v,m=30,k=!1,b=d(this);if(b.parent().hasClass("slimScrollDiv"))scroll&&(c=b.parent().find(".slimScrollBar"),h=b.parent().find(".slimScrollRail"),e(b.scrollTop()+parseInt(scroll),!1,!0));else{var y=d("<div></div>").addClass(a.wrapperClass).css({position:"relative",
+overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var h=d("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.size,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=d("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none",
+"border-radius":a.size,BorderRadius:a.size,MozBorderRadius:a.size,WebkitBorderRadius:a.size,zIndex:99}),x="right"==a.position?{right:a.distance}:{left:a.distance};h.css(x);c.css(x);b.wrap(y);b.parent().append(c);b.parent().append(h);c.draggable({axis:"y",containment:"parent",start:function(){r=!0},stop:function(){r=!1;j()},drag:function(){e(0,d(this).position().top,!1)}});h.hover(function(){n()},function(){j()});c.hover(function(){q=!0},function(){q=!1});b.hover(function(){l=!0;n();j()},function(){l=
+!1;j()});b.bind("touchstart",function(a){a.originalEvent.touches.length&&(w=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){b.originalEvent.preventDefault();b.originalEvent.touches.length&&e((w-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0)});var s=function(a){if(l){var a=a||window.event,b=0;a.wheelDelta&&(b=-a.wheelDelta/120);a.detail&&(b=a.detail/3);e(b,!0);a.preventDefault&&!k&&a.preventDefault();k||(a.returnValue=!1)}};(function(){window.addEventListener?(this.addEventListener("DOMMouseScroll",
+s,!1),this.addEventListener("mousewheel",s,!1)):document.attachEvent("onmousewheel",s)})();t();"bottom"==a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),e(0,!0)):"object"==typeof a.start&&(e(d(a.start).position().top,null,!0),a.alwaysVisible||c.hide())}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery);

+ 610 - 0
js/lodlive.app.js

@@ -0,0 +1,610 @@
+$(function() {
+
+	var spriteHome = 'spriteHome';
+	if ($.jStorage.get('selectedLanguage') == 'en') {
+		spriteHome = 'spriteHomeEn';
+	} else if ($.jStorage.get('selectedLanguage') == 'fr') {
+		spriteHome = 'spriteHomeFr';
+	} else if ($.jStorage.get('selectedLanguage') == 'gl') {
+		spriteHome = 'spriteHomeEn';
+	}
+
+	function myAlert(msg) {
+		var alert = $('<div class="myalert ' + spriteHome + '"><div>' + msg + '</div></div>');
+		alert.click(function() {
+			$(this).remove();
+		});
+		if ($('.myalert').length > 0) {
+			$('.myalert').remove();
+		}
+		$('body').append(alert);
+		alert.css({
+			top : $(window).height() / 2 + $('body').scrollTop()
+		});
+	}
+
+	var nextSpeed = 500;
+	var fadeSpeed = 100;
+	var loca = $(location).attr('search');
+    var hash = $(location).attr('hash');
+	if (loca) {
+		$("#startPanel").remove();
+		$(".paginator").remove();
+		$("#footer").remove();
+		$("#lang").remove();
+		$('body').append('<div id="aSpace"></div>');
+		var res = $.trim(loca.substring(loca.indexOf("?") + 1));
+		if (hash) res += hash;
+		res = res.replace(/%2F/g, '/');
+		res = res.replace(/%3A/g, ':');
+		res = res.replace(/%23/g, '#');
+		$("#aSpace").lodlive('init', res);
+	} else {
+		var boxesLength = 0;
+		$.each($.jStorage.get('profile').connection, function(key, value) {
+			boxesLength++;
+		});
+		var selBox = (boxesLength + 1) * 310;
+		var pag = (selBox / 930 + "").indexOf(".") > 0 ? parseInt(selBox / 930 + "".replace(/\.[0-9]*/, '')) + 1 : selBox / 930;
+		$('#boxesCont').width((pag) * 930);
+		$('#nextPage,#prevPage').click(function() {
+			var boxes = $('#boxesCont').not(':animated');
+			var next = $(this).attr("id") == 'nextPage';
+			if (boxes.length == 1) {
+				$('.hdPage:visible').hide();
+				$('.selectionList').remove();
+				var props = {};
+				var marginLeft = parseInt(boxes.css("marginLeft").replace(/px/g, ''), 10);
+				if (next) {
+					props = {
+						marginLeft : (-930 + marginLeft) + "px"
+					};
+					if (marginLeft == 0) {
+						$('#prevPage:hidden').fadeIn('fast');
+					} else if ($('#boxesCont').css('marginLeft').replace(/[-px]/g, '') == (pag - 2) * 930) {
+						$('#nextPage:visible').fadeOut('fast');
+					}
+				} else {
+					props = {
+						marginLeft : (930 + marginLeft) + "px"
+					};
+					if (marginLeft == -930) {
+						$('#prevPage:visible').fadeOut('fast');
+					} else {
+						$('#nextPage:hidden').fadeIn('fast');
+					}
+				}
+				boxes.fadeTo(fadeSpeed, 0.8, function() {
+					boxes.animate(props, nextSpeed, function() {
+						boxes.fadeTo(fadeSpeed, 1, function() {
+							nextSpeed = 500;
+							fadeSpeed = 100;
+						});
+					});
+				});
+			}
+		});
+		var formTemplate = '<form><div class="select"><span>' + lang('choose') + '</span><span class="' + spriteHome + ' arrow"></span></div><div class="input"><input type="text" name="startFrom" value="" readonly="readonly"/></div></form>';
+
+		$.each($.jStorage.get('profile').connection, function(key, value) {
+			var examples = value.examples;
+			// index++;
+			var aBox = $('<div class="startBox ' + spriteHome + '" rel="' + key + '"><h1><span>' + key.replace(/,.*/g, '').replace(/http:\/\//gi, '') + '</span><span class="' + spriteHome + ' info"></span></h1></div>');
+			$('#startPanel').children('#boxes').children('#boxesCont').append(aBox);
+			var descr = value.description[$.jStorage.get('selectedLanguage')];
+			if (!descr) {
+				descr = value.description['en'];
+			}
+			var descrBox = $('<div class="startBox infoHome hdPage" rel="' + key + '"><h1><span>' + key.replace(/,.*/g, '').replace(/http:\/\//gi, '') + '</span></h1><p>' + descr + '</p></div>');
+			$('#startPanel').children('#boxes').children('#boxesCont').append(descrBox);
+			var form = $(formTemplate);
+			aBox.append(form);
+
+			aBox.children('h1').children('span').click(function() {
+				descrBox.css({
+					position : 'absolute',
+					top : aBox.position().top,
+					left : aBox.position().left
+				});
+				descrBox.fadeIn('fast');
+				if ($('div.selectionList', form).length > 0) {
+					form.find('div.select').click();
+				}
+			});
+			descrBox.click(function() {
+				descrBox.fadeOut('fast');
+			});
+			form.bind('submit', function() {
+				var value = $(this).find('input[name=startFrom]').val();
+				if (value != '') {
+					document.location = '?' + $.trim(value);
+				} else {
+					myAlert(lang('impostaUnaURI'));
+				}
+				return false;
+			});
+			form.find('div.select').click(function() {
+				if ($(this).data('show')) {
+					$('div.selectionList', form).remove();
+					$(this).data('show', false);
+				} else {
+					$(this).data('show', true);
+					var ele = $(this);
+					var jExemples = $('<div class="selectionList"></div>');
+					form.append(jExemples);
+					jExemples.append('<div class="selectEle" rel="inserisci"><span>' + lang('addUri') + '</span></div>');
+					jExemples.append('<div class="selectEle" rel="cerca"><span>' + lang('findResource') + '</span></div>');
+					if (examples) {
+						for (var a = 0; a < examples.length; a++) {
+							jExemples.append('<div class="selectEle" rel="' + examples[a].uri + '"><span>' + lang('example') + ' - ' + examples[a].label + '</span></div>');
+						}
+					}
+					jExemples.hover(function() {
+					}, function() {
+						ele.click();
+					});
+					form.find('.selectEle').click(function() {
+						ele.click();
+						var label = $(this).attr('rel');
+						if (label == 'cerca') {
+							form.parent().setBackgroundPosition({
+								y : -320
+							});
+							if ($('div.cerca', form).length == 0) {
+								var cerca = $('<div class="cerca"><div class="select"><span>' + lang('choose') + '</span><span class="' + spriteHome + ' arrow"></span></div><div class="inputClass"><input type="text" name="classFrom" value="" readonly="readonly"/></div></div>');
+								form.find('input[name=startFrom]').val('').attr('readonly', 'readonly').css({
+									background : '#bdbdbd',
+									color : '#575757'
+								}).parent().css({
+									background : '#bdbdbd'
+								}).before(cerca);
+								form.find('.inviaForm').attr("style", 'top: 20px;');
+
+								var jClasses = $('<div class="selectionList" style="display:none"></div>');
+								var template = '<div class="selectEle" ><span>{CONTENT}</span></div>';
+								$("#aSpace").lodlive('allClasses', form.parent().attr('rel'), cerca.find('div.select > span:first'), jClasses, template);
+
+								cerca.find('div.select').click(function() {
+									if ($(this).data('show')) {
+
+										$('.slimScrollDiv', cerca).remove();
+										// $('div.selectionList', cerca).remove();
+
+										$(this).data('show', false);
+									} else {
+										$(this).data('show', true);
+
+										cerca.append(jClasses);
+										var ele2 = $(this);
+										cerca.find('.selectEle').click(function() {
+											ele2.click();
+											var label = $(this).text();
+											ele2.find('span:first').text(label);
+											cerca.find('input[name=classFrom]').val('').removeAttr('readonly').css({
+												background : '#fff',
+												color : '#000'
+											}).focus().parent().css({
+												background : '#fff'
+											});
+										});
+										var invia2 = $('<div class="inviaForm2"></div>');
+										if (cerca.find('.inviaForm2').length != 0) {
+											cerca.find('.inviaForm2').remove();
+										}
+										invia2.click(function() {
+											$("#aSpace").lodlive('findSubject', form.parent().attr('rel'), "http://" + ele2.find('span:first').text(), cerca.find('input[name=classFrom]').val(), form.find('input[name=startFrom]'), form.find('input[name=startFrom]'));
+										});
+										cerca.append(invia2);
+										invia2.hover(function() {
+											cerca.parent().parent().setBackgroundPosition({
+												x : -630
+											});
+										}, function() {
+											cerca.parent().parent().setBackgroundPosition({
+												x : -10
+											});
+										});
+										$('.slimScrollDiv', cerca).remove();
+										jClasses.css({
+											display : 'block'
+										});
+										jClasses.slimScroll({
+											height : 8 * 20,
+											width : 260,
+											color : '#000'
+										});
+										$('.slimScrollDiv', cerca).css({
+											position : 'absolute',
+											display : 'block',
+											left : ele2.position().left,
+											top : ele2.position().top + 60
+										});
+										$('.slimScrollDiv', cerca).hover(function() {
+										}, function() {
+											ele2.click();
+										});
+									}
+								});
+							}
+						} else if (label == 'inserisci') {
+							form.find('input[name=startFrom]').val('').removeAttr('readonly').css({
+								background : '#fff',
+								color : '#575757'
+							}).focus().parent().css({
+								background : '#fff'
+							});
+							$('.cerca', form).remove();
+							form.find('.inviaForm').attr("style", '');
+							form.parent().setBackgroundPosition({
+								y : -10
+							});
+						} else {
+							form.find('input[name=startFrom]').attr('readonly', 'readonly').css({
+								background : '#bdbdbd',
+								color : '#575757'
+							}).val(label).parent().css({
+								background : '#bdbdbd'
+							});
+							$('.cerca', form).remove();
+							form.find('.inviaForm').attr("style", '');
+							form.parent().setBackgroundPosition({
+								y : -10
+							});
+						}
+						form.find('div.select > span:first').text($(this).find('span').text());
+					});
+					jExemples.css({
+						position : 'absolute',
+						zIndex : '9999',
+						left : ele.position().left,
+						top : ele.position().top + 60
+					});
+				}
+			});
+			var invia = $('<div class="inviaForm"></div>');
+			invia.click(function() {
+				form.submit();
+			});
+			form.append(invia);
+			invia.hover(function() {
+				$(this).parent().parent().setBackgroundPosition({
+					x : -320
+				});
+			}, function() {
+				$(this).parent().parent().setBackgroundPosition({
+					x : -10
+				});
+			});
+		});
+
+		var firstLine = $('#firstLineBoxes');
+		liveOnlodLive($('#startPanel').children('#boxes').children('#boxesCont'));
+
+		orangeBox(firstLine, formTemplate);
+		blueBox(firstLine, formTemplate);
+		//firstLine.append('<div class="startBox ' + spriteHome + '" id="boxV"><h1><span>' + lang('insertData') + '</span><span class="' + spriteHome + ' info"></span></h1></div>');
+
+		$('#menu').find('a[href^=#]').click(function() {
+			var text = $('<div class="text ' + spriteHome + '"><h3>' + $(this).text() + '</h3><div class="padding">' + $($(this).attr("href")).children('p').html() + '</div></div>');
+			text.click(function() {
+				$(this).remove();
+			});
+			if ($('.text').length > 0) {
+				$('.text').remove();
+			}
+			$('body').append(text);
+			return false;
+		});
+
+	}
+	if (!$.support.canvas) {
+		myAlert(lang('noIe'));
+	}
+	function showDescrBox(aBox, descrBox) {
+		aBox.children('h1').children('span').click(function() {
+			descrBox.css({
+				position : 'absolute',
+				top : aBox.position().top,
+				left : aBox.position().left
+			});
+			descrBox.fadeIn('fast');
+			if ($('div.selectionList', form).length > 0) {
+				form.find('div.select').click();
+			}
+		});
+		descrBox.click(function() {
+			descrBox.fadeOut('fast');
+		});
+	}
+
+	function addSubmit(form) {
+		var invia = $('<div class="inviaForm"></div>');
+		invia.click(function() {
+			form.submit();
+		});
+		form.append(invia);
+		invia.hover(function() {
+			$(this).parent().parent().setBackgroundPosition({
+				x : -320
+			});
+		}, function() {
+			$(this).parent().parent().setBackgroundPosition({
+				x : -10
+			});
+		});
+		form.bind('submit', function() {
+			var value = $(this).find('*[name=startFrom]').val();
+			if (value != '') {
+				document.location = '?' + $.trim(value);
+			} else {
+				myAlert(lang('impostaUnaURI'));
+			}
+			return false;
+		});
+	}
+
+	function blueBox(firstLine, formTemplate) {
+		var aBox = $('<div class="startBox textBox"><h1>LodLive per </h1><img src="img/logoRestore.png" style="width:100px; margin-top:10px;"/> \
+		<p>Questa è l\'istanza di LodLive del progetto RESTORE. Qui potrai consultare le risorse sottoforma di grafi \
+		e esplorarne i collegamenti attraverso le proprietà. Puoi inserire il link di una risorsa \
+		che hai visualizzato sul sito nel box qui a fianco e lanciare LodLive per esplorare le sue relazioni. <br /> \
+		Per iniziare prova a copiare nel box a fianco uno dei seguenti link di esempio e lancia la ricerca: \
+		<ul><li><b>Margherita di Domenico Bandini</b>: http://www.archiviodistato.prato.it/accedi-e-consulta/aspoMV001/scheda/IT-ASPO-AU00003-0003474 </li>\
+		<li><b>Baliatico XX dal anno 1786 al 1803</b>: http://www.archiviodistato.prato.it/accedi-e-consulta/aspoSt005/scheda/IT-ASPO-ST00005-0005820 </li></ul>\
+		</p></div><div class="startBox ' + spriteHome + '" id="boxB"><h1><span>' + lang('insertUri') + '</span><span class="' + spriteHome + ' info"></span></div>');
+		firstLine.append(aBox);
+		var descrBox = $('<div class="startBox infoHome hdPage" ><h1><span>' + lang('insertUri') + '</span></h1><p>' + lang('insertUriDescription') + '</p></div>');
+		firstLine.append(descrBox);
+		showDescrBox(aBox, descrBox);
+		var form = $(formTemplate);
+		var input = form.find('div.input');
+		var textarea = $("<div class=\"input textarea\"><textarea name=\"startFrom\"></textarea></div>");
+		input.before(textarea);
+		input.remove();
+
+		form.children('.select').remove();
+		form.find('input').attr("readonly", false);
+		firstLine.children('#boxB').append(form);
+		addSubmit(form);
+		form.find('.inviaForm').attr("style", 'top: 138px');
+	}
+
+	function liveOnlodLive(dest) {
+		var aBox = $('<div class="startBox exampleBox endpList"><h1>Esempi</h1><h2>Seleziona un esempio tra quelli proposti per iniziare</h2></div>');
+		dest.prepend(aBox);
+		var form = $('<form><div class="select"><span>' + lang('choose') + '</span><span class="' + spriteHome + ' arrow"></span></div></form>');
+		//aBox.append(form);
+
+		aBox.find('div.select').click(function() {
+			if ($(this).data('show')) {
+				$(this).data('show', false);
+				$('.slimScrollDiv', form).remove();
+			} else {
+				$(this).data('show', true);
+				var ele = $(this);
+				var jEndpoints = $('<div class="selectionList"></div>');
+
+				$.each($.jStorage.get('profile').connection, function(key, value) {
+					jEndpoints.append('<div class="selectEle" rel="' + key + '"><span>' + key.replace(/,.*/g, '').replace(/http:\/\//gi, '') + '</span></div>');
+				});
+
+				form.append(jEndpoints);
+				jEndpoints.css({
+					left : ele.position().left
+				});
+				form.find('.selectEle').click(function() {
+					ele.click();
+					var label = $(this).attr('rel');
+					var selBox = $("div[rel='" + label + "'].startBox:first").position().left + 310;
+					var pag = (selBox / 930 + "").indexOf(".") > 0 ? parseInt(selBox / 930 + "".replace(/\.[0-9]*/, '')) + 1 : selBox / 930;
+					for (var a = 0; a < pag - 1; a++) {
+						$.doTimeout(205 * a, function() {
+							nextSpeed = 0;
+							fadeSpeed = 0;
+							$("#nextPage").click();
+						});
+					}
+				});
+				$('.slimScrollDiv', form).remove();
+				jEndpoints.css({
+					display : 'block'
+				});
+				jEndpoints.slimScroll({
+					height : 5 * 20,
+					width : 200,
+					color : '#000'
+				});
+				$('.slimScrollDiv', form).css({
+					position : 'absolute',
+					display : 'block',
+					zIndex : '9999',
+					left : ele.position().left,
+					top : ele.position().top + 280
+				});
+				$('.slimScrollDiv', form).hover(function() {
+				}, function() {
+					aBox.find('div.select').click();
+				});
+
+			}
+		})
+	}
+
+	function orangeBox(firstLine, formTemplate) {
+		var aBox = $('<div class="startBox ' + spriteHome + '" id="boxO"><h1><span>' + lang('simpleSearch') + '</span><span class="' + spriteHome + ' info"></span></h1></div>');
+		firstLine.append(aBox);
+		var descrBox = $('<div class="startBox infoHome hdPage" ><h1><span>' + lang('simpleSearch') + '</span></h1><p>' + lang('simpleSearchDescription') + '</p></div>');
+		firstLine.append(descrBox);
+		showDescrBox(aBox, descrBox);
+
+		var form = $(formTemplate);
+		firstLine.children('#boxO').append(form);
+
+		form.children('.input').before($('<div class="inputClass"><input type="text" name="classFrom" value="" readonly="readonly"></div>'));
+
+		form.find('div.select').click(function() {
+			if ($(this).data('show')) {
+				$(this).data('show', false);
+				$('div.selectionList', form).remove();
+			} else {
+				$(this).data('show', true);
+				var ele = $(this);
+				var jEndpoints = $('<div class="selectionList"></div>');
+				jEndpoints.append('<div class="selectEle" rel="dbpedia"><span>dbpedia.org</span></div>');
+				jEndpoints.append('<div class="selectEle" rel="freebase"><span>freebase.com</span></div>');
+				jEndpoints.hover(function() {
+				}, function() {
+					ele.click();
+				});
+				form.append(jEndpoints);
+				jEndpoints.css({
+					position : 'absolute',
+					zIndex : '9999',
+					left : ele.position().left,
+					top : ele.position().top + 60
+				});
+				form.find('.selectEle').click(function() {
+					ele.click();
+					var label = $(this).attr('rel');
+					var ele2 = form.find('input[name=classFrom]');
+					ele2.unbind('focus');
+					ele2.unbind('keyup');
+					ele2.val('').removeAttr('readonly').css({
+						background : '#fff',
+						color : '#975E1C'
+					}).focus().parent().css({
+						background : '#fff'
+					});
+					var invia2 = $('<div class="inviaForm2" style="display:none"></div>');
+					var cerca = form.find('.inputClass');
+					var timer = null;
+					ele2.keyup(function() {
+						if ($(this).val().length > 0) {
+							clearTimeout(timer);
+							timer = setTimeout(function() {
+								invia2.click();
+							}, 250);
+						}
+					});
+					ele2.focus(function() {
+						form.find('.selectionList').remove();
+						invia2.click();
+					});
+					invia2.click(function() {
+						form.find('.selectionList').remove();
+						if (ele2.val().length > 0) {
+							form.children('div.input').children('img').remove();
+							form.children('div.input').prepend('<img src="img/ajax-loader-white.gif" style="margin-left:6px;margin-top:2px"/>');
+							var results = [];
+							results = findConcept(label, ele2.val(), function() {
+								form.children('div.input').children('img').remove();
+								var jClasses = $('<div class="selectionList"></div>');
+								for (var int = 0; int < results.length; int++) {
+									var row = results[int];
+									jClasses.append('<div class="selectEle" ><span title="' + decodeURIComponent(row.uri) + '">' + row.label + '</span></div>');
+								}
+								form.append(jClasses);
+								jClasses.find('span').click(function() {
+									ele2.val($(this).text());
+									form.find('input[name=startFrom]').val($(this).attr('title'));
+									$('.selectionList').remove();
+								});
+								jClasses.hover(function() {
+								}, function() {
+									form.find('.selectionList').remove();
+								});
+								jClasses.css({
+									position : 'absolute',
+									zIndex : '9999',
+									display : 'block',
+									left : ele2.position().left,
+									top : ele2.position().top + 20
+								});
+							}, function() {
+								form.children('div.input').children('img').remove();
+							});
+
+						}
+					});
+					cerca.append(invia2);
+					invia2.hover(function() {
+						cerca.parent().parent().setBackgroundPosition({
+							x : -630
+						});
+					}, function() {
+						cerca.parent().parent().setBackgroundPosition({
+							x : -10
+						});
+					});
+					/*
+					 * form.parent().setBackgroundPosition({ y : -10 });
+					 */
+					form.children('div.select').children('span:first').text($(this).find('span').text());
+				});
+
+			}
+		})
+		addSubmit(form);
+
+		form.find('.inviaForm').attr("style", 'top: 60px');
+	}
+
+	var connection = null;
+	function findConcept(type, value, callback, onAbort) {
+		try {
+			connection.abort();
+			// onAbort();
+		} catch (e) {
+		}
+		var result = [];
+		if (type == 'dbpedia') {
+			connection = $.ajax({
+				url : 'http://lookup.dbpedia.org/api/search.asmx/PrefixSearch?QueryClass=&MaxHits=20&QueryString=' + value,
+				async : true,
+				success : function(data) {
+					var xml = $(data);
+					xml.find('Result').each(function() {
+						result.push({
+							uri : $(this).children('URI').text(),
+							label : $(this).children('Label').text()
+						});
+						callback();
+					});
+					if (xml.find('Result').length == 0) {
+						onAbort();
+					}
+				},
+				complete : function(a, b) {
+					if (b == 'error' || b == 'parsererror' || b == 'timeout') {
+						myAlert(lang('enpointNotAvailableOrSLow') + "<br />https://lookup.dbpedia.org " + "(" + b + ")");
+						onAbort();
+					}
+				}
+			});
+		} else if (type == 'freebase') {
+			connection = $.ajax({
+				url : 'https://www.googleapis.com/freebase/v1/search?query=' + value + '&mql_output={"id":null,"name":null}&lang=en&key=AIzaSyBtTcMfVJVhjmhh_MdzeBCnuIC4J0WzPXQ',
+				async : true,
+				success : function(json) {
+					for (var int = 0; int < json.result.length; int++) {
+						var row = json.result[int];
+						result.push({
+							uri : 'http://rdf.freebase.com/ns/' + row.id.replace(/^\//, '').replace(/\//g, '.'),
+							label : row.name ? row.name : row.id
+						});
+						callback();
+					}
+				},
+				complete : function(a, b) {
+					if (b == 'error' || b == 'parsererror' || b == 'timeout') {
+						myAlert(lang('enpointNotAvailableOrSLow') + "<br />https://www.googleapis.com/freebase " + "(" + b + ")");
+						onAbort();
+					}
+				}
+			});
+		}
+
+		return result;
+	}
+
+});

+ 3118 - 0
js/lodlive.core.js

@@ -0,0 +1,3118 @@
+/*
+ *
+ * lodLive 1.0
+ * is developed by Diego Valerio Camarda, Silvia Mazzini and Alessandro Antonuccio
+ *
+ * Licensed under the MIT license
+ *
+ * plase tell us if you use it!
+ *
+ * geodimail@gmail.com
+ *
+ */
+
+var debugOn = false;
+(function($, lodLiveProfile) {
+	$.jsonp.setup({
+		cache : true,
+		callbackParameter : 'callback',
+		callback : 'lodlive',
+		pageCache : true,
+		timeout : 30000
+	});
+	var globalInfoPanelMap = {};
+	var globalInnerPageMap = {};
+	var context;
+	var methods = {
+		init : function(firstUri) {
+			context = this;
+			context.append('<div id="lodlogo" class="sprite"></div>');
+			// inizializzo il contenitore delle variabili di ambiente
+			var storeIdsCleaner = $.jStorage.index();
+			for (var int = 0; int < storeIdsCleaner.length; int++) {
+				if (storeIdsCleaner[int].indexOf("storeIds-") == 0) {
+					$.jStorage.deleteKey(storeIdsCleaner[int]);
+				}
+			}
+			$.jStorage.set('imagesMap', {});
+			$.jStorage.set('mapsMap', {});
+			$.jStorage.set('infoPanelMap', {});
+
+			// $.jStorage.set('storeIds',{});
+			// template della query
+
+			// creo il primo box, lo aggiungo al documento e lo posiziono
+			// orizzontalmente nel centro
+			var firstBox = $($.jStorage.get('boxTemplate'));
+			methods.centerBox(firstBox);
+			context.append(firstBox);
+			firstBox.attr("id", MD5(firstUri));
+			firstBox.attr("rel", firstUri);
+			firstBox.css({
+				'zIndex' : 1
+			});
+
+			// inizializzo la mappa delle classi
+			$.jStorage.set('classMap', {
+				// randomize first color
+				counter : Math.floor(Math.random() * 13) + 1
+			});
+
+			// imposto le dimensioni dell'area di lavoro
+			// context.height($(document).height());
+			// context.width($(document).width());
+
+			// attivo le funzioni per il drag
+			methods.renewDrag(context.children('.boxWrapper'));
+
+			// carico il primo documento
+			methods.openDoc(firstUri, firstBox);
+
+			methods.controlPanel('init');
+			// methods.controlPanel('move');
+			methods.msg('', 'init');
+			// methods.msg('', 'move');
+
+			$(window).bind('scroll', function() {
+				methods.docInfo(null, 'move');
+				methods.controlPanel('move');
+			});
+			$(window).bind('resize', function() {
+				methods.docInfo('', 'close');
+				$('#controlPanel').remove();
+				methods.controlPanel('init');
+				// $(".tipsy").remove();
+			});
+
+		},
+		close : function() {
+			document.location = document.location.href.substring(0, document.location.href.indexOf("?"));
+		},
+		composeQuery : function(resource, module, testURI) {
+
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			var url = "";
+			var res = "";
+			var endpoint = "";
+
+			$.each(lodLiveProfile.connection, function(key, value) {
+				var keySplit = key.split(",");
+				for (var a = 0; a < keySplit.length; a++) {
+					if (( testURI ? testURI : resource).indexOf(keySplit[a]) == 0) {
+						res = getSparqlConf(module, value, lodLiveProfile).replace(/\{URI\}/ig, resource.replace(/^.*~~/, ''));
+						if (value.proxy) {
+							url = value.proxy + '?endpoint=' + value.endpoint + "&" + (value.endpointType ? $.jStorage.get('endpoints')[value.endpointType] : $.jStorage.get('endpoints')['all']) + "&query=" + encodeURIComponent(res);
+						} else {
+							url = value.endpoint + "?" + (value.endpointType ? $.jStorage.get('endpoints')[value.endpointType] : $.jStorage.get('endpoints')['all']) + "&query=" + encodeURIComponent(res);
+						}
+						endpoint = value.endpoint;
+						return false;
+					}
+				}
+			});
+
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	composeQuery ');
+			}
+			if (url == '') {
+				url = 'http://system/dummy?' + resource;
+			}
+
+			if (endpoint && $.jStorage.get('showInfoConsole')) {
+				methods.queryConsole('log', {
+					title : endpoint,
+					text : res,
+					id : url,
+					uriId : resource
+				});
+			}
+			return url;
+		},
+		guessingEndpoint : function(uri, onSuccess, onFail) { 
+			var base = uri.replace(/(^https?:\/\/[^\/]+\/).+/, "$1");
+			var guessedEndpoint = base + "sparql?" + $.jStorage.get('endpoints')['all'] + "&query=" + encodeURIComponent("select * where {?a ?b ?c} LIMIT 1");
+			$.jsonp({
+				url : guessedEndpoint,
+				success : function(data) {
+					if (data && data.results && data.results.bindings[0]) {
+						var connections = lodLiveProfile.connection;
+						connections[base] = {
+							endpoint : base + "sparql"
+						};
+						lodLiveProfile.connection = connections;
+						onSuccess();
+					} else {
+						onFail();
+					}
+				},
+				error : function() {
+					onFail();
+				}
+			});
+		},
+		doStats : function(uri) {
+			if ($('#stats').length == 0) {
+				$('body').append('<div id="stats"><iframe src="stats.html?' + uri + '" style="display:none"></iframe></div>');
+			} else if ($('#stats').children('iframe').length == 10) {
+				$('#stats').empty();
+				$('#stats').append('<iframe src="stats.html?' + uri + '" style="display:none"></iframe>');
+			} else {
+				$('#stats').append('<iframe src="stats.html?' + uri + '" style="display:none"></iframe>');
+			}
+		},
+		msg : function(msg, action, type, endpoint, inverse) {
+			// area dei messaggi
+			var msgPanel = $('#msg');
+			if (action == 'init') {
+				if (msgPanel.length == 0) {
+					msgPanel = $('<div id="msg"></div>');
+					context.append(msgPanel);
+				}
+			} else if (action == 'move') {
+				msgPanel.hide();
+				msgPanel.css({
+					display : 'none'
+				});
+			} else if (action == 'hide') {
+				msgPanel.hide();
+			} else {
+				msgPanel.empty();
+				msg = msg.replace(/http:\/\/.+~~/g, '');
+				msg = msg.replace(/nodeID:\/\/.+~~/g, '');
+				msg = msg.replace(/_:\/\/.+~~/g, '');
+				msg = breakLines(msg);
+				msg = msg.replace(/\|/g, '<br />');
+				var msgs = msg.split(" \n ");
+				if (type == 'fullInfo') {
+					msgPanel.append("<div class=\"corner sprite\"></div>");
+					msgPanel.append("<div class=\"endpoint\">" + endpoint + "</div>");
+					if (msgs.length == 2) {
+						msgPanel.append("<div class=\"separline sprite\"></div>");
+						msgPanel.append("<div class=\"from upperline\">" + (msgs[0].length > 200 ? msgs[0].substring(0, 200) + "..." : msgs[0]) + "</div>");
+						msgPanel.append("<div class=\"separline sprite\"></div>");
+						msgPanel.append("<div class=\"from upperline\">" + msgs[1] + "</div>");
+					} else {
+						msgPanel.append("<div class=\"separline sprite\"></div>");
+						msgPanel.append("<div class=\"from upperline\">" + msgs[0] + "</div>");
+					}
+				} else {
+					if (msgs.length == 2) {
+						msgPanel.append("<div class=\"from\">" + msgs[0] + "</div>");
+						if (inverse) {
+							msgPanel.append("<div class=\"separ inverse sprite\"></div>");
+						} else {
+							msgPanel.append("<div class=\"separ sprite\"></div>");
+						}
+
+						msgPanel.append("<div class=\"from\">" + msgs[1] + "</div>");
+					} else {
+						msgPanel.append("<div class=\"from\">" + msgs[0] + "</div>");
+					}
+				}
+				/*
+				 * msgPanel.css({ left : $('body').scrollLeft(), top : $('body').scrollTop() + $(window).height() - msgPanel.height(), zIndex : 99999999 });
+				 */
+				msgPanel.css({
+					left : 0,
+					top : $(window).height() - msgPanel.height(),
+					position : 'fixed',
+					zIndex : 99999999
+				});
+				msgPanel.show();
+			}
+		},
+		queryConsole : function(action, toLog) {
+
+			var id = MD5(toLog.uriId);
+			var localId = MD5(toLog.id);
+			var infoMap = globalInfoPanelMap;
+			var panel = infoMap[id];
+			if (action == 'init') {
+				panel = $('<div id="q' + id + '" class="queryConsole"></div>');
+				infoMap[id] = panel;
+				globalInfoPanelMap = infoMap;
+			} else if (action == 'log') {
+				if (toLog.resource) {
+					panel.append('<h3 class="sprite"><span>' + toLog.resource + '</span><a class="sprite">&#160;</a></h3>');
+					panel.children("h3").children("a").click(function() {
+						methods.queryConsole('close', {
+							uriId : toLog.uriId
+						});
+					}).hover(function() {
+						$(this).setBackgroundPosition({
+							x : -641
+						});
+					}, function() {
+						$(this).setBackgroundPosition({
+							x : -611
+						});
+					});
+
+				}
+				if (panel) {
+					if (toLog.title) {
+						var h4 = $('<h4 class="t' + localId + ' sprite"><span>' + toLog.title + '</span></h4>');
+						panel.append(h4);
+						h4.hover(function() {
+							$(this).setBackgroundPosition({
+								y : -700
+							});
+						}, function() {
+							$(this).setBackgroundPosition({
+								y : -650
+							});
+						});
+						h4.click(function() {
+							if ($(this).data('show')) {
+								$(this).data('show', false);
+								$(this).setBackgroundPosition({
+									x : -680
+								});
+								$(this).removeClass('slideOpen');
+								$(this).next('div').slideToggle();
+							} else {
+								$(this).data('show', true);
+								$(this).setBackgroundPosition({
+									x : -1290
+								});
+								panel.find('.slideOpen').click();
+								$(this).addClass('slideOpen');
+								$(this).next('div').slideToggle();
+							}
+						});
+					}
+
+					if (toLog.text) {
+						var aDiv = $('<div><span><span class="contentArea">' + (toLog.text).replace(/</gi, "&lt;").replace(/>/gi, "&gt;") + '</span></span></div>');
+						var aEndpoint = $.trim(panel.find('h4.t' + localId).clone().find('strong').remove().end().text());
+						if (aEndpoint.indexOf("http:") == 0) {
+							var aLink = $('<span class="linkArea sprite" title="' + lang('executeThisQuery') + '"></span>');
+							aLink.click(function() {
+								window.open(aEndpoint + '?query=' + encodeURIComponent(toLog.text));
+							});
+							aLink.hover(function() {
+								$(this).setBackgroundPosition({
+									x : -630
+								});
+							}, function() {
+								$(this).setBackgroundPosition({
+									x : -610
+								});
+							});
+							aDiv.children('span').prepend(aLink);
+						}
+						aDiv.css({
+							opacity : 0.95
+						});
+						panel.append(aDiv);
+					}
+					if (toLog.error) {
+						panel.find('h4.t' + localId + ' > span').append('<strong style="float:right">' + lang('enpointNotAvailable') + '</strong>');
+					}
+					if ( typeof toLog.founded == typeof 0) {
+						if (toLog.founded == 0) {
+							panel.find('h4.t' + localId + ' > span').append('<strong style="float:right">' + lang('propsNotFound') + '</strong>');
+						} else {
+							panel.find('h4.t' + localId + ' > span').append('<strong style="float:right">' + toLog.founded + ' ' + lang('propsFound') + ' </strong>');
+						}
+
+					}
+					infoMap[id] = panel;
+					globalInfoPanelMap = infoMap;
+				}
+			} else if (action == 'remove') {
+				delete infoMap[id];
+				globalInfoPanelMap = infoMap;
+			} else if (action == 'show') {
+				// panel.show();
+				context.append(panel);
+			} else if (action == 'close') {
+				panel.detach();
+			}
+		},
+		controlPanel : function(action) {
+
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			// pannello di controllo dell'applicazione
+			var panel = $('#controlPanel');
+			if (action == 'init') {
+				panel = $('<div id="controlPanel"></div>');
+				panel.css({
+					left : 0,
+					top : 10,
+					position : 'fixed',
+					zIndex : 999
+				});
+				panel.append('<div class="panel options sprite" ></div>');
+				panel.append('<div class="panel legend sprite" ></div>');
+				panel.append('<div class="panel help sprite" ></div>');
+				panel.append('<div class="panel" ></div>');
+				panel.append('<div class="panel2 maps sprite" ></div>');
+				panel.append('<div class="panel2 images sprite" ></div>');
+
+				panel.children('.panel,.panel2').hover(function() {
+					$(this).setBackgroundPosition({
+						y : -450
+					});
+				}, function() {
+					$(this).setBackgroundPosition({
+						y : -400
+					});
+				});
+
+				context.append(panel);
+
+				panel.attr("data-top", panel.position().top);
+				panel.children('.panel').click(function() {
+					panel.children('.panel,.panel2').hide();
+					var close = $('<div class="panel close sprite" ></div>');
+					close.click(function() {
+						$(this).remove();
+						panel.children('#panelContent').remove();
+						panel.removeClass("justX");
+						panel.children('.panel,.panel2').show();
+						panel.children('.inactive').hide();
+					});
+					close.hover(function() {
+						$(this).setBackgroundPosition({
+							y : -550
+						});
+					}, function() {
+						$(this).setBackgroundPosition({
+							y : -500
+						});
+					});
+					panel.append(close);
+					close.css({
+						position : 'absolute',
+						left : 241,
+						top : 0
+					});
+					var panelContent = $('<div id="panelContent"></div>');
+					panel.append(panelContent);
+					if ($(this).hasClass("options")) {
+						var anUl = $('<ul class="optionsList"></ul>');
+						panelContent.append('<div></div>');
+						panelContent.children('div').append('<h2>' + lang('options') + '</h2>').append(anUl);
+						anUl.append('<li ' + ($.jStorage.get('doInverse') ? 'class="checked"' : 'class="check"') + ' data-value="inverse" ><span class="spriteLegenda"></span>' + lang('generateInverse') + '</li>');
+						anUl.append('<li ' + ($.jStorage.get('doAutoExpand') ? 'class="checked"' : 'class="check"') + ' data-value="autoExpand" ><span class="spriteLegenda"></span>' + lang('autoExpand') + '</li>');
+						anUl.append('<li ' + ($.jStorage.get('doAutoSameas') ? 'class="checked"' : 'class="check"') + ' data-value="autoSameas"><span class="spriteLegenda"></span>' + lang('autoSameAs') + '</li>');
+
+						anUl.append('<li ' + ($.jStorage.get('doCollectImages') ? 'class="checked"' : 'class="check"') + ' data-value="autoCollectImages"><span class="spriteLegenda"></span>' + lang('autoCollectImages') + '</li>');
+						anUl.append('<li ' + ($.jStorage.get('doDrawMap') ? 'class="checked"' : 'class="check"') + ' data-value="autoDrawMap"><span class="spriteLegenda"></span>' + lang('autoDrawMap') + '</li>');
+
+						anUl.append('<li>&#160;</li>');
+						anUl.append('<li class="reload"><span  class="spriteLegenda"></span>' + lang('restart') + '</li>');
+						anUl.children('.reload').click(function() {
+							context.lodlive('close');
+						});
+						anUl.children('li[data-value]').click(function() {
+							if ($(this).hasClass('check')) {
+								if ($(this).attr("data-value") == 'inverse') {
+									$.jStorage.set('doInverse', true);
+								} else if ($(this).attr("data-value") == 'autoExpand') {
+									$.jStorage.set('doAutoExpand', true);
+								} else if ($(this).attr("data-value") == 'autoSameas') {
+									$.jStorage.set('doAutoSameas', true);
+								} else if ($(this).attr("data-value") == 'autoCollectImages') {
+									$.jStorage.set('doCollectImages', true);
+									panel.children('div.panel2.images').removeClass('inactive');
+								} else if ($(this).attr("data-value") == 'autoDrawMap') {
+									$.jStorage.set('doDrawMap', true);
+									panel.children('div.panel2.maps').removeClass('inactive');
+								}
+								$(this).attr('class', "checked");
+							} else {
+								if ($(this).attr("data-value") == 'inverse') {
+									$.jStorage.set('doInverse', false);
+								} else if ($(this).attr("data-value") == 'autoExpand') {
+									$.jStorage.set('doAutoExpand', false);
+								} else if ($(this).attr("data-value") == 'autoSameas') {
+									$.jStorage.set('doAutoSameas', false);
+								} else if ($(this).attr("data-value") == 'autoCollectImages') {
+									$.jStorage.set('doCollectImages', false);
+									panel.children('div.panel2.images').addClass('inactive');
+								} else if ($(this).attr("data-value") == 'autoDrawMap') {
+									panel.children('div.panel2.maps').addClass('inactive');
+									$.jStorage.set('doDrawMap', false);
+								}
+								$(this).attr('class', "check");
+							}
+						});
+
+					} else if ($(this).hasClass("help")) {
+						var help = $('.help').children('div').clone();
+						$('.videoHelp', help).fancybox({
+							'transitionIn' : 'elastic',
+							'transitionOut' : 'elastic',
+							'speedIn' : 400,
+							'type' : 'iframe',
+							'width' : 853,
+							'height' : 480,
+							'speedOut' : 200,
+							'hideOnContentClick' : false,
+							'showCloseButton' : true,
+							'overlayShow' : false
+						});
+						panelContent.append(help);
+						if (help.height() > $(window).height() + 10) {
+							panel.addClass("justX");
+						}
+
+					} else if ($(this).hasClass("legend")) {
+						var legend = $('.legenda').children('div').clone();
+						var counter = 0;
+						legend.find("span.spriteLegenda").each(function() {
+							$(this).css({
+								'background-position' : '-1px -' + (counter * 20) + 'px'
+							});
+							counter++;
+						});
+						panelContent.append(legend);
+						if (legend.height() > $(window).height() + 10) {
+							panel.addClass("justX");
+						}
+					}
+				});
+				if (!$.jStorage.get('doCollectImages', true)) {
+					panel.children('div.panel2.images').addClass('inactive').hide();
+				}
+				if (!$.jStorage.get('doDrawMap', true)) {
+					panel.children('div.panel2.maps').addClass('inactive').hide();
+				}
+
+				panel.children('.panel2').click(function() {
+					panel.children('.panel,.panel2').hide();
+					var close = $('<div class="panel close2 sprite" ></div>');
+					close.click(function() {
+						$(this).remove();
+						$('#mapPanel', panel).hide();
+						$('#imagePanel', panel).hide();
+						panelContent.hide();
+						panel.removeClass("justX");
+						panel.children('.panel,.panel2').show();
+						panel.children('.inactive').hide();
+					});
+					close.hover(function() {
+						$(this).setBackgroundPosition({
+							y : -550
+						});
+					}, function() {
+						$(this).setBackgroundPosition({
+							y : -500
+						});
+					});
+					panel.append(close);
+					var panelContent = $('#panel2Content', panel);
+					if (panelContent.length == 0) {
+						panelContent = $('<div id="panel2Content"></div>');
+						panel.append(panelContent);
+					} else {
+						panelContent.show();
+					}
+					if ($(this).hasClass("maps")) {
+						var mapPanel = $('#mapPanel');
+						if (mapPanel.length == 0) {
+							mapPanel = $('<div id="mapPanel"></div>');
+							panelContent.width(800);
+							panelContent.append(mapPanel);
+							$('#mapPanel').gmap3({
+								action : 'init',
+								options : {
+									zoom : 2,
+									mapTypeId : google.maps.MapTypeId.HYBRID
+								}
+							});
+						} else {
+							mapPanel.show();
+						}
+						methods.updateMapPanel(panel);
+					} else if ($(this).hasClass("images")) {
+						var imagePanel = $('#imagePanel');
+						if (imagePanel.length == 0) {
+							imagePanel = $('<div id="imagePanel"><span id="imgesCnt"></span></div>');
+							panelContent.append(imagePanel);
+						} else {
+							imagePanel.show();
+						}
+						methods.updateImagePanel(panel);
+					}
+				});
+
+			} else if (action == 'show') {
+
+			} else if (action == 'hide') {
+
+			} else if (action == 'move') {
+				if (panel.hasClass("justX")) {
+					panel.css({
+						position : 'absolute',
+						left : $('body').scrollLeft(),
+						top : panel.attr("data-top")
+					});
+				} else {
+					panel.css({
+						left : 0,
+						top : 10,
+						position : 'fixed'
+					});
+					if (panel.position()) {
+						panel.attr("data-top", panel.position().top);
+					}
+				}
+
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	controlPanel ');
+			}
+		},
+		updateMapPanel : function(panel) {
+			if ($.jStorage.get('doDrawMap', true)) {
+
+				if ($("#mapPanel:visible", panel).length > 0) {
+					$('#mapPanel').gmap3({
+						action : 'clear'
+					});
+					var panelContent = $('#panel2Content', panel);
+					panelContent.width(800);
+					var close = $('.close2', panel);
+					var mapsMap = $.jStorage.get('mapsMap');
+					var mapSize = 0;
+					for (var prop in mapsMap) {
+						if (mapsMap.hasOwnProperty(prop)) {
+							mapSize++;
+						}
+					}
+					for (var prop in mapsMap) {
+						if (mapsMap.hasOwnProperty(prop)) {
+							$('#mapPanel').gmap3({
+								action : 'addMarker',
+								latLng : [mapsMap[prop].lats, mapsMap[prop].longs],
+								title : unescape(mapsMap[prop].title)
+							}, mapSize > 1 ? {
+								action : "autofit"
+							} : {});
+						}
+					}
+
+					close.css({
+						position : 'absolute',
+						left : panelContent.width() + 1,
+						top : 0
+					});
+
+				} else {
+					methods.highlight(panel.children('.maps'), 2, 200, '-565px -450px');
+				}
+			}
+		},
+		updateImagePanel : function(panel) {
+			if ($.jStorage.get('doCollectImages', true)) {
+
+				var imagePanel = $('#imagePanel', panel).children("span");
+				if ($("#imagePanel:visible", panel).length > 0) {
+					var panelContent = $('#panel2Content', panel);
+					var close = $('.close2', panel);
+					var imageMap = $.jStorage.get('imagesMap');
+					var mapSize = 0;
+					for (var prop in imageMap) {
+						if (imageMap.hasOwnProperty(prop)) {
+							mapSize++;
+						}
+					}
+					if (mapSize > 0) {
+						imagePanel.children('.amsg').remove();
+						var counter = 0;
+						for (var prop in imageMap) {
+							if (imageMap.hasOwnProperty(prop)) {
+								for (var a = 0; a < imageMap[prop].length; a++) {
+									for (var key in imageMap[prop][a]) {
+										if (($.jStorage.get('noImagesMap', {})[prop + counter])) {
+											counter--;
+										} else if (imagePanel.children('.img-' + prop + '-' + counter).length == 0) {
+											var img = $('<a href="' + unescape(key) + '" class="sprite relatedImage img-' + prop + '-' + counter + '"><img rel="' + unescape(imageMap[prop][a][key]) + '" src="' + unescape(key) + '"/></a>"');
+											img.attr("data-prop", prop);
+											imagePanel.prepend(img);
+											img.fancybox({
+												'transitionIn' : 'elastic',
+												'transitionOut' : 'elastic',
+												'speedIn' : 400,
+												'type' : 'image',
+												'speedOut' : 200,
+												'hideOnContentClick' : true,
+												'showCloseButton' : false,
+												'overlayShow' : false
+											});
+											img.children('img').error(function() {
+												$(this).parent().remove();
+												counter--;
+												if (counter < 3) {
+													panelContent.width(148);
+												} else {
+													var tot = (counter / 3 + (counter % 3 > 0 ? 1 : 0) + '').split('.')[0];
+													if (tot > 7) {
+														tot = 7;
+													}
+													panelContent.width(20 + (tot) * 128);
+												}
+												close.css({
+													position : 'absolute',
+													left : panelContent.width() + 1,
+													top : 0
+												});
+												var noImage = $.jStorage.get('noImagesMap', {});
+												noImage[prop + counter] = true;
+												$.jStorage.set('noImagesMap', noImage);
+												close.css({
+													position : 'absolute',
+													left : panelContent.width() + 1,
+													top : 0
+												});
+											});
+											img.children('img').load(function() {
+												var titolo = $(this).attr('rel');
+												if ($(this).width() < $(this).height()) {
+													$(this).height($(this).height() * 113 / $(this).width());
+													$(this).width(113);
+												} else {
+													$(this).css({
+														width : $(this).width() * 113 / $(this).height(),
+														height : 113,
+														marginLeft : -(($(this).width() * 113 / $(this).height() - 113) / 2)
+													});
+												}
+												var controls = $('<span class="imgControls"><span class="imgControlCenter" title="' + lang('showResource') + '"></span><span class="imgControlZoom" title="' + lang('zoomIn') + '"></span><span class="imgTitle">' + titolo + '</span></span>');
+												$(this).parent().append(controls);
+												$(this).parent().hover(function() {
+													$(this).children('img').hide();
+												}, function() {
+													$(this).children('img').show();
+												});
+												controls.children('.imgControlZoom').hover(function() {
+													$(this).parent().parent().setBackgroundPosition({
+														x : -1955
+													});
+												}, function() {
+													$(this).parent().parent().setBackgroundPosition({
+														x : -1825
+													});
+												});
+												controls.children('.imgControlCenter').hover(function() {
+													$(this).parent().parent().setBackgroundPosition({
+														x : -2085
+													});
+												}, function() {
+													$(this).parent().parent().setBackgroundPosition({
+														x : -1825
+													});
+												});
+												controls.children('.imgControlCenter').click(function() {
+													$('.close2', panel).click();
+													methods.highlight($('#' + $(this).parent().parent().attr("data-prop")).children('.box'), 8, 100, '0 0');
+													// -390px
+													return false;
+												});
+												if (counter < 3) {
+													panelContent.width(148);
+												} else {
+													var tot = (counter / 3 + (counter % 3 > 0 ? 1 : 0) + '').split('.')[0];
+													if (tot > 7) {
+														tot = 7;
+													}
+													panelContent.width(20 + (tot) * 128);
+													close.css({
+														position : 'absolute',
+														left : panelContent.width() + 1,
+														top : 0
+													});
+												}
+											});
+
+										}
+										counter++;
+									}
+								}
+							}
+						}
+					} else {
+						panelContent.width(148);
+						if (imagePanel.children('.amsg').length == 0) {
+							imagePanel.append('<span class="amsg">' + lang('imagesNotFound') + '</span>');
+						}
+					}
+
+					close.css({
+						position : 'absolute',
+						left : panelContent.width() + 1,
+						top : 0
+					});
+
+				} else {
+					methods.highlight(panel.children('.images'), 2, 200, '-610px -450px');
+				}
+			}
+		},
+		highlight : function(object, times, speed, backmove) {
+
+			if (times > 0) {
+				times--;
+				var css = object.css('background-position');
+				object.doTimeout(speed, function() {
+					object.css({
+						'background-position' : backmove
+					});
+					object.doTimeout(speed, function() {
+						object.css({
+							'background-position' : css
+						});
+						methods.highlight(object, times, speed, backmove);
+					});
+				});
+			}
+		},
+		renewDrag : function(aDivList) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			aDivList.each(function() {
+				if ($(this).attr("class").indexOf('ui-draggable') == -1) {
+					$(this).draggable({
+						// handle:'.boxTitle',
+						stack : '.boxWrapper',
+						containment : "parent",
+						start : function() {
+							$(".toolBox").remove();
+							$('#line-' + $(this).attr("id")).clearCanvas();
+							var generatedRev = $.jStorage.get('storeIds-generatedByRev-' + $(this).attr("id"));
+							if (generatedRev) {
+								for (var a = 0; a < generatedRev.length; a++) {
+									generated = $.jStorage.get('storeIds-generatedBy-' + generatedRev[a]);
+									$('#line-' + generatedRev[a]).clearCanvas();
+								}
+							}
+						},
+						drag : function(event, ui) {
+						},
+						stop : function(event, ui) {
+							methods.drawAllLines($(this));
+						}
+					});
+				}
+			});
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	renewDrag ');
+			}
+		},
+		centerBox : function(aBox) {
+
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			var top = ($(context).height() - 65) / 2 + ($(context).scrollTop() || 0);
+			var left = ($(context).width() - 65) / 2 + ($(context).scrollLeft() || 0);
+			var props = {
+				position : 'absolute',
+				left : left,
+				top : top
+			};
+
+			window.scrollBy(-context.width(), -context.height());
+			window.scrollBy($(context).width() / 2 - $(window).width() / 2 + 25, $(context).height() / 2 - $(window).height() / 2 + 65);
+
+			try {
+				aBox.animate(props, 1000);
+			} catch (e) {
+				aBox.css(props);
+			}
+
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	centerBox ');
+			}
+		},
+		autoExpand : function(obj) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			$.each(globalInnerPageMap, function(key, element) {
+				if (element.children(".relatedBox:not([class*=exploded])").length > 0) {
+					if (element.parent().length == 0) {
+						context.append(element);
+					}
+					element.children(".relatedBox:not([class*=exploded])").each(function() {
+						var aId = $(this).attr("relmd5");
+						var newObj = context.children('#' + aId);
+						if (newObj.length > 0) {
+							$(this).click();
+						}
+					});
+					context.children('.innerPage').detach();
+				}
+			});
+			context.find(".relatedBox:not([class*=exploded])").each(function() {
+				var aId = $(this).attr("relmd5");
+				var newObj = context.children('#' + aId);
+				if (newObj.length > 0) {
+					$(this).click();
+				}
+			});
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	autoExpand ');
+			}
+		},
+		addNewDoc : function(obj, ele, callback) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			var aId = ele.attr("relmd5");
+			var newObj = context.find('#' + aId);
+			var isInverse = ele.attr("class").indexOf("inverse") != -1;
+
+			var exist = true;
+			// verifico se esistono box rappresentativi dello stesso documento
+			// nella pagina
+			if (newObj.length == 0) {
+				newObj = $($.jStorage.get('boxTemplate'));
+				exist = false;
+			}
+			var originalCircus = $("#" + ele.attr("data-circleId"));
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	addNewDoc 01 ');
+			}
+			if (!isInverse) {
+				if (debugOn) {
+					console.debug((new Date().getTime() - start) + '	addNewDoc 02 ');
+				}
+				var connected = $.jStorage.get('storeIds-generatedBy-' + originalCircus.attr("id"));
+				if (!connected) {
+					connected = [aId];
+				} else {
+					if ($.inArray(aId, connected) == -1) {
+						connected.push(aId);
+					} else {
+						return;
+					}
+				}
+				if (debugOn) {
+					console.debug((new Date().getTime() - start) + '	addNewDoc 03 ');
+				}
+				$.jStorage.set('storeIds-generatedBy-' + originalCircus.attr("id"), connected);
+				connected = $.jStorage.get('storeIds-generatedByRev-' + aId);
+				if (!connected) {
+					connected = [originalCircus.attr("id")];
+				} else {
+					if ($.inArray(originalCircus.attr("id"), connected) == -1) {
+						connected.push(originalCircus.attr("id"));
+					}
+				}
+				if (debugOn) {
+					console.debug((new Date().getTime() - start) + '	addNewDoc 04 ');
+				}
+				$.jStorage.set('storeIds-generatedByRev-' + aId, connected);
+			}
+
+			var propertyName = ele.attr("data-property");
+			newObj.attr("id", aId);
+			newObj.attr("rel", ele.attr("rel"));
+
+			var fromInverse = isInverse ? 'div[data-property="' + ele.attr("data-property") + '"][rel="' + obj.attr("rel") + '"]' : null;
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	addNewDoc 05 ');
+			}
+			// nascondo l'oggetto del click e carico la risorsa successiva
+			$(ele).hide();
+			if (!exist) {
+				if (debugOn) {
+					console.debug((new Date().getTime() - start) + '	addNewDoc 06 ');
+				}
+				var pos = parseInt(ele.attr("data-circlePos"), 10);
+				var parts = parseInt(ele.attr("data-circleParts"), 10);
+				// var chordsListExpand = this.lodlive('circleChords',
+				// ele.attr("data-circleParts") > 10 ? (pos % 2 > 0 ?
+				// originalCircus.width() * 3 : originalCircus.width() * 2) :
+				// originalCircus.width() * 5 / 2,
+				// parseInt(ele.attr("data-circleParts"), 10) + 4,
+				// originalCircus.position().left + obj.width() / 2,
+				// originalCircus.position().top + originalCircus.height() / 2,
+				// pos + 1);
+				var chordsListExpand = methods.circleChords(parts > 10 ? (pos % 2 > 0 ? originalCircus.width() * 3 : originalCircus.width() * 2) : originalCircus.width() * 5 / 2, parts, originalCircus.position().left + obj.width() / 2, originalCircus.position().top + originalCircus.height() / 2, null, pos);
+				context.append(newObj);
+				/*
+				 * newObj.css({ "left" : originalCircus.position().left + originalCircus.width() / 2 - newObj.width() / 2, "top" : originalCircus.position().top +
+				 * originalCircus.height() / 2 - newObj.height() / 2, "opacity" : 0.1, "zIndex" : 99 });
+				 */
+				newObj.css({
+					"left" : (chordsListExpand[0][0] - newObj.height() / 2),
+					"top" : (chordsListExpand[0][1] - newObj.width() / 2),
+					"opacity" : 1,
+					"zIndex" : 99
+				});
+
+				/*
+				 * newObj.animate({ "left" : (chordsListExpand[pos][0] - newObj.height() / 2), "top" : (chordsListExpand[pos][1] - newObj.width() / 2), "opacity" : 1 }, 400, '',
+				 * function() {
+				 */
+				methods.renewDrag(context.children('.boxWrapper'));
+				if (debugOn) {
+					console.debug((new Date().getTime() - start) + '	addNewDoc 07 ');
+				}
+				if (!isInverse) {
+					if (debugOn) {
+						console.debug((new Date().getTime() - start) + '	addNewDoc 08 ');
+					}
+					if ($.jStorage.get('doInverse')) {
+						methods.openDoc($(ele).attr("rel"), newObj, fromInverse);
+					} else {
+						methods.openDoc($(ele).attr("rel"), newObj);
+					}
+					methods.drawaLine(obj, newObj, propertyName);
+				} else {
+					if (debugOn) {
+						console.debug((new Date().getTime() - start) + '	addNewDoc 09 ');
+					}
+					methods.openDoc($(ele).attr("rel"), newObj, fromInverse);
+				}
+				// });
+			} else {
+				if (!isInverse) {
+					if (debugOn) {
+						console.debug((new Date().getTime() - start) + '	addNewDoc 10 ');
+					}
+					methods.renewDrag(context.children('.boxWrapper'));
+					methods.drawaLine(obj, newObj, propertyName);
+				} else {
+					if (debugOn) {
+						console.debug((new Date().getTime() - start) + '	addNewDoc 11 ');
+					}
+					try {
+						// $(fromInverse).click();
+					} catch (e) {
+					}
+				}
+			}
+			if (callback) {
+				callback();
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	addNewDoc ');
+			}
+			return false;
+		},
+		removeDoc : function(obj, callback) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			$(".toolBox").remove();
+			// $(".tipsy").remove();
+
+			var id = obj.attr("id");
+			methods.queryConsole('remove', {
+				uriId : obj.attr('rel')
+			});
+			$("#line-" + id).clearCanvas();
+			var generatedRev = $.jStorage.get('storeIds-generatedByRev-' + id);
+			if (generatedRev) {
+				for (var a = 0; a < generatedRev.length; a++) {
+					$('#line-' + generatedRev[a]).clearCanvas();
+				}
+			}
+			methods.docInfo('', 'close');
+
+			if ($.jStorage.get('doCollectImages', true)) {
+				var imagesMap = $.jStorage.get("imagesMap", {});
+				if (imagesMap[id]) {
+					delete imagesMap[id];
+					$.jStorage.set('imagesMap', imagesMap);
+					methods.updateImagePanel($('#controlPanel'));
+					$('#controlPanel').find('a[class*=img-' + id + ']').remove();
+				}
+			}
+
+			if ($.jStorage.get('doDrawMap', true)) {
+				var mapsMap = $.jStorage.get("mapsMap", {});
+				if (mapsMap[id]) {
+					delete mapsMap[id];
+					$.jStorage.set('mapsMap', mapsMap);
+					methods.updateMapPanel($('#controlPanel'));
+					// $('#controlPanel').find('a[class*=img-' + id +
+					// ']').remove();
+				}
+			}
+
+			obj.fadeOut('normal', null, function() {
+				obj.remove();
+				$.each(globalInnerPageMap, function(key, element) {
+					if (element.children("." + id).length > 0) {
+						$('#' + key).append(element);
+					}
+				});
+				$("." + id).each(function() {
+					$(this).show();
+					$(this).removeClass("exploded");
+				});
+				$.each(globalInnerPageMap, function(key, element) {
+					if (element.children("." + id).length > 0) {
+						var lastClick = $('#' + key).find('.lastClick').attr("rel");
+						if ($('#' + key).children('.innerPage').children('.' + lastClick).length == 0) {
+							$('#' + key).children('.innerPage').detach();
+						}
+					}
+				});
+				// $('#'+id).children('.innerPage').detach();
+				var generated = $.jStorage.get('storeIds-generatedBy-' + id);
+				var generatedRev = $.jStorage.get('storeIds-generatedByRev-' + id);
+				if (generatedRev) {
+					for (var int = 0; int < generatedRev.length; int++) {
+						var generatedBy = $.jStorage.get('storeIds-generatedBy-' + generatedRev[int]);
+						if (generatedBy) {
+							for (var int2 = 0; int2 < generatedBy.length; int2++) {
+								if (generatedBy[int2] == id) {
+									generatedBy.splice(int2, 1);
+								}
+							}
+						}
+						$.jStorage.set('storeIds-generatedBy-' + generatedRev[int], generatedBy);
+					}
+				}
+
+				if (generated) {
+					for (var int = 0; int < generated.length; int++) {
+						var generatedBy = $.jStorage.get('storeIds-generatedByRev-' + generated[int]);
+						if (generatedBy) {
+							for (var int2 = 0; int2 < generatedBy.length; int2++) {
+								if (generatedBy[int2] == id) {
+									generatedBy.splice(int2, 1);
+								}
+							}
+						}
+						$.jStorage.set('storeIds-generatedByRev-' + generated[int], generatedBy);
+					}
+				}
+				generatedRev = $.jStorage.get('storeIds-generatedByRev-' + id);
+				if (generatedRev) {
+					for (var a = 0; a < generatedRev.length; a++) {
+						generated = $.jStorage.get('storeIds-generatedBy-' + generatedRev[a]);
+						if (generated) {
+							for (var a2 = 0; a2 < generated.length; a2++) {
+								methods.drawaLine($('#' + generatedRev[a]), $("#" + generated[a2]));
+							}
+						}
+					}
+				}
+				$.jStorage.set('storeIds-generatedByRev-' + id, []);
+				$.jStorage.set('storeIds-generatedBy-' + id, []);
+
+			});
+
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	removeDoc ');
+			}
+		},
+		addClick : function(obj, callback) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			// per ogni nuova risorsa collegata al documento corrente imposto le
+			// azioni "onclick"
+
+			obj.find("div.relatedBox").each(function() {
+				$(this).attr("relmd5", MD5($(this).attr("rel")));
+				$(this).click(function() {
+					$(this).addClass("exploded");
+					methods.addNewDoc(obj, $(this));
+					// methods.docInfo('', 'close');
+					return false;
+				});
+				$(this).hover(function() {
+					methods.msg($(this).attr('data-title'), 'show', null, null, $(this).hasClass("inverse"));
+				}, function() {
+					methods.msg(null, 'hide');
+				});
+			});
+
+			obj.find(".groupedRelatedBox").each(function() {
+				$(this).click(function() {
+					if ($(this).data('show')) {
+						$(this).data('show', false);
+						methods.docInfo('', 'close');
+						$(this).removeClass('lastClick');
+						obj.find("." + $(this).attr("rel")).fadeOut('fast');
+						$(this).fadeTo('fast', 1);
+						obj.children('.innerPage').detach();
+					} else {
+						$(this).data('show', true);
+						obj.append(globalInnerPageMap[obj.attr("id")]);
+						methods.docInfo('', 'close');
+						obj.find('.lastClick').removeClass('lastClick').click();
+						if (obj.children('.innerPage').length == 0) {
+							obj.append(globalInnerPageMap[obj.attr("id")]);
+						}
+						$(this).addClass('lastClick');
+						obj.find("." + $(this).attr("rel") + ":not([class*=exploded])").fadeIn('fast');
+						$(this).fadeTo('fast', 0.3);
+					}
+				});
+
+				$(this).hover(function() {
+					methods.msg($(this).attr('data-title'), 'show', null, null, $(this).hasClass("inverse"));
+				}, function() {
+					methods.msg(null, 'hide');
+				});
+			});
+
+			globalInnerPageMap[obj.attr("id")] = obj.children('.innerPage');
+			obj.children('.innerPage').detach();
+			// aggiungo le azioni dei tools
+			obj.find(".actionBox[rel=contents]").click(function() {
+				methods.docInfo(obj, 'open');
+			});
+			obj.find(".actionBox[rel=tools]").click(function() {
+				if ($(".toolBox:visible").length == 0) {
+					var pos = obj.position();
+					var tools = $("<div class=\"toolBox sprite\" style=\"display:none\" ><div class=\"innerActionBox infoQ\" rel=\"infoQ\" title=\"" + lang('moreInfoOnThis') + "\" >&#160;</div><div class=\"innerActionBox center\" rel=\"center\" title=\"" + lang('centerClose') + "\" >&#160;</div><div class=\"innerActionBox newpage\" rel=\"newpage\" title=\"" + lang('openOnline') + "\" >&#160;</div><div class=\"innerActionBox expand\" rel=\"expand\" title=\"" + lang('openRelated') + "\" >&#160;</div><div class=\"innerActionBox remove\" rel=\"remove\" title=\"" + lang('removeResource') + "\" >&#160;</div></div>");
+					context.append(tools);
+					tools.css({
+						top : pos.top - 23,
+						left : pos.left + 10
+					});
+					tools.fadeIn('fast');
+					tools.find(".innerActionBox[rel=expand]").each(function() {
+						$(this).click(function() {
+							tools.remove();
+							// $('.tipsy').remove();
+							methods.docInfo('', 'close');
+							var idx = 0;
+							var elements = obj.find("div.relatedBox:visible");
+							elements.doTimeout(250, function() {
+								var elem = this.eq(idx++);
+								if (elem.length) {
+									elem.trigger('click');
+									return true;
+								}
+							});
+						});
+						$(this).hover(function() {
+							tools.setBackgroundPosition({
+								y : -515
+							});
+						}, function() {
+							tools.setBackgroundPosition({
+								y : -395
+							});
+						});
+					});
+					tools.find(".innerActionBox[rel=infoQ]").each(function() {
+						$(this).click(function() {
+							tools.remove();
+							methods.queryConsole('show', {
+								uriId : obj.attr('rel')
+							});
+						});
+						$(this).hover(function() {
+							tools.setBackgroundPosition({
+								y : -425
+							});
+						}, function() {
+							tools.setBackgroundPosition({
+								y : -395
+							});
+						});
+					});
+					tools.find(".innerActionBox[rel=remove]").each(function() {
+						$(this).click(function() {
+							// $('.tipsy').remove();
+							methods.removeDoc(obj);
+							tools.remove();
+							methods.docInfo('', 'close');
+						});
+						$(this).hover(function() {
+							tools.setBackgroundPosition({
+								y : -545
+							});
+						}, function() {
+							tools.setBackgroundPosition({
+								y : -395
+							});
+						});
+					});
+					tools.find(".innerActionBox[rel=newpage]").each(function() {
+						$(this).click(function() {
+							tools.remove();
+							// $('.tipsy').remove();
+							methods.docInfo('', 'close');
+							window.open(obj.attr("rel"));
+						});
+						$(this).hover(function() {
+							$(this).parent().setBackgroundPosition({
+								y : -485
+							});
+						}, function() {
+							$(this).parent().setBackgroundPosition({
+								y : -395
+							});
+						});
+
+					});
+					tools.find(".innerActionBox[rel=center]").each(function() {
+						$(this).click(function() {
+							var loca = $(location).attr('href');
+							if (loca.indexOf('?http') != -1) {
+								document.location = loca.substring(0, loca.indexOf('?')) + '?' + obj.attr('rel');
+							}
+						});
+						$(this).hover(function() {
+							tools.setBackgroundPosition({
+								y : -455
+							});
+						}, function() {
+							tools.setBackgroundPosition({
+								y : -395
+							});
+						});
+					});
+				} else {
+					$(".toolBox").fadeOut('fast', null, function() {
+						$(".toolBox").remove();
+					});
+				}
+			});
+			if (callback) {
+				callback();
+			}
+
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	addClick ');
+			}
+		},
+		parseRawResourceDoc : function(destBox, URI) {
+
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			var uris = [];
+			var bnodes = [];
+			var values = [];
+			if (lodLiveProfile['default']) {
+				// attivo lo sparql interno basato su sesame
+				var res = getSparqlConf('document', lodLiveProfile['default'], lodLiveProfile).replace(/\{URI\}/ig, URI);
+				var url = lodLiveProfile['default'].endpoint + "?uri=" + encodeURIComponent(URI) + "&query=" + encodeURIComponent(res);
+				if ($.jStorage.get('showInfoConsole')) {
+					methods.queryConsole('log', {
+						title : lang('endpointNotConfiguredSoInternal'),
+						text : res,
+						uriId : URI
+					});
+				}
+				$.jsonp({
+					url : url,
+					beforeSend : function() {
+						$('body').append(destBox);
+						destBox.html('<img style=\"margin-left:' + (destBox.width() / 2) + 'px;margin-top:147px\" src="img/ajax-loader-gray.gif"/>');
+						destBox.css({
+							position : 'fixed',
+							left : $(window).width() - $('#docInfo').width() - 20,
+							top : 0
+						});
+						destBox.attr("data-top", destBox.position().top);
+					},
+					success : function(json) {
+
+						json = json['results']['bindings'];
+						$.each(json, function(key, value) {
+							if (value.object.type == 'uri') {
+								eval('uris.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+							} else if (value.object.type == 'bnode') {
+								eval('bnodes.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+							} else {
+								eval('values.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+							}
+						});
+						destBox.html('');
+						if (debugOn) {
+							console.debug(URI + '	  ');
+							console.debug(values);
+						}
+
+						methods.formatDoc(destBox, values, uris, bnodes, URI);
+					},
+					error : function(e, b, v) {
+						destBox.html('');
+						values = [{
+							'http://system/msg' : 'risorsa non trovata: ' + destBox.attr('rel')
+						}];
+						methods.formatDoc(destBox, values, uris, bnodes, URI);
+					}
+				});
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	parseRawResourceDoc ');
+			}
+		},
+		docInfo : function(obj, action) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			if (action == 'open') {
+				var URI = obj.attr('rel');
+				if ($('#docInfo').length > 0) {
+					$('#docInfo').fadeOut('fast', null, function() {
+						$('#docInfo').remove();
+					});
+					if ($('#docInfo[rel="info-' + URI + '"]').length > 0) {
+						return;
+					}
+				}
+				// predispongo il div contenente il documento
+				var destBox = $('<div id="docInfo" rel="info-' + URI + '"></div>');
+				$('body').append(destBox);
+				var SPARQLquery = methods.composeQuery(URI, 'document');
+				var uris = [];
+				var bnodes = [];
+				var values = [];
+				if (SPARQLquery.indexOf("http://system/dummy") == 0) {
+					methods.parseRawResourceDoc(destBox, URI);
+				} else {
+					$.jsonp({
+						url : SPARQLquery,
+						beforeSend : function() {
+							destBox.html('<img style=\"margin-left:' + (destBox.width() / 2) + 'px;margin-top:147px\" src="img/ajax-loader-gray.gif"/>');
+							destBox.css({
+								position : 'fixed',
+								left : $(window).width() - $('#docInfo').width() - 20,
+								// height : $(window).height() - 20,
+								top : 0
+							});
+							destBox.attr("data-top", destBox.position().top);
+						},
+						success : function(json) {
+							json = json['results']['bindings'];
+							$.each(json, function(key, value) {
+								if (value.object.type == 'uri') {
+									eval('uris.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+								} else if (value.object.type == 'bnode') {
+									eval('bnodes.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+								} else {
+									eval('values.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+								}
+							});
+							destBox.html('');
+							methods.formatDoc(destBox, values, uris, bnodes, URI);
+						},
+						error : function(e, b, v) {
+							destBox.html('');
+							values = [{
+								'http://system/msg' : 'risorsa non trovata: ' + destBox.attr('rel')
+							}];
+							methods.formatDoc(destBox, values, uris, bnodes, URI);
+						}
+					});
+				}
+			} else if (action == 'move') {
+				/*
+				 * if ($('#docInfo').height() > $(window).height() + 10) { $('#docInfo').css({ position : 'absolute', left : $(window).width() + $('body').scrollLeft() -
+				 * $('#docInfo').width() - 20, top : $('#docInfo').attr("data-top") }); } else { $('#docInfo').css({ position : 'fixed', left : $(window).width() -
+				 * $('#docInfo').width() - 20, top : 0 }); }
+				 */
+
+			} else {
+				$('#docInfo').fadeOut('fast', null, function() {
+					$('#docInfo').remove();
+				});
+			}
+
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	docInfo ');
+			}
+		},
+		processDraw : function(x1, y1, x2, y2, canvas, toId) {
+
+			try {
+				if (debugOn) {
+					start = new Date().getTime();
+				}
+				// recupero il nome della proprieta'
+				var label = "";
+
+				var lineStyle = "standardLine";
+				if ($("#" + toId).length > 0) {
+					label = canvas.attr("data-propertyName-" + toId);
+					var labeArray = label.split("\|");
+					label = "\n";
+					for (var o = 0; o < labeArray.length; o++) {
+						if (lodLiveProfile.arrows[$.trim(labeArray[o])]) {
+							lineStyle = lodLiveProfile.arrows[$.trim(labeArray[o])] + "Line";
+						}
+						var shortKey = $.trim(labeArray[o]);
+						
+						if(lodLiveProfile['labeler'][shortKey]){
+							// replace property with a specific label
+							shortKey = lodLiveProfile['labeler'][shortKey];
+						}else{
+							// otherwise just a portion of the URI
+							while (shortKey.indexOf('/') > -1) {
+								shortKey = shortKey.substring(shortKey.indexOf('/') + 1);
+							}
+							while (shortKey.indexOf('#') > -1) {
+								shortKey = shortKey.substring(shortKey.indexOf('#') + 1);
+							}
+						}
+						if (label.indexOf("\n" + shortKey + "\n") == -1) {
+							label += shortKey + "\n";
+						}
+					}
+				}
+				if (lineStyle == 'standardLine') {
+					context.lodlive(lineStyle, label, x1, y1, x2, y2, canvas, toId);
+				} else {
+					$().customLines(context, lineStyle, label, x1, y1, x2, y2, canvas, toId);
+				}
+
+				if (debugOn) {
+					console.debug((new Date().getTime() - start) + '	processDraw ');
+				}
+			} catch (e) {
+			}
+		},
+		drawAllLines : function(obj) {
+
+			var generated = $.jStorage.get('storeIds-generatedBy-' + obj.attr("id"));
+			var generatedRev = $.jStorage.get('storeIds-generatedByRev-' + obj.attr("id"));
+			// elimino la riga se già presente (in caso di
+			// spostamento di un
+			// box)
+			$('#line-' + obj.attr("id")).clearCanvas();
+			if (generated) {
+				for (var a = 0; a < generated.length; a++) {
+					methods.drawaLine(obj, $("#" + generated[a]));
+				}
+			}
+			if (generatedRev) {
+				for (var a = 0; a < generatedRev.length; a++) {
+					generated = $.jStorage.get('storeIds-generatedBy-' + generatedRev[a]);
+					$('#line-' + generatedRev[a]).clearCanvas();
+					if (generated) {
+						for (var a2 = 0; a2 < generated.length; a2++) {
+							methods.drawaLine($('#' + generatedRev[a]), $("#" + generated[a2]));
+						}
+					}
+				}
+
+			}
+		},
+		drawaLine : function(from, to, propertyName) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			var pos1 = from.position();
+			var pos2 = to.position();
+			var aCanvas = $("#line-" + from.attr("id"));
+			// console.debug(new Date().getTime()+'moving - '+(new Date())+" -
+			// #line-" +
+			// from.attr("id") + "-" + to.attr("id"))
+			if (aCanvas.length == 1) {
+				if (propertyName) {
+					aCanvas.attr("data-propertyName-" + to.attr("id"), propertyName);
+				}
+				methods.processDraw(pos1.left + from.width() / 2, pos1.top + from.height() / 2, pos2.left + to.width() / 2, pos2.top + to.height() / 2, aCanvas, to.attr("id"));
+			} else {
+				aCanvas = $("<canvas data-propertyName-" + to.attr("id") + "=\"" + propertyName + "\" height=\"" + context.height() + "\" width=\"" + context.width() + "\" id=\"line-" + from.attr("id") + "\"></canvas>");
+				context.append(aCanvas);
+				aCanvas.css({
+					'position' : 'absolute',
+					'zIndex' : '0',
+					'top' : 0,
+					'left' : 0
+				});
+				methods.processDraw(pos1.left + from.width() / 2, pos1.top + from.height() / 2, pos2.left + to.width() / 2, pos2.top + to.height() / 2, aCanvas, to.attr("id"));
+			}
+
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	drawaLine ');
+			}
+		},
+		// formatto ed inserisco i valori recuperati dal json
+		formatDoc : function(destBox, values, uris, bnodes, URI) {
+			if (debugOn) {
+				console.debug("formatDoc " + 0);
+				start = new Date().getTime();
+			}
+
+			// recupero il doctype per caricare le configurazioni specifiche
+			var docType = methods.getJsonValue(uris, 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'default');
+			// carico le configurazioni relative allo stile
+			destBox.addClass(methods.getProperty("document", "className", docType));
+			// ed ai path degli oggetti di tipo immagine
+			var images = methods.getProperty("images", "properties", docType);
+			// ed ai path dei link esterni
+			var weblinks = methods.getProperty("weblinks", "properties", docType);
+			// ed eventuali configurazioni delle proprietà da mostrare
+			// TODO: fare in modo che sia sempre possibile mettere il dominio come fallback
+			var propertiesMapper = methods.getProperty("document", "propertiesMapper", URI.replace(/(http:\/\/[^\/]+\/).+/, "$1"));
+
+			// se la proprieta' e' stata scritta come stringa la trasformo in un
+			// array
+			if ( typeof images == typeof '') {
+				images = [images];
+			}
+			if ( typeof weblinks == typeof '') {
+				weblinks = [weblinks];
+			}
+
+			var result = "<div></div>";
+			var jResult = $(result);
+			// destBox.append(jResult);
+
+			// estraggo i contenuti
+			var contents = [];
+			$.each(values, function(key, value) {
+				for (var akey in value) {
+					eval('contents.push({\'' + akey + '\':\'' + value[akey] + '\'})');
+				}
+			});
+			if (debugOn) {
+				console.debug("formatDoc " + 1);
+			}
+			// calcolo le uri e le url dei documenti correlati
+			var connectedImages = [];
+			var connectedWeblinks = [];
+			var types = [];
+
+			$.each(uris, function(key, value) {
+				for (var akey in value) {
+					// escludo la definizione della classe, le proprieta'
+					// relative alle immagini ed ai link web
+					if (akey != 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type') {
+						if ($.inArray(akey, images) != -1) {
+							eval('connectedImages.push({\'' + akey + '\':\'' + value[akey] + '\'})');
+						} else if ($.inArray(akey, weblinks) != -1) {
+							eval('connectedWeblinks.push({\'' + akey + '\':\'' + value[akey] + '\'})');
+						}
+					} else {
+						types.push(unescape(value[akey]));
+					}
+				}
+			});
+
+			if (debugOn) {
+				console.debug("formatDoc " + 2);
+			}
+			// aggiungo al box le immagini correlate
+			var imagesj = null;
+			if (connectedImages.length > 0) {
+				imagesj = $('<div class="section" style="height:80px"></div>');
+				$.each(connectedImages, function(key, value) {
+					for (var akey in value) {
+						imagesj.append("<a class=\"relatedImage\" href=\"" + unescape(value[akey]) + "\"><img src=\"" + unescape(value[akey]) + "\"/></a> ");
+					}
+				});
+			}
+			if (debugOn) {
+				console.debug("formatDoc " + 3);
+			}
+			var webLinkResult = null;
+			// aggiungo al box i link esterni correlati
+			if (connectedWeblinks.length > 0) {
+				webLinkResult = "<div class=\"section\"><ul style=\"padding:0;margin:0;display:block;overflow:hidden;tex-overflow:ellipses\">";
+				$.each(connectedWeblinks, function(key, value) {
+					for (var akey in value) {
+						webLinkResult += "<li><a class=\"relatedLink\" target=\"_blank\" data-title=\"" + akey + " \n " + unescape(value[akey]) + "\" href=\"" + unescape(value[akey]) + "\">" + unescape(value[akey]) + "</a></li>";
+					}
+				});
+				webLinkResult += "</ul></div>";
+				// jContents.append(webLinkResult);
+			}
+			if (debugOn) {
+				console.debug("formatDoc " + 4);
+			}
+			// aggiungo al box le informazioni descrittive della risorsa
+			var jContents = $('<div></div>');
+			var topSection = $('<div class="topSection sprite"><span>&#160;</span></div>');
+			jResult.append(topSection);
+			topSection.find('span').each(function() {
+				$(this).click(function() {
+					methods.docInfo('', 'close');
+				});
+				$(this).hover(function() {
+					topSection.setBackgroundPosition({
+						y : -410
+					});
+				}, function() {
+					topSection.setBackgroundPosition({
+						y : -390
+					});
+				});
+			});
+			if (debugOn) {
+				console.debug("formatDoc " + 5);
+			}
+			if (types.length > 0) {
+				var jSection = $("<div class=\"section\"><label data-title=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\">type</label><div></div></div>");
+				jSection.find('label').each(function() {
+					$(this).hover(function() {
+						methods.msg($(this).attr('data-title'), 'show');
+					}, function() {
+						methods.msg(null, 'hide');
+					});
+				});
+				for (var int = 0; int < types.length; int++) {
+					var shortKey = types[int];
+					// calcolo una forma breve per la
+					// visualizzazione
+					// dell'etichetta della proprieta'
+					while (shortKey.indexOf('/') > -1) {
+						shortKey = shortKey.substring(shortKey.indexOf('/') + 1);
+					}
+					while (shortKey.indexOf('#') > -1) {
+						shortKey = shortKey.substring(shortKey.indexOf('#') + 1);
+					}
+					jSection.children('div').append("<span title=\"" + types[int] + "\">" + shortKey + " </span>");
+				}
+				jContents.append(jSection);
+				jContents.append("<div class=\"separ sprite\"></div>");
+			}
+			if (debugOn) {
+				console.debug("formatDoc " + 6);
+			}
+			if (imagesj) {
+				jContents.append(imagesj);
+				jContents.append("<div class=\"separ sprite\"></div>");
+			}
+
+			if (webLinkResult) {
+				var jWebLinkResult = $(webLinkResult);
+				jWebLinkResult.find('a').each(function() {
+					$(this).hover(function() {
+						methods.msg($(this).attr('data-title'), 'show');
+					}, function() {
+						methods.msg(null, 'hide');
+					});
+				});
+				jContents.append(jWebLinkResult);
+				jContents.append("<div class=\"separ sprite\"></div>");
+			}
+			if (debugOn) {
+				console.debug("formatDoc " + 7);
+			}
+
+			if (propertiesMapper) {
+				$.each(propertiesMapper, function(filter, label) {
+					// show all properties
+					$.each(contents, function(key, value) {
+						for (var akey in value) {
+							if (filter == akey) {
+								var shortKey = label;
+								try {
+									var jSection = $("<div class=\"section\"><label data-title=\"" + akey + "\">" + shortKey + "</label><div>" + unescape(value[akey]) + "</div></div><div class=\"separ sprite\"></div>");
+									jSection.find('label').each(function() {
+										$(this).hover(function() {
+											methods.msg($(this).attr('data-title'), 'show');
+										}, function() {
+											methods.msg(null, 'hide');
+										});
+									});
+									jContents.append(jSection);
+								} catch (e) {
+									// /console.debug(value[akey] + " --- " + shortKey);
+								}
+								return true;
+							}
+						}
+					});
+				});
+
+			} else {
+				// show all properties
+				$.each(contents, function(key, value) {
+					for (var akey in value) {
+						var shortKey = akey;
+						// calcolo una forma breve per la visualizzazione
+						// dell'etichetta della proprieta'
+						while (shortKey.indexOf('/') > -1) {
+							shortKey = shortKey.substring(shortKey.indexOf('/') + 1);
+						}
+						while (shortKey.indexOf('#') > -1) {
+							shortKey = shortKey.substring(shortKey.indexOf('#') + 1);
+						}
+						try {
+
+							var jSection = $("<div class=\"section\"><label data-title=\"" + akey + "\">" + shortKey + "</label><div>" + unescape(value[akey]) + "</div></div><div class=\"separ sprite\"></div>");
+							jSection.find('label').each(function() {
+								$(this).hover(function() {
+									methods.msg($(this).attr('data-title'), 'show');
+								}, function() {
+									methods.msg(null, 'hide');
+								});
+							});
+							jContents.append(jSection);
+						} catch (e) {
+							// /console.debug(value[akey] + " --- " + shortKey);
+						}
+					}
+				});
+			}
+
+			if (bnodes.length > 0) {
+				// processo i blanknode
+				$.each(bnodes, function(key, value) {
+					for (var akey in value) {
+						var shortKey = akey;
+						// calcolo una forma breve per la visualizzazione
+						// dell'etichetta della proprieta'
+						while (shortKey.indexOf('/') > -1) {
+							shortKey = shortKey.substring(shortKey.indexOf('/') + 1);
+						}
+						while (shortKey.indexOf('#') > -1) {
+							shortKey = shortKey.substring(shortKey.indexOf('#') + 1);
+						}
+
+						var jBnode = $("<div class=\"section\"><label data-title=\"" + akey + "\">" + shortKey + "</label><span class=\"bnode\"></span></div><div class=\"separ sprite\"></div>");
+						jBnode.find('label').each(function() {
+							$(this).hover(function() {
+								methods.msg($(this).attr('data-title'), 'show');
+							}, function() {
+								methods.msg(null, 'hide');
+							});
+						});
+						methods.resolveBnodes(unescape(value[akey]), URI, jBnode, jContents);
+
+					}
+				});
+			}
+
+			if (contents.length == 0 && bnodes.length == 0) {
+				var jSection = $("<div class=\"section\"><label data-title=\"" + lang('resourceMissingDoc') + "\"></label><div>" + lang('resourceMissingDoc') + "</div></div><div class=\"separ sprite\"></div>");
+				jSection.find('label').each(function() {
+					$(this).hover(function() {
+						methods.msg($(this).attr('data-title'), 'show');
+					}, function() {
+						methods.msg(null, 'hide');
+					});
+				});
+				jContents.append(jSection);
+			}
+
+			destBox.append(jResult);
+			destBox.append(jContents);
+			// destBox.append("<div class=\"separLast\"></div>");
+
+			// aggiungo le funzionalita' per la visualizzazione delle immagini
+			jContents.find(".relatedImage").each(function() {
+				$(this).fancybox({
+					'transitionIn' : 'elastic',
+					'transitionOut' : 'elastic',
+					'speedIn' : 400,
+					'type' : 'image',
+					'speedOut' : 200,
+					'hideOnContentClick' : true,
+					'showCloseButton' : false,
+					'overlayShow' : false
+				});
+
+				$(this).find('img').each(function() {
+					$(this).load(function() {
+						if ($(this).width() > $(this).height()) {
+							$(this).height($(this).height() * 80 / $(this).width());
+							$(this).width(80);
+						} else {
+							$(this).width($(this).width() * 80 / $(this).height());
+							$(this).height(80);
+						}
+					});
+					$(this).error(function() {
+						$(this).attr("title", lang('noImage') + " \n" + $(this).attr("src"));
+						$(this).attr("src", "img/immagine-vuota-" + $.jStorage.get('selectedLanguage') + ".png");
+					});
+				});
+			});
+			if (jContents.height() + 40 > $(window).height()) {
+				destBox.find("div.separ:last").remove();
+				destBox.find("div.separLast").remove();
+				jContents.slimScroll({
+					height : $(window).height() - 40,
+					color : '#fff'
+				});
+			} else {
+				destBox.append("<div class=\"separLast\"></div>");
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	formatDoc ');
+			}
+		},
+		resolveBnodes : function(val, URI, destBox, jContents) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			var SPARQLquery = methods.composeQuery(val, 'bnode', URI);
+
+			$.jsonp({
+				url : SPARQLquery,
+				beforeSend : function() {
+					destBox.find('span[class=bnode]').html('<img src="img/ajax-loader-black.gif"/>');
+
+				},
+				success : function(json) {
+					destBox.find('span[class=bnode]').html('');
+					json = json['results']['bindings'];
+					$.each(json, function(key, value) {
+						var shortKey = value.property.value;
+						// calcolo una forma breve per la
+						// visualizzazione
+						// dell'etichetta della proprieta'
+						while (shortKey.indexOf('/') > -1) {
+							shortKey = shortKey.substring(shortKey.indexOf('/') + 1);
+						}
+						while (shortKey.indexOf('#') > -1) {
+							shortKey = shortKey.substring(shortKey.indexOf('#') + 1);
+						}
+						if (value.object.type == 'uri') {
+
+						} else if (value.object.type == 'bnode') {
+							var jBnode = $("<span><label data-title=\"" + value.property.value + "\"> / " + shortKey + "</label><span class=\"bnode\"></span></span>");
+							jBnode.find('label').each(function() {
+								$(this).hover(function() {
+									methods.msg($(this).attr('data-title'), 'show');
+								}, function() {
+									methods.msg(null, 'hide');
+								});
+							});
+							destBox.find('span[class=bnode]').attr("class", "").append(jBnode);
+							methods.resolveBnodes(value.object.value, URI, destBox, jContents);
+						} else {
+							destBox.find('span[class=bnode]').append('<div><em title="' + value.property.value + '">' + shortKey + "</em>: " + value.object.value + '</div>');
+							// destBox.find('span[class=bnode]').attr("class",
+							// "");
+						}
+						jContents.append(destBox);
+						if (jContents.height() + 40 > $(window).height()) {
+							jContents.slimScroll({
+								height : $(window).height() - 40,
+								color : '#fff'
+							});
+							jContents.parent().find("div.separLast").remove();
+						} else {
+							jContents.parent().append("<div class=\"separLast\"></div>");
+						}
+					});
+				},
+				error : function(e, b, v) {
+					destBox.find('span').html('');
+
+				}
+			});
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	resolveBnodes ');
+			}
+			return val;
+		},
+		format : function(destBox, values, uris, inverses) {
+
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			var containerBox = destBox.parent('div');
+			var thisUri = containerBox.attr('rel');
+
+			// recupero il doctype per caricare le configurazioni specifiche
+			var docType = methods.getJsonValue(uris, 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 'default');
+			if (thisUri.indexOf("~~") != -1) {
+				docType = 'bnode';
+			}
+			// carico le configurazioni relative allo stile
+			var aClass = methods.getProperty("document", "className", docType);
+			if (docType == 'bnode') {
+				aClass = 'bnode';
+			}
+			// destBox.addClass(aClass);
+			if (aClass == null || aClass == 'standard' || aClass == '') {
+				if ($.jStorage.get('classMap')[docType]) {
+					aClass = $.jStorage.get('classMap')[docType];
+				} else {
+					var classMap = $.jStorage.get('classMap');
+					aClass = "box" + $.jStorage.get('classMap').counter;
+					if ($.jStorage.get('classMap').counter == 13) {
+						classMap.counter = 1;
+						$.jStorage.set('classMap', classMap);
+					} else {
+						classMap.counter = classMap.counter + 1;
+						$.jStorage.set('classMap', classMap);
+					}
+					classMap[docType] = aClass;
+					$.jStorage.set('classMap', classMap);
+				}
+			}
+			containerBox.addClass(aClass);
+			// ed ai path da mostrare nel titolo del box
+			var titles = methods.getProperty("document", "titleProperties", docType);
+			// ed ai path degli oggetti di tipo immagine
+			var images = methods.getProperty("images", "properties", docType);
+			// ed ai path dei link esterni
+			var weblinks = methods.getProperty("weblinks", "properties", docType);
+			// e le latitudini
+			var lats = methods.getProperty("maps", "lats", docType);
+			// e le longitudini
+			var longs = methods.getProperty("maps", "longs", docType);
+			// e punti
+			var points = methods.getProperty("maps", "points", docType);
+
+			// se la proprieta' e' stata scritta come stringa la trasformo in un
+			// array
+			if ( typeof titles == typeof '') {
+				titles = [titles];
+			}
+			if ( typeof images == typeof '') {
+				images = [images];
+			}
+			if ( typeof weblinks == typeof '') {
+				weblinks = [weblinks];
+			}
+			if ( typeof lats == typeof '') {
+				lats = [lats];
+			}
+			if ( typeof longs == typeof '') {
+				longs = [longs];
+			}
+			if ( typeof points == typeof '') {
+				points = [points];
+			}
+
+			// gestisco l'inserimento di messaggi di sistema come errori o altro
+			titles.push('http://system/msg');
+
+			// aggiungo al box il titolo
+			var result = "<div class=\"boxTitle\"><span class=\"ellipsis_text\">";
+			var maxTitles = 3;
+			for (var a = 0; a < titles.length && maxTitles > 0; a++) {
+				var resultArray = methods.getJsonValue(values, titles[a], titles[a].indexOf('http') == 0 ? '' : titles[a]);
+				if (titles[a].indexOf('http') != 0) {
+					if (result.indexOf($.trim(unescape(titles[a])) + " \n") == -1) {
+						result += $.trim(unescape(titles[a])) + " \n";
+						maxTitles--;
+					}
+				} else {
+					for (var af = 0; af < resultArray.length; af++) {
+						if (result.indexOf(unescape(resultArray[af]) + " \n") == -1) {
+							result += unescape(resultArray[af]) + " \n";
+							maxTitles--;
+						}
+					}
+				}
+			}
+			if ((values.length == 0 && uris.length == 0) || containerBox.attr("data-endpoint").indexOf("http://system/dummy") == 0) {
+				if (containerBox.attr("data-endpoint").indexOf("http://system/dummy") != -1) {
+					containerBox.attr("data-endpoint", lang('endpointNotConfigured'));
+				}
+				if (uris.length == 0 && values.length == 0) {
+					result = "<div class=\"boxTitle\" threedots=\"" + lang('resourceMissing') + "\"><a target=\"_blank\" href=\"" + thisUri + "\"><span class=\"spriteLegenda\"></span>" + thisUri + "</a>";
+				}
+			}
+			result += "</span></div>";
+			var jResult = $(result);
+			if (jResult.text() == '' && docType == 'bnode') {
+				jResult.text('[blank node]');
+			} else if (jResult.text() == '') {
+				jResult.text(lang('noName'));
+			}
+			destBox.append(jResult);
+			if (!jResult.children().html() || jResult.children().html().indexOf(">") == -1) {
+				jResult.ThreeDots({
+					max_rows : 3
+				});
+			}
+			var el = jResult.find('.threedots_ellipsis');
+			if (el.length > 0) {
+				el.detach();
+				jResult.children('span').append(el);
+			}
+			var resourceTitle = jResult.text();
+			// posiziono il titolo al centro del box
+			jResult.css({
+				'marginTop' : jResult.height() == 13 ? 58 : jResult.height() == 26 ? 51 : 45,
+				'height' : jResult.height() + 5
+			});
+
+			destBox.hover(function() {
+				methods.msg(jResult.attr("threedots") == '' ? jResult.text() : jResult.attr("threedots") + " \n " + thisUri, 'show', 'fullInfo', containerBox.attr("data-endpoint"));
+			}, function() {
+				methods.msg(null, 'hide');
+			});
+
+			// calcolo le uri e le url dei documenti correlati
+			var connectedDocs = [];
+			var invertedDocs = [];
+			var propertyGroup = {};
+			var propertyGroupInverted = {};
+
+			var connectedImages = [];
+			var connectedLongs = [];
+			var connectedLats = [];
+
+			var sameDocControl = [];
+			$.each(uris, function(key, value) {
+				for (var akey in value) {
+
+					// escludo la definizione della classe, le proprieta'
+					// relative alle immagini ed ai link web
+					if (lodLiveProfile.uriSubstitutor) {
+						$.each(lodLiveProfile.uriSubstitutor, function(skey, svalue) {
+							value[akey] = value[akey].replace(svalue.findStr, svalue.replaceStr);
+						});
+					}
+					if ($.inArray(akey, images) > -1) {
+						eval('connectedImages.push({\'' + value[akey] + '\':\'' + escape(resourceTitle) + '\'})');
+						// to expand types } else if (akey !=
+						// 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' &&
+						// $.inArray(akey, weblinks) == -1) {
+					} else if ($.inArray(akey, weblinks) == -1) {
+						// controllo se trovo la stessa relazione in una
+						// proprieta' diversa
+						if ($.inArray(value[akey], sameDocControl) > -1) {
+							var aCounter = 0;
+							$.each(connectedDocs, function(key2, value2) {
+								for (var akey2 in value2) {
+									if (value2[akey2] == value[akey]) {
+										eval('connectedDocs[' + aCounter + '] = {\'' + akey2 + ' | ' + akey + '\':\'' + value[akey] + '\'}');
+									}
+								}
+								aCounter++;
+							});
+						} else {
+							eval('connectedDocs.push({\'' + akey + '\':\'' + value[akey] + '\'})');
+							sameDocControl.push(value[akey]);
+						}
+					}
+				}
+
+			});
+			if (inverses) {
+				sameDocControl = [];
+				$.each(inverses, function(key, value) {
+					for (var akey in value) {
+						if (docType == 'bnode' && value[akey].indexOf("~~") != -1) {
+							continue;
+						}
+						if (lodLiveProfile.uriSubstitutor) {
+							$.each(lodLiveProfile.uriSubstitutor, function(skey, svalue) {
+								value[akey] = value[akey].replace(escape(svalue.findStr), escape(svalue.replaceStr));
+							});
+						}
+						// controllo se trovo la stessa relazione in una
+						// proprieta' diversa
+						if ($.inArray(value[akey], sameDocControl) > -1) {
+							var aCounter = 0;
+							$.each(invertedDocs, function(key2, value2) {
+								for (var akey2 in value2) {
+									if (value2[akey2] == value[akey]) {
+										var theKey = akey2;
+										if (akey2 != akey) {
+											theKey = akey2 + ' | ' + akey;
+										}
+										eval('invertedDocs[' + aCounter + '] = {\'' + theKey + '\':\'' + value[akey] + '\'}');
+										return false;
+									}
+								}
+								aCounter++;
+							});
+						} else {
+							eval('invertedDocs.push({\'' + akey + '\':\'' + value[akey] + '\'})');
+							sameDocControl.push(value[akey]);
+						}
+
+					}
+				});
+			}
+			if ($.jStorage.get('doDrawMap', true)) {
+				for (var a = 0; a < points.length; a++) {
+					var resultArray = methods.getJsonValue(values, points[a], points[a]);
+					for (var af = 0; af < resultArray.length; af++) {
+						if (resultArray[af].indexOf(" ") != -1) {
+							eval('connectedLongs.push(\'' + unescape(resultArray[af].split(" ")[1]) + '\')');
+							eval('connectedLats.push(\'' + unescape(resultArray[af].split(" ")[0]) + '\')');
+						} else if (resultArray[af].indexOf("-") != -1) {
+							eval('connectedLongs.push(\'' + unescape(resultArray[af].split("-")[1]) + '\')');
+							eval('connectedLats.push(\'' + unescape(resultArray[af].split("-")[0]) + '\')');
+						}
+					}
+				}
+				for (var a = 0; a < longs.length; a++) {
+					var resultArray = methods.getJsonValue(values, longs[a], longs[a]);
+					for (var af = 0; af < resultArray.length; af++) {
+						eval('connectedLongs.push(\'' + unescape(resultArray[af]) + '\')');
+					}
+				}
+				for (var a = 0; a < lats.length; a++) {
+					var resultArray = methods.getJsonValue(values, lats[a], lats[a]);
+					for (var af = 0; af < resultArray.length; af++) {
+						eval('connectedLats.push(\'' + unescape(resultArray[af]) + '\')');
+					}
+				}
+
+				if (connectedLongs.length > 0 && connectedLats.length > 0) {
+					var mapsMap = $.jStorage.get("mapsMap", {});
+					mapsMap[containerBox.attr("id")] = {
+						longs : connectedLongs[0],
+						lats : connectedLats[0],
+						title : thisUri + "\n" + escape(resourceTitle)
+					};
+					$.jStorage.set('mapsMap', mapsMap);
+					methods.updateMapPanel($('#controlPanel'));
+				}
+			}
+			if ($.jStorage.get('doCollectImages', true)) {
+				if (connectedImages.length > 0) {
+					var imagesMap = $.jStorage.get("imagesMap", {});
+					imagesMap[containerBox.attr("id")] = connectedImages;
+					$.jStorage.set('imagesMap', imagesMap);
+					methods.updateImagePanel($('#controlPanel'));
+				}
+			}
+			var totRelated = connectedDocs.length + invertedDocs.length;
+
+			// se le proprieta' da mostrare sono troppe cerco di accorpare
+			// quelle uguali
+			if (totRelated > 16) {
+				$.each(connectedDocs, function(key, value) {
+					for (var akey in value) {
+						if (propertyGroup[akey]) {
+							var t = propertyGroup[akey];
+							t.push(value[akey]);
+							propertyGroup[akey] = t;
+						} else {
+							propertyGroup[akey] = [value[akey]];
+						}
+					}
+				});
+				$.each(invertedDocs, function(key, value) {
+					for (var akey in value) {
+						if (propertyGroupInverted[akey]) {
+							var t = propertyGroupInverted[akey];
+							t.push(value[akey]);
+							propertyGroupInverted[akey] = t;
+						} else {
+							propertyGroupInverted[akey] = [value[akey]];
+						}
+					}
+				});
+				totRelated = 0;
+				for (var prop in propertyGroup) {
+					if (propertyGroup.hasOwnProperty(prop)) {
+						totRelated++;
+					}
+				}
+				for (var prop in propertyGroupInverted) {
+					if (propertyGroupInverted.hasOwnProperty(prop)) {
+						totRelated++;
+					}
+				}
+			}
+
+			// calcolo le parti in cui dividere il cerchio per posizionare i
+			// link
+			// var chordsList = this.lodlive('circleChords',
+			// destBox.width() / 2 + 12, ((totRelated > 1 ? totRelated - 1 :
+			// totRelated) * 2) + 4, destBox.position().left + destBox.width() /
+			// 2, destBox.position().top + destBox.height() / 2, totRelated +
+			// 4);
+
+			var chordsList = methods.circleChords(75, 24, destBox.position().left + 65, destBox.position().top + 65);
+			var chordsListGrouped = methods.circleChords(95, 36, destBox.position().left + 65, destBox.position().top + 65);
+			// aggiungo al box i link ai documenti correlati
+			var a = 1;
+			var inserted = {};
+			var counter = 0;
+			var innerCounter = 1;
+
+			var objectList = [];
+			var innerObjectList = [];
+			$.each(connectedDocs, function(key, value) {
+				if (counter == 16) {
+					counter = 0;
+				}
+				if (a == 1) {
+				} else if (a == 15) {
+					a = 1;
+				}
+				for (var akey in value) {
+					var obj = null;
+					if (propertyGroup[akey] && propertyGroup[akey].length > 1) {
+						if (!inserted[akey]) {
+							innerCounter = 1;
+							inserted[akey] = true;
+							// var objBox = $("<div class=\"groupedRelatedBox
+							// sprite\" rel=\"" + MD5(akey) + "\" title=\"" +
+							// akey + "\" >" + (propertyGroup[akey].length) +
+							// "</div>");
+							var objBox = $("<div class=\"groupedRelatedBox sprite\" rel=\"" + MD5(akey) + "\"    data-title=\"" + akey + " \n " + (propertyGroup[akey].length) + " " + lang('connectedResources') + "\" ></div>");
+							// containerBox.append(objBox);
+							var akeyArray = akey.split(" ");
+							if (unescape(propertyGroup[akey][0]).indexOf('~~') != -1) {
+								objBox.addClass('isBnode');
+							} else {
+								for (var i = 0; i < akeyArray.length; i++) {
+									if (lodLiveProfile.arrows[akeyArray[i]]) {
+										objBox.addClass(lodLiveProfile.arrows[akeyArray[i]]);
+									}
+								}
+							}
+							objBox.attr('style', 'top:' + (chordsList[a][1] - 8) + 'px;left:' + (chordsList[a][0] - 8) + 'px');
+							objectList.push(objBox);
+							// containerBox.append('<div data-circlePos="' + a +
+							// '" class="showGroupedRelated ' + MD5(akey) +
+							// '"></div>');
+							a++;
+							counter++;
+						}
+						// var alredyInserted = $('.relatedBox',
+						// containerBox).length;
+						// if (alredyInserted <
+						// document.lodliveVars['relationsLimit']) {
+						if (innerCounter < 25) {
+							obj = $("<div class=\"aGrouped relatedBox sprite " + MD5(akey) + " " + MD5(unescape(value[akey])) + "\" rel=\"" + unescape(value[akey]) + "\"  data-title=\"" + akey + " \n " + unescape(value[akey]) + "\" ></div>");
+							// containerBox.append(obj);
+							obj.attr('style', 'display:none;position:absolute;top:' + (chordsListGrouped[innerCounter][1] - 8) + 'px;left:' + (chordsListGrouped[innerCounter][0] - 8) + 'px');
+							obj.attr("data-circlePos", innerCounter);
+							obj.attr("data-circleParts", 36);
+							obj.attr("data-circleId", containerBox.attr('id'));
+						}
+						/*
+						 * } else if (alredyInserted == document.lodliveVars['relationsLimit']) { $('.' + MD5(akey), containerBox).append('<span class="relatedBox" title="altri
+						 * elementi">[...]</span>'); }
+						 */
+						innerCounter++;
+					} else {
+						obj = $("<div class=\"relatedBox sprite " + MD5(unescape(value[akey])) + "\" rel=\"" + unescape(value[akey]) + "\"   data-title=\"" + akey + ' \n ' + unescape(value[akey]) + "\" ></div>");
+						// containerBox.append(obj);
+						obj.attr('style', 'top:' + (chordsList[a][1] - 8) + 'px;left:' + (chordsList[a][0] - 8) + 'px');
+						obj.attr("data-circlePos", a);
+						obj.attr("data-circleParts", 24);
+						a++;
+						counter++;
+					}
+					if (obj) {
+						obj.attr("data-circleId", containerBox.attr('id'));
+						obj.attr("data-property", akey);
+						// se si tratta di un Bnode applico una classe diversa
+						var akeyArray = akey.split(" ");
+						if (obj.attr('rel').indexOf('~~') != -1) {
+							obj.addClass('isBnode');
+						} else {
+							for (var i = 0; i < akeyArray.length; i++) {
+								if (lodLiveProfile.arrows[akeyArray[i]]) {
+									obj.addClass(lodLiveProfile.arrows[akeyArray[i]]);
+								}
+							}
+						}
+						if (obj.hasClass("aGrouped")) {
+							innerObjectList.push(obj);
+						} else {
+							objectList.push(obj);
+						}
+					}
+				}
+
+			});
+
+			inserted = {};
+			$.each(invertedDocs, function(key, value) {
+				if (counter == 16) {
+					counter = 0;
+				}
+				if (a == 1) {
+				} else if (a == 15) {
+					a = 1;
+				}
+				for (var akey in value) {
+					var obj = null;
+					if (propertyGroupInverted[akey] && propertyGroupInverted[akey].length > 1) {
+						if (!inserted[akey]) {
+							innerCounter = 1;
+							inserted[akey] = true;
+							// var objBox = $("<div class=\"groupedRelatedBox
+							// sprite\" rel=\"" + MD5(akey) + "\" title=\"" +
+							// akey + "\" >" + (propertyGroup[akey].length) +
+							// "</div>");
+							var objBox = $("<div class=\"groupedRelatedBox sprite inverse\" rel=\"" + MD5(akey) + "-i\"   data-title=\"" + akey + " \n " + (propertyGroupInverted[akey].length) + " " + lang('connectedResources') + "\" ></div>");
+							// containerBox.append(objBox);
+							var akeyArray = akey.split(" ");
+							if (unescape(propertyGroupInverted[akey][0]).indexOf('~~') != -1) {
+								objBox.addClass('isBnode');
+							} else {
+								for (var i = 0; i < akeyArray.length; i++) {
+									if (lodLiveProfile.arrows[akeyArray[i]]) {
+										objBox.addClass(lodLiveProfile.arrows[akeyArray[i]]);
+									}
+								}
+							}
+							objBox.attr('style', 'top:' + (chordsList[a][1] - 8) + 'px;left:' + (chordsList[a][0] - 8) + 'px');
+							// containerBox.append('<div data-circlePos="' + a +
+							// '" class="showGroupedRelated ' + MD5(akey) +
+							// '"></div>');
+							objectList.push(objBox);
+							a++;
+							counter++;
+						}
+						// var alredyInserted = $('.relatedBox',
+						// containerBox).length;
+						// if (alredyInserted <
+						// document.lodliveVars['relationsLimit']) {
+						if (innerCounter < 25) {
+							var destUri = unescape(value[akey].indexOf('~~') == 0 ? thisUri + value[akey] : value[akey]);
+							obj = $("<div class=\"aGrouped relatedBox sprite inverse " + MD5(akey) + "-i " + MD5(unescape(value[akey])) + " \" rel=\"" + destUri + "\"  data-title=\"" + akey + " \n " + unescape(value[akey]) + "\" ></div>");
+							// containerBox.append(obj);
+							obj.attr('style', 'display:none;position:absolute;top:' + (chordsListGrouped[innerCounter][1] - 8) + 'px;left:' + (chordsListGrouped[innerCounter][0] - 8) + 'px');
+							obj.attr("data-circlePos", innerCounter);
+							obj.attr("data-circleParts", 36);
+							obj.attr("data-circleId", containerBox.attr('id'));
+						}
+						/*
+						 * } else if (alredyInserted == document.lodliveVars['relationsLimit']) { $('.' + MD5(akey), containerBox).append('<span class="relatedBox" title="altri
+						 * elementi">[...]</span>'); }
+						 */
+						innerCounter++;
+					} else {
+						obj = $("<div class=\"relatedBox sprite inverse " + MD5(unescape(value[akey])) + "\" rel=\"" + unescape(value[akey]) + "\"   data-title=\"" + akey + ' \n ' + unescape(value[akey]) + "\" ></div>");
+						// containerBox.append(obj);
+						obj.attr('style', 'top:' + (chordsList[a][1] - 8) + 'px;left:' + (chordsList[a][0] - 8) + 'px');
+						obj.attr("data-circlePos", a);
+						obj.attr("data-circleParts", 24);
+						a++;
+						counter++;
+					}
+					if (obj) {
+						obj.attr("data-circleId", containerBox.attr('id'));
+						obj.attr("data-property", akey);
+						// se si tratta di un sameas applico una classe diversa
+						var akeyArray = akey.split(" ");
+
+						if (obj.attr('rel').indexOf('~~') != -1) {
+							obj.addClass('isBnode');
+						} else {
+							for (var i = 0; i < akeyArray.length; i++) {
+								if (lodLiveProfile.arrows[akeyArray[i]]) {
+									obj.addClass(lodLiveProfile.arrows[akeyArray[i]]);
+								}
+							}
+						}
+
+						if (obj.hasClass("aGrouped")) {
+							innerObjectList.push(obj);
+						} else {
+							objectList.push(obj);
+						}
+					}
+				}
+
+			});
+			var page = 0;
+			var totPages = objectList.length > 14 ? (objectList.length / 14 + (objectList.length % 14 > 0 ? 1 : 0)) : 1;
+			for (var i = 0; i < objectList.length; i++) {
+				if (i % 14 == 0) {
+					page++;
+					var aPage = $('<div class="page page' + page + '" style="display:none"></div>');
+					if (page > 1 && totPages > 1) {
+						aPage.append("<div class=\"pager pagePrev sprite\" data-page=\"page" + (page - 1) + "\" style=\"top:" + (chordsList[0][1] - 8) + "px;left:" + (chordsList[0][0] - 8) + "px\"></div>");
+					}
+					if (totPages > 1 && page < totPages - 1) {
+						aPage.append("<div class=\"pager pageNext sprite\" data-page=\"page" + (page + 1) + "\" style=\"top:" + (chordsList[15][1] - 8) + "px;left:" + (chordsList[15][0] - 8) + "px\"></div>");
+					}
+					containerBox.append(aPage);
+				}
+				containerBox.children('.page' + page).append(objectList[i]);
+			}
+			page = 0;
+			totPages = innerObjectList.length / 24 + (innerObjectList.length % 24 > 0 ? 1 : 0);
+			if (innerObjectList.length > 0) {
+				containerBox.append('<div class="innerPage"></div>');
+				for (var i = 0; i < innerObjectList.length; i++) {
+					containerBox.children('.innerPage').append(innerObjectList[i]);
+				}
+			}
+			containerBox.children('.page1').fadeIn('fast');
+			containerBox.children('.page').children('.pager').click(function() {
+				var pager = $(this);
+				containerBox.find('.lastClick').removeClass('lastClick').click();
+				pager.parent().fadeOut('fast', null, function() {
+					$(this).parent().children('.' + pager.attr("data-page")).fadeIn('fast');
+				});
+			}); {
+				var obj = $("<div class=\"actionBox contents\" rel=\"contents\"  >&#160;</div>");
+				containerBox.append(obj);
+				obj.hover(function() {
+					$(this).parent().children('.box').setBackgroundPosition({
+						y : -260
+					});
+				}, function() {
+					$(this).parent().children('.box').setBackgroundPosition({
+						y : 0
+					});
+				});
+				obj = $("<div class=\"actionBox tools\" rel=\"tools\" >&#160;</div>");
+				containerBox.append(obj);
+				obj.hover(function() {
+					$(this).parent().children('.box').setBackgroundPosition({
+						y : -130
+					});
+				}, function() {
+					$(this).parent().children('.box').setBackgroundPosition({
+						y : 0
+					});
+				});
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	format ');
+			}
+		},
+		circleChords : function(radius, steps, centerX, centerY, breakAt, onlyElement) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			var values = [];
+			var i = 0;
+			if (onlyElement) {
+				// ottimizzo i cicli evitando di calcolare elementi che non
+				// servono
+				i = onlyElement;
+				var radian = (2 * Math.PI) * (i / steps);
+				values.push([centerX + radius * Math.cos(radian), centerY + radius * Math.sin(radian)]);
+			} else {
+				for (; i < steps; i++) {
+					// calcolo le coodinate lungo il cerchio del box per
+					// posizionare
+					// strumenti ed altre risorse
+					var radian = (2 * Math.PI) * (i / steps);
+					values.push([centerX + radius * Math.cos(radian), centerY + radius * Math.sin(radian)]);
+				}
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	circleChords ');
+			}
+			return values;
+			// console.debug(xValues)
+			// console.debug(yValues)
+		},
+		getJsonValue : function(map, key, defaultValue) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			var returnVal = [];
+			$.each(map, function(skey, value) {
+				for (var akey in value) {
+					if (akey == key) {
+						returnVal.push(unescape(value[akey]));
+					}
+				}
+			});
+			if (returnVal == []) {
+				returnVal = [defaultValue];
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	getJsonValue');
+			}
+			return returnVal;
+		},
+		getProperty : function(area, prop, context) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			if ( typeof context == typeof '') {
+				if (lodLiveProfile[context] && lodLiveProfile[context][area]) {
+					if (prop) {
+						return lodLiveProfile[context][area][prop] ? lodLiveProfile[context][area][prop] : lodLiveProfile['default'][area][prop];
+					} else {
+						return lodLiveProfile[context][area] ? lodLiveProfile[context][area] : lodLiveProfile['default'][area];
+					}
+
+				}
+			} else {
+
+				for (var a = 0; a < context.length; a++) {
+					if (lodLiveProfile[context[a]] && lodLiveProfile[context[a]][area]) {
+						if (prop) {
+							return lodLiveProfile[context[a]][area][prop] ? lodLiveProfile[context[a]][area][prop] : lodLiveProfile['default'][area][prop];
+						} else {
+							return lodLiveProfile[context[a]][area] ? lodLiveProfile[context[a]][area] : lodLiveProfile['default'][area];
+						}
+
+					}
+				}
+			}
+
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	getProperty');
+			}
+			if (lodLiveProfile['default'][area]) {
+				if (prop) {
+					return lodLiveProfile['default'][area][prop];
+				} else {
+					return lodLiveProfile['default'][area];
+				}
+			} else {
+				return '';
+			}
+		},
+		parseRawResource : function(destBox, resource, fromInverse) {
+
+			var values = [];
+			var uris = [];
+			if (lodLiveProfile['default']) {
+				// attivo lo sparql interno basato su sesame
+				var res = getSparqlConf('documentUri', lodLiveProfile['default'], lodLiveProfile).replace(/\{URI\}/ig, resource);
+				var url = lodLiveProfile['default'].endpoint + "?uri=" + encodeURIComponent(resource) + "&query=" + encodeURIComponent(res);
+				if ($.jStorage.get('showInfoConsole')) {
+					methods.queryConsole('log', {
+						title : lang('endpointNotConfiguredSoInternal'),
+						text : res,
+						uriId : resource
+					});
+				}
+				$.jsonp({
+					url : url,
+					beforeSend : function() {
+						destBox.children('.box').html('<img style=\"margin-top:' + (destBox.children('.box').height() / 2 - 8) + 'px\" src="img/ajax-loader.gif"/>');
+					},
+					success : function(json) {
+						json = json['results']['bindings'];
+						var conta = 0;
+						$.each(json, function(key, value) {
+							conta++;
+							if (value.object.type == 'uri') {
+								if (value.object.value != resource) {
+									eval('uris.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+								}
+							} else {
+								eval('values.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+							}
+						});
+						if (debugOn) {
+							console.debug((new Date().getTime() - start) + '	openDoc eval uris & values');
+						}
+						var inverses = [];
+						var callback = function() {
+							destBox.children('.box').html('');
+							methods.format(destBox.children('.box'), values, uris, inverses);
+							methods.addClick(destBox, fromInverse ? function() {
+								try {
+									$(fromInverse).click();
+								} catch (e) {
+								}
+							} : null);
+							if ($.jStorage.get('doAutoExpand')) {
+								methods.autoExpand(destBox);
+							}
+						};
+						if ($.jStorage.get('doAutoSameas')) {
+							var counter = 0;
+							var tot = 0;
+							$.each(lodLiveProfile.connection, function(key, value) {
+								tot++;
+							});
+							methods.findInverseSameAs(resource, counter, inverses, callback, tot);
+						} else {
+							callback();
+						}
+
+					},
+					error : function(e, j, k) {
+						// console.debug(e);console.debug(j);
+						destBox.children('.box').html('');
+						var inverses = [];
+						if (fromInverse) {
+							eval('uris.push({\'' + fromInverse.replace(/div\[data-property="([^"]*)"\].*/, '$1') + '\':\'' + fromInverse.replace(/.*\[rel="([^"]*)"\].*/, '$1') + '\'})');
+						}
+						methods.format(destBox.children('.box'), values, uris, inverses);
+						methods.addClick(destBox, fromInverse ? function() {
+							try {
+								$(fromInverse).click();
+							} catch (e) {
+							}
+						} : null);
+						if ($.jStorage.get('doAutoExpand')) {
+							methods.autoExpand(destBox);
+						}
+					}
+				});
+			} else {
+				// console.debug(e);console.debug(j);
+				destBox.children('.box').html('');
+				var inverses = [];
+				if (fromInverse) {
+					eval('uris.push({\'' + fromInverse.replace(/div\[data-property="([^"]*)"\].*/, '$1') + '\':\'' + fromInverse.replace(/.*\[rel="([^"]*)"\].*/, '$1') + '\'})');
+				}
+				methods.format(destBox.children('.box'), values, uris, inverses);
+				methods.addClick(destBox, fromInverse ? function() {
+					try {
+						$(fromInverse).click();
+					} catch (e) {
+					}
+				} : null);
+				if ($.jStorage.get('doAutoExpand')) {
+					methods.autoExpand(destBox);
+				}
+			}
+		},
+		openDoc : function(anUri, destBox, fromInverse) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			var uris = [];
+			var values = [];
+			if ($.jStorage.get('showInfoConsole')) {
+				methods.queryConsole('init', {
+					uriId : anUri
+				});
+				methods.queryConsole('log', {
+					uriId : anUri,
+					resource : anUri
+				});
+			}
+			SPARQLquery = methods.composeQuery(anUri, 'documentUri');
+			if ($.jStorage.get('doStats')) {
+				methods.doStats(anUri);
+			}
+			if (SPARQLquery.indexOf("endpoint=") != -1) {
+				var endpoint = SPARQLquery.substring(SPARQLquery.indexOf("endpoint=") + 9);
+				endpoint = endpoint.substring(0, endpoint.indexOf("&"));
+				destBox.attr("data-endpoint", endpoint);
+			} else {
+				destBox.attr("data-endpoint", SPARQLquery.substring(0, SPARQLquery.indexOf("?")));
+			}
+			if (SPARQLquery.indexOf("http://system/dummy") == 0) {
+				// guessing endpoint from URI
+				methods.guessingEndpoint(anUri, function() {
+					methods.openDoc(anUri, destBox, fromInverse);
+				}, function() {
+					methods.parseRawResource(destBox, anUri, fromInverse);
+				});
+			} else {
+
+				$.jsonp({
+					url : SPARQLquery,
+					beforeSend : function() {
+						destBox.children('.box').html('<img style=\"margin-top:' + (destBox.children('.box').height() / 2 - 8) + 'px\" src="img/ajax-loader.gif"/>');
+					},
+					success : function(json) {
+						json = json['results']['bindings'];
+						// var tot = json.length;
+						var conta = 0;
+						// var aSpan = $('<span style="color:#000"><br />gg0/' +
+						// tot + '</span>');
+						// destBox.children('.box').append(aSpan);
+						// var control = {};
+						$.each(json, function(key, value) {
+							conta++;
+							if (value.object.type == 'uri' || value.object.type == 'bnode') {
+								if (value.object.value != anUri) {
+									if (value.object.type == 'bnode') {
+										eval('uris.push({\'' + value['property']['value'] + '\':\'' + escape(anUri + '~~' + value.object.value) + '\'})');
+									} else {
+										eval('uris.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+									}
+								}
+							} else {
+								eval('values.push({\'' + value['property']['value'] + '\':\'' + escape(value.object.value) + '\'})');
+							}
+
+						});
+						if ($.jStorage.get('showInfoConsole')) {
+							methods.queryConsole('log', {
+								founded : conta,
+								id : SPARQLquery,
+								uriId : anUri
+							});
+						}
+						if (debugOn) {
+							console.debug((new Date().getTime() - start) + '	openDoc eval uris & values');
+						}
+						destBox.children('.box').html('');
+						if ($.jStorage.get('doInverse')) {
+							SPARQLquery = methods.composeQuery(anUri, 'inverse');
+
+							var inverses = [];
+							$.jsonp({
+								url : SPARQLquery,
+								beforeSend : function() {
+									destBox.children('.box').html('<img style=\"margin-top:' + (destBox.children('.box').height() / 2 - 5) + 'px\" src="img/ajax-loader.gif"/>');
+
+								},
+								success : function(json) {
+									json = json['results']['bindings'];
+									var conta = 0;
+									// var tot = json.length;
+									// var aSpan = $('<span
+									// style="color:#000"><br />0/' + tot +
+									// '</span>');
+									// destBox.children('.box').append(aSpan);
+									$.each(json, function(key, value) {
+										conta++;
+										eval('inverses.push({\'' + value['property']['value'] + '\':\'' + (value.object.type == 'bnode' ? anUri + '~~' : '') + escape(value.object.value) + '\'})');
+										// aSpan.text(conta + '/' + tot);
+									});
+									if ($.jStorage.get('showInfoConsole')) {
+										methods.queryConsole('log', {
+											founded : conta,
+											id : SPARQLquery,
+											uriId : anUri
+										});
+									}
+									if (debugOn) {
+										console.debug((new Date().getTime() - start) + '	openDoc inverse eval uris ');
+									}
+									var callback = function() {
+										destBox.children('.box').html('');
+										methods.format(destBox.children('.box'), values, uris, inverses);
+										methods.addClick(destBox, fromInverse ? function() {
+											try {
+												$(fromInverse).click();
+											} catch (e) {
+											}
+										} : null);
+										if ($.jStorage.get('doAutoExpand')) {
+											methods.autoExpand(destBox);
+										}
+									};
+									if ($.jStorage.get('doAutoSameas')) {
+										var counter = 0;
+										var tot = 0;
+										$.each(lodLiveProfile.connection, function(key, value) {
+											tot++;
+										});
+										methods.findInverseSameAs(anUri, counter, inverses, callback, tot);
+									} else {
+										callback();
+									}
+
+								},
+								error : function(e, b, v) {
+									destBox.children('.box').html('');
+									methods.format(destBox.children('.box'), values, uris);
+									if ($.jStorage.get('showInfoConsole')) {
+										methods.queryConsole('log', {
+											error : 'error',
+											id : SPARQLquery,
+											uriId : anUri
+										});
+									}
+									methods.addClick(destBox, fromInverse ? function() {
+										try {
+											$(fromInverse).click();
+										} catch (e) {
+										}
+									} : null);
+									if ($.jStorage.get('doAutoExpand')) {
+										methods.autoExpand(destBox);
+									}
+								}
+							});
+						} else {
+							methods.format(destBox.children('.box'), values, uris);
+							methods.addClick(destBox, fromInverse ? function() {
+								try {
+									$(fromInverse).click();
+								} catch (e) {
+								}
+							} : null);
+							if ($.jStorage.get('doAutoExpand')) {
+								methods.autoExpand(destBox);
+							}
+						}
+					},
+					error : function(e, b, v) {
+						methods.errorBox(destBox);
+					}
+				});
+
+			}
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	openDoc');
+			}
+		},
+		errorBox : function(destBox) {
+
+			destBox.children('.box').addClass("errorBox");
+			destBox.children('.box').html('');
+			var jResult = $("<div class=\"boxTitle\"><span>" + lang('enpointNotAvailable') + "</span></div>");
+			destBox.children('.box').append(jResult);
+			jResult.css({
+				'marginTop' : jResult.height() == 13 ? 58 : jResult.height() == 26 ? 51 : 45
+			});
+			var obj = $("<div class=\"actionBox tools\">&#160;</div>");
+			obj.click(function() {
+				methods.removeDoc(destBox);
+			});
+			destBox.append(obj);
+			destBox.children('.box').hover(function() {
+				methods.msg(lang('enpointNotAvailableOrSLow'), 'show', 'fullInfo', destBox.attr("data-endpoint"));
+			}, function() {
+				methods.msg(null, 'hide');
+			});
+
+		},
+		allClasses : function(SPARQLquery, destBox, destSelect, template) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+
+			SPARQLquery = methods.composeQuery(SPARQLquery, 'allClasses');
+			var classes = [];
+			$.jsonp({
+				url : SPARQLquery,
+				beforeSend : function() {
+					destBox.html('<img src="img/ajax-loader.gif"/>');
+				},
+				success : function(json) {
+					destBox.html(lang('choose'));
+					json = json['results']['bindings'];
+					$.each(json, function(key, value) {
+						var aclass = json[key].object.value;
+						if (aclass.indexOf('http://www.openlinksw.com/') == -1) {
+							aclass = aclass.replace(/http:\/\//, "");
+							classes.push(aclass);
+						}
+
+					});
+					for (var i = 0; i < classes.length; i++) {
+						destSelect.append(template.replace(/\{CONTENT\}/g, classes[i]));
+					}
+				},
+				error : function(e, b, v) {
+					destSelect.append(template.replace(/\{CONTENT\}/g, 'si è verificato un errore'));
+				}
+			});
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	allClasses');
+			}
+		},
+		findInverseSameAs : function(anUri, counter, inverse, callback, tot) {
+
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			var innerCounter = 0;
+			$.each(lodLiveProfile.connection, function(key, value) {
+
+				if (innerCounter == counter) {
+					var skip = false;
+					var keySplit = key.split(",");
+					if (!value.useForInverseSameAs) {
+						skip = true;
+					} else {
+						for (var a = 0; a < keySplit.length; a++) {
+							// salto i sameas interni allo stesso endpoint
+							if (anUri.indexOf(keySplit[a]) != -1) {
+								skip = true;
+							}
+						}
+					}
+					if (skip) {
+						counter++;
+						if (counter < tot) {
+							methods.findInverseSameAs(anUri, counter, inverse, callback, tot);
+						} else {
+							callback();
+						}
+						return false;
+					}
+					var SPARQLquery = value.endpoint + "?" + (value.endpointType ? $.jStorage.get('endpoints')[value.endpointType] : $.jStorage.get('endpoints')['all']) + "&query=" + escape(getSparqlConf('inverseSameAs', value, lodLiveProfile).replace(/\{URI\}/g, anUri));
+					if (value.proxy) {
+						SPARQLquery = value.proxy + '?endpoint=' + value.endpoint + "&" + (value.endpointType ? $.jStorage.get('endpoints')[value.endpointType] : $.jStorage.get('endpoints')['all']) + "&query=" + escape(getSparqlConf('inverseSameAs', value, lodLiveProfile).replace(/\{URI\}/g, anUri));
+					}
+					$.jsonp({
+						url : SPARQLquery,
+						timeout : 3000,
+						beforeSend : function() {
+							if ($.jStorage.get('showInfoConsole')) {
+								methods.queryConsole('log', {
+									title : value.endpoint,
+									text : getSparqlConf('inverseSameAs', value, lodLiveProfile).replace(/\{URI\}/g, anUri),
+									id : SPARQLquery,
+									uriId : anUri
+								});
+							}
+						},
+						success : function(json) {
+							json = json['results']['bindings'];
+							var conta = 0;
+							$.each(json, function(key, value) {
+								conta++;
+								if (value.property && value.property.value) {
+									eval('inverse.splice(1,0,{\'' + value.property.value + '\':\'' + escape(value.object.value) + '\'})');
+								} else {
+									eval('inverse.splice(1,0,{\'' + 'http://www.w3.org/2002/07/owl#sameAs' + '\':\'' + escape(value.object.value) + '\'})');
+								}
+							});
+							if ($.jStorage.get('showInfoConsole')) {
+								methods.queryConsole('log', {
+									founded : conta,
+									id : SPARQLquery,
+									uriId : anUri
+								});
+							}
+							counter++;
+							if (counter < tot) {
+								methods.findInverseSameAs(anUri, counter, inverse, callback, tot);
+							} else {
+								callback();
+							}
+						},
+						error : function(e, b, v) {
+							if ($.jStorage.get('showInfoConsole')) {
+								methods.queryConsole('log', {
+									error : 'error',
+									id : SPARQLquery,
+									uriId : anUri
+								});
+							}
+							counter++;
+							if (counter < tot) {
+								methods.findInverseSameAs(anUri, counter, inverse, callback, tot);
+							} else {
+								callback();
+							}
+						}
+					});
+					if (debugOn) {
+						console.debug((new Date().getTime() - start) + '	findInverseSameAs ' + value.endpoint);
+					}
+				}
+				innerCounter++;
+			});
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	findInverseSameAs');
+			}
+		},
+		findSubject : function(SPARQLquery, selectedClass, selectedValue, destBox, destInput) {
+			if (debugOn) {
+				start = new Date().getTime();
+			}
+			$.each(lodLiveProfile.connection, function(key, value) {
+				var keySplit = key.split(",");
+				for (var a = 0; a < keySplit.length; a++) {
+					if (SPARQLquery.indexOf(keySplit[a]) != -1) {
+						SPARQLquery = value.endpoint + "?" + (value.endpointType ? $.jStorage.get('endpoints')[value.endpointType] : $.jStorage.get('endpoints')['all']) + "&query=" + escape(getSparqlConf('findSubject', value, lodLiveProfile).replace(/\{CLASS\}/g, selectedClass).replace(/\{VALUE\}/g, selectedValue));
+						if (value.proxy) {
+							SPARQLquery = value.proxy + "?endpoint=" + value.endpoint + "&" + (value.endpointType ? $.jStorage.get('endpoints')[value.endpointType] : $.jStorage.get('endpoints')['all']) + "&query=" + escape(getSparqlConf('findSubject', value, lodLiveProfile).replace(/\{CLASS\}/g, selectedClass).replace(/\{VALUE\}/g, selectedValue));
+						}
+					}
+				}
+			});
+			var values = [];
+			$.jsonp({
+				url : SPARQLquery,
+				beforeSend : function() {
+					destBox.html('<img src="img/ajax-loader.gif"/>');
+				},
+				success : function(json) {
+					destBox.html('');
+					json = json['results']['bindings'];
+					$.each(json, function(key, value) {
+						values.push(json[key].subject.value);
+					});
+					for (var i = 0; i < values.length; i++) {
+						// console.debug(destInput)
+						destInput.val(values[i]);
+					}
+				},
+				error : function(e, b, v) {
+					destBox.html('errore: ' + e);
+				}
+			});
+			if (debugOn) {
+				console.debug((new Date().getTime() - start) + '	findSubject');
+			}
+		},
+		/* start lines */
+		standardLine : function(label, x1, y1, x2, y2, canvas, toId) {
+
+			// eseguo i calcoli e scrivo la riga di connessione tra i cerchi
+			var lineangle = (Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI) + 180;
+			var x2bis = x1 - Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) + 60;
+			// canvas.detectPixelRatio();
+			canvas.rotateCanvas({
+				rotate : lineangle,
+				x : x1,
+				y : y1
+			}).drawLine({
+				strokeStyle : "#fff",
+				strokeWidth : 1,
+				strokeCap : 'bevel',
+				x1 : x1 - 60,
+				y1 : y1,
+				x2 : x2bis,
+				y2 : y1
+			});
+
+			if (lineangle > 90 && lineangle < 270) {
+				canvas.rotateCanvas({
+					rotate : 180,
+					x : (x2bis + x1) / 2,
+					y : (y1 + y1) / 2
+				});
+			}
+			label = $.trim(label).replace(/\n/g, ', ');
+			canvas.drawText({// inserisco l'etichetta
+				fillStyle : "#606060",
+				strokeStyle : "#606060",
+				x : (x2bis + x1 + ((x1 + 60) > x2 ? -60 : +60)) / 2,
+				y : (y1 + y1 - ((x1 + 60) > x2 ? 18 : -18)) / 2,
+				text : ((x1 + 60) > x2 ? " « " : "") + label + ((x1 + 60) > x2 ? "" : " » "),
+				align : "center",
+				strokeWidth : 0.01,
+				fontSize : 11,
+				fontFamily : "'Open Sans',Verdana"
+			}).restoreCanvas().restoreCanvas();
+
+			// ed inserisco la freccia per determinarne il verso della
+			// relazione
+			lineangle = Math.atan2(y2 - y1, x2 - x1);
+			var angle = 0.79;
+			var h = Math.abs(8 / Math.cos(angle));
+			var fromx = x2 - 60 * Math.cos(lineangle);
+			var fromy = y2 - 60 * Math.sin(lineangle);
+			var angle1 = lineangle + Math.PI + angle;
+			var topx = (x2 + Math.cos(angle1) * h) - 60 * Math.cos(lineangle);
+			var topy = (y2 + Math.sin(angle1) * h) - 60 * Math.sin(lineangle);
+			var angle2 = lineangle + Math.PI - angle;
+			var botx = (x2 + Math.cos(angle2) * h) - 60 * Math.cos(lineangle);
+			var boty = (y2 + Math.sin(angle2) * h) - 60 * Math.sin(lineangle);
+
+			canvas.drawLine({
+				strokeStyle : "#fff",
+				strokeWidth : 1,
+				x1 : fromx,
+				y1 : fromy,
+				x2 : botx,
+				y2 : boty
+			});
+			canvas.drawLine({
+				strokeStyle : "#fff",
+				strokeWidth : 1,
+				x1 : fromx,
+				y1 : fromy,
+				x2 : topx,
+				y2 : topy
+			});
+		}
+	}
+	/* end lines */;
+	$.fn.lodlive = function(method) {
+		if (methods[method]) {
+			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+		} else if ( typeof method === 'object' || !method) {
+			return methods.init.apply(this, arguments);
+		} else {
+			$.error('Method ' + method + ' does not exist on jQuery.lodlive');
+		}
+	};
+
+})(jQuery, $.jStorage.get('profile'));

+ 88 - 0
js/lodlive.custom-lines.js

@@ -0,0 +1,88 @@
+(function($) {
+
+	var methods = {
+		isSameAsLine : function(label, x1, y1, x2, y2, canvas, toId) {
+
+			// eseguo i calcoli e scrivo la riga di connessione tra i cerchi
+			var lineangle = (Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI) + 180;
+			var x2bis = x1 - Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) + 60;
+			//canvas.detectPixelRatio();
+			canvas.rotateCanvas({
+				rotate : lineangle,
+				x : x1,
+				y : y1
+			}).drawLine({
+				strokeStyle : "#000",
+				strokeWidth : 1,
+				strokeCap : 'bevel',
+				x1 : x1 - 60,
+				y1 : y1,
+				x2 : x2bis,
+				y2 : y1
+			});
+
+			if (lineangle > 90 && lineangle < 270) {
+				canvas.rotateCanvas({
+					rotate : 180,
+					x : (x2bis + x1) / 2,
+					y : (y1 + y1) / 2
+				});
+			}
+			label = $.trim(label).replace(/\n/g, ', ');
+			canvas.drawText({// inserisco l'etichetta
+				fillStyle : "#000",
+				strokeStyle : "#000",
+				x : (x2bis + x1 + ((x1 + 60) > x2 ? -60 : +60)) / 2,
+				y : (y1 + y1 - ((x1 + 60) > x2 ? 18 : -18)) / 2,
+				text : ((x1 + 60) > x2 ? " « " : "") + label + ((x1 + 60) > x2 ? "" : " » "),
+				align : "center",
+				strokeWidth : 0.01,
+				fontSize : 11,
+				fontFamily : "'Open Sans',Verdana"
+			}).restoreCanvas().restoreCanvas();
+
+			// ed inserisco la freccia per determinarne il verso della
+			// relazione
+			lineangle = Math.atan2(y2 - y1, x2 - x1);
+			var angle = 0.79;
+			var h = Math.abs(8 / Math.cos(angle));
+			var fromx = x2 - 60 * Math.cos(lineangle);
+			var fromy = y2 - 60 * Math.sin(lineangle);
+			var angle1 = lineangle + Math.PI + angle;
+			var topx = (x2 + Math.cos(angle1) * h) - 60 * Math.cos(lineangle);
+			var topy = (y2 + Math.sin(angle1) * h) - 60 * Math.sin(lineangle);
+			var angle2 = lineangle + Math.PI - angle;
+			var botx = (x2 + Math.cos(angle2) * h) - 60 * Math.cos(lineangle);
+			var boty = (y2 + Math.sin(angle2) * h) - 60 * Math.sin(lineangle);
+
+			canvas.drawLine({
+				strokeStyle : "#000",
+				strokeWidth : 1,
+				x1 : fromx,
+				y1 : fromy,
+				x2 : botx,
+				y2 : boty
+			});
+			canvas.drawLine({
+				strokeStyle : "#000",
+				strokeWidth : 1,
+				x1 : fromx,
+				y1 : fromy,
+				x2 : topx,
+				y2 : topy
+			});
+		}
+	};
+
+	$.fn.customLines = function(context, method) {
+		if (methods[method]) {
+			return methods[method].apply(this, Array.prototype.slice.call(arguments, 2));
+		} else if ( typeof method === 'object' || !method) {
+			return methods.init.apply(this, arguments);
+		} else {
+			var args = Array.prototype.slice.call(arguments, 2);
+			args.unshift('standardLine');
+			context.lodlive.apply(null, args);
+		}
+	};
+})(jQuery);

+ 215 - 0
js/lodlive.lang.js

@@ -0,0 +1,215 @@
+$.jStorage.set('language', {
+	it : {
+		restart : 'riavvia',
+		generateInverse : 'calcola relazioni inverse',
+		autoExpand : 'espandi automaticamente le relazioni',
+		autoSameAs : 'calcola relazioni inverse di tipo sameAs',
+		autoCollectImages : 'raccogli le immagini durante la navigazione',
+		autoDrawMap : 'geolocalizza le risorse',
+		noName : 'denominazione non trovata',
+		addUri : 'inserisci una uri',
+		findResource : 'cerca una risorsa',
+		choose : 'scegli...',
+		resourceMissing : 'risorsa non trovata',
+		resourceMissingDoc : 'non sono state trovate proprietà di tipo literal per la risorsa per la lingua impostata o la risorsa non è momentaneamente disponibile nell\'endpoint',
+		options : 'OPZIONI',
+		endpointNotConfigured : 'nessun endpoint configurato per la risorsa',
+		endpointNotConfiguredSoInternal : 'nessun endpoint configurato per la risorsa, generazione grafo temporaneo',
+		impostaUnaURI : 'imposta un uri, esegui una ricerca \no scegli tra gli esempi proposti',
+		example : 'esempio',
+		noIe : 'Siamo spiacenti ma attualmente Internet Explorer non &egrave; totalmente supportato.',
+		enpointNotAvailable : 'errore: endpoint non disponibile',
+		enpointNotAvailableOrSLow : 'errore: endpoint non disponibile o richiesta scaduta',
+		imagesNotFound : 'nessuna immagine per le risorse aperte',
+		mapNotFound : 'nessuna mappa per le riorse aperte',
+		propsNotFound : 'nessuna propriet&agrave; trovata',
+		propsFound : 'propriet&agrave; trovate',
+		showResource : 'evidenza la risorsa',
+		zoomIn : 'ingrandisci',
+		showConsole : 'mostra la console delle ricerche (sperimentale)',
+		executeThisQuery : 'esegui la query SPARQL in una nuova finestra',
+		moreInfoOnThis : 'maggiori informazioni su questa risorsa',
+		simpleSearch : 'ricerca semplice',
+		simpleSearchDescription : 'DBpedia.org e Freebase consentono di interrogare le proprie risorse per parola chiave.<br /><br />Scegliendo un dataset e digitando almeno tre lettere di una parola chiave è possibile trovare gli URI delle risorse che si vuole esplorare.',
+		insertUri : 'inserisci un URI',
+		insertUriDescription : 'LodLive è in grado di analizzare e rappresentare risorse RDF anche se non supportate da un EndPoint per l\'accesso SPARQL.<br /><br />Inserendo un qualsiasi URI ad una risorsa RDF è possibile esplorarne contenuti e relazioni.',
+		insertData : 'esplora i tuoi dati',
+		liveLodLive : 'Scegliendo un endpoint tra quelli configurati è possibile navigare la risorsa e ricavare, attraverso delle query SPARQL preimpostate, non solo le proprietà dirette, ma anche tutte le proprietà inverse indipendentemente dal dataset di appartenenza.',
+		centerClose : 'centra e chiudi le altre risorse',
+		openOnline : 'visualizza la risorsa online',
+		openRelated : 'espandi tutte le relazioni',
+		removeResource : 'rimuovi questo box',
+		noImage:'immagine non disponibile',
+		connectedResources:'risorse collegate'
+	},
+	en : {
+		restart : 'restart',
+		generateInverse : 'generate inverse relations',
+		autoExpand : 'auto-expand mode',
+		autoSameAs : 'generate inverse sameAs relations',
+		autoCollectImages : 'collect images during browsing',
+		autoDrawMap : 'geolocalize resources',
+		noName : 'no title provided',
+		addUri : 'insert an URI',
+		findResource : 'find resources',
+		choose : 'choose...',
+		resourceMissing : 'resource not found',
+		resourceMissingDoc : 'literal values not found or the resource is missing or not available in the endpoint',
+		options : 'OPTIONS',
+		endpointNotConfigured : 'no endpoint configured for the resource',
+		endpointNotConfiguredSoInternal : 'no endpoint configured for the resource, generating temporary graph',
+		impostaUnaURI : 'insert an uri, make a query or choose one of the examples provided',
+		example : 'example',
+		noIe : 'Sorry but Internet Explorer is not totally supported.',
+		enpointNotAvailable : 'error: endpoint not available',
+		enpointNotAvailableOrSLow : 'error: endpoint not available or the request timed out',
+		imagesNotFound : 'no images for the opened resources',
+		mapNotFound : 'no maps for the opened resources',
+		propsNotFound : 'nothing found',
+		propsFound : 'properties found',
+		showResource : 'highlight the resource',
+		zoomIn : 'zoom in',
+		showConsole : 'show console (experimental)',
+		executeThisQuery : 'execute the SPARQL query in a new window',
+		moreInfoOnThis : 'more info on this resource',
+		simpleSearch : 'simple search',
+		simpleSearchDescription : 'DBpedia.org and Freebase allow  their resources to be queried through keywords.<br/><br/>You will be able to find the URIs of the resources  you want to explore by choosing a dataset and typing at least three letters of a keyword for it.',
+		insertUri : 'insert URI',
+		insertUriDescription : 'LodLive is able to analyse and "show"  RDF resources even when they are  not supported by a SPARQL access EndPoint.<br/><br/>By entering any URI to an RDF resource,  you will be able to explore contents and relationships.',
+		insertData : 'browse your data',
+		centerClose : 'focus on the resource',
+		openOnline : 'access the online resource',
+		openRelated : 'expand related resources',
+		removeResource : 'remove this box',
+		noImage:'image not available',
+		connectedResources:'connected resources'
+	},
+	pt : {
+		restart : 'recomeçar',
+		generateInverse : 'gerar relações inversas',
+		autoExpand : 'modo auto-expandido',
+		autoSameAs : 'gerar relações inversas sameAs',
+		autoCollectImages : 'recolher imagens durante navegação',
+		autoDrawMap : 'recursos geolocalizados',
+		noName : 'título não fornecido',
+		addUri : 'inserir um URI',
+		findResource : 'encontrar recursos',
+		choose : 'escolher...',
+		resourceMissing : 'recurso não encontrado',
+		resourceMissingDoc : 'valores literais não encontrados ou o recurso está em falta ou não está disponível no no endpoint',
+		options : 'OPÇÕES',
+		endpointNotConfigured : 'nenhum endpoint configurado para o recurso',
+		endpointNotConfiguredSoInternal : 'nenhum endpoint configurado para o recurso, a gerar gráfico temporário',
+		impostaUnaURI : 'inserir um uri, fazer um query ou escolher um dos exemplos fornecidos',
+		example : 'exemplo',
+		noIe : 'Desculpe mas o Internet Explorer não é totalmente suportado.',
+		enpointNotAvailable : 'erro: endpoint não disponível',
+		enpointNotAvailableOrSLow : 'erro: endpoint não disponível ou o pedido esgotou o tempo',
+		imagesNotFound : 'sem imagens para o recurso aberto',
+		mapNotFound : 'sem mapas para o recurso aberto',
+		propsNotFound : 'nada encontrado',
+		propsFound : 'foram encontradas propriedades',
+		showResource : 'destacar o recurso',
+		zoomIn : 'ampliar',
+		showConsole : 'ver consola (experimental)',
+		executeThisQuery : 'executar a query SPARQL numa nova janela',
+		moreInfoOnThis : 'mais informações sobre este recurso',
+		simpleSearch : 'pesquisa simples',
+		simpleSearchDescription : 'DBpedia.org e Freebase permitem que os seus recursos sejam pesquisados através de palavras chaves.<br/><br/>Poderá encontrar os URIs dos recursos que deseja explorar por escolher um dataset e escrever pelo menos três letras de uma palavra chave a pesquisar.',
+		insertUri : 'inserir um URI',
+		insertUriDescription : 'LodLive consegue analizar e "apresentar" recursos RDF mesmo quando eles não são suportados por um EndPoint pelo acesso SPARQL.<br/><br/>Por introduzir um URI para um recurso RDF, poderá explorar os conteúdos e relações entre eles.',
+		insertData : 'listar os dados',
+		centerClose : 'focalizar no recurso',
+		openOnline : 'aceder ao recurso online',
+		openRelated : 'expandir recursos relacionados',
+		removeResource : 'remover esta caixa',
+		noImage:'imagem não disponível',
+		connectedResources:'recursos relacionados'
+	},
+		fr : {
+		restart : 'redémarrer',
+		generateInverse : 'générer les relations inverses',
+		autoExpand : 'mode auto-expansion',
+		autoSameAs : 'générer les relations inverses sameAs',
+		autoCollectImages : 'récupération des images pendant la navigation',
+		autoDrawMap : 'géolocaliser les ressources',
+		noName : 'sans titre',
+		addUri : 'insérer une URI',
+		findResource : 'chercher ressources',
+		choose : 'choisir...',
+		resourceMissing : 'ressource inconnue',
+		resourceMissingDoc : 'valeurs littérales inconnues ou ressource inconnue ou ressource inaccessible au point d\'accès',
+		options : 'OPTIONS',
+		endpointNotConfigured : 'aucun endpoint n\'est configuré pour cette ressource',
+		endpointNotConfiguredSoInternal : 'aucun endpoint n\'est configuré pour la ressource , génération d\'un graphe temporaire',
+		impostaUnaURI : 'saisir une URI, faire une recherche ou choisir un des exemples fournis',
+		example : 'exemple',
+		noIe : 'Désolé, Internet Explorer n\'est pas complètement supporté',
+		enpointNotAvailable : 'erreur: point d\'accès non disponible',
+		enpointNotAvailableOrSLow : 'erreur: point d\'accès non disponible ou délai dépassé',
+		imagesNotFound : 'aucune image pour les ressources en cours',
+		mapNotFound : 'aucune carte pour les ressources en cours',
+		propsNotFound : 'aucun résultat',
+		propsFound : 'propriétés trouvées',
+		showResource : 'surligner la ressource',
+		zoomIn : 'zoomer',
+		showConsole : 'afficher la console (expérimental)',
+		executeThisQuery : 'exécuter la requête SPARQL query dans une nouvelle fenêtre',
+		moreInfoOnThis : 'plus d\'informations sur cette ressource',
+		simpleSearch : 'simple recherche',
+		simpleSearchDescription : 'DBpedia.org et Freebase autorise les recherches par mots-clés.<br/><br/>Vous pouvez trouver les URI des ressources que vous cherchez en choisissant un jeu de données et en tapant au moins trois lettres d\'un mot clé .',
+		insertUri : 'insérer une URI',
+		insertUriDescription : 'LodLive is capable d\'analyser et de montrer des ressources RDF, y compris quand elles ne sont pas supportées par un point d\'accès SPARQL<br/><br/>En entrant une URI vers une ressource RDF,  vous serez capable d\'explorer son contenu et ses relations.',
+		insertData : 'parcourir vos données',
+		centerClose : 'se recentrer sur cette ressource',
+		openOnline : 'accéder à la ressource en ligne',
+		openRelated : 'déployer toutes les ressources associées',
+		removeResource : 'retirer cette entrée',
+		noImage:'image indisponible',
+		connectedResources:'ressources reliées'
+	},
+	gl : {
+		restart : 'volver ao inicio',
+		generateInverse : 'xerar as relacións inversas',
+		autoExpand : 'modo autoexpansión',
+		autoSameAs : 'xerar relacións sameAs inversas',
+		autoCollectImages : 'recuperación das imaxes durante a navegación',
+		autoDrawMap : 'xeolocalización dos recursos',
+		noName : 'sen título',
+		addUri : 'insira unha URI',
+		findResource : 'buscar recursos',
+		choose : 'seleccione...',
+		resourceMissing : 'non se atopou o recurso',
+		resourceMissingDoc : 'non se atoparon valores literais ou a busca non está dispoñíbel no punto de acceso neste momento',
+		options : 'OPCIÓNS',
+		endpointNotConfigured : 'non hai ningún punto de acceso configurado para o recurso',
+		endpointNotConfiguredSoInternal : 'non hai ningún punto de acceso configurado para o recurso, xerando un grafo temporal',
+		impostaUnaURI : 'insira unha uri, faga unha consulta ou escolla unha de entre os exemplos que se ofrecen',
+		example : 'exemplo',
+		noIe : 'Desafortunadamente o soporte para Internet Explorer non está totalmente finalizado.',
+		enpointNotAvailable : 'erro: punto de acceso non dispoñíbel',
+		enpointNotAvailableOrSLow : 'erro: punto de acceso non dispoñíbel ou a consulta demorou demasiado',
+		imagesNotFound : 'non hai imaxes para os recursos abertos',
+		mapNotFound : 'non hai mapas para os recursos abertos',
+		propsNotFound : 'non se atoparon propiedades',
+		propsFound : 'atopáronse propiedades',
+		showResource : 'destacar o recurso',
+		zoomIn : 'ampliar',
+		showConsole : 'amosar a consola (experimental)',
+		executeThisQuery : 'executar a consulta SPARQL nunha nova xanela',
+		moreInfoOnThis : 'máis información sobre este recurso',
+		simpleSearch : 'busca simple',
+		simpleSearchDescription : 'DBpedia.org e Freebase permiten a busca mediante palabras chave.<br/><br/>Pode atopar a URI do recurso que desexe explorar seleccionando un conxunto de datos e escribindo, cando menos, as tres primeiras letras dunha palabra chave.',
+		insertUri : 'insira unha URI',
+		insertUriDescription : 'LodLive é capaz de analizar e amosar recursos RDF mesmo sen o soporte dun punto de acceso SPARQL.<br/><br/>Introducindo unha URI a un recurso RDF, poderá explorar contidos e relacións.',
+		insertData : 'explore os seus datos',
+		centerClose : 'centrar este recurso e pechar os demais',
+		openOnline : 'acceder ao recurso en liña',
+		openRelated : 'expandir todas as relacións',
+		removeResource : 'eliminar este recurso',
+		noImage:'imaxe non dispoñíbel',
+		connectedResources:'recursos ligados'
+	}
+});
+
+$.jStorage.set('selectedLanguage', 'en');

+ 117 - 0
js/lodlive.profile-localhost-example.js

@@ -0,0 +1,117 @@
+/*
+ just an example of configuration useful to redirect all the request on the same endpoint
+ */
+
+$.jStorage.set('profile', {
+	// parametri di connessione agli endpoint
+	'connection' : {
+		/*matching all the requested URIs*/
+		'http://' : {
+			description : {
+				en : 'just a test'
+			},
+			useForInverseSameAs : true,
+			/*change this*/
+			endpoint : 'http://localhost:8890/sparql',
+			examples : [{
+				label : 'test 1',
+				uri : 'http://mysite.com/aaa'
+			}, {
+				label : 'test 2',
+				uri : 'http://your.com/bbbb'
+			}]
+		}
+	},
+	arrows : {
+		'http://www.w3.org/2002/07/owl#sameAs' : 'isSameAs',
+		'http://purl.org/dc/terms/isPartOf' : 'isPartOf',
+		'http://purl.org/dc/elements/1.1/type' : 'isType',
+		'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' : 'isType'
+	},
+	uriSubstitutor : [{
+		findStr : 'mpii.de/yago/resource/',
+		replaceStr : 'yago-knowledge.org/resource/'
+	}],
+
+	// configurazione standard per la rappresentazione di un documento
+	// utilizzata nel caso manchi una specifica configurazione per la classe
+	'default' : {
+		sparql : {
+			allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+			findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+			documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object} ORDER BY ?property',
+			document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+			bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+			inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+			inverseSameAs : 'SELECT DISTINCT * WHERE {{?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}> } UNION { ?object <http://www.w3.org/2004/02/skos/core#exactMatch> <{URI}>}}'
+		},
+		endpoint : 'http://labs.regesta.com/resourceProxy/',
+		document : {
+			className : 'standard',
+			titleProperties : ['http://dati.senato.it/osr/titolo', 'http://www.w3.org/2004/02/skos/core#notation', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#value', 'http://www.geonames.org/ontology#name', 'http://purl.org/dc/elements/1.1/title', 'http://purl.org/dc/terms/title', 'http://www.w3.org/2000/01/rdf-schema#label', 'http://www.w3.org/2004/02/skos/core#prefLabel', 'http://logd.tw.rpi.edu/source/visualizing-org/dataset/2010-global-agenda-council-interlinkage-survey/vocab/enhancement/1/how_councils_interlink', 'http://rdf.freebase.com/ns/type.object.name', 'http://spcdata.digitpa.gov.it/nome_cognome', 'http://xmlns.com/foaf/0.1/firstName', 'http://xmlns.com/foaf/0.1/lastName', 'http://xmlns.com/foaf/0.1/surname', 'http://xmlns.com/foaf/0.1/name', 'http://purl.org/dc/terms/description', 'http://www.geonames.org/ontology/officialName']
+		}, // http://www.w3.org/2000/01/rdf-schema#label
+		images : {
+			properties : ['http://www.w3.org/2006/vcard/ns#photo', 'http://xmlns.com/foaf/0.1/depiction', 'http://dbpedia.org/ontology/thumbnail', 'http://dbpedia.org/property/logo', 'http://linkedgeodata.org/ontology/schemaIcon']
+		},
+		maps : {
+			longs : ['http://www.w3.org/2003/01/geo/wgs84_pos#long'],
+			lats : ['http://www.w3.org/2003/01/geo/wgs84_pos#lat'],
+			points : ['http://www.georss.org/georss/point']
+		},
+		weblinks : {
+			properties : ['http://www.w3.org/ns/dcat#accessURL', 'http://xmlns.com/foaf/0.1/mbox', 'http://rdfs.org/sioc/ns#links_to', 'http://it.dbpedia.org/property/url', 'http://data.nytimes.com/elements/search_api_query', 'http://www.w3.org/2000/01/rdf-schema#isDefinedBy', 'http://xmlns.com/foaf/0.1/page', 'http://xmlns.com/foaf/0.1/homepage', 'http://purl.org/dc/terms/isReferencedBy', 'http://purl.org/dc/elements/1.1/relation', 'http://dbpedia.org/ontology/wikiPageExternalLink', 'http://data.nytimes.com/elements/topicPage']
+		}
+	},
+
+	'http://www.w3.org/2002/07/owl#Class' : {
+		document : {
+			className : 'Class'/*,
+			 titleProperties : ['http://purl.org/dc/elements/1.1/title', 'http://www.w3.org/2000/01/rdf-schema#label']*/
+		}
+	},
+	'http://www.w3.org/2002/07/owl#ObjectProperty' : {
+		document : {
+			className : 'ObjectProperty'
+		}
+	},
+	'http://www.w3.org/2002/07/owl#Restriction' : {
+		document : {
+			className : 'DatatypeProperty'
+		}
+	},
+	'http://www.w3.org/2002/07/owl#DatatypeProperty' : {
+		document : {
+			className : 'DatatypeProperty'
+		}
+	},
+	'http://www.w3.org/2002/07/owl#Property' : {
+		document : {
+			className : 'Property'
+		}
+	},
+	'http://www.w3.org/ns/locn#Address' : {
+		document : {
+			titleProperties : ['http://www.w3.org/ns/locn#fullAddress']
+		}
+	}
+
+});
+if (!document.lodliveVars) {
+	document.lodliveVars = {};
+}
+
+$.jStorage.set('boxTemplate', '<div class="boxWrapper" id="first"><div class="box sprite"></div></div>');
+$.jStorage.set('relationsLimit', 25);
+$.jStorage.set('doStats', $.jStorage.get('doStats', true));
+$.jStorage.set('doInverse', $.jStorage.get('doAutoExpand', true));
+$.jStorage.set('doAutoExpand', $.jStorage.get('doAutoExpand', true));
+$.jStorage.set('doAutoSameas', $.jStorage.get('doAutoSameas', true));
+$.jStorage.set('doCollectImages', $.jStorage.get('doCollectImages', true));
+$.jStorage.set('doDrawMap', $.jStorage.get('doDrawMap', true));
+$.jStorage.set('showInfoConsole', $.jStorage.get('showInfoConsole', true));
+
+$.jStorage.set('endpoints', {
+	all : 'output=json&format=application/json&timeout=0',
+	arcSparql : 'output=json&jsonp=lodlive',
+	sesame : 'Accept=application/sparql-results%2Bjson'
+});

+ 855 - 0
js/lodlive.profile.js

@@ -0,0 +1,855 @@
+$.jStorage
+        .set(
+                'profile',
+                {
+                    // parametri di connessione agli endpoint
+                    'connection' : {
+                        // base degli about dei documenti non dell'ontologia
+                        'http://www.archiviodistato.prato.it' : {
+                            description : {
+                                en : 'smart access to digital heritage and memory'
+                            },
+                            useForInverseSameAs : false,
+
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object. FILTER(?property != <http://dbpedia.org/ontology/wikiPageWikiLink>)} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object ?t <{URI}> } '
+                            },
+                            endpoint : 'http://dev.restore.ovi.cnr.it:8890/sparql',
+                            examples : [ {
+                                uri : 'http://www.archiviodistato.prato.it/accedi-e-consulta/aspoMV001/scheda/IT-ASPO-AU00003-0003637',
+                                label : 'Lapo Mazzei'
+                            }, {
+                                uri : 'http://www.archiviodistato.prato.it/accedi-e-consulta/aspoMV001/scheda/IT-ASPO-AU00003-0001806',
+                                label : 'Francesco di Marco Datini'
+                            } ]
+                        },
+
+                        'https://palazzopretorio.prato.it' : {
+                            description : {
+                                en : 'smart access to digital heritage and memory'
+                            },
+                            useForInverseSameAs : false,
+
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object. FILTER(?property != <http://dbpedia.org/ontology/wikiPageWikiLink>)} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object ?t <{URI}> } '
+                            },
+                            endpoint : 'http://dev.restore.ovi.cnr.it:8890/sparql',
+                            examples : [ {
+                                uri : 'https://palazzopretorio.prato.it/it/le-opere/alcuni-capolavori/ritratto-di-francesco-di-marco-datini-1678',
+                                label : 'Ritratto di Francesco di Marco Datini'
+                            }, {
+                                uri : 'https://palazzopretorio.prato.it/it/le-opere/alcuni-capolavori/1221-decollazione-di-san-giovanni-battista',
+                                label : 'Decollazione di San Giovanni Battista'
+                            } ]
+                        },
+                        
+                        'http://datini.archiviodistato.prato.it' : {
+                            description : {
+                                en : 'smart access to digital heritage and memory'
+                            },
+                            useForInverseSameAs : false,
+
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object. FILTER(?property != <http://dbpedia.org/ontology/wikiPageWikiLink>)} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object ?t <{URI}> } '
+                            },
+                            endpoint : 'http://dev.restore.ovi.cnr.it:8890/sparql',
+                            examples : [ {
+                                uri : 'http://datini.archiviodistato.prato.it/la-ricerca/scheda/ASPO00119155',
+                                label : 'Datini Francesco di Marco e Compagnia'
+                            }, {
+                                uri : 'http://datini.archiviodistato.prato.it/la-ricerca/scheda/ASPO00119739',
+                                label : 'Mannini Luigi e Salvestro'
+                            } ]
+                        },
+
+                        'http://www.cidoc-crm.org' : {
+                            description : {
+                                en : 'cidoc ontology v.6.2.1 (2018)'
+                            },
+                            useForInverseSameAs : false,
+
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?object WHERE {<{URI}> <http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER (lang(?object) = "en")}   LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object. FILTER ((?property = <http://www.w3.org/2000/01/rdf-schema#label> || ?property = <http://purl.org/dc/elements/1.1/title>)) FILTER (langMatches( lang(?object), "en" ))} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object ?t <{URI}> } ',
+                            },
+                            endpoint : 'http://dev.restore.ovi.cnr.it:8890/sparql',
+                            examples : [ {
+                                uri : 'http://www.cidoc-crm.org/cidoc-crm/E73_Information_Object',
+                                label : 'Information Object'
+                            } ]
+                        },
+
+                        
+                        'http://vocab.getty.edu' : {
+                            description : {
+                                en : 'Getty Vocabulary'
+                            },
+                            useForInverseSameAs : false,
+
+                            sparql : {
+                                findSubject : 'SELECT DISTINCT ?object WHERE {<{URI}> <http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER (lang(?object) = "en")}   LIMIT 1  ',
+                            },
+                            endpoint : 'http://dev.restore.ovi.cnr.it:8890/sparql',
+                            examples : [ {
+                                uri : 'http://vocab.getty.edu/aat/300055644',
+                                label : 'Height'
+                            } ]
+                        },
+                        
+                        'http://iconclass.org' : {
+                            description : {
+                                en : 'Iconclass'
+                            },
+                            useForInverseSameAs : false,
+
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                documentUri : 'SELECT DISTINCT * WHERE {{<{URI}> ?property ?object. FILTER(?property != <http://www.w3.org/2004/02/skos/core#prefLabel> && ?property != <http://www.w3.org/2004/02/skos/core#notation>)} UNION { <{URI}> ?property ?object. FILTER (langMatches( lang(?object), "it" )) }} ORDER BY ?property',
+                                
+                                //findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                //documentUri : 'SELECT DISTINCT * WHERE { { <{URI}> <http://www.w3.org/2004/02/skos/core#prefLabel> ?object . FILTER (langMatches( lang(?object), "it" ))} UNION { <{URI}> ?property ?object. FILTER (?property != <http://www.w3.org/2004/02/skos/core#prefLabel>) } } ORDER BY ?property,
+                                //findSubject : 'SELECT DISTINCT ?object WHERE {<{URI}> <http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER (lang(?object) = "it")}   LIMIT 1  ',
+                                //documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object. FILTER ((?property = <http://www.w3.org/2004/02/skos/core#prefLabel> || ?property = <http://purl.org/dc/elements/1.1/title>)) FILTER (langMatches( lang(?object), "it" ))} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object ?t <{URI}> } ',
+                            },
+                            endpoint : 'http://dev.restore.ovi.cnr.it:8890/sparql',
+                            examples : [ {
+                                uri : 'http://iconclass.org/61B2%28FrancescodiMarcoDatini%29',
+                                label : 'Francesco di Marco Datini'
+                            } ]
+                        },
+
+                        'http://www.mirabileweb.it' : {
+                            description : {
+                                en : 'Manoscript'
+                            },
+                            useForInverseSameAs : false,
+
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object. FILTER(?property != <http://dbpedia.org/ontology/wikiPageWikiLink>)} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object ?t <{URI}> } '
+                            },
+                            endpoint : 'http://dev.restore.ovi.cnr.it:8890/sparql',
+                            examples : [ {
+                                uri : 'http://www.mirabileweb.it/manuscript/firenze-biblioteca-medicea-laurenziana-corali-2-manoscript/31259',
+                                label : 'Manoscritto Corali 2'
+                            } ]
+                        },
+
+                        'http://fr.dbpedia.org' : {
+                            description : {
+                                fr : 'DBpédia en français est le chapitre francophone de DBpedia, il s\'inscrit dans l\'effort d\'internationalisation de DBpedia dont le but est de maintenir des données structurées extraites de différents chapitres de Wikipedia.',
+                                en : 'French version of DBpedia'
+                            },
+                            useForInverseSameAs : false,
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object  WHERE {[] a ?object} ORDER BY ?object  LIMIT 50  ',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} } LIMIT 1',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object.FILTER ((( isIRI(?object) && ?property != <http://xmlns.com/foaf/0.1/depiction> )|| ?property = <http://www.w3.org/2000/01/rdf-schema#label>  || ?property = <http://www.georss.org/georss/point> || ?property = <http://xmlns.com/foaf/0.1/surname> || ?property = <http://xmlns.com/foaf/0.1/name> || ?property = <http://purl.org/dc/elements/1.1/title>))}  ORDER BY ?property',
+                                document : 'SELECT DISTINCT *  WHERE  {{<{URI}> ?property ?object. FILTER(!isLiteral(?object))} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="fr")} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="en")} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="it")}}  ORDER BY ?property',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}>}'
+                            },
+                            endpoint : 'http://fr.dbpedia.org/sparql',
+                            examples : [ {
+                                uri : 'http://fr.dbpedia.org/resource/France',
+                                label : 'France'
+                            }, {
+                                uri : 'http://fr.dbpedia.org/resource/Resource_Description_Framework',
+                                label : 'Resource Description Framework'
+                            } ]
+                        },
+                        'http://linked.opendata.cz' : {
+                            description : {
+                                it : 'European Central Bank Exchange Rates (relative to EUR); Common Procurement Vocabulary 2008 converted to RDF; RDF data extracted from excel files published at czso.cz with demographic data; RDF data extracted from excel files published at czso.cz with regions (IDs and hierarchy); Dataset about Czech courts including contacts and abbreviations; Hierarchical list of the Nomenclature of territorial units for statistics - NUTS and the Statistical regions of Europe - 2008 edition; Hierarchical list of the Nomenclature of territorial units for statistics - NUTS and the Statistical regions of Europe - 2008 edition; Metadata for acts from zakonyprolidi.cz - two sample expressions; Metadata for acts from psp.cz; Publications exported from the application OBD UK; Budgets of Czech municipalities; Czech municipalities.',
+                                en : 'European Central Bank Exchange Rates (relative to EUR); Common Procurement Vocabulary 2008 converted to RDF; RDF data extracted from excel files published at czso.cz with demographic data; RDF data extracted from excel files published at czso.cz with regions (IDs and hierarchy); Dataset about Czech courts including contacts and abbreviations; Hierarchical list of the Nomenclature of territorial units for statistics - NUTS and the Statistical regions of Europe - 2008 edition; Hierarchical list of the Nomenclature of territorial units for statistics - NUTS and the Statistical regions of Europe - 2008 edition; Metadata for acts from zakonyprolidi.cz - two sample expressions; Metadata for acts from psp.cz; Publications exported from the application OBD UK; Budgets of Czech municipalities; Czech municipalities.'
+                            },
+                            useForInverseSameAs : false,
+                            endpoint : 'http://linked.opendata.cz/sparql/',
+                            examples : [ {
+                                label : 'Czech municipalities',
+                                uri : 'http://linked.opendata.cz/resource/municipality/00232173'
+                            }, {
+                                label : 'Publications exported from the application OBD UK',
+                                uri : 'http://linked.opendata.cz/resource/publications/people/cz/cuni/16667789'
+                            }, {
+                                label : 'Budgets of Czech municipalities',
+                                uri : 'http://linked.opendata.cz/resource/wwwinfo.mfcr.cz/income-statement/00573124'
+                            } ]
+                        },
+                        'http://dati.culturaitalia.it' : {
+                            description : {
+                                it : 'Il progetto pilota dati.culturaitalia.it contiene set di open data aggregati in CulturaItalia e rilasciati dai partner del progetto con licenza "CC0 1.0 Universal Public Domain Dedication".',
+                                en : 'Il progetto pilota dati.culturaitalia.it contiene set di open data aggregati in CulturaItalia e rilasciati dai partner del progetto con licenza "CC0 1.0 Universal Public Domain Dedication".'
+                            },
+                            useForInverseSameAs : false,
+                            endpoint : 'http://dati.culturaitalia.it/sparql/',
+                            proxy : 'http://lodview.it/simple-proxy/resourceProxy/',
+                            examples : [ {
+                                label : 'Accademia dei georgofili',
+                                uri : 'http://dati.culturaitalia.it/resource/actor/accademia-dei-georgofili'
+                            }, {
+                                label : 'Biblioteca universitaria Alessandrina',
+                                uri : 'http://dati.culturaitalia.it/resource/title/biblioteca-universitaria-alessandrina'
+                            } ]
+                        },
+
+                        'http://dati.senato.it' : {
+                            description : {
+                                it : 'Il punto per l\'accesso diretto ai dati del Senato della Repubblica. I disegni di legge con il loro iter, le votazioni elettroniche d\'Aula, le Commissioni, i Gruppi parlamentari...',
+                                en : 'Il punto per l\'accesso diretto ai dati del Senato della Repubblica. I disegni di legge con il loro iter, le votazioni elettroniche d\'Aula, le Commissioni, i Gruppi parlamentari...'
+                            },
+                            useForInverseSameAs : true,
+                            endpoint : 'http://dati.senato.it/sparql',
+                            examples : [ {
+                                label : 'Emilio Colombo (foaf:Person)',
+                                uri : 'http://dati.senato.it/senatore/638'
+                            }, {
+                                label : 'Giulio Andreotti (foaf:Person)',
+                                uri : 'http://dati.senato.it/senatore/74'
+                            } ]
+                        },
+                        'http://dati.camera.it' : {
+                            // il parametro {URI} viene sostituito con la uri del documento da
+                            // caricare
+                            description : {
+                                it : 'Un catalogo completo di dati e documenti digitali su tutte le legislature precedenti all\'attuale, dalla I del Regno di Sardegna alla XV della Repubblica, che alimentano il Portale storico della Camera dei deputati.<br />Sono inoltre disponibili i primi dataset di atti di indirizzo e controllo, deputati, organi e gruppi parlamentari della legislatura corrente.',
+                                en : 'A complete catalogue of digital data and documents of all previous legislatures, from I legislature of the Kingdom of Sardinia to XV legislature of the Republic, which supplies the historical portal of the Chamber of Deputies.<br />There are also the first datasets of Acts of direction and control, Deputies, parliamentary groups and committees of the current legislature.'
+                            },
+                            useForInverseSameAs : true,
+                            endpoint : 'http://dati.camera.it/sparql',
+                            examples : [ {
+                                label : 'Giorgio Napolitano',
+                                uri : 'http://dati.camera.it/ocd/bpr/autore.rdf/1993'
+                            }, {
+                                label : 'Nilde Iotti (foaf:Person)',
+                                uri : 'http://dati.camera.it/ocd/persona.rdf/p3140'
+                            }, {
+                                label : 'II Governo Moro',
+                                uri : 'http://dati.camera.it/ocd/governo.rdf/g17'
+                            }, {
+                                label : 'ocd:deputato (ontology description)',
+                                uri : 'http://dati.camera.it/ocd/deputato'
+                            } ]
+                        },
+                        'http://data.opendataday.it' : {
+                            // il parametro {URI} viene sostituito con la uri del documento da
+                            // caricare
+                            description : {
+                                it : 'Catalogo dei dataset OpenData pubblicati da alcune istituzioni. Generato da fonti CKAN per l\'International Open Data Day Italia.',
+                                en : 'Catalogo dei dataset OpenData pubblicati da alcune istituzioni. Generato da fonti CKAN per l\'International Open Data Day Italia.'
+                            },
+                            useForInverseSameAs : false,
+                            endpoint : 'http://data.opendataday.it/sparql',
+                            examples : [ {
+                                label : 'Catalogo della Provincia di Roma',
+                                uri : 'http://data.opendataday.it/resource/dati.provinciaRoma'
+                            }, {
+                                label : 'Catalogo della Regione Lombardia',
+                                uri : 'http://data.opendataday.it/resource/dati.lombardia'
+                            }, {
+                                label : 'Catalogo della Regione Toscana',
+                                uri : 'http://data.opendataday.it/resource/dati.toscana'
+                            }, {
+                                label : 'Catalogo del Comune di Firenze',
+                                uri : 'http://data.opendataday.it/resource/dati.firenze'
+                            } ]
+                        },
+                        'http://dbpedia.org' : {
+                            description : {
+                                it : 'DBpedia is a community effort to extract structured information from Wikipedia and to make this information available on the Web. DBpedia allows you to ask sophisticated queries against Wikipedia, and to link other data sets on the Web to Wikipedia data.',
+                                en : 'DBpedia is a community effort to extract structured information from Wikipedia and to make this information available on the Web. DBpedia allows you to ask sophisticated queries against Wikipedia, and to link other data sets on the Web to Wikipedia data.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object  WHERE {[] a ?object} ORDER BY ?object  LIMIT 50  ',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} } LIMIT 1',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object.FILTER ((( isIRI(?object) && ?property != <http://xmlns.com/foaf/0.1/depiction> )|| ?property = <http://www.w3.org/2000/01/rdf-schema#label>  || ?property = <http://www.georss.org/georss/point> || ?property = <http://xmlns.com/foaf/0.1/surname> || ?property = <http://xmlns.com/foaf/0.1/name> || ?property = <http://purl.org/dc/elements/1.1/title>))}  ORDER BY ?property',
+                                document : 'SELECT DISTINCT *  WHERE  {{<{URI}> ?property ?object. FILTER(!isLiteral(?object))} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="it")} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="en")}}  ORDER BY ?property',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}> FILTER(REGEX(STR(?object),\'//dbpedia.org\'))} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}> FILTER(REGEX(STR(?object),\'//dbpedia.org\'))}'
+                            },
+                            useForInverseSameAs : true,
+                            endpoint : 'http://dbpedia.org/sparql',
+                            examples : [ {
+                                label : 'Giulio Andreotti (foaf:Person)',
+                                uri : 'http://dbpedia.org/resource/Giulio_Andreotti'
+                            }, {
+                                label : 'Leonardo Sciascia (foaf:Person)',
+                                uri : 'http://dbpedia.org/resource/Leonardo_Sciascia'
+                            }, {
+                                label : 'Rome',
+                                uri : 'http://dbpedia.org/resource/Rome'
+                            }, {
+                                label : 'Wikipedia',
+                                uri : 'http://dbpedia.org/resource/Wikipedia'
+                            }, {
+                                label : 'Linked data',
+                                uri : 'http://dbpedia.org/resource/Linked_data'
+                            } ]
+                        },
+                        'http://yago-knowledge.org' : {
+                            description : {
+                                it : 'YAGO2 is a huge semantic knowledge base, derived from Wikipedia, WordNet and GeoNames. Currently, YAGO2 has knowledge of more than 10 million entities (like persons, organizations, cities, etc.) and contains more than 120 million facts about these entities. ',
+                                en : 'YAGO2 is a huge semantic knowledge base, derived from Wikipedia, WordNet and GeoNames. Currently, YAGO2 has knowledge of more than 10 million entities (like persons, organizations, cities, etc.) and contains more than 120 million facts about these entities. '
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object  WHERE {[] a ?object} ORDER BY ?object  LIMIT 50  ',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://rdf.freebase.com/ns/type.object.name> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} } LIMIT 1',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object.FILTER (isIRI(?object) || ?property = <http://www.w3.org/2000/01/rdf-schema#label> || ?property = <http://rdf.freebase.com/ns/type.object.name> || ?property = <http://purl.org/dc/elements/1.1/title>)} ORDER BY ?property',
+                                document : 'SELECT DISTINCT *  WHERE  {{<{URI}> ?property ?object. FILTER(!isLiteral(?object))} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="it")} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) =en)}}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.FILTER(isIRI(?object) && ?property != <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> && ?property != <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> && !REGEX(?object,"fact_"))} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}> FILTER(!REGEX(STR(?object),\'dbpedia\'))}'
+                            },
+                            endpoint : 'http://lod.openlinksw.com/sparql',
+                            useForInverseSameAs : true,
+                            examples : [ {
+                                uri : 'http://yago-knowledge.org/resource/Mario_Monti',
+                                label : 'Mario Monti'
+                            } ]
+                        },
+                        'http://data.nature.com,http://ns.nature.com,http://dx.doi.org' : {
+                            description : {
+                                it : 'Bibliographic data from around 900,000 articles published by Nature Publishing Group (NPG) from 1845 through to the present day. Additionally the datasets include NPG products and subjects ontologies.',
+                                en : 'Bibliographic data from around 900,000 articles published by Nature Publishing Group (NPG) from 1845 through to the present day. Additionally the datasets include NPG products and subjects ontologies.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE   {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\')) }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {{?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}> } UNION { ?object <http://www.w3.org/2004/02/skos/core#exactMatch> <{URI}>}}'
+                            },
+                            useForInverseSameAs : false,
+                            endpoint : 'http://data.nature.com/query',
+                            proxy : 'http://lodview.it/simple-proxy/resourceProxy/',
+                            examples : [ {
+                                label : 'Stem cells',
+                                uri : 'http://ns.nature.com/subjects/stem_cells'
+                            }, {
+                                label : 'Higgs boson: The need for new physics',
+                                uri : 'http://dx.doi.org/10.1038/481024a'
+                            } ]
+                        },
+                        'http://worldbank.270a.info' : {
+                            description : {
+                                it : 'The World Bank is an international development organization that provides access to a comprehensive set of data about countries around the globe. The data that is collected from The World Bank is published using the Linked Data principles and is composed of a wide array of observations on World Development Indicators, World Bank Finances, World Bank Projects and Operations, and World Bank Climate Change data.',
+                                en : 'The World Bank is an international development organization that provides access to a comprehensive set of data about countries around the globe. The data that is collected from The World Bank is published using the Linked Data principles and is composed of a wide array of observations on World Development Indicators, World Bank Finances, World Bank Projects and Operations, and World Bank Climate Change data.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {{?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}> } UNION { ?object <http://www.w3.org/2004/02/skos/core#exactMatch> <{URI}>}}'
+                            },
+                            useForInverseSameAs : false,
+                            endpoint : 'http://worldbank.270a.info/sparql',
+                            examples : [ {
+                                label : 'Canada (country)',
+                                uri : 'http://worldbank.270a.info/classification/country/CA'
+                            }, {
+                                label : 'Agricultural machinery, tractors (skos)',
+                                uri : 'http://worldbank.270a.info/classification/indicator/AG.AGR.TRAC.NO'
+                            }, {
+                                label : 'World Bank Finances dataset',
+                                uri : 'http://worldbank.270a.info/dataset/world-bank-finances'
+                            }, {
+                                label : 'Canadian Dollar (currency)',
+                                uri : 'http://worldbank.270a.info/classification/currency/CAD'
+                            } ]
+                        },
+                        'http://ReLoad,http://lod.xdams.org' : {
+                            description : {
+                                it : 'ReLoad (Repository for Linked open archival data) &egrave; un progetto realizzato dall\'Archivio Centrale dello Stato, dall\'Istituto per i Beni culturali dell\'Emilia Romagna e da Regesta.exe con l\'obiettivo di sperimentare le metodologie del semantic web e le tecnologie standard per i linked open data sulle risorse archivistiche',
+                                en : 'ReLoad (Repository for Linked open archival data) &egrave; un progetto realizzato dall\'Archivio Centrale dello Stato, dall\'Istituto per i Beni culturali dell\'Emilia Romagna e da Regesta.exe con l\'obiettivo di sperimentare le metodologie del semantic web e le tecnologie standard per i linked open data sulle risorse archivistiche'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/terms/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>; <http://purl.org/dc/terms/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object.FILTER (isIRI(?object) || ?property = <http://www.w3.org/2000/01/rdf-schema#label> || ?property = <http://purl.org/dc/terms/title> ||  ?property =  <http://purl.org/dc/elements/1.1/title>)} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}>}'
+                            },
+                            endpoint : 'http://lod.xdams.org/sparql',
+                            examples : [ {
+                                uri : 'http://lod.xdams.org/reload/oad/uod/IT-ACS-AS0002-0019726',
+                                label : 'uod'
+                            } ]
+                        },
+
+                        'http://data.oceandrilling.org' : {
+                            description : {
+                                it : 'data.oceandrilling.org facilitates the discovery and access to data and information related to scientific ocean drilling efforts of the Integrated Ocean Drilling Program (IODP) U.S. implementing organization (USIO). Additional data originates from the: Deep Sea Drilling Project (DSDP), Ocean Drilling Program (ODP and ODP Legacy) in addition to IODP.',
+                                en : 'data.oceandrilling.org facilitates the discovery and access to data and information related to scientific ocean drilling efforts of the Integrated Ocean Drilling Program (IODP) U.S. implementing organization (USIO). Additional data originates from the: Deep Sea Drilling Project (DSDP), Ocean Drilling Program (ODP and ODP Legacy) in addition to IODP.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameas> <{URI}>}'
+                            },
+                            useForInverseSameAs : false,
+                            endpoint : 'http://data.oceandrilling.org/sparql',
+                            examples : [ {
+                                uri : 'http://data.oceandrilling.org/core/1/ODP',
+                                label : 'Ocean Drilling Program'
+                            }, {
+                                uri : 'http://data.oceandrilling.org/core/1/',
+                                label : 'USIO-IODP vocabulary'
+                            }, {
+                                uri : 'http://data.oceandrilling.org/codices/lsh/104/642/D',
+                                label : 'Expedition 104 site 642 hole D'
+                            } ]
+                        },
+                        'http://linkedgeodata.org' : {
+                            description : {
+                                it : 'LinkedGeoData is an effort to add a spatial dimension to the Web of Data / Semantic Web. LinkedGeoData uses the information collected by the OpenStreetMap project and makes it available as an RDF knowledge base according to the Linked Data principles. It interlinks this data with other knowledge bases in the Linking Open Data initiative.',
+                                en : 'LinkedGeoData is an effort to add a spatial dimension to the Web of Data / Semantic Web. LinkedGeoData uses the information collected by the OpenStreetMap project and makes it available as an RDF knowledge base according to the Linked Data principles. It interlinks this data with other knowledge bases in the Linking Open Data initiative.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE {  {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {{<{URI}> ?property ?object. FILTER(!isLiteral(?object))}  UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="it")} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) = "en")} UNION 	 {<{URI}> ?property 	 ?object.FILTER(isLiteral(?object)).FILTER(lang(?object) ="")}} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}>}'
+                            },
+                            endpoint : 'http://linkedgeodata.org/sparql',
+                            examples : [ {
+                                uri : 'http://linkedgeodata.org/triplify/node243496028',
+                                label : 'Roma'
+                            }, {
+                                uri : 'http://linkedgeodata.org/triplify/node61753365',
+                                label : 'Livorno'
+                            } ]
+                        },
+                        'http://data.linkedmdb.org' : {
+                            description : {
+                                it : 'The project aims at publishing the first open semantic web database for movies, including a large number of interlinks to several datasets on the open data cloud and references to related webpages.',
+                                en : 'The project aims at publishing the first open semantic web database for movies, including a large number of interlinks to several datasets on the open data cloud and references to related webpages.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}>}'
+                            },
+                            endpointType : 'sesame',
+                            proxy : 'http://lodview.it/simple-proxy/resourceProxy/',
+                            endpoint : 'http://data.linkedmdb.org/sparql',
+                            examples : [ {
+                                uri : 'http://data.linkedmdb.org/resource/film/2014',
+                                label : 'Shining'
+                            } ]
+                        }, /*
+							 * 'http://data.nytimes.com' : { description : { it : 'For the last 150 years, The New York Times has maintained one of the most authoritative news
+							 * vocabularies ever developed. In 2009, we began to publish this vocabulary as linked open data.<br />As of 13 January 2010, The New York Times has
+							 * published 10,000 subject headings as linked open data under a CC BY license.', en : 'For the last 150 years, The New York Times has maintained one of
+							 * the most authoritative news vocabularies ever developed. In 2009, we began to publish this vocabulary as linked open data.<br />As of 13 January
+							 * 2010, The New York Times has published 10,000 subject headings as linked open data under a CC BY license.' }, sparql : { allClasses : 'SELECT
+							 * DISTINCT ?object WHERE {[] a ?object}', findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title>
+							 * ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object.
+							 * FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object.
+							 * FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} } LIMIT 1 ', documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}', document : 'SELECT
+							 * DISTINCT * WHERE {<{URI}> ?property ?object}', bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}', inverse : 'SELECT DISTINCT * WHERE
+							 * {?object ?property <{URI}>} LIMIT 100', inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}>}' },
+							 * useForInverseSameAs : true, endpoint : 'http://api.talis.com/stores/nytimes/services/sparql', examples : [ { uri :
+							 * 'http://data.nytimes.com/55630655163615370853', label : 'Romano Prodi' } ] },
+							 */
+                        'http://data.ordnancesurvey.co.uk' : {
+                            description : {
+                                it : 'Ordnance Survey is Great Britain\'s national mapping agency, providing geographic data, relied on by government, business and individuals. <br/>Ordnance Survey has published three separate linked data resources: the 1:50 000 Scale Gazetteer, Code-Point Open and the administrative geography gazetteer for Great Britain.',
+                                en : 'Ordnance Survey is Great Britain\'s national mapping agency, providing geographic data, relied on by government, business and individuals. <br/>Ordnance Survey has published three separate linked data resources: the 1:50 000 Scale Gazetteer, Code-Point Open and the administrative geography gazetteer for Great Britain.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}>}'
+                            },
+                            endpoint : 'http://api.talis.com/stores/ordnance-survey/services/sparql',
+                            examples : [ {
+                                uri : 'http://data.ordnancesurvey.co.uk/id/7000000000041428',
+                                label : 'London'
+                            }, {
+                                uri : 'http://data.ordnancesurvey.co.uk/id/ordnancesurvey',
+                                label : 'Ordnance Survey'
+                            } ]
+                        },
+                        'http://it.dbpedia.org' : {
+                            description : {
+                                it : 'DBpedia Italia &egrave; un progetto aperto e collaborativo per l\'estrazione e il riutilizzo di informazioni semanticamente strutturate dalla versione italiana di Wikipedia. Il progetto mira a rendere riutilizzabili le informazioni di Wikipedia da parte di software e applicazioni.',
+                                en : 'DBpedia Italy is an open and collaborative project for the extraction and reuse of semantically structured information of the Italian version of Wikipedia. The project aims to enable the usability of the Wikipedia information within external software and applications.'
+                            },
+                            useForInverseSameAs : true,
+                            sparql : {
+
+	                            findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} } LIMIT 1'
+                            },
+                            endpoint : 'http://it.dbpedia.org/sparql',
+                            examples : [ {
+                                uri : 'http://it.dbpedia.org/resource/L\'armata_Brancaleone',
+                                label : 'L\'armata Brancaleone (movie)'
+                            }, {
+                                uri : 'http://it.dbpedia.org/resource/Duomo_di_Bressanone',
+                                label : 'Duomo di Bressanone'
+                            } ]
+                        },
+                        'http://www.cnr.it' : {
+                            description : {
+                                it : 'data.cnr.it &egrave; una iniziativa del Consiglio Nazionale delle Ricerche per consentire un accesso pubblico alle informazioni e ai dati dell\'organizzazione. I dataset disponibili nell\'endpoint sono il frutto di una conversione in RDF di alucni database dell\'Istituto secondo una ontologia appositamente definita.',
+                                en : 'data.cnr.it is an initiative of the Italian National Research Council aimed to provide public access to the information of the CNR organization.'
+                            },
+                            useForInverseSameAs : true,
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE {?subject a <{CLASS}>;?none ?object.	 FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} LIMIT 1',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}  ',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT		 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2004/02/skos/core#subject> <{URI}>}'
+                            },
+                            endpoint : 'http://data.cnr.it/sparql-proxy/',
+                            examples : [ {
+                                uri : 'http://www.cnr.it/ontology/cnr/individuo/unitaDiPersonaleInterno/MATRICOLA7247',
+                                label : 'Agata Gambacorta'
+                            }, {
+                                uri : 'http://www.cnr.it/ontology/cnr/individuo/brevetti-brevetto/ID1000',
+                                label : 'an optical system.. '
+                            } ]
+                        },
+                        'http://sindice.com,http://www.semanlink.net' : {
+                            description : {
+                                it : 'Sindice ingests RDF, RDFa, Microformats (and soon microdata). The model is "Page Based" where the name of the graph is the URL where the data was fetched.',
+                                en : 'Sindice ingests RDF, RDFa, Microformats (and soon microdata). The model is "Page Based" where the name of the graph is the URL where the data was fetched.'
+                            },
+                            sparql : {
+                                allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                                findSubject : 'SELECT DISTINCT ?subject WHERE {?subject a <{CLASS}>;?none ?object.	 FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} LIMIT 1',
+                                documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object} ORDER BY ?property',
+                                document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                bnode : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                                inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>} LIMIT		 100',
+                                inverseSameAs : 'SELECT DISTINCT * WHERE {?object <http://www.w3.org/2002/07/owl#sameAs> <{URI}>}'
+                            },
+                            endpoint : 'http://sparql.sindice.com/sparql',
+                            examples : [ {
+                                uri : 'http://www.semanlink.net/tag/dbpedia',
+                                label : 'Dbpedia'
+                            } ]
+                        },
+                        'http://reference.data.gov.uk' : {
+                            description : {
+                                it : 'Reference data for linked UK government data: it covers the central working of government, including organisational structures where these have been made available as RDF.',
+                                en : 'Reference data for linked UK government data: it covers the central working of government, including organisational structures where these have been made available as RDF.'
+                            },
+                            endpoint : 'http://services.data.gov.uk/reference/sparql',
+                            examples : [ {
+                                uri : 'http://reference.data.gov.uk/id/minister/dfe/secretary-of-state-for-education',
+                                label : 'Secretary of State for Education'
+                            }, {
+                                uri : 'http://reference.data.gov.uk/id/mp/witney/david-cameron',
+                                label : 'David Cameron'
+                            } ]
+                        },
+                        'http://spcdata.digitpa.gov.it' : {
+                            description : {
+                                it : 'SPCdata.digitpa.gov.it &egrave; il portale dei dati aperti del Sistema Pubblico di Connettivit&agrave; e Cooperazione progettato e gestito direttamente da DigitPA per condividere l\'insieme dei dati pubblici disponibili presso le Pubbliche Amministrazioni. I Linked Open Data SPC attualmente disponibili sono i dati dell\'Indice della Pubblica Amministrazione.',
+                                en : 'SPCdata.digitpa.gov.it is the open data portal of the Public Connectivity and Cooperation System, designed and managed by DigitPA to share the set of public data available from the Public Administrations. The Linked Open Data SPC data currently available are the Index of Public Administration.'
+                            },
+                            useForInverseSameAs : false,
+                            endpoint : 'http://spcdata.digitpa.gov.it:8899/sparql',
+                            examples : [ {
+                                uri : 'http://spcdata.digitpa.gov.it/UnitaOrganizzativa/2612',
+                                label : 'Economato'
+                            } ]
+                        },
+                        'http://dati.acs' : {
+                            description : {
+	                            en : ''
+                            },
+
+                            useForInverseSameAs : true,
+                            endpoint : 'http://dati.acs.beniculturali.it/sparql',
+                            examples : [ {
+                                uri : '',
+                                label : ''
+                            } ]
+                        },
+                        'http://comune.fi.it,http://sr-vm091-opend.comune.fi.it' : {
+                            description : {
+                                it : 'In quest\'area sono accessibili i linked open data del Comune di Firenze. Al momento sono disponibili i dataset musei, viario, sinistri e toponomastica.',
+                                en : 'The linked open data of the City of Florence are available here. Museums, traffic, accidents and place names datasets are currently available.'
+                            },
+                            endpointType : 'arcSparql',
+                            endpoint : 'http://sr-vm091-opend.comune.fi.it:2020/sparql',
+                            examples : [ {
+                                uri : 'http://sr-vm091-opend.comune.fi.it:8080/resource/musei/GALLERIA_DEGLI_UFFIZI',
+                                label : 'Galleria degli Uffizi'
+                            }, {
+                                uri : 'http://sr-vm091-opend.comune.fi.it:8080/resource/sinistri/Borgo_San_Iacopo',
+                                label : 'Sinistri avvenuti in Borgo San Iacopo'
+                            } ]
+                        },
+                        'http://provincia.carboniaiglesias.it,http://www.provincia.carboniaiglesias.it' : {
+                            description : {
+                                it : 'I linked open data degli atti amministrativi della Provincia di Carbonia Iglesias, relativi alle Determine e Delibere.',
+                                en : 'The linked open data of the administrative acts of the Province of Carbonia Iglesias, relative to resolutions, are available here.'
+                            },
+                            endpointType : 'arcSparql',
+                            endpoint : 'http://www.provincia.carboniaiglesias.it/sparql',
+                            examples : [ {
+                                uri : 'http://www.provincia.carboniaiglesias.it/taxonomy_term/39',
+                                label : 'Area dei servizi ambientali'
+                            }, {
+                                uri : 'http://www.provincia.carboniaiglesias.it/taxonomy_term/78',
+                                label : 'Segretario Generale Reggente'
+                            } ]
+                        },
+                        'http://dblp.l3s.de' : {
+                            description : {
+                                it : 'The DBLP Computer Science Bibliography.',
+                                en : 'The DBLP Computer Science Bibliography.'
+                            },
+                            endpoint : 'http://dblp.l3s.de/d2r/sparql',
+                            examples : [ {
+                                uri : 'http://dblp.l3s.de/d2r/resource/authors/Oktie_Hassanzadeh',
+                                label : 'Oktie Hassanzadeh'
+                            } ]
+                        },
+                        "http://transparency.270a.info" : {
+                            endpoint : "http://transparency.270a.info/sparql",
+                            description : {
+	                            en : "Transparency International Linked Data: A world in which government, politics, business, civil society and the daily lives of people are free of corruption"
+                            }
+                        },
+                        "http://imf.270a.info" : {
+                            endpoint : "http://imf.270a.info/sparql",
+                            description : {
+	                            en : "International Monetary Fund Linked Data: Working to foster global monetary cooperation, secure financial stability, facilitate international trade, promote high employment and sustainable economic growth, and reduce poverty around the world"
+                            }
+                        },
+                        "http://ecb.270a.info" : {
+                            endpoint : "http://ecb.270a.info/sparql",
+                            description : {
+	                            en : "European Central Bank Linked Data: Whose main task is to maintain the euro's purchasing power and thus price stability in the euro area"
+                            }
+                        },
+                        "http://bfs.270a.info" : {
+                            endpoint : "http://bfs.270a.info/sparql",
+                            description : {
+	                            en : "Swiss Federal Statistics Office Linked Data: A wide range of statistical information on the most important areas of life: population, health, economy, employment, education and more"
+                            }
+                        },
+                        "http://fao.270a.info" : {
+                            endpoint : "http://fao.270a.info/sparql",
+                            description : {
+	                            en : "Food and Agriculture Organization of the United Nations Linked Data: Achieving food security for all is at the heart of FAO's efforts - to make sure people have regular access to enough high-quality food to lead active, healthy lives"
+                            }
+                        },
+                        "http://oecd.270a.info" : {
+                            endpoint : "http://oecd.270a.info/sparql",
+                            description : {
+	                            en : "Organisation for Economic Co-operation and Development Linked Data: The mission of OECD is to promote policies that will improve the economic and social well-being of people around the world"
+                            }
+                        }
+
+                    },
+
+                    /*
+					 * 
+					 * you can specify the properties you want to show in the black doc info box you can also specify a custom label
+					 * 
+					 */
+                    // 'http://domain.of.my.resources/' : {
+                    // document : {
+                    // propertiesMapper : {
+                    // "http://xmlns.com/foaf/0.1/gender" : "gender",
+                    // "http://xmlns.com/foaf/0.1/firstName" : "first name",
+                    // "http://xmlns.com/foaf/0.1/familyName" : "family name"
+                    // }
+                    // },
+                    // },
+
+                    arrows : {
+                        'http://www.w3.org/2002/07/owl#sameAs' : 'isSameAs',
+                        'http://purl.org/dc/terms/isPartOf' : 'isPartOf',
+                        'http://purl.org/dc/elements/1.1/type' : 'isType',
+                        'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' : 'isType'
+                    },
+                    // custom labels on arcs
+                    labeler : {
+	                    'http://dbpedia.org/ontology/currency' : 'currency'
+                    },
+                    uriSubstitutor : [ {
+                        findStr : 'mpii.de/yago/resource/',
+                        replaceStr : 'yago-knowledge.org/resource/'
+                    } ],
+
+                    // configurazione standard per la rappresentazione di un documento
+                    // utilizzata nel caso manchi una specifica configurazione per la classe
+                    'default' : {
+                        sparql : {
+                            allClasses : 'SELECT DISTINCT ?object WHERE {[] a ?object}',
+                            findSubject : 'SELECT DISTINCT ?subject WHERE { {?subject a <{CLASS}>;<http://purl.org/dc/elements/1.1/title> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2000/01/rdf-schema#label> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} UNION {?subject a <{CLASS}>;<http://www.w3.org/2004/02/skos/core#prefLabel> ?object. FILTER(regex(str(?object),\'{VALUE}\',\'i\'))} }  LIMIT 1  ',
+                            documentUri : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object. FILTER(?property != <http://dbpedia.org/ontology/wikiPageWikiLink>)} ORDER BY ?property',
+                            document : 'SELECT DISTINCT * WHERE {<{URI}> ?property ?object}',
+                            bnode : 'SELECT DISTINCT *  WHERE {<{URI}> ?property ?object}',
+                            inverse : 'SELECT DISTINCT * WHERE {?object ?property <{URI}>.} LIMIT 100',
+                            inverseSameAs : 'SELECT DISTINCT * WHERE {?object ?t <{URI}> } '
+                        },
+                        endpoint : 'http://labs.regesta.com/resourceProxy/',
+                        document : {
+                            className : 'standard',
+                            titleProperties : [
+                                    'http://dati.senato.it/osr/titolo',
+                                    'http://www.w3.org/2004/02/skos/core#notation',
+                                    'http://www.w3.org/1999/02/22-rdf-syntax-ns#value',
+                                    'http://www.geonames.org/ontology#name',
+                                    'http://purl.org/dc/elements/1.1/title',
+                                    'http://purl.org/dc/terms/title',
+                                    'http://www.w3.org/2000/01/rdf-schema#label',
+                                    'http://www.w3.org/2004/02/skos/core#prefLabel',
+                                    'http://logd.tw.rpi.edu/source/visualizing-org/dataset/2010-global-agenda-council-interlinkage-survey/vocab/enhancement/1/how_councils_interlink',
+                                    'http://rdf.freebase.com/ns/type.object.name', 'http://spcdata.digitpa.gov.it/nome_cognome', 'http://xmlns.com/foaf/0.1/firstName',
+                                    'http://xmlns.com/foaf/0.1/lastName', 'http://xmlns.com/foaf/0.1/surname', 'http://xmlns.com/foaf/0.1/name',
+                                    'http://purl.org/dc/terms/description', 'http://www.geonames.org/ontology/officialName',
+                                    'http://d-nb.info/standards/elementset/gnd#preferredName', 'http://d-nb.info/standards/elementset/gnd#preferredNameForTheFamily',
+                                    'http://d-nb.info/standards/elementset/gnd#preferredNameForThePerson',
+                                    'http://d-nb.info/standards/elementset/gnd#preferredNameForThePlaceOrGeographicName',
+                                    'http://d-nb.info/standards/elementset/gnd#preferredNameForTheConferenceOrEvent',
+                                    'http://d-nb.info/standards/elementset/gnd#preferredNameForTheWork',
+                                    'http://d-nb.info/standards/elementset/gnd#preferredNameForTheSubjectHeading' ]
+                        }, // http://www.w3.org/2000/01/rdf-schema#label
+                        images : {
+	                        properties : [ 'http://www.w3.org/2006/vcard/ns#photo', 'http://xmlns.com/foaf/0.1/depiction', 'http://dbpedia.org/ontology/thumbnail',
+	                                'http://dbpedia.org/property/logo', 'http://linkedgeodata.org/ontology/schemaIcon' ]
+                        },
+                        maps : {
+                            longs : [ 'http://www.w3.org/2003/01/geo/wgs84_pos#long' ],
+                            lats : [ 'http://www.w3.org/2003/01/geo/wgs84_pos#lat' ],
+                            points : [ 'http://www.georss.org/georss/point' ]
+                        },
+                        weblinks : {
+	                        properties : [ 'http://www.w3.org/ns/dcat#accessURL', 'http://xmlns.com/foaf/0.1/mbox', 'http://rdfs.org/sioc/ns#links_to',
+	                                'http://it.dbpedia.org/property/url', 'http://data.nytimes.com/elements/search_api_query', 'http://www.w3.org/2000/01/rdf-schema#isDefinedBy',
+	                                'http://xmlns.com/foaf/0.1/page', 'http://xmlns.com/foaf/0.1/homepage', 'http://purl.org/dc/terms/isReferencedBy',
+	                                'http://purl.org/dc/elements/1.1/relation', 'http://dbpedia.org/ontology/wikiPageExternalLink', 'http://data.nytimes.com/elements/topicPage' ]
+                        }
+                    },
+
+                    'http://www.w3.org/2002/07/owl#Class' : {
+	                    document : {
+		                    className : 'Class'/*
+												 * , titleProperties : ['http://purl.org/dc/elements/1.1/title', 'http://www.w3.org/2000/01/rdf-schema#label']
+												 */
+	                    }
+                    },
+                    'http://www.w3.org/2002/07/owl#ObjectProperty' : {
+	                    document : {
+		                    className : 'ObjectProperty'
+	                    }
+                    },
+                    'http://www.w3.org/2002/07/owl#Restriction' : {
+	                    document : {
+		                    className : 'DatatypeProperty'
+	                    }
+                    },
+                    'http://www.w3.org/2002/07/owl#DatatypeProperty' : {
+	                    document : {
+		                    className : 'DatatypeProperty'
+	                    }
+                    },
+                    'http://www.w3.org/2002/07/owl#Property' : {
+	                    document : {
+		                    className : 'Property'
+	                    }
+                    },
+                    'http://data.oceandrilling.org/core/1/ODP' : {
+	                    document : {
+		                    titleProperties : [ 'expedition', 'http://data.oceandrilling.org/core/1/expedition', 'site', 'http://data.oceandrilling.org/core/1/site', 'hole',
+		                            'http://data.oceandrilling.org/core/1/hole' ]
+	                    }
+                    },
+                    'http://www.w3.org/ns/locn#Address' : {
+	                    document : {
+		                    titleProperties : [ 'http://www.w3.org/ns/locn#fullAddress' ]
+	                    }
+                    },
+                    'http://www.cnr.it/ontology/cnr/personale.owl#UnitaDiPersonaleInterno' : {
+	                    document : {
+		                    titleProperties : [ 'http://www.cnr.it/ontology/cnr/personale.owl#cognome', ' ', 'http://www.cnr.it/ontology/cnr/personale.owl#nome' ]
+	                    }
+                    }
+
+                });
+if (!document.lodliveVars) {
+	document.lodliveVars = {};
+}
+
+$.jStorage.set('boxTemplate', '<div class="boxWrapper" id="first"><div class="box sprite"></div></div>');
+$.jStorage.set('relationsLimit', 25);
+$.jStorage.set('doStats', $.jStorage.get('doStats', true));
+$.jStorage.set('doInverse', $.jStorage.get('doInverse', true));
+$.jStorage.set('doAutoExpand', $.jStorage.get('doAutoExpand', true));
+$.jStorage.set('doAutoSameas', $.jStorage.get('doAutoSameas', true));
+$.jStorage.set('doCollectImages', $.jStorage.get('doCollectImages', true));
+$.jStorage.set('doDrawMap', $.jStorage.get('doDrawMap', true));
+$.jStorage.set('showInfoConsole', $.jStorage.get('showInfoConsole', true));
+
+$.jStorage.set('endpoints', {
+    all : 'output=json&format=application/json&timeout=0',
+    arcSparql : 'output=json&jsonp=lodlive',
+    sesame : 'Accept=application/sparql-results%2Bjson'
+});

+ 281 - 0
js/lodlive.utils.js

@@ -0,0 +1,281 @@
+// a causa di un baco di opera e firefox implmento una funzione apposita per
+// settare la posizione dei background
+$.fn.setBackgroundPosition = function(pos) {
+	var backPos = $.trim(this.css('background-position'));
+	var hasString = backPos.indexOf('left') == -1 ? false : true;
+	//added fix for chrome 25
+	backPos = backPos.replace(/top/gi, '').replace(/left/gi, '');
+	backPos = $.trim(backPos.replace(/  /g, ' '));
+
+	try {
+		var backPosArray = backPos.split(" ");
+		if (pos.x || pos.x == 0) {
+			backPosArray[0] = pos.x + 'px';
+		}
+		if (pos.y || pos.y == 0) {
+			backPosArray[1] = pos.y + 'px';
+		}
+		if (hasString) {
+			backPos = "left " + backPosArray[0] + " top " + backPosArray[1];
+		} else {
+			backPos = backPosArray[0] + " " + backPosArray[1];
+		}
+	} catch (e) {
+		alert(e);
+	}
+	this.css({
+		'background-position' : backPos
+	});
+	return this;
+};
+
+var MD5 = function(string) {
+	if (!string) {
+		return "";
+	}
+	string = string.replace(/http:\/\/.+~~/g, '');
+	string = string.replace(/nodeID:\/\/.+~~/g, '');
+	string = string.replace(/_:\/\/.+~~/g, '');
+	function RotateLeft(lValue, iShiftBits) {
+		return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
+	}
+
+	function AddUnsigned(lX, lY) {
+		var lX4, lY4, lX8, lY8, lResult;
+		lX8 = (lX & 0x80000000);
+		lY8 = (lY & 0x80000000);
+		lX4 = (lX & 0x40000000);
+		lY4 = (lY & 0x40000000);
+		lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
+		if (lX4 & lY4) {
+			return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
+		}
+		if (lX4 | lY4) {
+			if (lResult & 0x40000000) {
+				return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
+			} else {
+				return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
+			}
+		} else {
+			return (lResult ^ lX8 ^ lY8);
+		}
+	}
+
+	function F(x, y, z) {
+		return (x & y) | ((~x) & z);
+	}
+
+	function G(x, y, z) {
+		return (x & z) | (y & (~z));
+	}
+
+	function H(x, y, z) {
+		return (x ^ y ^ z);
+	}
+
+	function I(x, y, z) {
+		return (y ^ (x | (~z)));
+	}
+
+	function FF(a, b, c, d, x, s, ac) {
+		a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
+		return AddUnsigned(RotateLeft(a, s), b);
+	}
+
+	;
+
+	function GG(a, b, c, d, x, s, ac) {
+		a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
+		return AddUnsigned(RotateLeft(a, s), b);
+	}
+
+	;
+
+	function HH(a, b, c, d, x, s, ac) {
+		a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
+		return AddUnsigned(RotateLeft(a, s), b);
+	}
+
+	;
+
+	function II(a, b, c, d, x, s, ac) {
+		a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
+		return AddUnsigned(RotateLeft(a, s), b);
+	}
+
+	;
+
+	function ConvertToWordArray(string) {
+		var lWordCount;
+		var lMessageLength = string.length;
+		var lNumberOfWords_temp1 = lMessageLength + 8;
+		var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
+		var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
+		var lWordArray = Array(lNumberOfWords - 1);
+		var lBytePosition = 0;
+		var lByteCount = 0;
+		while (lByteCount < lMessageLength) {
+			lWordCount = (lByteCount - (lByteCount % 4)) / 4;
+			lBytePosition = (lByteCount % 4) * 8;
+			lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
+			lByteCount++;
+		}
+		lWordCount = (lByteCount - (lByteCount % 4)) / 4;
+		lBytePosition = (lByteCount % 4) * 8;
+		lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
+		lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
+		lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
+		return lWordArray;
+	}
+
+	;
+
+	function WordToHex(lValue) {
+		var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
+		for ( lCount = 0; lCount <= 3; lCount++) {
+			lByte = (lValue >>> (lCount * 8)) & 255;
+			WordToHexValue_temp = "0" + lByte.toString(16);
+			WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
+		}
+		return WordToHexValue;
+	}
+
+	;
+
+	function Utf8Encode(string) {
+		string = string.replace(/\r\n/g, "\n");
+		var utftext = "";
+
+		for (var n = 0; n < string.length; n++) {
+
+			var c = string.charCodeAt(n);
+
+			if (c < 128) {
+				utftext += String.fromCharCode(c);
+			} else if ((c > 127) && (c < 2048)) {
+				utftext += String.fromCharCode((c >> 6) | 192);
+				utftext += String.fromCharCode((c & 63) | 128);
+			} else {
+				utftext += String.fromCharCode((c >> 12) | 224);
+				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+				utftext += String.fromCharCode((c & 63) | 128);
+			}
+
+		}
+
+		return utftext;
+	}
+
+	;
+
+	var x = Array();
+	var k, AA, BB, CC, DD, a, b, c, d;
+	var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
+	var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
+	var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
+	var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
+
+	string = Utf8Encode(string);
+
+	x = ConvertToWordArray(string);
+
+	a = 0x67452301;
+	b = 0xEFCDAB89;
+	c = 0x98BADCFE;
+	d = 0x10325476;
+
+	for ( k = 0; k < x.length; k += 16) {
+		AA = a;
+		BB = b;
+		CC = c;
+		DD = d;
+		a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
+		d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
+		c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
+		b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
+		a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
+		d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
+		c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
+		b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
+		a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
+		d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
+		c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
+		b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
+		a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
+		d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
+		c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
+		b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
+		a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
+		d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
+		c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
+		b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
+		a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
+		d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
+		c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
+		b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
+		a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
+		d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
+		c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
+		b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
+		a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
+		d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
+		c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
+		b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
+		a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
+		d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
+		c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
+		b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
+		a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
+		d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
+		c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
+		b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
+		a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
+		d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
+		c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
+		b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
+		a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
+		d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
+		c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
+		b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
+		a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
+		d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
+		c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
+		b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
+		a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
+		d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
+		c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
+		b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
+		a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
+		d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
+		c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
+		b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
+		a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
+		d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
+		c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
+		b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
+		a = AddUnsigned(a, AA);
+		b = AddUnsigned(b, BB);
+		c = AddUnsigned(c, CC);
+		d = AddUnsigned(d, DD);
+	}
+
+	var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
+
+	return temp.toLowerCase();
+
+};
+
+function lang(obj) {
+	return $.jStorage.get('language')[$.jStorage.get('selectedLanguage')][obj];
+}
+
+function breakLines(msg) {
+	msg = msg.replace(/\//g, '/<span style="font-size:1px"> </span>');
+	msg = msg.replace(/&/g, '&<span style="font-size:1px"> </span>');
+	msg = msg.replace(/%/g, '%<span style="font-size:1px"> </span>');
+	return msg;
+}
+
+function getSparqlConf(what, where, lodLiveProfile) {
+	return where.sparql && where.sparql[what] ? where.sparql[what] : lodLiveProfile['default'].sparql[what]
+}

+ 2 - 0
robots.txt

@@ -0,0 +1,2 @@
+User-agent: *
+Allow: /

+ 22 - 0
stats.html

@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<script type="text/javascript">
+	var _gaq = _gaq || [];
+	_gaq.push([ '_setAccount', 'UA-1940652-20' ]);
+	_gaq.push([ '_trackPageview' ]);
+	(function() {
+		var ga = document.createElement('script');
+		ga.type = 'text/javascript';
+		ga.async = true;
+		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+		var s = document.getElementsByTagName('script')[0];
+		s.parentNode.insertBefore(ga, s);
+	})();
+</script>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>lodlive - stats</title>
+</head>
+<body>just for google stats
+</body>
+</html>

Some files were not shown because too many files changed in this diff