// Pixelsilk Modal
// version 1.0.3
// Last update: 05/09/2011
// Last Modification: Add Open / Close modal callback functions - DMC.

jQuery.fn.pixelsilkModal=function(options){var defaults={loadMethod:'onclick',modalContainerClass:'boxModal',modalWrapperClass:'boxModalContentOuter',closeButtonClass:'close',contentType:'ajax',contentSource:'',iframeScrollX:true,iframeScrollY:true,showCloseButton:true,keepInView:true,closeOnBGClick:true,closeOnEscapeKey:true,modalWidth:500,modalHeight:500,content:'<p>Pixelsilk Modal</p>',fadeInSpeed:500,fadeOutSpeed:500,closeButtonHTML:'X',offsetTop:100,bodyOverlayOpacity:0.45,modalBorderOpacity:0.45,modalBorder:'10px',callBackOnOpen:null,callbackOnClose:null};var options=$.extend(defaults,options);return this.each(function(){var anchor=$(this).attr('href');function showModal(){fnCallBackOnOpen();if(!$("div."+options.modalContainerClass).length){$('body').append('<div class="'+options.modalContainerClass+'"><div class="'+options.modalWrapperClass+'"><div class="marginFix"></div><div class="modalContent"></div><div class="modalContentBG"></div><div class="marginFix"></div></div><div class="boxModalBG"></div></div>');}
var mainModal=$('.'+options.modalWrapperClass);var modal=$('.'+options.modalContainerClass);var modalBG=$('.boxModalBG');var modalContentBG=$('.modalContentBG');modalBG.css({'opacity':options.bodyOverlayOpacity});modalContentBG.css({'opacity':options.modalBorderOpacity});mainModal.hide().css({'margin-top':Number(options.offsetTop+$(window).scrollTop())});modal.hide();modal.css({'height':'100%'});var contentArea=modal.find('.modalContent');if(options.contentType=='iframe'){contentArea.html('<iframe src="'+anchor+'" frameborder="0" width="100%" height="100%" scrolling="auto"></iframe>');if(options.contentSource!=''){contentArea.find('iframe').attr('src',options.contentSource);}else
contentArea.find('iframe').attr('src',anchor);}else if(options.contentType=='html'){contentArea.html(options.content);}else if(options.contentType=='ajax'){if(options.contentSource!=''){contentArea.load(options.contentSource);}else{contentArea.load(anchor);}}else if(options.contentType=='image'){contentArea.append('<img src="'+anchor+'" />',function(){});}
if(options.contentType=='iframe'&&options.iframeScrollX){contentArea.find('iframe').css({'overflow-x':'auto'});}else if(options.contentType=='iframe'&&!options.iframeScrollX){contentArea.find('iframe').css({'overflow-x':'hidden'});}
if(options.contentType=='iframe'&&options.iframeScrollY){contentArea.find('iframe').css({'overflow-y':'auto'});}else if(options.contentType=='iframe'&&!options.iframeScrollY){contentArea.find('iframe').css({'overflow-y':'hidden'});}
if(options.showCloseButton){mainModal.append('<div class="'+options.closeButtonClass+'" style="display:none;">'+options.closeButtonHTML+'</div>');}
if(options.modalBorder!=''){contentArea.css({'margin':options.modalBorder});}
mainModal.animate({'width':options.modalWidth});if(options.modalHeight!=''){mainModal.animate({'height':options.modalHeight});}
var cPaddingY=Number(contentArea.css('padding-top').replace('px',''));cPaddingY+=Number(contentArea.css('padding-top').replace('px',''));var cMarginY=Number(contentArea.css('margin-top').replace('px',''));cMarginY+=Number(contentArea.css('margin-bottom').replace('px',''));var marginFix=$('.marginFix');var fixedMargins;if(marginFix.size()>0){fixedMargins=marginFix.size()+marginFix.height();}
contentArea.height(Number(options.modalHeight-cPaddingY-cMarginY-fixedMargins));modal.fadeIn(options.fadeInSpeed,function(){mainModal.fadeIn(options.fadeInSpeed,function(){mainModal.find('.'+options.closeButtonClass).fadeIn();});});if(options.closeOnBGClick){$(modalBG).click(function(){removeModal(options.fadeOutSpeed);});}
$('.'+options.closeButtonClass).click(function(){removeModal(options.fadeOutSpeed);});if(options.closeOnEscapeKey){$(window).keyup(function(e){if(e.keyCode==27){removeModal(75);}});}
if(options.keepInView){$(window).scroll(function(){mainModal.css({'margin-top':Number(options.offsetTop+$(window).scrollTop())});});}
function removeModal(speed){var fadeOutSpeed;if(!speed||speed==null||speed==undefined||speed==''){fadeOutSpeed=50;}else{fadeOutSpeed=speed;}
mainModal.fadeOut(fadeOutSpeed,function(){modal.fadeOut(fadeOutSpeed,function(){modal.remove();fnCallBackOnClose();});});return false;}}
if(options.loadMethod=='onclick'){$(this).click(function(){showModal();return false;});}else if(options.loadMethod=='onload'){showModal();}
function fnCallBackOnOpen(){if(options.callBackOnOpen){eval(options.callBackOnOpen);}}
function fnCallBackOnClose(){if(options.callbackOnClose){eval(options.callbackOnClose);}}});};
