// -*- coding: UTF-8 -*-
// shownews.js - JavaScript
// Copyright 2008 Sofrosune. All rights reserved.
// Author: Sofrosune; www.sofrosune.net
// No part of this program may be reproduced or transmitted in any form or 
// by any means without permission from the author, Sofrosune.
//
// Date: September 18, 2008
// Version: 1.00; September 18, 2008
// Version: 2.00; May 10, 2009 (work with jtools.js)
// Version: 2.01; September 30, 2009 (added !target field)
// Version: 3.00; April 6, 2010 (available new theme 2)

// Usage:
/**
<head>
	<link type="text/css" rel="stylesheet" href="../style/style.css" />
	<link type="text/css" rel="stylesheet" href="../style/style_shownews.css" />
	<script type="text/javascript" src="../scripts/jquery.js"></script>
	<script type="text/javascript" src="../scripts/jtools.js"></script>
	<script type="text/javascript" src="../scripts/shownews.js"></script>
	<script type="text/javascript" src="../scripts/shownews_data.js"></script>
</head>
*/

// constants:
var kSN_TYPE_ALL = "all";
var kSN_TYPE_NONE = "none";

var kSN_TYPES = {
	"topic" : "Topic",
	"prod" : "Prod",
	"info" : "Info",
	"all" : "All"
//	"none" : "None"
};

// templates
var kSN_BASE_TMPL = '\
<ul class="theme_$$$theme$$$">\
$$$items$$$\
</ul>\
';
var kSN_ITEM_TMPL = '\
<li>\
<div class="shownews_date">$$$date$$$</div>\
<div class="shownews_type $$$type$$$">&nbsp;</div>\
<div class="shownews_subject">$$$subject$$$</div>\
</li>\
';

var kSN_ITEM2_TMPL = '\
<li>\
[$$$label$$$] $$$subject$$$\
</li>\
';

// navi
var kSN_NAVI_PREV_TMPL = '\
<div class="shownews_navi_prev"><a href="$$$self$$$?PARAM_TYPE=$$$type$$$&PARAM_OFFSET=$$$startprev$$$">[Show prev $$$step$$$]</a> （$$$restprev$$$ items rest）</div>\
';
var kSN_NAVI_NEXT_TMPL = '\
<div class="shownews_navi_next">（$$$restnext$$$ items rest）<a href="$$$self$$$?PARAM_TYPE=$$$type$$$&PARAM_OFFSET=$$$startnext$$$">[Show next $$$step$$$]</a></div>\
';

// note
/*
var kSN_NOTE_TMPL = '\
<div class="shownews_note">\
Symbols: \
<a class="topic" href="$$$self$$$?PARAM_TYPE=topic">Topic</a> |\
<a class="prod" href="$$$self$$$?PARAM_TYPE=prod">Prod</a> |\
<a class="info" href="$$$self$$$?PARAM_TYPE=info">Info</a> |\
<a class="all" href="$$$self$$$?PARAM_TYPE=all">All</a>\
</div>\
';
*/

var kSN_NOTE_TMPL = '<div class="shownews_note">Symbols: $$$items$$$$</div>';

var kSN_NOTE_ITEM_TMPL = '<a class="$$$type$$$" href="$$$self$$$?PARAM_TYPE=$$$type$$$">$$$label$$$</a> ';

//var kSN_NOTE_ITEM_TMPL = '<a class="nomark" href="$$$self$$$?PARAM_TYPE=$$$type$$$">[$$$label$$$]</a>';

// parameters
var kSN_STEPS_SIDEBAR_DEFAULT = 5; // number of articles to show at sidebar
var kSN_STEPS_LISTING_DEFAULT = 20; // number of articles to show in one page
var kSN_SHOW_TYPE = true;

// articles
var gSN_ARTICLES = [ /* format:[date,type,path,subject] */
	null
];

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// shownews_sidebar_put
// shownews_listing_put
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// REQUIRES: from jtools.js
// Usage:
//	<script type="text/javascript">shownews_sidebar_put();</script>
//	<script type="text/javascript">shownews_listing_put();</script>

function shownews_sidebar_put(type) {
	if (type == undefined) { type = kSN_TYPE_ALL; }
	document.write(shownews_generate(1,type,0,kSN_STEPS_SIDEBAR_DEFAULT));
}

function shownews_listing_put(type) {
	var start = jt_get_param("PARAM_OFFSET");
	if (type == undefined) { type = jt_get_param("PARAM_TYPE"); }
	document.write(shownews_generate(1,type,start,kSN_STEPS_LISTING_DEFAULT));
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// shownews_sidebar_put2
// shownews_listing_put2
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// REQUIRES: from jtools.js
// Usage:
//	<script type="text/javascript">shownews_sidebar2_put();</script>
//	<script type="text/javascript">shownews_listing2_put();</script>

function shownews_sidebar2_put(type) {
	if (type == undefined) { type = kSN_TYPE_ALL; }
	document.write(shownews_generate(2,type,0,kSN_STEPS_SIDEBAR_DEFAULT));
}

function shownews_listing2_put(type) {
	var start = jt_get_param("PARAM_OFFSET");
	if (type == undefined) { type = jt_get_param("PARAM_TYPE"); }
	document.write(shownews_generate(2,type,start,kSN_STEPS_LISTING_DEFAULT));
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// shownews_generate
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Usage:
//	<script type="text/javascript">shownews_generate(theme,type,start,count);</script>

function shownews_generate(theme,type,start,count) {

	if (theme == undefined) { theme = 1; }
	if (type == undefined) { type = kSN_TYPE_ALL; }
	if (start == undefined) { start = 0; }
	if (count == undefined) { count = kSN_STEPS_LISTING_DEFAULT; }

	var articles = gSN_ARTICLES;

	var msg = "";
	for (var k = start; k < articles.length; k++) {
		var tuple = articles[k];
		if (tuple == null) { continue; }
		var date_ = tuple[0].replace(/-/g,".");
		var type_ = tuple[1];
		var label_ = kSN_TYPES[type_];
		var path_ = tuple[2].replaceRootdir();
		var subject_ = tuple[3].replaceRootdir();
		if (path_ != "") {
			var target_ = "";
			if (path_.search(/^(\S+)!(\S+?)$/) != -1) {
				path_ = RegExp.$1;
				target_ = RegExp.$2;
			}
			if (target_ == "") {
				target_ = (path_.search(/^http:/) != -1) ? "viewWindow" : "_self";
			}
			subject_ = '<a href="' + path_ + '" target="' + target_ + '">' + subject_ + '</a>';
		//	window.alert(subject_);
		}
		if ((type != kSN_TYPE_ALL) && (type != kSN_TYPE_NONE) && (type != type_)) { continue; }
		if (--count < 0) { break; }
		var msg_ = kSN_ITEM_TMPL;
		if (theme == 2) { msg_ = kSN_ITEM2_TMPL; }
	//	if (! kSN_SHOW_TYPE) {
	//		msg_ = msg_.replace(/<div class="shownews_type.*?<\/div>/,"");
	//	}
		msg_ = jt_replace_key(msg_,{date:date_,type:type_,label:label_,url:path_,subject:subject_});
		msg += msg_;
	}

	var msg1 = kSN_BASE_TMPL;
	msg1 = jt_replace_key(msg1,{theme:theme,items:msg});

	return msg1;
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// shownews_navi
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// REQUIRES: from jtools.js
// Usage:
//	<script type="text/javascript">shownews_navi();</script>

function shownews_navi_put(type) {
	document.write(shownews_navi(type));
}

function shownews_navi(type) {

	if (type == undefined) { type = jt_get_param("PARAM_TYPE"); }

	var self = jt_get_self();
	var start = jt_get_param("PARAM_OFFSET");
	var step = kSN_STEPS_LISTING_DEFAULT;

	var total = 0;
	var articles = gSN_ARTICLES;
	for (var k = 0; k < articles.length; k++) {
		var tuple = articles[k];
		if (tuple == null) { continue; }
		if ((type == kSN_TYPE_ALL) || (type == kSN_TYPE_NONE) || (type == tuple[1])) { total += 1; }
	}

	if (start > total) { start = total; }
	if (start < 0) { start = 0; }
	var startprev = start - step;
	if (startprev < 0) { startprev = 0; }
	var startnext = start + step;
	if (startnext > total) { startnext = total; }

	var restprev = start;
	var restnext = total - startnext;
	var refer = {self:self,type:type,step:step,startprev:startprev,restprev:restprev,startnext:startnext,restnext:restnext};

	var msg = "";
	if (restprev > 0) {
		var msg_ = kSN_NAVI_PREV_TMPL;
		msg_ = msg_.replaceKey(refer);
		msg += msg_;
	}
	if (restnext > 0) {
		var msg_ = kSN_NAVI_NEXT_TMPL;
		msg_ = msg_.replaceKey(refer);
		msg += msg_;
	}

	return msg;
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// shownews_note_put
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// REQUIRES: from jtools.js
 Usage:
//	<script type="text/javascript">shownews_note_put();</script>

function shownews_note_put() {
	document.write(shownews_note());
}

function shownews_note() {

	var self = jt_get_self();
	var rootdir = jt_get_rootdir();

	var msg_items = "";
	for (var type in kSN_TYPES) {
		var msg_ = kSN_NOTE_ITEM_TMPL;
		var label = kSN_TYPES[type];
		msg_ = msg_.replaceKey({self:self,rootdir:rootdir,type:type,label:label});
		msg_items += msg_;
	}

	var msg = kSN_NOTE_TMPL;
	msg = msg.replaceKey({self:self,rootdir:rootdir,items:msg_items});

	return msg;
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// shownews_init
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

function shownews_init() {

//	if (typeof(initRollOverImages) == "function") {
//		initRollOverImages();
//	}

	// put sidebar
	$('dl.topics_sidebar').append(shownews_sidebar());

	// put listing
	$('ul.topics_listing').append(shownews_listing());

	// put navi
	$('div.topics_link').append(shownews_navi());
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// main functions:
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

//$(document).ready(shownews_init);

// end of javascript

