/*** parse blog xml ***/
var rssFeeder = new Class({
    initialize: function(feedUrl,feedType,container,singlepost,filmstripOptions){
   	/* parameters
		feedUrl:
			feedUrl (the url to the RSS feed. Must go through RSS conduit first)
		feedtype:
			optional: 'videos', 'blog', or 'rss' (the schema varies for different RSS types)
		container:
			the container that the html gets written too. Must be a unique ID. example: $('blogContainer')
		singlepost:
			set this to true if you only want to show one post
 	*/
    	this.rssUrl = feedUrl;
		this.myContainer = container;
		this.filmstripOptions = filmstripOptions;
		this.feedType = feedType;
		var myAjax = new Request.HTML({
			url: this.rssUrl,
			onRequest: function() {
				if (this.feedType == 'videos') {
					this.myContainer.addClass('preloader');
				}
			}.bind(this),
			onSuccess: function(data) {
				if (this.feedType == 'videos') {
					this.getVideoFeedAttributes(myAjax);
					this.myContainer.removeClass('preloader');
				} else if (this.feedType == 'rss') {
					this.getRSSFeedAttributes(myAjax);
				} else if (this.feedType == 'blog') {
					this.getBlogFeedAttributes(myAjax);
				}
			}.bind(this),
			onFailure: function(data) {
				this.myContainer.innerHTML = 'Feed not available.';
			}.bind(this)
		}).send();
    },
	getVideoFeedAttributes: function(responseXML) {
		this.myContainer.empty();
		//console.log(responseXML.response);
		var entry = responseXML.response.xml.getElementsByTagName('item');
		for (i=0;i<entry.length;i++) {
			var title = entry[i].getElementsByTagName('title')[0].firstChild.data;
			var embedCode = entry[i].getElementsByTagName('guid')[0].firstChild.data;
			
			if (entry[i].getElementsByTagName('thumbnail').length > 0) {
				var thumbnail = entry[i].getElementsByTagName('thumbnail')[0].getAttribute('url');
			} else {
				var thumbnail = entry[i].getElementsByTagName('media:thumbnail')[0].getAttribute('url');
			}
			this.buildThumbList(title,embedCode,thumbnail);
		}
		
		
		if (this.filmstripOptions) {
			new FilmStrip(this.filmstripOptions);
		} else {
			new FilmStrip({
				id: 'goodsContainer-${mediaType}',
				viewPort: '.viewPort',
				viewPortWidth: '582',
				filmStrip: '.filmStrip',
				nextButton: '.btnNext',
				prevButton: '.btnPrev',	
				scrollDir: 'horizontal',
				itemPerPage: 3			
			});
		}
	},
	getBlogFeedAttributes: function(responseXML) {
		this.myContainer.empty();
		var entry = responseXML.response.xml.getElementsByTagName('item');
		for (i=0;i<4;i++) {
			var bTitle = entry[i].getElementsByTagName('title')[0].firstChild.data;
			var bLink = entry[i].getElementsByTagName('link')[0].firstChild.data;
			if (entry[i].getElementsByTagName('slash:comments').length > 0) {
				var bComments = entry[i].getElementsByTagName('slash:comments')[0].firstChild.data;
			} else {
				var bComments = entry[i].getElementsByTagName('comments')[0].firstChild.data;
			}
			if (entry[i].getElementsByTagName('dc:creator').length > 0) {
				var bAuthor = entry[i].getElementsByTagName('dc:creator')[0].firstChild.data;
			} else {
				var bAuthor = entry[i].getElementsByTagName('creator')[0].firstChild.data;
			}
			var description = entry[i].getElementsByTagName('description')[0].firstChild.data;
			
			// try and extract a readable date string
			var wholeDate = entry[i].getElementsByTagName('pubDate')[0].firstChild.data;
			var longDate = wholeDate.split(', ')[1];
			var bDate = longDate.substring(0,(longDate.length-13));
			
			// try and extract some of the description
			var fullDesc = description.replace(/<[^>]*>/g, ' ');
			if (fullDesc.match('Jason Thompson')) {
				var bDesc = fullDesc.substring(18,118);
			} else {
				var bDesc = fullDesc.substring(1,100);
			}
			this.buildProducerBlog(bTitle,bDesc,bLink,bComments,bAuthor,bDate);
		}
	},
	buildProducerBlog: function(bTitle,bDesc,bLink,bComments,bAuthor,bDate) {
		var new_blog = new Element('div', {'class':'colBody','html':
			'<strong><a href="'+ bLink +'">'+ bTitle +'</a></strong>'+
			'<p>'+ bDesc +'...</p>'+
			'<div class="postDetails">'+ bComments +' comments | '+ bDate +' by '+
			'<span class="author">'+bAuthor+'</span>'
		});
		this.myContainer.appendChild(new_blog);
	},
	getRSSFeedAttributes: function(responseXML) {
		console.log("RESPONSE:", responseXML);
		this.myContainer.empty();
		var entry = responseXML.response.xml.getElementsByTagName('item')[0];
		var postTitle = entry.getElementsByTagName('title')[0].firstChild.data;
		var postDate =  entry.getElementsByTagName('pubDate')[0].firstChild.data;
		var postAuthor =  entry.getElementsByTagName('author')[0].firstChild.data;
		var postLink = entry.getElementsByTagName('link')[0].firstChild.data;

		var new_post = new Element('div', {'class':'colBody','html':
			'<strong><a href="'+ postLink +'" target="_blank">' + postTitle + '</a></strong>'+
			'<div class="postDetails">'+
			postDate + ' <span class="author">'+postAuthor+'</span>'
		});
		this.myContainer.appendChild(new_post);
	},
	buildThumbList: function(title,embedCode,thumbnail) {
		var new_item = new Element('li', {'html':
			'<a href="media.action?mediaId=' + embedCode + '">'+
			'<img width="179" height="116" src="'+thumbnail+'" />'+'</a>'+
			'<strong>'+title+'</strong>'
		});
		this.myContainer.appendChild(new_item);
	}
});

/*** homepage poll ***/
var Polls = new Class({
    initialize: function(containerID,pollID){
    	this.pollURL 		= "polls.action";
    	this.pollID 		= pollID;
    	this.myContainer 	= $(containerID);
    	this.resultsBtn		= $('resultsBtn');
    	this.loadPoll();
    	this.myPollAnswer 	= "";
    },
    loadPoll: function(params){
    	if (!params) params = "";
    	
    	//check cookie - if exists, load resulst pane
    	if(Cookie.read('EASportsFN4-poll-' + this.pollID)) params += "&result=true";
    	
		new Request.HTML({
    		url:this.pollURL + "?pollsName=" + this.pollID + params, 
    		onSuccess: function(responseTree, responseElements, responseHTML){
    			this.loadContent(responseHTML);
    			// sets graphical options for poll instead of input radio buttons
    			this.setPollAnswer(this.myContainer);
			}.bind(this),
			onRequest: function() {
				this.setStatus('Calculating poll data...');
			}.bind(this),
			onFailure: function() {
				this.setStatus('Polls cannot be loaded at this time.');
			}.bind(this)
		}).send();

    },
    loadContent: function(responseHTML){
		this.myContainer.set('html',responseHTML);
		
		if ($('pollSubmit')) {
			$('pollSubmit').addEvent('click', function(e) {	
				this.submitPoll();
				e.stop();
			}.bind(this));
		}

		this.myBars = this.myContainer.getElements('.bar');
		if (this.myBars) this.drawBars();

    },
    submitPoll: function(){
    	
    	//set cookie for later
    	var myCookie = Cookie.write('EASportsFN4-poll-' + this.pollID, true,{duration: 7});
    	   	
    	var myForm 		= this.myContainer.getElement('form');
    	var myVotes 	= myForm.getElements('ul li a');

	   	var params = "";
	    params += "&result=true";
		params += "&pollQuestionId=" + myForm.getElement('#pollID').value;
		if (this.myPollAnswer) { 
			params += "&choiceId=" + this.myPollAnswer;
		}   	   	
	
	    this.loadPoll(params);
    
    },
    setStatus: function(msg){
		this.myContainer.innerHTML = "<p>" + msg + "</p>";
    },
    drawBars: function(){
		this.myBars.each(function(item){
			var percentage = item.getElement('.percentage');
			var offset = parseInt((273 - (percentage.innerHTML * 2.73 * 100)) * -1);
			var realPercentage = parseInt(percentage.innerHTML * 100) + "%";
			percentage.innerHTML = realPercentage;
			
			var myFx1 = new Fx.Tween(item,{duration:1000});
			
			if (Browser.Engine.trident) {
				myFx1.start('background-position-x',offset+'px');
			} else {
				myFx1.start('background-position',offset + 'px 0px');		
			}
			
		});
    },
	setPollAnswer: function(pollname) {
		var poll = pollname;
		var answers = $(poll).getElements('a.answer');
		answers.each(function(answer,index,array) {
			answer.addEvent("click", function(e) {
				e.stop();
				array.removeClass('selected');	
				answer.addClass('selected');
				this.myPollAnswer = answer.id;
			}.bind(this));
		}.bind(this));
	}
});

/*** myGoods Preloader ***/
var myGoods = new Class({
    initialize: function(paneContext,tabsContext){
    	//paneContent: 	context for individual pane
    	//tabsContext:	context for individual tabs 
    	
    	this.defaultPane 	= 0;
    	this.myPanes 		= document.getElements(paneContext);
    	this.myTabs 		= document.getElements(tabsContext);
    	
    	//hide all panes other than default one
    	this.showPane(this.myPanes[this.defaultPane]);	
		this.setTab(this.myTabs[this.defaultPane]);
		
		//preload ajax on hidden panes 
		this.loadPanes();

		this.myTabs.each(function(tabItem) {
			tabItem.addEvent("click", function(e) {
				this.setTab(tabItem);
				e.stop();
			}.bind(this));
		}.bind(this));
	},
	setTab: function(tabItem){
		this.myTabs.each(function(item) {
			item.removeClass("selected");
		});
		tabItem.addClass("selected");
		this.showPane(tabItem.rel)
		
	},
    showPane: function(pane){
    	var targetPane = $(pane);
     	this.myPanes.each(function(item) {
     		item.setStyle('display','none');
     	});
     	targetPane.setStyle('display','block');
    },
    loadPanes: function(){
    	//extract ajax feed from a.base in pane element and pass to loadComponent
    	this.myPanes.each(function(item) {
    		if (item.getElement('a.base')) {
    			//loadComponent expects feed to be an array
    			var feed = new Array(item.getElement('a.base'));
    			var myPaneLoader = new loadComponent(item,feed,true)
    		};
    	});
    }	
});


function ieHover(context){
	if(!context){return}
	
	$$(context).each(function(hoverItem) {
		hoverItem.addEvent("mouseover", function(event) {
			hoverItem.addClass("hover");	
		}.bind(this));
		hoverItem.addEvent("mouseout", function(event) {
			hoverItem.removeClass("hover");	
		}.bind(this));
	}.bind(this));
}
window.addEvent('domready', function() {
	var myGoodsTab = new myGoods('#goodsContainer .pane','#goodsTab ul li a');
//	var myGoodsLoader = new loadComponent($('goodsContainer'),$('goodsTab').getElements('a'));
	var myMediaCarousel 	= new tabSwap($('mediaContent'),"div" );
	var myMediaLoader 		= new loadComponent($('mediaScreen'),$("mediaContent").getElements('a'));
	var hoverCarousel 		= new ieHover('.gameFeature');
	//var myProducerSelect = new customDD($('producerDD'));
	//var myBlogsLoader = new loadComponent($('blogContainer'),$('blogLinks').getElements('a'));
	$$('#blogLinks li a').each(function(item) {
		item.addEvent('click', function(e) {
			var myBlogXMLLink = new rssFeeder(e.target.href,'blog',$('blogContainer'),false);
		e.stop();
		});
	});
});

/*** trim html on blog widget ***/
function trimNewsHtml(element,newsStr) {
	var trimmedStr = newsStr.replace(/<[^>]*>/g, ' ');
	$(element).set('html',trimmedStr);
}