if (!window.fujifilm){ var fujifilm = {}; }

(function(fujifilm){
	var $ = jQuery;
	fujifilm.newsPanel = newsPanel;
	fujifilm.newsList = newsList;
	fujifilm.newsTikker = newsTikker;
	var MONTH_MAP = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."];

	/*
		newsPanel
	*/
	function newsPanel () {
		
	}
	newsPanel.prototype.setUp = function (feedURL, targetSelecter, mode) {
		if ( mode == 'list' ) {
			var panel = new fujifilm.newsList();
			panel.setUp(feedURL, targetSelecter);
		}
		else {
			var panel = new fujifilm.newsTikker();
			panel.setUp(feedURL, targetSelecter);
		}
	}

	/*
		newsList
	*/
	function newsList () {
		this.feedURL = "rss/newsfeed.xml",
		this.targetSelecta = '#news';
	}
	newsList.prototype.setUp = function ( feedURL, targetSelecta ) {
		if ( feedURL ) {
			this.feedURL = feedURL;
		}
		if ( targetSelecta ) {
			this.targetSelecta = targetSelecta;
		}
		var self = this;
		$.ajax({
			type: "GET",
			url: this.feedURL,
			success: function(data){
				self._build( data, self.targetSelecta );
			},
			dataType: 'xml'
		});
	}
	newsList.prototype._build = function ( data, targetSelecta ) {
		var $table = $('<table />');
		var $items = $(data).find("item");
		$.each($items, function(i, val){
			var date = new Date($(this).find('pubDate').text());
			var year = date.getFullYear();
			var mon = date.getMonth();
			var day = date.getDate();
		
			var $tr = $('<tr />').html(
			'<th>'
			+ MONTH_MAP[mon] + ' ' + day + ', ' + year
			+ '</th>'
			+'<td><ul class="linkListA01"><li>'
			+ '<a href="'
			+ $(this).find('link').text()
			+ '">'
			+ $(this).find('title').text()
			+ "</a></li></ul></td>");
			if ( i == 0 ) $tr.addClass('first-child');
			$table.append($tr);
		});

		var $target = $(targetSelecta).addClass('news-list-enable').addClass('news-list');
		var $head = $('<div />').addClass('head').html($target.html());
		var $bgImageUnit = $('<div />').addClass('bgImageUnit').append($head);
		$target.html('').append($bgImageUnit);
		$('<div />').addClass('body').append($table).insertAfter( $target.find('div.head') );
	}
	

	/*
		newsTikker
	*/
	function newsTikker () {
		this._settings = {
			feedURL: "rss/newsfeed.xml",
			targetElSelecter: "#rssTicker",
			refreshInterval: 7000,
			refreshDuration: "slow",
			maxTextLength: 100
		};
		if ( $.browser.msie && $.browser.version < 7 ) {
			this._settings.refreshDuration = 0;
		}

		this._rss = {
			contents: null,
			title: '',
			items: null,
			c: 0
		};

		this._timer = null;
	};

	newsTikker.prototype = {
		setUp: function(feedURL, targetElSelecter) {
			var self = this;
			$( function() {
				self._init(feedURL, targetElSelecter);
			});
		},

		_init: function ( feedURL, targetElSelecter ) {
			if ( feedURL ) {
				this._settings.feedURL = feedURL;
			}
			if ( targetElSelecter ) {
				this._settings.targetElSelecter = targetElSelecter;
			}
			if ( !$(this._settings.targetElSelecter).length ) return;
			this._insertArea();
			var self = this;
			var _rss = this._rss;
			var res = $.get(this._settings.feedURL, function(data) {
				_rss.contents = data;
				_rss.title = $(_rss.contents).find("channel > title").text();
				_rss.items = $.makeArray($(_rss.contents).find("item"));
				self._resetContent();
			});
		},

		_insertArea: function () {
			this.$obj = $('<span />').attr('id', 'news-ticker-main');
			this.$obj.html( '<span></span>' );//Loading...

			this.$controller = $('<div />').attr('id','news-ticker-controller');
			$(this._settings.targetElSelecter).append(this.$obj);
			$(this._settings.targetElSelecter).append(this.$controller);

			this._controllerInit();
			
			$(this._settings.targetElSelecter).addClass('news-ticker')
			this.$textObj = $(this._settings.targetElSelecter).find("span#news-ticker-main span");
		},

		_resetContent: function( mode ) {
			this._refreshContent(mode);
			if ( this._timer ) {
				clearInterval(this._timer);
			}
			this._timer = setInterval( createDelegate( function(){
				this._refreshContent();
			}, this), this._settings.refreshInterval);
		},

		_refreshContent: function ( mode ) {
			var self = this;
			var _rss = this._rss;
			$(this._settings.targetElSelecter)
				.find("span#news-ticker-main span")
				.fadeOut(this._settings.refreshDuration, function() {
					if(!_rss.items.length) return;
					if ( mode == 'prev' ) {
						_rss.c--;
						if ( _rss.c < 0 ) {
							_rss.c = _rss.items.length -1;
						}
					}
					else {
						_rss.c++;
						if ( _rss.c > _rss.items.length -1 ) {
							_rss.c = 0
						}
					}

					var item = _rss.items[_rss.c] || {title:"No Content"};
					var j = $(item);
					var link = j.find('link').text();
					if( link.indexOf('javascript') == 0 ) l = "#";
					var title = self._shorten(j.find('title').text(), self._settings.maxTextLength);
					//var d = self._shorten(j.find('description').text(), self._settings.maxTextLength)
					if ( $.browser.msie && $.browser.version <= 8 && fujifilm.isInternalDomain ) {
						var externalImage02 = '<img src="/img/shared/icn_window_02.png" class="iconExternal" />';
						if ( $.browser.version < 7 ) {
							externalImage02 = '<img src="/img/shared/icn_window_02.gif" class="iconExternal" />';
						}
						if ( !fujifilm.isInternalDomain(link) ) {
							title += externalImage02;
						}
					}
					var line = 	'<a href="'
								+ link
								+ '">'
								+ title
								+ "</a>";

					$(this).html(line);
					$(this).fadeIn(self._settings.refreshDuration, function(){
						if ( $.browser.msie && $.browser.version <= 8 ) {
							$(this).find("img").show();
						}
					});
					if ( $.browser.msie && $.browser.version <= 8 ) {
						$(this).find("img").hide();
					}
				});
			if ( $.browser.msie && $.browser.version <= 8 ) {
				$(this._settings.targetElSelecter).find("span#news-ticker-main span img").hide();
			}
		},

		/*_refreshContent: function () {
			this._hideText();
		},*/

		_controllerInit: function () {
			var $buttonPrev = $('<a />').attr('href','?').append($('<img />').attr('src','img/index/btn_ticker-prev_01.gif').attr('alt','prev').attr('id', 'news-ticker-controller-prev'));
			var $buttonNext = $('<a />').attr('href','?').append($('<img />').attr('src','img/index/btn_ticker-next_01.gif').attr('alt','next').attr('id', 'news-ticker-controller-next'));
			var self = this;
			$buttonPrev.click(function(){
				self._resetContent("prev");
				return false;
			});
			this._setHover($buttonPrev);
			$buttonNext.click(function(){
				self._resetContent();
				return false;
			});
			this._setHover($buttonNext);
			this.$controller.append($buttonPrev).append($buttonNext);
		},

		_setHover: function ( $target ) {
			$target.hover(function(){
				var $img = $(this).find('img');
				var set = $img.attr('src').replace('_01.gif', '_01_o.gif');
				$img.attr('src', set);
			},function(){
				var $img = $(this).find('img');
				var set = $img.attr('src').replace('_01_o.gif', '_01.gif');
				$img.attr('src', set);
			});
		},

		_shorten: function( str, maxlen, sep) {
			var s = sep || '...';
			var m = maxlen || 256;
			var str = $.trim(str);
			if ( str.length <= m ) return str;
			 
			str = str.substring(0, maxlen - s.length);
			var l = str.lastIndexOf(' ');
			return (l < 0 ? str : str.substring(0, l)) + s;
		}
	};

})(fujifilm);

function createDelegate(func, aThis) {
	var d = function () {
		return func.apply(aThis, arguments);
	};
	return d;
}

