//hard-coded default slideshow post:
var default_post='cafe-photos';

function cafe_smart_load(cafe_url,post_title) {
	//check for default
	if (post_title==null) post_title = default_post;
	//hide all slideshows
	jQuery('.cafeshow').hide();
	//fetch show to be loaded
	var cafe = jQuery('#cafeshow_'+post_title);
	if(cafe.html()!=null) {
		//show if it exists
		cafe.show();
		cafe_set_fixed_width(post_title);
	} else {
		//else load it
		cafe_load_show(cafe_url,post_title);
	}
}

function survey_smart_load(page_url,category_id) {
	//hide all slideshows
	jQuery('.cafeshow').hide();
	//fetch show to be loaded
	var cafe = jQuery('#cafeshow_'+category_id);
	if(cafe.html()!=null) {
		//show if it exists
		cafe.show();
		//cafe_set_fixed_width(category_id);
	} else {
		//else load it
		survey_load_show(page_url,category_id);
	}
}

function cafe_load_show(cafe_url,post_title)
{	
	var full_url = cafe_url+post_title.replace(' ','-').toLowerCase();
	var async_call = new sack(full_url);
	async_call.onError = function() { alert('Ajax error in feedback' )};
	async_call.onCompletion = function() {if(async_call.responseStatus[0] == 200) cafe_add_show(async_call.response,post_title)};
	async_call.runAJAX();
	return true;
}

function survey_load_show(page_url,category_id)
{
	var full_url = page_url+'?cat_id='+category_id;
	var async_call = new sack(full_url);
	async_call.onError = function() { alert('Ajax error in feedback' )};
	async_call.onCompletion = function() {if(async_call.responseStatus[0] == 200) survey_add_show(async_call.response,category_id)};
	async_call.runAJAX();
	return true;
}

function survey_add_show(xml_response,show_id)
{
	jQuery('#cafe').append(xml_response);
	//if(auto_slide) {
	//	cafe_momentum['cafeshow_'+show_id] = -2;
	//	cafe_activate('cafeshow_'+show_id);
	//}
}

function cafe_load_show_gallery(cafe_gallery_url)
{	
	var async_call_gallery = new sack(cafe_gallery_url);
	async_call_gallery.onError = function() { alert('Ajax error in feedback' )};
	async_call_gallery.onCompletion = function() {if(async_call_gallery.responseStatus[0] == 200) cafe_add_gallery(async_call_gallery.response)};
	async_call_gallery.runAJAX();
	return true;
}

function cafe_add_gallery(responseXML)
{
	jQuery('#cafe_gallery').append(responseXML);
}

function cafe_add_show(responseXML,post_title)
{
	jQuery('#cafe').append(responseXML);
	jQuery(document).ready( function(){cafe_set_fixed_width(post_title);});
}

function cafe_set_fixed_width(show_id)
{
	var cafe_width = 0;
	var cafe_elements = jQuery('#cafeshow_'+show_id+' .cafeslide');
	
	jQuery('#cafeshow_'+show_id+' .cafeslide').each(function(i){
		element_width = cafe_elements[i].offsetWidth;
		element_margin = parseInt(jQuery(this).children(':first').css('margin-right').replace('px',''));
		if(element_width - element_margin <= 0) {
			setTimeout('cafe_set_fixed_width("'+show_id+'");',1000);
			return false
		}
		cafe_width += element_width;
	});
	
	var cafe_slides = jQuery('#cafeshow_'+show_id+' .cafeslides');
	cafe_slides.width(cafe_width);
	if(auto_slide) {
		cafe_momentum['cafeshow_'+show_id] = -2;
		cafe_activate('cafeshow_'+show_id);
	}
}

//physics
var cafe_force = 3;
var cafe_friction = 2;
var cafe_interval = 30;
var max_momentum = 30;
var auto_slide = false;
//instances
var cafe_momentum = new Array();
var increase_momentum_right = new Array();
var increase_momentum_left = new Array();
var decrease_momentum = new Array();
var physics_instance = new Array();

function cafe_auto_slide(set_auto_slide)
{
	auto_slide = set_auto_slide;
}

function cafe_activate(show_id)
{
	if(physics_instance[show_id] == null)
	{
		if(cafe_momentum[show_id] == null) cafe_momentum[show_id] = 0;
		physics_instance[show_id] = setInterval('cafe_physics("'+show_id+'");',cafe_interval);
	}
}

function cafe_deactivate(show_id)
{
	cafe_momentum[show_id] = 0;
	cafe_no_force(show_id);
	clearInterval(physics_instance[show_id]);
	physics_instance[show_id] = null;
}

function cafe_physics(show_id)
{
	cafe_apply_force(show_id);
	cafe_apply_momentum(show_id);
}

function cafe_force_right(show_id)
{
	increase_momentum_right[show_id] = true;
	if (physics_instance[show_id] == null) cafe_activate(show_id);
}

function cafe_force_left(show_id)
{
	increase_momentum_left[show_id] = true;
	if (physics_instance[show_id] == null) cafe_activate(show_id);
}

function cafe_no_force(show_id)
{
	increase_momentum_right[show_id] = false;
	increase_momentum_left[show_id] = false;
	decrease_momentum[show_id] = false;
}

function cafe_apply_friction(show_id)
{
	decrease_momentum[show_id] = true;
}

function cafe_apply_force(show_id)
{
	if (increase_momentum_right[show_id])
	{
		if(cafe_momentum[show_id] > -max_momentum) cafe_momentum[show_id] -= cafe_force;
	}
	if (increase_momentum_left[show_id])
	{
		if(cafe_momentum[show_id] < max_momentum)cafe_momentum[show_id] += cafe_force;
	}
	if (decrease_momentum[show_id] && cafe_momentum[show_id])
	{
		if (cafe_momentum[show_id] > 0)
		{
			cafe_momentum[show_id] -= cafe_friction;
			if ( cafe_momentum[show_id] < 0) cafe_momentum[show_id] = 0;
		}
		else
		{
			cafe_momentum[show_id] += cafe_friction;
			if ( cafe_momentum[show_id] > 0) cafe_momentum[show_id] = 0;
		}
	}
	if (cafe_momentum[show_id] == 0 && !increase_momentum_left[show_id] && !increase_momentum_right[show_id]) deactivate(show_id);
}

function cafe_apply_momentum(show_id)
{
//alert(show_id);
	var cafeslides = jQuery('#'+show_id+' .cafeslides');
	/* IE */if(cafeslides.css('left') == 'auto') cafeslides.css('left','0px');
	if(cafeslides.css('left') == undefined) cafeslides.css('left','0px');
	var current_left = parseInt(cafeslides.css('left').replace('px',''));
	if(cafe_hit_left(show_id,cafe_momentum[show_id]))
	{
		cafe_deactivate(show_id);
		current_left = 0;
	} else if(cafe_hit_right(show_id,cafe_momentum[show_id])) {
		cafe_deactivate(show_id);
		current_left = cafe_get_right(show_id);
	} else {
		current_left += cafe_momentum[show_id];
	}
	cafeslides.css('left',current_left+'px');
}

function cafe_hit_left(show_id,current_momentum)
{
	if(current_momentum == null) current_momentum = 0;
	var cafeslides = jQuery('#'+show_id+' .cafeslides');
	return cafeslides.position().left + current_momentum >= 0;
}

function cafe_hit_right(show_id,current_momentum)
{
	if(current_momentum == null) current_momentum = 0;
	var scroller = jQuery('#'+show_id);
	var cafeslides = jQuery('#'+show_id+' .cafeslides');
	return cafe_get_right(show_id) >= cafeslides.position().left + current_momentum;
}

function cafe_get_right(show_id)
{
	var scroller = jQuery('#'+show_id);
	var cafeslides = jQuery('#'+show_id+' .cafeslides');
	var right_value = scroller[0].offsetWidth - cafeslides.width();
	if (right_value > 0) right_value = 0;
	return right_value;
}

function cafe_set_momentum(show_id,magnitude)
{
	cafe_momentum[show_id] = magnitude;
}