(function($){
	/**
	 / THIRD FUNCTION
	 * getPageSize() by quirksmode.com
	 *
	 * @return Array Return an array with page width, height and window width, height
	 */
	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;
	};
	/**
	 / THIRD FUNCTION
	 * getPageScroll() by quirksmode.com
	 *
	 * @return Array Return an array with x,y page scroll values.
	 */
	function ___getPageScroll() {
		var xScroll, yScroll;
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
			xScroll = self.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
			xScroll = document.documentElement.scrollLeft;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
			xScroll = document.body.scrollLeft;	
		}
		arrayPageScroll = new Array(xScroll,yScroll);
		return arrayPageScroll;
	};
	
	/* parsing of url parameters */
	function getParam(url, name){
		var name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec( url );
		if( results == null )
			return "";
		else 
			return results[1];
	}


					
	$.fn.icontent = function(settings) {
		//Extend
		$.extend(this, {
			init: function(){
				this.each(function(){
					var href = $(this).attr('href');
					if(href != '#'){
						$(this).click(function(){
							var href = $(this).attr('href');
							main.overlayer(href);			
							return false;
						});
						
						//hide all popup content
						$(href).hide();
					}							 
				});
			},
			
			overlayer: function (target) {
				// Get page sizes
				var arrPageSizes = ___getPageSize();
				// Apply the HTML markup into body tag
				$('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="jquery-content"></div><a id="jquery-close" href="#" alt="Chiudi"></a></div>');	
				// Style overlay and show it
				
				$('#jquery-close').bind('click', main.finish);
				
				if(target.charAt('0') == '#'){
					$('#jquery-content').html( $(target).clone().html() );
				} else {
					$('#jquery-content').load(target);
				}
				
				$('#jquery-overlay').css({
					backgroundColor:	settings.overlayBgColor,
					opacity:			settings.overlayOpacity,
					width:				arrPageSizes[0],
					height:				arrPageSizes[1]
				}).fadeIn();
				// Get page scroll
				var arrPageScroll = ___getPageScroll();
				// Calculate top and left offset for the jquery-lightbox div object and show it
				$('#jquery-lightbox').css({
					opacity: 0.7,
					width: 450,
					marginTop:	-$('#jquery-lightbox').height()/2,
					marginLeft:	-$('#jquery-lightbox').width()/2
				}).show(function(){
					//callback 
					var arrPageScroll = ___getPageScroll();
					// Calculate top and left offset for the jquery-lightbox div object and show it
					$('#jquery-lightbox').css({
						marginTop:	-$('#jquery-lightbox').height()/2,
						marginLeft:	-$('#jquery-lightbox').width()/2
					});
				});
				// Assigning click events in elements to close overlay
				$('#jquery-overlay').click(function() {
					main.finish();									
				});
				// If window was resized, calculate the new overlay dimensions
				$(window).resize(function() {
					// Get page sizes
					var arrPageSizes = ___getPageSize();
					// Style overlay and show it
					$('#jquery-overlay').css({
						width:		arrPageSizes[0],
						height:		arrPageSizes[1]
					});
					// Get page scroll
					var arrPageScroll = ___getPageScroll();
					// Calculate top and left offset for the jquery-lightbox div object and show it
					$('#jquery-lightbox').css({
						marginTop:	-$('#jquery-lightbox').height()/2,
						marginLeft:	-$('#jquery-lightbox').width()/2
					});
				});
			},
			
		 /**
		 * Remove jQuery lightBox plugin HTML markup
		 *
		 */
			finish: function() {
				$(window).unbind('resize');
				
				$('#jquery-lightbox').remove();
				$('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); });
				// Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay.
				$('embed, object, select').css({ 'visibility' : 'visible' });
				
				return false;
			}
		});
		
		main = this;
		var settings = $.extend({}, $.fn.icontent.defaults, settings);

		this.init();
	}
	
	$.fn.icontent.defaults = {
		overlayBgColor: 'black',
		overlayOpacity: 0.4,
		imageLoading: '',
		imageBtnClose: ''
		
	}
})(jQuery);