Syn.Popup=Class.extend({init:function(){if(typeof Syn.Popup.popup_instance_uid=='undefined'){Syn.Popup.popup_instance_uid=0}this.popup_instance_uid=Syn.Popup.popup_instance_uid++;this.popup_counter=0;this.current_popup=false},popup:function(options,obj,method,args){var that=this;var options=options||{};var args=args||[];options['popup_container_component']=options['popup_container_component']||'syn_popup';options['max_popups']=options['max_popups']||1;options['title']=options['title']||"";options['component_zone']='popup_'+(this.popup_instance_uid)+"_"+this.popup_counter++;options['show_loading']=(typeof options['show_loading']!='undefined')?options['show_loading']:true;var callback_fn=function(result){if(result){var load_fn=function(){if(options['show_loading']){$('#popup_loading_indicator').remove()}if(that.popup_counter>options['max_popups']&&that.current_popup){$(that.current_popup).parent().remove()}$(document.body).append(result.content);that.current_popup=$(document.body).find(".syn_popup:last")[0];if(typeof method=='string'){obj[method].apply(obj,[that.current_popup].concat(args))}else if(typeof method!='undefined'&&method){method.apply(obj,[that.current_popup].concat(args))}};$.getStyles(result.styles,Syn.Config.PortalRoot+"templates/troy/styles/");if(typeof result.javascripts!="undefined"&&result.javascripts.length){for(var k=0;k<result.javascripts.length;k++){if(result.javascripts[k].indexOf('http://')==-1&&result.javascripts[k].indexOf('https://')==-1){result.javascripts[k]=Syn.Config.PortalRoot+"js/"+result.javascripts[k]}}$.getScripts(result.javascripts,load_fn)}else{load_fn()}}};var left=options['left'];var top=options['top'];if(options['center']&&options['center']=='screen'){left=($(window).width()/2)+($(window).scrollLeft())+'px';top=($(window).height()/2)+($(window).scrollTop())+'px'}else if(options['center']&&$(options['center']).length>0){options['parent_key']=$(options['center']).attr('id').replace(':','\\:');left=($(options['center']).offset().left)+($(options['center']).width()/2)+'px';top=($(options['center']).offset().top)+($(options['center']).height()/2)+'px'}if(options['show_loading']){$(document.body).append('<div id="popup_loading_indicator"></div>');$('#popup_loading_indicator').css({'left':left,'top':top})}var comm=new Syn.Comm(Syn.Config.WebservicesUrl);comm.call("ComponentService","createByAvsType",{type:options['popup_container_component']+":"+json.serialize(options),page:1,zone:options['component_zone']},callback_fn)}});