/*
	/static/scripts/calendar.js
	provides functionality to calendar app
	Chris Hessert <chris.hessert@gmail.com>
	updated:  2010-12-17
*/


/*  declarations  */
var now = new Date();
var y = now.getFullYear();
var m = now.getMonth()+1;
var d = now.getDate();
if (d < 10) {
	d = '0'+d;
}
var today = y+'-'+m+'-'+d;


/*  functions  */

// before page loads
$(document).ready(function() {
	var i = 0;

	// get Zvents featured content
	$ZJQuery('#zFeatured').ZventsEventList({
		max_title: 128,
		max_displayed: 5,
		show_date: true,
		show_images: true,
		site: 'http://events.thestate.com',
		sort: true,
		load: {
			fields: 'event.id,event.name,event.description,event.zurl,event.starttime,event.images,event.price,event.private,event.color,event.sc,event.vid,event.venue_id,venue.id,venue.name,venue.description,venue.url,venue.zurl,venue.city,venue.state,venue.showtimes',
			sponsored: true,
			srad: 50,
			srss: 5,
			ssrss: 3			
		},
		renderers: {
			renderEvent: function(event) {
				var strEvent = '';
				if (i == 0) {
					strEvent += '<li class="'+this.settings.classes.event+'">';
				} else {
					strEvent += '<li class="'+this.settings.classes.event+'" style="display: none;">';
				}
				var date = event.starttime;
				var name = event.name;
				var zUrl = 'http://events.thestate.com'+event.zurl;
				var description = event.description;
				var tickets = event.venue.url;
				var venueName = event.venue.name;
				var venueCity = event.venue.city;
				var venueState = event.venue.state;
				var venueUrl = event.venue.zurl;
				var venueLink = '';
				var image = '';
				if (this.settings.show_images) {
					image = this.renderImage(event).replace(/thumb/gi, 'primary');  // use a bigger image (150px x 150px)
					image = image.replace(/"66"/gi, '"184"');  // reset the width/height attributes correctly
					strEvent += '<div id="zFeaturedImage">'+image+'</div>';
				}
				if (image) {
					strEvent += '<div id="zFeaturedInfo" style="width: 400px;">';
				} else {
					strEvent += '<div id="zFeaturedInfo" style="width: 610px;">';
				}
				
				if (date) {
					if (ZWidgets.Date(event.starttime).format('{YMD}') != today) {
						strEvent += '<p class="date">'+ZWidgets.Date(date).format('{Sunday}, {D} {January} &ndash; {hmm}')+'</p>';
					} else {
						strEvent += '<p class="date">'+ZWidgets.Date(date).format('Today &ndash; {hmm}')+'</p>';
					}
				}
				strEvent += '<a href="'+zUrl+'" target="_blank"><h3>'+name+'</h3></a>';  // name
				if (description) {
					strEvent += '<p class="description">'+ZWidgets.String.truncate(description, 250)+'</p>';
				}
				if (venueName) {
					strEvent += '<p>';
					if (venueUrl) {
						strEvent += '<strong><a href="http://events.thestate.com'+venueUrl+'" target="_blank">'+venueName+'</a></strong>';
					} else {
						strEvent += venueName;
					}
					if (venueCity && venueState) {
						strEvent += ' &mdash; '+venueCity+', '+venueState;
					}
					strEvent += '</p>';
				}
				if (tickets) {
					strEvent += '<input type="button" value="buy tickets" onclick="window.open(\''+tickets+'\',  \'zTickets\' , \'\')" />';
				}
				strEvent += '</div>';
				strEvent += '<div class="clear"></div>';
				strEvent += '</li>';
				i++;  // bump the counter
				return strEvent;
			}
		}
	});
	
	// get Zvents listing content
	$ZJQuery('#zMoreList').ZventsEventList({
		max_title: 40,
		max_displayed: 5,
		show_date: true,
		show_images: true,
		site: 'http://events.thestate.com',
		sort: true,
		load: {
			fields: 'event.id,event.name,event.zurl,event.starttime,event.venue_id,venue.id,venue.name,venue.url',
			sort: 1,
			sponsored: true,
			srad: 50,
			srss: 5,
			ssrss: 1
		},
		renderers: {
			renderEvent: function(event) {
				var date = event.starttime;
				var name = event.name;
				var zUrl = 'http://events.thestate.com'+event.zurl;
				var venueName = event.venue.name;
				var venueUrl = event.venue.url;
				var strEvent = '<li class="'+this.settings.classes.event+'">';
				strEvent += '<p><a href="'+zUrl+'" target="_blank"><strong>'+name+'</strong></a>';
				if (date) {
					if (ZWidgets.Date(date).format('{YMD}') != today) {
						strEvent += '<br />'+ZWidgets.Date(date).format('{D} {Jan}, {h}:{mm}{am}');
					} else {
						strEvent += '<br />'+ZWidgets.Date(date).format('Today, {h}:{mm}{am}');
					}
				}
				if (venueName) {
					if (venueUrl) {
						strEvent += ' &ndash; <a href="'+venueUrl+'" target="_blank">'+venueName+'</a>';
					} else {
						strEvent += ' &ndash; '+venueName;
					}
				}
				strEvent += '</p></li>';
				return strEvent;
			}
		}
	});
	
});

// rotate featured events
function rotateFeaturedEvents() {
	var t = $('#zFeatured ul.ZventsEventList').children().length;  // total child <li> elements
	var current = $('#zFeatured ul.ZventsEventList li:visible');
	var i = $('#zFeatured ul.ZventsEventList li').index(current) + 1;  // index of currently visible element
	//console.log(i+'/'+t);
	if (i < 1) {
		// first time through
		$('#zFeatured ul.ZventsEventList li:visible').hide();  // hide all the children
		$('#zFeatured ul.ZventsEventList li:nth-child(2)').fadeIn('slow');  // show the next
	} else if (i < t) {
		// go to next
		$('#zFeatured ul.ZventsEventList li:visible').hide();  // hide all the children
		$('#zFeatured ul.ZventsEventList li:nth-child('+(i+1)+')').fadeIn('slow');  // show the next
	} else {
		// go to first
		$('#zFeatured ul.ZventsEventList li:visible').hide();  // hide all the children
		$('#zFeatured ul.ZventsEventList li:nth-child(1)').fadeIn('slow');  // show the first
	}
}

/*  application  */
setInterval("rotateFeaturedEvents()", 10000);
