function jsonSinkanFeed(json) {
	json.noimage = 0;
	json.nodate = 0;
	var idx = json.style.indexOf('_');
	if (idx >= 0) {
		// ckecked 'xxxx_noimage'
		if (json.style.indexOf('_noimage') >= 0) json.noimage = 1;

		// ckecked 'xxxx_nodate'
		if (json.style.indexOf('_nodate') >= 0) json.nodate = 1;

		// 'xxxx_???' -> 'xxxx'
		json.style = json.style.substr(0, idx);
	}

	// mytitle -> title
	if (json.mytitle && json.mytitle.length > 0) {
		json.title = json.mytitle;
	}

	switch(json.style) {
	case 'image2':	jsonSinkanFeed_Image2(json); break;
	case 'image1':	jsonSinkanFeed_Image1(json); break;
	case 'list':
	default:			jsonSinkanFeed_List(json); break;
	}
}


function jsonSinkanFeed_List(json) {
	html = '';
	html += '<div class="sinkan-blogparts-list">';
	html += '<div class="header"><a href="' + json.link + '">' + json.title + '</a></div>';

	var items = json.items;
	var idx = 0;
	for (var i = 0; i < items.length && idx < json.num; ++i) {
		var item = items[i];
		if (json.noimage == 1 && item.noimage_t == 1) continue;

		if (idx%2 == 0) {
			html += '<dl class="item_o">';
		}
		else {
			html += '<dl class="item_e">';
		}
		html += '<dt><div class="thumb"><a href="' + item.link + '" title="' + item.title + '">';
		html += '<img src="' + item.image_t + '" ';

		if (item.image_t_w > 0 && item.image_t_h > 0) {
			var long = Math.max (item.image_t_w, item.image_t_h);
			var w = Math.floor (item.image_t_w * 32 / long);
			var h = Math.floor (item.image_t_h * 32 / long);
			html += 'width="' + w + '" height="' + h + '" ';
		}
		else {
			html += 'width="22" ';
		}

		html += '/>';
		html += '</a></div></dt>';
		html += '<dd>';

		if (!json.nodate && json.nodate != 1) {
			html += '<span class="date">' + item.date + '</span>';
		}

		html += '<a class="title" href="' + item.link + '" title="' + item.title + '">' + cutStr(item.title, 20) + '</a>';
		var author = (item.author.length > 0) ? item.author : item.publisher;
		html += '<span class="author">' + cutStr(author, 20) + '</span>';
		html += '</dd>';
		html += '</dl>';

		++idx;
	}

	if (idx == 0) {
		html += '<dl class="item_o"><dd class="msg"><br />no item, now.</dd></dl>';
	}

	html += '<div class="footer"><a href="http://sinkan.net/"><img src="http://image.sinkan.net/blogparts_footer.gif" width="160" height="24" title="新刊.net" /></a></div>';
	html += '</div>';

	var div = document.getElementById(json.element);
	div.innerHTML = html;
}


function jsonSinkanFeed_Image2(json) {
	html = '';
	html += '<div class="sinkan-blogparts-image2">';
	html += '<div class="header"><a href="' + json.link + '">' + json.title + '</a></div>';

	html += '<dl class="items">';

	var items = json.items;
	var idx = 0;
	for (var i = 0; i < items.length && idx < json.num; ++i) {
		var item = items[i];
		if (json.noimage == 1 && item.noimage_t == 1) continue;

		if (idx%2 == 0) {
			html += '<dd class="item_o">';
		}
		else {
			html += '<dd class="item_e">';
		}

		if (!json.nodate || json.nodate != 1) {
			html += '<div class="date">' + item.date + '</div>';
		}

		html += '<div class="thumb"><a href="' + item.link + '" title="' + item.date + ' ' + item.title + ' ' + item.author + '">';
		html += '<img src="' + item.image_t + '" ';

		if (item.image_t_w > 0 && item.image_t_h > 0) {
			var long = Math.max (item.image_t_w, item.image_t_h);
			var w = Math.floor (item.image_t_w * 77 / long);
			var h = Math.floor (item.image_t_h * 77 / long);
			html += 'width="' + w + '" height="' + h + '" ';
		}
		else {
			html += 'width="22" ';
		}

		html += '/>';
		html += '</a></div></dd>';

		++ idx;
	}
	if (idx % 2 == 1) {
		html += '<dd class="item_e">';
		if (!json.nodate && json.nodate != 1) {
			html += '<div class="date"></div>';
		}
		html += '<div class="thumb"></div></dd>';
	}

	if (idx == 0) {
		html += '<dd class="msg">表示アイテムはありません</dd>';
	}

	html += '</dl>';

	html += '<div class="footer"><a href="http://sinkan.net/"><img src="http://image.sinkan.net/blogparts_footer.gif" width="160" height="24" title="新刊.net" /></a></div>';
	html += '</div>';

//	document.write(htmlspecialchars(html));

	var div = document.getElementById(json.element);
	div.innerHTML = html;
}


function jsonSinkanFeed_Image1(json) {
	html = '';
	html += '<div class="sinkan-blogparts-image1">';
	html += '<div class="header"><a href="' + json.link + '">' + json.title + '</a></div>';

	html += '<dl class="items">';

	var items = json.items;
	var idx = 0;
	for (var i = 0; i < items.length && idx < json.num; ++i) {
		var item = items[i];
		if (json.noimage == 1 && item.noimage_t == 1) continue;

		html += '<dd>';

		if (!json.nodate || json.nodate != 1) {
			html += '<div class="date">' + item.date + '</div>';
		}

		html += '<div class="thumb"><a href="' + item.link + '" title="' + item.date + ' ' + item.title + ' ' + item.author + '">';
		html += '<img src="' + item.image_m + '" ';

		if (item.image_m_w > 0 && item.image_m_h > 0) {
			var long = Math.max (item.image_m_w, item.image_m_h);
			var w = Math.floor (item.image_m_w * 154 / long);
			var h = Math.floor (item.image_m_h * 154 / long);
			html += 'width="' + w + '" height="' + h + '" ';
		}
		else {
			html += 'width="72" ';
		}

		html += '/>';
		html += '</a></div></dd>';

		++ idx;
	}

	if (idx == 0) {
		html += '<dd class="msg">表示アイテムはありません</dd>';
	}

	html += '</dl>';

	html += '<div class="footer"><a href="http://sinkan.net/"><img src="http://image.sinkan.net/blogparts_footer.gif" width="160" height="24" title="新刊.net" /></a></div>';
	html += '</div>';

	var div = document.getElementById(json.element);
	div.innerHTML = html;
}


function cutStr(str, len) {
	if (str && str.length > len) {
		return str.substr(0, len) + '...';
	}
	else{
		return str;
	}
}

function htmlspecialchars(ch) { 
    ch = ch.replace(/&/g,"&amp;") ;
    ch = ch.replace(/"/g,"&quot;") ;
    ch = ch.replace(/'/g,"&#039;") ;
    ch = ch.replace(/</g,"&lt;") ;
    ch = ch.replace(/>/g,"&gt;") ;
    return ch ;
}
