
/* - ++resource++plone.app.jquerytools.overlayhelpers.js - */
// http://www.waltertejada.com/portal_javascripts/++resource++plone.app.jquerytools.overlayhelpers.js?original=1
var pb={spinner:{}};pb.overlay_counter=1;jQuery.tools.overlay.conf.oneInstance=false;jQuery(function($){pb.spinner.show=function(){$('body').css('cursor','wait')};pb.spinner.hide=function(){$('body').css('cursor','')};$.fn.prepOverlay=function(pbo){return this.each(function(){var o,config,onBeforeLoad,onLoad,src,nt,el,selector,parts;o=$(this);config=pbo.config||{};onBeforeLoad=pb[pbo.subtype];if(onBeforeLoad){config.onBeforeLoad=onBeforeLoad}
onLoad=config.onLoad;config.onLoad=function(){if(onLoad){onLoad.apply(this,arguments)}
pb.fi_focus(this.getOverlay())};if(!o.attr('rel')){src=o.attr('href')||o.attr('src')||o.attr('action');if(pbo.urlmatch){src=src.replace(new RegExp(pbo.urlmatch),pbo.urlreplace)}
if(pbo.subtype==='inline'){src=src.replace(/^.+#/,'#');$("[id='"+src.replace('#','')+"']").addClass('overlay');o.removeAttr('href').attr('rel',src);o.overlay()} else{nt='pb_'+pb.overlay_counter;pb.overlay_counter+=1;o.attr('rel','#'+nt);o.addClass('link-overlay');el=$('<div id="'+nt+'" class="overlay overlay-'+pbo.subtype+' '+(pbo.cssclass||'')+'"><div class="close"><span>Close</span></div>');el.appendTo($("body"));if(pbo.width){el.width(pbo.width)}
selector=pbo.filter||pbo.selector;if(!selector){parts=src.split(' ');src=parts.shift();selector=parts.join(' ')}
el.data('target',src).data('selector',selector);el.data('formtarget',pbo.formselector);el.data('noform',pbo.noform);el.data('redir_url',pbo.redirect);el.data('closeselector',pbo.closeselector);el.data('beforepost',pbo.beforepost);el.data('afterpost',pbo.afterpost);el.data('source',o);switch(pbo.subtype){case 'image':o.click(pb.image_click);el.overlay(config);break;case 'ajax':o.click(pb.ajax_click);el.overlay(config);break;case 'iframe':o.overlay(config);break;default:throw "Unsupported overlay type"}
o.css('cursor','pointer')}}})};pb.image_click=function(event){var content,api,src,img,el;content=$($(this).attr('rel'));api=content.overlay();if(content.find('img').length===0){src=content.data('target');if(src){pb.spinner.show();img=new Image();img.src=src;el=$(img);content.append(el.addClass('pb-image'));el.load( function(){pb.spinner.hide();api.load()})}} else{api.load()}
return false};pb.fi_focus=function(jqo){if(!jqo.find("form div.error :input:first").focus().length){jqo.find("form :input:visible:first").focus()}};pb.ajax_error_recover=function(responseText,selector){var tcontent=$('<div/>').append(responseText.replace(/<script(.|\s)*?\/script>/gi,""));return selector?tcontent.find(selector):tcontent};pb.prep_ajax_form=function(form){var ajax_parent=form.closest('.pb-ajax'),data_parent=ajax_parent.closest('.overlay-ajax'),formtarget=data_parent.data('formtarget'),closeselector=data_parent.data('closeselector'),beforepost=data_parent.data('beforepost'),afterpost=data_parent.data('afterpost'),api=data_parent.overlay(),selector=data_parent.data('selector'),options={};options.beforeSerialize=function(){pb.spinner.show()};if(beforepost){options.beforeSubmit=function(arr,form,options){return beforepost(form,arr,options)}}
options.success=function(responseText,statusText,xhr,form){var noform,el,myform,success,target;success=statusText==="success"||statusText==="notmodified";if(!success){responseText=responseText.responseText}
responseText=responseText.replace(/<script(.|\s)*?\/script>/gi,"");el=$('<div />').append(selector?$('<div />').append(responseText).find(selector):responseText);if(success&&afterpost){afterpost(el,data_parent)}
myform=el.find(formtarget);if(success&&myform.length){ajax_parent.empty().append(el);pb.fi_focus(ajax_parent);myform.ajaxForm(options);if(closeselector){el.find(closeselector).click(function(event){api.close();return false})}} else{if(success){noform=data_parent.data('noform');if(typeof(noform)==="function"){noform=noform(this)}} else{noform=statusText}
switch(noform){case 'close':api.close();break;case 'reload':api.close();pb.spinner.show();location.replace(location.href);break;case 'redirect':api.close();pb.spinner.show();target=data_parent.data('redir_url');if(typeof(target)==="function"){target=target(this,responseText)}
location.replace(target);break;default:if(el.children()){ajax_parent.empty().append(el)} else{api.close()}}}
pb.spinner.hide()};options.error=options.success;form.ajaxForm(options)};pb.ajax_click=function(event){var content=$($(this).attr('rel')),api=content.overlay(),src=content.data('target'),el=content.children('div.pb-ajax'),selector=content.data('selector'),formtarget=content.data('formtarget'),closeselector=content.data('closeselector'),sep;pb.spinner.show();$(this).find("input.submitting").removeClass('submitting');if(!el.length){el=$('<div class="pb-ajax" />');if(api.getConf().fixed){el.css('max-height',Math.floor($(window).height() * 0.75))}
content.append(el)}
sep=(src.indexOf('?')>=0)?'&':'?';src+=sep+"ajax_load="+(new Date().getTime());if(selector){src+=' '+selector}
el.load(src,null, function(responseText,errorText){var el=$(this);if(errorText==='error'){el.append(pb.ajax_error_recover(responseText,selector))} else if(!responseText.length){el.append(ajax_noresponse_message||'No response from server.')}
el.wrapInner('<div />');if(formtarget){pb.prep_ajax_form(el.find(formtarget))}
if(closeselector){el.find(closeselector).click(function(event){api.close();return false})}
if($.fn.ploneTabInit){el.ploneTabInit()}
api.onClose=function(){el.remove()};pb.spinner.hide();api.load();return true});return false};pb.iframe=function(){var content=this.getContent(),src;pb.spinner.show();if(content.find('iframe').length===0){src=content.data('target');if(src){content.append('<iframe src="'+src+'" width="'+content.width()+'" height="'+content.height()+'" onload="pb.spinner.hide()"/>')}} else{pb.spinner.hide()}
return true}});

