/* 
 * veinara's
 */
 
(function($) {

	var dialogDisplayed = false;
	var currentPos = true;

	$.createDialog = function(options) {

		// Extend our default options with those provided.
		var opts = $.extend({}, $.createDialog.defaults, options);
//		$(this).click(function(){ 
			currentPos = opts.center;
			if (!dialogDisplayed) { //display dialog if none is there
				
				var titleContainer = '<div class="DialogTitleContainer"><h2 class="DialogTitle">'+ opts.title +'</h2><a class="jDialogCloseButton" href="javascript:$.closeDialog();">&times;</a></div>';
				var loader = ( opts.progress ? '<div style="width: 100%; padding: 30px 0; text-align: center;"><img src="../images/loader_big.gif" /></div>' : '' );
				var contentContainer =  '<div class="jDialogContent">'+ loader +'</div>';
			
				$("body").prepend('<div id="jDialogOverlay"></div><div style="width: 100%; position: absolute; left: 0; top: 0; z-index: '+ opts.index+1 +'"><div id="jDialogContainer">'+ titleContainer +contentContainer +'</div>');
				dialogDisplayed=true;
				overlayPos(1);
				
//			}

			// make the call
			$.ajax({
				type: opts.method,
				data: opts.data,
				url: opts.addr,
				success: function(msg){
					$("#jDialogContainer .jDialogContent").hide( ).html( msg ).fadeIn( 'slow' );
					if( currentPos ) _reposition( );
					overlayPos( );
					if( opts.success != undefined )
					{
						opts.success(msg);
					}
				}
			});
			
			adjust_position = function(){
				if (dialogDisplayed==1) {
					overlayPos();
					if (currentPos)
						_reposition();
				}
			}
			$(window).resize(adjust_position);
			
//			$(window).bind( 'scroll', adjust_position); 
			
			$(window).unload( function () {
				if( dialogDisplayed==1 ) $.closeDialog();
			});
			
			$(window).keydown(function(event){ // pressed ESC
				if (event.keyCode == 27) 
					$.closeDialog();
			});

		};
		
		//private function
		function overlayPos( init )
		{
			$("#jDialogOverlay").css({
								  top: 0, 
								  left: 0, 
								  width: $(window).width(), 
								  height: $(document).height(), 
								  position: "absolute",
								  display: "block",
								  color: opts.bg,
								  zIndex: opts.index
							  });
			
			if (init==1) {
				ie6fix( );
				$("#jDialogOverlay").css( "opacity", 0 ).fadeTo( 200, opts.opacity );
			}
		}

		function _reposition()
		{
			$("#jDialogContainer").css( "margin-top", $(window).scrollTop( ) ).show(); 
		}

		function ie6fix( ) // buggy rendering of selects in IE6
		{
			if( $.browser.msie && parseInt($.browser.version) < 7 ) 
			{
				$("select").hide( );
				$("#jDialogContainer select").show( );
			}
		}
	};
	
	$.createDialog.defaults = {
		progress: true,
		center: true,
		method: 'GET',
		data: '',
		opacity: 0.85,
		bg: '#FFFFFF',
		index: 1000,
		title: ''
	};
	
	$.closeDialog = function(){
		dialogDisplayed=false;
		$("#jDialogOverlay").fadeTo(200, 0, function(){ //fade out and remove DOM nodes
			$("#jDialogContainer, #jDialogOverlay, #jDialogProgressBar").remove( );
			if($.browser.msie && parseInt($.browser.version) < 7) $("select").show( );
		});
	};

})(jQuery);