
var fullMonthNames = new Array("January", "February", "March", "April", "May", "June", "July", 
"August", "September", "October", "November",  "December");


_iFeedObjects = new Array();


function TourPager(feedId, container, data, itemsPerPage) {

	this.feedId = feedId;
	this.container = container;
	this.data = data;
	this.itemsPerPage = itemsPerPage;
	this.pageNumber = 0;
	this.pageCount = 0;	
	this.feedEntries;
	
	this.containerId;
	this.articlesId;
	this.nextButtonId;
	this.prevButtonId
	
	this.init();
	
}

TourPager.prototype.init = function(){

	_iFeedObjects[this.feedId] = this;

	var id = this.container.attr("id");
	this.containerId = id;
	this.articlesId = id + "-feedHolder";
	this.nextButtonId = id + "-next";
	this.prevButtonId = id + "-prev";

	this.container.empty();
	var feedDom = parseFeed(this.data);
	var entries = new Array();
	
	//jQuery('entry', feedDom).each(function(){
		$(feedDom).find('item').each(function(){
		var entry = new Object();		
		entry.titleTourDates = $(this).children("title").text();
		entry.venueName = $(this).children("venueName").text();
		entry.venueCountry = $(this).children("venueCountry").text();
		entry.venueCity = $(this).children("venueCity").text();
		entry.venueLocation = $(this).children("venueLocation").text();
		entry.venueState = $(this).children("venueState").text();
		entry.buyLink = $(this).children("buylink").text();
		entry.appearingWith = $(this).children("appearingWith").text();
		entries.push(entry);
	});
	this.feedEntries = entries;

	this.pageCount = Math.ceil(this.feedEntries.length/this.itemsPerPage);
	jQuery(this.container).append('<div class="tourDatesWrapper"></div>');
	jQuery(this.container).append("<div class='int_nav_page'>" +
	"<a class='intNextEnabled' id='" + this.nextButtonId + "' href='#' onClick='_iFeedObjects[\"" + this.feedId + "\"].showNextPage()'>Next</a>" +
	"<a class='intPrevDisabled' id='" + this.prevButtonId + "' href='javascript:void(0)' onClick='_iFeedObjects[\"" + this.feedId + "\"].showPreviousPage()'>Previous</a>" +
	"<div class='clear'></div></div>");
}


TourPager.prototype.showPage = function(){

	$('.tourDatesWrapper').empty();
	
	
	var start = this.itemsPerPage * (this.pageNumber - 1);
	var end = this.itemsPerPage * this.pageNumber;

	for(var d = start; d<this.feedEntries.length && d<end; d++){
		var f = this.feedEntries[d];
		
		var tourDatesUnit = document.createElement('div');
	$(tourDatesUnit).attr("class","tourDatesUnit");
	//create tour date unit
	var tdDateUnit = document.createElement('div');
	$(tdDateUnit).attr("class","tdDateField");
	var dateInTitle = "" + f.titleTourDates.match(/\d{1,2}\/\d{1,2}/);
	var dateString = "";
	var monthString = "";
	if(dateInTitle != null ) {
		var dateArray = dateInTitle.split("\/");
		monthString = monthNames[dateArray[0]-1];
		dateString = dateArray[1];		
	}
	
	$(tdDateUnit).append('<div class="tdMonth">'+ monthString +'</div><div class="tdDD">'+ dateString +'</div>');
	$(tourDatesUnit).append(tdDateUnit);
	
	//create tourVenueBuyWrapper	
	var tourVenueBuyWrapper = document.createElement('div');
	$(tourVenueBuyWrapper).attr("class","tourVenueBuyWrapper");

	//create tour venue unit
	
	var venueInfo = "";
	if($.trim(f.venueCity)) {
		venueInfo = venueInfo + $.trim(f.venueCity) + ", ";
	}
	if($.trim(f.venueState)) {
		venueInfo = venueInfo + $.trim(f.venueState);
	} else {
		venueInfo = venueInfo + $.trim(f.venueCountry);
	}
	
	var tdVenueField = document.createElement('div');
	$(tdVenueField).attr("class","tdVenueField");
	$(tdVenueField).append('<div class="tdVenue">' + venueInfo + ', ' + f.venueName + '</div>');
	if (f.appearingWith.replace(/\s/g,"") != ""){
		$(tdVenueField).append('<div class="tdArtistName">'+ f.appearingWith +'</div>');
	}
	$(tourVenueBuyWrapper).append(tdVenueField);

	//create purchase tickets unit
	if (f.buyLink != "" && !$.trim(f.appearingWith).match(/SOLD OUT$/) ){
		tdBuyLinksField = document.createElement('div');
		$(tdBuyLinksField).attr("class","tdBuyLinksField");
		$(tdBuyLinksField).append('<div class="tdBuyLinks"><a target="_blank" href="'+ f.buyLink +'">Buy Tickets</a></div>');
		$(tourDatesUnit).append(tdBuyLinksField);
	}
	
	$(tourDatesUnit).append(tourVenueBuyWrapper);
	$(tourDatesUnit).append('<div class="clear"></div>');
	$('.tourDatesWrapper').append(tourDatesUnit);		
	}
}

TourPager.prototype.showPreviousPage = function(){

	if (this.pageNumber > 1){
		this.pageNumber--;
		this.showPage();
		$('#' + this.nextButtonId).removeClass('intNextDisabled');
		$('#' + this.nextButtonId).addClass('intNextEnabled');
		$('#' + this.nextButtonId).attr('href', '#');
	}
	if (this.pageNumber <= 1){
		$('#' + this.prevButtonId).removeClass('intPrevEnabled');
		$('#' + this.prevButtonId).addClass('intPrevDisabled');
		$('#' + this.prevButtonId).attr('href', 'javascript:void(0)');
	}

}

TourPager.prototype.showNextPage = function(){

	if (this.pageNumber < this.pageCount){
		this.pageNumber++;
		this.showPage();
		if(this.pageNumber > 1) {
		$('#' + this.prevButtonId).removeClass('intPrevDisabled');
		$('#' + this.prevButtonId).addClass('intPrevEnabled');
		$('#' + this.prevButtonId).attr('href', '#');
		}
	}
	if (this.pageNumber >= this.pageCount){
		$('#' + this.nextButtonId).removeClass('intNextEnabled');
		$('#' + this.nextButtonId).addClass('intNextDisabled');
		$('#' + this.nextButtonId).attr('href', 'javascript:void(0)');
	}

}

function formatISODate(strISOtime) {

	var tmp = (strISOtime || "").replace(/-/g,"/").replace(/[TZ]/g," ");
	var timeOffset = new Date().getTimezoneOffset();
	
	if(strISOtime.indexOf('+') > -1) {
		tmp = (tmp.split('+'))[0];
	}
	if(strISOtime.indexOf('-') > -1) {
		tmp = (tmp.split('-'))[0];
	}
	var date = new Date(tmp);
	date = new Date(date.getTime() - date.getTimezoneOffset()*60);
	
	return fullMonthNames[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear();
}
function parseFeed(xml){

    if( window.ActiveXObject && window.GetObject ) {
        var dom = new ActiveXObject( 'Microsoft.XMLDOM' );
        dom.async="false";
        dom.loadXML( xml );
        return dom;
    }
    if( window.DOMParser ) {
        return new DOMParser().parseFromString( xml, 'text/xml' );
    }
       
    throw new Error( 'No XML parser available' );
}	
