RSSFeed = {
	 
	handle : function (res) {
		
		for (i in res.feed.entries)
		{
			
			var item = res.feed.entries[i];
			
			$('.blogposts ul').append('<li><h2><a href="'+item.link+'">'+item.title+'</a></h2><a href="'+item.link+'" class="excerpt">'+item.contentSnippet+'</a><em>'+FFUtils.MakeRelative(item.publishedDate)+'</em></li>');
			
		}
		
	}
}

Dagen = {
	
	current_list : 7 , // default lijst ID = 7
	
	current_page : 1 , // we beginnen met #1
	
	setLoading : function() {
	
		$('.show-me-more').html('<img src="http://blog.21dagendebat.nl/wp-content/themes/21dagendebat/images/ajax-loader.gif" />').addClass('busy');
	
	},
	
	setReady : function() {
	
		$('.show-me-more').html('Meer vragen').removeClass('busy');
	
	},
	
	// starter
	startNow : function (page) {
		
		if (document.domain == '21dagendebat.nl')
		{
			window.location = 'http://www.21dagendebat.nl';
		}
		
		Dagen.changeList(Dagen.current_list);		
	//	setTimeout("Dagen.changeList(Dagen.current_list)", 500);
		
		$('.vote-button.unvoted').live('click', function () { Dagen.doVote($(this).attr('rel')) });
			
		$('#vragen-menu li').live('click', function () { Dagen.changeList( $(this).attr('rel') ); });
		
		$('.show-me-more:not(.busy)').live('click', function () { 
			Dagen.setLoading();
			Dagen.current_page = Dagen.current_page + 1; Dagen.addQuestions( Dagen.current_list ); 
		});
		
		
		switch (page)
		{
			case 'home':
				$('body').addClass('home');
				PanelHeader.startNow();
				
				AnswerForm.startNow();
	
				//setTimeout('Dagen.popupEvent()', 2000);
				
				break;
		
			case 'question':
				$('body').addClass('question');
				Dagen.Cuf('.share');
				break;
		
		}
		
		Dagen.Cuf('.de-niels-tijmen, .Keuzes, #header #intro, .header h2, .show-me-more, #navigation, #vraagstel-form h2, .submit-button, #footer h2,.nav a');

		if (window.location.hash == "#added") {
			setTimeout("Dagen.showAddedOverlay()", 1000);
		}
		
		$('.blogposts li').live('hover', function() { $(this).children('.excerpt').fadeIn(333); } );
		
		
	} ,
	
/*
	popupEvent : function ()
	{
						$('#header').append('<div id="event-popup" style="display:none;"><h2>Maandag 7 juni: het slotdebat!</h2><p>Kom aanstaande maandag in de <strong>Stadsschouwburg Amsterdam</strong> voor de slotavond van 21 Dagen Debat. Jouw kans om je stem te laten horen: het publiek is de belangrijkste gesprekspartner!</p><p><a href="http://bit.ly/21dagen">&rsaquo; koop snel een kaartje</a></p><span onclick="$(\'#event-popup\').slideUp(333);">sluit venster</span></div>');
					$('#event-popup').slideDown(1000);
					
					Dagen.Cuf('#event-popup');

	},
*/
	
	Cuf : function (selector) {
		
		Cufon.replace(selector, { fontFamily: 'Futura Std', hover : true });
		
	},
	
	showAddedOverlay : function () {

		var html = '<div id="superflash" style="display:none;">Je vraag is gepost!</div>';
		$('body').prepend(html);
		$('#superflash').slideDown(1000);
		
	},
	
	setQuestionURL : function (url) {
		// deprecated!
	},
	
	setVoteEndpoint : function (url) {
		this.vote_endpoint = url;
	},
	
	setPanelEndpoint : function (url) {
		Dagen.panel_endpoint = url;
	},
	
	setQuestionEndpoint : function (url) {
		this.questions_endpoint = url;
	},
		
	
	changeList : function (listID) {
		
		Dagen.setLoading();
	//	setTimeout("", 3000);
		
		$('#vragen-menu li').removeClass('active');
		
		$('#vragen-menu li.'+listID).addClass('active');

		Dagen.Cuf('#vragen-menu li');

		Dagen.current_list = listID;
		
		Dagen.current_page = 1;
		
		$('#vragen .content').html('');
		
		Dagen.addQuestions(listID);
		
	//	$('#vragen .content #loader').remove();
	
	},
	
	doVote : function (id) {
	
			
		$.ajax({
			type: "POST",
			url: Dagen.vote_endpoint,
			data: '{"questionId":"'+id+'"}',
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function(msg) {
				Dagen.handleVote(id, msg.d);
			}
		});	

		 
	},
	
	handleVote : function (id, newcount) {
	
			$('.vraag#'+id+' .votecount').html('<strong>'+newcount+'</strong> '+(newcount == 1 ? 'stem' : 'stemmen'));
			
			$('.vraag#'+id+' .vote-button').html('je hebt gestemd!').removeClass('unvoted').addClass('voted');
			
			Dagen.Cuf('.vote');
			
	},

	addQuestions : function (listID) {

		var url = FFUtils.sformat(Dagen.questions_endpoint, listID, Dagen.current_page); 
		
		$.get(url, function(json) { 
			Dagen.addQuestionsToDOM(json);
		}, {},  'json');
		
	},
	
	
	sharePop : function (service, url, content) {
		
		u = url;
		t = document.title;
	//	d = $("meta[name=description]").attr('content').substr(0, 200);
		
		switch ( service )
		{
			case "facebook":
				url = 'http://www.facebook.com/sharer.php?u='+(u);
				window.open(url, 'sharer', 'toolbar=0,status=0,width=626,height=436');
				break;
				
			case 'twitter':
				url = 'http://twitter.com/home?status='+(content+": "+ u);
				window.open(url);
				break;
	        
	        case 'hyves':
	            text = encodeURIComponent('[url=' + unescape(u) + ']Vraag op 21 Dagen Debat[/url]: ' + unescape(content));
	            name = encodeURIComponent(unescape(content));
	            url = 'http://hyves.nl/index.php?l1=fr&l2=ti&l3=itemedit&name=' + name + '&text=' + text + '&type=12&rating=5';
	            window.open(url);
	            break;

		}
		
		return false;
	
	
	},
	
	shareBox : function (url, content) {
		
		url = encodeURIComponent('http://www.21dagendebat.nl'+url);
		content = escape(content);
		var html = '<div class="sharethis"><em>deel deze vraag:</em>' + 
    		'<a onclick="Dagen.sharePop(\'facebook\', \''+url+'\', \''+content+'\'); return false;" class="share facebook" title="Deel op Facebook">&nbsp;</a> ' +  
    		'<a onclick="Dagen.sharePop(\'twitter\', \''+url+'\', \''+content+'\'); return false;" class="share twitter" title="Deel op Twitter">&nbsp;</a> ' +  
    		'<a onclick="Dagen.sharePop(\'hyves\', \''+url+'\', \''+content+'\'); return false;" class="share hyves" title="Deel op Hyves">&nbsp;</a>' +  
 		//	'<iframe src="http://www.facebook.com/plugins/like.php?href='+url+'&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe>' +
 			'</div> ';

/*
     <a onclick="ff_share('hyves', location.href); return false;" class="share hyves" title="Deel op Hyves" href="">Hyves</a> 
   <a onclick="ff_share('linkedin', location.href); return false;" class="share linkedin" title="Deel op LinkedIn" href="">LinkedIn</a> 
    <a onclick="ff_share('twitter', location.href); return false;" class="share twitter" title="Deel op Twitter" href="">Twitter</a> 
    <a onclick="ff_share('delicious'); return false;" class="share delicious" title="Deel op Delicious" href="">Delicious</a>    
*/

		
		return html;
	},
	
	addQuestionsToDOM : function (json)
	{
		var items = FFUtils.trilabDecode(json);
			
		for (i in items)
		 {
		 	var item = items[i];
		 			 				
			// debug
			if (item.id == 55) 
				item.has_voted = 0;
			

			if (item.answer == 1)
			{
				var classy = 'answered';
				
				var vote_button = '<div class="vote-button tobeanswered" rel="'+item.id+'">Wordt beantwoord!</div>';
			}	
			else 
			{
				if (item.answer == 0)
				{
					var classy = 'unanswered';
					
					var vote_button = '<div class="vote-button '+(item.has_voted == 1 ? 'voted' : 'unvoted')+'" rel="'+item.id+'">'+(item.has_voted == 1 ? 'je hebt gestemd!' : 'ik stem voor!')+'</div>';
				}	
				else
				{	
					var classy = 'answered';
					item.url = item.answer;
					var vote_button = '<div class="vote-button answered" rel="'+item.id+'"><a href="'+item.answer+'" class="answer"> Lees<br/>antwoord </a></div>';
					
				}
			}
			
			var vote_count = '<div class="votecount"><strong>'+item.votecount+'</strong> '+(item.votecount==1?'stem':'stemmen')+'</div>';
			
		 	var html = '<div style="display:none;" class="vraag '+classy+'" id="'+item.id+'">' + 
		 	 '<div class="vote">'+vote_count+vote_button+'</div>' +
			'<h2><a href="'+item.url+'">&#8220;'+item.question+'&#8221;</a></h2>' +
			'<div class="afzender">door '+item.author+' / <a href="'+item.url+'">'+ FFUtils.MakeRelative(item.date) +'</a> aan '+item.firstname+' '+item.lastname+'</div>' +
		 	Dagen.shareBox(item.url, item.question) +
		 	'</div>';
		 	
			$('#vragen .content').append(html);
			$('#vragen .content #'+item.id).fadeIn(600);
			
		}
		
		Dagen.Cuf('.vote, div.sharethis, .vote-button');
		Dagen.setReady();

	}
}

AnswerForm = {
	
	startNow : function () {
		
		$('.other-formies').hide();
		$('#vraagstel-form').click( function () { $('.other-formies').slideDown(300) });
		$('input').focus( function () { $('.other-formies').slideDown(300) });
				
		$('input[type=text],textarea').addClass('not-touched');
		
		$('.not-touched').focus( function() { $(this).removeClass('not-touched').addClass('touched'); } );
		
		AnswerForm.initialValue('.text-answer', 'Jouw vraag aan het panel...');
		AnswerForm.initialValue('.f-naam', 'Jouw naam...');
		AnswerForm.initialValue('.f-email', 'Jouw emailadres...');
		
		
	},
	
	initialValue : function (selector, value) {
		
		$(selector).val(value).attr('rel', value);
		
		$(selector).focus( function () { 
			
			if ($(this).val() == $(this).attr('rel'))
			{
				$(this).val('');
			}
			
		} );
	
	}


}


PanelHeader = {

	panelMembers : new Array() ,
	
	currentPanelMember : 0 ,
		
	startNow : function () {
		
		PanelHeader.addPanelToDOMAndStartThingy();
				
		$('#panel-members-dropdown').change( function () { PanelHeader.switchFlip( $(this).children(":selected").attr('rel') ); } );
		
	},
	
	switchFlip : function (id) {
	
		$('.panel-lid.active').removeClass('active').hide();
		
		
		PanelHeader.openSesameShowAnotherPanelMember(id);
	},
	
	openSesameShowAnotherPanelMember : function (id) {

		$('#panel-'+id).fadeIn(1000).addClass('active');
		
		//$('#panel-'+id+' img').fadeIn(1000);
		
		$('#option-'+id).select();
	
    	$('#panel-members-dropdown option').attr('selected','unselected');
    	
    	$('#option-'+id+'').attr('selected','selected');
    	
	},
	
	addPanelToDOMAndStartThingy : function () {
		
		$.get(Dagen.panel_endpoint, function(json) {
			
			var decoded = FFUtils.trilabDecodePanel(json);
			
			PanelHeader.panelMembers = FFUtils.arrayShuffle ( decoded );
			
			
			// maak voor elk panellid een divje aan en een link in de lijst
			for (i in PanelHeader.panelMembers)
			{	
				mem = PanelHeader.panelMembers[i];
				
				$('#panel-screen').append('<div style="display:none;" class="panel-lid" id="panel-'+i+'"><h2 class="panel-bio">'+mem['firstname']+' '+mem['lastname']+'<em>'+mem['party']+'</em></h2><img src="'+PanelHeader.panelMembers[i]['imagehome']+'" /></div>');
				
				$('#panel-members-dropdown').append('<option id="option-'+i+'" rel="'+i+'" value="'+mem['id']+'">aan '+mem['firstname']+' '+mem['lastname']+', '+mem['party']+'</option>');
				
				
			}
			
			Dagen.Cuf('h2.panel-bio');
			
			PanelHeader.showTheNextPanelMember();
		
		}, {},  'json');
		
	},
	
	showTheNextPanelMember : function () {
		
		PanelHeader.switchFlip(PanelHeader.currentPanelMember);

		PanelHeader.currentPanelMember = PanelHeader.currentPanelMember + 1;
		
		// als dit niet het laatste pannellid in de array is queue een volgende
		if (PanelHeader.panelMembers.length != PanelHeader.currentPanelMember )
		{	
			setTimeout("PanelHeader.showTheNextPanelMember()", 1000);
		}
		
		
	}
}



FFUtils = {

	// http://snippets.dzone.com/posts/show/849
	arrayShuffle : function(o) 
	{ 
		for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
		return o;
	},
	
	trilabDecode : function (trilab) {
		
		var items = new Array();
		
		for (i in trilab.d)
		{	
			var item = new Array();
			
			date = trilab.d[i]._publishedDate;
			date = date.replace("/", '');
			date = date.replace("/", '');

			item['date'] 	= eval("new "+ date);
			item['url'] 	= trilab.d[i]._url;
			item['id'] 		= trilab.d[i]._id;

			for (b in trilab.d[i]._blocks)
			{
				key 	= trilab.d[i]._blocks[b]['Key'];
				value 	= trilab.d[i]._blocks[b]['Value'];
				
				if (key == 'panelmember-ref')
				{///////
					for (sb in value)
					{
						for (sub in value._blocks)
						{
							item[value._blocks[sub]['Key']] = value._blocks[sub]['Value'];
						}
					}
				}
				else
				{
					item[key] = value;
				}
				
			}
			
			items[i] = item;
		}
				
		return items;
	},
	
	trilabDecodePanel : function (trilab) {
		
		var items = new Array();
		
		for (i in trilab.d)
		{	
			var item = new Array();
			
			item['id'] 		= trilab.d[i]._id;

			for (b in trilab.d[i]._blocks)
			{
				key 	= trilab.d[i]._blocks[b]['Key'];
				value 	= trilab.d[i]._blocks[b]['Value'];
				
				item[key] = value;
				
			}
			
			items[i] = item;
		}
				
		return items;
	},
	
	MakeRelative : function (d)
	{	
		var d = Date.parse(d);
		
		var dateFunc = new Date();
		var timeSince = dateFunc.getTime() - d;
		var inSeconds = timeSince / 1000;
		var inMinutes = timeSince / 1000 / 60;
		var inHours = timeSince / 1000 / 60 / 60;
		var inDays = timeSince / 1000 / 60 / 60 / 24;
		var inYears = timeSince / 1000 / 60 / 60 / 24 / 365;
		
		// in seconds
		if(Math.round(inSeconds) < 5){
			return("zojuist");
		}
		
		else if(inMinutes < 1.01){
			return(Math.round(inSeconds) + " seconden geleden");
		}
		
		// in minutes
		else if(Math.round(inMinutes) == 1){
			return("1 minuut geleden");
		}
		else if(inHours < 1.01){
			return(Math.round(inMinutes) + " minuten geleden");
		}
		
		// in hours
		else if(Math.round(inHours) == 1){
			return("1 uur geleden");
		}
		else if(inDays < 1.5){
			return(Math.round(inHours) + " uur geleden");
		}
		
		// in days
		else if(Math.round(inDays) == 1){
			return("gisteren");
		}
		else if(inYears < 1.01){
			return(Math.round(inDays) + " dagen geleden");
		}
		
		// in years
		else if(Math.round(inYears) == 1){
			return("vorig jaar");
		}
		else
		{
			return(Math.round(inYears) + " jaar geleden");
		}	

	},

	 sformat : function(str) {
	
		for(i = 1; i < arguments.length; i++)
		{
			str = str.replace('%' + (i - 1), arguments[i]);
		}
		return str;
	
	},
	
	gup : function( name )
	{
	  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	  var regexS = "[\\?&]"+name+"=([^&#]*)";
	  var regex = new RegExp( regexS );
	  var results = regex.exec( window.location.href );
	  if( results == null )
	    return "";
	  else
	    return unescape(results[1]);
	}
}
