var tabSwitcher = new Class({
	initialize: function(containerId,defaultPane) {
		this.myPanes = $(containerId).getElements('.pane');
		this.myTabs = $(containerId).getElements('.tabs li a');
		this.myTabs.each(function(tabItem) {
			if (tabItem.hasClass(defaultPane)) {
				tabItem.addClass('on');
			}
			tabItem.addEvent("click", function(event) {
				this.showTab(tabItem);
				return false;	
			}.bind(this));
		}.bind(this));	
		this.myPanes.each(function(paneItem) {
			if (paneItem.hasClass(defaultPane)) {
				paneItem.addClass('on');
			}
		});	
	},
	showTab: function(tabTarget) {
		this.myTabs.each(function(tabItem) {
			tabItem.removeClass('on');
		}.bind(this));
		this.myPanes.each(function(paneItem) {
			if (paneItem.hasClass(tabTarget.className)) {
				paneItem.addClass('on');
			} else {
				paneItem.removeClass('on');	
			}
		}.bind(this));
		tabTarget.addClass('on');
	}
});

var paneFilter = new Class({
	initialize: function(containerId) {
		this.myPanes = $(containerId).getElements('.pane');
		this.myFilters = $(containerId).getElements('.scopeFilter');
		this.myFilters.each(function(filterItem) {
			filterItem.addEvent("change", function(event) {
				var filter = filterItem.value;
				var scope = filterItem.name;
				var temp = new Array();
				scope = scope.split('-')[0]; //extract feed name from select name
				this.myPanes.each(function(paneItem) {
					if (paneItem.hasClass(scope)) this.activePane = paneItem;
				}.bind(this));
				
				this.feedItems = this.activePane.getElements('.item');
				this.feedItems.each(function(feedItem) {
					if (filter == "all") {
						feedItem.setStyle('display','block')
					} else {
						if (feedItem.hasClass(filter)) {
							feedItem.setStyle('display','block')		
						} else {
							feedItem.setStyle('display','none')
						}	
					}
				});							
			}.bind(this));
		}.bind(this));	
	}
});

var partnerSwitcher = new Class({
	initialize: function(paneId,filterId,feedLogo,trigger) {
		this.myPane = $(paneId);
		this.mySwitcher = $(filterId);
		this.myLogo = $(feedLogo);
		this.myTrigger = $(trigger);
		this.feedConduit = "components/rss_conduit.jsp";
		this.mySwitcher.addEvent("change", function(event) {
			this.switchFeed(this.mySwitcher.value);
		}.bind(this));	
		this.myTrigger.addEvent("mousedown", function(event) {
			this.switchFeed(this.mySwitcher.value);
			this.myTrigger.removeEvents("mousedown");
		}.bind(this));
	},
	switchFeed: function(feedTarget) {
		this.myLogo.className = feedTarget;
		var randomnumber = Math.floor(Math.random()*10001)
		var myAjax = new Ajax(this.feedConduit+'?feed='+feedTarget+'&'+randomnumber, {
			method: 'get',
			onRequest: function(data) {
				this.myPane.setHTML('<p class="error">Loading feed...</p>');
			}.bind(this),
			onFailure: function(data) {
				this.myPane.setHTML('<p class="error">Could not load partner feed.</p>');
			}.bind(this),
			onSuccess: function(data) {
				this.writeFeed(myAjax);
			}.bind(this)
		}).request();		
	},
	writeFeed: function(feedData) {
		
		var myFeed = feedData.response.xml;
		var feedHTML = "";
		myFeedItems = myFeed.getElementsByTagName('item');
		if (myFeedItems.length == 0) {
			this.myPane.setHTML('<p class="error">Partner feed is incorrect format.</p>');
		} else {
			var i = myFeedItems.length;
			for(var e = 0; i > e; e++ ) {
				var feed_title       = (myFeedItems[e].getElementsByTagName("title")[0].firstChild.data);
           		var feed_description = (myFeedItems[e].getElementsByTagName("description")[0].firstChild.data);
          		var feed_link        = (myFeedItems[e].getElementsByTagName("link")[0].firstChild.data);
  		
          		feedHTML += '<div class="item">'
          		feedHTML += '<h3>'+feed_title+'</h3>';
          		feedHTML += '<p>'+feed_description+'... /<a href="'+feed_link +'">more</a></p>';
          		feedHTML += '</div>';
			}
	  		this.myPane.setHTML(feedHTML);
	  		this.addLegal();
    	}
	},
	addLegal: function() {
		var legalLinks = this.myPane.getElements('a');
		legalLinks.each(function(link) {
			link.addEvent("click", function(e) {
				if(!confirmExtLegal()) {
					e = new Event(e).stop();
				}
			});
		});
	}
});

window.addEvent('domready', function() {
	var mySlideShow = new Slideshow('promo1', {
		frameDelay: 8000, 
		items: '.item',
		loop: true
	});
	var mySlideShow = new Slideshow('promo2', {
		frameDelay: 10000, 
		items: '.item',
		loop: true
	});
	var mySlideShow = new Slideshow('promo3', {
		frameDelay: 9000, 
		items: '.item',
		loop: true
	});
	var mySlideShow = new Slideshow('promo4', {
		frameDelay: 7000, 
		items: '.item',
		loop: true
	});
	 var myTabSwitcher = new tabSwitcher('feedBlock','blogs');
	 var myPaneFilter = new paneFilter('feedBlock');
	 var myPartnerSwitcher = new partnerSwitcher('partnerPaneContent','partner-filter','partnerLogo','partnerFeedTrigger');
	 var myTooltipEngine = new tooltipEngine('feedBlock', '.scope a');
});	 



