var Futureproofed = new Class({
	Implements: Options,
	
	options: {
		menutrigger : null,
		menuitems: null,
		tags: '#objecttags ul li',
		enabled : false
	},
	
	initialize: function(options){
		this.setOptions(options);
		if(this.options.enabled)
		{
			this.tags = $$(this.options.tags);
			if(this.tags != null){
				this._inittags();
			}
			this._initmenu();
		}
	},
	
	_initmenu: function(){
		this.options.menuitems= $$(this.options.menutrigger);
		if(this.options.menuitems != null){
			this.options.menuitems.each(function(el){
				if(el.get('id') != "ask_offer")
				{
					var tmp = el.getParent().getNext();
					if(tmp !=null){
						var slide = new Fx.Slide(tmp,{
							duration: 1000,
						    transition: Fx.Transitions.Quart.easeOut 
						}).show();
					}
					el.addEvent('click',function(e){
							e = new Event(e).stop();
							if(tmp != null){
								slide.toggle();
							}
					});
				}
			});
		}
	},
	
	_inittags: function(){
		var search = $('search');
		this.tags.each(function(el){
			if(el.get('class') != "no_search")
			{
				el.addEvent('click',function(e){
					search.value = e.target.get('html');
					search.getParent().submit();
				});
			}
		});
	}
});

var FutureproofedBanner = new Class({
	Implements: Options,
	
	options:{
		images : '#banner img',
		links: '#banner li a',
		selectedimg : '#banner img.selected',
		selectedlink : '#banner ul li a.selected'
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.images = $$(this.options.images);
		this.links = $$(this.options.links);
		this.selectedimg = $$(this.options.selectedimg);
		this.selectedlink = $$(this.options.selectedlink);
		
		this._initalizeBanner();
	},
	
	_initalizeBanner: function(){
		var _self = this;
		if(this.selectedimg!= ""){
			this.selectedimgid = this.selectedimg.get('id');
		}
		else{
			this.selectedimgid = this.images[0].get('id');
		}
		this.current = 0;

		this.images.each(function(el,index){
			if(el.get('id') != _self.selectedimgid){
				el.setStyle('display','none');
			}
			else{
				_self.current = index;
			}
		});
	
		this.images[this.current].setStyle('display','block');

		if(this.selectedlink != ""){
			this.selectedlink.setStyle('display','block').fade('in');
		}else{
			this.links[0].setStyle('display','block').fade('in');
		}
		
		this.links.each(function(el,index){
			el.set('rel',index);
			el.addEvent('mouseover',function(e){
				e = new Event(e).stop();
				_self.swap(this);
			});
		});
	},
	
	swap: function(el) {
		this.images[this.current].setStyle('display','none').fade('out');
		this.images[el.get('rel')].setStyle('display','block').fade('in');
		this.current = el.get('rel');
	}
});


var FutureTabs = new Class({
	Implements: Options,
	
	options:{
		tabs : '.tabs li',
		container :'.tabcontent',
		sIFR : '.tabcontent h1'
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		var _self = this;
		this.containers = $$(this.options.container);
		this.tabs = $$(this.options.tabs);
		this.current = 0;
		this.tabs.each(function(el,index){
			if(!el.hasClass('current'))
			{
				_self.containers[index].fade('hide');
				_self.containers[index].setStyle('display','none');
				var h1 = _self.containers[index].getElement("h1");
				if(h1 != null)
					h1.setStyle('display','none');
			}else
			{
				_self.containers[index].fade('show');
				var h1 = _self.containers[index].getElement("h1");
				if(h1 != null)
					h1.setStyle('display','block');
			}
			var _index = index;
			var myClickFunction = function(e){
				if(e != null)
					e.stop();
				_self.tabs[_self.current].removeClass('current');
				this.addClass('current');
				_self.containers[_self.current].setStyle('display','none').fade('toggle');
				var h1 = _self.containers[_self.current].getElement("h1");
				if(h1 != null)
					h1.setStyle('display','none').fade('toggle');
				_self.containers[_index].setStyle('display','block').fade(1);
				h1 = _self.containers[_index].getElement("h1");
				if(h1 != null)
					h1.setStyle('display','block').fade(1);
				_self.current = _index; 
			}
			el.addEvent('click', myClickFunction);
		});
	}
});

var FutureMMBox = new Class({

	Implements: Options,
	
	options:{
		images : '.box04 #objectmedia img',
		controlers :'.table2 ul li',
		imagebox : 'objectmedia',
		left: 'but_left',
		right: 'but_right',
		width: 480,
		height: 330
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.images = $$(this.options.images);
		if(this.options.controlers) this.controls = $$(this.options.controlers);
		this.leftbtn = $(this.options.left);
		this.rightbtn = $(this.options.right);
		this.current = 0;
		this.colorarray = new Hash();
		
		this._setUpImages();
		if(this.options.controlers) this._setUpControls();
		
		Milkbox = new Milkbox();
		var but_fullscreen = $('but_fullscreen');
		if (but_fullscreen != null)
			but_fullscreen.addEvent('click',function(e){
				e.stop();
				Milkbox.autoPlay();
			}.bind(this));
		this.intializeSlideShow();
		
		$$('.view_image').each(function(el){
            el.addEvent('click',function(e){
				this.showColorImage(e.target.rel);
                e.stop();
			}.bind(this));
		}.bind(this));
	},
	
	_setUpImages: function(){
		this.data = "{";
		this.images.each(function(el,index){
			if(index > 0)
			{
				el.setStyle('display','none');
			}
			if(index >= 1) this.data += ",";
			this.data += "'"+el.src+"'";
			this.data +=":{'caption' : ";
			this.data += "'"+el.alt+"'";
			this.data +="}";
			if(el.get('rel') != 0)
			{
				this.colorarray.set(el.get('rel'),index);
			}
		},this);
		this.data += "}";
		this.data = JSON.decode(this.data);
		
	},
	
	showColorImage: function(colorid){
		var index = this.colorarray.get(colorid);
		if(index != null){
			this.controls[this.current].removeClass('current');
			this.controls[index].addClass('current');
			this.myShow.go(index,'right');
			//this.myShow.pause();
		}
	},
	
	intializeSlideShow: function(){
		var _self = this;
		this.myShow = new Slideshow(this.options.imagebox, this.data, { 
			captions: false, 
			controller: false, 
			height: _self.heigth, 
			width: _self.width,
			loader: {'animate': ['/admin/templates/images/loader-#.png', 12]}
			});
		if(this.options.controlers){	
			this.myShow.addEvent('moved',function(el){
				_self.controls[_self.current].removeClass('current');
				_self.controls[el].addClass('current');
				_self.current = el;
			});
		}
		Milkbox.setSlideShow(this.myShow);
		$(this.options.imagebox).getElement('img').dispose();
	},

	_setUpControls: function(){
		var _self= this;
		if(this.leftbtn != null)
			this.leftbtn.addEvent('click',function(e){
				e = new Event(e).stop();
				_self.myShow.prev();
			});
		if(this.rightbtn != null)
			this.rightbtn.addEvent('click',function(e){
				e.stop();
				_self.myShow.next();
			});
		if(this.controls != null)
			this.controls.each(function(el,index){
				var _index = index;
				el.addEvent('click',function(e){
					e = new Event(e).stop();
					_self.myShow.go(_index);
				});
			});
	}
});

var FutureproofedProject = new Class({
	Implements: Options,
	
	options:{
		links : '.actionbox_options li',
		wrapper: 'objectwrapper'
		
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.links = $$(this.options.links);
		this.wrapper = $(this.options.wrapper);
		this.filter = [];
		this.links.each(function(el){
			el.addEvent('click',function(e){
				e.preventDefault();
				if(!this.filter.contains(e.target.get('rel').toUpperCase())){
					this.filter.include(e.target.get('rel').toUpperCase());
					el.removeClass('off').addClass('on');
				}else{
					this.filter.erase(e.target.get('rel').toUpperCase());
					el.removeClass('on').addClass('off');
				}
				this.rebuildGrid(e.target.get('rel').toUpperCase());
			}.bind(this));
		}.bind(this));
	},
	
	rebuildGrid : function(href){
		var upperhref = href.toUpperCase();
		this.wrapper.getElements('.object').each(function(el){
			var tmprel = el.get('rel').toUpperCase();
			var show = false;
			if(tmprel != null && this.filter.length > 0){
				this.filter.each(function(el){
					if(tmprel.contains(el,',')){
						show = true;
						return;
					}
				});
			}else{
				show = true;
			}
			if(show){
				el.fade('in').setStyle('display','block');
			}else
			{
				el.fade('out').retrieve('tween').chain(function(){
					el.setStyle('display','none');
				});
			}
			
		}.bind(this));
	}
});

var EcoPass = new Class({
	Implements: Options,
	
	options:{
		hook : '.toggler'
		
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.togglers = $$(this.options.hook);
		this._intializeToggler();
	},
	
	_intializeToggler: function(){
		if(this.togglers != null){
			this.togglers.each(function(el){
				var tmp = el.getNext();
				
				if(tmp !=null){
					
					/**
					var slide = new Fx.Slide(tmp,{
						duration: 1000,
					    transition: Fx.Transitions.Quart.easeOut 
					});
					*/
				}
				
				el.addEvent('click',function(e){
						var el =e.target;
						if(el.get('href') == "#")
						{
							e.stop();
							if(tmp != null)
							{
								if(tmp.getStyle('display') == 'block') 
									tmp.setStyle('display','none').fade('out');
								else 
									tmp.setStyle('display','block').fade('in');
							}
						}
				});
			});
		}
	}
});

window.addEvent('domready',function(){
	//TODO Make sexyAlertBox local??
	Sexy = new SexyAlertBox();
	LOADER = new LoaderBar();
	var sizeopen = 230;
	var sizeclosed = 58;
	var boxes = $$('.site_choice');
	var start = boxes[0];
	var intial = start;
	boxes.each(function(el,i){
		el.set('morph');
		if(el.get("rel") == null)
			el.set("rel" , sizeclosed);
		el.getElement('img').set('morph');
		el.addEvent('mouseover',function(e){
			e.stop();
			start.morph({width: start.get('rel')});
			start.getElement('img').morph({width: start.get('rel')});
			start.setStyle('background-position','bottom left');
			
			el.morph({width: sizeopen});
			el.getElement('img').morph({width: sizeopen});
			el.setStyle('background-position','top left');
				start = el;
		});	
	});
	
	$('content').addEvent('mouseover',function(e){	
		if(start != intial)
		{
			start.morph({width: start.get('rel')});
			start.setStyle('background-position','bottom left');
			start.getElement('img').morph({width: start.get('rel')});
			intial.morph({width: sizeopen});
			intial.setStyle('background-position','top left');
			intial.getElement('img').morph({width: sizeopen});
			start = intial;
		}
	});
	
	$('navbox').addEvent('mouseover',function(e){	
		if(start != intial)
		{
			start.morph({width: start.get('rel')});
			start.setStyle('background-position','bottom left');
			start.getElement('img').morph({width: start.get('rel')});
			intial.morph({width: sizeopen});
			intial.setStyle('background-position','top left');
			intial.getElement('img').morph({width: sizeopen});
			start = intial;
		}
	});

	new futureProductHovers();
		
});

var futureProductHovers = new Class({
	Implements: Options,
	
	options: {
	},
	
	initialize: function(options){
		var images = $$('.object a img');
		//var intros = $$('.object .objectinfo p');
		var effects = {};
		images.setStyle('display','block');
		//intros.setStyle('display','none');
		
		var intros2 = $$('.object .objectdelete');
		intros2.setStyle('display','none');
		$$('.object').each(function(el,i){
			var test1 = el.getElement('.objectdelete');
			var test2 = el.getElement('.objectinfo p');
			var eltween = null;
			if(test1)
				eltween = test1;
			else if(test2)
				eltween = test2;
			
			if(test1)
			{	
			
				el.addEvents({
					'mouseover' : function(e){
						e.stop();
						if(eltween != null)
							eltween.tween('display','block');
					},
					'mouseout' : function(e){
						e.stop();
						if(eltween != null)
							eltween.tween('display','none');
					}
				});
			}
			else
			{
				var myFx = new Fx.Slide(eltween, {
					    duration: 100,
					    link : 'cancel'
				}
				);
				
				
				if(Browser.Engine.webkit)
				{
					var start = true;
					myFx.slideOut();
					eltween.setStyle('display','none');
					el.addEvents({
						'mouseenter' : function(e){
							e.stop();
							if(start)
							{
								eltween.setStyle('display','block');
								start=false;
							}
							(function(){
								myFx.slideIn('vertical').addEvents({
									'start' : function(){eltween.setStyle('display','none');},
									'complete' : function(){eltween.setStyle('display','block');},
									'cancel' : function(){eltween.setStyle('display','none');}
								});
							}).delay(50);
						},
						'mouseleave' : function(e){
							e.stop();
							myFx.cancel();
							(function(){
								myFx.slideOut().addEvents({
									'start' : function(){eltween.setStyle('display','block');},
									'complete' : function(){eltween.setStyle('display','none');},
									'cancel' : function(){eltween.setStyle('display','block');}
								});
							}).delay(50);
						}
					});
				}
				else
				{
					myFx.slideOut();
					el.addEvents({
						'mouseenter' : function(e){
							e.stop();
							myFx.slideIn('vertical');
						},
						'mouseleave' : function(e){
							e.stop();
							myFx.cancel();
							myFx.slideOut();
						}
					});
				}
			}
		});
	}
});

var futureProductImageLoader = new Class({
	Implements: Options,
	
	options: {
		images : '.object img',
		image_loader_img : '/admin/templates/images/ajaxloader_boxes_brownbg.gif',
		image_width : "43px",
		image_height : "11px",
		ignore_class : 'ignore_img',
		ignore_id : null,
		alternate_image : '/admin/templates/images/no_image_big.gif'
	},
	
	initialize: function(options){
		this.setOptions(options);
		LOADER.addLoad();
		var images = $$(this.options.images);
		if(images != null)
		{
			images.each(function(el, index)
			{
				if(this._checkAllowedImage(el))
				{
					LOADER.addLoad();
					el.setStyle("display", "none")
					var img = new Element('img', {
						'src' : this.options.image_loader_img
					});
					//img.setStyle('float', 'right');
					img.setStyles({
						'position' : 'relative',
						'top' : '70px',
						'left': '90px'
					});
					img.setStyle("width", this.options.image_width);
					img.setStyle("height", this.options.image_height);
					el.getParent().adopt(img);
					new Asset.image(el.src, { 
						onerror : function(){
							el.setStyle("display", "").fade('in');
							el.set('src', this.options.alternate_image);
							img.destroy();
							LOADER.removeLoad();
						}.bind(this),
						onload : function(){
							el.setStyle("display", "").fade('in');
							img.destroy();
							LOADER.removeLoad();
						}
					});
				}
			}.bind(this));
		}
		LOADER.removeLoad();
	},
	
	_checkAllowedImage : function(el)
	{
		if(this.options.ignore_class != null)
		{
				if(el.get('class') == this.options.ignore_class)
				{
					return false;
				}
		}
		if(this.options.ignore_id != null)
		{
				if(el.get('id') == this.options.ignore_id)
					return false;
		}
		return true;
	}
});

var FutureProducts = new Class({
	Implements: Options,
	
	options: {
		asctrigger:'ascending_btn',
		desctrigger:'decscending_btn',
		viewalltrigger:'viewall_btn',
		view30trigger:'view30_btn',
		view60trigger:'view60_btn',
		productselement : 'objectwrapper',
		products: '#objectwrapper div',
		hidden_products_div:'objectwrapper_hidden',
		next_page_div : 'next_page_button',
		prev_page_div : 'prev_page_button',
		currentpage : null,
		totalpages : null,
		pagelimit : null,
		totalproducts : null,
		category_selection_buttons : 'sub_cat_buttons',
		page_category :null,
		sort : true
	},
	
	initialize: function(options){
		this.setOptions(options);
		LOADER.addLoad();
		
		this.productel = $(this.options.productselement);
		this.products = $$(this.options.products);
		this.hidden_div = $(this.options.hidden_products_div);
		this.category_selection_buttons = $(this.options.category_selection_buttons);
		this.sorting = "asc";
		this.limit = -1;
		this.page = 1;
		this.total = 0;
		this.category = "";
		if(this.options.page_category=="|" || this.options.page_category=="")
			this.options.page_category = null;
		
		if(this.productel != null && this.products != null){
			this.productshash = new Hash();
			
			/*Paginate*/
			this.next_page_div = $(this.options.next_page_div);
			if(this.next_page_div != null)
			{
				this.next_page_div.getElement(".objectinfo #next_button").addEvent("click", this.pageNext.bind(this))
			}
			
			this.prev_page_div = $(this.options.prev_page_div);
			if(this.prev_page_div != null)
			{
				this.prev_page_div.getElement(".objectinfo #prev_button").addEvent("click", this.pagePrevious.bind(this))
			}
			
			this._initproducts();
			
			/*Triggers*/
			this.categoriesbtns = new Hash();
			if(this.category_selection_buttons != null)
			{
				$each(this.category_selection_buttons.getElements("li a"), function(el){
					this.categoriesbtns.set(el, el);
					el.addEvent("click", this.categoryTriggered.bind(this));
				}.bind(this));
			}
			
			//Asc/Desc triggers
			this.asctrigger = $(this.options.asctrigger);
			if(this.asctrigger != null)
			{
				this.asctrigger.addEvent("click", this.ascTriggered.bind(this));
			}
			this.desctrigger = $(this.options.desctrigger);
			if(this.desctrigger != null)
			{
				this.desctrigger.addEvent("click", this.descTriggered.bind(this));
			}
			//Paging triggers
			this.viewalltrigger = $(this.options.viewalltrigger);
			if(this.viewalltrigger != null)
			{
				this.viewalltrigger.addEvent("click", this.viewallTriggered.bind(this));
			}
			this.view30trigger = $(this.options.view30trigger);
			if(this.view30trigger != null)
			{
				this.view30trigger.addEvent("click", this.view30Triggered.bind(this));
			}
			this.view60trigger = $(this.options.view60trigger);
			if(this.view60trigger != null)
			{
				this.view60trigger.addEvent("click", this.view60Triggered.bind(this));
			}
			//Refresh the list for the first time
			//this._refreshList();
			LOADER.removeLoad();
		}
	},
	
	_initproducts : function(){
		LOADER.addLoad();
		var tmp = new Hash();
		this.total = 0;
		$each(this.products, function(el, index){
			if(el.get("rel") != null)
			{
				this.total++;
				var tmp2 = el.get("rel").toUpperCase().split("|");
				var name = tmp2[0];
				var obj = new Hash();
				obj.element = el;
				obj.category = tmp2[1];
				tmp.set(name, obj)
			}
		}.bind(this));
		if(this.options.sort){
			var arr = tmp.getKeys();
			arr.sort();
			$each(arr, function(value, key){
				this.productshash.set(value, tmp.get(value));
			}.bind(this));
		}
		this._refreshList();
		LOADER.removeLoad();
	},
	
	categoryTriggered : function(event)
	{
		if(Browser.Engine.trident) //IE Fix
			event.target = $(event.target);
		LOADER.addLoad();
		event.stop();
		this.categoriesbtns.each(function(el, index){
			el.getParent().set("class", "off");
		});
		var el = event.target;
		el.getParent().set("class", "on");
		this.setCategory(el.get('rel'));
		LOADER.removeLoad();
	},
	
	ascTriggered : function(event){
		LOADER.addLoad();
		event.stop();
		this.sorting = "asc";
		this.desctrigger.getParent().set("class", "off");
		this.asctrigger.getParent().set("class", "on");
		this.page = 1;
		this._refreshList();
		LOADER.removeLoad();
	},
	
	descTriggered : function(event){
		LOADER.addLoad();
		event.stop();
		this.sorting = "desc";
		this.desctrigger.getParent().set("class", "on");
		this.asctrigger.getParent().set("class", "off");
		this.page = 1;
		this._refreshList();
		LOADER.removeLoad();
	},
	
	viewallTriggered : function(event){
		LOADER.addLoad();
		event.stop();
		this.view30trigger.getParent().set("class", "off");
		this.view60trigger.getParent().set("class", "off");
		this.viewalltrigger.getParent().set("class", "on");
		this.categoriesbtns.each(function(el, index){
			el.getParent().set("class", "off");
		});
		this.category = "";
		this.limit = -1;
		this.page = 1;
		this._refreshList();
		LOADER.removeLoad();
	},
	
	view30Triggered : function(event){
		LOADER.addLoad();
		event.stop();
		this.view30trigger.getParent().set("class", "on");
		this.view60trigger.getParent().set("class", "off");
		this.viewalltrigger.getParent().set("class", "off");
		this.limit = 30;
		this.page = 1;
		this._refreshList();
		LOADER.removeLoad();
	},
	
	view60Triggered : function(event){
		LOADER.addLoad();
		event.stop();
		this.view30trigger.getParent().set("class", "off");
		this.view60trigger.getParent().set("class", "on");
		this.viewalltrigger.getParent().set("class", "off");
		this.limit = 60;
		this.page = 1;
		this._refreshList();
		LOADER.removeLoad();
	},
	
	pageNext : function(event){
		LOADER.addLoad();
		this.page++;
		if(Math.ceil(this.total/this.limit) < this.page)
		{
			var url = "/en/index.php/fpshop/all_products/";
			if(this.options.page_category != null)
				url += "category/" +this.options.page_category + "/";
			this.options.currentpage++;
			url += "Page" + this.options.currentpage;
			new Request.HTML({
				onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
					this.clearProducts();
					this.productel.set("html", responseHTML).find('in');
					this.products = this.productel.getElements("div");
					this.page = 1;
					this._initproducts();
					LOADER.removeLoad();
				}.bind(this),
				evalResponse : true
			}).get(url);
		}
		else
		{
			this._refreshList();
			LOADER.removeLoad();
		}
	},
	
	pagePrevious : function(event){
		LOADER.addLoad();
		this.page--;
		if(this.page < 1)
		{
			this.clearProducts();
			var url = "/en/index.php/fpshop/all_products/";
			if(this.options.page_category != null)
				url += "category/" +this.options.page_category + "/";
			this.options.currentpage--;
			url += "Page" + this.options.currentpage;
			new Request.HTML({
				onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
					this.clearProducts();
					this.productel.set("html", responseHTML).fade('in');
					this.products = this.productel.getElements("div");
					this.page = 1;
					this._initproducts();
					LOADER.removeLoad();
				}.bind(this),
				evalResponse : true
			}).get(url);
		}
		else
		{
			this._refreshList();
			LOADER.removeLoad();
		}
	},

	setCategory : function(category){
		LOADER.addLoad();
		if(category != null)
		{
			if(this.category != category.toUpperCase())
				this.category = category.toUpperCase();
			else
				this.category = "";
			this.page = 1;
			this._refreshList();
		}
		LOADER.removeLoad();
	},
	
	clearProducts : function()
	{
		LOADER.addLoad();
		this.productshash.each(function(value, key){
			value.element.destroy().fade('out');
		}.bind(this));
		this.productshash = new Hash();
		LOADER.removeLoad();
	},
	
	_refreshList : function(){
		LOADER.addLoad();
		if(this.options.sort){
			$each(this.productel.getElements(".object"), function(el, key)
			{
				if(this.hidden_div != null)
				{
						this.hidden_div.adopt(el);	
				}
				else
				{
					el.setStyle("display", "none").fade('out');
				}
			}.bind(this));
			var i = 0;
			this.productshash.each(function(value, key){
				if(this.category == "" || this.category == value.category)
				{
					i++;
					if(this.limit == -1)
					{
						//show All
						if(this.hidden_div != null)
						{
							if(this.sorting == "asc")
								this.productel.adopt(value.element);
							else
							{
								value.element.inject(this.productel, 'top');
							}
						}
						else
						{
							this.value.element.setStyle("display", "block").fade('in');
						}
					}
					else
					{
						if(this.sorting == "asc" && i > (this.page-1) * this.limit && i <= this.page * this.limit)
						{
							if(this.hidden_div != null)
							{
								this.productel.adopt(value.element);
							}
							else
							{
								this.value.element.setStyle("display", "block").fade('in');
							}
						}
						else if(this.sorting == "desc" && i <= this.total - ((this.page-1) * this.limit)&& i > this.total - (this.page * this.limit) )
						{
							if(this.hidden_div != null)
							{
								value.element.inject(this.productel, 'top');
							}
							else
							{
								this.element.value.setStyle("display", "block").fade('in');
							}
						}
					}
				}
			}.bind(this));
		}
		if(this.limit != -1 || this.options.pagelimit != -1)
		{
			//Check if a previous and/or next button are needed
			if(this.page > 1 || this.options.currentpage > 1)
			{
				this.prev_page_div.inject(this.productel, 'top');
				var limit = 0;
				if(this.limit != -1)
					limit = this.limit;
				else
					limit = this.options.pagelimit;
		
				this.prev_page_div.getElement("#prev_start_limit").set('html', limit);
				if(this.limit != -1)
					this.prev_page_div.getElement("#prev_start_elements").set('html',((((this.options.currentpage - 1)*this.options.pagelimit ) + (this.page-1) * this.limit)+1 ));
				else
					this.prev_page_div.getElement("#prev_start_elements").set('html',((((this.options.currentpage - 1)*this.options.pagelimit )+1 )));
				if( this.limit != -1 && this.page * this.limit < this.total)
					this.prev_page_div.getElement("#prev_end_elements").set('html', this. page* this.limit);
				else
					this.prev_page_div.getElement("#prev_end_elements").set('html', ((this.options.currentpage - 1)*this.options.pagelimit) + this.total);
				this.prev_page_div.getElement("#prev_total_elements").set('html', this.options.totalproducts);
			}
			if((this.limit != -1 && this.total > this.page * this.limit) || this.options.currentpage < this.options.totalpages)
			{
				var limit = 0;
				if(this.limit != -1)
					limit = this.limit;
				else
					limit = this.options.pagelimit;
				
				this.next_page_div.inject(this.productel);
				if((this.limit != -1 && (this.page + 1) * this.limit < this.total ))
					this.next_page_div.getElement("#next_start_limit").set('html', limit);
				else if(this.limit != -1)
					this.next_page_div.getElement("#next_start_limit").set('html', (this.total-(this.page * this.limit )));
				else
					this.next_page_div.getElement("#next_start_limit").set('html', limit);
				this.next_page_div.getElement("#next_start_elements").set('html',((((this.options.currentpage - 1)*this.options.pagelimit ) + (this.page-1) * this.limit)+1 ));
				if(this.limit != -1 &&  this.page * this.limit < this.total)
					this.next_page_div.getElement("#next_end_elements").set('html', this. page* this.limit);
				else
					this.next_page_div.getElement("#next_end_elements").set('html', ((this.options.currentpage - 1)*this.options.pagelimit) + this.total);
				this.next_page_div.getElement("#next_total_elements").set('html',  this.options.totalproducts);
			}
		}
		LOADER.removeLoad();
	}
});

var FutureMiniCart = new Class({
	Implements: Options,
	
	options: {
		shoppingitems : 'shoppingitems',
		shoppingcount : 'shoppingcount',
		shoppingcart : 'actionbox_shoppingcart',
		responsebox : 'actionbox_options3',
		shoppingcartsmall : ' #small_cart',
		shoppingcartlarge : ' #full_cart',
		shoppingbox : 'actionbox_sliders',
		error_div : 'error_cart',
		checkout_button_text : "checkout",
		overview_button_open_text : "Open Overzicht",
		overview_button_close_text : "Sluit Overzicht",
		checkout_button_url : '/index.php/checkout/',
		nav_link_div : '#actionbox_nav ul',
		checkout_button_id : 'checkoutid',
		overview_button_id : 'overviewid',
		use_image_loader_on_refresh : false,
		product_container : 'actionbox_sliders',
		product_blocks : '#actionbox_sliders .object',
		product_previous_button : '#arrows_shoppingcart_left',
		product_next_button:  '#arrows_shoppingcart_right',
		shoppingboxparent : 'shopping_box',
		reload_future_hovers : true, 
		onDelete : null,
                language : 'nl'
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.shoppingitems = $(this.options.shoppingitems);
		this.shoppingitems2 = $(this.options.shoppingcount);
		this.shoppingbox=$(this.options.shoppingbox);
		this.nav_link_div = $$(this.options.nav_link_div)[0];
		this.product_next_button = $$(this.options.product_next_button)[0];
		this.product_previous_button = $$(this.options.product_previous_button)[0];
		this.shoppingboxparent = $(this.options.shoppingboxparent);
		this.checkBox();
		this.onDelete = this.options.onDelete;
		this.product_container = $(this.options.product_container);
		this.register_overview_btn();
                this.lang = this.options.language;
	},
	
	register_overview_btn : function()
	{
		this.overview_button = $(this.options.overview_button_id);
		if(this.overview_button != null)
		{
			if(this.shoppingbox != null)
			{
				if(this.shoppingbox.getStyle("display") == "none")
				{
					this.overview_button.getElement("a").set('html', this.options.overview_button_open_text);
				}
				else
				{
					this.overview_button.getElement("a").set('html', this.options.overview_button_close_text);
				}
			}
			this.overview_button.addEvent("click", function(event){
				event.stop();
				if(this.shoppingbox != null)
				{
					if(this.shoppingbox.getStyle("display") == "none")
					{
						this.shoppingbox.setStyle("display", "block");
						this.overview_button.getElement("a").set('html', this.options.overview_button_close_text);
					}
					else
					{
						this.shoppingbox.setStyle("display", "none");
						this.overview_button.getElement("a").set('html', this.options.overview_button_open_text);
					}
				}
			}.bind(this));
		}
	},
	
	checkBox : function ()
	{
		if(this.shoppingbox != null)
		{
			if(this.shoppingbox.get('html') == "\n" || encodeURI(this.shoppingbox.get('html')) == "%09")
			{
				this.shoppingboxparent.setStyle('display', 'none').fade('out');
			}
			else
			{
				this.shoppingboxparent.setStyle('display', 'block').fade('in');
			}
		}
	},
	
	refresh_IconMenu : function()
	{
		LOADER.addLoad();
		var myMenu = new IconMenu({
			//the list that contains all the 'icons'
			container: this.options.product_container, 
			//the images in the icons
			backScrollButtons: this.options.product_previous_button,
			forwardScrollButtons: this.options.product_next_button,
			onScroll : function(index, newrange){
							if(index >= 6)
							{
								if(this.product_previous_button)
								{
									this.product_previous_button.setStyle("display", "block").fade('in');
								}
							}
							else
							{
								if(this.product_previous_button)
								{
									this.product_previous_button.setStyle("display", "none").fade('out');
								}
							}
							if(newrange.end - newrange.start > 6 || newrange.end < myMenu.getIconPositions().length)
							{
								if(this.product_next_button)
								{
									this.product_next_button.setStyle("display", "block").fade('in');
								}
							}
							else
							{
								if(this.product_next_button)
								{
									this.product_next_button.setStyle("display", "none").fade('out');
								}
							}
						}.bind(this),
			images: $$(this.options.product_blocks)
		});
		LOADER.removeLoad();
	},
	
	register_events : function ()
	{
		LOADER.addLoad();
		var elements = $$('#'+ this.options.shoppingbox +' .object .objectdelete a');
		$each(elements, function(el, index)
		{
			el.addEvent('click', function(event)
			{
				if(Browser.Engine.trident) //IE Fix
					event.target = $(event.target);
				LOADER.addLoad();
				event.stop();
				var target = event.target;
				var arr = target.getParent().get('id').split("|");
				var id = arr[0];
				var colorid = arr[1];
				var measureid = arr[2];
				var nostock = arr[3];
				new Request.HTML({
					url: '/' + this.lang + '/index.php/fpshop/cart_top_bar/',
					onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
						if(this.shoppingbox != null)
						{
							if(responseHTML == "\n" || encodeURI(responseHTML) == "%09")
							{
								this.shoppingbox.empty();
								this.shoppingboxparent.setStyle('display', 'none').fade('out');
								if(this.nav_link_div != null)
								{
									var el = this.nav_link_div.getElementById(this.options.checkout_button_id);
									if(el != null)
										el.destroy();
								}
								if(this.overview_button != null)
									this.overview_button.destroy();
							}
							else
							{
								this.shoppingbox.set('html',responseHTML);
								this.shoppingboxparent.setStyle('display', 'block').fade('in');
								if(this.nav_link_div != null)
								{
									var el = this.nav_link_div.getElementById(this.options.checkout_button_id);
									if(el == null)
									{
										var el =new Element("li",{
											'id' : this.options.checkout_button_id
										});
										var ela = new Element("a", {
											'href' : this.options.checkout_button_url,
											'html' : this.options.checkout_button_text
										})
										el.adopt(ela);
										this.nav_link_div.adopt(el);
										var el =new Element("li",{
											'id' : this.options.overview_button_id
										});
										var ela = new Element("a", {
											'href' : "#",
											'html' : this.options.overview_button_close_text
										})
										el.adopt(ela);
										this.nav_link_div.adopt(el);
										this.register_overview_btn();
									}
								}
							}
							if(this.options.use_image_loader_on_refresh)
								new futureProductImageLoader();
						}
						if(this.onDelete)
							this.onDelete();
						this.register_events();
						this.refreshCount();
						this.checkForCartError();
						LOADER.removeLoad();
					}.bind(this)
				}).post({
					'action' : 'REMOVE', 'productid' : id, 'measures' : measureid, 'colors' : colorid, 'nostock' : nostock
				});
			}.bind(this));
		}.bind(this));
		LOADER.removeLoad();
		this.refresh_IconMenu();
		if(this.options.reload_future_hovers)
			new futureProductHovers();
	},

	addCartInfo : function ()
	{
		LOADER.addLoad();
		new Request.HTML({
			onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
				if(this.shoppingbox != null)
				{
					if(responseHTML == "\n" || encodeURI(responseHTML) == "%09")
					{
						this.shoppingbox.empty();
						this.shoppingboxparent.setStyle('display', 'none').fade('out');
						if(this.nav_link_div != null)
						{
							var el = this.nav_link_div.getElementById(this.options.checkout_button_id);
							if(el != null)
								el.destroy();
						}
						if(this.overview_button != null)
							this.overview_button.destroy();
					}
					else
					{
						this.shoppingbox.set('html',responseHTML);
						this.shoppingboxparent.setStyle('display', 'block').fade('in');
						if(this.nav_link_div != null)
						{
							var el = this.nav_link_div.getElementById(this.options.checkout_button_id);
							if(el == null)
							{
								var el =new Element("li",{
									'id' : this.options.checkout_button_id
								});
								var ela = new Element("a", {
									'href' : this.options.checkout_button_url,
									'html' : this.options.checkout_button_text
								})
								el.adopt(ela);
								this.nav_link_div.adopt(el);
								var el =new Element("li",{
									'id' : this.options.overview_button_id
								});
								var ela = new Element("a", {
									'href' : "#",
									'html' : this.options.overview_button_close_text
								})
								el.adopt(ela);
								this.nav_link_div.adopt(el);
								this.register_overview_btn();
							}
						}
					}
					if(this.options.use_image_loader_on_refresh)
						new futureProductImageLoader();
				}
				
				this.register_events();
				this.refreshCount();
				this.checkForCartError();
				LOADER.removeLoad();
			}.bind(this)
			}).get('/' + this.lang + '/index.php/fpshop/cart_top_bar/');
	},
	
	postAndGetCartInfo : function(postinfo)
	{
		LOADER.addLoad();
		new Request.HTML({
			url: '/' + this.lang + '/index.php/fpshop/cart_top_bar/',
			onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
				if(this.shoppingbox != null)
				{
					if(responseHTML == "\n" || encodeURI(responseHTML) == "%09")
					{
						this.shoppingbox.empty();
						this.shoppingboxparent.setStyle('display', 'none').fade('out');
						if(this.nav_link_div != null)
						{
							var el = this.nav_link_div.getElementById(this.options.checkout_button_id);
							if(el != null)
								el.destroy();
						}
						if(this.overview_button != null)
							this.overview_button.destroy();
					}
					else
					{
						this.shoppingbox.set('html',responseHTML);
						this.shoppingboxparent.setStyle('display', 'block').fade('in');
						if(this.nav_link_div != null)
						{
							var el = this.nav_link_div.getElementById(this.options.checkout_button_id);
							if(el == null)
							{
								var el =new Element("li",{
									'id' : this.options.checkout_button_id
								});
								var ela = new Element("a", {
									'href' : this.options.checkout_button_url,
									'html' : this.options.checkout_button_text
								})
								el.adopt(ela);
								this.nav_link_div.adopt(el);
								
								var el =new Element("li",{
									'id' : this.options.overview_button_id
								});
								var ela = new Element("a", {
									'href' : "#",
									'html' : this.options.overview_button_close_text
								})
								el.adopt(ela);
								this.nav_link_div.adopt(el);
								this.register_overview_btn();
							}
						}
					}
					if(this.options.use_image_loader_on_refresh)
						new futureProductImageLoader();
				}
				
				this.register_events();
				this.refreshCount();
				this.checkForCartError();
				LOADER.removeLoad();
			}.bind(this)
		}).post(postinfo);
	},
	
	checkForCartError : function()
	{
		LOADER.addLoad();
		var errordiv = $(this.options.error_div);
		if(errordiv != null)
		{
			Sexy.error('<h1>Error</h1><p>'+errordiv.get("html")+'</p>');
		}
		LOADER.removeLoad();
	},
	
	refreshCount : function()
	{
		LOADER.addLoad();
		new Request.HTML({
			onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
				if(this.shoppingitems)
				{
					this.shoppingitems.set('html',responseHTML).fade('in');
					var test = '' + responseHTML;
					if(test.test("^0"))
					{
						this.shoppingitems.getParent().getParent().getParent().set('class', "");
					}
					else
					{
						this.shoppingitems.getParent().getParent().getParent().set('class', "accent");
					}
				}
				if(this.shoppingitems2)
					this.shoppingitems2.set('html',responseHTML).fade('in');
				this.check_for_amount();
				LOADER.removeLoad();
			}.bind(this)
			}).get('/' + this.lang + '/index.php/fpshop/cart_count/');
	},
	
	check_for_amount : function()
	{
		var prijs = 0;
		var elements = $$('#'+ this.options.shoppingbox +' .object');
		prijs = elements.length;
		if(prijs == 0)
		{
			if(this.shoppingboxparent)
			{
				this.shoppingboxparent.setStyle("display","none");
			}
			if(this.product_next_button)
			{
				this.product_next_button.setStyle("display", "none").fade('out');
			}
			if(this.product_previous_button)
			{
				this.product_previous_button.setStyle("display", "none").fade('out');
			}
		}
		else 
		{
			if(this.product_previous_button)
			{
				this.product_previous_button.setStyle("display", "none").fade('out');
			}
			if(parseInt(prijs) > 6)
			{
				if(this.product_next_button)
				{
					this.product_next_button.setStyle("display", "block").fade('in');
				}
			}
			else
			{
				if(this.product_next_button)
				{
					this.product_next_button.setStyle("display", "none").fade('out');
				}
			}
		}
		if(this.product_container)
			this.product_container.setStyle('left', "0px");
	}
});

var FutureProductTabs = new Class({
	Implements: Options,
	
	options: {
		action_options:	'actionbox',
		action_ordersort:	'actionbox_order_sort',
		action_cart:		'actionbox_shoppingcart',
		action_history:	'actionbox_history',
		action_offer:		'actionbox_offer',
		action_login:		'actionbox_login',
		action_myaccount:	'actionbox_myaccount',
		actionbox_toggle:'actionbox_toggle',
		actionbox_tabs :	'.actionbox_tabs a',
		actionbox_tabs_class :	'actionbox_tabs',
		shopping_cart_header_button : 'shopping_top_cart_btn',
		offerte_btn : 'offerte_btn',
		disable_hide : false
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.action_options = $(this.options.action_options);
		this.action_ordersort = $(this.options.action_ordersort);
		this.action_cart = $(this.options.action_cart);
		this.action_offer = $(this.options.action_offer);
		this.action_history = $(this.options.action_history);
		this.action_login = $(this.options.action_login);
		this.action_myaccount = $(this.options.action_myaccount);
		this.actionbox_toggle = $$("#"+this.options.actionbox_toggle+" a");
		this.actionbox_tabs = $$(this.options.actionbox_tabs);
		this.shopping_cart_header_button = $(this.options.shopping_cart_header_button);
		this.offerte_btn = $(this.options.offerte_btn);
		
		
		var toggle = function(event, tab){
			event.stop();
			if(this.action_options != null && !this.options.disable_hide)
			{
				if(tab == null)
				{
					var myFx = new Fx.Scroll(window,{
							offset: {'x': 0, 'y': -50}
						}).toElement(this.action_options);
				
		    		if(this.action_options.getStyle('display') == 'block')
		    		{
		    			this.action_options.fade('out').setStyle('display','none');
		    		}
		    		else
		    		{	
		    			this.action_options.setStyle('display','block').fade('in');
		    			this.openCartTabAction();
		    		}
	    		}
	    		else if(tab == "offer")
	    		{
	    			var myFx = new Fx.Scroll(window,{
							offset: {'x': 0, 'y': -50}
						}).toElement(this.action_options);
	    		
	    			if(this.action_options.getStyle('display') == 'none')
		    		{
		    			this.action_options.setStyle('display','block').fade('in');
		    		}
		    		
		    		this.openOfferTabAction();
	    		}
			}
		}.bind(this);
		
		if(this.actionbox_toggle != null)
		{
			this.actionbox_toggle.addEvent('click' , toggle);
		}
		
		if(this.shopping_cart_header_button != null )
		{
			this.shopping_cart_header_button.addEvent('click', toggle);
		}
		
		if(this.action_ordersort != null || this.action_cart != null || this.action_history != null || this.action_offer != null || this.action_myaccount != null)
		{
			this.openMyaccountTabAction = function(){
				if(this.resetTabClasses)
					this.resetTabClasses();
				if(this.parents && this.parents.get("myaccount_tab"))
					this.parents.get("myaccount_tab").set('class','current');
				if(this.action_ordersort != null)
    				this.action_ordersort.setStyle('display','none').fade('out');
    			if(this.action_cart != null)
					this.action_cart.setStyle('display','none').fade('out');
				if(this.action_history != null)
					this.action_history.setStyle('display','none').fade('out');
				if(this.action_offer != null)
					this.action_offer.setStyle('display','none').fade('out');
				if(this.action_login != null)
					this.action_login.setStyle('display','none').fade('out');
    			if(this.action_myaccount != null)
					this.action_myaccount.setStyle('display','block').fade('in');
			}.bind(this);
		
			this.openHistoryTabAction = function(){
				if(this.resetTabClasses)
					this.resetTabClasses();
				if(this.parents && this.parents.get("history_tab"))
					this.parents.get("history_tab").set('class','current');
				if(this.action_ordersort != null)
    				this.action_ordersort.setStyle('display','none').fade('out');
    			if(this.action_cart != null)
					this.action_cart.setStyle('display','none').fade('out');
				if(this.action_history != null)
					this.action_history.setStyle('display','block').fade('in');
    			if(this.action_offer != null)
					this.action_offer.setStyle('display','none').fade('out');
				if(this.action_myaccount != null)
					this.action_myaccount.setStyle('display','none').fade('out');
				if(this.action_login != null)
					this.action_login.setStyle('display','none').fade('out');
			}.bind(this);
			
			this.openCartTabAction = function(){
				if(this.resetTabClasses)
					this.resetTabClasses();
				if(this.parents && this.parents.get("cart_tab"))
				{
					this.parents.get("cart_tab").set('class','current');
				}
				if(this.action_ordersort != null)
    				this.action_ordersort.setStyle('display','none').fade('out');
    			if(this.action_cart != null)
					this.action_cart.setStyle('display','block').fade('in');
				if(this.action_history != null)
					this.action_history.setStyle('display','none').fade('out');
    			if(this.action_offer != null)
					this.action_offer.setStyle('display','none').fade('out');
				if(this.action_myaccount != null)
					this.action_myaccount.setStyle('display','none').fade('out');
				if(this.action_login != null)
					this.action_login.setStyle('display','none').fade('out');
			}.bind(this);
			
			this.openOfferTabAction = function(){
				if(this.resetTabClasses)
					this.resetTabClasses();
				if(this.parents && this.parents.get("offer_tab"))
					this.parents.get("offer_tab").set('class','current');
				if(this.action_ordersort != null)
    				this.action_ordersort.setStyle('display','none').fade('out');
    			if(this.action_cart != null)
					this.action_cart.setStyle('display','none').fade('out');
				if(this.action_history != null)
					this.action_history.setStyle('display','none').fade('out');
    			if(this.action_offer != null)
					this.action_offer.setStyle('display','block').fade('in');
				if(this.action_myaccount != null)
					this.action_myaccount.setStyle('display','none').fade('out');
				if(this.action_login != null)
					this.action_login.setStyle('display','none').fade('out');
			}.bind(this);
			
			this.openSortTabAction = function(){
				if(this.resetTabClasses)
					this.resetTabClasses();
				if(this.parents && this.parents.get("sort_tab"))
					this.parents.get("sort_tab").set('class','current');
				if(this.action_ordersort != null)
					this.action_ordersort.setStyle('display','block').fade('in');
				if(this.action_cart != null)
					this.action_cart.setStyle('display','none').fade('out');
				if(this.action_history != null)
					this.action_history.setStyle('display','none').fade('out');
    			if(this.action_offer != null)
					this.action_offer.setStyle('display','none').fade('out');
				if(this.action_myaccount != null)
					this.action_myaccount.setStyle('display','none').fade('out');
				if(this.action_login != null)
					this.action_login.setStyle('display','none').fade('out');
			}.bind(this);
			
			this.openLoginTabAction = function(){
				if(this.resetTabClasses)
					this.resetTabClasses();
				if(this.parents && this.parents.get("login_tab"))
					this.parents.get("login_tab").set('class','current');
				if(this.action_ordersort != null)
					this.action_ordersort.setStyle('display','none').fade('out');
				if(this.action_cart != null)
					this.action_cart.setStyle('display','none').fade('out');
				if(this.action_history != null)
					this.action_history.setStyle('display','none').fade('out');
    			if(this.action_offer != null)
					this.action_offer.setStyle('display','none').fade('out');
				if(this.action_myaccount != null)
					this.action_myaccount.setStyle('display','none').fade('out');
				if(this.action_login != null)
					this.action_login.setStyle('display','block').fade('in');
			}.bind(this);
			
			if(this.offerte_btn)
			{
				this.offerte_btn.addEvent('click', function(event){
										toggle(event,"offer");
									});
			}
		}
		
		if(this.actionbox_tabs != null)
		{
			this.parents = new Hash();
			this.resetTabClasses = function()
			{
				this.parents.each(function(el){
					el.set("class", "");
				});
			}
			
			this.actionbox_tabs.each(function(el){
				if(el.getParent().get('rel') != null)
					this.parents.set(el.getParent().get('rel'), el.getParent());
					
				//hide the history tab for now
				if(el.getParent().get('rel') == 'history_tab')
				{
					el.getParent().setStyle('display','none');
				}
				
	    		el.addEvent(
	    			'click' , function(event){
	    				if(Browser.Engine.trident) //IE Fix
							event.target = $(event.target);
	    				LOADER.addLoad();
	    				var element=event.target;
	    				var parent=element.getParent();
	    				if(parent.get('rel') == null)
	    					return;
			    		event.stop();
			    		if(parent.get('class') == 'current')
			    		{
			    			//do nothing already selected
			    		}
			    		else
			    		{
			    			if(parent.get('rel') == "sort_tab")
			    			{
			    				if(this.openSortTabAction)
			    					this.openSortTabAction();
				    		}
				    		else if(parent.get('rel') == "myaccount_tab")
				    		{
				    			if(this.openMyaccountTabAction)
				    				this.openMyaccountTabAction();
				    		}
				    		else if(parent.get('rel') == "cart_tab")
				    		{
				    			if(this.openCartTabAction)
				    				this.openCartTabAction();
				    		}
				    		else if(parent.get('rel') == "history_tab")
				    		{
				    			if(this.openHistoryTabAction)
				    				this.openHistoryTabAction();
				    		}
				    		else if(parent.get('rel') == "offer_tab")
				    		{
				    			if(this.openOfferTabAction)
				    				this.openOfferTabAction();
				    		}
				    		else if(parent.get('rel') == "login_tab")
				    		{
				    			if(this.openLoginTabAction)
				    				this.openLoginTabAction();
				    		}
				    		else if(parent.get('rel') == "logout")
							{
				    			LOADER.addLoad();
				    			this.resetTabClasses();
				    			new Request.HTML({
									onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
										var tmp = new Element('div');
										tmp.set('html', responseHTML);
										var infoparent = tmp.getElement("ul");
										var info = "";
										if(infoparent != null)
										{
											var infoel = infoparent.getElements("li");
											if(infoel != null)
											{
												infoel.each(function(el)
												{
													info += "<br/>" + el.get("html");
												});
											}
										}
										if(responseHTML.test("Error"))
										{
											Sexy.alert(info);
										}
										else
										{
											Sexy.messageBox('alert',"U bent succesvol uitgelogd.",{onComplete : function(){window.location.reload();}});
										}
										tmp.destroy();
										LOADER.removeLoad();
									}.bind(this)
								}).get("/index.php?ACT=10");	
							}
				    	}
			    		LOADER.removeLoad();
	    			}.bind(this))
				}.bind(this));
		}
	}	
	
});

var LoaderBar = new Class({
	Implements: Options,
	
	options: {
		loader_bar:	'loading_bar'
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.loader  = $(this.options.loader_bar);
		this.count = 0;
	},
	
	addLoad : function(){
		if(this.loader == null) return;
		if(this.count == 0)
			this.loader.setStyle("display", "block").fade('in');
		this.count++;
		
	},
	
	removeLoad : function(){
		if(this.loader == null) return;
		if(this.count ==1)
			this.loader.setStyle("display", "none").fade('out');
		this.count--;
	}
	
});

var FutureCheckForm = new Class({
	Implements: Options,
	
	options: {
		fields_to_check: null,
		assoc_fields: null,
		passfields_to_check: null,
		non_error_img: null,
		error_img: null,
		error_class: 'error',
		next_btns : '.actionbox_options2 div a.next_step',
		login_form : 'login_member_form',
		register_form : 'register_member_form',
		update_form : null,
		update_form_submit : null,
		shipping_form : null,
		shipping_form_submit : null,
		shipping_copy : null,
		logged_in : 0,
		no_login_register : "U heeft geen login of registratie informatie ingevoerd.",
		no_login : "U heeft geen login informatie ingevoerd.",
		main_div : null,//"register_content",
		toggler_div : null,//"#register_content div.actionbox_options2",
		accordion_div : null,//"#register_content div.actionbox_options4",
		forgoth_pass_submit : null,
		forgoth_pass_form : null,
		forgoth_pass_field : "forgoth_email",
		emailregx : /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
		forgoth_pass_reset_info : "Er is U een mail gestuurd met verdere informatie<br/> omtrent uw login gegevens.",
		forgoth_info_wrong_format : "Het ingevulde e-mail adres is in het verkeerde formaat!",
		forgoth_info_popup_msg : "Uw e-mail adres:",
		forgoth_error_popup_msg : "Het ingegeven e-mail adres bestaat niet!",
		forgoth_cancel_btn : "Annuleer",
		forgoth_submit_btn : "Verstuur",
		login_no_login : "De gebruikersnaam ontbreekt!",
		login_no_pass : "Het paswoord ontbreekt!",
		login_no_login_pass : "Gebruikersnaam en paswoord ontbreekt!",
		login_no_wrong_pass : "Het ingevoerde paswoord is niet correct!",
		login_no_wrong_login : "De ingevoerde gebruikersnaam bestaat niet!",
		wrong_email : "Het gebruikte e-mail formaat klopt niet",
		is_update : false,
		is_register : true,
		is_shipping : false,
		no_update : "U heeft geen update informatie ingevoerd.",
		no_shipping : "U heeft geen verzendings informatie ingevoerd.",
		redirect_url : '',
		autoredirect : false,
		shipping_url : null,
		update_url : null
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.next_btns = $$(this.options.next_btns);
		if(this.options.autoredirect && this.options.logged_in == 1)
		{
			window.location.href=this.options.redirect_url;
		}
		this.login_form = $(this.options.login_form);
		this.register_form = $(this.options.register_form);
		this.update_form = $(this.options.update_form);
		this.forgoth_pass_form = $(this.options.forgoth_pass_form);
		this.forgoth_pass_submit = $(this.options.forgoth_pass_submit);
		this.update_form_submit = $(this.options.update_form_submit);
		this.scrollto = $(this.options.scrollto);
		if(this.update_form != null)
			this.update_form_action = this.update_form.get('action');
		if(this.update_form_action == null)
			this.update_form_action = this.options.update_url;
		this.shipping_form = $(this.options.shipping_form);
		this.shipping_form_submit = $(this.options.shipping_form_submit);
		this.shipping_copy = $(this.options.shipping_copy);
		if(this.shipping_form != null)
			this.shipping_form_action = this.shipping_form.get('action');
		if(this.shipping_form_action == null)
			this.shipping_form_action = this.options.shipping_url;
		this.addEvents();
		if($('firstname')){
			$('firstname').addEvent('focus',function(e){
				$each(this.login_form.getElements('input'),function(val,key){
					val.value = "";
				});
			}.bind(this));
		}
	},
	
	addEvents: function()
	{	
		this.addTabEvents();
		
		if(this.forgoth_pass_submit != null && this.forgoth_pass_form != null)
		{
			this.forgoth_pass_submit.addEvent('click', function(event){
					event.stop();
					Sexy.prompt(this.options.forgoth_info_popup_msg, this.forgoth_pass_form.getElementById(this.options.forgoth_pass_field).get('value'),{
												'textBoxBtnOk' : this.options.forgoth_submit_btn, 'textBoxBtnCancel' : this.options.forgoth_cancel_btn, onComplete : function(val){
									this.checkForgothPass(val);
								}.bind(this)});
				}.bind(this));
		}
		
		if(this.shipping_copy != null)
		{
			this.doCopyCheckEvents();
		
			this.shipping_copy.addEvent('click', function(event){
					this.doCopyCheck();
			}.bind(this));
		}
		
		if(this.update_form_submit != null)
		{
			this.update_form_submit.addEvent('click', function(event){
				event.stop();
				var data=this.getFormData();
				this.doChecks(event,data);
			}.bind(this));
		}
		
		if(this.shipping_form_submit != null)
		{
			this.shipping_form_submit.addEvent('click', function(event){
				event.stop();
				var data=this.getFormData();
				this.doChecks(event,data);
			}.bind(this));
		}
		
		if(this.next_btns != null)
		{
			this.next_btns.each(function(el, index){
				el.addEvent('click', function(event){
					if(Browser.Engine.trident) //IE Fix
						event.target = $(event.target);
					if(this.options.logged_in == 1)
					{
						return;
					}
					event.stop();
					
					var data=this.getFormData();
					if(this.myAccordion != null)
					{
						if(this.myAccordion.previous == data.get('show_form'))
						{
							this.doChecks(event,data);
						}
						else
						{
							this.myAccordion.display(data.get('show_form')).chain(function(){
									this.doChecks(event,data);
								}.bind(this));
						}
					}
					else
					{
						this.doChecks(event,data);
					}
				}.bind(this));
			}.bind(this));
		}
	},
	
	doCopyCheckEvents: function()
	{
		$each(this.options.assoc_fields, function(val, key){
				var el = $(key);
				var getel = $(val);
				el.addEvent('change', function(event){
						event.stop();
						if(this.shipping_copy.get('checked'))
							this.shipping_copy.removeProperty('checked');
				}.bind(this));
				getel.addEvent('change', function(event){
						event.stop();
						this.doCopyCheck();
				}.bind(this));
			}.bind(this));
	},
	
	doCopyCheck: function()
	{
		if(this.shipping_copy.get('checked'))
		{
			$each(this.options.assoc_fields, function(val, key){
				var el = $(key);
				var getel = $(val);
				if(el !=null && getel != null)
				{
					el.set('value',getel.get('value'));
				}
			});
		}
	},
	
	checkForgothPass: function(val)
	{
		if(!val)
		{
			//do nothing
		}
		else if(!new RegExp(this.options.emailregx).test(val))
		{
			Sexy.error(this.options.forgoth_info_wrong_format);
		}
		else
		{
			this.forgoth_pass_form.getElementById(this.options.forgoth_pass_field).set('value',val);
			
			LOADER.addLoad();
			new Request.HTML({
				url : '/nl/index.php',
				onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
					var tmp = new Element('div');
					tmp.set('html', responseHTML);
                                        console.log(responseHTML);
                                        if(responseHTML.test("Error"))
					{
						Sexy.alert(this.options.forgoth_error_popup_msg);
					}
					else
					{
						Sexy.alert(this.options.forgoth_pass_reset_info);
					}
					tmp.destroy();
					LOADER.removeLoad();
				}.bind(this)
			}).post(this.forgoth_pass_form);
		}
	},
	
	getFormData: function()
	{
		var login_info = new Hash();
		var register_info = new Hash();
		var update_info = new Hash();
		var shipping_info = new Hash();
		var show_form = 0;
		var is_login = false;
		var is_register = false;
		var is_update = false;
		var is_shipping = false;
		
		if(this.login_form != null)
		{
			var inputs = this.login_form.getElements('input');
			if(inputs != null)
			{
				inputs.each(function(input, i){
					if(input.get("type") != null  && input.get('value') != null && input.get('value') != "" && input.get("name") != null )
					{
						if(input.get("type") != "hidden" && input.get("type") != "submit" && (input.get("type") != "checkbox" || input.get("checked")))
						{
							is_login = true;
						}
						login_info.set(input.get('name'), input.get("value"));
					}
				});
			}
			
			var textareas = this.login_form.getElements('textarea');
			if(textareas != null)
			{
				textareas.each(function(area, i){
					if(area.get('value') != null && area.get('value') != "" && area.get("name") != null )
					{
						is_login = true;
						login_info.set(area.get('name'), area.get("value"));
					}
				});
			}
			
			var selects = this.login_form.getElements('select');
			if(selects != null)
			{
				selects.each(function(select, i){
					if(select.get('value') != null && select.get('value') != "" && select.get("name") != null )
					{
						is_login = true;
						login_info.set(select.get('name'), select.get("value"));
					}
				});
			}
		}
		
		if(this.register_form != null)
		{
			var inputs = this.register_form.getElements('input');
			if(inputs != null)
			{
				inputs.each(function(input, i){
					if(input.get("type") != null  && input.get('value') != null && input.get('value') != "" && input.get("name") != null )
					{
						if(input.get("type") != "hidden" && input.get("type") != "submit" && (input.get("type") != "checkbox" || input.get("checked")))
						{
							is_register = true;
							if(!is_login)
								show_form=1;
						}
						register_info.set(input.get('name'), input.get("value"));
					}
				});
			}
			
			var textareas = this.register_form.getElements('textarea');
			if(textareas != null)
			{
				textareas.each(function(area, i){
					if(area.get('value') != null && area.get('value') != "" && area.get("name") != null )
					{
						is_register = true;
						if(!is_login)
							show_form=1;
						register_info.set(area.get('name'), area.get("value"));
					}
				});
			}
			
			var selects = this.register_form.getElements('select');
			if(selects != null)
			{
				selects.each(function(select, i){
					if(select.get('value') != null && select.get('value') != "" && select.get("name") != null )
					{
						is_register = true;
						if(!is_login)
							show_form=1;
						register_info.set(select.get('name'), select.get("value"));
					}
				});
			}
		}
		
		if(this.update_form != null)
		{
			var inputs = this.update_form.getElements('input');
			if(inputs != null)
			{
				inputs.each(function(input, i){
					if(input.get("type") != null  && input.get('value') != null && input.get('value') != "" && input.get("name") != null )
					{
						if(input.get("type") != "hidden" && input.get("type") != "submit" && (input.get("type") != "checkbox" || input.get("checked")))
						{
							is_update = true;
						}
						update_info.set(input.get('name'), input.get("value"));
					}
				});
			}
			
			var textareas = this.update_form.getElements('textarea');
			if(textareas != null)
			{
				textareas.each(function(area, i){
					if(area.get('value') != null && area.get('value') != "" && area.get("name") != null )
					{
						is_update = true;
						update_info.set(area.get('name'), area.get("value"));
					}
				});
			}
			
			var selects = this.update_form.getElements('select');
			if(selects != null)
			{
				selects.each(function(select, i){
					if(select.get('value') != null && select.get('value') != "" && select.get("name") != null )
					{
						is_update = true;
						update_info.set(select.get('name'), select.get("value"));
					}
				});
			}
		}
		if(this.shipping_form != null)
		{
			var inputs = this.shipping_form.getElements('input');
			if(inputs != null)
			{
				inputs.each(function(input, i){
					if(input.get("type") != null  && input.get('value') != null && input.get('value') != "" && input.get("name") != null )
					{
						if(input.get("type") != "hidden" && input.get("type") != "submit" && (input.get("type") != "checkbox" || input.get("checked")))
						{
							is_shipping = true;
						}
						if(input.get("type") == "checkbox"){
							if(input.checked){
								value = "1";	
							}else
							{
								value = "0";
							}
						}
						else
						{
							value = input.get('value');	
						}
						shipping_info.set(input.get('name'), value);
					}
				});
			}
			
			var textareas = this.shipping_form.getElements('textarea');
			if(textareas != null)
			{
				textareas.each(function(area, i){
					if(area.get('value') != null && area.get('value') != "" && area.get("name") != null )
					{
						is_shipping = true;
						shipping_info.set(area.get('name'), area.get("value"));
					}
				});
			}
			
			var selects = this.shipping_form.getElements('select');
			if(selects != null)
			{
				selects.each(function(select, i){
					if(select.get('value') != null && select.get('value') != "" && select.get("name") != null )
					{
						is_shipping = true;
						shipping_info.set(select.get('name'), select.get("value"));
					}
				});
			}
		}
		
		return new Hash({
				'login_info' : login_info, 
				'register_info' : register_info, 
				'update_info' : update_info, 
				'shipping_info' : shipping_info,
				'is_login' : is_login, 
				'is_register' : is_register, 
				'is_update' : is_update, 
				'is_shipping' : is_shipping,
				'show_form' : show_form
			});
	},
	
	doChecks: function(event,data)
	{
		if(this.options.logged_in == 1)
		{
			window.location.href=event.target.href;
			return;
		}
		LOADER.addLoad();
		
		if(this.options.is_register)
		{
			if(!data.get('is_login'))
			{
				if (this.register_form != null)
				{
					if(data.get('is_register'))
					{
						this.doScroll(this.register_form,-80);
						this.doRegister.delay(250,this,data.get('register_info'));
					}
					else
					{
						this.doScroll(this.login_form,-80);
						Sexy.alert.delay(250,Sexy,this.options.no_login_register);
					}
				}
				else
				{
					this.doScroll(this.register_form,-80);
					Sexy.alert.delay(250,Sexy,this.options.no_login);
				}
			}
			else
			{
				this.doScroll(this.login_form,-80);
				this.doLogin.delay(250,this,data.get('login_info'));
			}
		}
		else if(this.options.is_update)
		{
			this.doScroll(this.update_form,-80);
			if(data.get('is_update'))
			{
				this.doUpdate.delay(250,this,data.get('update_info'));
			}
			else
			{
				Sexy.alert.delay(250,Sexy,this.options.no_update);
			}
		}
		else if(this.options.is_shipping)
		{
			this.doScroll(this.shipping_form,-80);
			if(data.get('is_shipping'))
			{
				this.doShipping.delay(250,this,data.get('shipping_info'));
			}
			else
			{
				Sexy.alert.delay(250,Sexy,this.options.no_shipping);
			}
		}
		LOADER.removeLoad();
	},
	
	doScroll : function(el,y)
	{
		if(el != null)
		{
			var myFx = new Fx.Scroll(window,{
						offset: {'x': 0, 'y': y}
					}).toElement(el);
		}
	},
	
	doRegister : function(data)
	{
		if(data != null)
		{
			if(!this.checkform())
			{
				LOADER.removeLoad();
				return false;
			}
			else
			{
				LOADER.addLoad();
				new Request.HTML({
					url : '/index.php',
					onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
						var tmp = new Element('div');
						tmp.set('html', responseHTML);
						var infoparent = tmp.getElement("ul");
						var info = "";
						if(infoparent != null)
						{
							var infoel = infoparent.getElements("li");
							if(infoel != null)
							{
								infoel.each(function(el)
								{
									info += "<br/>" +  el.get("html");
								});
							}
						}
						if(responseHTML.test("Error"))
						{
							Sexy.alert(info);
						}
						else
						{
							window.location.href=this.options.redirect_url;
						}
						tmp.destroy();
						LOADER.removeLoad();
					}.bind(this)
				}).post(data);	
			}
		}
	},
	
	doLogin : function(data)
	{
		if(data != null)
		{
			LOADER.addLoad();
			new Request.HTML({
				url : '/index.php',
				onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
					var tmp = new Element('div');
					tmp.set('html', responseHTML);
					var infoparent = tmp.getElement("ul");
					var info = "???";
					if(infoparent != null)
					{
						var infoel = infoparent.getElement("li");
						if(infoel != null)
						{
							var login_info=data;
							if(infoel.get("html") == 'You must submit your username and password')
							{
								if(login_info.get("username") != null)
								{
									info=this.options.login_no_pass;
								}
								else if(login_info.get("password") != null)
								{
									info=this.options.login_no_login;
								}
								else
								{
									info=this.options.login_no_login_pass;
								}
							}
							else if(infoel.get("html") == 'The password you submitted was not correct.')
							{
								info=this.options.login_no_wrong_pass;
							}
							else if(infoel.get("html") == 'The username you submitted was not found in the database')
							{
								info=this.options.login_no_wrong_login;
							}
							else
							{
								info=infoel.get("html");
							}
						}
					}
					
					if(responseHTML.test("Error"))
					{
						Sexy.alert(info);
					}
					else
					{
						window.location.href=this.options.redirect_url;
					}
					tmp.destroy();
					LOADER.removeLoad();
				}.bind(this)
			}).post(data);
		}	
	},
	
	doUpdate : function(data)
	{
		if(data != null)
		{
			if(!this.checkform())
			{
				LOADER.removeLoad();
				return false;
			}
			else
			{
				LOADER.addLoad();
				new Request.HTML({
					url : this.update_form_action,
					onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
						if(responseHTML != "1")
						{
							Sexy.alert(responseHTML);
						}
						else
						{
							window.location.reload();
						}
						LOADER.removeLoad();
					}.bind(this)
				}).post(data);
			}
		}
	},
	
	doShipping : function(data)
	{
		if(data != null)
		{
			if(!this.checkform())
			{
				LOADER.removeLoad();
				return false;
			}
			else
			{
				LOADER.addLoad();
				/**console.log(data);
				return;*/
				new Request.HTML({
					url : this.shipping_form_action,
					onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
						if(responseHTML != "1")
						{
							Sexy.alert(responseHTML);
						}
						else
						{
							window.location.reload();
						}
						LOADER.removeLoad();
					}.bind(this)
				}).post(data);
			}
		}
	},	
	
	addTabEvents: function()
	{
		var div = $(this.options.main_div);
		if(div != null && this.options.logged_in == 0)
		{
			if(this.options.is_update)
			{
				this.myAccordion = new multipleOpenAccordion(this.options.toggler_div, this.options.accordion_div, {
					opacity: false,
					allowMultipleOpen: true,
					disableHide : [0],
					openAllOnLoad: true,
					onActive: function(toggler, element){
						toggler.setStyle('color', '#41464D');
						if(Browser.Engine.trident)
							element.setStyle("display", "block");
					},
					onBackground: function(toggler, element){
						toggler.setStyle('color', '#528CE0');
						if(Browser.Engine.trident)
							element.setStyle("display", "none");
					}
				});
			}
			else
			{
				this.myAccordion = new multipleOpenAccordion(this.options.toggler_div, this.options.accordion_div, {
					opacity: false,
					allowMultipleOpen: false,
					onActive: function(toggler, element){
						toggler.setStyle('color', '#41464D');
						if(Browser.Engine.trident)
							element.setStyle("display", "block");
					},
					onBackground: function(toggler, element){
						toggler.setStyle('color', '#528CE0');
						if(Browser.Engine.trident)
							element.setStyle("display", "none");
					}
				});
			}
		}
	},
	
	clearErrors: function()
	{
		LOADER.addLoad();
		
		$each(this.options.fields_to_check, function(val, key){
			var el = $(key);
			if(el !=null)
			{
				var tmp=el.getParent().getElement('span');
				if(tmp!=null)
					tmp.destroy();
			}
		});
		
		LOADER.removeLoad();
	},

	checkform: function()
	{
		LOADER.addLoad();
		this.clearErrors();
		
		var formerrors = false;
		
		if(this.options.fields_to_check != null)
		{
			$each(this.options.fields_to_check, function(val, key){
				var el = $(key);
				if(el != null)
				{
					if(el.value != "")
					{
						if(el.get('type') == 'checkbox' && el.get('rel') != "emailcheck")
						{
							if(el.checked && el.value=='y')
							{
								el.getParent().getElement('img').set('src',this.options.non_error_img);
							}
							else
							{
								if(!formerrors)
									el.focus();
								formerrors = true;
								el.getParent().getElement('img').set('src',this.options.error_img);
								el.getParent().adopt(new Element('span',{
															'html' : val, 'class' : this.options.error_class
													}));
							}
						}
						else if(el.get('rel') == "emailcheck" && !new RegExp(this.options.emailregx).test(el.value))
						{
							if(!formerrors)
									el.focus();
							formerrors = true;
							el.getParent().getElement('img').set('src',this.options.error_img);
							el.getParent().adopt(new Element('span',{
															'html' : this.options.wrong_email, 'class' : this.options.error_class
													}));
						}
						else
						{
							el.getParent().getElement('img').set('src',this.options.non_error_img);
						}
					}
					else
					{
						if(!formerrors)
							el.focus();
						formerrors = true;
						el.getParent().getElement('img').set('src',this.options.error_img);
						el.getParent().adopt(new Element('span',{
													'html' : val, 'class' : this.options.error_class
											}));
					}
				}
			}.bind(this));
		}
		
		if(this.options.passfields_to_check != null)
		{
			$each(this.options.passfields_to_check, function(val, key){
				var tmp=$(val[0]);
				var tmp2=$(val[1]);
				if(tmp != null && tmp2 != null)
				{
					if(tmp.value != tmp2.value)
					{
						if(!formerrors)
							tmp2.focus();
						formerrors = true;
						tmp.getParent().getElement('img').set('src',this.options.error_img);
						tmp.getParent().adopt(new Element('span',{
																'html' : key, 'class' : this.options.error_class
														}));
														
						tmp2.getParent().getElement('img').set('src',this.options.error_img);
						var tmp2span=tmp2.getParent().getElement('span');
						if(tmp2span == null)
						{
							tmp2.getParent().adopt(new Element('span',{
																	'html' : key, 'class' : this.options.error_class
															}));
						}
					}
				}
			}.bind(this));
		}
		
		LOADER.removeLoad();

		return !formerrors;
	}
});

var FutureOffer = new Class({
	Implements: Options,
	
	options: {
		fields_to_check : null,
		non_error_img : null,
		error_img : null,
		error_class : 'error',
		offer_form_submit : null,
		offer_submit_btn : null,
		offer_clear_btn : null,
		offer_sent : "Offerte verzonden!"
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		this.offer_submit=$(this.options.offer_submit_btn);
		this.offer_clear=$(this.options.offer_clear_btn);
		this.offer_form=$(this.options.offer_form_submit);
		
		this.addEvents();
	},
	
	addEvents: function()
	{
		if($(this.options.offer_form_submit) != null)
		{
			$(this.options.offer_form_submit).addEvent('submit',
								function(e){
									var result=this.checkform();
									if(!result)
										e.stop();
								}.bind(this));
		}
		
		if(this.offer_clear != null)
		{
			this.offer_clear.addEvent('click', function(event){
				event.stop();
				
				var myFx = new Fx.Scroll(window,{
								offset: {'x': 0, 'y': -50}
							}).toElement(this.offer_form).chain(function(){
									this.offer_form.reset();
									this.clearErrors();
								}.bind(this));
			}.bind(this));
		}
		
		if(this.offer_submit != null)
		{
			this.offer_submit.addEvent('click', function(event){
				event.stop();
				
				var myFx = new Fx.Scroll(window,{
								offset: {'x': 0, 'y': -50}
							}).toElement(this.offer_form).chain(function(){
										LOADER.addLoad();
										this.checkOffer();
										LOADER.removeLoad();
									}.bind(this));
			}.bind(this));
		}
	},
	
	checkOffer : function()
	{
		var offer_info= new Hash();
		
		if(this.offer_form != null)
		{
			var inputs = this.offer_form.getElements('input');
			if(inputs != null)
			{
				inputs.each(function(input, i){
					if(input.get("type") != null  && input.get('value') != null && input.get('value') != "" && input.get("name") != null )
					{
						if(input.get("type") == "checkbox" && input.get("checked"))
							offer_info.set(input.get('name'), input.get("value"));
						if(input.get("type") == "checkbox" && !input.get("checked"))
							offer_info.set(input.get('name'), input.get("rel"));
						else if(input.get("type") != "checkbox")
							offer_info.set(input.get('name'), input.get("value"));
					}
				});
			}
			
			var selects = this.offer_form.getElements('select');
			if(selects != null)
			{
				selects.each(function(select, i){
					if(select.get('value') != null && select.get('value') != "" && select.get("name") != null )
					{
						offer_info.set(select.get('name'), select.get("value"));
					}
				});
			}
			
			var textareas = this.offer_form.getElements('textarea');
			if(textareas != null)
			{
				textareas.each(function(textarea, i){
					if(textarea.get('value') != null && textarea.get('value') != "" && textarea.get("name") != null )
					{
						offer_info.set(textarea.get('name'), textarea.get("value"));
					}
				});
			}
		}

		if(!this.checkForm())
		{
			LOADER.addLoad();
			new Request.HTML({
				url : '/index.php',
				onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript){
					var tmp = new Element('div');
					tmp.set('html', responseHTML);
					var infoparent = tmp.getElement("ul");
					var info = "";
					if(infoparent != null)
					{
						var infoel = infoparent.getElements("li");
						if(infoel != null)
						{
							infoel.each(function(el)
							{
								info += "<br/>" +  el.get("html");
							});
						}
					}
					if(responseHTML.test("Error"))
					{
						Sexy.alert(info);
					}
					else
					{
						Sexy.messageBox('alert',this.options.offer_sent,{onComplete : function(){window.location.reload();}});
					}
					tmp.destroy();
					LOADER.removeLoad();
				}.bind(this)
			}).post(offer_info);	
		}
	},
	
	clearErrors: function()
	{
		LOADER.addLoad();
		var focus_isset=false;
		
		$each(this.options.fields_to_check, function(val, key){
			var el = $(key);
			if(el !=null)
			{
				if(!focus_isset)
				{
					el.focus();
					focus_isset=true;
				}	
			
				var tmp=el.getParent().getElement('span');
				if(tmp!=null)
					tmp.destroy();
				el.getParent().getElement('img').set('src',this.options.non_error_img);
			}
		}.bind(this));
		
		LOADER.removeLoad();
	},

	checkForm: function()
	{
		LOADER.addLoad();
		this.clearErrors();
	
		var formerrors = false;
		$each(this.options.fields_to_check, function(val, key){
			var el = $(key);
			if(el != null)
			{
				if(el.value != "")
				{
					if(el.get('type') == 'checkbox')
					{
						if(el.checked && el.value=='y')
						{
							el.getParent().getElement('img').set('src',this.options.non_error_img);
						}
						else
						{
							el.focus();
							formerrors = true;
							el.getParent().getElement('img').set('src',this.options.error_img);
							el.getParent().adopt(new Element('span',{
														'html' : val, 'class' : this.options.error_class
												}));
						}
					}
					else
					{
						el.getParent().getElement('img').set('src',this.options.non_error_img);
					}
				}
				else
				{
					if(!formerrors)
						el.focus();
					formerrors = true;
					el.getParent().getElement('img').set('src',this.options.error_img);
					el.getParent().adopt(new Element('span',{
												'html' : val, 'class' : this.options.error_class
										}));
				}
			}
		}.bind(this));

		LOADER.removeLoad();

		return formerrors;
	}
});

var FutureProductFullCart = new Class({
	Implements: Options,
	
	options: {
		close_button_shipping : 'close_btn_shipping',
		close_button_shipping_main : 'close_btn_shipping2',	
		detail_shipping : 'detail_shipping',
		cart_content_div : 'cart_content',
		producttable : 'producttable',
		MiniCart : null,
                language : 'nl'
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.cart_content_div  = $(this.options.cart_content_div);
		this.registerShippingEvents();
		this.registerCartEvents();
                this.lang = this.options.language;
	},
	
	registerShippingEvents : function()
	{
		this.close_button_shipping  = $(this.options.close_button_shipping);
		this.close_button_shipping_main  = $(this.options.close_button_shipping_main);
		this.detail_shipping  = $(this.options.detail_shipping);
		if(this.close_button_shipping != null && this.detail_shipping != null)
		{
			this.close_button_shipping.addEvent('click', function(event){
				event.stop();
				if(this.detail_shipping.getStyle("display") != "none")
				{
					this.detail_shipping.setStyle('display','none').fade('out');
					this.close_button_shipping.getParent().fade('out');
				}
				else
				{
					this.detail_shipping.setStyle("display", "").fade('in');
					this.close_button_shipping.getParent().setStyle("display", "block").fade('in');
				}
			}.bind(this));
		}

		if(this.close_button_shipping_main != null && this.detail_shipping != null)
		{
			this.close_button_shipping_main.addEvent('click', function(event){
				event.stop();
				if(this.detail_shipping.getStyle("display") != "none")
				{
					this.detail_shipping.setStyle('display','none').fade('out');
					if(this.close_button_shipping != null)
						this.close_button_shipping.getParent().fade('out');
				}
				else
				{
					this.detail_shipping.setStyle("display", "").fade('in');
					if(this.close_button_shipping != null)
						this.close_button_shipping.getParent().setStyle("display", "block").fade('in');
				}
			}.bind(this));
		}
	},
	
	registerCartEvents : function()
	{
		this.producttable  = $(this.options.producttable);
		if(this.producttable != null)
		{
			if(this.options.MiniCart)
			{
				var _this = this;
				var onDelete = function(){
				new Request.HTML({
					url : '/' + this.lang + '/index.php/fpshop/cart_contents/',
					onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
							_this.producttable.destroy();
							_this.cart_content_div.set('html', responseHTML);
							_this.options.MiniCart.addCartInfo();
							_this.registerCartEvents();
							_this.registerShippingEvents();
							LOADER.removeLoad();
						}.bind(this),
					evalResponse : true
					}).post({});
				}
				this.options.MiniCart.onDelete = onDelete;
				this.options.MiniCart.register_events();
			}
			var deletebuttons = this.producttable.getElements('.remove');
			$each(deletebuttons, function(el, index){
				var a = el.getElement("a");
				if(a != null)
				{
					a.addEvent('click', function(event){
						if(Browser.Engine.trident) //IE Fix
							event.target = $(event.target);
						event.stop();
						LOADER.addLoad();
						var target = event.target;
						var arr = target.getParent().get('id').split("|");
						var id = arr[0];
						var colorid = arr[1];
						var measureid = arr[2];
						var nostock = arr[3];
						new Request.HTML({
							url : '/' + this.lang + '/index.php/fpshop/cart_contents/',
							onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
								this.producttable.destroy();
								this.cart_content_div.set('html', responseHTML);
								this.options.MiniCart.addCartInfo();
								this.registerCartEvents();
								this.registerShippingEvents();
								LOADER.removeLoad();
							}.bind(this),
							evalResponse : true
						}).post({
							'action' : 'REMOVE', 'productid' : id, 'measures' : measureid, 'colors' : colorid, 'nostock' : nostock
						});
					}.bind(this));
				}
			}.bind(this));

			var updateFields = this.producttable.getElements('input');
			$each(updateFields, function(el, index){
					var change = function(event){
						if(Browser.Engine.trident) //IE Fix
							event.target = $(event.target);
						if(event.stop)
							event.stop();
						LOADER.addLoad();
						var target = event.target;
						if(el.id == "giftcheck_code"){
							var id = 0;
							var colorid = 0;
							var measureid = 0;
							var nostock = 0;
							var giftcheckcode = 1;
                                                        var ecocheck = 0;
						}else if(el.id == "ecocheck_code"){
                                                        var id = 0;
							var colorid = 0;
							var measureid = 0;
							var nostock = 0;
							var giftcheckcode = 0;
                                                        var ecocheck = 1;
                                                }else{
							var arr = target.get('rel').split("|");
							var id = arr[0];
							var colorid = arr[1];
							var measureid = arr[2];
							var nostock = arr[3];
							var giftcheckcode = 0;
                                                        var ecocheck = 0;
						}
						/**
						console.log({
							'action' : 'UPDATE', 'productid' : id, 'measures' : measureid, 'colors' : colorid, 'nostock' : nostock, 'amount' : el.value, 'giftcheck': giftcheckcode
						});
						*/
						new Request.HTML({
							url : '/' + this.lang + '/index.php/fpshop/cart_contents/',
							onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
								this.producttable.destroy();
								this.cart_content_div.set('html', responseHTML);
								this.options.MiniCart.addCartInfo();
								this.registerCartEvents();
								this.registerShippingEvents();
								LOADER.removeLoad();
							}.bind(this),
							evalResponse : true
						}).post({
							'action' : 'UPDATE', 'productid' : id, 'measures' : measureid, 'colors' : colorid, 'nostock' : nostock, 'amount' : el.value, 'giftcheck': giftcheckcode, 'ecocheck' : ecocheck
						});
					}.bind(this)
					this.lastcheck = 0;
					var timecheck = function(event)
					{
						if(event.ischeck)
						{
							if(event.lastcheck ==  this.lastcheck)
								change(event);
							return;
						}
						this.lastcheck++;
						timecheck.delay(1000, this, { "target" : event.target, "ischeck" : true, "lastcheck" : this.lastcheck});
					}.bind(this);
					if(el.id == "giftcheck_code"){
						el.addEvent('change', change);
					}else{
						el.addEvent('change', change);
						el.addEvent('keyup', timecheck);
					}
			}.bind(this));
		}
	}
	
});

var FutureProductDetail = new Class({
	Implements: Options,
	
	options: {
		form : 'form_add',
		colorsandmeasures : '.ColorsAndMeasures .wrap',
		submit_btn : 'submit_add',
		fixed_color : 'fixed_color',
		fixed_measure : 'fixed_measure',
		MiniCart : null,
		scrollToElement : 'actionbox',
		ProductTabs : null,
		no_color_error : '<h1>Error</h1><p>U moet een kleur selecteren!</p>',
		no_measure_error : '<h1>Error</h1><p>U moet een maat selecteren!</p>',
		action_options : 'actionbox',
		action_tabs: 'actionbox_tabs',
		action_cart_rel : 'cart_tab',
		action_cart: 'actionbox_shoppingcart',
		action_history:	'actionbox_history',
		action_offer:		'actionbox_offer',
		color_tab : 'color_tab',
		stockprices_form : 'stockprices',
                reductionprices_form : 'reductionprices',
		price_element : 'priceid',
		giftcheckamount: 'giftcheckamount',
                originalprice: 'originalprice'
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.fixed_color = $(this.options.fixed_color);
		this.fixed_measure = $(this.options.fixed_measure);
		this.colorsandmeasures = $$(this.options.colorsandmeasures);
		this.form = $(this.options.form);
		this.submit = $(this.options.submit_btn);
		this.hascolors = false;
		this.hasmeasures = false;
		this.selectedcolor = null;
		this.selectedmeasure = null;
		this.color_tab = $(this.options.color_tab);
		
		
		this.action_options = $(this.options.action_options);
		this.action_tabs = $(this.options.action_tabs);
		this.action_cart = $(this.options.action_cart);
		this.action_history = $(this.options.action_history);
		this.action_offer = $(this.options.action_offer);
		
		//Stockprices info
		
		this.stockprices_form = $(this.options.stockprices_form);
                this.reductionprices_form = $(this.options.reductionprices_form);
                this.originalprice = $(this.options.originalprice);
		this.stockprices = new Hash();
                this.reductionprices = null;
		this.pricefield = $(this.options.price_element);
		this.giftcheckamount = $(this.options.giftcheckamount);
		this.registerPrices();
		//End stockprices info
		this.registerSubmitEvent();
	},
	
	registerPrices : function(){
                var tmpstockprice = null;
                var tmpmeasure = null;
                var tmpcolor = null;
		if(this.stockprices_form != null && this.pricefield != null)
		{
			var inputs = this.stockprices_form.getElements("input");
			if(inputs != null)
			{
				inputs.each(function(el){
					var measure = el.get('name');
					var color  = el.get("rel");
					var price = el.get("value");
                                        var tmpprice = parseFloat(price);
                                        if(tmpstockprice == null){
                                            tmpstockprice = tmpprice;
                                        }else{
                                            if(tmpprice < tmpstockprice){
                                                tmpstockprice = tmpprice;
                                            }
                                        }
					this.stockprices.set(measure+"_"+color, price);
				}.bind(this));
			}
		}

                if(this.reductionprices_form != null && this.originalprice != null){
                        var inputs = this.reductionprices_form.getElements("input");
			if(inputs != null)
			{
                              this.reductionprices = new Hash();
				inputs.each(function(el){
					var measure = el.get('name');
					var color  = el.get("rel");
					var price = el.get("value");
					this.reductionprices.set(measure+"_"+color, price);
				}.bind(this));
			}
                }
	},
	
	changePrice : function()
	{
		var measureid = null;
		var colorid = null;
		if(this.fixed_color)
		{
			colorid= this.fixed_color.get("value");
		}
		else if(this.selectedcolor != null)
		{
			colorid = this.selectedcolor.colorid;
		}
		if(this.fixed_measure)
		{
			measureid= this.fixed_measure.get("value");
		}
		else if( this.selectedmeasure != null)
		{
			measureid= this.selectedmeasure.measureid;
		}
		if(this.stockprices_form != null && this.pricefield != null)
		{
			var prices = 0;
			var default_price = 0;
			this.stockprices.each(function(price, key){
				var keys = key.split("_");
                                var tmpprice = price;
				price = price.replace(".", "");
				price = parseFloat(price);

				if(key == "0_0")
				{
					default_price = tmpprice;
				}
				if(measureid == null && colorid == null)
				{
					if(key == "0_0")
					{
						prices = tmpprice;
					}
				}
				else if(measureid != null && colorid != null)
				{
					if(keys[0] == measureid &&  keys[1] == colorid && price > prices)
					{
                                                
						prices = tmpprice;
					}
				}
				else if(measureid != null)
				{
					if(keys[0] == measureid && price > prices)
					{
						prices = tmpprice;
					}
				}
				else
				{
					if(keys[1] == colorid && price > prices)
					{
						prices = tmpprice;
					}
				}
			});
                        var tmpprice2 = prices;
                        if(prices != 0){
                            prices = prices.replace(".", "");
                            prices = parseFloat(prices);
                        }
			if(prices <= 0)
			{
				tmpprice2 = default_price;
			}
			//sconsole.log(prices);
			this.pricefield.set("html", tmpprice2);
		}

                if( this.reductionprices != null)
		{
			var prices = 0;
			var default_price = 0;
			this.reductionprices.each(function(price, key){
				var keys = key.split("_");
                                var tmpprice = price;
				price = price.replace(".", "");
				price = parseFloat(price);

				if(key == "0_0")
				{
					default_price = tmpprice;
				}
				if(measureid == null && colorid == null)
				{
					if(key == "0_0")
					{
						prices = tmpprice;
					}
				}
				else if(measureid != null && colorid != null)
				{
					if(keys[0] == measureid &&  keys[1] == colorid && price > prices)
					{

						prices = tmpprice;
					}
				}
				else if(measureid != null)
				{
					if(keys[0] == measureid && price > prices)
					{
						prices = tmpprice;
					}
				}
				else
				{
					if(keys[1] == colorid && price > prices)
					{
						prices = tmpprice;
					}
				}
			});
                        var tmpprice2 = prices;
                        if(prices != 0){
                            prices = prices.replace(".", "");
                            prices = parseFloat(prices);
                        }
                        if(prices <= 0)
                        {
                            prices = default_price.replace(".", "");
                            prices = parseFloat(prices);
                            tmpprice2 = default_price;

                        }

                        if(prices <= 0){
                            this.originalprice.set("html", "");
                        }else{
                            this.originalprice.set("html", "<span class=\"euro\">&euro;</span><strike>"+tmpprice2+"</span></strike>");
                        }
		}
	},
	
	registerSubmitEvent : function(){
		var colors = new Hash();
		var measures = new Hash();
		var lastcolor = null;
		var lastmeasure = null;
		if(this.colorsandmeasures != null)
		{
			this.colorsandmeasures.each(function(el){
				if(el.get('rel') != null)
				{
					var arr = el.get('rel').split("|");
					if(arr[0] == "color")
					{
						var els = el.getElement(".toggler .selector");
						if(lastcolor == null)
							lastcolor = els.getParent();
						colors.set(el, els.getParent());
						if(els.getParent().get('class') == 'colorcheckbox on')
						{
							var obj = new Hash();
							obj.set("colorid",  arr[1]);
							obj.set("element",  els.getParent());
							this.selectedcolor = obj;
						}
						this.hascolors = true;
						els.addEvent("click", function(event){
							event.stop();
							if(Browser.Engine.trident) //IE Fix
								event.target = $(event.target);
							if(this.selectedcolor && this.selectedcolor.colorid && this.selectedcolor.colorid == arr[1])
							{
								this.selectedcolor.element.set("class", 'colorcheckbox');
								this.selectedcolor = null;
							}
							else
							{
								if(this.selectedcolor != null)
								{
									this.selectedcolor.element.set("class", 'colorcheckbox');
								}
								else
								{
									colors.each(function(element){
										element.set("class", 'colorcheckbox');
									});
								}
								
								event.target.getParent().getParent().set("class", 'colorcheckbox on');
								var obj = new Hash();
								obj.set("colorid",  arr[1]);
								obj.set("element",  event.target.getParent().getParent());
								this.selectedcolor = obj;
							}
							this.changePrice();
						}.bind(this));
					}
					else if (arr[0] == "measure")
					{
						var els = el.getElement(".toggler .selector");
						measures.set(el, els.getParent());
						if(lastmeasure == null)
							lastmeasure = els.getParent();
						if(els.getParent().get('class') == 'colorcheckbox on')
						{
							var obj = new Hash();
							obj.set("measureid",  arr[1]);
							obj.set("element", els.getParent());
							this.selectedmeasure = obj;
						}
						this.hasmeasures = true;
						els.addEvent("click", function(event){
							event.stop();
							if(Browser.Engine.trident) //IE Fix
								event.target = $(event.target);
							if(this.selectedmeasure && this.selectedmeasure.measureid && this.selectedmeasure.measureid == arr[1])
							{
								this.selectedmeasure.element.set("class", 'colorcheckbox');
								this.selectedmeasure = null;
							}
							else
							{
								if(this.selectedmeasure != null)
								{
									this.selectedmeasure.element.set("class", 'colorcheckbox');
								}
								else
								{
									measures.each(function(el){
										el.set("class", 'colorcheckbox');
									});
								}
								event.target.getParent().getParent().set("class", 'colorcheckbox on');
								var obj = new Hash();
								obj.set("measureid",  arr[1]);
								obj.set("element",  event.target.getParent().getParent());
								this.selectedmeasure = obj;
							}
							this.changePrice();
						}.bind(this));
					}
					
				}
			}.bind(this));
		}
		
		if(this.submit != null)
		{
			this.submit.addEvent('click', function(event)
			{
				event.stop();
				LOADER.addLoad();
				if(this.hascolors && this.selectedcolor == null)
				{
					if(this.color_tab)
						this.color_tab.fireEvent('click');
					new Fx.Scroll(window,{
						offset: {'x': 0, 'y': -50}
					}).toElement(lastcolor);
					Sexy.error.delay(750, Sexy, this.options.no_color_error);
					LOADER.removeLoad();
					return;
				}

				if(this.hasmeasures && this.selectedmeasure == null)
				{
					if(this.color_tab)
						this.color_tab.fireEvent('click');
					new Fx.Scroll(window,{
						offset: {'x': 0, 'y': -50}
					}).toElement(lastmeasure);
					Sexy.error.delay(750, Sexy, this.options.no_measure_error);
					LOADER.removeLoad();
					return;
				}
				
				var hash = new Hash();
				if(this.fixed_color != null)
				{
					hash.set("colors", this.fixed_color.get("value"));
					hash.set("fixed_color", hash.get("colors"));
				}
				else if(this.hascolors)
				{
					hash.set("colors", this.selectedcolor.colorid);
				}
				if(this.fixed_measure != null)
				{
					hash.set("measures", this.fixed_measure.get("value"));
					hash.set("fixed_measure", hash.get("measures"));
				}
				else if(this.hasmeasures)
				{
					hash.set("measures", this.selectedmeasure.measureid);
				}
				var elements = this.form.getElements("input");
				$each(elements, function(el)
				{
					hash.set(el.get("name"), el.get("value"));
				});
				if(this.giftcheckamount != null)
					if(this.giftcheckamount.value >= 20){
						hash.set("giftcheckamount",this.giftcheckamount.value);
					}else{
						this.giftcheckamount.value = "20";
						new Fx.Scroll(window,{
							offset: {'x': 0, 'y': -50}
						}).toElement(this.giftcheckamount);
						Sexy.error.delay(750, Sexy, "Een cadeaubon moet minstens 20 EURO bedragen.");
						LOADER.removeLoad();
					return;
					}
				if(this.options.ProductTabs.openCartTabAction)
				{
					this.options.ProductTabs.openCartTabAction();
				}
				new Fx.Scroll(window,{
					offset: {'x': 0, 'y': -50}
				}).toElement(this.options.scrollToElement);
				
				this.toggle();
				
				this.options.MiniCart.postAndGetCartInfo(hash);
				LOADER.removeLoad();
			}.bind(this)
			);	
		}
	},
	
	toggle : function(){
			if(this.action_options != null && !this.options.disable_hide)
			{
	    		if(this.action_options.getStyle('display') != 'block')
	    		{
	    			this.action_options.setStyle('display','block').fade('in');
	    		}
	    		this.openCartTabAction();
			}
	},
	
	openCartTabAction : function(){
		if(this.action_tabs != null)
		{
			this.action_tabs.each(function(val){
				if(val.get('rel') == this.options.action_cart_rel)
				{
					val.set('class','current');
				}
				else
				{
					val.set('class','');
				}
			});
		}
 		if(this.action_cart != null)
 		{
			this.action_cart.setStyle('display','block').fade('in');
		}
		if(this.action_history != null)
		{
			this.action_history.setStyle('display','none').fade('out');
		}
  		if(this.action_offer != null)
  		{
			this.action_offer.setStyle('display','none').fade('out');
		}
	}
	
});

var FutureHideElements = new Class({
	Implements: Options,
	
	options: {
		elements : null
	},
	
	initialize: function(options){
		this.setOptions(options);
		if(this.options.elements != null)
		{
			$each(this.options.elements, function(el){
				var els = $$(el);
				els.each(function(el){
					el.setStyle("display", "none");
				});
			});
		}
	}
});

var multipleOpenAccordion = new Class({
	Extends: Accordion,
	options: {
		allowMultipleOpen: true,
		disableHide : [],
		openAllOnLoad: false,
		closeAllOnLoad: false
	},
	
	initialize: function(togglers,togglees,options){
		this.parent(togglers, togglees, options);
	},
	
	openAll: function(obj)
	{
		this.elements.each(function(el,index){
			obj[index] = {};
			var hide=false;
			this.fireEvent('onActive', [this.togglers[index], el]);
			for (var fx in this.effects) obj[index][fx] = hide ? 0 : el[this.effects[fx]];	
		}.bind(this));
		
		return obj;
	},
	
	closeAll: function(obj)
	{
		this.elements.each(function(el,index){
			obj[index] = {};
			var hide=true;
			this.fireEvent('onBackground', [this.togglers[index], el]);
			for (var fx in this.effects) obj[index][fx] = hide ? 0 : el[this.effects[fx]];	
		}.bind(this));
		
		return obj;
	},

	addSection: function(toggler, element, pos){
		toggler = $(toggler);
		element = $(element);
		var test = this.togglers.contains(toggler);
		var len = this.togglers.length;
		this.togglers.include(toggler);
		this.elements.include(element);
		if (len && (!test || pos)){
			pos = $pick(pos, len - 1);
			toggler.inject(this.togglers[pos], 'before');
			element.inject(toggler, 'after');
		} else if (this.container && !test){
			toggler.inject(this.container);
			element.inject(this.container);
		}
		var idx = this.togglers.indexOf(toggler);
		var _this = this;
		toggler.addEvent('click', function(event){
			event.stop();
			_this.display(idx);
			});
		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
		element.fullOpacity = 1;
		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
		element.setStyle('overflow', 'hidden');
		if (!test){
			for (var fx in this.effects) element.setStyle(fx, 0);
		}
		return this;
	},
	
	display: function(index){
		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
		var obj = {};
		if(this.options.allowMultipleOpen){
			var el = this.elements[index];
			obj[index] = {};
			var hide = (el.offsetHeight > 0);
			
			if(this.options.disableHide[index] != null)
			{
				hide=false;
			}
			
			this.fireEvent(hide ? 'onBackground' : 'onActive', [this.togglers[index], el]);
			for (var fx in this.effects) obj[index][fx] = hide ? 0 : el[this.effects[fx]];	
		}
		else
		{
			this.previous = index;
			this.elements.each(function(el, i){
				obj[i] = {};
				var hide = (i != index) || (this.options.alwaysHide && (el.offsetHeight > 0));
				this.fireEvent(hide ? 'onBackground' : 'onActive', [this.togglers[i], el]);
				for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
			}, this);
		}
		
		if(this.options.openAllOnLoad)
		{
			obj=this.openAll(obj);
			this.options.openAllOnLoad=false;
		}
		
		if(this.options.closeAllOnLoad)
		{
			obj=this.closeAll(obj);
			this.options.closeAllOnLoad=false;
		}
		
		return this.start(obj);
	}
});

