/**
 * Interface Elements for jQuery
 * ImageBox
 * 
 * http://interface.eyecon.ro
 * 
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 */

jQuery.ImageBox = {
	options : {
		border				: 10,
		loaderSRC			: '/images/t/loading.gif',
		closeHTML			: '/images/t/close_white.gif',
		overlayOpacity		: 0.7,
		fadeDuration		: 200,
		containeW          : 500,
		containeH          : 400
	},
	imageLoaded : false,
	firstResize : false,
	currentRel : null,
	animationInProgress : false,
	opened : false,
	
	keyPressed : function(event)
	{
		if(!jQuery.ImageBox.opened || jQuery.ImageBox.animationInProgress)
			return;
		var pressedKey = event.charCode || event.keyCode || -1;
		switch (pressedKey)
		{
			//end
			case 35:
				if (jQuery.ImageBox.currentRel)
					jQuery.ImageBox.start(null, jQuery('a[@rel=' + jQuery.ImageBox.currentRel+ ']:last').get(0));
			break;
			//home
			case 36:
				if (jQuery.ImageBox.currentRel)
					jQuery.ImageBox.start(null, jQuery('a[@rel=' + jQuery.ImageBox.currentRel+ ']:first').get(0));
			break;
			//left
			case 37:
			//backspace
			case 8:
			//page up
			case 33:
			//p
			case 80:
			case 112:
			break;
			//up
			case 38:
			break;
			//right
			case 39:
			//page down
			case 34:
			//space
			case 32:
			//n
			case 110:
			case 78:
			break;
			//down;
			case 40:
			break;
			//escape
			case 27:
				jQuery.ImageBox.hideImage();
			break;
		}
	},
	
	init : function(options)
	{
		if (options)
			jQuery.extend(jQuery.ImageBox.options, options);
		if (window.event) {
			jQuery('body',document).bind('keyup', jQuery.ImageBox.keyPressed);
		} else {
			jQuery(document).bind('keyup', jQuery.ImageBox.keyPressed);
		}
		jQuery('a').each(
			function()
			{
				el 				= jQuery(this);
				relAttr 		= el.attr('rel')||'';
				hrefAttr 		= el.attr('href')||'';
				imageTypes 		= /\.jpg|\.jpeg|\.png|\.gif|\.bmp/g;
				el.bind('click', jQuery.ImageBox.start);
			}
		);
		if (jQuery.browser.msie) {
			iframe = document.createElement('iframe');
			jQuery(iframe)
				.attr(
					{
						id			: 'ImageBoxIframe',
						src			: 'javascript:false;',
						frameborder	: 'no',
						scrolling	: 'no'
					}
				)
				.css (
					{
						display		: 'none',
						position	: 'absolute',
						top			: '0',
						left		: '0',
						filter		: 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
					}
				);
			jQuery('body').append(iframe);
		}
		
		containe = document.createElement('div');
		jQuery(containe)
			.attr(
				{
					id              : 'overflow',
					className		: 'overflow'
				}
			);
		if ($.browser.opera && $.browser.version <= 8)
		{
		overlay	= document.createElement('div');
		}
		else
		{
		overlay	= document.createElement('div');
		jQuery(overlay)
			.attr(
				{
					id          : 'popup_bg',
					className	: 'popup_bg'
				}
			)
			.css(
				{
					display		: 'none',
					top			: '0',
					left		: '0'
				}
			)
			.append(document.createTextNode(' '))
			.bind('click', jQuery.ImageBox.hideImage);
		}
			
		closeEl = document.createElement('input');
		jQuery(closeEl)
			.attr(
				{
					className		: 'close',
					type		: 'image',
					alt		    : 'x',
					src         : jQuery.ImageBox.options.closeHTML
				}
			)
			.bind('click', jQuery.ImageBox.hideImage);
			
		popup_bot = document.createElement('div');
		jQuery(popup_bot)
			.attr(
				{
					id		: 'popup_b',
					className		: 'popup_b'
				}
			)
			.css(
				{
					display		: 'none'
				}
			);
			
		header = document.createElement('h2');
		jQuery(header)
			.attr(
				{
					id		: 'header'
				}
			)
			.append(document.createTextNode(' '));
						
		
		loader = document.createElement('img');
		loader.src = jQuery.ImageBox.options.loaderSRC;
		jQuery(loader)
			.attr('id', 'ImageBoxLoader')
			.css(
				{
					position	: 'absolute'
				}
			);
			

			
		outercontaine = document.createElement('div');
		jQuery(outercontaine)
			.attr(
				{
					id          : 'popup',
					className	: 'popup'
				}
			)
			.css(
				{
					display		: 'none'
				}
			)
			.append([closeEl,header,containe, loader]);
		
		jQuery('body')
			.append(overlay)
			.append(outercontaine)
      .append(popup_bot);
	},
	
	start : function(e, elm)
	{
		if ($.browser.opera && $.browser.version <= 8) {
			location.href = jQuery(this).attr('href');
		}
		{
		el = elm ? jQuery(elm) : jQuery(this);
		linkRel =  el.attr('rel');
		var totalImages, iteration;
		if (linkRel != 'imagebox') {
			jQuery.ImageBox.currentRel = linkRel;
			gallery = jQuery('a[@rel=' + linkRel + ']');
			totalImages = gallery.size();
			iteration = gallery.index(elm ? elm : this);
		}
		var headerText = "";
		if (el.find('img').attr('alt'))
		{
			headerText = el.find('img').attr('alt');
		}
		else if (el.parent().get(0).textContent)
		{			
			headerText = el.parent().get(0).textContent;
		}
		else if (el.attr('name'))
		{
			headerText = el.attr('name');
		}
		var group = el.attr('href').match(/group-[\d]+/);	
		var temp = new Array();
		var temp = group.toString().split('-');
		var groupid = temp[1];

		pageSize = jQuery.iUtil.getScroll();
		overlay = jQuery('#popup_bg');
		

		
		if (!jQuery.ImageBox.opened) {
			jQuery.ImageBox.opened = true;
			if (jQuery.browser.msie) {
				popup_bot = document.createElement('div');
				jQuery(popup_bot)
					.attr({
							id		        : 'popup_b',
							className		: 'popup_b'
						})
					.css({
							display		: 'none'
						});
				jQuery('#container').append(popup_bot);
				
				jQuery('#ImageBoxIframe')
					.css ('height', Math.max(pageSize.ih,pageSize.h) + 'px')
					.css ('width', Math.max(pageSize.iw,pageSize.w) + 'px')
					.show();
			}
			overlay
				.css ('height', Math.max(pageSize.ih,pageSize.h) + 'px')
				.css ('width', jQuery(window).width())
				.css ('background-color', '#000')
				.show()
				.fadeTo( 
					300,
					jQuery.ImageBox.options.overlayOpacity,
					function()
					{
						jQuery.ImageBox.loadImage(
							pageSize, 
							totalImages, 
							iteration,
							groupid,
							headerText
						);
					}
				);
		} else {
			jQuery.ImageBox.loadImage(
				pageSize, 
				totalImages, 
				iteration,
				groupid,
				headerText
			);
		}
		return false;
		}
	},
		
	loadImage : function(pageSize, totalImages, iteration, groupid, headerText)
	{
		loader = jQuery('#ImageBoxLoader');
		containe = jQuery('#overflow');
		popup_bot = jQuery('#popup_b').css('display', 'none');
		outercontaine = jQuery('#popup');
		if (!jQuery.browser.msie) {
  		flash_menu = jQuery('#swf');
  		html_menu = jQuery('#html_menu');
  		
  		flash_menu
  		  .css(
  				{
  					top		: '-300px'
  				}
  			);
      html_menu
  		  .css(
  				{
  					top		: '0'
  				}
  			);
		}
		header = jQuery('#header');
		jQuery.ImageBox.animationInProgress = true;
		loader.show();
		containeSize = jQuery.iUtil.getSize(containe.get(0));	
		containeW = Math.max(containeSize.wb, loader.get(0).width + jQuery.ImageBox.options.border * 2);
		containeH = Math.max(containeSize.hb, loader.get(0).height + jQuery.ImageBox.options.border * 2);
		loader
			.css(
				{
					left	: (containeW - loader.get(0).width)/2 + 50 + 'px',
					top		: (containeH - loader.get(0).height)/2 + 70 + 'px'
				}
			);
		header
			.text(headerText);
		containe
			.css(
				{
					width	: containeW + 'px',
					height	: containeH + 'px'
				}
			)
			.show();

		clientSize = jQuery.iUtil.getClient();
		outercontaine
			.css('top', pageSize.t +  (clientSize.h / 15) + 'px');
		popup_bot
		  .css(
        {
          top		:  pageSize.t +  (clientSize.h / 15) + 497 + 'px'
        }
      );
		if (outercontaine.css('display') == 'none') {
			outercontaine				
				.show()
				.fadeIn(
					jQuery.ImageBox.options.fadeDuration
				);
		}

		$.post('/_terminal/dishes/html/', {group_id: groupid}, 
			function(ht) 
			{
				var containeHtml = ht;
				containeW = jQuery.ImageBox.options.containeW;
				containeH = jQuery.ImageBox.options.containeH;
				loader.hide();
				containe.animate(
					{
						width		: containeW
					},
					containeSize.wb != containeW ? jQuery.ImageBox.options.fadeDuration : 1,
					function()
					{
							containe.html(containeHtml);
							popup_bot.show();
							containe.animate(
							{
							height		: containeH
							},
							containeSize.hb != containeH ? jQuery.ImageBox.options.fadeDuration : 1
							)
					}
				)
				

			}
		);
	},
	
	hideImage : function()
	{
		jQuery('#popup').hide();
		if (!jQuery.browser.msie) {
		  flash_menu = jQuery('#swf');
		  html_menu = jQuery('#html_menu');
  		flash_menu
  		  .css(
  				{
  					top		: '0'
  				}
  			);
      html_menu
  		  .css(
  				{
  					top		: '-300px'
  				}
  			);
		}
		

		jQuery('#popup_b').hide();
		
		jQuery('#overflow').html('');
		jQuery('#overflow').text('');
		jQuery('#popup_bg').fadeTo(
			300, 
			0, 
			function(){
				jQuery(this).hide();
				if (jQuery.browser.msie) {
					jQuery('#ImageBoxIframe').hide();
				}
			}
		);
		jQuery.ImageBox.currentRel = null;
		jQuery.ImageBox.opened = false;
		jQuery.ImageBox.animationInProgress = false;
		return false;
	}
};

