/*	

MBT CHOOSER
Brett - 2009-2010

Version History
-----------------------

2.1		Euro and UK size choice.

2.0		Stock Size Filtering
	
*/

window.addEvent('domready', function(){
									 
	var bolFilterOnLoad = true
									 
 	var objShoes = $('mbtshoes').getElements('li')

	var funHideAllShoes = function(){
		objShoes.setStyle('display','none')
		objShoes.setStyle('visibility','hidden')};
	
	var funShowAllShoes = function(){
		objShoes.setStyle('display','inline')
		objShoes.setStyle('visibility','visible')};
	


	// ** ACTIONS

	var objGroup1 = $('group1chooser').getElements('li > a')
	var objGroup2 = $('group2chooser').getElements('li > a')	
	var objGroup3 = $('group3chooser').getElements('li > a')
	// filter to exclude euro/uk clicks
	objGroup3 = objGroup3.filter(function(item){
		return !item.getParent('li').hasClass('liHeading')
		})
	
	var switchSize = function(strFilter){
		if(strFilter=='Euro'){
				objLIFilter = $('group3chooser').getElements('li.SizeUK')
		objLIFilter.each(function(item){
			item.setStyle('display','none')
			})
		objLIFilter = $('group3chooser').getElements('li.SizeEuro')
		objLIFilter.each(function(item){
			item.setStyle('display','block')
			})					   
				}
		else{
		objLIFilter = $('group3chooser').getElements('li.SizeEuro')
		objLIFilter.each(function(item){
			item.setStyle('display','none')
			})
		objLIFilter = $('group3chooser').getElements('li.SizeUK')
		objLIFilter.each(function(item){
			item.setStyle('display','block')
			})					   
				}
		objGroup3.getLast('a').fireEvent('click')
		}
	
	var objSizeCategory = $('group3chooser').getElements('li.liHeading > em > a')
	objSizeCategory.each(function(item){
		item.addEvent('click',function(event){
			event.preventDefault()})
		Cookie.write('sizeFilter', item.get('html'));
		item.addEvent('click',function(event){
				switchSize(item.get('html'))						   
				})
		})
	
	if(Cookie.read("sizeFilter")==null){
			switchSize('UK')}
	else{switchSize(Cookie.read("sizeFilter"))}
		
	
	var funDisableMenu = function(objMenu){
		var objParent = objMenu.getParent('ul')
		objParent.addClass('ulDisabled')
		objMenu.removeEvent('click')
		}
		
	var funDisableSizeMenu = function(){
		$("group3chooser").setStyle('display','none')
		$("divCheckingStock").setStyle('display','inline')
	}
	
	var funEnableSizeMenu = function(){
		$("group3chooser").setStyle('display','inline')
		$("divCheckingStock").setStyle('display','none')
	}
	
	//funDisableSizeMenu()
		
	var funEnableMenu = function(objMenu){
		var objParent = objMenu.getParent('ul')
		objParent.removeClass('ulDisabled')		
		}
		
	var objChain = new Class({
        Implements: [Chain,Events],
        initialize: function(){
            this.chain.apply(this, arguments);
			},
		complete: function(){
			this.fireEvent('complete');
		}

	    })
	
	var funLoadStock = function(){
		//$('pChooserMessage').set('html','Checking Stock')
		objShoes.each(function(item){
			var funcallAJAX = function(item, strProduct){
				var req = new Request({					
					method: 'get',
					url: 'http://www.backinaction.co.uk/subpages/sql_mbtstock.asp',
					data: {'strProductCode' : strProduct}, 
					onComplete : function(response){item.addClass(response)}
					}).send();
				}		
			funcallAJAX(item, item.get('rel'))
			})		
		}

	var callChain = new objChain(
		funLoadStock())
	callChain.addEvent('complete', function(){
															funEnableSizeMenu()
															}.delay(5000));

	var funFilterShoeStyles = function(strFilterGroup1, strFilterGroup2){
		$('pStockMessage').set('html','')
		var intShowAll = funShowAllShoes()	
		Cookie.write('mbtGROUP1', strFilterGroup1);
		Cookie.write('mbtGROUP2', strFilterGroup2);	

		// group 1
		var objFilterShoes = objShoes.filter(function(item){
			return !item.hasClass('gr1-'+strFilterGroup1)
			}) 
		if(strFilterGroup1!='all'){
			objFilterShoes.each(function(item){
				item.setStyle('display','none')
				item.setStyle('visibility','hidden')
				})
			}
	
		// group 2
		objFilterShoes = objShoes.filter(function(item){
			return !item.hasClass('gr2-'+strFilterGroup2)
			}) 
		if(strFilterGroup2!='all'){
			objFilterShoes.each(function(item){
				item.setStyle('display','none')
				item.setStyle('visibility','hidden')
				})
			}			
					
		};
	
	var funFilterShoeStock = function(strFilterGroup3){
		
		Cookie.write('mbtGROUP3', strFilterGroup3);

		// group 3
		if(strFilterGroup3!='ignore'){
			$('pChooserMessage').set('html','Checking Stock')
			objFilterShoes = objShoes.filter(function(item){
				return !item.hasClass('gr3-'+strFilterGroup3)
				}) 
			if(strFilterGroup3=='all'){
				objFilterShoes = objShoes.filter(function(item){
						return item.hasClass('gr3-nostock')															
					})
				}	
			objFilterShoes.each(function(item){
				item.setStyle('display','none')
				item.setStyle('visibility','hidden')
				})
			$('pChooserMessage').set('html','')
			}	
			var objVisibleShoes = objShoes.filter(function(item){
				return item.getStyle('display')=='inline'										   
				})
			if(objVisibleShoes.length==0){
				$('pStockMessage').set('html','Sorry! There are no shoes that fit your selection. We may have stock of another shoe in a different style')
				}
		};
		
		//alert(Cookie.read("mbtGROUP1")+':'+Cookie.read("mbtGROUP2")+':'+Cookie.read("mbtGROUP3"))

	if(bolFilterOnLoad==true){
	if(Cookie.read("mbtGROUP1")==null||Cookie.read("mbtGROUP2")==null||Cookie.read("mbtGROUP3")==null){
		var callFilterStyles = funFilterShoeStyles($('group1chooser').getElements('li > a.selected').get('rel'),$('group2chooser').getElements('li > a.selected').get('rel'));
		var callFilterSizes = function(){funFilterShoeStock($('group3chooser').getElements('li > a.selected').get('rel'))}.delay(5000);
		}
	else {
		var callFilterStyles = funFilterShoeStyles(Cookie.read("mbtGROUP1"),Cookie.read("mbtGROUP2"))
		var callFilterSizes = function(){funFilterShoeStock(Cookie.read("mbtGROUP3"))}.delay(5000);
		
		}
	}
	
	objGroup1.addEvent('click', function(event) {
		// menu selector
		if($defined(event)){event.preventDefault()}
		objGroup1.each(function(item){
			item.removeClass('selected');
		})
		this.addClass('selected');
		// group 1 filter
		funFilterShoeStyles(this.get('rel'),$('group2chooser').getElements('li > a.selected').get('rel'));
		funFilterShoeStock($('group3chooser').getElements('li > a.selected').get('rel'));
		});

	objGroup2.addEvent('click', function(event) {
		// menu selector
		if($defined(event)){event.preventDefault()}
		objGroup2.each(function(item){
			item.removeClass('selected');
		});
		this.addClass('selected')
		// group 2 filter
		funFilterShoeStyles($('group1chooser').getElements('li > a.selected').get('rel'),this.get('rel'));		
		funFilterShoeStock($('group3chooser').getElements('li > a.selected').get('rel'));
		});
	
	objGroup3.addEvent('click', function(event) {
		// menu selector
		if($defined(event)){event.preventDefault()}
		objGroup3.each(function(item){
			item.removeClass('selected');
		});
		this.addClass('selected')
		// group 3 filter
		funFilterShoeStyles($('group1chooser').getElements('li > a.selected').get('rel'),$('group2chooser').getElements('li > a.selected').get('rel'));
		funFilterShoeStock(this.get('rel'));
		});
		

});