// JavaScript Document
var global = {
	init: function() {
//		$$("#primary li").each(function(el) {
//				BT.Events.addListener(el, "mouseover", global.setMouseover);
//				BT.Events.addListener(el, "mouseout", global.setMouseout);
//			});
		$$("#sidebar li").each(function(el) {
				BT.Events.addListener(el, "mouseover", global.setMouseover);
				BT.Events.addListener(el, "mouseout", global.setMouseout);
			});
//		$("flash-message-container").hide();

		if (Prototype.Browser.IE) {
			BT.Events.addListener(window, "unload", unlockFormButtonsEvent);
		}
		else {
			BT.Events.addListener(window, "beforeunload", unlockFormButtonsEvent);
		}
		BT.Events.addListener(window, "unload", BT.Events.unset.bindAsEventListener(BT.Events));
	},
	
	setMouseover: function(evt) {
		var el = evt.element();
		el.addClassName("on");
	},
	
	setMouseout: function(evt) {
		var el = evt.element();
		el.removeClassName("on");
	}
}

document.observe("dom:loaded", function() { 
	global.init();
});

var ReferralWidget = Class.create({
	initialize: function(form_key) {
		if (!form_key) {
			return false;
		}
		if ($$(".referral_widget").size() == 0) {
			return false;
		}
		
		this.form_key = form_key;
		
		$$(".referral_widget").each(function(el) {
												this.initTabsEvent();
												this.chooser = new BT.Widgets.MemberChooserNew();
												BT.Events.addListener($("external_email_submit"), "click", this.submitButtonEventHandler.bindAsEventListener(this).bind(this));
												BT.Events.addListener($("mc_selected_submit"), "click", this.handleFormSubmit.bindAsEventListener(this).bind(this));
												BT.Events.addListener($("form_" + this.form_key), "submit", this.handleFormSubmit.bindAsEventListener(this).bind(this));
										
												$$(".show_email_preview_link").each(function(obj, index) {
																									BT.Events.addListener(obj, "click", this.showEmailPreviewModal.bindAsEventListener(this, index).bind(this));
																								}.bind(this));
												if ($$(".new_win").size() > 0) {
													$$(".new_win").each(function(el) {
																					BT.Events.addListener(el, "click", this.newWindowLinkEventHandler.bindAsEventListener(this).bind(this));
																				 }.bind(this));
												}
											 	this.displaySelectedTab(el);
											 }.bind(this));
	},
	
	form_key: "",
	chooser: null,
	
	displaySelectedTab: function(el) {
		$(el).select(".tabs li").each(function(li, index) {
												var tc = $$(".tab_container")[index];
												if (li.hasClassName("selected")) {
													tc.show();
												}
												else {
													tc.hide();
												}
											});		
	},
	
	initTabsEvent: function() {
		$$(".referral_widget .tabs a").each(function(el) {
													 	BT.Events.addListener(el, "click", this.tabClickEventHandler.bindAsEventListener(this).bind(this));
													 }.bind(this));
	},
	
	tabClickEventHandler: function(evt) {
		var el = evt.element();
		var pel = el.up();
		if (!pel.hasClassName("selected")) {
			pel.addClassName("selected");	
			var s = el.readAttribute("id");
			$(s + "_container").show();
		
			pel.siblings().each(function(sibs) {
											sibs.removeClassName("selected");
											var s = sibs.select("a")[0].readAttribute("id");
											$(s + "_container").hide();
										});	
		}
	},
	
	submitButtonEventHandler: function(evt) {
		var el = evt.element();
		var group_id = $("user_info_group_id").getValue();
		$("promo_diapers_emails_referree_group_id").setValue(group_id);
		el.up("form").submit();
	},

	handleFormSubmit: function(evt) {
		Event.stop(evt);
		var profileIds = this.chooser.getProfileIds();
		if (!profileIds.length) {
			alert("Please select some members.");
			//BT.Widgets.Modal.Alert(null, "Please select some members", "OK");
			unlockFormButtons('form_' + this.form_key);
		}
		else {
			$(this.form_key + '_profile_ids').value = profileIds.join(",");
			var group_id = $("user_info_group_id").getValue();
			$("promo_diapers_members_referree_group_id").setValue(group_id);
			var el = evt.element();
			if (el.nodeName != "FORM") {
				el = el.up("form");
			}
			el.submit();
		}
	},

	showEmailPreviewModal: function(evt, index) {
		var el = evt.element();
		var previewWindow = new BT.Widgets.Modal.Thickbox(null, true, {"modal_id": "partner_referral_modal"});
		var content = $("modal_content"+BT.Widgets.Modal.ThickboxSequence);
		content.update($$('.email_preview_content')[index].innerHTML);
	},
	
	newWindowLinkEventHandler: function(evt) {
		Event.stop(evt);
		
		var el = evt.element();
		var url = el.readAttribute("href");
		
		window.open(url, "sharing", "toolbar=0,status=0,width=626,height=436");
	}
});

var home = {
	init: function() {
		if ($('name_group')) BT.Events.addListener($('name_group'), "change", this.updateSubmitUrl.bind(this));
	},

	updateSubmitUrl: function(event) {
		var submitButton = $("create_group_button");
		submitButton.href = '/signup?group_name=' + escape(event.element().getValue());
	}
}

var create_group = {

	init: function() {
		BT.Events.addListener($('index_signup_create_group_name'), "blur", this.checkGroupName.bind(this));
		BT.Events.addListener($('index_signup_create_group_handle'), "blur", this.checkGroupHandle.bind(this));
	},

	checkGroupName: function(event) {

		var elt = event.element();
		var nameValue = elt.getValue();
		if (nameValue == "Group Name") return; // ignore the default

		asyncGet('/index/api/check_group_name?name='+encodeURIComponent(nameValue), 'empty-container');
	},

	checkGroupHandle: function(event) {

		var elt = event.element();
		var handleValue = elt.getValue();
		if (handleValue == "Nickname") return;

		asyncGet('/index/api/check_group_handle?handle='+encodeURIComponent(handleValue), 'empty-container');
	}
}

var create_profile = {

	init: function() {
		BT.Events.addListener($('index_signup_create_profile_handle'), "blur", this.checkHandle.bind(this));
		BT.Events.addListener($('index_signup_create_profile_pwd0'), "blur", this.checkPwd0.bind(this));
		BT.Events.addListener($('index_signup_create_profile_pwd1'), "blur", this.checkPwd1.bind(this));
	},

	checkHandle: function(event) {
		var elt = event.element();
		asyncGet('/index/api/check_handle?handle='+encodeURIComponent(elt.getValue()), 'empty-container');
	},

	checkPwd0: function() {
		var userName = $('index_signup_create_profile_user_name').getValue();
		var pwd0 = $('index_signup_create_profile_pwd0').getValue();
		if (userName && pwd0) {
			asyncGet('/index/api/check_password?u='+encodeURIComponent(userName)+'&p='+encodeURIComponent(pwd0), 'empty-container');
		}
	},

	checkPwd1: function() {
		var pwd0 = $('index_signup_create_profile_pwd0').getValue();
		var pwd1 = $('index_signup_create_profile_pwd1').getValue();
		if (pwd0 != pwd1) {
			BT.Form.setFieldNotice('index_signup_create_profile_pwd1', 'Passwords do not match.');
		}
		else {
			BT.Form.clearFieldNotice('index_signup_create_profile_pwd1');
		}
	}
}

var group_directory = {
	init: function() {
		var location = new BT.Controls.ContainerToggleBySelectorClass("group_directory.location", "index_group_directory_search_radius", [ "", "location_container", "location_container", "location_container"]);
		
		BT.Events.addListener($$("#advance_search_control .show")[0], "click", this.openAdvanceSearch.bind(this));	
		BT.Events.addListener($$("#advance_search_control .hide")[0], "click", this.closeAdvanceSearch.bind(this));	

		if ($("index_group_directory_search_radius").selectedIndex > 0) {
			this.openAdvanceSearch();
		}
		else {
			this.closeAdvanceSearch();
		}
		
		BT.Events.addListener($("sort_sort_by"), "change", this.sortHandler.bindAsEventListener(this).bind(this));
		
		$$(".pagination a").each(function(el) { BT.Events.addListener(el, "click", this.paginationHandler.bindAsEventListener(this).bind(this)); }.bind(this));
	},
	
	openAdvanceSearch: function(evt) {
		$("advance_search").show();
		$$("#advance_search_control .show")[0].hide();
		$$("#advance_search_control .hide")[0].show();
	}, 
	
	closeAdvanceSearch: function(evt) {
		$("advance_search").hide();
		$$("#advance_search_control .show")[0].show();
		$$("#advance_search_control .hide")[0].hide();
		$("index_group_directory_search_radius").selectedIndex = 0;
		$("location_container").hide();
	},
	
	sortHandler: function(evt) {
		var el = evt.element();
		if (el.getValue() != "") {
			$("index_group_directory_search_sort").setValue(el.getValue());
			$("index_group_directory_search_p").setValue($("sort_p").getValue());
			$("form_index_group_directory_search").submit();	
		}
	},
	
	paginationHandler: function(evt) {
		var el = evt.element();
		var page = el.readAttribute("href").toQueryParams().p;
		Event.stop(evt);
		
		$("index_group_directory_search_sort").setValue($("sort_sort_by").getValue());
		$("index_group_directory_search_p").setValue(page);
		$("form_index_group_directory_search").submit();			
	}
}

var promo_shutterfly = {
	init: function() {
		$$("ul.card_tiles li input[type=checkbox]").each(function(el) {
				BT.Events.addListener(el, "click", function(evt) {
						var vote_el = evt.element();
						var tally = this.getTotalTally();
						
						if (tally > this.max_tally) {
							alert("You can only vote for up to three cards. Please uncheck one if you want to change your vote.");
							vote_el.checked = false;
							return false;
						}
						
						if (vote_el.checked) {
							vote_el.up("li").addClassName("selected");
						}
						else {
							vote_el.up("li").removeClassName("selected");	
						}
					}.bindAsEventListener(this).bind(this));											 
					
					if (el.checked) {
						el.up("li").addClassName("selected");
					}
					else {
						el.up("li").removeClassName("selected");	
					}
			}.bind(this));	
		
		$$("ul.card_tiles li a").each(function(el) {
				BT.Events.addListener(el, "click", this.getHero.bindAsEventListener(this).bind(this));								   
			}.bind(this));
		
//		$("shutterfly_popup").hide();		
	},
	
	max_tally: 3,
	previewHero: null,
	
	getTotalTally: function() {
		var t = 0;
		$$("ul.card_tiles li input[type=checkbox]").each(function(el) { 
				if (el.checked) {
					++t;
				}
			});
		return t;
	},
	
	getHero: function(evt) {
		var el = evt.element();
		if (el.nodeName == "IMG") {
			el = el.up("a");	
		}

		this.previewHero = new BT.Widgets.Modal.Thickbox($("empty-container"), true, {
									title: el.readAttribute("title"),
									beforeOpen: this.populateHeroDetails.bindAsEventListener(this, el).bind(this),
									afterOpen: this.setHeroDetailsEvent.bindAsEventListener(this, el.up("li").readAttribute("id")).bind(this),
									afterClose: this.resetHeroDetails.bindAsEventListener(this).bind(this)
								});
		this.previewHero.open();

		Event.stop(evt);
	},
	
	populateHeroDetails: function(evt, el) {
		var parent = el.up("li");
		var id = parent.readAttribute("id");
		var tb = $("hero_tb_"+id);
		var src = tb.readAttribute("altsrc");
		var alt = tb.readAttribute("alt");
		var details = parent.select(".details p");
		var img = new Element("img", {"src": src, "alt": alt});
		var detail = new Element("div", {"id": "hero_details"});
					
		details.each(function(nel) {
				detail.insert(nel.cloneNode(true));				  
			});
		
		var b_container = new Element("div");
		b_container.addClassName("buttons");
		var b1 = new Element("a", {"id": "btn_" + parent.readAttribute("id"), "href": "javascript: void(0);"});
		b1.addClassName("button btn_vote");
		var b1_left = new Element("div");
		b1_left.addClassName("left");
		b1.insert(b1_left);
		var b1_label = new Element("div");
		b1_label.addClassName("label");
		b1_label.update("Vote");
		b1.insert(b1_label);
		var b1_right = new Element("div");
		b1_right.addClassName("right");
		b1.insert(b1_right);
		b_container.insert(b1);
		var b2 = new Element("a", {"href": "javascript: void(0);"});
		b2.addClassName("hide");
		b2.update("Close");
		b_container.insert(b2);

		detail.insert(b_container);

		var p = new Element("p")
		p.update("The Shutterfly holiday card collection includes over 500 exclusive designs.  All you have to do is go online, pick out your favorite card and add your favorite photos and holiday message.");
		detail.insert(p);
		
		var width = (tb.width >= "164") ? " w" : " t";
		var html = new Element("div");
		html.addClassName("hero_detail_container" + width);
		html.insert(img).insert(detail)
		
		$(this.previewHero.container).select(".modal_content")[0].update(html);
		if (BT.Browser.IE && BT.Browser.version < 8) {
			$(this.previewHero.container).select(".thickbox_modal")[0].addClassName(width);
		}
	},
	
	setHeroDetailsEvent: function(evt, id) {
		BT.Events.addListener($$(".btn_vote")[0], "click", function(evt) {
				var el = BT.Events.element(evt);
				if (el.nodeName != "BUTTON") {
					el = el.up();	
				}
				var parent = $(el.readAttribute("id").substr(4));
				var vote_el = parent.select("input[type=checkbox]")[0];
				vote_el.checked = true;
				
				var tally = this.getTotalTally();
				
				if (tally > this.max_tally) {
					alert("You can only vote for up to three cards. Please uncheck one if you want to change your vote.");
					vote_el.checked = false;
					this.previewHero.close();

					return false;
				}
				
				if (vote_el.checked) {
					parent.addClassName("selected");
				}
				else {
					parent.removeClassName("selected");	
				}
				
				this.previewHero.close();
				
			}.bindAsEventListener(this).bind(this));											 
	},
	
	resetHeroDetails: function(evt) {
		$("empty-container").update("");
	}
}

var promo_safeway_index = {
	init: function() {
		this.initForumMessage();
		this.loader_modal = new BT.Widgets.Loader();
		var message = "<span class=\"main_message\">Thank you for sharing your recipe!</span></p><p>Please <a href=\"" + this.safeway_url + "\" target=\"safeway\" id=\"shop_safeway\">start shopping</a> to get your FREE groceries and FREE delivery.";
		
		var container = new Element("a", {"href": "#none"});
		this.modal = BT.Widgets.Modal.Confirm(container, message, "Start Shopping Now", "Close", {
							title: "Thank You",
							afterOpen: function() {
								$("shop_safeway").observe("click", this.openSafewayWinEventHandler.bindAsEventListener(this).bind(this));
								$("confirm_yes"+BT.Widgets.Modal.ConfirmSequence).observe("click", this.openSafewayWinEventHandler.bindAsEventListener(this).bind(this));
								$("confirm_no"+BT.Widgets.Modal.ConfirmSequence).observe("click", this.closeModalEventHandler.bindAsEventListener(this).bind(this));
							}.bind(this),
							afterClose: function() {
								$("shop_safeway").stopObserving("click", this.openSafewayWinEventHandler.bindAsEventListener(this).bind(this));
							}.bind(this)						
						});
	},
	
	modal: null,
	loader_modal: null,
	safeway_url: "",
	
	initForumMessage: function() {
		var b = $$("body")[0];
		var brand = (b.hasClassName("safeway")) ? 1 : (b.hasClassName("vons")) ? 2 : 3;
		this.safeway_url = "http://shop.safeway.com/superstore/default.asp?brandid=" + brand + "&page=corphome";
		this.addSafewayAdLink();
		var form = null;
		$$("form").each(function(el) {
								 	if (el.readAttribute("id").search(/forum_global/) >= 0) {
										form = el;
										$break;
									}
								 });
		BT.Events.addListener(form, "submit", this.submitEventHandler.bindAsEventListener(this).bind(this));
	},
	
	addSafewayAdLink: function() {
		var a = new Element("a");
		a.writeAttribute({ "href": this.safeway_url, "target": "safeway", "alt": "Safeway", "title": "Safeway" });
		a.insert("(Safeway - Start Shopping Now)");
		$$(".col_right")[0].insert(a);			
		BT.Events.addListener($$(".col_right a")[0], "click", this.openSafewayWinEventHandler.bindAsEventListener(this, this.safeway_url).bind(this));
	},
	
	submitEventHandler: function(evt) {
		var form = evt.element();
		var val = form.serialize(true);
		var url = "/promo/api/add_comment_and_get_result";
		
		this.loader_modal.open();
		new Ajax.Request(url, {
				parameters: val,	 
				onComplete: function(transport) {
					this.loader_modal.close();
					var data = transport.responseText;
					if (data.startsWith("<success>")) {
						var success = parseInt(data.substr(9, data.indexOf("</success>")-9));
						var html = data.substr(data.indexOf("</success>")+10, data.length);
						$("forum_content").update(html);
						this.initForumMessage();
						
						if (success > 0) {
							this.modal.open();
						}
						else {
							this.loader_modal.close();
						}
					}
				}.bind(this)
			});
		
		Event.stop(evt);
	},
	
	openSafewayWinEventHandler: function(evt) {
		window.open(this.safeway_url, "safeway", "width=800,height=700, toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes");
		if (this.modal) {
			this.modal.close();
		}
		Event.stop(evt);
	},
	
	closeModalEventHandler: function(evt) {
		this.modal.close();	
	}
}

var promo_calphalon_index = {

	init: function() {
		BT.Events.addListener("form_promo_calphalon_writereview", "submit", this.handleFormSubmit.bind(this));
		BT.Events.addListener("promo_calphalon_writereview_drpQuestion1", "change", this.handleProductChange.bind(this));
	},

	handleFormSubmit: function(evt) {

		var form = $("form_promo_calphalon_writereview");
		form.setOpacity(0.5);
		var url = '/promo/api/calphalon_validate_writereview?update_key=promo_calphalon_writereview';
		new Ajax.Request(url, {
				parameters: form.serialize(true),
				onComplete: function(transport) {
					var form = $("form_promo_calphalon_writereview");
					var response = transport.responseText.evalJSON(true);
					if (response.success) {
						form.submit();
					}
					else {
						form.setOpacity(1);
						form.innerHTML = response.html;
						BT.Events.addListener("promo_calphalon_writereview_drpQuestion1", "change", this.handleProductChange.bind(this));
					}
				}.bind(this)
			});

		Event.stop(evt);
	},

	handleProductChange: function(evt) {
		var productUrl = null;
		var selectedProductId = evt.element().getValue();
		if (selectedProductId) {
			productUrl = this.productIdUrls[selectedProductId];
		}
		$('promo_calphalon_writereview_urlSuccess').value = productUrl;
	}
}

var promo_godiva_tell_members = {

	chooser: null,

	init: function() {
		this.chooser = new BT.Widgets.MemberChooser();
		BT.Events.addListener("form_promo_godiva_tell_members", "submit", this.handleFormSubmit.bind(this));

		$$(".show_email_preview_link").each(function(obj) {
			BT.Events.addListener(obj, "click", this.showEmailPreviewModal.bind(this));
		}.bind(this));
	},

	handleFormSubmit: function(evt) {
		var profileIds = this.chooser.getProfileIds();
		if (!profileIds.length) {
			alert('Please select some members.');
			// BT.Widgets.Modal.Alert(null, "Please select some members", "OK");
			Event.stop(evt);
			unlockFormButtons('form_promo_godiva_tell_members');
		}
		else {
			$('promo_godiva_tell_members_profile_ids').value = profileIds.join(",");
		}
	},

	showEmailPreviewModal: function() {
		var previewWindow = new BT.Widgets.Modal.Thickbox(null, true, {});
		var content = $("modal_content"+BT.Widgets.Modal.ThickboxSequence);
		content.innerHTML = $('email_preview_content').innerHTML;
		content.up(".module_plain").style.width = '700px';
		content.style.height = '404px';
	}
}

var promo_godiva_share_coupon = {

	chooser: null,

	init: function() {
		if ($("form_promo_godiva_share_coupon_members")) {
			this.chooser = new BT.Widgets.MemberChooser();
			BT.Events.addListener("form_promo_godiva_share_coupon_members", "submit", this.handleFormSubmit.bind(this));
		}
		$$(".show_email_preview_link").each(function(obj) {
			BT.Events.addListener(obj, "click", this.showEmailPreviewModal.bind(this));
		}.bind(this));
	},

	handleFormSubmit: function(evt) {
		var profileIds = this.chooser.getProfileIds();
		if (!profileIds.length) {
			alert('Please select some members.');
			// BT.Widgets.Modal.Alert(null, "Please select some members", "OK");
			Event.stop(evt);
			unlockFormButtons('form_promo_godiva_share_coupon_members');
		}
		else {
			$('promo_godiva_share_coupon_members_profile_ids').value = profileIds.join(",");
		}
	},

	showEmailPreviewModal: function() {
		var previewWindow = new BT.Widgets.Modal.Thickbox(null, true, {});
		var content = $("modal_content"+BT.Widgets.Modal.ThickboxSequence);
		content.innerHTML = $('email_preview_content').innerHTML;
		content.up(".module_plain").style.width = '700px';
		content.style.height = '404px';
	}
}