window.onload = function() {
var keyword = getParameterFromURL("subject");
var list = "";
var ruteToHitPoint = "";
var prefs = new Array();
$.each(LinkData.getWorks(), function(workKey, workValue) {
list += "<h3>" + LinkData.getWorkName(workValue) + "</h3>";
$.each(LinkData.getFiles(workValue), function(fileKey, fileValue) {
var hit = "";
var nHit = 0;
$.each(LinkData.getSubjects(workValue, fileValue), function(subjKey, subjValue) {
var longitude = null;
var latitude = null;
var s = "";
s += "<a href=\"" + subjValue + "\" target=\"_top\"><span class=\"subject\">" + highlight(decodeURIComponent(subjValue), keyword) + "</span></a>";
$.each( LinkData.getTriplesBySubject(workValue, fileValue, subjValue), function( tripleKey, tripleValue ) {
var prop = tripleValue.property;
var obj = tripleValue.object;
if ( prop == "http://www.w3.org/2003/01/geo/wgs84_pos#long" ) longitude = obj;
if ( prop == "http://www.w3.org/2003/01/geo/wgs84_pos#lat" ) latitude = obj;
if ( obj.indexOf("://www.youtube.com") != -1 && obj.indexOf("v=") != -1 ) {
videoId = (obj.split("v=")[1]).split("&")[0];
obj = "<a href=\"" + obj + "\" target=\"_blank\"><span class=\"object\">" + highlight(decodeURIComponent(obj), keyword) + "<br><img src=\"http://img.youtube.com/vi/" + videoId + "/mqdefault.jpg\" alt=\"YouTube video\" /><br></span></a>";
}
else if ( obj.indexOf("http") == 0 ) {
if ((obj.indexOf(".jpg" )>0 || obj.indexOf(".gif" )>0 || obj.indexOf(".png" )>0) || (obj.indexOf(".JPG" )>0 || obj.indexOf(".GIF" )>0 || obj.indexOf(".PNG" )>0))
obj = "<a href=\"" + obj + "\" target=\"_blank\"><span class=\"object\">" +shortenURL(obj) + "<br><img src=\"" + obj + "\" alt=\"image\" /><br></span></a>";
else
obj = "<a href=\"" + obj + "\" target=\"_blank\"><span class=\"object\">" + shortenURL(obj) + "</span></a>";
}
else
obj = "<span class=\"object\">" + highlight(obj, keyword) + "</span>";
s += "<br><span class=\"propertyName\">" + getLastName(prop) + ":\t</span>" + obj;
});
if ( latitude != null && longitude != null ) s += addLinkToMap( latitude, longitude );
prefs.push(["<hr>"+s,latitude,longitude]);
if ( decodeURIComponent(subjValue) == keyword ) {
hit += s;
ruteToHitPoint = "http://www.google.com/maps/?daddr=" + latitude + "," + longitude;
nHit++;
}
});
if ( nHit > 0 ) {
list += "<hr><h4>指定されたサブジェクトが "+nHit+" 件見つかりました。</h4>";
list += hit + "<br><br>";
}
});
});
$("#result").append( list + "この端末からの位置情報の取得を許可してからもう一度アクセスしてください。" );
navigator.geolocation.getCurrentPosition(function(pos) {
var lat = pos.coords.latitude;
var long = pos.coords.longitude;
if ( ruteToHitPoint != "" )
{
$('#result').empty();
$('#result').append( list + "<hr><h4>現在地から目的地までのルートを表示します。</h4>");
parent.location.href = ruteToHitPoint + "&saddr=" + lat + "," + long;
}
else
{
$('#result').empty();
$('#result').append( list + "<hr><h4>現在地から近い順にリスト表示します。</h4>");
$.each(prefs, function(i, p) {
p[3] = (lat - p[1]) * (lat - p[1]) + (long - p[2]) * (long - p[2]);
});
prefs.sort(function(p1, p2) {
return p1[3] - p2[3];
});
$.each(prefs, function(i, p) {
$('#result').append(p[0]);
$('#result').append(" <a target=\"_top\" href=\"http://www.google.com/maps/?saddr=" + lat + "," + long + "&daddr=" + p[1] + "," + p[2] + "\">【ここから目的地へのルートを表示】</a>");
});
}
}, function(error) {
$('#result').empty();
$('#result').append( list + "<hr><h4>現在地情報が取得できないため、登録順にリスト表示します。</h4>");
$.each(prefs, function(i, p) {
$('#result').append(p[0]);
});
});
};
function getParameterFromURL( paramString )
{
var value = "";
var topWindow = top.window.location.search;
if( topWindow ){
var q = decodeURIComponent(topWindow.substring(1,topWindow.length)).split("&");