/* $Id: songlist.js 23698 2008-09-29 15:04:47Z bjorn $ */
var filterLetter = '';
var filterRating = '';
var findBy = 'letter';
var table;
var tableLength = 10000;
var offset = 0;
var letters = new Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '#');

var letterFilter = function(index){
	var html = '';
  html += '<div id="letterSelect">'
  for(var i =0; i < letters.length; i++){
  	html += '<div id="letterDiv_'+letters[i]+'" class="tabTableLetters mouseover" onclick="doFilterChange(event, '+index+', \'letter\', \''+letters[i]+'\');">';
  	var picname = letters[i] == '#' ? 'hekje' : letters[i];
  	html += '<img src="/pix/alfabet/'+picname+'.png" class="png" width="12" height="20" />';
  	html += '</div>';
  }
  html += '</div>';
	return html;
}

var ratingFilter = function(index){
	var html = '';
  html += '<div class="tabTableRatingHd">STERREN</div>';
  html += '<div id="ratingSelect">';
  for(var i=1; i < 6; i++){
  	var className = '';
    className += i == 1 ? ' first' : '';
    className += i == 5 ? ' last' : '';
  	html += '<div id="ratingDiv_'+i+'" class="tabTableRating mouseover'+className+'" onclick="doFilterChange(event, '+index+', \'rating\', '+i+');">';
  	html += '<img src="/pix/getallen/'+i+'.png" width="17" height="20" alt="" class="png" />';
    html += '</div>';
  }
  html += '</div>';
	return html;
}

function doFilterChange(evt, index, type, value){
printfire('FILTERCHANGE %o', arguments);
  waitStart();
  if(type == 'letter'){
    filterLetter = value;
  }
  if(type == 'rating'){
  	filterRating = value;
  }
  findBy = type;
	if(table){
		//table.cleanTable(); 
		table.toonItems(index,true);
	}
}

function findSongs(callback, offset){
	if(findBy == 'letter'){
		var letter = filterLetter == '' ? 'a*' : filterLetter + '*';
 		return mediaFragmentsService.findSongs(letter, offset, tableLength, appendArtistSong);	
	}
  if(findBy == 'rating'){
		var rating = filterRating == '' ? 1 : filterRating;
    return mediaFragmentsService.findRatedSongs(rating, offset, tableLength, appendArtistSong);	
  }
  
	function appendArtistSong(data){
    printfire('FOUND by rat', data);
		for(var i=0; i<data.length;i++){
			//data[i]['artistsong'] = data[i]['artists'][0].name + ' - ' + data[i].title
			data[i]['artistsong'] = data[i].title;
    }
		callback(data);
	}
}

function findSongsByCategory(cat, callback, offset){
	if(findBy == 'letter'){
    var letter = filterLetter == '' ? 'a*' : filterLetter + '*';
		return mediaFragmentsService.findSongsByCategory(letter, cat, offset, tableLength, appendArtistSong);
	}

  if(findBy == 'rating'){
		var rating = filterRating == '' ? 1 : filterRating;
printfire('findRatedSongsByCategory',rating, cat, offset, tableLength);
    return mediaFragmentsService.findRatedSongsByCategory(rating, cat, offset, tableLength, appendArtistSong);	
  }
  
	function appendArtistSong(data){
		for(var i=0; i<data.length;i++){
      //data[i]['artistsong'] = data[i]['artists'][0].name + ' - ' + data[i].title;
      data[i]['artistsong'] = data[i].title;
    }
		callback(data);
	}
}

function getUrl(obj) {
	return '/speler/ondemand/'+obj.number;
}

function speler(url) {
//printfire('SPELER', url);
	if (url)
		openSpeler('ondemand', {url: url})
	return false;
}

var cols = [
			{p:'type', title:'', sort:false, type:'mediatype', headerClassName:'hd-mediatype'},
			{p:'artistsong', hreffn:getUrl, changeorder: false, headerClassName:'hd-letterfilter', className: 'songCol', defaultdesc: true, filterCallback:letterFilter, type:'text'},
			{p:'tags', title:'TAGS', type:'tags', columnColor:'ccc', headerClassName:'hd-tags', className:'tagCol greyCol mouseover'},
			{p:'rating', type:'rating', headerClassName:'hd-rating', className:'greyCol ratingCol', filterCallback:ratingFilter}
     ];

var tabs1 = [
	{
	name: 'OVERZICHT',
	picture: {src:'/pix/navigatie/overzicht.png',width:71,height:20,alt:'OVERZICHT'},
	columns: cols,
	find: function(callback){},
	count: function(callback){callback(1)},
	onclick: function(){showHide('mediafragmentsOverzicht', 'ubertabelDiv');makeVisible('balk')},
	showcount: false
	},
	{
	name: 'ALLE SONGS',
	picture: {src:'/pix/navigatie/allesongs.png', width:76, height:20, alt:'ALLE SONGS'},
	columns: cols,
	find: function(callback){return findSongs(callback);},
	findEx: function(offset, column, desc, callback){return findSongs(callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongs(callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler,
	sortOnLoad: true
	},
	{
	name: 'PUNK EN METAL',
	picture: {src:'/pix/navigatie/punkenmetal.png', width:95, height:20, alt:'PUNK EN METAL'},
	columns: cols,
	find: function(callback){findSongsByCategory("Punk en Metal", callback, offset);},
	findEx: function(offset, column, desc, callback){return findSongsByCategory("Punk en Metal", callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongsByCategory("Punk en Metal", callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler
	},
	{
	name: 'ROOTS',
	picture: {src:'/pix/navigatie/roots.png', width:47, height:20, alt:'ROOTS'},
	columns: cols,
	find: function(callback){return findSongsByCategory("Roots", offset, tableLength, callback)},
	findEx: function(offset, column, desc, callback){return findSongsByCategory("Roots", callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongsByCategory("Roots", callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler
	},
	{
	name: 'DANCE',
	picture: {src:'/pix/navigatie/dance.png', width:47, height:20, alt:'DANCE'},
	columns: cols,
	find: function(callback){return findSongsByCategory("Dance", offset, tableLength, callback)},
	findEx: function(offset, column, desc, callback){return findSongsByCategory("Dance", callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongsByCategory("Dance", callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler
	},
	{
	name: 'HIPHOP EN RNB',
	picture: {src:'/pix/navigatie/hiphopenrnb.png', width:93, height:20, alt:'HIPHOP EN RNB'},
	columns: cols,
	find: function(callback){return findSongsByCategory("Hiphop en RnB", offset, tableLength, callback)},
	findEx: function(offset, column, desc, callback){return findSongsByCategory("Hiphop en RnB", callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongsByCategory("Hiphop en RnB", callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler
	},
	{
	name: 'ALTERNATIVE',
	picture: {src:'/pix/navigatie/alternative.png', width:80, height:20, alt:'ALTERNATIVE'},
	columns: cols,
	find: function(callback){return findSongsByCategory("Alternative", offset, tableLength, callback)},
	findEx: function(offset, column, desc, callback){return findSongsByCategory("Alternative", callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongsByCategory("Alternative", callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler
	},
	{
	name: 'OUTER LIMITS',
	picture: {src:'/pix/navigatie/outerlimits.png', width:84, height:20, alt:'OUTER LIMITS'},
	columns: cols,
	find: function(callback){return findSongsByCategory("Outer Limits", offset, tableLength, callback)},
	findEx: function(offset, column, desc, callback){return findSongsByCategory("Outer Limits", callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongsByCategory("Outer Limits", callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler
	},
	{
	name: 'WORLD',
	picture: {src:'/pix/navigatie/world.png', width:49, height:20, alt:'WORLD'},
	columns: cols,
	find: function(callback){return findSongsByCategory("World", offset, tableLength, callback)},
	findEx: function(offset, column, desc, callback){return findSongsByCategory("World", callback, offset)},	
	count: function(callback){return mediaFragmentsService.countSongsByCategory("World", callback)},
	onclick: function(){showHide('ubertabelDiv', 'mediafragmentsOverzicht');makeInvisible('balk')},
	onrowclick: speler
	}		
					
];

function init() {
  table = new TabTable('tableparent', tabs1);
  table.noPage = true;
  table.setOnloadHandler(tableReady);
  table.setOnPageloadHandler(tableReady);
  table.setNoResultHandler(noResult);
  table.setPageSize(tableLength);
  table.show();

  //tags
  var tags = AjaxTags;
  tags.init();
  tags.setClassName('tags col_ccc');
  tags.showTags();
}

function tableReady(){
	filterLetter = filterLetter == '' ? 'a' : filterLetter;
	if(findBy == 'letter'){
	  $('#letterDiv_'+filterLetter).addClass('actief');
	}
	else{
	  $('#ratingDiv_'+filterLetter).addClass('actief');
	}
  attach("div.mouseover", highlight, {link: false, skipOnclick: true});
  waitStop();
}

function noResult(tableParentElement){
  var txt = '';
  if(findBy == 'letter'){
  	var letter = filterLetter.toUpperCase();
  	txt = 'Er is binnen deze selectie geen Song gevonden met beginletter '+ letter +'.'
  }
  else{
  	var ster = filterRating == 1 ? '1 ster' : filterRating + ' sterren';
  	txt = 'Er is binnen deze selectie geen Song gevonden met '+ ster +' waardering.'
  }
  txt += '<br />Niet gevonden wat je zocht? Probeer de zoekfunctie.';
	txt = txt.bold();
	var div = cE('div', cE('p', txt));
	tableParentElement.appendChild(div);
  waitStop();
}
