var HomePage = {
	Lists: {
		Popular: {
			artists: null,
			tracks: null,
			radios: null,
			indies: null
		},
		New: {
			users: null,
			radios: null,
			indies: null,
			klans: null
		},
		newsFeed: null
	},
	LastTabs: {
		popular: null,
		New: null
	}
};

HomePage.EventHandlers = {
	onTabClick:  function (tab) {
		if(tab=='news-feed') {
			if(HomePage.Lists.newsFeed!=null) {
				HomePage.Lists.newsFeed.show();
			} else {
				HomePage.Loaders.loadNewsFeed();
			}
		} else if(tab=='popular') {
			if(HomePage.LastTabs.popular != null) {
				HomePage.EventHandlers.onInnerTabClick(HomePage.LastTabs.popular);
			} else {
				HomePage.EventHandlers.onInnerTabClick('popular-artists');
			}
		} else if(tab=='new') {
			if(HomePage.LastTabs.New != null) {
				HomePage.EventHandlers.onInnerTabClick(HomePage.LastTabs.New);
			} else {
				if(CurrentUser.UserID=="0")
					HomePage.EventHandlers.onInnerTabClick('new-radios');
				else
					HomePage.EventHandlers.onInnerTabClick('new-users');
			}
		}
	},
	onInnerTabClick: function (tab) {
		if(tab=='popular-artists') {
			if(HomePage.Lists.Popular.artists!=null) {
				HomePage.Lists.Popular.artists.show();
			} else {
				HomePage.Loaders.Popular.loadArtists();
			}
			HomePage.LastTabs.popular = tab;
		} else if(tab=='popular-tracks') {
			if(HomePage.Lists.Popular.tracks!=null) {
				HomePage.Lists.Popular.tracks.show();
			} else {
				HomePage.Loaders.Popular.loadTracks();
			}
			HomePage.LastTabs.popular = tab;
		} else if(tab=='popular-radios') {
			if(HomePage.Lists.Popular.radios!=null) {
				HomePage.Lists.Popular.radios.show();
			} else {
				HomePage.Loaders.Popular.loadRadios();
			}
			HomePage.LastTabs.popular = tab;
		} else if(tab=='popular-indies') {
			if(HomePage.Lists.Popular.indies!=null) {
				HomePage.Lists.Popular.indies.show();
			} else {
				HomePage.Loaders.Popular.loadIndies();
			}
			HomePage.LastTabs.popular = tab;
		} else if(tab=='new-users') {
			if(HomePage.Lists.New.users!=null) {
				HomePage.Lists.New.users.show();
			} else {
				HomePage.Loaders.New.loadUsers();
			}
			HomePage.LastTabs.New = tab;
		} else if(tab=='new-radios') {
			if(HomePage.Lists.New.radios!=null) {
				HomePage.Lists.New.radios.show();
			} else {
				HomePage.Loaders.New.loadRadios();
			}
			HomePage.LastTabs.New = tab;
		} else if(tab=='new-indies') {
			if(HomePage.Lists.New.indies!=null) {
				HomePage.Lists.New.indies.show();
			} else {
				HomePage.Loaders.New.loadIndies();
			}
			HomePage.LastTabs.New = tab;
		} else if(tab=='new-klans') {
			if(HomePage.Lists.New.klans!=null) {
				HomePage.Lists.New.klans.show();
			} else {
				HomePage.Loaders.New.loadKlans();
			}
			HomePage.LastTabs.New = tab;
		}
	}
};

HomePage.Loaders = {
	Popular : {
		loadArtists: function(data) {
			var params = {
				div_id: "tab-content-popular-artists",
				defaultData: null,
				api: null,
				apiParams: null,
				template: Templates.Artist.ListItem,
				show:true, 
				pagination:false,
				header: '<div class="line-list"><ul class="with-image">',
				footer: '</ul></div>'
			};
			if(typeof(data)=='undefined') {
				params.api = 'Toplist.listArtist';
				params.apiParams = {
					limit: 10,
					type: 'week'
				}
			} else {
				params.defaultData = data;
			}
			HomePage.Lists.Popular.artists = new marvinList(params);
		},
		loadTracks: function() {
			var params = {
				div_id: "tab-content-popular-tracks",
				api:"Toplist.listSong",
				apiParams:{
					limit: 10,
					type: 'week'
				},
				template: Templates.Track.LineListItem,
				show:true, 
				pagination:false,
				header: '<div class="line-list"><ul>',
				footer: '</ul></div>'
			};
			HomePage.Lists.Popular.tracks = new marvinList(params);
		},		
		loadRadios: function() {
			var params = {
				div_id: "tab-content-popular-radios",
				api:"Toplist.listRadio",
				apiParams:{
					limit: 5,
					type: 'week'
				},
				template: Templates.Radio.ListItem,
				show:true, 
				pagination:false,
				header: '',
				footer: ''
			};
			HomePage.Lists.Popular.radios = new marvinList(params);
		},		
		loadIndies: function() {
			var params = {
				div_id: "tab-content-popular-indies",
				api:"Toplist.listIndie",
				apiParams:{
					limit: 10,
					type: 'week'
				},
				template: Templates.Indie.ListItem,
				show:true, 
				pagination:false,
				header: '<div class="line-list"><ul class="with-image">',
				footer: '</ul></div>'
			};
			HomePage.Lists.Popular.indies = new marvinList(params);
		}
	},
	New : {
		loadUsers: function(data) {
			var params = {
				div_id: "tab-content-new-users",
				api: null,
				apiParams: null,
				defaultData: null,
				template: Templates.User.ListItem,
				show:true, 
				pagination:false,
				header: '',
				footer: ''
			};
			if(typeof(data)=='undefined') {
				params.api = "User.list";
				params.apiParams = {
					order: 'new', 
					limit: 7,
					filterFillout: true
				}
			} else {
				params.defaultData = data;
			}
			HomePage.Lists.New.users = new marvinList(params);
		},
		loadRadios: function(data) {
			var params = {
				div_id: "tab-content-new-radios",
				api: null,
				apiParams: null,
				defaultData: null,
				template: Templates.Radio.ListItem,
				show:true, 
				pagination:false,
				header: '',
				footer: ''
			};
			if(typeof(data)=='undefined') {
				params.api = "Radio.list",
				params.apiParams = {
					order: 'updated', 
					limit: 5
				}
			} else {
				params.defaultData = data;
			}			
			HomePage.Lists.New.radios = new marvinList(params);
		},
		loadIndies: function() {
			var params = {
				div_id: "tab-content-new-indies",
				api:"Indie.list",
				apiParams:{
					order: 'new', 
					limit: 10
				},
				template: Templates.Indie.ListItem,
				show:true, 
				pagination:false,
				header: '<div class="line-list"><ul class="with-image">',
				footer: '</ul></div>'
			};
			HomePage.Lists.New.indies = new marvinList(params);
		},
		loadKlans: function() {
			var params = {
				div_id: "tab-content-new-klans",
				api:"Klan.list",
				apiParams:{
					order: 'new', 
					limit: 5
				},
				template: Templates.Klan.ListItem,
				show:true, 
				pagination:false,
				header: '',
				footer: ''
			};
			HomePage.Lists.New.klans = new marvinList(params);
		}
	},
	loadNewsFeed : function (data) {
		var params = {
			div_id: "tab-content-news-feed-updates",
			api: null,
			apiParams: null,
			defaultData: null,
			template: Templates.User.FeedItem,
			show:true, 
			pagination:false,
			header: '',
			footer: ''
		};
		if(typeof(data)=='undefined') {
			params.api = "User.listFeed",
			params.apiParams = {
				type: 'friend',
				recordId: CurrentUser.UserID, 
				limit: 10
			}
		} else {
			params.defaultData = data;
		}			
		HomePage.Lists.newsFeed = new marvinList(params);
	}
}

$(function() {
	//What is sk
	$('#what-is-sk-items').easySlider({
		prevId: 'what-is-sk-prev',
		prevText: '&lt; ' + Dictionary.GENERAL.Prev,
		nextId: 'what-is-sk-next',
		nextText: Dictionary.GENERAL.Next + ' &gt;',
		continuous: true,
		liWidth: 668,
		liHeight: 154
	});
	$('#what-is-sk-items li').show();

	// Add tab behaviour to all tabs
	$(".tab-container").addTabBehaviour({callback:HomePage.EventHandlers.onTabClick});
	$(".inner-tab-container").addTabBehaviour({callback:HomePage.EventHandlers.onInnerTabClick});

	//if (typeof(HomePageNewsFeed) != 'undefined') {
	//	HomePage.Loaders.loadNewsFeed(HomePageNewsFeed); //feedlerin ilk gelmesini iptal ettik
	//}
	
	if(HomePageNew) {
		$.each(HomePageNew, function() {
			if(this.type=='users')
				HomePage.Loaders.New.loadUsers(this.data)
			else if(this.type=='radios')
				HomePage.Loaders.New.loadRadios(this.data)
		});
	}
	
	//password change lightbox
	if(typeof(PassKey)!='undefined') {
		$.showWindowSK('window-change-password', {
			modal: true,
			ajax: '/pages/snippets/changePassword.php?key='+ PassKey
		});
	}
	//login lightbox
	if(typeof(LoginRedirectUrl)!='undefined') {
		$.showWindowSK('window-login', {
			modal: true,
			ajax	:	'/pages/snippets/login.php'
		}, function () {
			LoginSnippet.OnSuccess = function () {
				window.parent.contentFrame.location.href = LoginRedirectUrl; 
			};
		});
	}
});