var _page = {};
_page.constructor = function(args) {
	this.params = args;
	this.rivalManager = new takkle.view.controls.AthleteManager({prefix: 'rival'});
	this.likeablePeopleManager = new takkle.view.controls.AthleteManager({prefix: 'likeablePeople'});
	this.setupEvents();
};

_page.getProfileComponents = function() {
	var self = this;
	server.request({ 
		path: API.getApiPath(this.uriFor('/people','viewprofile',self.params.userId)),
		onComplete: function(resp) {self.handleResponse(resp)},
		onError: function(resp) {self.handleError(resp)}
	});
};

_page.buttonIds = ["friend","sport"];
_page.disableButton = function(id) {
	$(id).style.display = "none";
	if(!$(id+"_disabled")) {
		var mySpan = new Element("span");
		mySpan.innerHTML = $(id).innerHTML;
		mySpan.id = id+"_disabled";
		mySpan.injectBefore($(id));
		return false;
	}
	$(id+"_disabled").style.display = "";
};

_page.enableButton = function(id) {
	if($(id+"_disabled")) $(id+"_disabled").style.display = "none";
	$(id).style.display = "";
};

_page.letThemHearAboutIt = function(user_name,sport_name) {
	if (!App.logged_in({js:"commentComponent.startComment('Yo, " + user_name +  " update your " + sport_name + " info!')"})) return false;
	return commentComponent.startComment('Yo, ' + user_name + ' update your ' + sport_name + ' info!');
};

_page.showSport = function(id) {
	var all_sps = $$('.otherSportInfo');
	all_sps.each(function(item) {
		if (item.id == 'other_sport_' + id) {
			item.removeClass('hidden');
		} else {
			item.addClass('hidden');
		}
	});
	var all_links = $$('.otherSportLinks');
	all_links.each(function(item) {
		if (item.id == 'other_sport_link_' + id) {
			item.addClass('isSelected');
		} else {
			item.removeClass('isSelected');
		}
	});
	return false;
}

/* section tabs - show/hide content in a box */
/* duplicate version also in landing.js - DA */
_page.showTabbedContent = function(id){

	var tabContainer = page.getParentElementByClass($("tabLink_"+id),"section");

	var all_tabbedContents =  tabContainer.getElements('.tabbedContentItem'); 

	all_tabbedContents.each(function(item){
		if(item.id=="tabbedContent_"+id) {
			item.removeClass('hidden');
		}
		else {
			item.addClass('hidden');
		}
	});
	
	var all_tabbedLinks = tabContainer.getElements('.tabLink');
	all_tabbedLinks.each(function(item){

	var tagParent = page.getParentElementByClass(item,"sectionTab");
		if (item.id == 'tabLink_' + id) {
			tagParent.addClass('selected');
		} else {
			tagParent.removeClass('selected');
		}
	});
	return false;
}


_page.getFeed = function(type) {
	var self = this;
	if(!type.match(/^(sport|friend)$/)) {
		throw("invalid type at getFeed:" + type);
		// /api/-/json/people/feed/my?type=friend
		return false;
	}
	for(var i=0; page.buttonIds[i]; i++) {
		page.disableButton("feed_"+type+"_link");
		if( page.buttonIds[i] != type)
			page.enableButton("feed_"+page.buttonIds[i]+"_link"); 
	}
	/*  LOADER DISPLAY CODE GOES HERE  */
	$E('.content',$('newsfeedSection')).innerHTML = "";
	$E('.content',$('newsfeedSection')).addClass("loading");
	
	server.request({ 
		path: API.getApiPath(this.uriFor('/people','feed','user',self.params.userId)),
		onComplete: function(resp) {self.handleResponse(resp)},
		onError: function(resp) {self.handleError(resp)},
		args:{type:type}
	});		
	return false;
}

_page.setupEvents = function(){
	var _showGenericError = function(message) {
		$ES('.genericLoader').each(function(el) {
			el.style.display = "none";
		});
		page.showErrorPopup({ message: message || 'Error!' });
	};
	window.addEvent("showGenericError",_showGenericError);

	var _populateFeed = function(obj) {
		/* LOADER HIDE DISPLAY GOES HERE  */
		$E('.content',$('newsfeedSection')).removeClass("loading");
		$E('.content',$('newsfeedSection')).innerHTML = obj.feed;
	}
	window.addEvent("populateFeed", _populateFeed);


	var _populatePeopleYouMayLike = function(obj) {
		page.likeablePeopleManager.setAthletes(obj.athletes);
		page.likeablePeopleManager.showAthletes(2);
		$('loading_pyml').remove();
	}
	window.addEvent("populatePeopleYouMayLike", _populatePeopleYouMayLike);

	var _populateRivals = function(obj) {
		page.rivalManager.setAthletes(obj.rivals);
		page.rivalManager.showAthletes(2);
		$('loading_rival').remove();
	}
	window.addEvent("populateRivals", _populateRivals);

	var _hideRivals = function() {
		$('rivalSection').remove();
	};
	window.addEvent("hideRivals", _hideRivals);

};
dojo.provide('takkle.view.page.profile.view');
dojo.declare('takkle.view.page.profile.view', takkle.view.page, _page);

var failedLoads = 0;
var _setupFeedLinks = function() {
	try {
		var _getFeedFriendLink = function() {return page.getFeed("friend");};
		var _getFeedSportLink = function() {return page.getFeed("sport");};
		$('feed_friend_link').addEvent("click",_getFeedFriendLink);	
		$('feed_sport_link').addEvent("click",_getFeedSportLink);
		page.disableButton("feed_" + page.params.feedType + "_link");
		page.getProfileComponents();
	} catch(error) {
		if(failedLoads) return false;
		window.addEvent("load",_setupFeedLinks);
		failedLoads++;
	}
};
var _setupPage = function() {
	try {
		page.getProfileComponents();
	} catch(error) {
		if(failedLoads) return false;
		window.addEvent("load",_setupPage);
		failedLoads++;
	}
};
window.addEvent("domready",_setupPage);
