(function(window,$){
	$(function(){
		mwd.site.init();
		$("#bg-video").each(function(i,video){
			video.play();
		});
	    $("#bg-video").bind('ended', function(){
	    	this.play();
	    });
	});
	var mwd = {
		site: {
			init: function() {
				if ( navigator && navigator.userAgent && ( navigator.userAgent.indexOf('iPad') >= 0 || navigator.userAgent.indexOf('iPhone') >= 0 ) ) {

				} else {
					initWindowResize();
				}
				mwd.site.initSchoolMenu();
				mwd.wineryMap.init();
				mwd.gallery.init();
			},
			initSchoolMenu : function() {
				$("#content.school").each(function(i,node){
					var current = document.location.hash.substr(1);
					var _select = function(id,anim){
						var d = ( anim ? 400 : 0 );
						document.location.hash = id;
						$("#content article.active").fadeOut(d,function(){
							$(this).removeClass('active');
							$("#content article[rel="+id+"]").fadeIn(d,function(){
								$(this).addClass('active');	
							});
						});
					}
					if ( current != '' ) {
						_select(current,false);
					}
					$("#content .menu a").click(function(event){
						var id = $(this).data('id');
						_select(id,true);
						return false;
					});
				});
			}
		},
		gallery: {
			init:function(){
				$("#content.gallery-page").each(function(){
					var page_id = $(this).data('id');
					var last_id;

					// history state manager
					if ( window.addEventListener ) {
						window.addEventListener("popstate", function(e) {
							if ( event.state && event.state.gallery ) {
								last_id = event.state.gallery;
								mwd.gallery.load(event.state.gallery);
							}
						});
					}

					if ( page_id ) {
						$("#content.gallery-page > .container, #content.gallery-page > nav").addClass('loading');
						$.ajax({
							url:'/ajax/gallery/list.cfm',
							type:'GET',
							data: { id:page_id },
							dataType:'text', //get as text
							success:mwd.gallery.initNav
						});
					}
				});
			},
			initNav: function(data) {
				var nav = $("#content.gallery-page > nav");
				var id;
				var count;
				var inner;
				var last_id;
				var prev = document.createElement('a');
				var next = document.createElement('a');
				var clicked = false;

				moveNav = function(nav,fwd) {
					var count = $("li",nav).size();
					var ul = $("ul",nav);
					var left = ul.position().left;
					if ( !clicked ) {
						clicked = true;
						if ( fwd ) {
							if ( Math.abs(left) < Math.abs( ul.width() - $(nav).width() ) ) {
								ul.animate({'left': (left - 200)},function(){
									clicked = false;
								});
							} else {
								clicked = false;
							}
						} else {
							if ( Math.abs(left) > 0 ) {
								ul.animate({'left': (left + 200) },function(){
									clicked = false;
								});
							} else {
								clicked = false;
							}
						}
					}
					return false;
				}
				
				prev.className = 'navPrev';
				next.className = 'navNext';
				
				prev.href = next.href = '#';

				nav.append(innerShiv(data,false));
				nav.after(next);
				nav.after(prev);
				$(prev).click(function(){
					return moveNav(nav,false);
				});
				$(next).click(function(){
					return moveNav(nav,true);
				});
				inner = $('.inner',nav);
				count = $("li",nav).size();
				inner.css({width:(count * 200)});
				if ( document.location.hash && /^[0-9]+/i.test(document.location.hash.substr(1)) == true ) {
					id = document.location.hash.substr(1);
					$("li",nav).each(function(i,li){
						if ( $(li).data('id') == id ) {
							$(li).addClass('active');
						}
					});
				} else {
					id = $("li:first",nav).data('id');
					$("li:first",nav).addClass('active');
				}
				last_id = id;
				$(nav).removeClass('loading');
				$('li',nav).each(function(i,li){
					$(li).click(function(){
						var id = $(li).data('id');
						if ( !isNaN(parseInt(id)) && id != last_id ) {
							mwd.gallery.load(id);
							if ( history.pushState ) {
								var pushurl = document.location.href.split('#')[0];
								history.pushState({gallery:id},document.title,pushurl+'#'+id);
							} else {
								document.location.hash = id;
							}
							last_id = id;
							$("li.active",nav).removeClass('active');
							$(li).addClass('active');
						}
						return false;
					});
				});
				mwd.gallery.load(id);				
			},
			load:function(id) {
				$("#content.gallery-page .container").html('').addClass('loading').load('/ajax/gallery/get.cfm',{id:id},function(){
					$(this).removeClass('loading');
					$("html,body").animate({scrollTop:0},500);
					$("#content.gallery-page .gallery").easySlider({auto:false,continuous: true});
					$("#content.gallery-page .gallery").hide().fadeIn();
				});
			}
		},
		subscribe: {
			subscribe	: null,
			closing		: false,
			target		: '',
			open: function(_target) {
				$("#subscribe").remove();
				mwd.subscribe.subscribe = document.createElement('div');
				mwd.subscribe.subscribe.id = 'subscribe';
				$("body").append(mwd.subscribe.subscribe);
				if ( _target == 'newsletter' ) {
					mwd.subscribe.target = '/ajax/newsletter/';
				} else if ( _target == 'credits' ) {
					mwd.subscribe.target = '/ajax/credits/';
				} else {
					mwd.subscribe.target = '/ajax/subscribe/';
				}
				mwd.subscribe.load({},true);
				return false;
			},
			load: function(data,animate) {
				if ( typeof console != 'undefined' )
					console.log(mwd.subscribe.target);
				$(mwd.subscribe.subscribe).load(mwd.subscribe.target,data,function(result){
					if ( animate ) {
						$('.window',mwd.subscribe.subscribe).hide().fadeIn('slow');
						$('html,body').animate({'scrollTop':0},1000);
					}
					$('form',mwd.subscribe.subscribe).submit(mwd.subscribe.submit);
					$('select',mwd.subscribe.subscribe).each(mwd.subscribe.initSelect);
					$('.backdrop',mwd.subscribe.subscribe).click(mwd.subscribe.close);
				});
			},
			initSelect : function(i,node) {
				var source = node;
				var options = [];
				$(source).hide();
				var container = document.createElement('div');
				container.className = 'select';
				var placeholder = document.createElement('div');
				placeholder.className = 'select-box';
				var select = document.createElement('div');
				select.className = 'select-list';
				$(select).hide();
				onOptionSelected = function() {
					var value = $(this).data('value');
					placeholder.innerHTML = value;
					$(source).val(value);
					$(select).hide();
				}
				onPlaceholderClick = function() {
					console.log('click');
					$(select).show();
				}
				$(placeholder).click(onPlaceholderClick);
				$('option',source).each(function(k,option){
					var l = document.createElement('a');
					l.href = '#';
					l.innerHTML = option.value;
					$(l).data('value',option.value);
					select.appendChild(l);
					$(l).click(onOptionSelected);
				});
				container.appendChild(placeholder);
				container.appendChild(select);
				$(source).after(container);
			},
			close: function() {
				if ( !mwd.subscribe.closing ) {
					mwd.subscribe.closing = true;
					$('.window',mwd.subscribe.subscribe).fadeOut(function(){
						mwd.subscribe.closing = false;
						$(mwd.subscribe.subscribe).remove();
						mwd.subscribe.subscribe = null;
					});
				}
			},
			submit: function(event){
				var data = {}, pair, i,
					_data = $(this).serialize().split('&');
				for ( i in _data ) {
					pair = _data[i].split('=');
					data[pair[0]] = unescape(pair[1]);
				}
				mwd.subscribe.load(data,false);
				return false;
			}
		},
		wineryMap: {
			markerQueue : [],
			map : null,
			infoWindows : [],
			init : function() {
				$("#WineryContainer").each(function(i,container){
		      		function initialize() {
						var myOptions = {
							zoom: 7,
							center: new google.maps.LatLng(45.483243508682186, 10.74462890625),
							mapTypeId: google.maps.MapTypeId.SATELLITE,
					      	panControlOptions: {
					         	position: google.maps.ControlPosition.LEFT_CENTER
					      	},
							zoomControlOptions: {
								style: google.maps.ZoomControlStyle.LARGE,
								position: google.maps.ControlPosition.LEFT_CENTER
							},
					      	mapTypeControl: true,
		      				mapTypeControlOptions: {
		          				style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
		          				position: google.maps.ControlPosition.LEFT_CENTER
		      				}
						};
						mwd.wineryMap.map = new google.maps.Map(container,myOptions);
						for ( i in mwd.wineryMap.markerQueue ) {
							mwd.wineryMap.addMarker(mwd.wineryMap.markerQueue[i],0);
						}
					}
					google.maps.event.addDomListener(window, 'load', initialize);
				});
			},
			queueMarker : function(id,lat,lng,title,content){
				if ( lat && lng && lat != '' && lng != '' ) {
					var position = new google.maps.LatLng(lat,lng);
					var marker = {
						id: id,
						options: {
							position: position,
							title: title,
							icon: new google.maps.MarkerImage('http://www.simonitesirch.it/css/images/marker.png')
						}
					}
					mwd.wineryMap.markerQueue.push(marker);
				}
			},
			addMarker : function(data,timeout) {
				data.options.map = mwd.wineryMap.map;
				var infowindow = document.getElementById("infowindow-" + data.id );
				var infoBox = new InfoBox({
					alignBottom:true,
					pixelOffset: new google.maps.Size(48,30),
					content:infowindow.innerHTML
				});
				mwd.wineryMap.infoWindows.push(infoBox);
				setTimeout(function(){
					var marker = new google.maps.Marker(data.options);
				    google.maps.event.addListener(marker, 'click', function() {
						for ( i in mwd.wineryMap.infoWindows ) {
							mwd.wineryMap.infoWindows[i].close();
						}
						infoBox.open(mwd.wineryMap.map,marker);
				    });
				},timeout);
			}
		}		
	};
	
	window.mwd = mwd;

	function initWindowResize() {
		var background_image = $("#bgImage");
		var background_width = 0;
		var background_height = 0;
		var background_angle = 0;
		var ResizeBackgroundImage = function() {
			if(background_angle == 0 )
				setBackgroundValue();
			var window_width = $(window).width();
			var window_height = window.innerHeight ? window.innerHeight : $(window).height();
			var window_angle = Math.atan(window_height/window_width);

			if ( typeof console != 'undefined' ) {
				console.log('window_angle = ' + window_angle + ', background_angle = ' + background_angle );
				console.log('window_width = ' + window_width + ', background_width = ' + background_width );
				console.log('window_height = ' + window_height + ', background_height = ' + background_height );
			}

			if(window_angle > background_angle) {
				$(background_image).css('height','100%');
				$(background_image).css('top','0');
				$(background_image).css('margin-top','0px');
				$(background_image).css('width','');
				$(background_image).css('left','50%');
				var new_width = window_height / Math.tan(background_angle);
				$(background_image).css('margin-left','-' + new_width/2 + 'px');
			} else {
				$(background_image).css('width','100%');
				$(background_image).css('left','0');
				$(background_image).css('margin-left','0px');
				$(background_image).css('height','');
				$(background_image).css('top','50%');
				var new_height = Math.tan(background_angle) * window_width;
				$(background_image).css('margin-top','-' + new_height/2 + 'px');
			}
		}
		var setBackgroundValue = function() {
			$(background_image).removeAttr("width");
			$(background_image).removeAttr("height");
			$(background_image).css("width",'');
			$(background_image).css("height",'');
			background_width = $(background_image).width();
			background_height = $(background_image).height();
			background_angle = Math.atan(background_height/background_width);
			ResizeBackgroundImage();
		}
		setBackgroundValue();
		$(background_image).load(setBackgroundValue);
		$(window).resize(ResizeBackgroundImage);
	}
})(window,jQuery);
