﻿/*  ----------------------------------------------------------------------
 *  Assorted Gadgets Script - modified by TISS
 *  $Id: Gadgets.js,v 1.1 2004/09/07 06:44:49 nzawa Exp $
 *
 *
 *  Copyright (c) 2004 Nzawa
 *  Copyright (c) 2004 Takakei Information System Society (TISS)
 *
 *  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.
 *
  ----------------------------------------------------------------------*/


window.onload = function()
{
	//makenavifromlinks();
	makeabbrvisible();
	urnisbn2url();
};


/*
 *  link要素からナビゲーションを生成する
 */
function makenavifromlinks()
{
	if ( navigator.userAgent.match(/Opera/) ||
		!document.implementation || !document.implementation.hasFeature("HTML", "1.0") ) return;
	
	var SKIP_MAILTO = true;
	var SKIP_STYLESHEET = true;
	var REL_PREFIX = "rel: ";
	var REV_PREFIX = "rev: ";
	var NAVI_ID = "AutoGeneratedNavigation";
	var NAVI_SEPARATOR = " | ";
	
	var navi = document.createElement("p");
	var linklist = document.getElementsByTagName("link");
	var link, linktype, href, anchor, anchortext;
	
	for ( var i = 0; i < linklist.length; i++ ) {
		link = linklist.item(i);
		href = link.getAttribute("href");
		
		if ( link.getAttribute("rel") )
			linktype = REL_PREFIX + link.getAttribute("rel").toLowerCase();
		else if ( link.getAttribute("rev") )
			linktype = REV_PREFIX + link.getAttribute("rev").toLowerCase();
		else
			linktype = "Link #" + (i + 1);
		
		if ( !href ) continue;
		else if ( SKIP_MAILTO && href.match(/^mailto:/) ) continue;
		else if ( SKIP_STYLESHEET && linktype.match(/\bstylesheet\b/i) ) continue;
		
		anchor = document.createElement("a");
		anchor.setAttribute("href", href);
		
		if ( link.getAttribute("title") ) {
			anchortext = document.createTextNode( link.getAttribute("title") );
			anchor.appendChild(anchortext);
			anchor.setAttribute("title", linktype);
		}
		else {
			anchortext = document.createTextNode(linktype);
			anchor.appendChild(anchortext);
		}
		
		if ( navi.lastChild ) navi.appendChild( document.createTextNode(NAVI_SEPARATOR) );
		navi.appendChild(anchor);
	}
	
	if ( navi.lastChild ) {
		navi.setAttribute("id", NAVI_ID);
		document.body.insertBefore(navi, document.body.firstChild);
	}
}


/*
 *  abbr要素を可視化する（IE用）
 */
function makeabbrvisible()
{
	if ( !navigator.userAgent.match(/MSIE/) || !document.all ) return;
	
	var SPANCLASS = "AutoGeneratedVisibleAbbr";
	var EXCLUDEURI = false /*/Properties\/Preview/*/;
	
	if ( document.URL.match(EXCLUDEURI) ) return;
	
	document.body.innerHTML = document.body.innerHTML.replace(/<abbr([^>]*)>([^<]+)<\/abbr>/ig,
		'<span class="' + SPANCLASS + '"$1><abbr$1>$2</abbr></span>');
}


/*
 *  ISBNなURNをURLに変換する
 *  参考：http://www.akatsukinishisu.net/itazuragaki/id/urn_isbn_and_javascript
 */
function urnisbn2url()
{
	if ( !document.implementation || !document.implementation.hasFeature('HTML', '1.0') ) return;
	
	var URLPREFIX = "http://www.amazon.co.jp/exec/obidos/ASIN/";
	var URLSUFFIX = "/";
	var anchorlist = document.getElementsByTagName("a");
	var anchor, href, urlparts, url, isbn;
	
	for ( var i = 0; i < anchorlist.length; i++ ) {
		url = null;
		anchor = anchorlist.item(i);
		href = anchor.getAttribute("href");
		
		if ( !href || !href.match(/^urn:isbn:.+/i) ) continue;
		
		urnparts = href.split(":");
		isbn = urnparts[2].toUpperCase();
		isbn = isbn.replace(/-/g, "");
		url = URLPREFIX + isbn + URLSUFFIX;
		
		if ( url ) anchor.setAttribute("href", url);
	}
}
