/*
* modal popup
*/

var mask = null;
var bodyContent = null;
var popUp = null;

function showModalPopUp( url,loadId ){

	bodyContent = $(document.body);
	if ( bodyContent ){
		popUp = $("popUp");
		var menus = $("menus");
		if ( popUp ){

			mask = new Mask(bodyContent,{
				hideOnClick : true,
				useIframeShim : true,
				style : {
					"backgroundColor": "#000",
					"opacity": 0.8
				},
				onClick: function(evt){
					popUp.setStyle( 'display', 'none' );
				}
			});
			mask.show();
			popUp.setStyle( 'display', 'block' );
			popUp.setStyle( 'left', -999999 );
			
			var request = new Request.HTML({
				link : "cancel",
				url: url,
				evalScripts : false,
				onFailure: function(){
					mask.hide();
					popUp.setStyle( 'display', 'none' );
					alert("Unable to load page, please contact us.");
				}.bind(this),
				onSuccess: function(nodeTree,nodeList, HTML, JavaScript) {
					
					for(var x=0; x<nodeList.length; x++){
						var elm = nodeList[x];
						if ( elm.id == loadId ){
							var currContents = $(loadId);
							if( currContents ){
								currContents.dispose();
							}
							popUp.adopt(elm);
							eval(JavaScript);
						}
						break;
					}
					
					$("kamModalCloseLink").addEvent("click",function(evt){
						evt.preventDefault();
						mask.hide();
						popUp.setStyle( 'display', 'none' );
						this.blur();
					});
					
					setupGallery(kamPlaylist);
				}
			}).get()
			
			centrePopup();
		}
	}
}

function centrePopup(){
	if( mask && popUp ){
		var containerDimensions = bodyContent.getCoordinates();
		var popUpDimensions = popUp.getCoordinates();
		var posTop = (containerDimensions.height * .5) - (popUpDimensions.height * .5);
		var posLeft = (containerDimensions.width * .5) - (popUpDimensions.width * .5);
		popUp.setStyle( 'top', posTop );
		popUp.setStyle( 'left', posLeft );
		popUp.setStyle( 'z-index', "999999" );
		popUp.setStyle( 'position', "absolute" );
		mask.position();
	}
}

/*
* custom gallery setup
*/

var kamSetNav = null;
var kamGallery = null;
var kamSetNav = null;
var kamSetThumbNavs = null;
var kamImageThumbsContainers = null;
var kamTargets = null;
var kamVideo = null;
var kamGallerySetup = false;
var kamPlayerLoadedFlag = false;
var kamCurrentImage = "";
var kamNextImage = "";
var kamPrevImage = "";
var kamImages = [];

function setupGallery(kamPlaylist){
	kamGallery = $("kamGallery");
	if( kamGallery ){
		var kamGalleryMain = $("kamGalleryMain");
		
		// create pre/next nav
		var prevButton = new Element("img", {
			"src":"/style/images/gallery/nav-prev.png",
			"events": {
				"click" : function(evt){
					$("kamCurrentImage").getElement("img").set("src",kamPrevImage);
					setImageNav(kamPrevImage);
				}
			},
			"styles": {
				"position":"absolute",
				"marginTop":"20px",
				"cursor":"pointer"
			}
		});
		kamGalleryMain.grab( prevButton,"top" );
							
		var nextButton = new Element("img", {
			"id":"galleryNextButton",
			"src":"/style/images/gallery/nav-next.png",
			"events": {
				"click" : function(evt){
					$("kamCurrentImage").getElement("img").set("src",kamNextImage);
					setImageNav(kamNextImage);
				}
			},
			"styles": {
				"position":"absolute",
				"marginLeft":"591px",
				"marginTop":"20px",
				"cursor":"pointer"
			}
		});
		nextButton.inject(kamGalleryMain,"top");

		kamImageThumbsContainers = $$("#kamGalleryThumbSets .item");
		kamImageThumbsContainers.each(function(tElm,index){
			if( index>0 ){
				tElm.setStyle("display","none");
			}
		});

		kamTargets = kamGalleryMain.getElements("div");			
		kamTargets.each(function(tElm,index){
			if( index>0 ){
				tElm.setStyle("display","none");
			}
		});
		
		kamImageThumbsContainers.each( function(elm,index){
			elm.getElements("a").each( function(linkElm,index){
				var href = linkElm.href;
				if( href ){
					if( href.contains(".jpeg") || href.contains(".jpg") || href.contains(".png") || href.contains(".gif") ){
						kamImages[kamImages.length] = href;	
					}
				}
				linkElm.addEvent("click", function(evt){
					evt.preventDefault();
					var target = $(this.rel);
					if( target ){
						kamTargets.each(function(tElm){
							tElm.setStyle("display","none");
						});
						target.setStyle("display","block");
						if( target.hasClass("image") ){
							target.getElement("img").set("src",this.href);
							setImageNav(this.href);
						}
						else if( target.hasClass("video") ){
							kamLoadVideo(this.href)
						}
					}
				});
			});
		});
		
		setImageNav(document.location.protocol+"//"+document.location.host+$("kamCurrentImage").getElement("img").get("src"));
		
		kamSetNav = $("kamGallerySetNavigation");
		if( kamSetNav ){

			kamSetNav.getElements("a").each(function(elm,index){
				elm.addEvent("click", function(evt){
					evt.preventDefault();
					kamImageThumbsContainers.each(function(tElm,index){
						tElm.setStyle("display","none");
					});
					var display = $("kam"+this.href.substring(this.href.indexOf("#")+1,this.href.length)+"Container");
					if( display ){
						display.setStyle("display","block");	
					}
				});

			});
		}

		kamPlayerLoadedFlag = false;
		kamVideo = $("kamVideo");
		if( kamVideo && kamPlaylist ){
			swfobject.embedSWF("/style/flash/KamVideoPlayer.swf", "kamVideo", 639, 601, "9.0.0", null, kamPlaylist );
			kamVideo = $("kamVideo");
		}
		kamGallerySetup = true;
	}
}

function setImageNav(currentlyLoaded){
	var prevIndex = 0;
	var nextIndex = 0;
	for( var i=0; i<kamImages.length; i++ ){
		if( currentlyLoaded==kamImages[i] ){
			prevIndex = i-1;
			nextIndex = i+1;
			break;
		}
	}
	prevIndex>-1 ? prevIndex : prevIndex=(kamImages.length-1);
	nextIndex<(kamImages.length) ? nextIndex : nextIndex=0;
	kamNextImage = kamImages[nextIndex];
	kamPrevImage = kamImages[prevIndex];
}

var kamPendingVideoUrl = null;

function kamLoadVideo(url){
	if( kamPlayerLoadedFlag ){
		kamVideo.movieURL(url);
	}
	else{
		kamPendingVideoUrl = url;
	}
}

function kamPlayerLoaded(loaded){
	kamPlayerLoadedFlag = loaded;
	if( kamPendingVideoUrl ){
		kamVideo.movieURL(kamPendingVideoUrl);
	}
}


/*
* dom ready
*/

window.addEvent("domready", function(){

	$(document.body).grab(new Element("div",{	id:"popUp" }));
	
	$$("a").each(function(elm){

		var rel = elm.get("rel");
		if( rel ){
			if( rel.indexOf("kamPopUp")!=-1 ){
				elm.addEvent("click", function(evt){
					evt.preventDefault();
					window.open(elm.href);
				});
			}
		}
		else if( elm.href.indexOf("/gallery")!=-1 ){
			elm.addEvent("click", function(evt){
				evt.preventDefault();
				showModalPopUp(elm.href,"kamGallery");
				setupGallery();
			});
		}
	});
	
	window.addEvent("resize", function(){
		centrePopup();							   
	});
	
	// modal popup did not work
	if( !$("wrap") ){
		setupGallery();
	}
});
