jQuery.fn.openModal = function(options) {
	var defaults = {
		link: "",
		backgrounddiv: "#modal_bg",
		closebutton: "#modal_close",
		height: "409px",
		width: "409px",
		trigger: "modal_trigger"
	};
	var options = $.extend(defaults, options);
	
	return this.each(function() {
		var obj = $(this);
		
		
		if (options.link != "") {
			obj.html('');
			$.ajaxSetup({cache: false});
			obj.load(options.link, function(){
				if (options.closebutton != "") {
					$(options.closebutton).click(function(){
						obj.closeModal({backgrounddiv: options.backgrounddiv});
					});
				}
				
				if (options.trigger != "") {
					$(document).trigger(options.trigger);
				}
				
			});
		}
		
		var pageSize = getPageSize();
		var pageWidth = pageSize[0];
		var pageHeight = pageSize[1];
		$(options.backgrounddiv).css('height',pageHeight + "px");
		$(options.backgrounddiv).css('width',pageWidth + "px");
		//$('#modal').css('left',width/2 - ($('#modal').width()+50)/2 + "px");
		$(options.backgrounddiv).click(function(){
			obj.closeModal({backgrounddiv: options.backgrounddiv});
		});
		
		obj.css('display','block');
		$(options.backgrounddiv).css('display','block');
	});
};

jQuery.fn.closeModal = function(options) {
	var defaults = {
		backgrounddiv: "#modal_bg"
	};
	var options = $.extend(defaults, options);
	
	return this.each(function() {
		var obj = $(this);
		
		obj.css('display','none');
		$(options.backgrounddiv).css('display','none');
	});
};

function getPageSize() {
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}
	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}
