var it_additional_move = 32;
var gallery_timeout;

function requestUrl(url) {
	/* set new size to background */
	if($(it_lightbox_lightbox_selector).is(':visible') == false) {
		var arrPageSizes = ___getPageSize();
		// Style overlay and show it
		$(it_lightbox_lightbox_selector_popup_background).css( {
			backgroundColor : it_lightbox_overlayBgColor,
			opacity : it_lightbox_overlayOpacity,
			width : arrPageSizes[0],
			height : arrPageSizes[1]
		}).fadeIn();
		/* now show lightbox */
		var arrPageScroll = ___getPageScroll();
		// Calculate top and left offset for the jquery-lightbox div object and show
		// it
		$(it_lightbox_lightbox_selector_popup).css( {
			top : arrPageScroll[1] + (arrPageSizes[3] / 10),
			left : arrPageScroll[0]
		}).show();
		$(it_lightbox_lightbox_selector_popup_close).animate({width : parseInt(parseInt(it_lightbox_lightbox_start_width) + it_additional_move) + 'px'});
		$(it_lightbox_lightbox_selector).empty().show().animate(
				{
					width : it_lightbox_lightbox_start_width,
					height : it_lightbox_lightbox_start_height
				},
				it_lightbox_containerResizeSpeed,
				function() {
					$(it_lightbox_lightbox_selector).append(
							$(it_lightbox_lightbox_selector_popup_loading).css('margin-top','40px').show());
					$.get(url, {
						'type' : it_lightbox_listner_type,
						'tx_itlightbox_pi1[ajax]' : '1'
					}, afterRequestUrl);
				});
	}
	else {
		var margin_fix = 17.5;
		var new_margin_top = $(it_lightbox_lightbox_selector).height()/2 - margin_fix;
		$(it_lightbox_lightbox_selector).empty().append(
				$(it_lightbox_lightbox_selector_popup_loading).css('margin-top',new_margin_top + 'px').show());
		$.get(url, {
			'type' : it_lightbox_listner_type,
			'tx_itlightbox_pi1[ajax]' : '1'
		}, afterRequestUrl);
	}

}

function afterRequestUrl(page_response) {
	page_response = $.trim(page_response);
	/* set content */
	$(it_lightbox_lightbox_selector_popup).append(
			$(it_lightbox_lightbox_selector_popup_loading).hide());
	var old_width = $(it_lightbox_lightbox_selector).width();
	$(it_lightbox_lightbox_selector).empty().width(it_lightbox_lightbox_start_width).append(page_response);
	// Get current width and height
	var intWidth = $(it_lightbox_lightbox_selector_content).width()
			+ parseInt($(it_lightbox_lightbox_selector_content).css(
					'padding-left'))
			+ parseInt($(it_lightbox_lightbox_selector_content).css(
					'padding-right'));
	var width2set = $(it_lightbox_lightbox_selector_content).width();
	if (parseInt(intWidth) < parseInt(it_lightbox_lightbox_min_width)) {
		intWidth = parseInt(it_lightbox_lightbox_min_width);
		width2set = parseInt(it_lightbox_lightbox_min_width)
				- parseInt($(it_lightbox_lightbox_selector_content).css(
						'padding-left'))
				- parseInt($(it_lightbox_lightbox_selector_content).css(
						'padding-right'));
	}
	$(it_lightbox_lightbox_selector_content).css('width', width2set);
	var intHeight = $(it_lightbox_lightbox_selector_content).height()
			+ parseInt($(it_lightbox_lightbox_selector_content).css(
					'padding-top'))
			+ parseInt($(it_lightbox_lightbox_selector_content).css(
					'padding-bottom'));
	// Get the width and height of the selected image plus the padding
	// Perfomance the effect
	$(it_lightbox_lightbox_selector_popup_close).animate({width : parseInt(parseInt(intWidth) + it_additional_move) + 'px'});
	$(it_lightbox_lightbox_selector).width(old_width).animate( {
		width : intWidth,
		height : intHeight
	}, it_lightbox_containerResizeSpeed, function() {
		$(it_lightbox_lightbox_selector_content).show()
	});
	/* make magic with new links */
	var all = $(it_lightbox_selector, $(it_lightbox_lightbox_selector_content));
	for ( var i = 0; i < all.length; i++) {
		formatLinkForLightBox(all.eq(i));
	}
}

function hideLightBox() {
	$(it_lightbox_lightbox_selector_popup).hide();
	$(it_lightbox_lightbox_selector).hide();
	$(it_lightbox_lightbox_selector_popup_background).fadeOut();
	$(it_lightbox_lightbox_selector_popup_close).width(parseInt(parseInt(it_lightbox_lightbox_start_width) + it_additional_move) + 'px');
	$(it_lightbox_lightbox_selector).width(parseInt(it_lightbox_lightbox_start_width) + 'px');
	$(it_lightbox_lightbox_selector).height(parseInt(it_lightbox_lightbox_start_height) + 'px');
}

function formatLinkForLightBox(el) {
	el.click(function() {
		current_el = $(this);
		requestUrl(current_el.attr("href"));
		return false;
	});
}

$(function() {
	var all = $(it_lightbox_selector);
	for ( var i = 0; i < all.length; i++) {
		formatLinkForLightBox(all.eq(i));
	}
	$(it_lightbox_lightbox_selector_popup_close).click(function() {
		hideLightBox();
	});
});

/**
 * / 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;
};
