/**
 * Copyright 2009 - All rights reserved - Hadrien David
 * hadrien@ectobal.com
 */

function initMenu(){
	var _nav = document.getElementById("top-gallery");
	if (_nav) {
		var nodes = _nav.getElementsByTagName("li");
		for (var i = 0; i < nodes.length; i++) {
			nodes[i].onmouseover = function(){
				if (this.className.indexOf('hover') == -1) 
					this.className += " hover";
			}
			nodes[i].onmouseout = function(){
				this.className = this.className.replace(" hover", "");
			}
		}
	}
}
if (document.all && !window.opera)
	attachEvent("onload", initMenu);

window.addEvent('domready', 
	function()
	{
		facebook_onload(loggedinUser!="");
		var divs= $(document.body).getElements('div[id^=post-]');
		var lis = $(document.body).getElements('li[id^=header-post-]');
		var atags = $(document.body).getElements('a[id^=a-post-]');
		var cameras = $(document.body).getElements('a.camera');
		arrowEvents = {'click': onTimelineClick}
		$('next-arrow').addEvents(arrowEvents);
		$('prev-arrow').addEvents(arrowEvents);
		divs.addEvents({
			'mouseover':function(){
				var id = this.get('id').substr(5);
				var li = $('header-post-'+id);
				var atag = $('a-post-'+id);
				if(li)
					li.addClass("hover");
				if(atag)
				{
					atag.addClass("hover");
				}
			},
			'mouseout':function(){
				var id = this.get('id').substr(5);
				var li = $('header-post-'+id);
				var atag = $('a-post-'+id);
				if(li)
					li.removeClass("hover");
				if(atag)
				{
					atag.removeClass("hover");
				}
			}
		});
		lis.addEvents({
			'mouseover':function(){
				if (!this.hasClass('active')) {
					var id = this.get('id').substr(12);
					var div = $('post-'+id);
					if (div) 
						div.getElement('a').addClass('hover');
					var active = $('carousel').getElements("li.active]");
					try {active.getElements('li')[0].addClass('hidden')}
					catch(err){};
				}
			},
			'mouseout':function(){
				if (!this.hasClass('active')) {
					var id = this.get('id').substr(12);
					var div = $('post-'+id);
					if (div) 
						div.getElement('a').removeClass('hover');
					var active = $('carousel').getElements("li.active]");
					try {active.getElements('li')[0].removeClass('hidden')}
					catch(err){}
				}
			}
		});
		if(atags.length>0)
		{
			atags.addEvents({
				'mouseover':function(){
					var id = this.get('id').substr(7);
					var li = $('header-post-'+id);
					var div = $('post-'+id);
					if (div) 
						div.getElement('a').addClass('hover');
					if(li)
						li.addClass("hover");
				},
				'mouseout':function(){
					var id = this.get('id').substr(7);
					var li = $('header-post-'+id);
					var div = $('post-'+id);
					if (div) 
						div.getElement('a').removeClass('hover');
					if(li)
						li.removeClass("hover");

				}
			});
		}
		cameras.addEvents({
			'click':function(){
				var gallery = this.getParent('div.gallery-box-single');
				if (gallery.hasClass('front')) {
					this.removeClass('camera-on');
					this.addClass('camera-off');
					gallery.removeClass('front');
					try {
						$(document.body).getElements('object').each(function(element){element.setStyle('visibility', 'visible')});
					}catch(err){
						$('content').setStyle('visibility', 'visible');
					}
				}else{
					gallery.addClass('front');
					this.removeClass('camera-off');
					this.addClass('camera-on');
					try {
						$(document.body).getElements('object').each(function(element){element.setStyle('visibility', 'hidden')});
					}catch(err){
						$('content').setStyle('visibility', 'hidden');
					}
				}
			}
		});
		facebook_onload(loggedinUser);
		FB.ensureInit(function(){
			var waiting = FB.Facebook.get_sessionWaitable();
			waiting.add_changed(function(waitable){
				if(waitable)
				{
					loadEventMembers();
					if($('removeWhenConnected'))
						$('removeWhenConnected').dispose();
				}
			});
		});
		if($('line-gallery'))
		{
			list = $('gallery-box').getChildren();
			var i=0;
			var l=list.length;
			var w=-1;
			var myEffect={
				i: 1,
				l: list.length,
				w: 1
			};
			var effect = function()
			{
				new Fx.Tween($('line-gallery')).start('left', -620*this.i);
				
				if(this.i == this.l-1 || this.i == 0)
					this.w *= -1;				
				
				this.i += this.w;
			}
			if(l>1)
				effect.periodical(5000, myEffect);
		}
	}
);
function onReceiveFbEvent(responseJSON, responseText, eventId)
{
	window.alert(responseText);
}

var request = null;
function onTimelineClick(){
	if (request == null) {
		var current = $(document.body).getElements('div[id^=current-id-]');
		var current_id = 0;
		if(current.length>0)
			current_id = current[0].get('id').substr(11);
		var id = this.get('id');
		var greater_than = id == "next-arrow" ? true : false;
		var elem;
		if (greater_than){
			elem = $('top-gallery').getLast();
		}
		else{
			elem = $('top-gallery').getFirst();
		}
		datestamp = elem.getElement('input').get('value');

		var data = new Hash({
			action: "divan_get_timeline",
			greater_than: greater_than,
			current_id: current_id,
			datestamp: datestamp
		}).toQueryString();
		request = new Request.JSON({
			url: ajaxURL,
			onSuccess: function(responseJSON, responseText){
				onTimelineReceived(responseJSON, responseText, greater_than);
			},
			method: 'post',
			data: data
		}).send();
	}
}

function onTimelineReceived(result, responseText,greater_than)
{	
	if(result.has_prev)
		$('prev-arrow').removeClass('hidden');
	else
		$('prev-arrow').addClass('hidden');
	if(result.has_next)
		$('next-arrow').removeClass('hidden');
	else
		$('next-arrow').addClass('hidden');
		
	list = Elements.from(result.html);
	var num = list.getChildren().length;
	$('carousel').addClass('caroussel-overflow-hidden');
	$('line').setStyle('width','10000px');
	left = num * 124;
	if(greater_than)
	{	
		list.each(function(elem){
			elem.inject($('top-gallery').getLast(), 'after');
		});
		left *= -1;
		var fx = new Fx.Tween($('line')).start('left', left).addEvents({
			'complete':function(){
				while(num--)
					$('top-gallery').getFirst().dispose();
				onSlideComplete();	
			}
		});
	}else{
		list.each(function(elem){
			elem.inject($('top-gallery').getFirst(), 'before');
		});
		left *= -1;
		$('line').setStyle('left', left +"px");
		var fx = new Fx.Tween($('line')).start('left', left, 0).addEvents({
			'complete':function(){
				while(num--)
					$('top-gallery').getLast().dispose();
				onSlideComplete();	
			}
		});
	}
}
function onSlideComplete(){
	request = null;
	$('line').setStyle('left', 0);
	$('carousel').removeClass('caroussel-overflow-hidden');
	$('line').setStyle('width','620px');
	Cookie.write('datestamp', $('top-gallery').getFirst().getElement('input').get('value'), {duration: 0, path:"/"});
	if (document.all && !window.opera)
		initMenu();
}
function refresh_page(){
	window.location.reload(true);
}
function facebook_onload(already_logged_into_facebook){
	FB.ensureInit(function(){
		FB.Facebook.get_sessionState().waitUntilReady(function(session){
			var is_now_logged_into_facebook = session ? true : false;
			if (is_now_logged_into_facebook == already_logged_into_facebook) {
				return;
			}
			refresh_page();
		});
	});
}

function facebook_onlogin_ready(){
	refresh_page();
}

function facebook_prompt_permission(permission){
	FB.ensureInit(function(){
		FB.Connect.showPermissionDialog(permission);
	});
}

function facebook_publish_feed_story(form_bundle_id, template_data){
	FB.ensureInit(function(){
		FB.Connect.showFeedDialog(form_bundle_id, template_data);
		ge('feed_loading').style.visibility = "hidden";
	});
}

function facebook_show_feed_checkbox(){
	FB.ensureInit(function(){
		FB.Connect.get_status().waitUntilReady(function(status){
			if (status != FB.ConnectState.userNotLoggedIn) {
				checkbox = ge('publish_fb_checkbox');
				if (checkbox) {
					checkbox.style.visibility = "visible";
				}
			}
		});
	});
}

function loadEventMembers()
{
	if($('fb-event-id'))
	{
		var eventId = $('fb-event-id').get('value');
		FB.Facebook.apiClient.events_getMembers(eventId, function(result){
			if(result==null)
			{
				loadEventMembers();
				return;
			}
			uid = FB.Connect.get_loggedInUser();
			try{
				if(result.attending.indexOf(uid)>-1)
					$('attending').checked = true;
			}catch(err){}
			try{
				if(result.declined.indexOf(uid)>-1)
					$('declined').set('checked', true);
			}catch(err){}
			try{
				if(result.unsure.indexOf(uid)>-1)
					$('unsure').set('checked', true);
			}catch(err){}
			uls = $('fb-attendees').getElements('ul.confirmes');
			li = null;
			nbPeople = 0;
			function fillAttendees(element, index){
				if(nbPeople<9)
				{
					str = '<fb:profile-pic uid="{uid}" facebook-logo="true" linked="true" size="q"></fb:profile-pic><fb:name linked="false" uid="{uid}" firstnameonly="true"></fb:name>'.substitute({uid: element});
					i = nbPeople/3;
					if(nbPeople%3 == 0)
						li = uls[i].getFirst();
					else
						li = li.getNext();
					li.empty();
					Elements.from(str).inject(li);
					nbPeople++;
				}
			}
			try{
				result.attending.each(fillAttendees);
			}catch(err){}
			try{
				result.unsure.each(fillAttendees);
			}catch(err){}

			FB.XFBML.Host.parseDomTree();				
		});
	}
}
function rsvp(rsvp_status){
	var eventId = $('fb-event-id').get('value');
	FB.ensureInit(function(){
		var waiting = FB.Facebook.get_sessionWaitable();
		if(!waiting.result)
		{
			FB.Connect.requireSession(
				function(){rsvp(rsvp_status);},
				function(){
					$(rsvp_status).set("checked", false);
				},
				true);
		}else{
			FB.Facebook.apiClient.users_hasAppPermission('rsvp_event', function(result){
				if(result)
				{
					FB.Facebook.apiClient.callMethod('facebook.events.rsvp',{"eid":eventId, "rsvp_status":rsvp_status, "format":"JSON"}, function(result){
						loadEventMembers();
					});
				}else{
					FB.Connect.showPermissionDialog("rsvp_event", function(perms){
						if (perms) {
							FB.Facebook.apiClient.callMethod('facebook.events.rsvp',{"eid":eventId, "rsvp_status":rsvp_status, "format":"JSON"}, function(result){
							     loadEventMembers();
							});
						} else {
							$(rsvp_status).set("checked", false);
						}
					});
				}
			});	
		}
	});
}

