var Site = {
	init: function() {
		//console.log('Site.init()');
		
		if ( $chk($('nav')) ) {
			Navigation.init();
		}
		
		if ( $chk($('shadow_boxes')) ) {
			ShadowBoxes.init();
		}
		
		if ( $chk($('footer')) ) {
			Navigation.footer();
		}
		
		$$('a.fancy').each(function(el) { 
			new FancyZoom(el); 
		});
		
		if ($chk($('introvideo'))) {
			$$('html')[0].addEvent('click', function(e) {
				if (!($(e.target).match('#introvideo') || $(e.target).getParent('#introvideo'))){
					$('introvideo').fade('hide');					
					$('introvideo').set('html', '');
					toggle = 'hidden';
				}
			});
		}
		
		if ($chk($('introvideo'))) {
			$('introvideoClose').addEvents({
				'click': function(e){
					e.stop();
					$('introvideo').fade('hide');
					$('introvideo').set('html', '');
					toggle = 'hidden';
				}
			});
		}
	}
}

var Navigation = {
	init: function() {
		//console.log('Navigation.init()');
		
		var navs = $$('.nav_item');
		var subnavs = [];
		var myStates = [];
		
		navs.each(function(e, i) {
			//console.log('Naving: ' + e.getElement('span').get('html'));
			myStates[i] = 'closed';
			
			e.getElement('span').addEvents({
				'mouseover': function(){
					this.setStyle('color', '#39393a');
				},
				'mouseleave': function(){
					this.setStyle('color', '#bec0c2');
				}
			});
			
			subnavs[i] = e.getElements('ul li');
			
			subnavs[i].each(function(e, i) {
				var myFx = new Fx.Morph(e, {
					duration: 100,
					transition: 'circ:in',
					link: 'cancel'
				});
				
				myFx.set({
					'margin-top': -15
				});
				
				e.getElement('a').addEvents({
					'mouseover': function(e) {
						this.setStyle('color', '#39393a');
					},
					'mouseleave': function(e) {
						this.setStyle('color', '#bec0c2');
					}
				});
			});
			
			var myFx = new Fx.Morph(e.getElement('ul'), {
				duration: 150,
				transition: 'circ:in',
				link: 'cancel'
			});
						
			myFx.set({
				'opacity': 0
			});
				
			e.addEvents({
				'click': function(event) {						
					if (myStates[i] == 'closed') {
						myFx.start({
							'opacity': 0.98
						});
							
						subnavs[i].each(function(e, i) {
							e.get('morph').start({
								'margin-top': 0
							});
						});
						
						current_nav = i;
						
						navs.each(function(e, i) {
							if (current_nav != i) {
								e.getElement('ul').get('morph').start({
									'opacity': 0
								});
								
								subnavs[i].each(function(e, i) {
									e.get('morph').start({
										'margin-top': -15
									});
								});
								
								myStates[i] = 'closed';
							}
						});
						
						myStates[i] = 'open';
					} else {
						myFx.start({
							'opacity': 0
						});
							
						subnavs[i].each(function(e, i) {
							e.get('morph').start({
								'margin-top': -15
							});
						});
						
						myStates[i] = 'closed';
					}					
				}
			});
			
		});
	},
	
	footer: function() {
		//console.log('Navigation.footer()');
		
		var directoryFx = new Fx.Morph('directory', {
			duration: 500,
			transition: 'expo:out',
			link: 'cancel'
		});
		
		directoryFx.set({
			'height': 0
		});
		
		$('footer_control').set('html', '[+] open corporate directory');
		var directory_state = 'closed';
		
		$('footer_control').addEvents({
			'mouseover': function() {
				this.setStyle('color', '#39393a');
			},
			'mouseleave': function() {
				this.setStyle('color', '#77787b');
			},
			'click': function(event) {
				event.stop();
				
				if (directory_state == 'closed') {
					directoryFx.start({
						'height': 140
					});
					
					this.set('html', '[-] close corporate directory');
					directory_state = 'open';
				} else {
					directoryFx.start({
						'height': 0
					});
					
					this.set('html', '[+] open corporate directory');
					directory_state = 'closed';
				}
			}
		});
	}
}

var myPeriodical;

var ShadowBoxes = {
	init: function() {
		//console.log('ShadowBoxes.init()');
		
		var large_windows = $$('ul#large_window li');
		var small_windows = $$('ul#small_window li');
		
		var highliteFx = new Fx.Morph('highlite', {
			duration: 500,
			transition: 'back:out',
			link: 'cancel'
		});
		
		var current_window = 0;
		//var myPeriodical;
		
		large_windows.each(function(e, i) {
			var myFx = new Fx.Morph(e, {
				duration: 250,
				link: 'cancel'
			});
			
			if (i == current_window) {
				myFx.set({
					'opacity': 1
				});
			} else {
				myFx.set({
					'opacity': 0
				});
			}
		});
		
		small_windows.each(function(e, i, array) {
			//console.log('Small Window ' + i + ' location: ' + getPosition().x);
			
			var myFx = new Fx.Morph(e.getElement('img'), {
				duration: 250,
				link: 'cancel'
			});
			
			if (i == current_window) {
				myFx.set({
					'opacity': 1
				});
			} else {
				myFx.set({
					'opacity': 0.4
				});
			}
						
			e.addEvents({
				'mouseover': function(event) {
					myFx.start({
						'opacity': 1
					});
				},
				'mouseleave': function(event) {
					if (i != current_window) {
						myFx.start({
							'opacity': 0.4
						});
					}
				},
				'click': function(event) {
					event.preventDefault();
					
					myPeriodical = $clear(myPeriodical);
					
					if (i != current_window) {
						large_windows[current_window].get('morph').start({
							'opacity': 0
						});
						
						small_windows[current_window].getElement('img').get('morph').start({
							'opacity': 0.4
						});
						
						current_window = i;
						
						large_windows[current_window].get('morph').start({
							'opacity': 1
						});
					}
					
					highliteFx.start({
						'left': e.getPosition().x - $(e.getOffsetParent()).getPosition().x
					});

				}
			});
		});
		
		var walker = function() {
			large_windows[current_window].get('morph').start({
				'opacity': 0
			});
						
			small_windows[current_window].getElement('img').get('morph').start({
				'opacity': 0.4
			});
			
			if (current_window == small_windows.length -1) {
				current_window = 0;
			} else {
				current_window++;
			}
						
			large_windows[current_window].get('morph').start({
				'opacity': 1
			});
			
			small_windows[current_window].getElement('img').get('morph').start({
				'opacity': 1
			});
					
			highliteFx.start({
				'left': small_windows[current_window].getPosition().x - $(small_windows[current_window].getOffsetParent()).getPosition().x
			});

		};
		
		/*if ( $chk($('afterdinner_form')) ) {
			myPeriodical = walker.periodical(5000);
		} else {
			myPeriodical = walker.periodical(5000);
		}*/
	}
}

AfterDinner = {
	send_coupon: function() {
		$('afterdinner_form').addEvents({
			'submit': function(e) {
				e.stop();
				
				var email_regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
				//console.log(this.get('action'));
				//console.log(this.toQueryString());
				//console.log(email_regex.test($('afterdinner_email').get('value')));
				
				if (email_regex.test($('afterdinner_email').get('value'))) {
					new Request({
						url: this.get('action'),
						method: 'post',
						data: this.toQueryString(),
						onRequest: function(){ 
							//console.log('Form submit request.');
							$('submit_message').set('html', '');
						},
						onSuccess: function(text){
							//console.log(text);							
							new Element('p', {
								'html': text
							}).inject('submit_message');
							
							$('afterdinner_submit').destroy();
						},
						onFailure: function(xhr){
							//console.log(xhr);
							
							new Element('p', {
								'html': xhr
							}).inject('submit_message');
						},
						onComplete: function(){}
					}).send();
				} else {
					new Element('p', {
						'html': 'Not a valid email address.'
					}).inject('submit_message', 'top');
				}
			}
		});
	}
}


window.addEvents({
	'domready': function() {
		//console.log('Window DOM Ready');
		
		Site.init();
		
		if ($chk($('introvideo'))) {
			$('introvideo').fade('show');
			toggle = 'show';
		}
	},
	
	'load': function(){
		//console.log('Window Locked and Loaded');
	}
	
});

