// --------------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------------
// behaviours - Dialog (Lightbox);
// depends: 	jQuery UI library;
// author:		nr;
// --------------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------------


function grabParam(name,url){
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( url );
	if (results == null) {
		return "";
	}
	else {
		return results[1];
	}
}

var videoOverlayPlayer = new (function() {

	function getAssetPathName(className) {
		if(className.length === 0) return;
		var classes = className.split(" "),
			i = classes.length-1,
			assetPathName = "";
		for (i; i>=0; i--) {
			if (/assetPathName/.test(classes[i])) {
				assetPathName = "/" + classes[i].split("=")[1] || "";
				break;
			}
		}
		return assetPathName;
	}

	var flashLoader = {
		youTube: function(container){
			var videoUrl = "http://www.youtube.com/v/" + grabParam('v',container.href) + "&hl&hl=en&fs=1&";
			var so = new SWFObject(videoUrl, "", "640", "385", "9.0.0", "#ffffff");
			so.addVariable("flashvars", container.id);
			so.addVariable("allowScriptAccess", "always");
			so.write("dialog");
			$("#dialog").dialog({
				modal: true,
				autoOpen: false,
				height: 385,
				width: 640,
				dialogClass: 'youTubeDialog',
				close: function(event, ui) {
					$(this).dialog("destroy");
				}
			});
			return so;
		},
		barclaycardFlashVideoPlayer: function(container){
			var $container = $(container);
			var $assetsRootUrl = escape($container.find(".assetsRootUrl").val());
			var $flvUrl = escape($container.find(".flvUrl").val());
			var $subtitlesUrl = escape($container.find(".subtitlesUrl").val());
			var so = new SWFObject("/cs/static/flash/video-player/border/loader.swf", "loader", "751", "556", "9.0.0", "#ffffff");
			so.addVariable("appUrl", "/cs/static/flash/video-player/border/conchangoVideoCenter.swf");
			so.addVariable("backgroundUrl", "/cs/static/img/icons/windowBg.png");
			so.addVariable("settingsUrl", $assetsRootUrl + "assets/xml/data.xml");
			so.addVariable("themeColor", "#ffffff");
			so.addVariable("flvUrl", $flvUrl);
			so.addVariable("subtitlesUrl", $subtitlesUrl);
			so.addVariable("assetsRootUrl", "");
			so.addParam("wmode", "transparent");
			so.write("dialog");
			$("#dialog").dialog({
				modal: true,
				autoOpen: false,
				height: 565,
				width: 761,
				close: function(event, ui) {
					$(this).dialog("destroy");
				}
			});
			return so;
		},

		myBarclaycardFullVideo: function(container, assetPathName) {
			var $container = $(container);
			var $assetsRootUrl = $container.find(".assetsRootUrl").val();

			var so = new SWFObject("/cs/static/flash/video-player/border/loader.swf", "loader", "751", "556", "9.0.0", "#ffffff");
			so.addVariable("appUrl", "/cs/static/flash/video-player/border/conchangoVideoCenter.swf");
			so.addVariable("backgroundUrl", "/cs/static/img/icons/windowBg.png");
			so.addVariable("settingsUrl", $assetsRootUrl + "assets/xml/settings.xml");
			so.addVariable("dataUrl", $assetsRootUrl + "assets/xml/data.xml");
			so.addVariable("goto", 0);
			so.addVariable("playSequence", "false");
			so.addVariable("themeColor", "#0099d8");
			so.addVariable("assetsRootUrl", "");
			so.addParam("wmode", "transparent");
			so.write("dialog");
			$("#dialog").dialog({
				modal: true,
				autoOpen: false,
				height: 565,
				width: 761,
				close: function(event, ui) {
					$(this).dialog("destroy");
				}
			});
			return so;
		},

		fcBarclaycardFlashVideoPlayer: function(container){
			var $container = $(container);
			var $assetsRootUrl = escape($container.find(".assetsRootUrl").val());
			var $flvUrl = escape($container.find(".flvUrl").val());
			var $subtitlesUrl = escape($container.find(".subtitlesUrl").val());
			var so = new SWFObject("/assets/global/flash/video-player/border/loader.swf", "loader", "751", "556", "9.0.0", "#ffffff");
			so.addVariable("appUrl", "/assets/global/flash/video-player/border/conchangoVideoCenter.swf");
			so.addVariable("backgroundUrl", "/assets/global/img/icons/windowBg.png");
			so.addVariable("settingsUrl", $assetsRootUrl + "assets/xml/data.xml");
			so.addVariable("themeColor", "#ffffff");
			so.addVariable("flvUrl", $flvUrl);
			so.addVariable("subtitlesUrl", $subtitlesUrl);
			so.addVariable("assetsRootUrl", "");
			so.addParam("wmode", "transparent");
			so.write("dialog");
			$("#dialog").dialog({
				modal: true,
				autoOpen: false,
				height: 565,
				width: 761,
				close: function(event, ui) {
					$(this).dialog("destroy");
				}
			});
			return so;
		}

	};


	function showLightbox(container, type) {
		//var assetPathName = getAssetPathName(container.className);
		if (flashLoader[type]) {
			if(!document.getElementById("dialog")) {
				$("<div id='dialog'></div>").appendTo("body");
			}
			var so = flashLoader[type](container);
			if (so) {
				so.addParam("allowFullScreen", true);
				//so.addParam("menu", false);
				//so.addParam("wmode", "transparent");

				so.write("dialog");
				$("#dialog").dialog('open');
			}
		}
		return false;
	}

	// public interface to lightbox showing code;
	this.showYoutubeLightbox = function(youtube_href) {
		showLightbox({href: youtube_href}, 'youTube');
	}

	$(document).ready(function() {
		if (deconcept.SWFObjectUtil.getPlayerVersion().major < 9) {
			return;
		}

		//$(".videoLightboxLauncher").siblings(".noFlash").remove();
		$(".videoLightboxLauncher").each(function(){
			var anchorText = $(this).find(".anchorText").val();

			if ($(this).find(".anchorText").parent('span').attr('class') == "singleFlashButton") {
					$(this).append("<span class='anchorText'><a href='#' class='flashMovieLink'>" + anchorText + "</a></span><span class='end'>&nbsp;</span>");
			}
			else {
			$(this).append("<a href='#' class='flashMovieLink'>" + anchorText + "</a>");
			}


		});


		$("a.youTube img").each(function() {
			var imgHeight = $(this).height();
			if (imgHeight > 0) {
				var $span = $(this).siblings("span");
				if($($span).attr('class') != "cssHeight"){
					$span.css("bottom", (imgHeight / 2) - ($span.height() / 2) + "px");


				}
			}
		});


		// initialise click events;
		$('.videoLightboxLauncher').click(function(e) {
				var $target = $(e.target);
				if ($target.is("a")) {
					showLightbox(this, this.id);
				}
				return false;
			});

		$('.youTube').click(function(e) {
				showLightbox(this, 'youTube');
				return false;
			});

	});


	function handleGallery(e) {

		if(!document.getElementById("dialog")) {
			$("<div id='dialog'></div>").appendTo("body");
		}

		// Get image url
		var $target = $(e.target);
		for(var i = 0; i < 2; i++) {
			if($target.is("a")) {
				break;
			}
			$target = $target.parent();
		}

		if (!$target.is("a")) {
			return false;
		}
		var currentImageURL = $target.attr("href");
		var currentIndex = 0;

		// Get list of image URLs in gallery
		var imageURLs = $(this).find("a");
		for (var i = 0; i < imageURLs.length; i++) {
			imageURLs[i] = imageURLs[i].href;
			// Set current image index
			if (imageURLs[i].indexOf(currentImageURL) > 0) {
				currentIndex = i;
			}
		}

		// Get list of image URLs in gallery
		var imageTitles = $(this).find("a span:eq(1)");

		var imgWidthWithBorder = 662;
		var h1Text = $(this).find("a:eq(" + currentIndex + ") span:eq(1)").text();
		var description = $(this).find("li:eq(" + currentIndex + ") p:eq(1)").text();
		var currentLeftPos = -((currentIndex) * imgWidthWithBorder);

		// Show lightbox and current image
		var galleryHTML = "<div class='galleryOverlay'><ul style='width:" + (imageURLs.length * imgWidthWithBorder) + "px; left:" + currentLeftPos +"px;'>";
		for(var i = 0; i < imageURLs.length; i++) {
			galleryHTML += "<li><img src='" + imageURLs[i] + "' /></li>";
		}
		galleryHTML += "</ul></div><div class='galleryInfo'><h1>" + h1Text + "</h1><p>" + description + "</p><a href='#'>Download image (JPEG, 4Mb)</a>";
		galleryHTML += "<div class='controls'><a href='' class='next'>next image</a> <a href='' class='prev'>previous image</a></div>";
		galleryHTML += "</div>";

		$("#dialog").empty();
		$("#dialog").dialog({
			modal: true,
			autoOpen: false,
			height: 519,
			width: 643,
			dialogClass: 'galleryDialog',
			open: function(event, ui) {
				$(this).append(galleryHTML);

			},
			close: function(event, ui) {
				$(this).dialog("destroy");
				$(this).empty();
			}
		});

		$("#dialog").dialog('open');

		var $galleryUL = $(".galleryOverlay ul");
		var $galleryInfo = $(".galleryInfo");
		var $that = $(this);

		$(".galleryInfo .next").click(function() {
			var newLeft = parseInt($galleryUL.css("left")) - imgWidthWithBorder;
			currentIndex++;
			if (newLeft < -((imageURLs.length-1) * imgWidthWithBorder) ) {
				newLeft = 0;
				currentIndex = 0;
			}
			$galleryUL.css("left", newLeft + "px");
			$galleryInfo.find("h1").text($that.find("a:eq(" + currentIndex + ") span:eq(1)").text());
			$galleryInfo.find("p").text($that.find("li:eq(" + currentIndex + ") p:eq(1)").text());
			return false;
		});

		$(".galleryInfo .prev").click(function() {
			var newLeft = parseInt($galleryUL.css("left")) + imgWidthWithBorder;
			currentIndex--;
			if (newLeft > 0 ) {
				newLeft = -(imageURLs.length-1) * imgWidthWithBorder;
				currentIndex = imageURLs.length - 1;
			}
			$galleryUL.css("left", newLeft + "px");
			$galleryInfo.find("h1").text($that.find("a:eq(" + currentIndex + ") span:eq(1)").text());
			return false;
		});

		return false;
	}

	$(".gallery").click(handleGallery);

})();

