$(function(){
	window.defaultStatus="Design + Programming by FEINHEIT kreativ studio · www.feinheit.ch";
});

$(document).ready(function() {
	$('div#wrapper div#column-left div.content').hide();
	$('div#wrapper div#column-left h2').click(function(){
		$(this).next().slideToggle('fast');
	});
	//$("div.darkroom").css("filter","alpha(opacity=0)");
	$("div.darkroom").hide();
});

// swfObjectCallback. If the Flash is succesfull loaded, show the html loading indicator. else show the alternative content.
swfObjectCallback = function(e) {
	if (e.success) {
		$('div#overlayer').html('<div id="overlay"><div class="popup"><div class="body"><img src="/media/img/design/ajax-loader-black.gif" alt="loading" style="padding: 220px 0 0 420px;"/></div></div></div>');
	}
}

check_fb_connect = function() {
	window.location.reload();
}

fade_out_the_darkness = function() {
	$('div#bg-dark').fadeOut(1000);
}

loading_finished = function() {
	$('div#overlay').fadeOut('fast', function() {
		$(this).remove();
	});
}

/**
 * Appends an overlay to the DOMElement and makes an AJAX call to the url 
 * and inserts the returned HTML
 * 
 * @param DOMElement dom
 * @param String url URL to make an AJAX call
 */
overlay = function(dom, url, callback) {
	$(dom).html('<div id="overlay"><div class="popup"><div class="body"></div></div></div>');
	//$("div.darkroom").show();
	
	//$("div.darkroom").fadeTo(1500,0.8, function() {
		$('div.body', dom).load(url, callback);
	//});	
}

/**
 * init the forms for the friend selector
 * and calls the initialize facebook connect function
 */
init_forms = function() {
	$('div#wrapper div#select-friends-wrapper').hide();
	$('div#intro-wrapper a.next').click(intro_next);
	$('div#intro-wrapper #playbutton').click(intro_next);
	init_forms_real();
}

init_forms_real = function() {
	var ajax_options = {
		beforeSubmit: gather_fb_friends,
		success: process_invite_response,
		dataType: 'json'
	}
	$('#select-friends').ajaxForm(ajax_options); 
}

init_remind_forms = function() {
	$('div#remind-me-form-wrapper').hide();
	var ajax_options = {
		success: process_reminder_response,
		dataType: 'json'
	}
	$('form#remind-me-form').ajaxForm(ajax_options);
	$('div#remind-me-intro-wrapper a.remind-me-button').click(function() {
		$('div#remind-me-intro-wrapper').fadeOut('fast', function() {
			$(this).next().show();
		});
		return false;
	});
}

intro_next = function() {
	$('div#intro-wrapper').hide();
	$('div#friend-select').hide();
	$('div#email-friend-select-warning').hide();
	$('div#select-friends-wrapper').show();
	init_fb();
	return false;
}

validate_email_form = function(form_dom) {
	if($('input#id_friends-0-name', form_dom).attr('value') == '' || $('input#id_friends-0-email', form_dom).attr('value') == '') {
		$('div#email-friend-select-warning').slideDown('fast', function() {
			setTimeout(function() {
					$('div#email-friend-select-warning').slideUp('fast')
			},3000);			
		});
		return false;
	}
	else {
		$('div#friend-select').remove();
		$(form_dom).trigger('submit');
		return true;		
	}
}

/**
 * initialize facebook connect
 */
init_fb = function() {
	FB_RequireFeatures(["Api", "XFBML"], function(){ 
		FB.Facebook.init('03a8a96d219e94f4228cf24b58321431', 'http://trailer.publiceye.ch/media/fb/xd_receiver.htm');
	});
	$('a.facebook-button').click(fb_button_action);
}

fb_button_action = function() {
	FB.ensureInit(function() { 
		FB.Connect.get_status().waitUntilReady( function( status ) {
			switch ( status ) { 
				case FB.ConnectState.connected: 
					loggedIn = true; 
					fb_action();
					break; 
				case FB.ConnectState.appNotAuthorized: 
				case FB.ConnectState.userNotLoggedIn: 
					FB.Connect.requireSession(fb_action); 
					loggedIn = false; 
				} 
		}); 
	}); 
	return false;
}
/**
 * connect with facebook and load friend selector
 */
fb_action = function() {
	$('a.facebook-button').hide();
	$('div#email-friends').fadeOut("fast", function() {
		FB.Connect.forceSessionRefresh(function() {
			var api = FB.Facebook.apiClient;
			var uid = FB.Connect.get_loggedInUser();
			var session = FB.Facebook.apiClient.get_session();
			var session_key = session.session_key;
			api.users_getInfo([uid], ['first_name', 'last_name', 'pic_square'], function(result, exception){ 
				$('input#id_owner-name').attr('value', (result[0]['first_name'] + ' ' + result[0]['last_name'])); 
			}); 
			$('form#select-friends').append('<input type="hidden" name="fb_uid" value="' + uid + '" />');
			$('form#select-friends').append('<input type="hidden" name="fb_session_key" value="' + session_key + '" />');
			fb_friend_select();
			api.users_hasAppPermission('publish_stream', function(result) {
				if(result == 0) {
					FB.Connect.showPermissionDialog("publish_stream");
				}
			});			
		});
	});

}

/**
 * Insert friend selector in an element with id "friend-select"
 * and calls the initialize friend-selector function
 */
fb_friend_select = function() {
	num_pages = $('div#friend-selector ul.fb-friend-page').size();
	if (num_pages > 0) {
		activate_friend_select(num_pages);
		return false;
	}
	var api = FB.Facebook.apiClient;
	var widget_div = document.getElementById("friend-selector");
		FB.ensureInit(function () {
	    	FB.Facebook.apiClient.friends_get(null, function(result) {
	      	var num_friends = result.length;
			var paginate = 0;
			var markup = '';
	      	if (num_friends > 0) {
	        	for (var i=1; i<num_friends; i++) {
	         		markup +=
	           		'<li><fb:profile-pic size="square" uid="'
	           		+ result[i-1]
	           		+ '" facebook-logo="false" linked="false">'
	           		+ ' </fb:profile-pic></li>';
					if(i % 21 == 0) {
						$(widget_div).append('<ul id="page-' + paginate + '" class="fb-friend-page">' + markup + '</ul>');
						paginate++;
						markup = '';
					}
	        	}
	      	}
			if(markup != '') 
				$(widget_div).append('<ul id="page-' + paginate + '" class="fb-friend-page">' + markup + '</ul>');
			activate_friend_select(Math.round(num_friends/21));
	      	FB.XFBML.Host.parseDomElement($('div#friend-select').context);
	    });
  });
}

activate_friend_select = function(pages_num) {
	$('div#friend-select').fadeIn("fast", function(){
		$('div#friend-select ul#page-0').fadeIn("fast");
	});
	fb_friend_paginate(0, pages_num-1);
	init_friend_selector();
}

fb_friend_paginate = function(page, max) {
	$('div#friend-selector-paginator span.page-back a').unbind('click');
	$('div#friend-selector-paginator span.page-next a').unbind('click');
	if(page>0) {
		$('div#friend-selector-paginator span.page-back a').click(function(){
			fb_friend_paginate(page-1, max);
		});
		$('div#friend-selector-paginator span.page-back a').removeClass('hidden');
	}
	else {
		$('div#friend-selector-paginator span.page-back a').addClass('hidden');
	}
	if(page<max) {
		$('div#friend-selector-paginator span.page-next a').click(function() {
			fb_friend_paginate(page+1, max);
		});	
		$('div#friend-selector-paginator span.page-next a').removeClass('hidden');
	}
	else {
		$('div#friend-selector-paginator span.page-next a').addClass('hidden');
	}

	$('div#friend-selector ul').removeClass("active");
	selector = $('div#friend-select ul#page-' + page);
	//FB.XFBML.Host.parseDomElement(selector.context);
	selector.addClass('active');

	return false;
}

/**
 * Stuff happening after inserting the friend-selector
 */
init_friend_selector = function() {
	$('div#friend-select ul li').unbind('click');
	$('div#fb-friend-select-warning').hide();
	$('div#friend-select a.fb-logout').click(function() {
		$('div#friend-select').fadeOut('fast', function() {
			$('div#email-friends').fadeIn('fast', function() {
				$('a.facebook-button').fadeIn('fast');
			});
		});
		return false;
	});
	$('div#friend-select ul li').click(function() {
		if ($(this).hasClass('selected')) {
			$(this).removeClass('selected');
			$('div#fb-friend-select-warning').slideUp('fast');
		}
		else {
			if ($('div#friend-select ul li.selected').size()< 5) {
				$(this).addClass('selected');
			}		
			else {
				$('div#fb-friend-select-warning').slideDown('fast', function() {
					setTimeout(function() {
						$('div#fb-friend-select-warning').slideUp('fast')
					},3000);
				});
			}	
		}
	});
}

/**
 * Make sure we gather all information before sending the 
 * friend-select form
 * @param {Object} formData
 * @param {Object} jqForm 
 * @param {Object} options
 */
gather_fb_friends = function(formData, jqForm, options) {
	counter = 0;
	$('div#friend-select ul li.selected').each(function() {
		formData.push({
				name: 'friend_fbid' + counter,
				value: $(this).children().attr('uid')
			});
		counter += 1;
	});
	// show loading sign
	$('div#friend-selector').html('<img src="/media/img/design/ajax-loader.gif" alt="loading" style="padding: 60px 0 0 150px;"/>');
	return true;
}

process_invite_response = function(response) {
	if(response.success == false) {
		$('div.body').html(response.html);
		$('div#intro-wrapper').hide();
		$('div#friend-select').hide();
		$('div#select-friends-wrapper').show();
		init_fb();
	}
	else {
		$('div#overlay').remove();
		$('div#bg').fadeOut('slow');
		getFlashMovie("flash").sendToActionscript(response);
	}
	init_forms_real();
}

process_reminder_response = function(response) {
	$('div.body').html(response.html);
	if(response.success == false) {
		init_remind_forms();
		$('div#remind-me-intro-wrapper').hide();
		$('div#remind-me-form-wrapper').show();
	}

}
