/* Copyright (c) 2007 Kean Loong Tan http://www.gimiti.com/kltan
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * Version: 1.0 (March 12, 2008)
 * Requires: jQuery 1.2+
 */
var dialogDisplayed = 0;

jQuery.fn.createDialog = function(addr, progress, method, data) {
	if (method == undefined)
		method = 'GET';
	if (data == undefined)
		data = '';
	if (progress == undefined)
		progress = true;
		
	if(J("#jDialogProgressBar").size()==0 &&  !(J.browser.msie && parseInt(J.browser.version) < 7)) //if ajax loader is not there or not IE6 
		J("body").prepend('<div id="jDialogProgressBar"><img src="http://www.italiancleantechnology.com/images/ajax-loader.gif" /></div>');
		
	
	J(this).click(function(){ 
		if (dialogDisplayed != 1) { //display dialog if none is there
			J("#jDialogProgressBar").show();
			J.blockOverlay(1);
			dialogDisplayed=1;
			J.ajax({
				type: method,
				data: data,
				url: addr,
				success: function(msg){
					J("#jDialogContainer").html(msg);
					J.reposition();
					J("#jDialogProgressBar").fadeOut(1500);
				}
			});
		}
		
		else {
			if (progress)
				J("#jDialogProgressBar").show();
			J.ajax({
				type: "GET",
				url: addr,
				success: function(msg){
					J("#jDialogContainer").html(msg);
					J.reposition();
					J("#jDialogProgressBar").fadeOut(1500);
				}
			});
		}
		
		if(J.browser.msie && parseInt(J.browser.version) < 7) { //only IE6 needs this function
			J(window).scroll(function(){
				if(dialogDisplayed==1) {
					J.blockOverlay();
					J.reposition();
				}
			});
		}
		
		J(window).resize(function(){
			if (dialogDisplayed==1) {
				J.blockOverlay();
				J.reposition();
			}
		});
		
		J(window).unload( function () {
			if (dialogDisplayed==1)
				J.closeDialog();
		});
		
		J(window).keydown(function(event){
			if (event.keyCode == 27) 
				J.closeDialog();
		});
	});
};

jQuery.closeDialog = function(){
	dialogDisplayed=0;
	J("select").show(); //IE6 bug
	J("#jDialogContainer, #jDialogOverlay").remove();
};

jQuery.blockOverlay = function(init){
	if (init==1) 
		J("body").append('<div id="jDialogOverlay"></div><div id="jDialogContainer"></div>');
	
	var left = 0;
	var top = 0;
	var overlayWidth = J(window).width();
	var overlayHeight = J(document).height();
	var winWidth = J(window).width();
	var winHeight =  J(window).height();

	if (J.browser.msie && parseInt(J.browser.version) < 7) { // IE6
		J("#jDialogOverlay").css({
						  top: 0, 
						  left: 0, 
						  width: overlayWidth, 
						  height: overlayHeight, 
						  position: "absolute",
						  display: "block"
						  });
	}
	else {
		J("#jDialogOverlay").css({
						  top: 0, 
						  left: 0, 
						  width: winWidth , 
						  height: winHeight, 
						  position: "fixed",
						  display: "block"
						  }).show();
	}
	
	if (init==1) {
		J("#jDialogOverlay").css("opacity", 0); //IE fix
		J("#jDialogOverlay").show().fadeTo(200, 0.85);
	}
}

jQuery.reposition = function(){ //calculate the position
	var left = 0;
	var top = 0;
	var winWidth = J(window).width();
	var winHeight =  J(window).height();
	var dialogHeight = J("#jDialogContainer").children().height();
	var dialogWidth = J("#jDialogContainer").children().width();

	if (J.browser.msie) {
		left = document.body.scrollLeft || document.documentElement.scrollLeft;
		top = document.body.scrollTop || document.documentElement.scrollTop;
	}
	else {
		left = window.pageXOffset;
		top = window.pageYOffset;
	}

	var topOff = top + winHeight/2 - dialogHeight/2; //offset for IE6
	var	leftOff = left + winWidth/2 - dialogWidth/2; //offset for IE6
	var topFixed = topOff - top;
	var	leftFixed = leftOff - left;
	
	if (J.browser.msie && parseInt(J.browser.version) < 7) { // IE6
		J("select").hide(); //IE 6 fix
		J("#jDialogContainer select").show(); //IE 6 fix
		J("#jDialogContainer").children().css({top: topOff, left: leftOff, position: "absolute"}).show(); //IE6 doesn't support fixed position
	}
	else{	// firefox and IE7
		J("#jDialogContainer").children().css({top: topFixed, left: leftFixed, position: "fixed"}).show();
	}
}


