",{"id":"SIGNIN"}).html('
×
').appendTo("body");jQuery("#SIGNIN").on('click',function(e){closeLogin()})},closeLogin=function(){jQuery("#SIGNIN").remove();jQuery("body").css("overflow","inherit")},adjustLoginHeight=function(h){jQuery("#Oframe").height(h)},login_success=function(sess){jQuery(".sign-up").html("LOGOUT").on('click',function(){location.href="https://signin."+CEN_DOMAIN+"/oauth/logout"});closeLogin()},LANG='en',commentHeight=function(data){jQuery("#block-ibt-comment iframe").height(data.height)};var login_success=function(sess){closeLogin();jQuery("article").removeClass("wall");jQuery(".login-btn .sign-up2").hide();jQuery(".login-btn .myaccount").show();jQuery(".only-before-login").hide();if(typeof sess=='object'){sess=sess.sess};jQuery("
",{"id":"TEMPE"}).html('').appendTo("body");jQuery("#TEMPE iframe").on("load",function(){jQuery("#TEMPE").remove();if(jQuery("iframe.comment").length){jQuery("iframe.comment").get(0).contentWindow.postMessage({'action':'success',},'*')}});afterLogin()};function afterLogin(){};doFir.push(function(){jQuery(document).ready(function(){jQuery(".sign-up2").on('click',function(e){e.preventDefault();e.stopPropagation();openLogin('https://signin.'+DOMAIN.replace(/ibtimes\.[\.a-z]+/,'ibtimes.com')+'/oauth?l='+jQuery(this).attr('data-lang'))})})})
Frank connects pricing, billing, and payment features that many other tools neglected to thread together. With subscription models, it's crucial that all these components can "talk to" and gather data from one another, so instead of keeping them in silos, Frank brings them to the same platform.