var $j = jQuery.noConflict();
var animationLock = 0;
var duration = 500;
  
jQuery.easing.def = "easeOutQuad";     
     
$j(document).ready(function(){
	$j(".gallery").empty();
	//var fadeOut = $j("#slider .page").css('opacity', '0').css('display', 'block');

	var navigation = $j("#navigation li a");
	$j(navigation).each(function(i, elem){
	
		$j(this).click(function(e){
			var id = $j(this).attr("id").replace('toggle_', '');
			if(isManager == 0){
				e.preventDefault();
				//some form of animating locking needed
				showContent(id, this);
				//end/release the locking
			}
		});
	
	});

	//hide panes that aren't on display
	initOnDisplay();
	initRollovers();
	initDropCaps();
	initGalleryToggle();
	$j('.translucent').css('display', 'block');
	//initPNG();
	
});


$j(window).load(function(){
	loadImagery();
});

function initEventPopup(selector){
	//alert($j(".flyer a").length);
	
	var dimensions = $j("img", selector).attr('longdesc');
	new_window = window.open($j(selector).attr('href'), "new_window", "location=0,status=0,scrollbars=1," + dimensions);
	new_window.moveTo(0,0);
	
}

function initPNG(){

	DD_belatedPNG.fix('a, div#logo, img, .translucent, .trans, .popup, .gallery_descriptor, #navigation .glow, .thumbnail, .event, .event_title, .dropcap, .gallery_descriptor span, .page h3');
	
}

function loadImagery(){

	var allImgs = Array();
	var total = preload.length;
	
	$j(preload).each(function(i){
		
		allImgs[i] = new Image(); //new img obj
		allImgs[i].src = preload[i].replace(/&amp;/g, "&");
		
		$j(allImgs[i]).load(function(){
			
			loaded++;
			if(loaded == 1){
				//$j("#slider").fadeTo(400, 0.5);
				//$j("#slider").fadeIn('slow');
			}
			var percentage = Math.round(100 * (loaded / total));
			$j("#percentage").html(percentage + "%");
			
			if(loaded == total){
				//$j("#slider .page").css('display', 'block');
				assignBackgrounds();
				$j("#percentage").fadeTo(400, 0);
				loadGallery(preloadGallery, "#gallery_ul");
				loadGallery(preloadGallery2, "#yacht_gallery_ul");
			}
			
		});
		
	});

}

var locked = 0;

function loadEvent(id, dir){

	if(locked == 0){
		locked = 1;
		$j.get("index.php", {
			id: id
		}, function(data){
			locked = 0;
			if(dir == "prev"){
				$j("#event_holder").animate({left: '-960px'}, 500, 'swing', function(){
					
					$j(this).html(data);
					$j(this).css('left', '960px');
					$j(this).animate({left: '0px'});
				
				});
			} else {
				$j("#event_holder").animate({left: '960px'}, 500, 'swing', function(){
					
					$j(this).html(data);
					$j(this).css('left', '-960px');
					$j(this).animate({left: '0px'});
				
				});
			}
		});
	}
	
}

function assignBackgrounds(){

	$j(preload).each(function(i){
		var src = preload[i].replace(/&amp;/g, "&");
		var css_id = selectors[i];
		$j(css_id).css('background-image', 'url(' + src + ')');
	
	});

}

function loadGallery(tobePreloaded, target){
	var loadedGallery = 0;
	var allImgs = Array();
	
	var toBeLoaded = tobePreloaded.length;
	
	//this is cheating... and lazy, but works.
	/*
$j(preload).each(function(i){
	
		tobePreloaded.push(preload[i]);
	
	});
*/
	
	//var preloadGallery = preloadGallery.concat(preload);
	var total = tobePreloaded.length;
	
	$j(tobePreloaded).each(function(i){
		
		allImgs[i] = new Image(); //new img obj
		allImgs[i].src = tobePreloaded[i].replace(/&amp;/g, "&");
		allImgs[i].className = "thumbnail";
		
		var li = document.createElement("li");
		li.appendChild(allImgs[i]);
		//li = "<div class='thumb_wrap'>" + li + "</div>";
		$j(target).append(li);
		
		
		$j(allImgs[i]).load(function(){
			
			loadedGallery++;
			//alert(loadedGallery);
			if(loadedGallery == toBeLoaded){
				loadedGallery = 0;
				allImgs = Array();
				initGallery(target);
			}
			
		});
		
	});

}

function initDropCaps(){
	
	var selector = ".dropCaps_Yes .left-pane";
	
	$j(selector).each(function(){
		var first_paragraph = $j("p:first", this);
			
			$j(first_paragraph).each(function(){
				var me = $j(this);
				var txt = me.text().replace(/(^\w+)/,'<span class="dropcap dropcap_$1">$1</span>');
				me.html(txt);
				

					
				/*
var t = $j(this).text();
				var f = t.substring(0,1).toLowerCase();
				var end = t.substring(1);// + "</div>";
				t = "<span class='dropcap dropcap_" + f + "'>" + f + "</span>" + end + "";
				$//j(this).hide().replaceWith( t ).show();
				$j(this).html(t).addClass('dropCapped');
*/
					
			});
			
	});
	
}

function initGalleryToggle(){
	$j("#back_to_galleries").click(function(e){
		e.preventDefault();
		$j(this).animate({ left: '-140px'}, 'slow');
		
		$j('.ajaxed').fadeOut('slow');
		$j('.ajaxed a').css('display', 'none');
		galleryIndex = 4;
		$j(".gallery_ul, #gallery_ul").css('left', '0px');
		$j("#content_gallery .bottom-pane .slider").fadeIn('slow');
		
	});
	
}

function ajaxLoadGallery(doc_id){
	$j.get("index.php", { 
		id: "14", 
		doc_id: doc_id,
		action: "gallery" 
	}, function(data){
		$j("#dataDump").empty().append(data);
		$j("#dataDump").fadeIn('slow');
		$j(".loading").fadeOut('slow');
		$j("#back_to_galleries").animate({ left: '0px'}, 'slow');
		initGallery($j("#dataDump"));
	});

}

var galleryIndex = 4;

function initGallery(target){
	galleryIndex = 4;
	var parent_id = $j(target).attr('id');
	
	var thumbs = $j(".thumbnail", target);
	$j(thumbs).each(function(index){
	
		if(parent_id == 'gallery_ul'){
			$j(this).parents('li').append(descriptions[index]);
		}
	
		//alert(parent_id);
		$j(this).click(function(e){
			e.preventDefault();
			
			if(parent_id == 'gallery_ul'){
			
				var galleryID = galleryIds[index];
				$j("#content_gallery .bottom-pane .slider").fadeOut('slow');
				$j("#content_gallery .bottom-pane .loading").fadeIn('slow');
				ajaxLoadGallery(galleryID);
				
			} else {
			
				$j(this).parents('.page').css('background', 'url(' + $j(this).attr('src') + ') top left no-repeat');
				
			}
		});	
	
	});
	
	var length_of_gallery = thumbs.length;
	
	if(parent_id == "yacht_gallery_ul"){
		//alert($j('.next', $j(target).parents('.slider')).length);
		target = $j(target).parents('.slider');
	}

	$j('.next', target).click(function(e){
		var slider_div = $j(this).parents('.slider');
		
		if(parent_id == "yacht_gallery_ul"){
			
			var increment = '128';
		} else {
			var increment = '211';
		}
		
		e.preventDefault();
		if(galleryIndex + 1 > length_of_gallery){
			
			//do nothing
		} else {
			$j('.gallery', target).animate({
			
				left: '-=' + increment + 'px'
			
			});
			galleryIndex++;
		}
	
	});
	
	$j('.prev', target).click(function(e){
		var slider_div = $j(this).parents('.slider');
		
		if(parent_id == "yacht_gallery_ul"){
			var increment = '128';
		} else {
			var increment = '211';
		}
		e.preventDefault();
		if(galleryIndex == 4){
			//do nothing
		} else {
			$j('.gallery', target).animate({
			
				left: '+=' + increment + 'px'
			
			});
			galleryIndex--;
		}
	
	});
	
	if(parent_id == 'gallery_ul'){
	
		var target = $j("#sliderDump");
	
		$j('.next', target).click(function(e){
			//alert(parent_id);
			var slider_div = $j(this).parents('.slider');
			
			if(parent_id == "yacht_gallery_ul"){
				
				var increment = '128';
			} else {
				var increment = '211';
			}
			
			e.preventDefault();
			if(galleryIndex + 1 > length_of_gallery){
				
				//do nothing
			} else {
				$j('.gallery', target).animate({
				
					left: '-=' + increment + 'px'
				
				});
				galleryIndex++;
			}
		
		});
		
		$j('.prev', target).click(function(e){
			var slider_div = $j(this).parents('.slider');
			
			if(parent_id == "yacht_gallery_ul"){
				var increment = '128';
			} else {
				var increment = '211';
			}
			e.preventDefault();
			if(galleryIndex == 4){
				//do nothing
			} else {
				$j('.gallery', target).animate({
				
					left: '+=' + increment + 'px'
				
				});
				galleryIndex--;
			}
		
		});

	
	}

}

function initRollovers(){

	//$j('#navigation a').fancyletter();

	$j("#navigation .glow").hide();//fadeTo(0, 0);
	$j("#navigation .glow img").removeClass('hideAtLoad');
	
	$j("#navigation a").hover(
	
	function(e){
		showGlow($j(this));
	},
	function(e){
		if($j(this).hasClass('active')){
		
		} else {
			
			hideGlow($j(this));
		}	
	}
	
	
	);
	
	$j("#navigation .active").each(function(){
			$j(this).css('display', 'block');
			showGlow($j(this));
			$j(this).trigger('mouseenter');
	});
	
}

function showGlow(elem){
	
	var target = "#" + $j(elem).attr('id') + "_glow";
	var outerWidth = $j(elem).outerWidth() / 5;
	
	var left = $j(elem).position().left - 100 + outerWidth;
	
	//$j(target).parent('.glow').stop().fadeTo(500, 1).css('left', left);
	$j(target).parent('.glow').stop().css('left', left).show();
	$j(elem).stop().animate({
	    paddingTop: '8px'
	}, 200);
}

function hideGlow(elem){
	var target = "#" + $j(elem).attr('id') + "_glow";
	$j(target).parents('.glow').stop().hide();//fadeTo(500, 0);
	$j(elem).stop().animate({
		paddingTop: '10px'
	}, 200);
}

function initOnDisplay(){
	
	var pages = $j('.page');
	var lp_width = $j('.left-pane').outerWidth();
	
	$j(pages).each(function(i){
		
		if($j(this).hasClass('onDisplay')){
			
		
				var slider = $j('#content_zone #slider');
				
	
				var top = $j(this).outerHeight() * i;
				$j(slider).css('top', '-' + top + 'px');
				
			
		} else {
			
			$j(this).find('.left-pane').css('left', '-' + lp_width + 'px');
			
			$j(this).find('.bottom-pane').slideUp(0);
			
		}
	
	});
	
	
	
}

function createAnimationLock(){
	animationLock = 1;
}

function releaseAnimationLock(){
	animationLock = 0;
}

function showContent(id, clickedElement){
	
	
	
	if(animationLock == 0){
		if($j(clickedElement).hasClass('active')){
			//hideBottomPanes(id);
		} else {
		
			$j("#navigation .active").each(function(){
			
				hideGlow($j(this));
			
			});
		
			$j('.content_toggle').removeClass('active');
			$j(clickedElement).addClass('active');
			//start the sequence.
			createAnimationLock();
			setAnimationOptions(id);
			
			//hide stuff
				hideLeftPanes(id);
				hideBottomPanes(id);
			
			//slide stuff
				//alert(id);
				setTimeout(function(){slidePanes(id)}, 500);
				//slidePanes(id);
				
			//show stuff
				setTimeout(function(){showLeftPanes(id)}, duration + 500);
				//showLeftPanes(id);
				setTimeout(function(){showBottomPanes(id)}, duration + 500);
				//showBottomPanes(id);
			//allow other clicks again
			releaseAnimationLock();
		}
	}
	
}

function setAnimationOptions(target){
	var current = 1;
	var next = 1;
	$j('.page').each(function(i){
		
		if($j(this).attr('id') == "content_" + target){
			next = i;
		}
		
		if($j(this).hasClass('onDisplay')){
			current = i;
		}
	
	});
	
	var diff = Math.abs(current - next);
	
	if(diff < 2){
		diff = 2;
	}
	
	duration = 300 * diff;

}

function hideBottomPanes(target){

	var bottom_panes = $j(".onDisplay .bottom-pane");
	$j(bottom_panes).slideUp();

}

function showBottomPanes(target){

	var bottom_panes = $j("#content_" + target + " .bottom-pane");
	$j(bottom_panes).slideDown(500);

}



function hideLeftPanes(target){
	
	var left_panes = $j(".onDisplay .left-pane");
	var width = $j(left_panes).outerWidth();
	$j(left_panes).animate({
		left: '-=' + width
	}, 
		500,
		'swing',
		function(){
			$j(".left-pane").css('left', '-' + width + 'px');//make sure they're all hidden
		}	
	);
	
}



function showLeftPanes(target){
	var left_panes = $j("#content_" + target + " .left-pane");
	var width = $j(left_panes).outerWidth();
	$j(left_panes).animate({
		left: '+=' + width
	}, 
		500,
		'swing',
		function(){
			
		}	
	);
	
}

function slidePanes(target){
	
	var target_div = $j("#content_" + target);
	
	var top = $j(target_div).outerHeight();
	
	$j('.page').each(function(i){
		
		if($j(this).attr("id") == $j(target_div).attr("id")){
			top = i * top;
		}
	
	});
	
	
	
	var slider = $j('#content_zone #slider');
	
	$j(slider).animate({
	
		top: '-' + top
	
	}, 
		duration,
		'swing',
			function(){
				
				$j('.page').removeClass('onDisplay');
				$j(target_div).addClass('onDisplay');
			}
		
		);
	
}

$j(function () {
  $j('#buttoninteractive').each(function () {
    // options
    var distance = 30;
    var time = 250;
    var hideDelay = 500;

    var hideDelayTimer = null;

    // tracker
    var beingShown = false;
    var shown = false;
    
    var trigger = $j('.trigger', this);
    var popup = $j('.popup', this).css('opacity', 0);

    // set the mouseover and mouseout on both element
    $j([trigger.get(0), popup.get(0)]).mouseover(function () {
      // stops the hide event if we move from the trigger to the popup element
      if (hideDelayTimer) clearTimeout(hideDelayTimer);

      // don't trigger the animation again if we're being shown, or already visible
      if (beingShown || shown) {
        return;
      } else {
        beingShown = true;

        // reset position of popup box
        popup.css({
          top: -133,
          left: -50,
          display: 'block' // brings the popup back in to view
        })

        // (we're using chaining on the popup) now animate it's opacity and position
        .animate({
          top: '-=' + distance + 'px',
          opacity: 1
        }, time, 'swing', function() {
          // once the animation is complete, set the tracker variables
          beingShown = false;
          shown = true;
        });
      }
    }).mouseout(function () {
      // reset the timer if we get fired again - avoids double animations
      if (hideDelayTimer) clearTimeout(hideDelayTimer);
      
      // store the timer so that it can be cleared in the mouseover if required
      hideDelayTimer = setTimeout(function () {
        hideDelayTimer = null;
        popup.animate({
          top: '-=' + distance + 'px',
          opacity: 0
        }, time, 'swing', function () {
          // once the animate is complete, set the tracker variables
          shown = false;
          // hide the popup entirely after the effect (opacity alone doesn't do the job)
          popup.css('display', 'none');
        });
      }, hideDelay);
    });
  });
});
