
var AG = {
  configure: function() {
  		this.basketMessage = new MessageWindow({
  			"timeout": 2000, 
  			"onShow": function(){ AG.basketMessage.modalShow() }, 
  			"onHide": function(){ AG.basketMessage.modalHide() }
  		});
  }
}

window.addEvent("domready", function(){
	AG.configure();
	// Hides the H2's so without JS support, they are shown.

	$$('.loginRegisterContainer h2').each(function(el){
		el.setStyles({
			'position': 'absolute',
			'left': '-9999px'
		});
	});

	new AlphaPng();
	
	// Homepage banner rotation

	$$(".homeBanner").each(function(el){ new Ticker(el, {"interval": 6000}) });

	// If Title and Value are equal on text inputs clears the text when field is active

	$$(".volatile").each(function(el){
		$(el).addEvent("focus", function(){
			if(this.getValue() == this.getProperty("title")) {
				this.value = "";
			}
		});
	});

	// Opens links into a new window

	$$("a[rel*='external']").each(function(a){ 
		$(a).setProperty("target", "_blank");
	});
	
	// Generic code for carousels
	
	$$(".genericCarousel").each(function(el){
		
		var togglers = $ES(".toggler", el);
		
		togglers.addEvent("click", function(e){ 
			new Event(e).stop();
		});
		
		var carouselID = el.id;
		
		if (carouselID == "additionalImages") {
			var visibleItems = 4;
			var scrollAmount = 72;
		}

		$ES(".items ul", el).each(function(elItem){
			new Carousel(elItem,{
				"autoStyle": true,
				"idPrevious": $ES(".prev", el)[0],
				"idNext": $ES(".next", el)[0],
				"visibleItems": visibleItems,
				"scrollAmount": scrollAmount,
				"scrollInterval": 350
			});
		});
		
	});

		// Initialize the tabs for login/register
		
		if($("loginRegisterTabs")){
		
			var togglers = $$("#loginRegisterTabs li a");
			var elements = $$(".loginRegisterContainer form");
			
			togglers.addEvent("click", function(e){ 
				new Event(e).stop();
			});
			
			var productTabs = new Accordion(togglers, elements,{
				"onActive": function(tab){
					tab.getParent().addClass("selected");
				},
				"onBackground": function(tab){
					tab.getParent().removeClass("selected");
				},
				"alwaysHide": false,
				"transition": null,
				"duration": 0
			});
			
			// Check whether the register form has any errors and show it otherwise show the login form
			if ($ES(".fielderror, .formerror", $$(".loginRegister")[1]).length > 0) {
				productTabs.display(1);
			} else {
				productTabs.display(0);
			}
			
		}

	// Shows the tabs, so non-JS users do not seem them, as they have no function.

	$$('ul.loginOrRegister').each(function(el){
		el.setStyles({
			'display': 'block'
		});
	});

	// Settings for Multibox
	this.multibox = new MultiBox('multibox', {
		showControls:false,
		useOverlay:true
	});
	
	if($("search_keywords")){
		var mm = new MysticMeg($("search_keywords"), {
			"ajaxUrl":"/product-directory/predictive-search/",
			"listClass":"predictive",
			"leftOffset":-2,
			"topOffset": 25,
			"highlight":false,
			"multipleSelect":false,
			"onSelect": function(v, f, o){
				o.flush();
				o.hideResults();
				if(v.url != ""){
					window.location.href = v.url;
				}
			}				
		});
	}

	/* AJAX Basket Code */
	
	$$(".addtobasket").each(function(el){
		
		el.addEvent("click", function(e){
		
			new Event(e).stop();
			
			new Ajax("/basket/ajax-add/",{
				data: el.form,
				onError: function(){
					if ($("addtobasketError")) {
						$("addtobasketAlert").setStyle("display", "none");
						$("addtobasketError").setStyle("display", "block");
					}
				},
				onComplete: function(response){
					if (response.indexOf("ajax-error") != -1) {
						if ($("addtobasketError")) {
							$("addtobasketAlert").setStyle("display", "none");
							$("addtobasketError").setStyle("display", "block");
						}
					} else {
						if ($("addtobasketAlert")) {
							$("addtobasketError").setStyle("display", "none");
							$("addtobasketAlert").setStyle("display", "block");
						}
						if ($("minibasketContainer")) {
							$("minibasketContainer").setHTML(response);
						}
					}
				}
			}).request();
		//  AG.basketMessage.show("Adding to your basket...");
		});
		
	});
		
});
