/*
EXAMPLE EXAMPLE EXAMPLE
	(function($){

		$(document).ready( function() {
			$.fn.icattBoardwalkModalDialog({
				dialogname:'uniquenameofdialog',
				show_once:false,
				headerhtml:'Heeft uw school de zichtzending van Moet je doen?',
				bodyhtml:'Zou u dan een aantal korte vragen willen beantwoorden over deze zichtzending?<br />De vragen gaan met name over de inhoud en kwaliteit van de zichtzending, uw huidige methode en of u nog aanvullende materialen wilt ontvangen om een keuze maken.',
				footerhtml:'(Het beantwoorden van de meerkeuzevragen kost u slechts 3 minuten.)',
				closetitle:'title of close button',
				canceltitle:'title of cancel button',
				starttitle:'titel of start button',
				starturl:'http://www.icatt.nl',
				starturltarget:'_self',
				onclose:function(){return false;},
				oncancel:function(){return false;},
				onstart:function(){return false;},
				showheader:true,
				showbody:true,
				showfooter:true,
				showclosebutton:true,
				showcancelbutton:true,
				showstartbutton:true
			});
		});
						
	})(jQuery)
END EXAMPLE END EXAMPLE END EXAMPLE
*/
(function($){
	
	$.fn.icattBoardwalkModalDialog = function(options){
		var $this = this;
		
		var cookiename = options.dialogname?options.dialogname:'icattBoardwalkModalDialog';
		var doshow = options.show_once!=false?$.cookie(cookiename) == null:true;


		if (doshow) {

			//Get values from options
			var startUrl = options.starturl;
			var urlTarget = options.starturltarget;

			var headerHtml = options.headerhtml?options.headerhtml:'';
			var bodyHtml = options.bodyhtml?options.bodyhtml:'';
			var footerHtml = options.footerhtml?options.footerhtml:'';

			var closeAltText = options.closetitle?options.closetitle:'close';
			var cancelAltText = options.canceltitle?options.canceltitle:'cancel';
			var startAltText = options.starttitle?options.starttitle:'start';
			
			var onClose = options.onclose;
			var onCancel = options.oncancel;
			var onStart = options.onstart;
			
			var showheader = options.showheader!=false;
			var showbody = options.showbody!=false;
			var showfooter = options.showfooter!=false;
			
			var showclosebutton = options.showclosebutton!=false;
			var showcancelbutton = options.showcancelbutton!=false;
			var showstartbutton = options.showstartbutton!=false;

			//Get elements
			var $docHtml = $('HTML');
			var $docBody = $(document.body);
				
			var $dialog = $docBody.find('#icattBoardwalkModalDialog');
				if (0==$dialog.length){
					$docBody.append('<div id="icattBoardwalkModalDialogBackground" onselectstart="javascript:return false;"><iframe id="ibmdFrame" class="ibmdFrame" marginwidth="0" marginheight="0" src="about:blank" scrolling="no" frameborder="0" noresize="noresize"></iframe></div><div id="icattBoardwalkModalDialog" class="ibmdPopup" onselectstart="javascript:return false;"><a class="ibmdClose" href="#">&nbsp;</a><div class="ibmdClearer"></div><h1 class="ibmdHeadertext"></h1><div class="ibmdBodytext"></div><div class="ibmdFootertext"></div><p class="ibmdButtons"><a class="ibmdStart" href="#">&nbsp;</a><a class="ibmdCancel" href="#">&nbsp;</a></p></div>');
					$dialog = $docBody.find('#icattBoardwalkModalDialog');
				}

			var $coverLayer = $docBody.find('#icattBoardwalkModalDialogBackground');
			var $coverLayerFrame = $docBody.find('#ibmdFrame');
			
			var $headerTextElement = $dialog.find('.ibmdHeadertext');
			var $bodyTextElement = $dialog.find('.ibmdBodytext');
			var $footerTextElement = $dialog.find('.ibmdFootertext');

			var $closeButton = $dialog.find('.ibmdClose');
			var $cancelButton = $dialog.find('.ibmdCancel');
			var $startButton = $dialog.find('.ibmdStart');

			//Initialize element values
			$headerTextElement.html(headerHtml);
			$bodyTextElement.html(bodyHtml);
			$footerTextElement.html(footerHtml);
			
			$closeButton.attr('title', closeAltText);
			$cancelButton.attr('title', cancelAltText);
			$startButton.attr('title', startAltText);
			
			if (!showheader)$headerTextElement.hide();
			if (!showbody)$bodyTextElement.hide();
			if (!showfooter)$footerTextElement.hide();
			
			if (!showclosebutton)$closeButton.hide();
			if (!showcancelbutton)$cancelButton.hide();
			if (!showstartbutton)$startButton.hide();

			var bodyWidth = _getCssValue($docBody, 'width', 'auto');
			var bodyHeight = _getCssValue($docBody, 'height', 'auto');
			var bodyPadding = _getCssValue($docBody, 'padding', 'auto');
			var bodyMargin = _getCssValue($docBody, 'margin', 'auto');
			var htmlWidth = _getCssValue($docHtml, 'width', 'auto');
			var htmlHeight = _getCssValue($docHtml, 'height', 'auto');
			var htmlPadding = _getCssValue($docHtml, 'padding', 'auto');
			var htmlMargin = _getCssValue($docHtml, 'margin', 'auto');
			var overflowValue = _getCssValue($docBody, 'overflow', 'auto');
			
			//Display and hide dialog
				_setCssValue($docBody, 'width', '100%');
				_setCssValue($docBody, 'height', '100%');
				_setCssValue($docBody, 'padding', '0px');
				_setCssValue($docBody, 'margin', 'auto');
				_setCssValue($docHtml, 'width', '100%');
				_setCssValue($docHtml, 'height', '100%');
				_setCssValue($docHtml, 'padding', '0px');
				_setCssValue($docHtml, 'margin', '0px');
				_setCssValue($docBody, 'overflow', 'hidden');

				$coverLayer.show();
				$coverLayerFrame.show();
				$dialog.show('slow',function(){
					if(startUrl){
						if(urlTarget){
							$startButton.attr('target', urlTarget);
						}
						$startButton.attr('href', startUrl);
					}
					$closeButton.bind('click', function(){
						if(onClose){onClose();}
						_hide(overflowValue, 0)
					});
					$startButton.bind('click', function(){
						if(onStart){onStart();}
						_hide(overflowValue, 1)
					});
					$cancelButton.bind('click', function(){
						if(onCancel){onCancel();}
						_hide(overflowValue, 2)
					});
					$docBody.scrollTop(0);
					$docBody.scrollLeft(0);
				});
		}
		
		function _getCssValue(obj, cssname, defaultvalue){
			try{
				return obj.css(cssname);
			}catch(e){
				return defaultvalue;
			}
		}
		function _setCssValue(obj, cssname, value){
			try{
				obj.css(cssname, value);
			}catch(e){
			}
		}

		function _hide(overflowvalue, cookievalue){
			$dialog.hide('fast', function() {
				$coverLayer.slideUp('slow', function(){
					_setCssValue($docBody, 'width', bodyWidth);
					_setCssValue($docBody, 'height', bodyHeight);
					_setCssValue($docBody, 'padding', bodyPadding);
					_setCssValue($docBody, 'margin', bodyMargin);
					_setCssValue($docHtml, 'width', htmlWidth);
					_setCssValue($docHtml, 'height', htmlHeight);
					_setCssValue($docHtml, 'padding', htmlPadding);
					_setCssValue($docHtml, 'margin', htmlMargin);
					_setCssValue($docBody, 'overflow', overflowValue);
					$coverLayerFrame.hide();
				});
			});
			$.cookie(cookiename, cookievalue);
		}

		return $this;
	};

})(jQuery);