var photoArr = [];
var curr = 0;
var inAnimation = false;
var menu1;
var menu2;
var memu3;

(function($){
	
	$.supersize = function( options ) {
		
		var settings = {
			vertical_center         :   1,		//Vertically center background
			horizontal_center       :   1,		//Horizontally center background
			min_width		        :   0,		//Min width allowed (in pixels)
			min_height		        :   0,		//Min height allowed (in pixels)
			fit_portrait         	:   0,		//Portrait images will not exceed browser height
			fit_landscape			:   0		//Landscape images will not exceed browser width
    	};

		if (options) {
			var options = $.extend(settings, options);
		}else{
			var options = $.extend(settings);
		}
			
		$(document).ready(function() {
			resizenow(); 
		});
		
		$(window).load(function(){
			resizenow();
		});
		
		$(window).resize(function(){
    		resizenow(); 
		});

	
		function resizenow() {
		
			thisSlide = $("#supersize img.activeslide");
		
			var ratio = (thisSlide.height()/thisSlide.width()).toFixed(2);
		
			var browserwidth = $(window).width();
			var browserheight = $(window).height();
		
			if ((browserheight <= options.min_height) && (browserwidth <= options.min_width)){
			
				if ((browserheight/browserwidth) > ratio){
					options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight(true);
				} else {
					options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth(true);
				}
			
			} else if (browserwidth <= options.min_width){
			
				if ((browserheight/browserwidth) > ratio){
					options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight();
				} else {
					options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth(true);
				}
				
			} else if (browserheight <= options.min_height){
			
				if ((browserheight/browserwidth) > ratio){
					options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight(true);
				} else {
					options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth();
				}
			
			} else {
			
				if ((browserheight/browserwidth) > ratio){
					options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight();
				} else {
					options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth();
				}
				
			}
		
			function resizeWidth(minimum){
				if (minimum){
					if(thisSlide.width() < browserwidth || thisSlide.width() < options.min_width ){
						if (thisSlide.width() * ratio >= options.min_height){
							thisSlide.width(options.min_width);
				    		thisSlide.height(thisSlide.width() * ratio);
				    	}else{
				    		resizeHeight();
				    	}
				    }
				}else{
					if (options.min_height >= browserheight && !options.fit_landscape){
						if (browserwidth * ratio >= options.min_height || (browserwidth * ratio >= options.min_height && ratio <= 1)){
							thisSlide.width(browserwidth);
							thisSlide.height(browserwidth * ratio);
						} else if (ratio > 1){
							thisSlide.height(options.min_height);
							thisSlide.width(thisSlide.height() / ratio);
						} else if (thisSlide.width() < browserwidth) {
							thisSlide.width(browserwidth);
				    		thisSlide.height(thisSlide.width() * ratio);
						}
					}else{
						thisSlide.width(browserwidth);
						thisSlide.height(browserwidth * ratio);
					}
				}
			};
		
			function resizeHeight(minimum){
				if (minimum){
					if(thisSlide.height() < browserheight){
						if (thisSlide.height() / ratio >= options.min_width){
							thisSlide.height(options.min_height);
							thisSlide.width(thisSlide.height() / ratio);
						}else{
							resizeWidth(true);
						}
					}
				}else{
					if (options.min_width >= browserwidth){
						if (browserheight / ratio >= options.min_width || ratio > 1){
							thisSlide.height(browserheight);
							thisSlide.width(browserheight / ratio);
						} else if (ratio <= 1){
							thisSlide.width(options.min_width);
				    		thisSlide.height(thisSlide.width() * ratio);
						}
					}else{
						thisSlide.height(browserheight);
						thisSlide.width(browserheight / ratio);
					}
				}
			};
		
			thisSlide.css('left', (browserwidth - thisSlide.width())/2);
			thisSlide.css('top', (browserheight - thisSlide.height())/2);
			
			$("#grid").width(browserwidth).height(browserheight);
			($("#thumbsContainer").length) ? $("#thumbsContainer").width(browserwidth) : null;
			
			if (options.image_protect){

				thisSlide.bind("contextmenu",function(){
					return false;
				});
				thisSlide.bind("mousedown",function(){
					return false;
				});

			}
		
		};
	
	};
	
})(jQuery);


$(function(){
	
	$(window).hashchange( function(){

		var hash = location.hash;
		var hashArray = location.hash.substr(1).split('/');
		var title = [];

		if(hashArray[0]){
			menu1 = '#'+hashArray[0];
			var str = hashArray[0].replace( /^#/, '' );
			title.push(str.slice(0,1).toUpperCase() + str.slice(1));
		}

		if(hashArray[1]){
			menu2 = '#'+hashArray[0]+"/"+hashArray[1];
			var str = hashArray[1].replace( /^#/, '' );
			var arr = str.split(/-/);
			for(var i=0,l=arr.length; i<l; i++) {
				arr[i] = arr[i].substr(0,1).toUpperCase() + 
					(arr[i].length > 1 ? arr[i].substr(1).toLowerCase() : "");
			}
			str = arr.join(" ");
			title.push(str);
		}

		if(hashArray[2]){
			menu3 = '#'+hashArray[0]+"/"+hashArray[1]+"/"+hashArray[2];
			var str = hashArray[2].replace( /^#/, '' );
			title.push(str.slice(0,1).toUpperCase() + str.slice(1));
		}

		title = title.reverse().join(" | ");
		document.title = ( title || 'Home' ) + ' | George Bamford Photography';

		
		if('home'===hashArray[0]&&!hashArray[1]||!hashArray[0]){
			highlightMenu1();
			$("#menu2:visible").slideToggle("medium");
			$("#text:visible").slideToggle("medium");
			$("#extras:visible").slideToggle("medium");
			$('#menu1Content:hidden').slideToggle("medium");
			//setTimeout("changeSupersize('/img/home/main.jpg');", 400);
			setTimeout("$.get(\"/home\", function(data) {changeSupersize('/uploads/images/' + data);});", 400);
		}
				
		if('folio'===hashArray[0]&&!hashArray[1]){
			highlightMenu1();
			$("#grid").unbind('click');
			$('#grid').css('cursor', 'default');
			
			setTimeout("$(\"#menu1Content:hidden\").slideToggle(\"medium\");", 400);
			
			$("#menu2:visible").slideToggle("medium");
			$("#text:visible").slideToggle("medium");
			setTimeout("$(\"#menu2\").load('/folio',function(){ $(\"#menu2\").slideToggle(\"medium\"); changeSupersize('/img/folio/main.jpg'); });", 400);
		}
		
		if('folio'===hashArray[0]&&hashArray[1]){
			highlightMenu1();
			$("#grid").unbind('click');
			$('#grid').css('cursor', 'default');
			
			setTimeout("$(\"#menu1Content:hidden\").slideToggle(\"medium\");", 400);
			
			if($("#menu2:hidden").length){
				setTimeout("$(\"#menu2\").load('/folio',function(){ $(\"#menu2:hidden\").slideToggle(\"medium\"); highlightMenu2(); });", 400);
			}else{
				highlightMenu2();
			}
			
			setTimeout("$(\"#menu3\").load('category/"+ hashArray[1] +"',function(){ changeSupersize(photoArr[curr][0]); $(\"#grid\").trigger('click'); });", 600);
											
			$('#grid').css('cursor', 'pointer');
			$("#grid").bind('click', function(event) {
				$('#menu1Content').slideToggle("medium");
				$('#menu2').slideToggle("medium");
			});
						
			$(".menu").bind('click', function(event) {
				if($('#menu1Content').css('display')!='none'){
					$(".menu").unbind('click');
					$("#grid").unbind('click');
					$('#grid').css('cursor', 'default');
				}else{
					event.preventDefault();
					$('#menu1Content:hidden').slideToggle("medium");
					$('#menu2:hidden').slideToggle("medium");
				}
			});
		}
		
		if('biog'===hashArray[0]&&!hashArray[1]){
			highlightMenu1();
			$("#grid").unbind('click');
			$('#grid').css('cursor', 'default');
			
			setTimeout("$(\"#menu1Content:hidden\").slideToggle(\"medium\");", 400);
			
			$("#menu2:visible").slideToggle("medium");
			$("#text:visible").slideToggle("medium");
			$("#extras:visible").slideToggle("medium");
			setTimeout("$(\"#text\").load('biog.php',function(){ $(\"#text\").slideToggle(\"medium\"); changeSupersize('/img/biog/main.jpg'); });", 400);
		}
		
		if('contact'===hashArray[0]&&!hashArray[1]){
			highlightMenu1();
			$("#grid").unbind('click');
			$('#grid').css('cursor', 'default');
			
			setTimeout("$(\"#menu1Content:hidden\").slideToggle(\"medium\");", 400);
			
			$("#menu2:visible").slideToggle("medium");
			$("#text:visible").slideToggle("medium");
			$("#extras:visible").slideToggle("medium");
			setTimeout("$(\"#text\").load('/contact',function(){ $(\"#text\").slideToggle(\"medium\"); changeSupersize(\'/img/contact/main.jpg\'); });", 400);
		}
		
		if('blog'===hashArray[0]&&!hashArray[1]){
			highlightMenu1();
			$("#grid").unbind('click');
			$('#grid').css('cursor', 'default');
			
			setTimeout("$(\"#menu1Content:hidden\").slideToggle(\"medium\");", 400);
			
			$("#menu2:visible").slideToggle("medium");
			$("#text:visible").slideToggle("medium");
			$("#extras:visible").slideToggle("medium");
			setTimeout("$(\"#text\").load('/blog',function(){ $(\"#text\").slideToggle(\"medium\"); changeSupersize(\'/img/blog/main.jpg\'); });", 400);
		}
		
		if('blog'===hashArray[0]&&hashArray[1]){
			highlightMenu1();
			$("#grid").unbind('click');
			$('#grid').css('cursor', 'default');
			
			setTimeout("$(\"#menu1Content:hidden\").slideToggle(\"medium\");", 400);
			
			if($("#text:hidden").length){
				setTimeout("$(\"#text\").load('/blog',function(){ $(\"#text\").slideToggle(\"medium\"); highlightMenu2(); changeSupersize(\'/img/blog/main.jpg\'); $(\"a[href^='"+menu2+"']\").trigger('click'); });", 400);
			}else{
				highlightMenu2();
			}
			
		}
		
	})

	$(window).hashchange();

});

function highlightMenu1() {
	$('#menu1 a.menuItem').each(function(){
		var that = $(this);
		that[ that.attr( 'href' ) === menu1 ? 'addClass' : 'removeClass' ]( 'selected' );
	});
}

function highlightMenu2() {
	$('#menu2 a.menuItem, #text a.menuItemBlog').each(function(){
		var that = $(this);
		that[ that.attr( 'href' ) === menu2 ? 'addClass' : 'removeClass' ]( 'selected' );
	});
}

$(document).ready(function() {		
	
	$('div#thumbs').click(function(){
		thumbsList();
	});
	
	$('div#next').click(function(){
		
		if(inAnimation) return false;
			else inAnimation = true;
		
		if(photoArr.length == 0){ curr=0;}
		else{ curr = (curr+1) % photoArr.length;}
						
		changeSupersize(photoArr[curr][0]);
		$("#description").html('<span>'+(curr+1)+'</span>/'+photoArr.length+' Images | <span>'+photoArr[curr][1]+'</span>');
		
	});
	
	$('div#prev').click(function(){
		
		if(inAnimation) return false;
			else inAnimation = true;
		
		if(photoArr.length == 0){ curr=0;}
		else if(curr>0){ curr = (curr-1)}
		else{curr = photoArr.length -1;}
						
		changeSupersize(photoArr[curr][0]);
		$("#description").html('<span>'+(curr+1)+'</span>/'+photoArr.length+' Images | <span>'+photoArr[curr][1]+'</span>');
		
	});
				
	$('div#text a.menuItemBlog').live('click', function() {
		$(this).css('outline','none');
		if($(this).parent().hasClass('current')) {
			$(this).siblings('div.blogTextContent').slideUp('slow',function() {
				$(this).parent().removeClass('current');
				$.scrollTo($(this).parent() ,1000);
			});
		} else {
			$('div#text div.current .blogContent').slideUp('slow',function() {
				$(this).parent().removeClass('current');
			});
			$(this).siblings('div.blogContent').slideToggle('slow',function() {
				$(this).parent().toggleClass('current');
			});
			$.scrollTo($(this).parent() ,1000);
		}
	});
	
	$('a.top').live('click', function() {
		$.scrollTo($('#wrapper') ,1000);
		return false;
	});

});

function changeSupersize(img){
	
	inAnimation = true;
	
	if($("#supersize img.activeslide").length){
	
		$("#supersize img.activeslide").removeClass('activeslide').addClass('prevslide');
	
		$("#supersize").append('<img class="activeslide" src="'+img+'" />');
		$("#supersize img.activeslide").hide()				
	
		$("#supersize img.activeslide").load(function(){
		
			$("#supersize").removeClass('quality').addClass('speed');
	
			$.supersize({
				min_width		        :   0,		//Min width allowed (in pixels)
				min_height		        :   0,		//Min height allowed (in pixels)
				vertical_center         :   1,		//Vertically center background
				horizontal_center       :   1,		//Horizontally center background
				fit_portrait         	:   1,		//Portrait images will not exceed browser height
				fit_landscape			:   0,		//Landscape images will not exceed browser width
				image_protect			:	1		//Disables image dragging and right click with Javascript
			});
		
			$("#supersize img.prevslide").fadeTo(500, 0, function(){
				$("#supersize img.activeslide").fadeTo(500, 1, function(){
					$("#supersize").removeClass('speed').addClass('quality');
					$("#supersize img.prevslide").remove();
					inAnimation = false;
				});
			})
		
		});
	
	}else{
		
		// Initialize
		
		$("#supersize").append('<img class="activeslide" src="'+img+'" />');
		$("#supersize img.activeslide").hide()	
		
		$("#supersize img.activeslide").load(function(){
		
			$("#supersize").removeClass('quality').addClass('speed');
	
			$.supersize({
				min_width		        :   0,		//Min width allowed (in pixels)
				min_height		        :   0,		//Min height allowed (in pixels)
				vertical_center         :   1,		//Vertically center background
				horizontal_center       :   1,		//Horizontally center background
				fit_portrait         	:   1,		//Portrait images will not exceed browser height
				fit_landscape			:   0,		//Landscape images will not exceed browser width
				image_protect			:	1		//Disables image dragging and right click with Javascript
			});
		
			$("#supersize img.activeslide").fadeTo(500, 1, function(){
				$("#supersize").removeClass('speed').addClass('quality');
				inAnimation = false;
			});
		
		});
		
	}
	
}

function thumbsList() {
	
	if(!$("#thumbsContainer").length) {
	
		var source = '';
		
		source += '<div id="thumbsContainer">';
		source += '<div id="thumbsList">';
		source += '<ul>';
	
		for(var i=0,l=photoArr.length; i<l; i++) {
			var highlight = (i == curr) ? ' class="highlight"' : ''; 
			var thumbs = photoArr[i][0].split('.')[0]+'_res.jpg';		
			source += '<li'+highlight+'>';
			source += '<img class="'+i+'" src="/uploads/thumbs'+thumbs.substr(15)+'" alt="'+photoArr[i][1]+'" />';
			source += '</li>';
		}
	
		source += '</ul>';
		source += '<br style="clear:both;" />';
		source += '</div>';
		source += '</div>';
	
		$("body").prepend(source);
		$("#thumbsContainer").hide();
		$("#thumbsContainer").width($(window).width());
		$("#thumbsContainer").fadeIn("fast");
	
		$('div#thumbsList img').click(function(e){
			e.preventDefault();
			changeSupersize(photoArr[$(this).attr("class")][0]);
			curr = parseInt($(this).attr("class"));
			$("#description").html(('<span>'+curr+1)+'</span>/'+photoArr.length+' Images | <span>'+photoArr[curr][1]+'</span>');
			$("#thumbsContainer").fadeOut("fast", function(){$("#thumbsContainer").remove();});
		});
	
	}
		
}
