// JavaScript Document

var menu_open = false;
var menu_timer = 0;

var open_grid = 0;
var open_menu = 0;

function init() {
	if ($('search_box')) {
		$('search_box').observe('focus', function(e) {
			Event.element(e).setValue(($F('search_box') == 'What are you looking for?') ? '' : $F('search_box'));
		});
	}
	
	$$('#menu_products').each(function(ele) {
//		ele.observe('mouseover', openProducts);
//		ele.observe('mouseout', closeProducts);
	});
	
	if ($('flyout_locations')) {
		$$('#main_menu .where a').each(function(ele) {
			ele.observe('mouseover', openLocations);
			ele.observe('mouseout', closeLocations);
		});
	}
	
	if ($('comment_check')) {
		$('comment_check').observe('change', function(e) {
			if ($F('comment_check') == 'Yes') {
				$('comment_message').show();
			} else {
				$('comment_message').hide();
			}
		});
	}
	
	if ($('comment_form')) {
		$('comment_form').observe('submit', addRecipeComment);
	}
	
	$$('#recipe_list h5, #add_container h5').each(function(ele) {
		ele.observe('click', function(e) {
			var id = ele.getAttribute('name');
			
			if (open_grid == 0) {
				$('grid_' + id).toggle();
				
				ele.toggleClassName('open');
				ele.toggleClassName('closed');
				
				open_grid = id;
			} else if (open_grid != id) {
				$('grid_' + open_grid).toggle();
				$('grid_' + id).toggle();
				
				$('title_' + open_grid).toggleClassName('closed');
				$('title_' + open_grid).toggleClassName('open');
				
				ele.toggleClassName('open');
				ele.toggleClassName('closed');
				
				open_grid = id;
			} else if (open_grid == id) {
				$('grid_' + id).toggle();
				
				ele.toggleClassName('closed');
				ele.toggleClassName('open');
				
				open_grid = 0;			
			}
		});
	});
	
	if ($('ingredient_form')) {
		$('ingredient_form').observe('submit', submitIngredient);
	}
	
	if ($('check_contest')) {
		$('check_contest').observe('change', function(e) {
			if ($F('check_contest') == 'Yes') {
				$$('div.contest').each(function(ele) {
					ele.show();
				});
			} else {
				$$('div.contest').each(function(ele) {
					ele.hide();
				});
			}
		});
	}
	
	if ($('share_facebook_product')) {
		$('share_facebook_product').observe('click', function(e) {
			e.stop();
			shareFacebook($F('product_name'), $F('product_url'), $F('product_desc'), $F('product_image'));
		});
	}
	
	if ($('share_facebook_recipe')) {
		$('share_facebook_recipe').observe('click', function(e) {
			e.stop();
			shareFacebook($F('recipe_name'), $F('recipe_url'), $F('recipe_desc'), $F('recipe_image'));
		});
	}
	
	if ($('share_facebook_tip')) {
		$('share_facebook_tip').observe('click', function(e) {
			e.stop();
			shareFacebook($F('tip_name'), $F('tip_url'), $F('tip_desc'), $F('tip_image'));
		});
	}
	
	FB.init('0b74c2d3f725a5a317067413ef281ec3'); // www.redmonkeyfoods.com
	//FB.init('e3b23389e8a1249227ee6a3067a197da'); // redmonkey.globalnetdesigns.com
};

var menuClick = function(e) {
	e.stop();
	
	var ele = Event.element(e);
	var id = ele.getAttribute('name');
	
	if (open_menu == 0) {
		$('list_' + id).toggle();
		
		ele.toggleClassName('open');
		ele.toggleClassName('closed');
		
		open_menu = id;
	} else if (open_menu != id) {
		$('list_' + open_menu).toggle();
		$('list_' + id).toggle();
		
		$('link_' + open_menu).toggleClassName('closed');
		$('link_' + open_menu).toggleClassName('open');
		
		ele.toggleClassName('open');
		ele.toggleClassName('closed');
		
		open_menu = id;
	} else if (open_menu == id) {
		$('list_' + id).toggle();
		
		ele.toggleClassName('closed');
		ele.toggleClassName('open');
		
		open_menu = 0;			
	}
};

var shareFacebook = function(t, l, b, i) {
	FB.ensureInit(function () {
		FB.Connect.streamPublish('I found this at Red Monkey Foods. Check it out!', {
			'name' : t,
			'href' : l,
			'description' : b,
			'media':[{
				'type' : 'image',
				'src' : i,
				'href' : l
			}]
		}, null);
  });
};

var billingCheck = function(e) {
	if ($F(Event.element(e)) == null) {
		$$('.billing').each(function(ele) {
			ele.show();
		});
	} else {
		$$('.billing').each(function(ele) {
			ele.hide();
		});
	}
};


var changeRecipe = function(id) {
	new Ajax.Request('recipe_info.php', {
		method: 'get',
		parameters: { id: id },
		onSuccess: function(r) {
			r = r.responseText.evalJSON();
			
			var flashvars = { 
				recipe_id: id,
				recipe_title: r.title,
				recipe_time: r.time,
				recipe_calories: r.calories,
				recipe_ingredients: r.ingredients,
				recipe_description: r.description,
				recipe_video: r.video
			};
		
			if (r.short) {
				swfobject.embedSWF("flash/cookbook.swf", "book_flash", "600", "639", "10.0.0", "flash/expressInstall.swf", flashvars, { 'wmode' : 'transparent' });
			} else {
				swfobject.embedSWF("flash/cookbook_small.swf", "book_flash", "600", "462", "10.0.0", "flash/expressInstall.swf", flashvars, { 'wmode' : 'transparent' });	
			}
		}
	});
};
	
var openProducts = function(e) {
	if (menu_open) return false;
	
	$('flyout_products').show();
	
	menu_open = true;
	clearTimeout(menu_timer);
	
	$('flyout_products').observe('mouseover', renewProducts);
	$('flyout_products').observe('mouseout', closeProducts);
};

var renewProducts = function() {
	clearTimeout(menu_timer);
};

var closeProducts = function(e) {
	menu_timer = setTimeout(hideProducts, 1500);
};

var hideProducts = function() {
	$('flyout_products').hide();
	
	$('flyout_products').stopObserving('mouseover', renewProducts);
	$('flyout_products').stopObserving('mouseout', closeProducts);
	
	menu_open = false;
	menu_timer = null;
};

var addRecipeComment = function(e) {
	e.stop();
	
	new Ajax.Request('recipe_comment_add.php', {
		method: 'post',
		parameters: Event.element(e).serialize(true),
		onSuccess: function(r) {
			var response = r.responseText.evalJSON();
			
			if (response.success) {
				window.location.reload();
				return false;
				
				var comment = new Element('div', {'class' : 'comment' });
				
				if (response.facebook) {
					var facebook = new Element('div', { 'class' : 'facebook_info' });
					facebook.insert(new Element('p', { 'style' : 'margin: 0 10px 0 10px; float: left; width: 100%; position: relative; left: -11px; text-align: right;' }).update('<fb:profile-pic uid="loggedinuser" size="square" facebook-logo="true"></fb:profile-pic>'));
					facebook.insert(new Element('p' ,{ 'style' : 'text-align: right;' }).update('<fb:name uid="loggedinuser" useyou="false"></fb:name>'));
					
					comment.insert(facebook);
				} else {
					var normal = new Element('div', { 'class' : 'facebook_info' });
					normal.insert(new Element('h4').update(response.name));
					
					comment.insert(normal);					
				}
				
				var d = new Date();
				
				var comment_block = new Element('div', { 'float': 'right', width: '75%' });
				
				comment_block.insert(new Element('p').update(response.comment));
				comment_block.insert(new Element('p', { 'style' : 'font-size: 80%; font-style: italic;' }).update('Posted on ' + d.toDateString() + '.'));
				
				comment.insert(comment_block);
				
				$('first_comment').insert({ after: comment });
				FB.XFBML.Host.parseDomTree();
			}
		}
	});
};

var submitIngredient = function(e) {
	e.stop();
	var ingredients = [];
	
	var form = Event.element(e);
	
	var values = form.serialize(true);
	
	for (v in values) {
		if (v.substr(0, 11) == 'ingredient_') ingredients.push(v.split('&')[0].substr(11));
	}
	
	new Ajax.Request('recipe_get.php', {
		method: 'post',
		parameters: { ingredients: ingredients.toString() },
		onSuccess: function(r) {
			var response = r.responseText.evalJSON();
			
			if (response.success) {				
				$('recipe_list').fade({
					afterFinish: function() {
						$('recipe_list').update(new Element('h4').update('Recipes'));
						
						$A(response.recipes).each(function(ingred) {
							$('recipe_list')
							.insert(
								new Element('p')
								.setStyle({ 'margin' : '3px 0', 'width' : '90%', 'padding-left' : '10px' })
								.update(
									new Element('a', { href: 'recipe_detail.php?id=' + ingred.id })
									.update(ingred.name)
								)
							);
						});
						
						$('recipe_list').appear();
					}
				});
			} else {
				alert('Sorry, there are no recipes with any of those ingredients in our database.');
			}
		}
	});
};

Event.observe(window, 'load', init);