(function(){
	var calenderFeed = function(email) {
		var myService, FeedQuery;
		var _target;
		var _cate;
		var feedUrl = getFeedUrl(email);
		var _scrollbar;
		
		function getFeedUrl(_email) {
			return "http://www.google.com/calendar/feeds/"+_email+"/public/full";
		}
		
		function buildQuery(start, end, limit) {
			var Query = new google.gdata.calendar.CalendarEventQuery(feedUrl);
			Query.setOrderBy('starttime');
			Query.setSortOrder('descending');
			Query.setMaximumStartTime(end);
			Query.setMinimumStartTime(start);
			Query.setSingleEvents(true);
			Query.setAllowIncomplete(true);
			Query.setMaxResults(limit);
			var _wapper = document.getElement('.rss');
			if (_wapper) {
				_wapper.empty();
				var _img = new Element('img', { 'src' : 'http://www.emailrss.cn/images/sub_emailrss.gif', 'border' : 0, 'alt': '使用RSS邮天下订阅' });
				var _link = new Element('a', { 'href' : 'http://www.emailrss.cn/?rss=' + encodeURIComponent(Query.getUri()), target : '_blank' });
				_img.inject(_link);
				_link.inject(_wapper);
			}
			return Query;
		}
		
		function padNumber(num) {
			if (num <= 9) {
				return "0" + num;
			}
			return num;
		}

		function parseDateString(_date) {
			var startJSDate = _date.getDate();
			var dateString = startJSDate.getFullYear() + "-" + (startJSDate.getMonth() + 1) + "-" + startJSDate.getDate();
			if (!_date.isDateOnly()) {
				dateString += " " + startJSDate.getHours() + ":" + padNumber(startJSDate.getMinutes());
			}
			return dateString;
		}
		
		function getFeeds(_query, callback) {
			var Service = new google.gdata.calendar.CalendarService('mix-calendar-service');
			if (callback) {
				Service.getEventsFeed(_query, callback, handleError);
				return;
			}
			Service.getEventsFeed(_query, FeedResultCallback, handleError);
		}
		
		function handleError(e) {
			//do nothing
		}
		
		function FeedResultCallback(ResultsFeedRoot) {
			var entries = ResultsFeedRoot.feed.entry;
			var _list_ele = $('event_list');
			_list_ele.empty();
			var _cEvents = [];
			for (var i = 0; i < entries.length; i++) {
				var calendarEntry = entries[i];
				var calendarTitle = calendarEntry.getTitle().getText();
				if (_cate && _cate.length > 0 && !calendarTitle.toLowerCase().contains(_cate)) {
					continue;
				}
				var calendarContent = calendarEntry.getContent().getText();
				var _times = calendarEntry.getTimes();
				var _events = {
					title: calendarTitle,
					location: calendarContent
				};
				if (_times.length > 0) {
					var timeObject = _times[0];
					_events['start'] = parseDateString(timeObject.getStartTime());
					_events['end'] = parseDateString(timeObject.getEndTime());
				}
				var _html ='<div class="f14-a sr-cc-p">'+calendarTitle+'</div><div class="cdate f12-a">'+ _events.start +'</div><div class="clear">'+'</div>';/*calendarContent*/
				var ele = new Element('li', { 'html':_html });
				ele.inject(_list_ele);
				_cEvents.push(_events);
				
			}
			var box3=$$('#box3 .scrollControlsY');
			if(box3.length == 0){
			_scrollbar = new MooScroll({selector:'#box3'});
			$$('#box3 .scrollHandleTop').addClass('course-top');
			$$('#box3 .scrollHandleBG').addClass('course-bg');
			$$('#box3 .scrollHandleBottom').addClass('course-bottom');
			$$('#box3 .upBtn').addClass('course-upBtn');
			$$('#box3 .downBtn').addClass('course-downBtn');
			$$('#box3 .scrollBar').addClass('course-nobg');
			} else {
				_scrollbar.refresh();
			}
			
			if (_target) {
				_target.options.cEvents = _cEvents;
				_target.loadCalEvents();
				$('loading').fade('out');
			}
		}
		
		return {
			getEvents : function(target, start, end) {
				_target = target;
				getFeeds(buildQuery(start.format('%Y-%m-%d'), end.format('%Y-%m-%d'), 25));
			},
			setCategory : function(cate) {
				_cate = cate;
			},
			getEventsData : function(start, end, limit, callback) {
				getFeeds(buildQuery(start.format('%Y-%m-%d'), end.format('%Y-%m-%d'), limit), callback);
			}
		}
	};
	google.load("gdata", "2.x");
	google.setOnLoadCallback(function(){
		var _feeds = calenderFeed("tangobang.china@gmail.com");
		$$('a.category-nav').addEvent('click',  function(e){
			//e.stop();
			_feeds.setCategory(this.get('title'));
			var cntxt=this.getElement('.f24-yh').get('text');
			var entxt=this.getElement('.f18-a').get('text');
			$$('a.category-nav').removeClass('sub-navlink-current');
			this.addClass('sub-navlink-current');
			$$('#tit_c .sr-tc-cn').set('text',cntxt);
			$$('#tit_c .sr-tc-en').set('text',entxt);
			var _calender = new Calendar({  
				calContainer:'calBody',
				feedPlugin:_feeds,
				onselect: function(target) {
					var td = target.getParent('td');
					var _content = td ? td.retrieve('tip:text') : null;
					if (_content && _content.length > 0) {
						_content = '<div class="f14-a sr-cc-p">'+ _content +'</div>';
						$('event_list').set('html', _content);
					}
				}
			});
			return false;
		});
		
		window.addEvent('domready', function(){
			$$('a.sub-navlink-current').fireEvent('click');
			function ListAll(ResultsFeedRoot) {
				var entries = ResultsFeedRoot.feed.entry;
				var _list_ele = $('all_event_list');
				if (!_list_ele) { return; }
				for (var i = 0; i < entries.length; i++) {
					var calendarEntry = entries[i];
					var calendarTitle = calendarEntry.getTitle().getText();
					var calendarContent = calendarEntry.getContent().getText();
					var _times = calendarEntry.getTimes();
					var timeObject = _times[0];
					var _html ='<p class="f14-a news-list newsbg">'+calendarTitle+'</p><p class="news-date f12-a">'+ timeObject.getStartTime().getDate().format('%Y-%m-%d') +'</p><div class="blank3">'+'</div>' ;
					var ele = new Element('li', { 'html':_html });//頭部日曆
					ele.inject(_list_ele);
				}
					var cal_html = ( $('all_event_list').get('html') );
					if($('email_msg')){
					$('email_msg').set('value','<ul>'+cal_html+'</ul>');
					}
					//var box1=$$('#box1 .scrollControlsY')
					//if(box1.length == 0){
					//var scrollBox1 = new MooScroll({selector:'#box1'});}
			}
			
			_feeds.getEventsData(new Date(), new Date().increment('day', 30), 15, ListAll);
		});
	});
})();

