//declare global variables
var IE_safe = Browser.Engine.trident && (navigator.userAgent.toLowerCase().indexOf('msie 8') == -1);
var IE6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) && (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1);
var started = false;
startup = function(){
	if(!started){		
		new menuBuilder();
		Cufon.now();
		resizeBackgroundImage();
		if(!IE_safe){
			$$('select.custom_dropdown').each(function(el,i){
				eval ('var dropdown_instance'+ String(i) + ' =  new MavSelectBox(el);');	
			});	
		};
		if($('fitting_room')){
			collapsePanels($('area_tabs'));
		};
		if($('product_tabs')){
			collapsePanels($('product_tabs'));
		};		
		if($('shop_form')){
			initShopBy();
		};
		started = true;
	};	
};
collapsePanels = function(obj){
	var tabs = obj.getChildren('li');
	tabs.each(function(el,i){					   
		if(i>0)	$('block'+i).setStyle('display','none');
		el.block = "block"+i;
		el.getElement('a').addEvent('click',function(){
			this.getParent().addClass('active').getSiblings().removeClass('active');
			for(var i=0; i < tabs.length; i++){
				$('block'+i).setStyle('display','none');
			};
			$(this.getParent().block).setStyle('display','block');
			return false;
		});
	});	
};
var initProductZoom = new Class({
        Implements: [Options, Events],
        options: {
			button: $('enlarge'),
			maxButton: $('maxZoom'),
			image: $('product_image'),
			thumbs: $('thumbs_holder')
        },
        initialize: function(options){
			_this = this;
			this.setOptions(options);					
			this.createDrag();
			this.enableThumbs();
        },
		createDrag: function(){
			this.imageDrag = new Drag(this.options.image,{limit:{x:[-600,0],y:[-697,0]}});
			this.imageDrag.detach();
			this.addZoom();
		},
		addZoom: function(){
			this.options.button.removeEvents().set('text','Click to zoom in').setStyle('background-position','right 0').addEvent('click',function(){											
				_this.options.image.setStyles({'width':950,'height':1194,'cursor':'move','top':-298,'left':-237});
				_this.imageDrag.attach();
				_this.removeZoom();
				return false;
			});
		},
		removeZoom: function(){
			this.options.button.removeEvents().set('text','Click to zoom out').setStyle('background-position','right -23px').addEvent('click',function(){
				_this.options.image.setStyles({'width':350,'height':440,'cursor':'default','top':0,'left':0});
				_this.imageDrag.detach();
				_this.addZoom();
				return false;
			});
		},
		enableThumbs: function(){
			this.options.thumbs.each(function(el){
				el.addEvent('click',function(){
					_this.swapImage(this.get('href'));
					return false;							 
				});								  
			});			
		},
		swapImage: function(target){
			this.options.image.set('src',target);
			this.options.maxButton.set('href',target);
		}
});
resizeBackgroundImage = function(){
	var s = window.getSize();
	var windowHeight = s.y;
	var windowWidth = s.x;	
	$('backgroundImageHolder').getChildren('img').each(function(el,i){
		this.w = el.get('width');
		this.h = el.get('height');
		resizeRatio = windowWidth/this.w;
		newWidth = this.w*resizeRatio;
		newHeight = this.h*resizeRatio;
		if(newHeight < windowHeight){				
			resizeRatio = windowHeight/this.h;					
			newWidth = this.w*resizeRatio;					
			newHeight = this.h*resizeRatio;				
		};
		if(newHeight > windowHeight){
			this.y = (newHeight - windowHeight)/2;
		}else{
			this.y = 0;
		};
		if(newWidth > windowWidth){	
			this.x = (newWidth - windowWidth)/2;
		}else{
			this.x = 0;
		};
		el.setStyles({'width':newWidth,'height':newHeight,'top':-this.y,'left':-this.x});	
	});
};
var menuBuilder = new Class({
        Implements: [Options, Events],
        options: {			
        },
        initialize: function(options){
			this.setOptions(options);	
			this.getURI();		
        },
		getURI: function(){	
			try{				
				this.uriKey = String(window.location).split("/")[4].replace('_',' ').toLowerCase().capitalize();
				this.findActive();	
			}catch(err){};						
		},
		findActive: function(){
			this.active = $$('li.selected');
			if(this.active == null || this.active == "") {				
				if(String(window.location).split("/")[3].replace('_',' ').toLowerCase().capitalize() == "Product"){
					this.dept = $('toplinks').getLast('a').get('text').toLowerCase().capitalize();					
					$('content').getElement('h1').set('text',this.dept);
					var self = this;
					$('menu').getElements('a').each(function(el){
						if(el.get('text').toLowerCase().capitalize().contains(self.dept))el.getParent().addClass('selected');
					});
					this.active = $$('li.selected');
				};				
			};
			try{
				this.active.getElement('a').setStyle('color','#af006e');
			}catch(err){};
			try{
				this.active.getElement('ul').setStyle('display','block');
			}catch(err){};
			try{
				this.active.getParent('ul').setStyle('display','block');
				this.active.getParent('ul').getPrevious('a').setStyle('color','#af006e');
			}catch(err){};
			try{
				this.active.getParent('ul').getParent('ul').setStyle('display','block');
			}catch(err){};			
		}
});
initShopBy = function(){
	var safeMode = true;
	$('dressBox').setStyle('display','none');
	try{
		$('item').getNext('div.select-box').getElements('li').addEvent('mousedown',function(){
			showHide(this.get('text'),null);
		});		
		safeMode = false;
	}catch(err){};
	if(safeMode){
		$('item').addEvent('change',function(){
			showHide(this.get('value'),null);
		});		
	};
	$('shop_form').getElements('input[type=radio]').addEvent('click',function(){
		showHide(null,this.get('value'));
	});	
	showHide = function(currentItem, switchRadio){
		if(currentItem){
			if(currentItem == "Full Set" || currentItem == "set"){	
				$('radios').setStyle('display','block');
				$('braBox').setStyle('display','block');
				$('dressBox').setStyle('display','none');
			}else if(currentItem == "Bra / Top" || currentItem == "top"){
				$('radios').setStyle('display','none');
				$('braBox').setStyle('display','block');
				$('dressBox').setStyle('display','none');
			}else if(currentItem == "Knickers / Thong" || currentItem == "bottom"){
				$('radios').setStyle('display','none');
				$('braBox').setStyle('display','none');
				$('dressBox').setStyle('display','block');
			}else if(currentItem == "Suspenders" || currentItem == "suspender"){
				$('radios').setStyle('display','none');
				$('braBox').setStyle('display','none');
				$('dressBox').setStyle('display','block');
			}else if(currentItem == "Sleepwear" || currentItem == "gown"){
				$('radios').setStyle('display','none');
				$('braBox').setStyle('display','none');
				$('dressBox').setStyle('display','block');
			}else if(currentItem == "Swimwear" || currentItem == "swimwear"){
				$('radios').setStyle('display','none');
				$('braBox').setStyle('display','none');
				$('dressBox').setStyle('display','block');
			}
			if(currentItem == "Swimwear" || currentItem == "swimwear"){
				var sizeAlreadyThere = $('dress').getElements('option:contains("14-16")');
				if(safeMode){	
					if(sizeAlreadyThere == null || sizeAlreadyThere == ""){
						new Element('option',{text:'14-16',value:'xl'}).inject('dress');
					}
				}else{
					$('dress').getNext('div.select-box').getElements('li:contains("14-16")').setStyle('display','block');
				}
			}else{
				if(safeMode){
					$('dress').getElements('option:contains("14-16")').destroy();
				}else{
					$('dress').getNext('div.select-box').getElements('li:contains("14-16")').setStyle('display','none');
				}
			};
		}else if(switchRadio){
			if(switchRadio == "dress"){
				$('braBox').setStyle('display','none');
				$('dressBox').setStyle('display','block');
			}else if(switchRadio == "bra"){
				$('braBox').setStyle('display','block');
				$('dressBox').setStyle('display','none');
			}
		};
	};	
	$('shop_form').getElement('input[type=submit]').addEvent('click',function(event){
		$('shop_by').setStyles({'background':'url(/css/images/menu_background_small.gif) repeat-y'});
		$('filter_results').set('html','<img src="/css/images/ajax-loader.gif" style="margin:10px;" />');	
		if($('item').get('value') != ""){
			new Request.HTML({  
				method: 'post',  
				url: '/eaction/ecom.search/',  
				data: $('shop_form'),
				evalResponse :true,
				evalScripts :false,
				onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){	
					responseElements.each(function(element){	
						try{
							if(element.get('id') == 'results'){	
								if(element.get('text').length > 20){
									element.getElements('a').set('target','_blank');
									$('filter_results').empty().adopt(element);	
								}else{
									$('filter_results').set('html','<p>Sorry, no results found. Please try again</p>');	
								};										
							};
						}catch(err){};					
					});	
				}
			}).send();		
		}else{
			$('filter_results').set('html','<p>Sorry, please select an item first.</p>');
		};
		event.stop();
	});	
};
initProductForms = function(){	
	function addToBasket(f){
		var message = f.getElement('p.formMessage');
		message.set('html','Adding to basket...');
		var show = new Fx.Morph(message, {duration:'500', transition: Fx.Transitions.Sine.easeOut,onComplete:function(){																			  
				new Request({  
					method: 'post',  
					url: '/eaction/ecom.addtocart/',
					evalScripts :false,
					data: f,
					onComplete: function(response){					
						if(response){				
							new Request.HTML({  
								method: 'post',  
								url: '/eaction/ecom.viewcart/', 
								evalResponse :true,
								evalScripts :false,
								onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){
									if(responseElements){
										responseElements.each(function(element){
											try{
												if(element.get('id') == 'totalItems'){
													$('totalItems').set('text',element.get('html'));
												};
											}catch(err){};
											try{
												if(element.get('id') == 'grandTotal'){
													$('grandTotal').set('text',element.get('html'));
													message.set('html','Product was successfully added to your shopping basket.');
													setTimeout(clearMessage,1000);
												};
											}catch(err){};					
										});
									}else{
										message.set('html','Sorry there has been an error.');
										setTimeout(clearMessage,1000);
									}
								}
							}).send();				
						}
					}
				}).send();
		}}).start({
			'height': [0, 30],
			'line-height': [0, 30]
		});
		function clearMessage(){
			message.set('html','');	
			var hide = new Fx.Morph(message, {duration:'500', transition: Fx.Transitions.Sine.easeOut
			}).start({
				'height': [30, 0],
				'line-height': [30, 0]
			});
		};
		//var iframe = new IFrame({
				//'src':'/eaction/ecom.viewcart/',
				//'id':'iFrameCart',
				//'height':1,
				//'width':1,
				//'onload':window.location.reload(true)
		//}).inject(document.body);
	};
	$$('form.buy').each(function(el){
		el.getElement('input[type=submit]').addEvent('click',function(event){
			this.getAllPrevious('.select-box').setStyle('outline','none').getElement('a').setStyle('color','#80736A');
			exc = true;				
			if(this.getPrevious('input[type=hidden]').get('value') == "qty"){
				exc = false;
				this.getPrevious('.select-box').setStyle('outline','solid 1px #af006e').getElement('a').setStyle('color','#af006e');
			}
			if(this.getPrevious('input[type=hidden]').getPrevious('input[type=hidden]').get('value') == "size"){
				exc = false;
				this.getPrevious('.select-box').getPrevious('.select-box').setStyle('outline','solid 1px #af006e').getElement('a').setStyle('color','#af006e');
			}
			if(exc){			
				addToBasket(this.getParent('form'));
			}
			event.stop()
		});
	});
};
initStockist = function(){
	var safeMode = true;
	var mov = new Swiff('/flash/stockists.swf', {
		id: 'stockists',
		width: "710",
		height: "500",
		container: 'stockistsHolder',
		params: { wMode: 'transparent', background: '#fff', swLiveConnect:true}			
	});
	try{
		$('stockist').getElement('ul.select-box-options').getChildren('li').addEvent('mousedown',function(){
				this.getParent().setStyle('display','none');
				target = this.get('text').toLowerCase();
				if(target == "uk & ireland") target = "uk";
				$(mov).goto(target);
		});
		safeMode = false;
	}catch(err){};
	if(safeMode){
		$('country_selector').addEvent('change',function(){
			target = this.get('value').toLowerCase();
			if(target == "uk & ireland") target = "uk";
			if(target == "mexiico") target = "mexico";
			$(mov).goto(target);		
		});
	};			
};
initFleursWorld = function(){
	var mov = new Swiff('/flash/fleursWorld.swf', {
		id: 'fw',
		width: "710",
		height: "500",
		container: 'fleursWorldHolder',
		params: { wMode: 'transparent', background: '#fff', swLiveConnect:true}			
	});
};
initPress = function(){
	/*var coversArray;
	var safeMode = true;
	try{
		var opts = $('press').getElement('ul.select-box-options');
		$('press').getElement('div.select-box').setStyle('opacity',0);
		safeMode = false;
	}catch(err){};
	initDropDown = function(){
		if(safeMode){
			var selectList = $('cover_selector')
			for(i=0;i<(coversArray.length-1);i++){
				new Element('option',{text:((i+1) + ' - '+ coversArray[i]),value:(i+1)}).inject(selectList);				
			};
			selectList.addEvent('change',function(){
				target = this.get('value');
				$(mov).goto(target);
			});
		}else{
			$('press').getElement('div.select-box').setStyle('opacity',100);
			for(i=0;i<(coversArray.length-1);i++){
				new Element('li',{text:((i+1) + ' - '+ coversArray[i])}).inject(opts).addEvent('mousedown',function(){
					this.getParent().setStyle('display','none');
					//target = this.get('text').toLowerCase().replace(/(^\d+)(.+$)/i,'$1');
					$(mov).goto(target);
				});
			};
		};
	};
	new Request({  
		method: 'post',  
		url: '/admin/return_press.php?action=ajax',			
		onComplete: function(response){	
			coversArray = response.split(',');	
			initDropDown();
		}
	}).send();*/
	var mov = new Swiff('/flash/press.swf', {
		id: 'pressMov',
		width: "710",
		height: "500",
		container: 'pressHolder',
		params: { wMode: 'transparent', background: '#fff', swLiveConnect:true}			
	});
};
window.addEvent('domready', function() {
	startup();
	if(IE6){		
		$('backgroundImageHolder').setStyles({'position':'absolute','top':0,'left':0}).pin();		
	};
	if($('product_image_holder')){
		initProductForms();
		new initProductZoom({
                button: $('zoomView'),
				maxButton: $('fullSizeView'),
				image: $('product_image_holder').getElement('img'),
				thumbs: $('thumbs').getChildren('a')
        });
	};	
	if($('stockistsHolder')){
		initStockist();
	};
	if($('fleursWorldHolder')){
		initFleursWorld();
	};
	if($('pressHolder')){
		initPress();
	};
	resizeBackgroundImage();	
});
window.addEvent('resize',function(){	
	resizeBackgroundImage();	
});