/*

Fumodal is a jQuery plugin for creating modal dialog windows

Copyright (c) 2008
Version: 0.85
Author: Daniel Fudala
Email: contact@fudini.net
Plugin Url: fudini.net/fumodal
Licence: GPL 

to-do:

- escape button
- loading animation
- busy text
- the actual content div should not have padding.

change log:

20.05.2008 
- window content width
- setting content div

*/
(function($) {
	$.fumodal = function(settings) {
		var settings = $.extend({
			width:300,
			height:200,
			backgroundColor:'#f0f0f0',
			overlayColor:'#ffffff',
			overlayOpacity:0.8,
			url:'',
			data:{},
			callback:function(){},
			style:false,
			title:'',
			content:''
		}, settings||{});
		var ie6 = ($.browser.msie && parseInt($.browser.version) < 7);
		if(settings.style) {
			$('body').append('<div id="fumodal_background"></div><div id="fumodal"><div id="fumodal_window_container"><div id="fumodal_window_top"><div id="fumodal_window_TL"></div><div id="fumodal_window_TR"></div></div><div id="fumodal_window_middle"><div id="fumodal_window_L"></div><div id="fumodal_window_inner"><div id="fumodal_window_top_bar"><div id="fumodal_window_title">Title</div><div id="fumodal_window_close"></div></div><div id="fumodal_window_busy_back"></div><div id="fumodal_window_busy"><div id="fumodal_window_busy_icon"></div></div><div id="fumodal_window_content"><div id="fumodal_content"></div></div></div><div id="fumodal_window_R"></div></div><div id="fumodal_window_bottom"><div id="fumodal_window_BL"></div><div id="fumodal_window_BR"></div></div></div></div>');
		} else {
			$('body').append('<div id="fumodal_background"></div><div id="fumodal"><div id="fumodal_content"></div></div>');
		}
		$('#fumodal').hide();
		$('#fumodal_background').hide();
		if(ie6) {
			$('#fumodal_background').css({width:'100%',
										 height:'100%',
										 backgroundColor:settings.overlayColor,
										position:'absolute',
										opacity:settings.overlayOpacity,
										top:'0',
										left:'0',
										display:'block',
										zIndex:'1000'
										});
			$('#fumodal').css({width:settings.width,
								height:settings.height,
								top:'50%',
								left:'50%',
								display:'block',
								backgroundColor:settings.backgroundColor,
								zIndex:'1001',
								position:'absolute'});
			position_fumodal();
			$(window).scroll(function(){
					position_fumodal();
			});
			$(window).resize(function(){
					position_fumodal();
			});
		} else {
			$('#fumodal_background').css({width:'100%',
										height:'100%',
										backgroundColor:settings.overlayColor,
										opacity:settings.overlayOpacity,
										position:'fixed',
										top:'0',
										left:'0',
										zIndex:'1000'
										});
			
			$('#fumodal').css({width:settings.width,
								height:settings.height,
								marginLeft:-settings.width/2,
								marginTop:-settings.height/2,
								display:'block',
								backgroundColor:settings.backgroundColor,
								top:'50%',
								left:'50%',
								position:'fixed',
								zIndex:'1001'
								});
		}
		if(settings.style) {
			$('#fumodal_window_containter').css({width:settings.width,height:settings.height});
			$('#fumodal_window_inner').css({width:(settings.width-10)});
			$('#fumodal_window_busy_back').css({width:(settings.width-10),
										height:(settings.height-40),
										opacity:.7,
										display:'none'
										});
			$('#fumodal_window_busy').css({width:(settings.width-10),
										height:(settings.height-40),
										display:'none'
										});
			$('#fumodal_window_content').css({width:(settings.width-30)});
			$('#fumodal_window_top_bar').css({width:(settings.width-10)});
			$('#fumodal_window_title').css({width:(settings.width-60)});
			$('#fumodal_window_inner').css({width:(settings.width-10)});
			$('#fumodal_window_middle').css({height:(settings.height-10)});
			$('#fumodal_window_close').hover(function(event) {
											//roll over
											$(this).css({backgroundPosition:'-30px',
														cursor:'pointer'});
											},function(event) {
											//roll out
											$(this).css({backgroundPosition:'0px'});
											});
			$('#fumodal_window_close').click(function() {
				$.fumodal_close();
				return false;
			});
			$('#fumodal_window_title').html(settings.title);
		};
		
		$('#fumodal').hide();
		$('#fumodal_background').hide();
		
		if(settings.url=='') {
			if(settings.content!='') {
				$('#fumodal_content').html(settings.content);
				show_fumodal();						   
				
			} else {
				show_fumodal();
			}
		} else {
				$('#fumodal_content').load(settings.url,settings.data,function(result){
					settings.callback(result);
					show_fumodal();						   
				});
		}
		function show_fumodal() {
				$('#fumodal').fadeIn();
				$('#fumodal_background').fadeIn();
		}
		//this is only for internet explorer 6
		function position_fumodal() {
			var scrollTop = $(window).scrollTop();
			var scrollLeft = $(window).scrollLeft();
			$('#fumodal').css({marginTop:-settings.height/2+scrollTop,marginLeft:-settings.width/2+scrollLeft});
			var windowWidth = $(window).width();
			var windowHeight = $(window).height();
			$('#fumodal_background').css({width:windowWidth+scrollLeft,height:windowHeight+scrollTop});
		}
		
		$.fumodal_content = function() {
			return $('#fumodal_content');
		}
		
		$.fumodal_close = function() {
			$('#fumodal').fadeOut(500,function() {
				$('#fumodal').remove();
				$('#fumodal_background').remove();
			});
			$('#fumodal_background').fadeOut(500);
		}
		
		$.fumodal_busy = function(state) {
			if(state) {
				$('#fumodal_window_busy_back').css({display:'block'});
				$('#fumodal_window_busy').css({display:'block'});
			} else {
				$('#fumodal_window_busy_back').css({display:'none'});
				$('#fumodal_window_busy').css({display:'none'});
			}
		}
	}
}) (jQuery);