/*
	PNG Shadow jquery plugin
	
	TODO:	
		- safari bug
		
	version 1.1
		- added redrawPngShadow function
		- added moveAbovePngShadow function
	version 1.0		
	
	@name pngShadow
	@author Jan Dvorak
	
*/
(function($) {
	var cssFile = "/css/pngShadow.css";
	var shadowIdCounter = 0;
	
	$.fn.pngShadow = function(options){	
		options = $.extend({
			x_offset:  	0,
			y_offset:	0,
			shadow_css: {},
			fx		  : {},
			fx_speed  : "fast",
			link      : false	
		}, options || {});
		
		return this.each(function(){
			var object_width  = $(this).width()+129;
			var object_height = $(this).height()-63;
			var position_left = $(this).offset().left+26-90+options.x_offset;
			var position_top  = $(this).offset().top-58+options.y_offset; 
			var id            = shadowIdCounter;
			var shadow		  = null;				
			var shadowBoxCode = '\
				<div id="pngShadow-id-'+id+'" class="pngShadow">\
					<div class="top">\
						<div class="top-left"></div>\
						<div class="top-right"></div>\
						<div class="top-center"></div>\
						<div class="hr-clear-shadow"></div>\
					</div>\
					<div class="hr-clear-shadow"></div>\
					<div class="center">\
						<div class="center-left">\
							<div class="center-left-top"></div>\
							<div class="center-left-center"></div>\
							<div class="center-left-bottom"></div>\
						</div>\
						<div class="center-right">\
							<div class="center-right-top"></div>\
							<div class="center-right-center"></div>\
							<div class="center-right-bottom"></div>\
						</div>\
						<div class="center-center"></div>\
						<div class="hr-clear-shadow"></div>\
					</div>\
					<div class="hr-clear-shadow"></div>\
					<div class="bottom">\
						<div class="bottom-left"></div>\
						<div class="bottom-right"></div>\
						<div class="bottom-center"></div>\
						<div class="hr-clear-shadow"></div>\
					</div>\
				</div>';
			
			shadow = $(shadowBoxCode).css((options.shadow_css)?options.shadow_css:{}).appendTo('body').css({
				'width'		:(object_width)+'px',
				'z-index'	:((id+1)*10)+10000,
				top			:position_top,
				left		:position_left
			});
			$('.center-left-center,.center-right-center',shadow).css("height",(object_height-62)+'px');
			$('.center-left, .center-right, .center-center',shadow).css("height",(object_height)+'px');
			if ($.browser.msie && $.browser.version <= 6) {
				$('div',shadow).ifixpng('/imgs/blank.gif');				
			}
			//alert($.browser.version);
			//$(this).parent().css('z-index',((id+1)*10)+10000+1);
			$(this).css('z-index',((id+1)*10000)+1);			
			$.data(this, "shadowId", id); //store id in expando
			$.data(this, "shadowOptions", options); //store options in expando
			if (options.fx) {
				if(!$.browser.msie) {
					shadow.animate(options.fx, options.fx_speed);
				} else {
					shadow.show();
				}
			}
			// pokud je obrazek, kteremu se pridava stin, klikaci tak odkaz presune nad stin, aby na  nej slo kliknout
			if (options.link) {
				$(this).moveAbovePngShadow($(this).parent());
			}	
			shadowIdCounter++;
		});
	}
	
	$.fn.removePngShadow = function(){
		return this.each(function()	{
			var shadowId = $(this).pngShadowId();
			$("div#pngShadow-id-" + shadowId).stop().remove();
		});
	};


	$.fn.pngShadowId = function() {
		return $.data(this[0], "shadowId");
	};
	
	/* typical use:
			var s = $('a.thickbox img')
			s.pngShadow();	
			s.moveAbovePngShadow($('a.thickbox'));	
	*/
	$.fn.moveAbovePngShadow = function(element) {
		var shadowId = $(this).pngShadowId();
		element.appendTo($('#pngShadow-id-'+shadowId+' .center-center'));
		return $(this);
	};
	
	$.fn.redrawPngShadow = function(){
		$(this).removePngShadow();
		this.each(function()
		{
			var shadowOptions = $.data(this, "shadowOptions");
			$(this).pngShadow($.extend(shadowOptions,{
				shadow_css: {},
				fx		  : {},
				fx_speed  : "fast"}
			));
		});
	};
		
	$(function(){		
		var noPrint = "<style type='text/css' media='print'>";
		noPrint += ".pngShadow{visibility:hidden;}</style>";
		//var style = '<link href="'+cssFile+'" rel="stylesheet" type="text/css"  media="screen" />';
		$("head").append(noPrint);//.prepend(style);
	});
})(jQuery);

