var ad_json = [];

// JavaScript Document
var GlobalInit = Class.create({ 
	inititialize: function() {},
	
	init: function() {
		if ($("header_global")){
			BT.Navigation.set('nav_horiz', 'nav_primary');
		}
		// BT.FormSuggestion.set('search', 'search');
		BT.Buttons.setHoverState();
		if ($('show_subgroup')) {
			BT.Events.addListener($('show_subgroup'), "click", GroupNavigation.setIncludeSubgroupContent.bindAsEventListener(this).bind(this));
		}

		// personal module
		if ($('enrollment-reminder')) $('enrollment-reminder').observe('click', function() {
				showPopup('reminder-popup', 'enrollment-reminder', $('enrollment-reminder-contents').innerHTML, function() {
						$$("#reminder-popup .decline_button").each(function(el, index) {
							BT.Widgets.Modal.Confirm(el, "Are you sure you want to decline the invitation to join this group?  This will permanently cancel your invitation.", "Decline to Join", "Oops! I Want to Join", {
									afterOpen: function() {
										$('reminder-popup').hide();
										this.container.down(".modal_confirm_button").observe("click", function(evt) { 
												var url = el.readAttribute("href");
												new Ajax.Request(url, {
														method: "get",
														onSuccess: function(transport) {
															//this.close();	
															location.reload(true);
														}.bind(this)
													});
												
												
											}.bind(this));
										this.container.down(".modal_cancel_button").observe("click", function() { this.close(); }.bind(this));
									},
									
									afterClose: function() {
										this.container.down(".modal_confirm_button").stopObserving("click", function(evt) { 
												var url = el.readAttribute("href");
												new Ajax.Request(url, {
														method: "get",
														onSuccess: function(transport) {
															//this.close();	
															location.reload(true);
														}.bind(this)
													});
												
												
											}.bind(this));
										this.container.down(".modal_cancel_button").stopObserving("click", function() { this.close(); }.bind(this));
									}
								});																			
							});																									 
					});
			});
		if ($('admin-reminder')) $('admin-reminder').observe('click', function() {showPopup('reminder-popup', 'admin-reminder', $('admin-reminder-contents').innerHTML);});
		if ($('moderator-reminder')) $('moderator-reminder').observe('click', function() {showPopup('reminder-popup', 'moderator-reminder', $('moderator-reminder-contents').innerHTML);});
		if ($('quicklinks')) $('quicklinks').observe('change', function() { Quicklinks.onChanged(); });
		if ($("personal_items_list_open")) {
			BT.Events.addListener("personal_items_list_open", "click", function() {
				$("personal_items_list_open").hide();
				$("personal_items_list_close").show();
				$("personal_items_list_container").hide();
			});
			BT.Events.addListener("personal_items_list_close", "click", function() {
				$("personal_items_list_open").show();
				$("personal_items_list_close").hide();
				$("personal_items_list_container").show();
			});
		}
		GroupLegend.init();
		
		StupidIEHacks.setFluidContainers();
		StupidIEHacks.modifyActionLInks();
		BT.Events.addListener(window, "resize", StupidIEHacks.setFluidContainers);

//		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));

		BT.Dialogs.init();
		
		GlobalAds.init();
	},
	
	declineModal: function(el) {  // IE workaround for decline buttons inside a popup bubble 
		return BT.Widgets.Modal.Confirm(el, "Are you sure you want to decline the invitation to join this group?  This will permanently cancel your invitation.", "Decline to Join", "Oops! I Want to Join", {
				afterOpen: function() {
					$('reminder-popup').hide();
					this.container.down(".modal_confirm_button").observe("click", function(evt) { 
							var url = el.readAttribute("href");
							new Ajax.Request(url, {
									method: "get",
									onSuccess: function(transport) {
										//this.close();	
										location.reload(true);
									}.bind(this)
								});
							
							
						}.bind(this));
					this.container.down(".modal_cancel_button").observe("click", function() { this.close(); }.bind(this));
				},
				
				afterClose: function() {
					this.container.down(".modal_confirm_button").stopObserving("click", function(evt) { 
							var url = el.readAttribute("href");
							new Ajax.Request(url, {
									method: "get",
									onSuccess: function(transport) {
										//this.close();	
										location.reload(true);
									}.bind(this)
								});
							
							
						}.bind(this));
					this.container.down(".modal_cancel_button").stopObserving("click", function() { this.close(); }.bind(this));
				}
			});		
	}
		
});

var GroupLegend = {

	init : function() {
		if ($('group_legend_full')) {
			if ($('group_legend_collapse_link')) { $('group_legend_collapse_link').observe('click', this.showAbbreviatedList); }
		}
		if ($('group_legend_abbreviated')) {
			$('group_legend_full').style.display = 'none';
			$('group_legend_abbreviated').style.display = '';
			if ($('group_legend_view_all_link')) { $('group_legend_view_all_link').observe('click', this.showFullList); }
		}
	},
	showFullList : function() {
		$('group_legend_full').style.display = '';
		$('group_legend_abbreviated').style.display = 'none';
	},
	showAbbreviatedList : function() {
		$('group_legend_abbreviated').style.display = '';
		$('group_legend_full').style.display = 'none';
	}
}

var GroupNavigation = {
	setIncludeSubgroupContent : function(evt) {
		var el = evt.element();		
		var url = '';
		url += document.location;
		var separator = (url.indexOf('?') >= 0) ? '&' : '?';
		url += separator + 'set_include_subgroup_content=' + (el.hasClassName("selected") ? '0' : '1');
//		asyncGet(url, 'main_content');
		new Ajax.Request(url, {
			onSuccess: function(transport) {
				window.location.reload(true);
			}
		});
	}
}

var Quicklinks = {
	onChanged: function() {
		var value = $('quicklinks').getValue();
		if (value != 'NULL') {
			redirect(value);
		}
	}
}

var GlobalAds = {
	init: function() {
		if (ad_json.size() > 0) {
			for (var i=0; i<ad_json.size(); i++) {
				var ad = ad_json[i];
				if (ad.location != null && ad.zoneid != null) {
					var param = "?";
					param = param + "z=" + ad.zoneid;
					
					if (ad.section) {
						param = param + "&s=" + ad.section;
					}
					if (ad.category_tag) {
						param = param + "&ct=" + ad.category_tag;
					}
					if (ad.gender) {
						param = param + "&g=" + ad.gender;
					}
					if (ad.keywords) {
						param = param + "&k=" + ad.keywords;
					}
					
					var url = "/ad/api/get_ad" + param;
					var location = ad.location;
					this.getAds(url, location);
				}
			}
		}
	},
	
	getAds: function(url, location, onComplete) {
		new Ajax.Request(url, { method: 'get',
			 onSuccess: function(transport) {
				 var retrieved_ad = transport.responseText.trim();
				 if (retrieved_ad != "") {
					 	 writeCapture.proxyGetElementById = true;
					 	 jQuery("."+ location).each(function() {
								if (location == "leaderboard") {
									var div = jQuery('<div class="l_ads"></div>').html(writeCapture.sanitize(retrieved_ad));
									jQuery(this).html(div);
								}
								else {
									jQuery(this).html(writeCapture.sanitize(retrieved_ad));
								}

								if (onComplete != null) {
									onComplete();
								}
							});
					 }
				}
			});
	},
	
	setSpotlightEvents: function() {
		if ($("spotlight")) {
			BT.Events.addListener($("spotlight_close"), "click", function() {
																		$("spotlight").hide();
																	});	
		}
	}
}

document.observe("dom:loaded", function() { 
	var globalInit = new GlobalInit();
	globalInit.init();
});

