jQuery.extend(
{		
		// scroll
		scroll:  
			{
				top : function()	
							{
								if (self.pageYOffset) 
									return self.pageYOffset
								else if(document.documentElement && document.documentElement.scrollTop)
									return document.documentElement.scrollTop
								else if(document.body)
									return document.body.scrollTop
							},
							
				left : function()	
							{
								if (self.pageXOffset) 
									return self.pageXOffset
								else if(document.documentElement && document.documentElement.scrollLeft)
									return document.documentElement.scrollLeft
								else if(document.body)
									return document.body.scrollLeft
							}
			},
		
		// viewport
		viewport:
			{
				width : function()	
							{
								if(self.innerWidth)
									return self.innerWidth
								else if(document.documentElement && document.documentElement.clientWidth)
									return document.documentElement.clientWidth
								else if(document.body)
									return  document.body.clientWidth
							},
							
				height : function()	
							{
								if(self.innerHeight)
									return self.innerHeight
								else if(document.documentElement && document.documentElement.clientHeight)
									return document.documentElement.clientHeight
								else if(document.body)
									return  document.body.clientHeight
							}
			},
	dc_PopupIframe: function(settings)
					{
						settings = jQuery.extend({
												  popupIframeName: 'dc_PopupIframe',
												  popupWidth: 400,
												  popupHeight: 300,
												  popupLeft: 'viewportCenter',
												  popupTop: 'viewportCenter',
												  popupBackground: 'transparent', 
												  popupDefaultSrc: '',
												  
												  popupCloseButtonID: 'dc_PopupCloseButton',
												  
												  waitPopupID: 'dc_WaitPopup',
												  popupMaskID: 'dc_ViewportMask',
												  
												  filterAndFormatContent: function(popupIframeName){}, // function for filtering and formatting content
												  							
												  popupParentNode: jQuery('body')
												 }
												 , settings)
						
						// creating and formatting the iframe element. default positioning: viewport center
						var posX = (settings.popupLeft == 'viewportCenter')?(Math.round((jQuery(window).width() - settings.popupWidth)/2) + 'px'):settings.popupLeft;
						var posY = (settings.popupTop == 'viewportCenter')?(jQuery.scroll.top() + (jQuery.viewport.height() - settings.popupHeight)/2 + 'px'):settings.popupTop;
						
						var dcpi = jQuery('<iframe name="' + settings.popupIframeName + '" src="' + settings.popupDefaultSrc + '" marginheight="0" marginwidth="0" frameborder="0" allowtransparency="true"></iframe>')
											.css({
													background: settings.popupBackground,
													width: settings.popupWidth + 'px',
													height: settings.popupHeight + 'px',
													//overflow: 'hidden',
													position: 'absolute',
													padding: '0px',
													margin: '0px',
													zIndex: 3000,													
													left: posX,
													top: posY,
													visibility: 'hidden'
												})
											.appendTo(settings.popupParentNode);
						
						dcpi.extend({									   
										hide: function()
												{
													jQuery(this).css('visibility', 'hidden')
												},
													
										show: function()
												{
													jQuery(this).css('visibility', 'visible')
												}
									})
						return dcpi;
					},
	dc_PopupCloseBtn: function(settings)
						{
						var settings = jQuery.extend({
												 	popupIframeName: 'dc_PopupIframe',
													popupCloseButtonID: 'dc_PopupCloseButton',
													waitPopupID: 'dc_PopupWaitMessage',
													popupMaskID: 'dc_ViewportMask',
													
													popupParentNode: jQuery('body'),
													
													triggerDynamicClass: 'dc_PopupTrigger',
													triggerSelectionClass: 'selected',
													disabledElementsClass: 'disabledByPopup',
													
													whenClicked: function()
															 {
																// remove selection class from the trigger
																jQuery('.' + dcp.settings.triggerDynamicClass)
																	.removeClass(dcp.settings.triggerSelectionClass);
																
																// remove popup and popup dependencies
																 jQuery('iframe[name=' + dcp.settings.popupIframeName + ']')
																	.add('[rel=' + dcp.settings.popupIframeName + ']')
																	.remove();
																
																// make elements disabled by popup visible
																jQuery('.'+ dcp.settings.disabledElementsClass)
																	.removeClass(dcp.settings.disabledElementsClass)
																	.css('visibility', 'visible');
																TIslideshow.start();
															 }
												  },
												  settings);
						
						var popup = jQuery('iframe[name=' + settings.popupIframeName + ']');
						var closeBtn = jQuery('<a href="#" id="' + settings.popupCloseButtonID + '" rel="' + settings.popupIframeName + '" class="popupCloseButton">back to main website</a>');
						closeBtn.css({
									position: 'absolute',
									zIndex: popup.css('zIndex') + 1,
									left:   parseInt(popup.css('left')) +
											popup.width() + 
											(parseInt(popup.css('border-left-width'))||0) -
											130 +
											'px',
									top: parseInt(popup.css('top')) + 
											popup.height() + 
											(parseInt(popup.css('border-top-width'))||0) + 
											(parseInt(popup.css('margin-top'))||0) +
											'px',
									display: 'none'
								})
							.addClass('PopupCloseButton')
							.click(function(){
												settings.whenClicked.call();
												return false;
											 })
							.appendTo(settings.popupParentNode);
							return closeBtn
					},
	dc_WaitPopup: function(settings)
					{
						settings = jQuery.extend({
												 	popupIframeName: 'dc_PopupIframe',
													waitPopupID: 'dc_WaitPopup',
													//waitMessage: 'Please wait...',
													waitMessage: '',
													popupParentNode: jQuery('#Content')
												  },
												  settings);
						
						var dcwp = jQuery('<div id="' + settings.waitPopupID + '" rel="' + settings.popupIframeName + '">' + settings.waitMessage + '</div>')
											.css({
													background: '#FFF',
													//border: '1px solid #DBDBDB',
													color: '#000',
													width: '100px',
													height: '100px',
													position: 'absolute',
													zIndex: 4000,
													left: Math.round((settings.popupParentNode.width() - 100)/2) + 'px',
													top: (settings.popupParentNode.height() - 100)/2 + 'px',
													textAlign: 'center',
													lineHeight: '100px',
													visibility: 'hidden',
													background: 'url(img/ajax-loader.gif) 50% 50% no-repeat'
												})
											.appendTo(settings.popupParentNode);
						
						dcwp.extend({	
									hide: function()
											{
												var wL = jQuery(this);
												wL.fadeTo('fast', 0.1, function(){jQuery(this).css('visibility', 'hidden')});
												//jQuery('#Content').css('visibility', 'visible');
											},
												
									show: function()
												{
													//jQuery('#Content').css('visibility', 'hidden');
													var wL = jQuery(this);
													wL.css({
																//opacity: 0.1,
																opacity: 1,
																visibility: ''
															 })
														//.fadeTo('fast', 1);
												}
								   });
						return dcwp;
					},
	dc_ViewportMask: function(settings)
					{
						settings = jQuery.extend({
													popupIframeName: 'dc_PopupIframe',
													popupMaskID: 'dc_ViewportMask',
													popupParentNode: jQuery('body'),
													whenClicked: function(){},
													disabledElementsClass: 'disabledByMask'
												  },
												  settings);
						var dcvm = jQuery('<div id="' + settings.popupMaskID + '" rel="' + settings.popupIframeName + '"></div>')
											.css({
													background: '#000',
													position: 'absolute', 
													zIndex: 1000,
													left: '0px', 
													top: '0px', 
													width: jQuery(document).width() + 'px', 
													height: settings.popupParentNode.height() + 'px',
													opacity: 0.5,
													visibility: 'hidden'
												})
											.click(function()
													{
														settings.whenClicked.call();
													})
											.appendTo(settings.popupParentNode);
											
						dcvm.extend({
										hide: function()
												{
													var vm = jQuery(this);
													vm.css('visibility', 'hidden');
													jQuery('.' + settings.disabledElementsClass)
														.css('visibility', 'visible')
														.removeClass(settings.disabledElementsClass);
												},
													
										show: function()
												{
													var vm = jQuery(this);
													vm.css('visibility', '');
													jQuery('select')
														.css('visibility', 'hidden')
														.addClass(settings.disabledElementsClass);
												}
									   });	
						return dcvm;
					}
})