var page = {
	init : function() {
		// Fix the height issue 
		window.addEvent('domready', function() {
			if ($('content_area').getSize().y < window.getHeight()) {
				$(document.body).setStyle('height', window.getHeight()+'px');
			}
			
			$$('.content').each(function(el) {
				if ($('left-col').getSize().y < el.getSize().y) {
					$('menu').setStyle('height', el.getSize().y - ($('left-col').getSize().y - $('menu').getSize().y));
				}
			});
		});
		
/*		window.addEvent('domready', function() {
			var accordion = new Accordion($('accordion'), 'input.toggler', 'div.el', {
				opacity : false,
				display : -1
			});
		});*/
	
		window.addEvent('domready', this.attachAddHandler);
		window.addEvent('domready', this.attachUpdHandler);
		window.addEvent('domready', this.attachVCHandler);
		if ($$('.pr_options')) window.addEvent('domready', this.attachExtraHandler);
		if ($('continue')) window.addEvent('domready', this.attachContHandler);
		window.addEvent('domready', this.attachAddToppings);
		window.addEvent('domready', this.writeToppings);
		window.addEvent('domready', this.attachFreeProducts);
				
		// Erase default values on Input Elements, restore them if submitted values are left blank
		$('content_area').getElements('input').addEvent('focus', this.clearInput);
		$('content_area').getElements('textarea').addEvent('focus', this.clearInput);
		
		if ($$('[id$=delivery]') != '') {
			if ($('delivery')) {
				$('delivery').addEvent('click', function() {
					if ($('delivery_options')) $('delivery_options').setStyle('display', 'block');
					if ($('collection_options')) $('collection_options').setStyle('display', 'none');
				});
			}
		}

		if ($$('[id$=collection]') != '') {
			if ($('collection')) {
				$('collection').addEvent('click', function() {
					if ($('delivery_options')) $('delivery_options').setStyle('display', 'none');
					if ($('collection_options')) $('collection_options').setStyle('display', 'block');
				});
			}
		}
		
		$$('.draggable').each(function(el) {
			new Drag(el, {
				snap: 0
			});
		});
		
		window.addEvent('load', function() {
			var today = new Date();
			var d = today.getDay();
			var m = today.getMonth()+1;
			var y = today.getFullYear()+"";
			y = y.substring(2,4);			
			
			new DatePicker('.date_toggled', { 
									pickerClass: 'datepicker_dashboard',
									allowEmpty: true,
									toggleElements: '.date_toggler',
									minDate: {
											date: d+'/'+m+'/'+y,
											format: 'd/m/y'
											},
									format: 'd/m/y'
								});
		});
		
		if ($('login_text')) $('login_text').addEvent('click', this.login);
		if ($('login_text_again')) $('login_text_again').addEvent('click', this.login);
		if ($('form_login_button')) $('form_login_button').addEvent('click', this.form_login);
		if ($('form_register_button')) $('form_register_button').addEvent('click', this.form_register);

		if ($('paybypaypal')) {
			TB_show('', '#TB_inline?width=400&inlineId=paybypaypal', '');
			window.addEvent('domready', (function() {
				$('paypal_form').submit();
			}).delay(3000));
		}
		
		
		if ($('waiting')) {
			window.addEvent('domready', (function() {
				page.smsprinter($('data').get('html'), 0);
			}).delay(2000));
		}
	},
	
	attachAddHandler: function() {
		$$('[id^=add_]').each(function(el) {
			var pr_id = el.getProperty('id').replace('add_', '');
			$('loader_'+pr_id).setStyle('visibility', 'hidden');
			el.addEvent('click', function() {
				page.addToCart(pr_id);
			});
		});
	},
	
	attachUpdHandler: function() {
		$$('[id^=update]').each(function(el) {
			el.addEvent('click', function() {
				page.updateCart();
			});
		});
	},
	
	attachVCHandler: function() {
		if ($('addvoucher')) {
			$('addvoucher').addEvent('click', function() {
				page.addVoucher();
			});
		}
	},
	
	attachExtraHandler: function() {
		var index = new Array;
		
		$$('.pr_options').each(function(el) {
			index.push(el);

			if (el.get('tag') == 'input') {
				var parent = el.getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent();
				var parent_id = parent.get('id').replace(/toppings_/, '');
				
				var extra_id = 'extras_'+parent_id;
				
				el.addEvent('click', function() {
					var pom_id = '';

					if ($(extra_id)) {
						$$('#'+extra_id+' select').each(function(el) {
							pom_id += el.value+'|';
						});
					}

					for (var i = 0; i < index.length; i++) {
						var indexP = index[i].getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent();
						if (indexP.get('id')) {
							if (indexP.get('id').replace(/toppings_/, '') == parent_id) {
								if (index[i].get('tag') == 'input') {
									if (index[i].checked == true) {
										pom_id += index[i].value+'|';
									}
								}
							}
						}
					}
					
					page.changeExtra(parent_id, pom_id);
				});
			
			} else {
				var parent = el.getParent();
				var parent_id = parent.get('id').replace(/extras_/, '');
			
				var topping_id = 'toppings_'+parent_id;
			
				el.addEvent('change', function() {
					var pom_id = '';				
					
					if ($(topping_id)) {
						$$('#'+topping_id+' input').each(function(el) {
							if (el.checked == true) {
								pom_id += el.value+'|';
							}
						});
					}
					
					for (var i = 0; i < index.length; i++) {
						var indexP = index[i].getParent();

						if (indexP.get('tag') == 'span') {
							if (indexP.get('id').replace(/extras_/, '') == parent_id) {
								pom_id += index[i].value+'|';
							}
						}
					}

					page.changeExtra(parent_id, pom_id);
				});
			}
		});
	},
	
	attachContHandler: function() {
		$('continue').addEvent('click', function() {
			page.continueCart();
		});
	},	
	
	attachAddToppings: function() {
		$$('.add_toppings').each(function(el) {
			el.addEvent('click', function() {
				if (el.get('id') && el.get('id').test(/^close_/)) {
					var id = el.get('id').replace('close_', '');
					if ($$('#toppings_'+id+' .add_toppings').each(function(el) {
						if (el.get('tag') == 'span') {
							var label = el.get('html').replace('» select ', '');
							label = label.replace(' from window', '');
							el.set('html', '+ add '+label);
						}
					}));
					$('display_toppings_'+id).setStyle('display', 'none');
				} else {
					var id = el.getParent().getProperty('id').replace('toppings_', '');
					if ($$('#toppings_'+id+' .add_toppings').each(function(el) {
						if (el.get('tag') == 'span') {
							var label = el.get('html').replace('+ add ', '');
							el.set('html', '&raquo; select '+label+' from window');
						}
					}));
					
					$('display_toppings_'+id).setStyle('display', 'block');
				}
			});
		});
	},
	
	writeToppings: function() {
		var index = new Array;
		
		$$('.pr_options').each(function(el) {
			index.push(el);

			if (el.get('tag') == 'input') {
				var parent = el.getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent();
				var parent_id = parent.get('id').replace(/toppings_/, '');
				
				var extra_id = 'extras_'+parent_id;
				
				el.addEvent('click', function() {
					var msg = '';

					for (var i = 0; i < index.length; i++) {
						var indexP = index[i].getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent().getParent();
						if (indexP.get('id')) {
							if (indexP.get('id').replace(/toppings_/, '') == parent_id) {
								if (index[i].get('tag') == 'input') {
									if (index[i].checked == true) {
										var label = index[i].getParent().getLast().innerHTML;
										label = label.replace(/-.*/, '');
									
										msg += label+'|';
									}
								}
							}
						}
					}

					var msg_count = msg.split(' |');

					if (msg_count.length > 2) {
						$('options_msg_'+parent_id).set('html', msg_count.join(', '));
					} else {
						$('options_msg_'+parent_id).set('html', msg.replace(' |', ''));
					}
				});
			}
		});
	},
	
	attachFreeProducts: function() {
		$$('.free_products').each(function(el) {
			el.addEvent('click', function() {
				if (el.get('id') && el.get('id').test(/^close/)) {
					$('free_products_display').setStyle('display', 'none');
				}
			});
		});
	},
	
	writeFreeProduct: function(el) {
		var url = $('url').value;
		var product = encodeURIComponent(el.value);
		
		// First update the Cart with the selected Free Product
		var formReq = new Request.HTML({
			url: url,
			method: 'get'
		});
		
		formReq.send('op=freeProduct&product='+product);
		
		// Then Display the selected free product to the user
		$('free_product_list').set('html', el.value);
	},
	
	changeExtra: function(id, pom_id) {
		var url = $('url').value;

		var formReq = new Request.HTML({
			url: url,
			method: 'get',
			
			onRequest: function() {

			},
			
			onSuccess: function(tree, el, response) {
				$('price_'+id).value = response;
				$('price_display_'+id).set('html', response);
			},
			
			onComplete: function() { 

			}
		});
			
		formReq.send('op=changeExtra&pr_id='+id+'&pom_id='+pom_id);
	},
	
	addToCart: function(pr_id) {
		var url = $('url').value;
		var ca_id = $('ca_id').value;
		var sc_id = $('sc_id').value;
		var price = $('price_'+pr_id).value;
		var qty = $('qty_'+pr_id).value;

		var index = new Array;
		var pom_id = new Array;
		var id = new Array;

		if ($$('#product_'+pr_id+' .pr_options')) {
			$$('#product_'+pr_id+' .pr_options').each(function(el) {
				if (el.get('tag') == 'select') {
					pom_id.push(el.value);
				}
			});
		}

		if ($('toppings_'+pr_id)) {
			$$('#toppings_'+pr_id+' input').each(function(el) {
				if (el.checked == true) {
					pom_id.push(el.value);
				}
			});
		}

/*		if (price == '0.00') {
			if ($('option_name_'+pr_id)) var option_name = $('option_name_'+pr_id).value;
			alert('Please select a '+option_name);
			return false;
		}*/

		var formReq = new Request.HTML({
			url: url,
			method: 'get',

			onRequest: function() {
				$('loader_'+pr_id).setStyle('visibility', 'visible');
				$('product_'+pr_id).setStyle('opacity', 0.3);
/*				var scroll = new Fx.Scroll(window, {
										duration: 'short'
									}).toElement('basket');*/
				
				var morph = new Fx.Morph('total_items', {transition: 'bounce:in'});
				morph.start({
					'font-size': '10px'
				});
			},
			
			onSuccess: function(tree, el, response) {
				var val = response.split('_');
				var total_items = val[0];
				var total_value = val[1];
				
				$('total_items').empty();
				$('total_items').set('html', total_items);
				$('cart_total').empty();
				$('cart_total').set('html', "&pound;"+page.number_format(total_value));
				$(pr_id+'_msg').setStyle('display', 'block');
				page.hideStatusMessage.delay(2000, $(pr_id+'_msg'));
				page.disableOpacity.delay(2000, $('product_'+pr_id));
				page.morphBasket.delay(500, $('total_items'));
			},
			
			onComplete: function() { 
				$('loader_'+pr_id).setStyle('visibility', 'hidden');
//				page.resetScroll.delay(1000, $('product_'+pr_id));
			}
		
		});

		formReq.send('op=addtocart&ca_id='+ca_id+'&sc_id='+sc_id+'&pr_id='+pr_id+'&price='+price+'&qty='+qty+'&pom_id='+pom_id.join('|'));

	},
	
	morphBasket: function() {
		var morph = new Fx.Morph(this, {transition: 'bounce:out'});
		morph.start({
			'font-size': '37px'
		});
	},
	
	resetScroll: function() {
		new Fx.Scroll(window, {
			duration: 'long',
			offset: {'x':0, 'y': -20}
		}).toElement(this);
	},

	hideStatusMessage: function() {
		this.setStyle('display', 'none');
	},
	
	disableOpacity: function() {
		this.setStyle('opacity', 1);
	},

	updateCart: function() {
		var url = $('url').value;
		
		var formReq = new Request.HTML({
			url: url,

			onSuccess: function(tree, el, response) {

			},
			
			onComplete: function() { 
				window.location = url+'?v';				
			}
			
		}).post($('cart'));

	},
	
	addVoucher: function() {
		var url = $('url').value;

		var formReq = new Request.HTML({
			url: url,
			method: 'get',
			
			onSuccess: function(tree, el, response) {
				if (response.test(/^error/i)) {
					var error = response.split('|');
					alert(error[1]);
				} else {
					window.location = url+'?v';
				}
			},
			
			onComplete: function() {

			}
		
		});
		
		formReq.send('op=getVC&voucher='+$('voucher').value);
	},
	
	continueCart: function() {
		var url = $('url').value;
		var sub_total = $('sub_total').value;
		
		var formReq = new Request.HTML({
			url: url,
			method: 'get',
			
			onRequest: function() {
			
			},
			
			onSuccess: function(tree, el, response) {
				if (response.test(/error/i)) {
					var error = response.split('|');
					$('error').set('html', error[1]);
				} else {
					$$('.show_basket').each(function(el) {
						el.empty();
						el.set('html', response);
					});
					$(document.body).setStyle('height', '800px');
					// Erase default values on Input Elements, restore them if submitted values are left blank
					$('content_area').getElements('input').addEvent('focus', page.clearInput);
					$('content_area').getElements('textarea').addEvent('focus', page.clearInput);
	
					if ($$('[id$=delivery]') != '') {
						if ($('delivery')) {
							$('delivery').addEvent('click', function() {
								if ($('delivery_options')) $('delivery_options').setStyle('display', 'block');
								if ($('collection_options')) $('collection_options').setStyle('display', 'none');
							});
						}
					}

					if ($$('[id$=collection]') != '') {
						if ($('collection')) {
							$('collection').addEvent('click', function() {
								if ($('delivery_options')) $('delivery_options').setStyle('display', 'none');
								if ($('collection_options')) $('collection_options').setStyle('display', 'block');
							});
						}
					}
				}
			},
			
			onComplete: function() {
							
			}
		});
		
		formReq.send('op=continuecart&sub_total='+sub_total);		
	},
	
	pay: function() {
		$('checkout_form').submit();
		$('checkout_info').set('html', 'Please wait while your order is being processed');
	},
	
	number_format: function(num) {
		num = "" + Math.floor(num*100.0 + 0.5)/100.0;
		
		var i = num.indexOf(".");
		
		if (i<0) num += ".00";
		else {
			num = num.substring(0,i)+"."+num.substring(i+1);
			i = (num.length - i) -1;
			if (i == 0) num += "00";
			else if (i == 1) num += "0";
			else if (i > 2) num = num.substring(0,i + 3);
		}
		
		return num;
	},
	
	clearInput : function() {
		if (this.type == 'text' || this.type == 'password' || this.type == 'textarea') {
			var original_val = this.value;
			this.value = '';

			this.addEvent('blur', function() {
				if (this.value == '') {
					this.value = original_val;
				}
			});
		}
	},
	
	login : function() {
		TB_show('', '#TB_inline?width=260&inlineId=login_box', '');
		
		$('TB_window').getElement('input[type=submit]').addEvent('click', function(e) {
			e.stop();
	
			var url = $('TB_window').getElement('input[id=login_url]').value;
	
			var data = 'email='+$('TB_window').getElement('input[name=email]').value+'&password='+$('TB_window').getElement('input[name=password]').value;
			
			var formReq = new Request({
				url : url,
				method : 'get',
				
				onSuccess : function(response) {
					if ($('TB_window')) {
						$('TB_window').getElements('input').removeClass('error');
					}
					
					if (response.test(/^error/)) {
						var error = response.split('|');
						
						if ($('TB_window')) {
							if ($('TB_window').getElement('input[name='+error[1]+']'))$('TB_window').getElement('input[name='+error[1]+']').addClass('error');
						}
					} else {
						window.location = response;
					}					
				}
			}).send(data);
		});
	},
	
	form_login : function(e) {
		e.stop();
		
		var url = $('form_login_url').value;
		var data = 'email='+$('register_login_form').getElement('input[name=email]').value+'&password='+$('register_login_form').getElement('input[name=password]').value;
		
		var formReq = new Request({
			url : url,
			method : 'get',
			
			onSuccess : function(response) {
				$('register_login_form').getElements('input').removeClass('error');
				
				if (response.test(/^error/)) {
					var error = response.split('|');
					
					if ($('register_login_form').getElement('input[name='+error[1]+']'))$('register_login_form').getElement('input[name='+error[1]+']').addClass('error');
				} else {
					if ($('register_login_form').getElement('input[name=referer]')) {
						window.location = $('register_login_form').getElement('input[name=referer]').value;
					}
				}		
			}
		}).send(data);
	},
	
	form_register : function(e) {
		e.stop();
		
		var url = $('form_register_url').value;
		var f = $('registration_form');
		var data = 'email='+f.getElement('input[name=email]').value+'&password='+f.getElement('input[name=password]').value+'&fname='+f.getElement('input[name=fname]').value+'&lname='+f.getElement('input[name=lname]').value+'&addr1='+f.getElement('input[name=addr1]').value+'&addr2='+f.getElement('input[name=addr2]').value+'&city='+f.getElement('input[name=city]').value+'&county='+f.getElement('input[name=county]').value+'&pcode='+f.getElement('input[name=pcode]').value+'&phone='+f.getElement('input[name=phone]').value;

		var formReq = new Request({
			url : url,
			method : 'get',
			
			onSuccess : function(response) {
				$('registration_error').setStyle('display', 'none');
				f.getElements('input').removeClass('error');
				
				if (response.test(/^error/)) {
					var error = response.split('|');
										
					var error_msgs = error[1].split(',');
					$('registration_error').setStyle('display', 'block');
					for (var i = 0; i < error_msgs.length; i++) {
						if (f.getElement('input[name='+error_msgs[i]+']'))f.getElement('input[name='+error_msgs[i]+']').addClass('error');	
					}
				} else {
					if (f.getElement('input[name=referer]')) {
						window.location = f.getElement('input[name=referer]').value;
					}
				}			
			}
		}).send(data);
	},
	
	smsprinter : function(data, counter) {
		var req = new Request.HTML({
			method : 'get',
			url : 'index.php',
			link : 'ignore',
			onSuccess : function(treel, el, response) {
				if (!response) {
//					if (counter < 5) {
						(function() {
							page.smsprinter($('data').get('html'), counter+1);
						}).delay(5000);
/*					} else {
						// Show Error to users
						$('waiting').setStyle('display', 'none');
						$('waiting_error').setStyle('display', 'block');
					}*/
				} else {
					$('waiting').getParent('div').set('html', response);
				}
			}			
		});
		
		req.send('op=smsprinter&data='+data);
	}
};

function initPage() { page.init();}

