//
//

jQuery.noConflict();

var j$ = jQuery;
//j$.ajaxSetup({cache: false, dataType: 'script', scriptCharset: 'Shift_JIS'});


var SITE_PREFIX_URL = location.pathname.match(/^\/wnexco/) ? '/wnexco' : '';

var URL_QUERY = SITE_PREFIX_URL + '/web/cgi/whatsNew.fcgi';
var DELIMITER_COOKIE = ',';
var SEPARATER_COOKIE = ':';
var EXPIRE_COOKIE = 120;	// days 4 months
var TERM_COOKIE = 1000 * 3600 * 24 * EXPIRE_COOKIE;
//var EXPIRE_COOKIE = 1000 * 3600 * 24;


var newsManager = {
    cookieName: 'whats_new',
    url: location.pathname,
    seenHash: {},
    showHash: {},

    init: function() {
	//console.debug('init newsManager');
	var seenStr = j$.cookie(this.cookieName);
	if (seenStr != null) {
	    var seenList = seenStr.split(DELIMITER_COOKIE);

	    var t = new Date();

	    for (var i=0; i<seenList.length; i++) {
		var params = seenList[i].split(SEPARATER_COOKIE);
		if (params &&
		    params instanceof Array &&
		    params.length == 2 && 
		    ((t.getTime() - parseInt(params[1], 10)) < TERM_COOKIE)) { 
		    this.seenHash[params[0]] = params[1];
		}
	    }
	}
    },

    addShow: function(id, divId, opt) {
	this.showHash[id] = {id: divId, opt: opt};
    },

    deleteShow: function(id, noThanks, anim) {
	var div = newsManager.showHash[id];
	if (div) {
	    if (noThanks) {
		if (! div.opt ||
		    div.opt.noThanks != '1' ||
		    (div.opt.noThanks == '1' && j$('#news_' + id).is(':checked'))) {
		    newsManager.noThanks(id);
		} 
	    }

	    if (anim) {
		j$('#' + div.id).fadeOut(500, function() {
			j$('#' + div.id).remove();
		    });
	    } else {
		j$('#' + div.id).remove();
	    }
	}
    },

    noThanks: function(id) {
	var t = new Date();
	this.seenHash[id] = t.getTime();

	//console.debug('set nothanks news id:' + id);

	this.setSeen();
    },

    setSeen: function() {
	var seen = [];
	for (var key in this.seenHash) {
	    seen.push(key + SEPARATER_COOKIE + this.seenHash[key]);
	}

	j$.cookie(this.cookieName, seen.join(DELIMITER_COOKIE), {expires: EXPIRE_COOKIE});
    },

    getNews: function() {
	var keys = [];
	j$.each(this.seenHash, function(key){keys.push(key)});

	//var param = 'p=' + encodeURI(this.url) + '&c=' + j$.cookie(this.cookieName);
	var param = 'p=' + encodeURI(this.url) + '&c=' + keys.join(DELIMITER_COOKIE);

	j$.getJSON(URL_QUERY, 
		   param,
		   function(list) {
		       if (list && list instanceof Array) {
			   for (var i=0; i<list.length; i++) {
			       if (list[i].option && list[i].option.forceDisplay != '1' &&
				   (
				    newsManager.seenHash[list[i].id] || 
				    list[i].news == null)) {
				   continue;
			       }

			       var divId = showDialog(i, list[i].id, list[i].news, list[i].position, list[i].option);
			       newsManager.addShow(list[i].id, divId, list[i].option);
			   }
		       }

		   });

    }
};


function showDialog(no, newsId, msg, position, opt) {
    var classTable = 'roundShadow';
    var style = '';

    if (! position) {
	position = {x: 100, y: 100};
    }

    if (opt && opt.cssClass) {
	classTable = opt.cssClass;
    }

    if (opt && opt.tableStyle) {
	style = 'style="' + opt.tableStyle + '" ';
    }

    var id = 'tooltipWhatsNew_' + newsId;
    var zIndex = 300 + 10 - no;
    var urlCloseImg = SITE_PREFIX_URL + '/web/img/tooltip/btn_batu.jpg';

    var html = '<table ' + style + ' class="tabFrame ' + classTable + '"><tr><td class="rs_topL"></td><td class="rs_top"></td><td class="rs_topR"></td></tr><tr><td class="rs_left"></td><td class="rs_content">';
    html += '<div class="right"><a href="javascript:hideNews(\'' + newsId + '\')"><img src="' + urlCloseImg + '" alt="close" /></a></div>';

    html += msg;

    if (opt &&
	(opt.foreceDisplay == '1' ||
	 opt.autoHide)) {
    } else { 
	// footer 
	html += '<div class="newsFooter">';
	if (opt && opt.noThanks && opt.noThanks == '1') {
	    var cbid = "news_" + newsId;
	    html += '<div class="left"><input type="checkbox" id="' + cbid + '" value="1" /><label for="' + cbid + '"> 次回から表示しない</label>';
	}

	html += '<div class="right"><input type="button" value="OK" onclick="hideNews(\'' + newsId + '\', true)" /></div></div>';
    }

    html += '</td><td class="rs_right"></td></tr><tr><td class="rs_bottomL"></td><td class="rs_bottom"></td><td class="rs_bottomR"></td></tr></table>';

    var div = undefined;


    div = jQuery("<div />").attr("id", id).attr("class", "content_box");
    j$(div).css( {
	    position: "absolute"
		});

    j$("#contents").append(div);

    j$(div).html(html).hide();

    // makes div draggable
    j$(div).draggable();

    // set position
    j$(div).css({'z-index': zIndex, left: position.x + "px", top: position.y + "px"});

    // showtime
    j$(div).show();


    // auto hide
    if (opt && opt.autoHide) {
	setTimeout(function() {	hideNews(newsId, 0, 1)}, opt.autoHide * 1000);
    }

    return id;
}



function hideNews(id, noThanks, anim) {
    newsManager.deleteShow(id, noThanks, anim);
}




//
// proc start
//
jQuery(document).ready(function() {
	newsManager.init();
	newsManager.getNews();
    });


