var iHeight=160, iWidth=320, minWidth= 250, minHeight=170, maxWidth=960, maxHeight=420, cHeight, cWidth;
var typeStr, pageUrl, pageTitleStr, modelNameStr, closeTextStr, pageTitleEl, modelNameEl, overlay, wrapper, content, tabClass;
var pageHeight, pageWidth, windowHeight, windowWidth, scrollTop, scrollLeft;

var markup = '<div class="model-popup-overlay"></div>'+
			 '<div class="model-popup-wrapper">'+
				'<div class="model-popup-content">'+
					'<div class="model-popup-title-block">'+
						'<div class="model-popup-title">'+
							'<h2></h2>'+
							'<h3></h3>'+
						'</div>'+
						'<div class="model-popup-close">'+
							'<a href="javascript:;"></a>'+
						'</div>'+
					'</div>'+
					'<div class="model-popup-content-inner"></div>'+
				'</div>'+
			'</div>'
;

function model_popup(type,url,width,height,pageTitle,modelName,closeText,tab) {

	pageHeight = jQuery('body').height();
	pageWidth = jQuery('body').width();
	windowHeight = jQuery(window).height();
	windowWidth = jQuery(window).width();
	scrollTop = jQuery(window).scrollTop();
	scrollLeft = jQuery(window).scrollLeft();

	pageUrl = url;
	pageTitleStr = pageTitle;
	modelNameStr = modelName;
	closeTextStr = closeText;
	typeStr = type;
	tabClass = tab;

	if(typeStr != 'slider') {
		
		cHeight = parseInt(height);
		cWidth = parseInt(width);

		if(cWidth > maxWidth) {
			cWidth = maxWidth;
		}

		if(cHeight > maxHeight) {
			cHeight = maxHeight;
		}

		if(cWidth < minWidth || isNaN(cWidth)) {
			cWidth = minWidth;
		}

		if(cHeight < minHeight || isNaN(cHeight)) {
			cHeight = minHeight;
		}

	}

	if(typeStr == 'slider') {
		cWidth = maxWidth;
	}

	initial();
}

function initial() {
	jQuery('body').append(markup);
	overlay = jQuery('.model-popup-overlay');
	wrapper = jQuery('.model-popup-wrapper');
	content = jQuery('.model-popup-content-inner');
	pageTitleEl = jQuery('.model-popup-title > h2');
	modelNameEl = jQuery('.model-popup-title > h3');
	
	pageTitleEl.html(pageTitleStr);
	modelNameEl.html(modelNameStr);
	
	overlay.css({'width':pageWidth,'height':pageHeight}).click(function() {
		closePopup();
	});
	
	jQuery('.model-popup-close > a').html(closeTextStr).click(function(){closePopup()});

	wrapper.css({'height':iHeight,'width':iWidth,'visibility':'visible','top':( ( windowHeight - iHeight ) / 2 ) + scrollTop,'marginLeft':-(iWidth/2)});

	if(typeStr == 'slider') {
		content.load(pageUrl,function() {
			jQuery('ul.media-bar-tab-navigation a.'+tabClass).click();
		})
	}

	if(typeStr == 'page') {
		content.load(pageUrl,function() {
			jQuery(this).hide();
			wrapper.animate({height:cHeight + staticElementDimension(), top:( ( windowHeight - ( cHeight + staticElementDimension() ) ) / 2 ) + scrollTop },function(){																																	
				jQuery(this).animate({width:cWidth,marginLeft:-(cWidth/2)},function() {
					content.css({'height':cHeight,'width':cWidth-18,'overflow':'auto'}).fadeIn(500);
				})																																		  
			});
		})
	}

}

function staticElementDimension() {
	var el = ['div.model-popup-title-block'];
	var _staticElementDimension = 0;
	for(var i=0; i < el.length; i++) {
		_staticElementDimension += jQuery(el[i]).height();
	}
	return _staticElementDimension + 14;
}

function calculatePopupHeightDimension() {
	return (content.height() + staticElementDimension());
}

function calculateVerticalPopupPosition(callback) {
	wrapper.animate({height:calculatePopupHeightDimension(),top:( ( windowHeight - calculatePopupHeightDimension() ) / 2 ) + scrollTop},function() {
		callback;
	});
}

function calculateHorizontalPopupPosition(callback) {
	wrapper.animate({width:maxWidth,marginLeft:-(cWidth/2)},function() {
		callback;
	});
}

function closePopup() {
	wrapper.fadeOut('normal',function() {
		jQuery(this).remove();
		overlay.remove();

		if(jQuery('img#tempPic').length > 0) {
			jQuery('img#tempPic').remove();
		}
	})
}