
// <meta http-equiv="content-type" content="text/html; charset=utf-8">

// main.js - script code used in all Yoshida pages
//
// Although the encoding above says UTF-8, no Japanese characters should
// be stored here, as this file is also used on Japanese pages encoded
// in Shift-JIS.  Note: you can use unicode escape characters in Javascript strings.
// Use http://jdaggett.best.vwh.net/jsunicode.html to convert text into
// these characters.
//

var kMenuClassDefault = "menulist";

function generateMenu( menuData, indentLevel )
{
	var outStr = "";
	
	// exclude submenus where showmenu attribute is false
	if ( typeof( menuData.showmenu ) != "undefined" && !menuData.showmenu ) {
		return "";
	}
	
	if ( typeof( indentLevel ) == "undefined" ) indentLevel = 0;
	
	// generate the UL tag
	outStr += generateIndent( indentLevel ) + "<ul";
	
	// -- menu id
	if ( typeof( menuData.id ) != "undefined" && menuData.id != "" ) {
		outStr += " id=\"" + menuData.id + "\"";
	}
	
	// -- menu class
	var class_id = menuData.class_id;
	
	if ( class_id == null || class_id == "" ) {
		class_id = kMenuClassDefault;
	}
	
	outStr += " class=\"" + class_id + "\">\n";	// end of the ul tag
	
	// items
	var menuItems = menuData.items;
				
	if ( menuItems != null ) {
		var i;
		
		for ( i = 0; i < menuItems.length; i++ ) {
			var item = menuItems[i];
			
			// skip this item if showmenu attribute is false
			if ( typeof( item.showmenu ) != "undefined" && !item.showmenu ) {
				continue;
			}
			
			outStr += generateMenuItem( item.link, item.text, item.submenu, indentLevel + 1, item.description );				
		}
	}
	
	outStr += generateIndent( indentLevel ) + "</ul>\n";
	
	return outStr;
}

function generateMenuItem( menuLink, menuText, submenu, indentLevel, desc )
{			
	var outStr = "", hasSubMenu, optionalNewline, tooltip = "";
	
	if ( typeof( desc ) != "undefined" ) {
		tooltip = " title=\"" + desc + "\"";
	}
	
	hasSubMenu = ( typeof( submenu ) != "undefined" );
	optionalNewline = ( hasSubMenu ? "\n" : "" );
	
	var itemAttr = "";
	if ( typeof(gCurrentMenu) != "undefined" && menuText == gCurrentMenu ) {
		itemAttr = " class=\"currentitem\"";
	}
	outStr += generateIndent( indentLevel ) + "<li" + itemAttr + ">" + optionalNewline;
	
	// generate the A tag
	if ( hasSubMenu ) outStr += generateIndent( indentLevel );
	if ( typeof( menuLink ) != "undefined" && menuLink != "" ) {
		outStr += "<a href=\"" + menuLink + "\"" + tooltip + ">" + menuText + "<" + "/a>" + optionalNewline;
	} else {
		outStr += menuText +  optionalNewline;
	}
	
	// generate the submenu if needed
	if ( hasSubMenu  ) {
		outStr += generateMenu( submenu, indentLevel );
		outStr += generateIndent( indentLevel );
	}
	
	outStr += "</li>\n";
	
	return outStr;
}

function generateIndent( indentLevel )
{
	outStr = "";
	for ( var i = 0; i < indentLevel; i++ ) {
		outStr += "\t";
	}
	return outStr;
}

/* ja_or_en parameter specifies whether the banner is for the japanese or english version of the home page */

var kBannerPicture = "../images/yoshidaheader75.jpg";

function generateBanner( ja_or_en )
{
	var outStr = "";
	var banner_contact, banner_location, banner_sitemap;
	
	// if the type of page isn't specified, assume it's an english page
	if ( typeof( ja_or_en ) == "undefined" ) {
		ja_or_en = "en";
	}
	
	if ( ja_or_en == "ja" ) {
		banner_contact = "\u9023\u7d61\u5148";
		banner_location = "\u6240\u5728\u5730";
		banner_sitemap = "\u30b5\u30a4\u30c8\u30de\u30c3\u30d7";
	} else {
		banner_contact = "contact us";
		banner_location = "location";
		banner_sitemap = "sitemap";
	}
	
	outStr += "<div id=\"bannerwrap\">\n";
	
	outStr += "<div id=\"bannerpicture_wrap\">";
	outStr += "<a id=\"bannerpicture\" href=\"index.html\">";
	outStr += "<img src=\"" + kBannerPicture + "\" alt=\"Yoshida Institute\" />";
	outStr += "</a>";
	outStr += "</div>";  // bannerpicture_wrap
	
	outStr += "<div id=\"bannerlinks\">\n";
	outStr += "	<nobr>\n";
	outStr += "	<span id=\"detailwrap\">\n";
	outStr += "		<a class=\"detailitem\" href=\"contact.html\">" + banner_contact + "</a>\n";
	outStr += "		:\n";
	outStr += "		<a class=\"detailitem\" href=\"contact.html#location\">" + banner_location + "</a>\n";
	outStr += "		:\n";

	if ( ja_or_en == "en" ) {
		outStr += "		<a class=\"detailitem\" href=\"faq.html\">faq</a>\n";
		outStr += "		:\n";
	}

	outStr += "		<a class=\"detailitem\" href=\"sitemap.html\">" + banner_sitemap + "</a>\n";
	outStr += "		:\n";

	if ( ja_or_en == "ja" ) {
		outStr += "		<a id=\"langlink\" class=\"detailitem\" href=\"../en/index_en.html\">english</a>:\n";
	} else {
		outStr += "		<a id=\"langlink\" class=\"detailitem\" href=\"../ja/index_ja.html\">japanese</a>:\n";
	}

	outStr += "	</span>\n";
	outStr += "	</nobr>\n";
	outStr += "</div>\n";  // bannerlinks
	
	outStr += "\n";
	outStr += "&nbsp; \n";  // IE is flakey without *something* in the div... *sigh*
	
	outStr += "</div>\n";  // bannerwrap

	return outStr;
}

function generateMenuSpecial( itemData )
{
	var outStr = "";
	
	for ( var i = 0; i < itemData.length; i++ ) {
		var item = itemData[i];
		
		outStr += "<a ";
		outStr += "href=\"" + item.link + "\" ";
		outStr += ">";
		outStr += "<img alt=\"" + item.alt + "\" src=\"" + item.src + "\" />";
		outStr += "</a><br /><br />";
	}
	
	return outStr;
}

function generateSitemap( sitemapData )
{
	var outStr = "";
	
	// exclude submenus where showsitemap attribute is false
	if ( typeof( sitemapData.showsitemap ) != "undefined" && !sitemapData.showsitemap ) {
		return "";
	}
	
	outStr += "<ul>";
	
	// items
	var mapItems = sitemapData.items;
				
	if ( mapItems != null ) {
		var i;
		
		for ( i = 0; i < mapItems.length; i++ ) {
			var item = mapItems[i];
			
			// skip this item if showsitemap attribute is false
			if ( typeof( item.showsitemap ) != "undefined" && !item.showsitemap ) {
				continue;
			}
			
			outStr += generateSitemapItem( item.link, item.text, item.submenu, item.description );				
		}
	}
	
	outStr += "</ul>\n";

	return outStr;
}

function generateSitemapItem( link, text, submenu, desc )
{
	var outStr = "";
	var hasSubMenu;
	
	if ( typeof( desc ) == "undefined" ) desc = "";	
	hasSubMenu = ( typeof( submenu ) != "undefined" );
	
	outStr += "<li>";
	
	// generate the A tag
	if ( typeof( link ) != "undefined" && link != "" ) {
		outStr += "<a href=\"" + link + "\">" + text + "<" + "/a>";
	} else {
		outStr += text;
	}
	
	outStr += " &mdash; " + desc;
	
	// generate the submenu if needed
	if ( hasSubMenu  ) {
		outStr += generateSitemap( submenu );
	}
	
	outStr += "</li>\n";
	
	return outStr;

}

//	<div id="copyright">
//		<p>&copy;2003 Yoshida Institute of Japanese Language</p>
//	</div>

var kBaseYear = 2003;
var kCopyrightString_en = "Yoshida Institute of Japanese Language";
var kCopyrightString_ja = "\u30e8\u30b7\u30c0\u65e5\u672c\u8a9e\u5b66\u9662";  // yoshida nihongo gakuin

function generateCopyright( ja_or_en )
{
	var outStr = "";
	var copyDate, copyStr;
	var d = new Date();		// current date
	
	// make the date string, appending on the current year if needed
	var currentYear = d.getFullYear();
	copyDate = kBaseYear;
	if ( currentYear > kBaseYear ) copyDate += "-" + currentYear;
	
	// decide on which copyright string to use
	if ( ja_or_en == "ja" ) {
		copyStr = kCopyrightString_ja;
	} else {
		copyStr = kCopyrightString_en;
	}
	
	outStr += "<div id=\"copyright\">";
	outStr += "<p>";
	outStr += "<span class=\"validation\">";
	outStr += "<a href=\"http://validator.w3.org/check/referer\"><img src=\"../img/xhtml10.gif\" alt=\"xhtml\" title=\"validate this page as xhtml\" /></a>";
	outStr += "<a href=\"http://jigsaw.w3.org/css-validator/check/referer\"><img src=\"../img/css.gif\" alt=\"css\" title=\"validate the css for this page\" /></a>";
	outStr += "</span>";
	outStr += "&copy;";
	outStr += copyDate + " " + copyStr;
	outStr += "</p>";
	outStr += "</div>";
	
	return outStr;
}


var kMailSuffix = "\u0040" + "\u0079\u006f\u0073\u0069\u0064\u0061\u002e\u0063\u006f\u006d";

var gEmailList = new Object();
gEmailList["emailInquiry"] = "yo" + "sida" + kMailSuffix;

function generateEmailLink( emailID, subject )
{
	var outStr = "";
	var email = gEmailList[emailID];
	
	outStr += "<a href=\"mailto:";
	outStr += email;
	outStr += "?subject=" + subject + "\">";
	outStr += email;
	outStr += "</a>";
	
	return outStr;
}

// code for fixing up external links so that they open in a new window
//   http://www.sitepoint.com/article/1041

function externalLinks() 
{
	if ( !document.getElementsByTagName ) return;
	
	var anchors = document.getElementsByTagName("a");
	
	for ( var i=0; i<anchors.length; i++ ) {
		var anchor = anchors[i];
		if ( anchor.getAttribute("href") && anchor.getAttribute("rel") == "external" )
		anchor.target = "_blank";
	}
}
window.onload = externalLinks;

