
var entryUUIDsList = <$EntryUUIDs$>;

function getCategoryUUIDForEntry(entryUUID) {
    var entryCategoryUUIDPairs = <$EntryCategoryUUIDPairs$>;
    
    for(var i = 0; i < entryCategoryUUIDPairs.length -1; i++) {
        if(entryCategoryUUIDPairs[i] == entryUUID) {
            return(entryCategoryUUIDPairs[i+1]);
        }
    }
}

function getBlogName() {
    var blogName = '<$BlogName$>';
    document.write(blogName);
}

function getCategoryName(categoryUUID) {
    var categoryPairs = <$CategoryUUIDNamePairs$>;
    
    for(var i = 0; i < categoryPairs.length -1; i++) {
        if(categoryPairs[i] == categoryUUID) {
            document.write(categoryPairs[i+1]);
        }
    }
}

function getCalendarHead() {
    var calendarHead = '<$CalendarHead$>';
    document.write(calendarHead);
}

function getBlogCalendarRows() {
    var calendarRows = '<$BlogCalendarRows$>';
    document.write(calendarRows);
}

function getCategoryCalendarRows() {
    var calendarRows = '<$CategoryCalendarRows$>';
    document.write(calendarRows);
}

function getEntryCalendarRows() {
    var calendarRows = '<$EntryCalendarRows$>';
    document.write(calendarRows);
}

function getArchiveCalendarRows() {
    var calendarRows = '<$ArchiveCalendarRows$>';
    document.write(calendarRows);
}

function getYearCalendarRows() {
    var calendarRows = '<$YearCalendarRows$>';
    document.write(calendarRows);
}

function getDayCalendarRows() {
    var calendarRows = '<$DayCalendarRows$>';
    document.write(calendarRows);
}

function getBlogEntriesCount() {
    var blogEntriesCount = '<$BlogEntriesCount$>';
    document.write(blogEntriesCount);
}

function getCategoryStatistics() {
    var categoryStatistics = '<$CategoryStatistics$>';
    document.write(categoryStatistics);
}

function getCategoryEntriesCount(categoryUUID) {
    var categoryPairs = <$CategoryUUIDEntriesCountPair$>;
    
    for(var i = 0; i < categoryPairs.length; i++) {
        if(categoryPairs[i] == categoryUUID) {
            document.write(categoryPairs[i+1]);
        }
    }
}

function getBlogCategories() {
    var categories = '<$BlogCategories$>';
    document.write(categories); 
}

function getBlogHorizontalCategories() {
    var horizontalCategories = '<$BlogHorizontalCategories$>';
    document.write(horizontalCategories);
}

function getCategoryCategories() {
    var categories = '<$CategoryCategories$>';
    document.write(categories); 
}

function getCategoryHorizontalCategories() {
    var horizontalCategories = '<$CategoryHorizontalCategories$>';
    document.write(horizontalCategories);
}

function getEntryCategories() {
    var categories = '<$EntryCategories$>';
    document.write(categories); 
}

function getEntryHorizontalCategories() {
    var horizontalCategories = '<$EntryHorizontalCategories$>';
    document.write(horizontalCategories);
}

function getArchiveCategories() {
    var categories = '<$ArchiveCategories$>';
    document.write(categories); 
}

function getArchiveHorizontalCategories() {
    var horizontalCategories = '<$ArchiveHorizontalCategories$>';
    document.write(horizontalCategories);
}

function getYearCategories() {
    var categories = '<$YearCategories$>';
    document.write(categories); 
}

function getYearHorizontalCategories() {
    var horizontalCategories = '<$YearHorizontalCategories$>';
    document.write(horizontalCategories);
}

function getDayCategories() {
    var categories = '<$DayCategories$>';
    document.write(categories); 
}

function getDayHorizontalCategories() {
    var horizontalCategories = '<$DayHorizontalCategories$>';
    document.write(horizontalCategories);
}

function getUsername() {
    var username = '<$Username$>';
    document.write(username);
}

// Modified by OKAMURA Yuji
function getFeedbackLink(entryTitle, entryTitleSJIS) {
	var encodedEmail = '<$EncodedEmail$>';

	if (encodedEmail.length > 0) {
		if (entryTitleSJIS && navigator.appName == 'Microsoft Internet Explorer') {
			document.write("<a href=\"mailto:" + encodedEmail + "?Subject=Re: " + entryTitleSJIS + "\">Feedback</a>");
		}
		else {
			document.write("<a href=\"mailto:" + encodedEmail + "?Subject=Re: " + entryTitle + "\">Feedback</a>");
		}
	}
	else {
		document.write("");
	}
}

var	NextEntryLinkString = 'Previous';
var PrevEntryLinkString = 'Next';

function getNextEntryLink(entryUUID) {
	var	i;
	var	entryUUID;
	var	categoryUUID;

	for (i = 0; i < entryUUIDsList.length - 1; i++) {
		if (entryUUIDsList[i] == entryUUID) {
			entryUUID = entryUUIDsList[i+1];
			categoryUUID = getCategoryUUIDForEntry(entryUUID);
			document.write('<a href="../../'+categoryUUID+'/'+entryUUID+'/index.html">'+NextEntryLinkString+'</a>');
			return;
		}
	}

	document.write('');
}

function getPreviousEntryLink(entryUUID) {
	var	i;
	var	entryUUID;
	var	categoryUUID;

	for (i = 1; i < entryUUIDsList.length; i++) {
		if (entryUUIDsList[i] == entryUUID) {
			entryUUID = entryUUIDsList[i-1];
			categoryUUID = getCategoryUUIDForEntry(entryUUID);
			document.write('<a href="../../'+categoryUUID+'/'+entryUUID+'/index.html">'+PrevEntryLinkString+'</a>');
			return;
		}
	}

	document.write('');
}

// Writen by OKAMURA Yuji
function WriteCalendar(baseURL) {
	var	path = location.href;

	if (baseURL && path.indexOf(baseURL) == 0) {
		path = path.substr(baseURL.length);
	}

	document.writeln(
		'<table border="0" cellspacing="4" cellpadding="0">',
		'	<tr>',
		'		<td colspan="7" align="center">',
		'			<span class="calendarhead"><$CalendarHead$></span>',
		'		</td>',
		'	</tr>',
		'	<tr>',
		'		<td align="center">',
		'			<span class="calendar">Sun</span>',
		'		</td>',
		'		<td align="center">',
		'			<span class="calendar">Mon</span>',
		'		</td>',
		'		<td align="center">',
		'			<span class="calendar">Tue</span>',
		'		</td>',
		'		<td align="center">',
		'			<span class="calendar">Wed</span>',
		'		</td>',
		'		<td align="center">',
		'			<span class="calendar">Thu</span>',
		'		</td>',
		'		<td align="center">',
		'			<span class="calendar">Fri</span>',
		'		</td>',
		'		<td align="center">',
		'			<span class="calendar">Sat</span>',
		'		</td>',
		'	</tr>'
	);
	if (path.match(/\/C\d+\/E\d+\/[^\/]*$/)) {
		// In case of EntryPage
		getEntryCalendarRows();
	}
	else if (path.match(/\/C\d+\/[^\/]*$/)) {
		// In case of CategoryPage
		getCategoryCalendarRows();
	}
	else if (path.match(/\/20\d{2}\/([1-9]|1[0-2])\/(\d|[12]\d|3[01])\/[^\/]*$/)) {
		// In case of DayPage
		getDayCalendarRows();
	}
	else if (path.match(/\/20\d{2}\/[^\/]*$/)) {
		// In case of YearPage
		getYearCalendarRows();
	}
	else if (path.match(/\/archive\.html$/)) {
		// In case of ArchivePage
		getArchiveCalendarRows();
	}
	else {
		// In case of BlogPage
		getBlogCalendarRows();
	}
	document.writeln(
		'</table>'
	);
}

function WriteUTF8RssLink(uri, text) {
	document.write(
		'<a href="' + uri.replace(/xml$/, 'utf8.xml') + '">' + text + '</a>'
	);
}

function WriteCategorySelect() {
	var	categoryPairs = <$CategoryUUIDNamePairs$>;
	var	i;

	document.write(
		'<select name="CategoryUUID">\n',
		'	<option value="">All categories</option>\n'
	);
	for (i = 0; i < categoryPairs.length; i += 2) {
		document.write(
			'	<option value="'+categoryPairs[i]+'">'+categoryPairs[i+1]+'</option>\n'
		);
	}
	document.write(
		'</select>\n'
	);
}

function PrevMonth(date) {
	var	year;
	var	month;
	var	prev;

	year = date.getYear();
	month = date.getMonth();
	if (year < 2000) { year += 1900; }
	prev = new Date(year, month, 1);

	prev.setTime(prev.getTime() - 1);
	year = prev.getYear();
	month = prev.getMonth();
	if (year < 2000) { year += 1900; }

	return new Date(year, month, 1);
}

var	ListEntryHTML	= 'ListEntry.html';
var	BlogStartMonth	= new Date(2000, 1, 1);

function WriteMonthryArchiveLinks(num, base, limitCategory) {
	var	date;

	for (date = new Date(); num != 0 && date >= BlogStartMonth; num--, date = PrevMonth(date)) {
		var	year = date.getYear();
		var month = date.getMonth() + 1;

		if (year < 2000) { year += 1900; }
		if (month < 10) { month = '0' + month; }

		if (limitCategory && location.pathname.match(/\/(C[0-9]+)\/index\.html$/) || location.pathname.match(/\/(C[0-9]+)\/$/) || location.pathname.match(/\/(C[0-9]+)\/E[0-9]+\/index\.html$/) || location.pathname.match(/\/(C[0-9]+)\/E[0-9]+\/$/)) {
			document.write(
				'<a href="' + base + ListEntryHTML + '?CategoryUUID=' + RegExp.$1 + '&amp;FromDate=' + year + '%2F' + month + '%2F01&amp;ToDate=' + year + '%2F' + month + '%2F99" target="_blank">',
				year + '/' + month,
				'</a><br />\n'
			);
		}
		else {
			document.write(
				'<a href="' + base + ListEntryHTML + '?FromDate=' + year + '%2F' + month + '%2F01&amp;ToDate=' + year + '%2F' + month + '%2F99" target="_blank">',
				year + '/' + month,
				'</a><br />\n'
			);
		}
	}
}

function WriteCategories(baseURL) {
	var	pathPrefix;
	var	uuid = new Array;
	var	uuid2num = new Array;
	var	uuid2name = new Array;
	var	i;

	{
		var	path = location.href;
	
		if (baseURL && path.indexOf(baseURL) == 0) {
			path = path.substr(baseURL.length);
		}
		if (path.match(/\/C\d+\/E\d+\/[^\/]*$/)) {
			// In case of EntryPage
			pathPrefix = '../../';
		}
		else if (path.match(/\/C\d+\/[^\/]*$/)) {
			// In case of CategoryPage
			pathPrefix = '../';
		}
		else if (path.match(/\/20\d{2}\/([1-9]|1[0-2])\/(\d|[12]\d|3[01])\/[^\/]*$/)) {
			// In case of DayPage
			pathPrefix = '../../';
		}
		else if (path.match(/\/20\d{2}\/[^\/]*$/)) {
			// In case of YearPage
			pathPrefix = '../';
		}
		else {
			// In case of ArchivePage
			// In case of BlogPage
			pathPrefix = '';
		}
	}

	{
		var categories = '<$BlogCategories$>';

		while (categories.length > 0) {
			if (categories.match(/<a href="(C\d+)\/index\.html">(.*)$/)) {
				uuid[uuid.length] = RegExp.$1;
				categories = RegExp.$2;
			}
			else {
				categories = '';
			}
		}
	}

	{
		var categoryPairs = <$CategoryUUIDEntriesCountPair$>;

		for (i = 0; i < categoryPairs.length; i += 2) {
			uuid2num[categoryPairs[i]] = categoryPairs[i+1];
		}
	}

	{
		var categoryPairs = <$CategoryUUIDNamePairs$>;

		for (i = 0; i < categoryPairs.length; i += 2) {
			uuid2name[categoryPairs[i]] = categoryPairs[i+1];
		}
	}

	for (i = 0; i < uuid.length; i++) {
		document.write('<a href="'+pathPrefix+uuid[i]+'/index.html" title="The page of &quot;'+uuid2name[uuid[i]]+'&quot;">'+uuid2name[uuid[i]]+'</a> ('+uuid2num[uuid[i]]+')<br />\n');
	}
}

function WriteNextEntryLink(entryUUID) {
	var	i;
	var	nextEntryUUID;
	var	categoryUUID;

	for (i = 0; i < entryUUIDsList.length - 1; i++) {
		if (entryUUIDsList[i] == entryUUID) {
			categoryUUID = getCategoryUUIDForEntry(entryUUID);
			for (i++; i < entryUUIDsList.length; i++) {
				if (getCategoryUUIDForEntry(entryUUIDsList[i]) == categoryUUID) {
					nextEntryUUID = entryUUIDsList[i];
					break;
				}
			}
			break;
		}
	}

	if (nextEntryUUID) {
		document.write('<a href="../../'+categoryUUID+'/'+nextEntryUUID+'/index.html">'+NextEntryLinkString+'</a>');
	}
}

function WritePreviousEntryLink(entryUUID) {
	var	i;
	var	prevEntryUUID;
	var	categoryUUID;

	for (i = 1; i < entryUUIDsList.length; i++) {
		if (entryUUIDsList[i] == entryUUID) {
			categoryUUID = getCategoryUUIDForEntry(entryUUID);
			for (i--; 0 <= i; i--) {
				if (getCategoryUUIDForEntry(entryUUIDsList[i]) == categoryUUID) {
					prevEntryUUID = entryUUIDsList[i];
					break;
				}
			}
			break;
		}
	}

	if (prevEntryUUID) {
		document.write('<a href="../../'+categoryUUID+'/'+prevEntryUUID+'/index.html">'+PrevEntryLinkString+'</a>');
	}
}
