if (typeof FFN === 'undefined' || !FFN) { var FFN = {}; } FFN.banners = FFN.banners || {}; FFN.banners.ad_pop = { name : 'FriendFinder Networks, Ad Pop', version : '1.1.2', url : 'http://ffn.com', email : 'affiliates@amigos.com', config : { banners_domain : 'http://banners.amigos.com', site : 'ffe', gpid : 'g1412444', pid : 'g1412444-pmem', hostpid : '', creativeTracking : 'ad_pop', cookieName : 'FFN_adPop_g1412444-pmem', href : 'https://amigos.com', freqCap : '', page : 'registration', land : '', popup : { width : parseInt('640' ,10), height : parseInt('480',10), top : parseInt('' ,10), left : parseInt('',10), loaded : false, win : false, url : '' }, windowTop : self, windowLast : null, srcCheck : '/go/page/js_ad_pop', keyRef : 'lp_', keysExcluded : { plain_text : 1, popunder_off : 1, no_click : 1, pid : 1, freq_cap : 1, page : 1, land : 1, win_width : 1, win_height : 1, skip_lpo : 1 }, MS : { Y : 31557600000, W : 604800000, D : 86400000, H : 3600000, M : 60000, S : 1000 }, streamInfo : [ { stream_name : '' } ] }, build : function(){ var cfg = FFN.banners.ad_pop.config, windowOptions; if (cfg.popup.loaded){ return; } cfg.land = cfg.land.length > 0 ? cfg.land : 'gallery_landing_page'; var extraArgs = FFN.banners.ad_pop.getArgs(cfg.srcCheck, cfg.keysExcluded, cfg.keyRef); var hostpidArg = cfg.hostpid.length > 0? '&hostpid=' + cfg.hostpid : ''; var qsArgs = 'creative=' + cfg.creativeTracking + hostpidArg + extraArgs; var modelPath = cfg.site === 'cams'? '/p/cams/view.cgi' : '/lvs_viewer'; var winUrl = { 'cover' : cfg.href + '/go/' + cfg.pid + '?' + qsArgs, 'registration' : cfg.href + '/go/' + cfg.pid + '+reg?' + qsArgs, 'search' : cfg.href + '/search/?pid=' + cfg.pid + '&' + qsArgs, 'gallery' : cfg.banners_domain + '/go/page/gallery_landing_page?pid=' + cfg.pid + '&' + qsArgs, 'landingx' : cfg.banners_domain + '/go/page/' + cfg.land + '?pid=' + cfg.pid + '&' + qsArgs, 'video' : cfg.href + '/p/video/manager.cgi?pid=' + cfg.pid + '&min_age=18&max_age=&date_range=30_day&action=sort_score&' + qsArgs, 'model' : cfg.href + modelPath + '?pid=' + cfg.pid + '&stream=' + cfg.streamInfo[0].stream_name + '&action=view' + '&' + qsArgs, 'cams_video1' : cfg.banners_domain + '/go/page/cams_video_landing_01?pid=' + cfg.pid + '&' + qsArgs, 'cams_video2' : cfg.banners_domain + '/go/page/cams_video_landing_02?pid=' + cfg.pid + '&' + qsArgs, 'cams_video3' : cfg.banners_domain + '/go/page/cams_video_landing_03?pid=' + cfg.pid + '&' + qsArgs, 'cams_video4' : cfg.banners_domain + '/go/page/cams_video_landing_04?pid=' + cfg.pid + '&' + qsArgs, 'cams_video5' : cfg.banners_domain + '/go/page/cams_video_landing_05?pid=' + cfg.pid + '&' + qsArgs, 'cams_video6' : cfg.banners_domain + '/go/page/cams_video_landing_06?pid=' + cfg.pid + '&' + qsArgs, 'cams_video7' : cfg.banners_domain + '/go/page/cams_video_landing_07?pid=' + cfg.pid + '&' + qsArgs }; if(typeof winUrl[cfg.page] === 'undefined' || (cfg.site === 'cams' && cfg.page === 'search') ){ cfg.page = 'registration'; } if(cfg.page !== 'cover'){ winUrl[cfg.page] += '&skip_lpo=1'; } cfg.popup.url = winUrl[cfg.page]; cfg.popup.width = cfg.popup.width > 0 ? cfg.popup.width : 1024; cfg.popup.height = cfg.popup.height > 0 ? cfg.popup.height : 768; cfg.popup.left = cfg.popup.left > 0 ? cfg.popup.left : Math.max( 0, ( (screen.width - cfg.popup.width) / 2) ); cfg.popup.top = cfg.popup.top > 0 ? cfg.popup.top : Math.max( 0, ( ((screen.height - cfg.popup.height) / 2) - 50) ); windowOptions = {width:cfg.popup.width, height:cfg.popup.height, top:cfg.popup.top, left:cfg.popup.left}; FFN.banners.ad_pop.open(windowOptions); cfg.freqCap = /\d+/.test(cfg.freqCap) ? parseFloat(cfg.freqCap) : 0; if(cfg.freqCap !== 0){ FFN.banners.ad_pop.setCookie(cfg.cookieName,1,cfg.freqCap,'/'); } cfg.popup.loaded = true; }, popUnderRetry : function() { self.focus(); setTimeout('self.focus()', 500); setTimeout('self.focus()', 1000); setTimeout('self.focus()', 1500); }, getArgs : function(searchStr, exclude, ref){ var idx, key, mKey, theKey; var re = new RegExp(searchStr); var scrTags = document.getElementsByTagName('script'); var scrTagsLen = scrTags.length; var scrTagSrc = ''; var result = ''; var keyValues = {}; var refLen = ref.length; for (idx = 0; idx < scrTagsLen; idx++){ if(scrTags[idx].src.search(re) !== -1){ scrTagSrc = scrTags[idx].src; } } keyValues = FFN.banners.ad_pop.getQueryStringKeyValues(scrTagSrc); for(key in keyValues){ if(typeof exclude[key] === 'undefined'){ if(key.substr(0,refLen) === ref){ mKey = key.substr(refLen, key.length); } theKey = exclude[mKey] === 1? mKey : key; result += '&' + theKey + '=' + keyValues[key]; mKey = ''; } } return result; }, getQueryStringKeyValues : function(url){ var urlQSPos = url.indexOf('?'); if(typeof url === 'undefined' || urlQSPos === -1){ return; } var temp, i, urlQSLen; var qs = {}; var urlQS = url; urlQS = urlQS.substr(urlQSPos+1, urlQS.length); urlQS = urlQS.split('&'); urlQSLen = urlQS.length; for(i = 0; i < urlQSLen; i++){ temp = urlQS[i].split('='); qs[temp[0]] = temp[1]; } return qs; }, setCookie : function(name,value,expires,path,domain,secure){ var expStr = ''; var type = 'H'; if(expires){ var expDte = new Date(); var expMS = expDte.valueOf() + (this.config.MS[type] * expires); expDte.setTime(expMS); expStr = '; expires=' + expDte.toGMTString(); } var pathStr = ( ( path === undefined ) ? '' : ( '; path=' + path ) ); var domainStr = ( ( domain === undefined ) ? '' : ( '; domain=' + domain ) ); var secureStr = ( ( secure === undefined ) ? '' : ( '; secure' ) ); document.cookie = name + '=' + escape(value) + expStr + pathStr + domainStr + secureStr; }, getCookie : function(name){ var output = null; var cks = ' ' + document.cookie + ';'; var matchCk = ' ' + name + '='; var startPos = cks.indexOf(matchCk); var endPos; if(startPos != -1){ startPos += matchCk.length; endPos = cks.indexOf(';', startPos); output = unescape(cks.substring(startPos, endPos)); } return output; }, init : function(){ if(!FFN.banners.ad_pop.getCookie(FFN.banners.ad_pop.config.cookieName)){ if (window.captureEvents){ window.captureEvents(Event.CLICK); window.onclick = FFN.banners.ad_pop.build; }else{ document.onclick = FFN.banners.ad_pop.build; } } }, addEvent : function(elm,type,fn){ if(elm.addEventListener){ elm.addEventListener(type, fn, false); }else if(elm.attachEvent){ elm.attachEvent('on' + type, fn); } }, open: function(options) { var cfg = FFN.banners.ad_pop.config, uniqueWindowName = cfg.cookieName + "_" + new Date().getTime(); if (top !== self) { try { if (top.document.location.toString()) { cfg.windowTop = top; } } catch (err) {} } // create pop-up cfg.windowLast = cfg.windowTop.window.open(cfg.popup.url, uniqueWindowName, this.getOptions(options)) || cfg.windowLast; this.moveToBackground(); return true; }, moveToBackground: function() { var cfg = FFN.banners.ad_pop.config; if (cfg.windowLast) { cfg.windowLast.blur(); cfg.windowTop.window.blur(); cfg.windowTop.window.focus(); try { // Popunder for Firefox, Chrome. IE will throw an error here. cfg.windowLast.init = function(e) { FFN.banners.ad_pop.backgroundHack(e); try { e.opener.window.focus(); } catch (err) {} }; cfg.windowLast.init(cfg.windowLast); } catch(err) { // IE will execute this code. setTimeout(function(){FFN.banners.ad_pop.popUnderRetry()}, 2000); } } }, backgroundHack: function(e) { // In ff4+, chrome21+ we need to trigger a window.open lose the focus on the popup. Afterwards we can re-focus the parent-window. if (typeof e.window.mozPaintCount !== 'undefined' || typeof e.navigator.webkitGetUserMedia === "function") { try { e.window.open('about:blank').close(); } catch (err) {} } }, getOptions : function(options) { return 'toolbar=' + (options.toolbar || '0') + ',scrollbars=' + (options.scrollbars || '1') + ',location=' + (options.location || '1') + ',statusbar=' + (options.statusbar || '1') + ',menubar=' + (options.menubar || '0') + ',resizable=' + (options.resizable || '1') + ',width=' + (options.width || (screen.availWidth - 122).toString()) + ',height=' + (options.height || (screen.availHeight - 122).toString()) + ',screenX=' + (options.screenX || '0') + ',screenY=' + (options.screenY || '0') + ',left=' + (options.left || '0') + ',top=' + (options.top || '0'); } }; FFN.banners.ad_pop.addEvent(window, 'load', FFN.banners.ad_pop.init);