
var Light = {
	
	init: function(layer, block, title, ajax_url) {
		jQuery('#' + block + ' a').click(function() {
			var text = jQuery(this);
			Light.lightbox(layer, text, title, ajax_url);
			return false;
		});
	},
	
	lightbox: function(insertContent, current, title, ajax_url) {
		
		settings = {
			lightbox: 'lightbox',
			shadow: 'lightbox-shadow',
			content: 'lightbox-content',
			div: 'FormLayout',
			dilay: '400',
			borderWidth: '15',
			closeText: '<div id="closeBtn"><a href="#"><span>Close</span></a></div>',
			prevText: '<div id="prevBtn" onClick="nearbyImage(\'prev\')"></div>',
			nextText: '<div id="nextBtn" onClick="nearbyImage(\'next\')"></div>',
			app: jQuery.browser.msie,
			height: ''
		};
		
		if (jQuery('#' + settings.lightbox).size() == 0 || jQuery('#' + settings.lightbox).is(':hidden') == true) 
		{
			Light.__run(insertContent, current, title, ajax_url);
            if (insertContent == 'flash_wrapper')
			{
               theLightboxPluss = '<div class="config-wtt">'+jQuery('.config-wtt').html()+'</div><script>jQuery("#lightbox").find(".config-wtt").find("img").click(function(){jQuery("#lightbox").find(".config-wtt").find("img").removeClass("config-wtt-active");jQuery(this).addClass("config-wtt-active");});<\/script>';               
               jQuery('#lightbox').append(theLightboxPluss);
            }
        } 
		else 
		{
			Light.closeLightbox();
        }
	},
	
	__run: function(insertContent, current, title, ajax_url) {
		
		if (jQuery('#' + settings.lightbox).size() == 0)
		{
			var theLightbox = jQuery('<div id="' + settings.lightbox + '" class="' + insertContent + '"><div id="' + settings.content + '">' + settings.closeText + settings.nextText + settings.prevText +'</div></div>');
			var theShadow = jQuery('<div id="' + settings.shadow + '"/>');
			var close = jQuery('#closeBtn a');
			jQuery('body').append(theShadow);
			jQuery('body').append(theLightbox);
		}
		
		var CurrentWidth = jQuery('#' + insertContent).width();
		var CurrentHeight = jQuery('#' + insertContent).height();	
		var width = CurrentWidth + (settings.borderWidth*2);
		var height = CurrentHeight + (settings.borderWidth*2);
		
		if(insertContent == 'flplayer_fr') 
		{
			jQuery('#' + settings.content).append('<div class="film-title"></div><div id="flplayer_fr"><div id="mFlash_player"><p id="alt_paragr" style="visibility:hidden">Update Adobe Flash Player, to view this video<br/><a href="http://www.adobe.com/go/getflashplayer">Download from Adobe web-site</a></p></div></div>');
			
			height = CurrentHeight = Light.flashvars.Height;
			width = CurrentWidth = Light.flashvars.Width;
			setTimeout('jQuery("#alt_paragr").addClass("flash_alter_link_show")',1500);
		} 
		else if (insertContent == 'prod_film') 
		{
			jQuery('#' + settings.content).append('<div class="film-title"></div><div id="prod_film"><div id="mFlash_player"><p id="alt_paragr" style="visibility:hidden">Update Adobe Flash Player, to view this video<br/><a href="http://www.adobe.com/go/getflashplayer">Download from Adobe web-site</a></p></div></div>');
			
			height = CurrentHeight = Light.prod_flashvars.Height;
			width = CurrentWidth = Light.prod_flashvars.Width;
			setTimeout('jQuery("#alt_paragr").addClass("flash_alter_link_show")',1500);
		} 
		
		var windowHeight = jQuery(window).height();
		var windowWidth = jQuery(window).width();
		var _x = windowWidth-CurrentWidth;
		var _y = windowHeight-CurrentHeight;
		
		jQuery('#' + settings.shadow).css('height',jQuery(document).height()).show();
		
		var arrPageSizes = Light.___getPageSize();
		var arrPageScroll = Light.___getPageScroll();
		
		jQuery('#' + settings.lightbox).css({
			top:	jQuery(window).scrollTop()+(_y/2),
			left:	arrPageScroll[0]
		}).show();
		
		jQuery('#' + settings.content).animate({width:width, height:height},settings.dilay,function() { 
			Light._show_data(insertContent, current, title); 
		}).fadeIn();
		
		jQuery('#' + settings.content).css('padding',settings.borderWidth + 'px');

		jQuery('#closeBtn a').click(function() {
			Light.closeLightbox(ajax_url);
			return false;
		});
		
		jQuery(window).resize(function() {
			var wHeight = jQuery(window).height();
			var cHeight = jQuery('#' + insertContent).height();
			var _height = wHeight-cHeight;
			var arrPageSizes = Light.___getPageSize();
			jQuery('#' + settings.shadow).css({
				width:		arrPageSizes[0],
				height:		arrPageSizes[1]
			});
			var arrPageScroll = Light.___getPageScroll();
			jQuery('#' + settings.lightbox).css({
				top:	jQuery(window).scrollTop()+(_height/2),
				left:	arrPageScroll[0]
			});
		});   
	},
	
	_show_data: function(insertContent, current, title) {
		
		if (insertContent != null)
		{
			if (insertContent == 'flplayer_fr') 
			{
				var content = jQuery('#' + insertContent).html();
				jQuery('.film-title').text(title);
				swfobject.embedSWF(Light.movie, Light.container, Light.containerWidth, Light.containerHeight, Light.playerVers, Light.expressInstallSwfUrl, Light.flashvars,Light.params);
			} 
			else if (insertContent == 'flash_wrapper') 
			{ 
				jQuery('#' + settings.content).addClass('flash_box');
				var content = jQuery('#' + insertContent).html();
				jQuery('#' + settings.content).append(content);
			} 
			else if (insertContent == 'prod_film') 
			{
				var content = jQuery('#' + insertContent).html();
				jQuery('.film-title').text(title);
				swfobject.embedSWF(Light.prod_movie, Light.prod_container, Light.prod_containerWidth, Light.prod_containerHeight, Light.prod_playerVers, Light.prod_expressInstallSwfUrl, Light.prod_flashvars,Light.prod_params);
			} 
			else if (insertContent == 'EmailSignup') 
			{
				var content = jQuery('#' + insertContent).html();
				jQuery('#' + settings.content).append(content).css('height', 'auto');
				var form = jQuery('#' + settings.content).find('form');
				var d = new Date();
				var id = 'newsletter_' + d.getTime();
				form.attr('id', id);
				var newsletterSubscription = new VarienForm(id);
				form.find('button').click(function() {
					if(newsletterSubscription.validator.validate()) {
						var error = true;
						form.find('input:checkbox').each(function() {
							if(jQuery(this).attr('checked') == true)
								error = false;
						});
						if(!error) {
							document.getElementById(id).submit();
						} else {
							alert('Please select your subscription.');
						}
					}
				});
			} 
			else if (insertContent == 'lyons-raf-wrapper')
			{
				var content = jQuery('#' + insertContent).html();
				jQuery('#' + settings.content).append(content).css('height', 'auto');
				var form = jQuery('#' + settings.content).find('form');
				var d = new Date();
				var id = 'raf_' + d.getTime();
				form.attr('id', id);
				var raf_form = new VarienForm(id);
				form.find('button').click(function() {

					// set loading indicator
					var loading = form.find('#invite-please-wait');
					loading.show();
					
					// clear old messages
					form.find('.messages').html('');
					
					if(raf_form.validator.validate()) {
						
						var url = form.attr('action');

						jQuery.post(url, form.serialize(), function(data, status) {

							try
							{
								var temp = jQuery.parseJSON(data);
								
								if (temp.error)
								{
									loading.hide();
									alert(temp.message);
									return false;
								}
							}
							catch (e)
							{
								console.log(e);
							}
							
							// grab the UL from the response that has the message in it, good or bad
							var message = jQuery(data).find('.messages');
							form.find('.form-list').before("<ul class='messages'>" + message.html() + "</ul>");			
							
							// user successfully logged in, remove the username / password fields
							form.find('#invite-login-container').remove();
							
							loading.hide();
						});
					}
					else
					{
						loading.hide();
					}
				});
			}
			else 
			{
				var content = jQuery('#' + insertContent).html();
				jQuery('#' + settings.content).append(content);
				
				//Custom code -> added functionality to extend the width of the lightbox-content element
				var childrenTotalWidth = 0;
				
				jQuery('#' + settings.content).children().each(function(){
					
					if(jQuery(this).is("ul")) {
						
						jQuery(this).children().each(function(){
							
							childrenTotalWidth += jQuery(this).width();
						});
					} 	
				});

					if(childrenTotalWidth) {
						jQuery('#' + settings.content).width(childrenTotalWidth);
						var padding = jQuery('#' + settings.content).innerWidth() - jQuery('#' + settings.content).width();
						jQuery('#' + settings.content).width(childrenTotalWidth + padding);
						jQuery('#' + settings.content).height('auto');
					}
					
					// end Custom code
			}
		}
	},
	
	closeLightbox: function(url) {
		jQuery('#' + settings.lightbox).remove();
		jQuery('#' + settings.shadow).fadeOut(function() {jQuery('#' + settings.shadow).remove();});
		
		if (url != "")
		{
			jQuery('#lyons-raf-wrapper').load(url);
		}
		
		return false;
	},
	
	___getPageScroll: function() {
		var xScroll, yScroll;
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
			xScroll = self.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			yScroll = document.documentElement.scrollTop;
			xScroll = document.documentElement.scrollLeft;
		} else if (document.body) {
			yScroll = document.body.scrollTop;
			xScroll = document.body.scrollLeft;	
		}
		arrayPageScroll = new Array(xScroll,yScroll);
		return arrayPageScroll;
	},
	
	___getPageSize: function() {
		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else {
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		var windowWidth, windowHeight;
		if (self.innerHeight) {
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) {
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
		if(xScroll < windowWidth){	
			pageWidth = xScroll;		
		} else {
			pageWidth = windowWidth;
		}
		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
		return arrayPageSize;
	}
}

