/* 2026-01-26 15:12:29 */
var ffJS={debug:!1,lib:[],templates:{'media.tab_library':'<div data-ff-target=".ff-tab-library" class="ff-tab ff-active">IMAGE LIBRARY</div>','media.tab_url':'<div data-ff-target=".ff-tab-url" class="ff-tab">+ ADD FROM URL</div>','media.tab_file':'<div data-ff-target=".ff-tab-file" class="ff-tab">+ ADD FROM FILE</div>','media.content_library':'<div class="ff-tab-page ff-tab-library" data-ff-library-url><label class="ff-load-msg">loading...</label></div>','media.content_url':'<div class="ff-tab-page ff-tab-url"><label>Enter a web page URL, image link, or youtube link</label><input class="ff-media-link" type="text" placeholder="Paste in a URL"><div class="ff-media-list"></div></div>','media.content_file':'<div class="ff-tab-page ff-tab-file"><div style="margin-bottom:10px;"><label>Select one or more files from your computer to upload</label></div><input name="ff-media-file[]" type="file" accept="image/*" capture="capture" class="ff-media-link" type="text" placeholder="Select a file" multiple><div class="ff-media-list"></div></div>','media.header_text':'<div style="padding-top:.5em;"><input placeholder="{placeholder}" type="text" class="ff-media-header" name="{name}"></div>','media.popover':'<div class="ff-tab-page ff-active">{images}</div>','media.content':'<div class="ffw-media">{header}<div class="ff-tabs" data-ffw="tabs"><div>{tab_library}{tab_url}{tab_file}</div>{content_library}{content_url}{content_file}</div><div data-ff-preview class="ff-hide"><div class="ff-tabs"><div class="ff-tab ff-tab-preview ff-active">IMAGE PREVIEW</div></div><div class="ff-tab-page ff-preview ff-active"><i class="ff-pointer ff-preview-close icon-remove right"></i><div data-ff-preview-image></div></div></div><div class="ff-tabs"><div class="ff-tab ff-active">SELECTED ITEMS</div></div><div class="ff-tab-page ff-active"><label>Images will appear here</label><div class="ff-selected-items"></div></div></div>','wiki.content':'<div class="ff-wiki-container"><input [data-ff-wiki-value] type="hidden" name="{name}" value="{value}"><div class="ff-wiki-placeholder">&laquo; CREATE WIKI - START BY ADDING A SECTION BELOW &raquo;</div></div><div class="ff-wiki-action"><p>Add new section:</p><span></span><div data-ff-wiki-add="heading"><p>H</p><span>Heading</span></div><div data-ff-wiki-add="text"><p>Aa</p><span>Text</span></div><div data-ff-wiki-add="media"><i class="icon-picture"></i><span>Image / Video</span></div></div>','icon.share':'icon-share','icon.like':'icon-heart','icon.liked':'icon-heart ff-liked','icon.flag':'icon-flag','icon.delete':'icon-remove','icon.facebook':'icon-facebook-squared','icon.google':'icon-gplus-squared','icon.twitter':'icon-twitter-squared','icon.pinterest':'icon-pinterest-squared','alert.container':'<div class="ff-alert-container" data-ff-target="{target}" data-ff-vPos="{vPos}" data-ff-hPos="{hPos}" data-ff-ePos="{ePos}"></div>','alert.box':'<div class="ff-alert ff-alert-{type} ff-{size}">{content}<i data-ff-close class="ff-pointer icon-remove"></i></div>','alert.basic':'<span>{message}</span>','interaction.container':'<div class="ff-interactions {layout} {size}">{content}</div>','interaction.span':'<span {trigger} data-ff-tpl="{template}" data-ff-params-title="{title}" data-ff-params-buttons="{buttons}" ><i class="ff-interaction {icon}"></i></span>','interaction.share_form':'<div class="ff-share-form" data-ff-trx data-ff-trx-type="share" data-ff-id="{id}" data-ff-tid="{tid}" data-ff-eid="{eid}"><h4 class="title">Share {title}</h4>{buttons}</div>','interaction.comment':'<div data-ffw="content" class="ff-comment-item" data-ff-eid="{eid}" data-ff-id="{id}" data-ff-title="{name}" data-ff-url="{url}"><i data-ffw="interaction" data-ff-action="flag"></i><i data-ffw="interaction" data-ff-action="delete"></i><a class="ff-user" data-ff-user="{link}" href="{link}"><span class="ff-img" data-ff-image>{user.image}</span><span data-ff-webname="">{webname}</span></a><span class="ff-bullet"></span><span data-ff-time="{time}" class="ff-comment-time">{when}</span><p data-ff-auto-image class="ff-comment" data-ff-text>{text}</p></div>','interaction.like_comment_form':'<form class="ff-like-comment-form" data-ff-trx data-ff-trx-type="likeComment" data-ff-id="{id}" data-ff-tid="{tid}" data-ff-eid="{eid}"><h4>Like {title}</h4><input type="hidden" name="id" value="{id}"><input type="hidden" name="tid" value="{tid}"><input type="text" placeholder="Why do you like this?" name="comment"><button class="ff-btn type="submit">Like</button></form>','interaction.flag_reason':'<option value="{value}">{reason}</option>','interaction.flag_form':'<form class="ff-flag-form" data-ff-trx data-ff-trx-type="flag" data-ff-id="{id}" data-ff-tid="{tid}" data-ff-eid="{eid}"><h4 class="title">Flag Content:</h4><p>{title}</p><div class="messages"></div><div class="ff-table"><div class="ff-cell-min"><select class="ff-square-right" name="flag" style="width: auto;padding-right:0;"><option value="">Select Reason</option>{reasons}<option value="Other">(Other - enter text)</option></select></div><input class="ff-cell ff-square" type="text" name="reason" placeholder="Select or type a reason" style="padding:0 5px;border-left:0;border-right:0;margin:0;"><div class="ff-cell-min"><button class="ff-btn ff-btn-danger ff-square-left">Flag</button></div></div></form>','popover.container':'<div class="ff ff-popover ff-{size}"></div>','popover.age_gate':'<form data-ff-modal data-ff-class="ff-dark" data-ff-trx data-ff-trx-type="agegate" data-ff-popover-expire-mins="3600" data-ff-close-url="http://www.famousfix.com"><h3>Adult Content Warning</h3><p>You have reached a page that is not appropriate for people under the age of 18 years old</p><p>Please confirm that you are 18 years or older in order to view the content on this page.</p><a href="#" data-ff-trx data-ff-trx-action="accept" data-ff-trx-type="agegate" data-ff-close="expirePopover" class="ff-btn">Agree I am at least 18</a> <a href="#" class="ff-btn" data-ff-trx data-ff-trx-action="decline" data-ff-trx-type="agegate" data-ff-trx-flush data-ff-close>Disagree</a></form>','popover.form1':'<form method="post"><div class="messages"></div><label>Field 1</label><input type="text" name="field1"><label>Field 2</label><select name=field2><option>A</option><option>B<option></select><div class="ff-form-buttons"><button class="ff-btn type="submit">Submit</button> <button data-ff-close class="ff-btn">Cancel</button></div></form>','popover.prompt':'<form method="post"><div class="messages"></div><h3>{title}</h3><p>{message}</p><label>{label}</label><input type="text" name="input"><div class="ff-form-buttons"><button class="ff-btn type="submit">Submit</button> <button data-ff-close class="ff-btn">Cancel</button></div></form>','popover.confirm':'<form><h3>{title}</h3><p>{message}</p><button class="ff-btn type="submit">OK</button> <button data-ff-close class="ff-btn">Cancel</button></form>','popover.message':'<form><h3>{title}</h3><p>{message}</p><button type="submit" data-ff-close class="ff-btn">Close</button></form>','popover.loading':'<h3 class="text-center">{title}</h3><h1 class="text-center"><i class="icon-spinner animate-spin"></i></h1>','social.share_button':'<a data-ffw="social" data-ff-trx data-ff-action="share" data-ff-network="{network}" data-ff-text="{text}" data-ff-url="{url}" data-ff-img="{img}"  data-ff-id="{id}" data-ff-tid="{tid}" data-ff-eid="{eid}"></a>','social.login_button':'<a data-ffw="social" data-ff-action="login" data-ff-network="{network}"></a>','social.register_button':'<a data-ffw="social" data-ff-action="register" data-ff-network="{network}" data-ff-text="{text}" data-ff-url="{url}" data-ff-img="{img}"></a>','content.actions':'{content.flagbox}\n<div data-ff-options-box class="ff-options"><form><div class="messages"></div>{options}</form></div>','content.autotag':'<div class="ff-auto"><div data-tags="post[tags]" name="post[mainText]" class="inputor" contentEditable="true" data-placeholder="Share your thoughts"></div></div>','content.auto':'<div class="ff-auto"><textarea name="q" class="inputor" rows=1>{query}</textarea></div>','content.tab':'<div class="ff-tabs">{buttons}{container}</div>','user.login_form':'<div class="ff-pub"><form method="post" data-ff-trx data-ff-trx-type="login"><h3>Login</h3><div class="messages"></div><div class="ff-form-buttons">{buttons}</div><div class="ff-fieldset"><label for="email">Email</label><input type="text" name="email" placeholder="email address"></div><div class="ff-fieldset"><label for="password">Password</label><input type="password" name="password" placeholder="password"></div><div class="ff-form-buttons ff-form-actions"><button class="ff-btn type="submit">Login</button> <button data-ff-close class="ff-btn">Cancel</button> &nbsp; <span data-ffw="user" data-ff-action="register" data-ff-social><a href="javascript:void();">Register<span class="ff-desktop-only"> an account</span></a></span> or <span data-ffw="user" data-ff-action="forgot"><a href="javascript:void();">Forgot<span class="ff-desktop-only">  your password</span>?</a></span></div></form></div>','user.forgot_form':'<div class="ff-pub"><form method="post" data-ff-trx data-ff-trx-type="forgot"><h3>Forgot Password</h3><p>Send a password reset link to your email account.</p><div class="messages"></div><div class="ff-form-buttons">{buttons}</div><div class="ff-fieldset"><label for="email">Email</label><input type="text" name="email" placeholder="email address"></div><div class="ff-form-buttons"><button class="ff-btn type="submit">Send Reset Link</button> <button data-ff-close class="ff-btn">Cancel</button></div></form></div>','user.register_form':'<div class="ff-pub"><form method="post" data-ff-trx data-ff-trx-type="register">{text}<div class="messages"></div><div class="ff-form-buttons">{buttons}</div><div class="ff-fieldset"><label for="email">Email</label><input type="text" name="email" placeholder="email address"></div><div class="ff-fieldset"><label for="password">Password</label><input type="password" name="password" placeholder="password"></div><div class="ff-form-buttons"><button class="ff-btn type="submit">Register</button> <button data-ff-close class="ff-btn">Cancel</button> &nbsp; <span data-ffw="user" data-ff-action="login" xdata-ff-social>(<a href="javascript:void();">Already registered? Login</a>)</span></div></form></div>','user.register_text':'<h3>Get Your Fix</h3><ul><li><strong>Receive</strong> the latest celebrity news personalised to your interest</li><li><strong>Create</strong> and edit profiles for your favourite celebrities</li><li><strong>Share &amp; Discuss</strong> news and photos with the FamousFix Community</li></ul>','user.register_text_wdw':'<h3>Register</h3><ul><li><strong>Receive</strong> the latest celebrity dating news personalised to your interest</li><li><strong>Create</strong> and edit profiles for your favourite celebrities and couples</li><li><strong>Share &amp; Discuss</strong> news and and relationships with the WDW Community</li></ul>'},tpl:function(name,options){var s=ffJS.templates[name].format(ffJS.templates);if(options){return s.format(options)}else{return s}},public:{"firebase":{"apiKey":"AIzaSyDo1hkTJG5A2TOXHiP5PC5cBM9RexRVcW4","authDomain":"wdwchat-6b948.firebaseapp.com","databaseURL":"https:\/\/wdwchat-6b948.firebaseio.com","storageBucket":"wdwchat-6b948.appspot.com","messagingSenderId":"173419427950"}},messageSubstitutions:{'url.login':'/login','url.register':'/register'},messages:{'TRX.LOGIN':'ULI','TRX.LOGOUT':'ULO','TRX.REGISTER':'URE','TRX.SHARE':'CSH','TRX.FLAG':'CFL','TRX.LIKE':'CLK','TRX.LIKECOMMENT':'CLC','TRX.AGEGATE':'CAG','TRX.OPEN':'O','TRX.SUCCESS':'S','TRX.FAIL':'F','TRX.EXCEPTION':'E','TRX.CLOSE':'C','TRX.ACCEPT':'A','TRX.DECLINE':'D','TRX.CUSTOM0':'0','TRX.CUSTOM1':'1','TRX.CUSTOM2':'2','TRX.CUSTOM3':'3','TRX.CUSTOM4':'4','TRX.CUSTOM5':'5','TRX.CUSTOM6':'6','TRX.CUSTOM7':'7','TRX.CUSTOM8':'8','TRX.CUSTOM9':'9','TRX_SHARE.FACEBOOK':'CUSTOM1','TRX_SHARE.TWITTER':'CUSTOM2','TRX_SHARE.PINTEREST':'CUSTOM3','TRX_LOGIN.FACEBOOK':'CUSTOM1','TRX_LOGIN.FACEBOOK_AUTH':'CUSTOM2','TRX_LOGIN.FACEBOOK_CANCEL':'CUSTOM3','TRX_LOGIN.GOOGLE':'CUSTOM4','TRX_LOGIN.GOOGLE_CANCEL':'CUSTOM5','GLOBAL.404':'Page not found','GLOBAL.SAVE_ERROR':'Unable to save data, please try again later','GLOBAL.DELETE_ERROR':'Unable to delete, please try again later','GLOBAL.FLAG_ERROR':'Unable to flag content, please try again later','GLOBAL.500':'System error, please try again later','GLOBAL.SAVE_SUCCESS':'Changes Saved','GLOBAL.REQUEST_FAIL':'Unable to process request, please try again later','USER.ACCESS_DENIED':'You are no longer logged in, please login again','USER.AUTH':'Please <a href="{url.login}">login</a> or <a href="{url.register}">register</a> to continue','USER.COMMENTS_LOCKED':'Your account has been locked from commenting','USER.FLAG_EMPTY':'Please enter or select a reason to flag this content','USER.INCORRECT_PASSWORD':'Your password is incorrect','USER.LOGOUT_SUCCESS':'You have been logged out','USER.NEW_PASSWORD':'Your new password has not been re-typed correctly','USER.NOT_VERIFIED':'Your account must be verified before making a post or comment','USER.PASSWORD_CHANGED':'Your password has been changed','USER.UPLOAD_FAIL':'Unable to upload image, please try again or use a smaller image','SOCIAL.LOGIN_CANCELLED':'{network} login cancelled','SOCIAL.NETWORK_PROBLEM':'There was problem connecting to {network}','CONTENT.FLAG_EMPTY':'You must select and enter a reason for flagging this item','CONTENT.FLAG_SAVED':'This content has been flagged','CONTENT.VOTED':'You have already voted for this.','COMMENTS.FLAG_EMPTY':'You must select or enter a reason for flagging this comment','COMMENTS.EMPTY':'Comment text is empty','COMMENTS.LOCKED':'Due to user abuse, comments are temporarily disabled from this page','AUTH.ACCOUNT_PROBLEM':'Unable to create account, please try again later','AUTH.ACCOUNT_UNCONFIRMED':'Your account has not been confirmed, please click the activation link in the registration email','AUTH.EMAIL_PROBLEM':'Unable to send registration email, please re-check','AUTH.EMAIL_REGISTERED':'Email address is already registered, <a href="/forgot-password/">Forgot your password?</a>','AUTH.EXISTING_PASSWORD':'Existing password is not correct, please retry','AUTH.INVALID_CODE':'Invalid validation code, please try the verification link in your email again','AUTH.LOGIN_FAIL':'Invalid email or password','AUTH.LOGIN_SUCCESS':'You have logged in','AUTH.LOGOUT_SUCCESS':'You have been logged out','AUTH.SELECT_USERNAME':'Please go back and select a username','AUTH.USERNAME_FAMOUSFIX':'Your username cannot contain the word famousfix','AUTH.USERNAME_FORMAT':'Sorry, only letters (a-z), numbers (0-9), and underscores (_) are allowed in your username','AUTH.USERNAME_REGISTERED':'This username is already registered, please go to the forgot your password page','AUTH.USERNAME_RESERVED':'This username has been reserved and is not available','FIELD.EMAIL':'not a valid email','FIELD.INCORRECT_PASSWORD':'Your password is incorrect','FIELD.MIN_MAX':'must be between {field.min} and {field.max} {field.end}','FIELD.MIN':'must have more than {min} characters','FIELD.MAX':'must have less than {max} characters','FIELD.REQUIRED':'required','FIELD.SAFE_CHARS':'may only contail alphanumeric and underscores','BROWSER.CHROME':'50','BROWSER.FIREFOX':'45','BROWSER.EDGE':'14','BROWSER.IE':'10','BROWSER.SAFARI':'6','BROWSER.VERSION':'You seem to be using an old version of {browser}. We suggest you update for the best experience of Who&apos;s Dated Who.','BROWSER.BRAND':'You seem to be using {browser}. Who&apos;s Dated Who is best viewed in a current version <a href="https://www.google.com.au/chrome/browser">Chrome</a> or <a href="http://www.apple.com/au/safari/">Safari</a>.'},log:function(s,s2){if(this.debug){if(s2){console.log(s,s2)}else{console.log(s)}}},ffFfVtab:{pagecreate:function(activePage){activePage.find('.ff-vtab').each(function(){$(this).on('click','.ff-vtab-tabs > li',function(e){$(this).siblings().removeClass('ff-active');$(this).addClass('ff-active');e.preventDefault()})})}},ffImageSelector:{gal:null,lastUrl:null,ready:function(){},pagecreate:function(activePage){activePage.find('form[data-ff="media"]').submit(function(e){var el=$(this).find('[data-ff-url="true"]:first');if(el.length>0){e.preventDefault();ffJS.ffImageSelector.gal.html('');ffJS.ffImageSelector.galHide();$.ajax({url:"/user/get",data:{url:el.val()},dataType:'json',success:function(data){for(var i in data){activePage.find('[data-ff-field="'+i+'"]').each(function(){if($(this).val()==''){$(this).val(data[i]);}});}
var imsel=el.closest('.ff-group').find('[data-obj="image-selector"]');imsel.html('<div class="media-help">Click an image to add <span class="media-title"></span></div><div class="img-list"></div>');var mi=imsel.find('.img-list');if(data.images){var ims=[];if(data.images){for(var i in data.images){var im=data.images[i];if(!ims[im]){var img=$('<img>').attr('src',im);ims[im]=!0;img.load(function(){if(this.width>=240&&this.height>=240){var imgD=$('<div class="media-img"><span data-width="'+this.width+'" data-height="'+this.height+'">'+this.width+'x'+this.height+'</span><div class="icon-ok selector pointer" style="display:none;"></div><i></i></div>');imgD.find('i').replaceWith($(this));imgD.appendTo(mi)}})}}
imsel.show()}}else{imsel.hide()}
console.log(data)}})}}).each(function(){ffJS.ffImageSelector.gal=activePage.find('ul.ul-gallery');$(this).on('click','.mediatab-images div.media-img',function(e){var sel=$(this).find('.selector');var img=$(this).find('img');var sp=$(this).find('span');if(!sel.is(':visible')){if(ffJS.ffImageSelector.gal.data('ffMax')==1){var sels=$(this).closest('.img-list').find('.selector:visible');if(sels.length>0){sels.hide();ffJS.ffImageSelector.gal.html('').change()}}
ffJS.ffImageSelector.addImage(img.attr('src'),!1,sp.attr('data-width'),sp.attr('data-height'))}else{ffJS.ffImageSelector.removeImage(img.attr('src'))}
sel.toggle();e.stopPropagation();e.preventDefault();return !1})});$('[data-ajaxurl]').bind('change submit blur',function(e){axuploader.retrieve($(this).val(),$(this).closest('form'),$(this).attr('data-ajaxurl'));e.preventDefault()}).bind('paste',function(e){var el=$(this);setTimeout(function(){el.change()},100,el)})},retrieve:function(sourceUrl,mainForm,ajaxUrl){if(sourceUrl!=this.lastUrl){$.ajax({url:ajaxUrl,data:{form:mainForm.serialize(),term:sourceUrl},dataType:'json',success:function(data){console.log(data)}})}
axuploader.lastUrl=sourceUrl},loadMedia:function(data,readonly){var count=0;for(var i in data){var media=data[i];if(media.type=='img'){axuploader.addImage(media.src,null,media.width,media.height,readonly);count++}
if(media.type=='embed'){axuploader.addEmbed(media.embed,media.embedHTML,readonly);count++}}
if(count>0){setTimeout(function(){$('.btn-uploader').click()},200)}},addImage:function(url,id,w,h,readonly){var t='i';if(!id){id=url;t='u'}
var el=$('<img class="mtimg">').attr({'src':url,'data-width':w,'data-height':h});el=el.add($('<input type=hidden>').attr("name","img[]").val(t+','+id+','+w+','+h));this.addMedia(el,url,readonly)},addEmbed:function(embed,html,readonly){var el=$('<input type="hidden">').attr("name","img[]").val('e,'+embed);el=el.add(html);this.addMedia(el,!1,readonly)},addMedia:function(el,url,readonly){el=$('<li>').wrapInner(el.wrap('<div class="mtimg-wrap">').parent());if(!readonly){if(ffJS.ffImageSelector.gal.data('ffMax')!=1){$('<span>Click to drag</span>').prependTo(el)}}else{}
el.find('.close').click(function(){if(url){ffJS.ffImageSelector.removeImage(url);$('.media-img').find('img[src="'+url+'"]').closest('.media-img').find('.selector').hide()}else{$(this).closest('li').remove();ffJS.ffImageSelector.galHide()}});this.gal.prepend(el);this.gal.closest('.media-selected').show();this.gal.change()},galHide:function(){if(ffJS.ffImageSelector.gal.find('li').length==0){ffJS.ffImageSelector.gal.closest('.media-selected').hide();ffJS.ffImageSelector.gal.change()}},removeImage:function(url){ffJS.ffImageSelector.gal.find('img[src="'+url+'"]').closest('li').remove();ffJS.ffImageSelector.galHide()}},ffMatrix:{pagebeforeshow:function(activePage){activePage.on('click','[data-ff="matrix-append"]',function(e){e.preventDefault();$.get($(this).attr('href'),function(data){items=$(data).find('.masonry-item');activePage.find('.matrix').append(items).enhanceWithin();href=$(data).find('.matrix-next-page a').first().attr('href');if(href){activePage.find('.matrix-next-page a').first().attr('href',href)}else{activePage.find('.matrix-next-page a').first().remove()}})})}},ffMenu:{pagecreate:function(activePage){var mp=$('#menu-panel .menu');if(mp.length<1){$.get('//fdata.whosdatedwho.com/menu',function(data){$("#menu-panel").html(data);ffJS.ffSearch.initSearchBox($('#menu-panel').find('[data-filter="true"]:not([data-static-url])'));$("#menu-panel").panel().enhanceWithin();$("#menu-panel").on('panelbeforeopen',function(e){$('a[href=#menu-panel]').removeClass('ui-btn-active');$('a[href=#menu-panel] i').removeClass('icon-menu');$('a[href=#menu-panel] i').addClass('icon-remove')});$("#menu-panel").on('panelbeforeclose',function(e){$('a[href=#menu-panel]').removeClass('ui-btn-active');$('a[href=#menu-panel] i').removeClass('icon-remove');$('a[href=#menu-panel] i').addClass('icon-menu')});$('#menu-panel [data-role="tabs"] ul:first').each(function(){var ul=this;var as=$('a',ul);$(as).click(function(){$(as).removeClass('ui-btn-active');$(this).addClass('ui-btn-active')});$(as).first().click()})},"html")}
$('a[href=#menu-panel]').removeClass('ui-btn-active');$('a[href=#menu-panel] i').removeClass('icon-remove');$('a[href=#menu-panel] i').addClass('icon-menu')}},ffUserMenu:{pagecreate:function(activePage){var usp=$('#user-panel .ui-panel-inner');var usl=$('#user-panel .login');if(usp.length<1&&usl.length<1){$.get('//fdata.whosdatedwho.com/user-menu',function(data){$("#user-panel").html(data);$("#user-panel").panel().enhanceWithin();$("#user-panel").on('panelbeforeopen',function(e){$('a[href=#user-panel]').removeClass('ui-btn-active');$('a[href=#user-panel] i').removeClass('icon-user');$('a[href=#user-panel] i').addClass('icon-remove')});$("#user-panel").on('panelbeforeclose',function(e){$('a[href=#user-panel]').removeClass('ui-btn-active');$('a[href=#user-panel] i').removeClass('icon-remove');$('a[href=#user-panel] i').addClass('icon-user')});ffJS.ffFacebook.loginListen()},"html")}
$('a[href=#user-panel]').removeClass('ui-btn-active');$('a[href=#user-panel] i').removeClass('icon-remove');$('a[href=#user-panel] i').addClass('icon-user')}},ffSearch:{initSearchBox:function initSearchBox(elem){elem.on('filterablebeforefilter',function(e,data){var $ul=$(this),$input=$(data.input),value=$input.val(),html="";$ul.html("");if(value&&value.length>1){$ul.html("<li><div class='ui-loader'><span class='ui-icon ui-icon-loading'></span></div></li>");$ul.listview("refresh");$.ajax({url:$input.data('url'),dataType:"json",crossDomain:!0,xhrFields:{withCredentials:!1},data:{term:$input.val()}}).then(function(response){console.log(response);$.each(response,function(i,item){var n=item.name.replace(/\-/,' ').substr(value.length);var o="user";if(item.object!="User"){o="topic"}
html+='<li '+(item.image||item.imagei?'class="ui-li-has-thumb" ':'')+'data-id="'+item.id+'"><a data-ajax="false" href="'+item.dataurl+'">'+(item.image?'<img src="'+item.image+'">':'')+(item.imagei?'<div class="ui-li-thumb">'+item.imagei+'</div>':'')+'<b>'+$('<div>').text(value).html()+'</b>'+$('<div>').text(n).html()+(item.description?'<p>'+$('<div>').text(item.description).html()+'</p>':'')+(item.subtitle?'<p>'+$('<div>').text(item.subtitle).html()+'</p>':'')+(item.extended?'<span class="ui-li-count">'+item.extended+'</span>':'')+"</a></li>"});$ul.html(html);$ul.listview("refresh");$ul.trigger("updatelayout")})}})}},ffFacebook:{fbp:{},loginListen:function(){$('[data-ff][data-ff="facebook"]').on('click',function(e){e.preventDefault();e.stopPropagation();var action=$(this).attr('data-ff-action');console.log('Social: Start login script');if(action=="login"){if(window.FB){window.FB.login(function(response){if(response.status==='connected'){ffJS.ffFacebook.login(response)}else{console.log('FB: Login problem')}},{scope:'public_profile,email'})}else{console.log('FB: Facebook not contactable')}}else if(action=="post"){var url='//fdata.whosdatedwho.comadmin/post-of-the-day';var post=$(this).attr('data-post-link');if(window.FB){var userID=null;window.FB.getLoginStatus(function(response){if(response.status==='connected'){userID=response.authResponse.userID;post=ffJS.ffFacebook.post(userID,url,post);if(post.success){console.log('FB: post successful');console.log(post)}else{console.log('FB: post failed');console.log(post)}}else{window.FB.login(function(response){if(response.status==='connected'){ffJS.ffFacebook.post(userID,url,post)}},{scope:'publish_actions'})}})}else{console.log('FB: Facebook not contactable')}}})},login:function(details){var url='/social-login';var user=details.authResponse.userID;window.FB.api('/me',{fields:'id,first_name,last_name,email,gender'},function(response){var obj={social:!0};var settings=$.extend(obj,response,details);$.post(url,settings,function(data){$('#user-panel').panel('close');var splash=$("#splashPopup");splash.append("<span>You've been logged in via Facebook</span>");splash.popup({dismissible:!1,history:!1,overlayTheme:"b",positionTo:"window",transition:"pop",theme:"a",});splash.popup('open');setTimeout(function(){$("#splash").popup('close')},4000);location.reload()})});window.FB.api('/'+user+'/permissions',function(response){for(var i=0;i<response.data.length;i++){var d=response.data[i];ffJS.ffFacebook.fbp[d.permission]=d.status;console.log(d.permission+': '+d.status)}})},post:function(user,url,post){var permission='publish_actions';if(!(permission in ffJS.ffFacebook.fbp)||ffJS.ffFacebook.fbp[permission]!='granted'){window.FB.api('/'+user+'/permissions',function(response){for(var i=0;i<response.data.length;i++){var d=response.data[i];ffJS.ffFacebook.fbp[d.permission]=d.status;console.log(d.permission+': '+d.status)}
if(permission in ffJS.ffFacebook.fbp&&ffJS.ffFacebook.fbp[permission]=='granted'){return ffJS.ffFacebook.post(user,url,post)}else{window.FB.login(function(response){if(response.status==='connected'){return ffJS.ffFacebook.post(user,url,post)}else{return{success:!1,message:'Facebook login required for posting'}}},{scope:'publish_actions'})}})}else{$.post(url,'link='+post,function(data){return data})}},},ffSubHeader:{},ffFfVtab:{pagecreate:function(activePage){activePage.find('.ff-vtab').each(function(){$(this).on('click','.ff-vtab-tabs > li',function(e){$(this).siblings().removeClass('ff-active');$(this).addClass('ff-active');e.preventDefault()})})}},ffImageSelector:{gal:null,lastUrl:null,ready:function(){},pagecreate:function(activePage){activePage.find('form[data-ff="media"]').submit(function(e){var el=$(this).find('[data-ff-url="true"]:first');if(el.length>0){e.preventDefault();ffJS.ffImageSelector.gal.html('');ffJS.ffImageSelector.galHide();$.ajax({url:"/user/get",data:{url:el.val()},dataType:'json',success:function(data){for(var i in data){activePage.find('[data-ff-field="'+i+'"]').each(function(){if($(this).val()==''){$(this).val(data[i]);}});}
var imsel=el.closest('.ff-group').find('[data-obj="image-selector"]');imsel.html('<div class="media-help">Click an image to add <span class="media-title"></span></div><div class="img-list"></div>');var mi=imsel.find('.img-list');if(data.images){var ims=[];if(data.images){for(var i in data.images){var im=data.images[i];if(!ims[im]){var img=$('<img>').attr('src',im);ims[im]=!0;img.load(function(){if(this.width>=240&&this.height>=240){var imgD=$('<div class="media-img"><span data-width="'+this.width+'" data-height="'+this.height+'">'+this.width+'x'+this.height+'</span><div class="icon-ok selector pointer" style="display:none;"></div><i></i></div>');imgD.find('i').replaceWith($(this));imgD.appendTo(mi)}})}}
imsel.show()}}else{imsel.hide()}
console.log(data)}})}}).each(function(){ffJS.ffImageSelector.gal=activePage.find('ul.ul-gallery');$(this).on('click','.mediatab-images div.media-img',function(e){var sel=$(this).find('.selector');var img=$(this).find('img');var sp=$(this).find('span');if(!sel.is(':visible')){if(ffJS.ffImageSelector.gal.data('ffMax')==1){var sels=$(this).closest('.img-list').find('.selector:visible');if(sels.length>0){sels.hide();ffJS.ffImageSelector.gal.html('').change()}}
ffJS.ffImageSelector.addImage(img.attr('src'),!1,sp.attr('data-width'),sp.attr('data-height'))}else{ffJS.ffImageSelector.removeImage(img.attr('src'))}
sel.toggle();e.stopPropagation();e.preventDefault();return !1})});$('[data-ajaxurl]').bind('change submit blur',function(e){axuploader.retrieve($(this).val(),$(this).closest('form'),$(this).attr('data-ajaxurl'));e.preventDefault()}).bind('paste',function(e){var el=$(this);setTimeout(function(){el.change()},100,el)})},retrieve:function(sourceUrl,mainForm,ajaxUrl){if(sourceUrl!=this.lastUrl){$.ajax({url:ajaxUrl,data:{form:mainForm.serialize(),term:sourceUrl},dataType:'json',success:function(data){console.log(data)}})}
axuploader.lastUrl=sourceUrl},loadMedia:function(data,readonly){var count=0;for(var i in data){var media=data[i];if(media.type=='img'){axuploader.addImage(media.src,null,media.width,media.height,readonly);count++}
if(media.type=='embed'){axuploader.addEmbed(media.embed,media.embedHTML,readonly);count++}}
if(count>0){setTimeout(function(){$('.btn-uploader').click()},200)}},addImage:function(url,id,w,h,readonly){var t='i';if(!id){id=url;t='u'}
var el=$('<img class="mtimg">').attr({'src':url,'data-width':w,'data-height':h});el=el.add($('<input type=hidden>').attr("name","img[]").val(t+','+id+','+w+','+h));this.addMedia(el,url,readonly)},addEmbed:function(embed,html,readonly){var el=$('<input type="hidden">').attr("name","img[]").val('e,'+embed);el=el.add(html);this.addMedia(el,!1,readonly)},addMedia:function(el,url,readonly){el=$('<li>').wrapInner(el.wrap('<div class="mtimg-wrap">').parent());if(!readonly){if(ffJS.ffImageSelector.gal.data('ffMax')!=1){$('<span>Click to drag</span>').prependTo(el)}}else{}
el.find('.close').click(function(){if(url){ffJS.ffImageSelector.removeImage(url);$('.media-img').find('img[src="'+url+'"]').closest('.media-img').find('.selector').hide()}else{$(this).closest('li').remove();ffJS.ffImageSelector.galHide()}});this.gal.prepend(el);this.gal.closest('.media-selected').show();this.gal.change()},galHide:function(){if(ffJS.ffImageSelector.gal.find('li').length==0){ffJS.ffImageSelector.gal.closest('.media-selected').hide();ffJS.ffImageSelector.gal.change()}},removeImage:function(url){ffJS.ffImageSelector.gal.find('img[src="'+url+'"]').closest('li').remove();ffJS.ffImageSelector.galHide()}},ffMatrix:{pagebeforeshow:function(activePage){activePage.on('click','[data-ff="matrix-append"]',function(e){e.preventDefault();$.get($(this).attr('href'),function(data){items=$(data).find('.masonry-item');activePage.find('.matrix').append(items).enhanceWithin();href=$(data).find('.matrix-next-page a').first().attr('href');if(href){activePage.find('.matrix-next-page a').first().attr('href',href)}else{activePage.find('.matrix-next-page a').first().remove()}})})}},ffMenu:{pagecreate:function(activePage){var mp=$('#menu-panel .menu');if(mp.length<1){$.get('//fdata.whosdatedwho.com/menu',function(data){$("#menu-panel").html(data);ffJS.ffSearch.initSearchBox($('#menu-panel').find('[data-filter="true"]:not([data-static-url])'));$("#menu-panel").panel().enhanceWithin();$("#menu-panel").on('panelbeforeopen',function(e){$('a[href=#menu-panel]').removeClass('ui-btn-active');$('a[href=#menu-panel] i').removeClass('icon-menu');$('a[href=#menu-panel] i').addClass('icon-remove')});$("#menu-panel").on('panelbeforeclose',function(e){$('a[href=#menu-panel]').removeClass('ui-btn-active');$('a[href=#menu-panel] i').removeClass('icon-remove');$('a[href=#menu-panel] i').addClass('icon-menu')});$('#menu-panel [data-role="tabs"] ul:first').each(function(){var ul=this;var as=$('a',ul);$(as).click(function(){$(as).removeClass('ui-btn-active');$(this).addClass('ui-btn-active')});$(as).first().click()})},"html")}
$('a[href=#menu-panel]').removeClass('ui-btn-active');$('a[href=#menu-panel] i').removeClass('icon-remove');$('a[href=#menu-panel] i').addClass('icon-menu')}},ffUserMenu:{pagecreate:function(activePage){var usp=$('#user-panel .ui-panel-inner');var usl=$('#user-panel .login');if(usp.length<1&&usl.length<1){$.get('//fdata.whosdatedwho.com/user-menu',function(data){$("#user-panel").html(data);$("#user-panel").panel().enhanceWithin();$("#user-panel").on('panelbeforeopen',function(e){$('a[href=#user-panel]').removeClass('ui-btn-active');$('a[href=#user-panel] i').removeClass('icon-user');$('a[href=#user-panel] i').addClass('icon-remove')});$("#user-panel").on('panelbeforeclose',function(e){$('a[href=#user-panel]').removeClass('ui-btn-active');$('a[href=#user-panel] i').removeClass('icon-remove');$('a[href=#user-panel] i').addClass('icon-user')});ffJS.ffFacebook.loginListen()},"html")}
$('a[href=#user-panel]').removeClass('ui-btn-active');$('a[href=#user-panel] i').removeClass('icon-remove');$('a[href=#user-panel] i').addClass('icon-user')}},ffSearch:{initSearchBox:function initSearchBox(elem){elem.on('filterablebeforefilter',function(e,data){var $ul=$(this),$input=$(data.input),value=$input.val(),html="";$ul.html("");if(value&&value.length>1){$ul.html("<li><div class='ui-loader'><span class='ui-icon ui-icon-loading'></span></div></li>");$ul.listview("refresh");$.ajax({url:$input.data('url'),dataType:"json",crossDomain:!0,xhrFields:{withCredentials:!1},data:{term:$input.val()}}).then(function(response){console.log(response);$.each(response,function(i,item){var n=item.name.replace(/\-/,' ').substr(value.length);var o="user";if(item.object!="User"){o="topic"}
html+='<li '+(item.image||item.imagei?'class="ui-li-has-thumb" ':'')+'data-id="'+item.id+'"><a data-ajax="false" href="'+item.dataurl+'">'+(item.image?'<img src="'+item.image+'">':'')+(item.imagei?'<div class="ui-li-thumb">'+item.imagei+'</div>':'')+'<b>'+$('<div>').text(value).html()+'</b>'+$('<div>').text(n).html()+(item.description?'<p>'+$('<div>').text(item.description).html()+'</p>':'')+(item.subtitle?'<p>'+$('<div>').text(item.subtitle).html()+'</p>':'')+(item.extended?'<span class="ui-li-count">'+item.extended+'</span>':'')+"</a></li>"});$ul.html(html);$ul.listview("refresh");$ul.trigger("updatelayout")})}})}},ffFacebook:{fbp:{},loginListen:function(){$('[data-ff][data-ff="facebook"]').on('click',function(e){e.preventDefault();e.stopPropagation();var action=$(this).attr('data-ff-action');console.log('Social: Start login script');if(action=="login"){if(window.FB){window.FB.login(function(response){if(response.status==='connected'){ffJS.ffFacebook.login(response)}else{console.log('FB: Login problem')}},{scope:'public_profile,email'})}else{console.log('FB: Facebook not contactable')}}else if(action=="post"){var url='//fdata.whosdatedwho.comadmin/post-of-the-day';var post=$(this).attr('data-post-link');if(window.FB){var userID=null;window.FB.getLoginStatus(function(response){if(response.status==='connected'){userID=response.authResponse.userID;post=ffJS.ffFacebook.post(userID,url,post);if(post.success){console.log('FB: post successful');console.log(post)}else{console.log('FB: post failed');console.log(post)}}else{window.FB.login(function(response){if(response.status==='connected'){ffJS.ffFacebook.post(userID,url,post)}},{scope:'publish_actions'})}})}else{console.log('FB: Facebook not contactable')}}})},login:function(details){var url='/social-login';var user=details.authResponse.userID;window.FB.api('/me',{fields:'id,first_name,last_name,email,gender'},function(response){var obj={social:!0};var settings=$.extend(obj,response,details);$.post(url,settings,function(data){$('#user-panel').panel('close');var splash=$("#splashPopup");splash.append("<span>You've been logged in via Facebook</span>");splash.popup({dismissible:!1,history:!1,overlayTheme:"b",positionTo:"window",transition:"pop",theme:"a",});splash.popup('open');setTimeout(function(){$("#splash").popup('close')},4000);location.reload()})});window.FB.api('/'+user+'/permissions',function(response){for(var i=0;i<response.data.length;i++){var d=response.data[i];ffJS.ffFacebook.fbp[d.permission]=d.status;console.log(d.permission+': '+d.status)}})},post:function(user,url,post){var permission='publish_actions';if(!(permission in ffJS.ffFacebook.fbp)||ffJS.ffFacebook.fbp[permission]!='granted'){window.FB.api('/'+user+'/permissions',function(response){for(var i=0;i<response.data.length;i++){var d=response.data[i];ffJS.ffFacebook.fbp[d.permission]=d.status;console.log(d.permission+': '+d.status)}
if(permission in ffJS.ffFacebook.fbp&&ffJS.ffFacebook.fbp[permission]=='granted'){return ffJS.ffFacebook.post(user,url,post)}else{window.FB.login(function(response){if(response.status==='connected'){return ffJS.ffFacebook.post(user,url,post)}else{return{success:!1,message:'Facebook login required for posting'}}},{scope:'publish_actions'})}})}else{$.post(url,'link='+post,function(data){return data})}},},ffSubHeader:{},ffDataff:{inject:function(el){$(el).find('[data-fft]').each(function(){if(ffJS.ffDataff.templates[$(this).attr('data-fft')]){$(this).html(ffJS.ffDataff.templates[$(this).attr('data-fft')])}})},req:null,cleanHtml:function(h){var trim=h.match(/^(\s+)/);if(trim&&trim.length>0){if(trim.length>0){h=h.replace(new RegExp(trim[1]),'');h=h.replace(new RegExp(trim[1],'g'),"\n")}}
return h},devCode:function(el,title){var h=el.html();var h2=$('<div>'+h+'</div>');h2.find('gen').remove();h=h2.html().trim().replace(/=""/g,'');var gother=el.find('gen');var gen=$('<gen>');$('<h4>').text(title).appendTo(gen);$('<pre class="ff-code">').text(h).appendTo(gen);var pre=gen.find('pre').clone().html().replace(' class="ff"','');if(gother.length>0){}
if(gother.length>0&&pre==gother.find('pre').html()){gother.find('h4').remove()}else{gen.appendTo(el)}},content:function(){},dmenu:function(el){if(el.data('done')==!0){return}
el.data('done',!0);function setParentHtml(elSource,elParent){if(!elSource){return}
elParent.show();elParent=elParent.find('table');var idx=elSource.closest('td').index();var ridx=elSource.closest('tr').index();if(idx<0)return;var sTbl=elSource.closest('table');var pHeaders=elParent.find('thead tr');if(pHeaders.length==0){pHeaders=$('<tr>');pHeaders.appendTo(elParent.find('thead'))}
var h=sTbl.find('thead tr th:nth-child('+(idx+1)+')');pHeaders.find('th').each(function(){if(!h)return;if($(this).text()==h.text()){var e=elSource.closest('td');elParent.find('tr td:nth-child('+($(this).index()+1)+')').removeClass('active');e.addClass('active');h=!1}});if(h){var pBody=elParent.find('tbody');h.clone().css('width','auto').appendTo(pHeaders);sTbl.find('tbody tr').each(function(){var pRow=pBody.find('tr:nth-child('+($(this).index()+1)+')');if(pRow.length==0){pRow=$('<tr>').appendTo(pBody)}
var e=$(this).find('td:nth-child('+(idx+1)+')').clone().appendTo(pRow);if(pRow.index()==ridx){e.addClass('active')}});elParent.find('tbody tr').each(function(){var r=$(this);pHeaders.find('th').each(function(){if(!r.find('td:nth-child('+($(this).index()+1)+')').length){$('<td>&nbsp;</td>').appendTo(r)}})})}
elParent.attr('data-ff-target',elSource.closest('[data-ff-target]').attr('data-ff-target'));if(!elParent.is('[data-done]')){ffJS.ffDataff.dmenu(elParent);elParent.on('click','tbody tr td a',function(){var td=$(this).closest('td');while(td&&td.length>0){td=td.next();if(td&&td.length>0){elParent.find('thead tr th:nth-child('+(td.index()+1)+')').remove();elParent.find('tbody tr td:nth-child('+(td.index()+1)+')').remove()}}})}}
function load(link,target,linkEl){var tn=el.attr('data-ff-target');if(!tn){tn=el.closest('[data-ff-target]').attr('data-ff-target')}
var t=$(tn);var w=0;var p;if(t.is('[data-ff-target-parent]')){p=$(t.attr('data-ff-target-parent'));setParentHtml(linkEl,p)}
if(t.attr('data-ff-target')){$(t.attr('data-ff-target')).html('<tr><td>loading...</td></tr>')}
if(target){t=target}
t.width(200);t.html('<tr><td><br><small>loading...</small></td></tr>');t.attr('data-ff-last-link',link);var data={};$('[data-ff-value]').each(function(){data[$(this).attr('name')]=$(this).attr('value')});if(ffJS.ffDataff.req){ffJS.ffDataff.req.abort()}
ffJS.ffDataff.req=$.ajax({url:link,method:'POST',data:data,success:function(data){w=0;if(p&&p.length){w=screen.width-p.width()-60;t.width(100)}
t.html(data);if(w){t.width(w)}
ffJS.ffDataff.ready(t);if(w){t.find('.dataTables_wrapper').width(w)}}})}
el.on('change','th .ff-check',function(){el.find('td .ff-check').prop('checked',$(this).prop('checked'))});el.on('click','thead a',function(e){e.preventDefault();load($(this).attr('href'),el)});el.on('click','li > a,tbody a',function(e){if($(this).attr('href').startsWith('#')){e.preventDefault();$(this).closest('li,[data-ff-dlink]').siblings().removeClass('active');$(this).closest('li,[data-ff-dlink]').addClass('active');load($(this).attr('href').substring(1),!1,$(e.target))}else{}});el.on('click','tbody td',function(e){var a=$(this).find('a');if(a.length>0&&e.target.tagName=='TD'){e.preventDefault();a.click()}});el.on('click','[data-ff-dlink]',function(e){if(e.target.tagName=='A'&&$(e.target).is('[data-ff-dlink]')){if($(e.target).attr('href').startsWith('#')){e.preventDefault();load($(e.target).attr('href').substring(1));$(this).closest('dd').siblings().removeClass('active');$(this).closest('dd').addClass('active')}}else{e.preventDefault();var cb=$(this).closest('tr').find('input.ff-check');if($(this).attr('data-ff-dlink').length>0||cb.length>0){if(cb.length==0){$(this).siblings().removeClass('active')}
$(this).addClass('active');if(cb.length){cb.prop('checked',!cb.prop('checked'))}else{load($(this).attr('data-ff-dlink'))}}}})},ready:function(el){if(!el){el=$('body')}
el.find('[data-ff]').each(function(){var el=$(this);switch(el.attr('data-ff')){case 'dmenu':ffJS.ffDataff.dmenu(el);if(el.get(0).tagName=='TABLE'){var p=$(this).hasClass('ff-detailed');var opts={paginate:!1,info:!1,order:!1};if(p){opts.language={search:"_INPUT_",searchPlaceholder:"Search records"};opts.fixedHeader={header:!0,footer:!1};opts.order=[];opts.columnDefs=[{orderable:!1,targets:0}]}else{opts.searching=!1;opts.ordering=!1}
el.dataTable(opts)}
break;case 'ajax':ffJS.ffDataff.req=$.ajax({url:el.attr('data-ff-url'),success:function(data){el.html(data);ffJS.ffDataff.ready(el)}});break;case 'coptions':ffJS.ffDataff.contentOptions(el);break;case 'devcode':ffJS.ffDataff.devCode(el,'Before:');break}})},readyFirst:function(el){el.find('[data-ff="devcode"],[data-ff="code"]').each(function(){$(this).html(ffJS.ffDataff.cleanHtml($(this).html()))})},readyLast:function(el){if(!el){el=$('body')}
el.find('[data-ff]').each(function(){$(this).addClass('ff');var el=$(this);switch(el.attr('data-ff')){case 'devcode':ffJS.ffDataff.devCode(el,'After:');break;case 'code':el.addClass('ff-code');break}})},},ffEvents:{getTarget:function(elSource){var target=!1;elSource=$(elSource);var el=elSource;if(elSource.attr('data-ff-target')){el=$(elSource.attr('data-ff-target'));target=!0}
if(elSource.attr('data-ff-target-closest')){el=el.closest(elSource.attr('data-ff-target-closest'));target=!0}
if(elSource.attr('data-ff-target-siblings')){el=el.siblings(elSource.attr('data-ff-target-siblings'));target=!0}
if(target&&el.length){return el}
return $({})},ready:function(){$('body').on('click','[data-ff="toggle"]',function(e){e.preventDefault();ffJS.ffEvents.getTarget(this).each(function(){$(this).toggle()})});$('body').on('click','[data-ff="show"]',function(e){e.preventDefault();ffJS.ffEvents.getTarget(this).each(function(){$(this).show()})});$('[data-ff="datepicker"]').each(function(){$(this).datepicker({todayHighlight:!0,dateFormat:"yy-mm-dd",autoclose:!0})});$('body').on('focus','[data-ff="autogrow"]:not(.ff-autogrow-loaded)',function(e){$(e.target).autoGrow();$(e.target).addClass('ff-autogrow-loaded')})}},ffFunctions:{init:function(){$.ajaxSetup({crossDomain:!0,xhrFields:{withCredentials:!0},beforeSend:function(xhr){xhr.withCredentials=!0}});$(function(){$.xhrPool=[];$.xhrPool.abortAll=function(){$(this).each(function(i,jqXHR){jqXHR.abort();$.xhrPool.splice(i,1)})}
$.ajaxSetup({beforeSend:function(jqXHR){$.xhrPool.push(jqXHR)},complete:function(jqXHR){var i=$.inArray(jqXHR,$.xhrPool);if(i>-1)$.xhrPool.splice(i,1)}})});(function($){var re=/([^&=]+)=?([^&]*)/g;var decode=function(str){return decodeURIComponent(str.replace(/\+/g,' '))};$.parseParams=function(query){var params={},e;if(query){if(query.substr(0,1)=='?'){query=query.substr(1)}
while(e=re.exec(query)){var k=decode(e[1]);var v=decode(e[2]);if(params[k]!==undefined){if(!$.isArray(params[k])){params[k]=[params[k]]}
params[k].push(v)}else{params[k]=v}}}
return params}})(jQuery);$.fn.digits=function(){return this.each(function(){$(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"))})};$.fn.center=function(){this.css("position","absolute");this.css('top',parseInt(($(window).height()/2)+jQuery(document).scrollTop()-this.height()/2));this.css('left',parseInt(($(window).width()/2)+jQuery(document).scrollLeft()-this.width()/2));return this};$.fn.subData=function(prefix){var d=$('<div>');$(this.get(0).attributes).each(function(){if(this.name.indexOf('data-'+prefix)===0){d.attr(this.name.replace('data-'+prefix,'data').toLowerCase(),this.value)}});return d.data()};$.fn.slug=function(){return this.val().toLowerCase().replace(/^https?:\/\//,'').replace(/[\/\.]/g,' ').replace(/[^\w ]+/g,'').replace(/ +/g,'-')};$.fn.realSize=function(){var $img=this;if($img.prop('naturalWidth')==undefined){var $tmpImg=$('<img/>').attr('src',$img.attr('src'));console.log($tmpImg);$img.prop('naturalWidth',$tmpImg[0].width);$img.prop('naturalHeight',$tmpImg[0].height)}
return{'width':$img.prop('naturalWidth'),'height':$img.prop('naturalHeight')}};$.fn.realDimensions=function(parent){var clone=this.clone();clone.css({"visibility":"hidden",'position':'absolute','left':0});if(!parent){parent=this.parent()}
$(parent).append(clone);var dims={width:clone.outerWidth(),height:clone.outerHeight()};clone.remove();return dims};String.prototype.format=function(){var s=this;for(var i in arguments){if(typeof(arguments[i])=='object'){for(var j in arguments[i]){var reg=new RegExp("\\{"+j+"\\}","gm");s=s.replace(reg,arguments[i][j])}}else{var reg=new RegExp("\\{"+i+"\\}","gm");s=s.replace(reg,arguments[i])}}
return s};String.prototype.endsWith=function(suffix){return(this.substr(this.length-suffix.length)===suffix)};String.prototype.startsWith=function(prefix){return(this.substr(0,prefix.length)===prefix)};$.fn.messageText=function(code,options){if(ffJS.messages[code]){code=String(ffJS.messages[code]).format($.extend(ffJS.messageSubstitutions,options))}
return code};$.fn.ffTemplate=function(name,vars){if(vars){return ffJS.templates[name].format(vars)}else{return ffJS.templates[name]}};$.fn.ajaxResponse=function(form,data){var alertOnly=!1;var $m=!1;if(!form||form.length==0){alertOnly=!0}else{$m=form.find('.messages');if($m.length==0){alertOnly=!0}}
var s='';if(!alertOnly){form.find('label.ff-error').removeClass('ff-error');form.find('small.ff-error').remove();form.find('.messages').html('').removeClass('alert').removeClass('alert-danger').removeClass('alert-box').removeClass('alert-success')}
if(data.success&&data.message){var content=$.fn.messageText(data.message,data.params);if(data.popover){$.ffw.ffwPopover().hide(!0);setTimeout(function(){$.ffw.ffwPopover({show:!0,type:'success','contents':content})},100);return}else{if(alertOnly){$.ffw.ffwAlert({show:!0,type:'success','message':content});return}else{s=content}}}
var alertType="alert-success";if(data.formError&&data.formError!==!0){s='<p>'+$.fn.messageText(data.formError,data)+'</p>'}
if(data.formError||data.fieldErrors){alertType="alert"}
if(data.fieldErrors&&!alertOnly){for(var i in data.fieldErrors){var field=form.find("label[for="+i+"]");field.addClass('ff-error');field.parent().append('<small class="ff-error">'+$.fn.messageText(data.fieldErrors[i],data)+'</small>')}}
if(s.length>0){console.log(s);if(alertOnly){$.ffw.ffwAlert.error($.fn.messageText(s))}else{form.find(".messages").css({'opacity':0}).html($.fn.messageText(s)).addClass("alert-box").addClass(alertType).animate({'opacity':1},1000)}}
if(data.url){setTimeout(function(){self.location.href=data.url},1000)}};$.fn.refreshTimes=function(tIndex,debug){function getTimeAgo(tIndex,itemIndex){var secsAgo=Math.abs(tIndex-itemIndex);var months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];function pl(num,str){return num+(num==1?str.replace(/s\?/,''):str.replace(/s\?/,'s',str))}
if(secsAgo<5){return 'right now'}else if(secsAgo<60){return pl(secsAgo,' secs? ago')}else if(secsAgo<3600){return pl(Math.floor(secsAgo/60),' mins? ago')}else if(secsAgo<3600*24){return pl(Math.floor(secsAgo/3600),' hrs? ago')}else if(secsAgo<3600*24*7){return pl(Math.floor(secsAgo/(3600*24)),' days? ago')}else{var d=new Date(new Date().getTime()+((itemIndex-tIndex)*1000));var t=new Date();var suff='';if(t.getFullYear()!=d.getFullYear()){suff=', '+d.getFullYear()}
return months[d.getMonth()]+' '+d.getDate()+suff}
return secsAgo}
if(debug){console.log(tIndex,new Date(tIndex*1000),debug,new Date(debug*1000),getTimeAgo(tIndex,debug))}
$('[data-ff-time]').each(function(){$(this).text(getTimeAgo(tIndex,$(this).attr('data-ff-time')))})};$.fn.autoLinks=function(str){var pattern=/(((http[s]?:\/\/)|(www\.))(([-a-z0-9_]+\.)?[-a-z0-9_]+\.(\.[a-z_]{2,2})?)\/?[a-z0-9.,_\/~\(\)\':#&=;%+?-]+[_a-z0-9\/#=?]{1,1})/gi;return str.replace(pattern,' <a target="_blank" href="$1" rel="nofollow">$1</a>').replace(/href="www/,'href="http://www')};$.fn.youtubeId=function(url){var p=/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;return(url.match(p))?RegExp.$1:!1};$.fn.youtubeEmbed=function(id){return '<iframe src="http://www.youtube.com/embed/'+id+'" allowfullscreen></iframe>'};$.fn.getDomain=function(url){var a=document.createElement('a');a.href=url;return a.hostname};$.fn.getDomainLabel=function(url,wrapper){if(!wrapper){wrapper='<span class="via">via </span><span class="via-domain">{url}</span>'}
var d=$.fn.getDomain(url);if(d.match(/img\d+\.bdbphotos\.com/)){d='famousfix.com'}
return wrapper.format({url:d})};$.fn.autoImage=function(options){var imcache=[];var selector=this.selector;function addPhotoToComment(commentText,im){if(im.get(0).width<=0||im.get(0).height<=0){return !1}
var rat=im.get(0).width/im.get(0).height;var sh=$(window).scrollTop();var atBottom=$('body').attr('data-ff-bottom');var u=commentText.find("ul.ff-image-auto");if(u.length==0){u=$("<ul class='ff-image-auto'>").appendTo(commentText)}
var li=$("<li>");im.appendTo(li);im.wrap("<a>");li.find("a").attr({"href":im.attr("src"),"target":"_blank"});li.appendTo(u);var variance=Math.floor((1-((im.width()/im.height())/rat))*100);if(variance>80){li.remove();if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}
return !1}else{if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}}
return !0}
function imCheck(isLater){$(selector).each(function(){var commentText=$(this);$(this).find("a[rel=nofollow][href]:not([data-done])").each(function(){$(this).attr("data-done","true");var isrc=$(this).attr("href");var youtubeId=$.fn.youtubeId(isrc);if(isrc.match(/google\.com\/search/)){console.log("Ignoring "+isrc);return}
var link=$(this);if(youtubeId){$(this).replaceWith($.fn.youtubeEmbed(youtubeId));return}
if(!imcache[isrc]){var im=$("<img>");imcache[isrc]=im;im.load(function(){if($(this).get(0).height>=32&&im.get(0).width>=32){if(addPhotoToComment(commentText,im)){link.html($.fn.getDomainLabel(isrc)).addClass('offsite')}}});im.attr("src",$(this).attr("href"))}else{if(addPhotoToComment(commentText,imcache[isrc])){link.html($.fn.getDomain(isrc)).addClass('offsite')}}})});setTimeout(imCheckSecond,1000)}
function imCheckSecond(){return imCheck(!0)}
imCheck()};$.fn.ffDialog=function(data){function message(d,data){var timeout=(data.timeout?data.timeout:1500);d.html('<div class="small-12"><h2 id="ff-dialog-title"></h2><p class="lead"></p></div>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.close){d.append('<a class="close-reveal-modal" aria-label="Close">&#215;</a>')}
if(data.stayopen){d.foundation('reveal','open')}else{d.foundation('reveal','open');setTimeout(function(){d.foundation('reveal','close');if(data.url=='reload'){window.location.reload(!0)}else if(data.url){window.location.href=data.url}},timeout)}}
function confirm(d,data){d.html('<h2 id="ll-dialog-title"></h2><form><p class="lead"></p></form>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.buttons){d.append(data.buttons)}else{var cancel='<a class="cancel-confirm button secondary small right" aria-label="Cancel">Cancel</a>';var confirm='<button class="success small button right" type="submit">Confirm</button>';data.buttons=confirm+cancel}
d.html('<h2 id="ff-dialog-title">'+data.title+'</h2>'+'<form action='+data.url+'>'+'<p class="lead">'+data.message+'</p>'+data.buttons+'</form>');d.foundation('reveal','open');console.log('load');d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.cancel-confirm',function(e){e.preventDefault();e.stopPropagation();console.log('click');d.foundation('reveal','close')})}
function form(d,data){d.foundation('reveal','open',{url:data.url,data:data.params,multiple_opened:!1,success:function(){d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.close-reveal',function(e){e.preventDefault();e.stopPropagation();d.foundation('reveal','close')})},error:function(){alert('failed loading dialog box')}})}
var dForm=$('#ff-dialog-form');var dMessage=$('#ff-dialog-message');if(data.form){dForm.removeClass('open');dForm.hide();dForm.foundation('reveal','close');form(dForm,data)}else if(data.confirm){dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');confirm(dMessage,data)}else{dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');message(dMessage,data)}}
$.fn.ffUrl=function(name,getVars){var rootUrl='//fdata.whosdatedwho.com';var url={'trx':'//trx.whosdatedwho.com/trx','content-edit':rootUrl+'/content/edit','comment-add':rootUrl+'/comment/add','comment-delete':rootUrl+'/comment/delete','comment-list':rootUrl+'/comment/list','content-like':rootUrl+'/content/like','content-flag':rootUrl+'/content/flag','content-delete':rootUrl+'/content/delete','content-vote':rootUrl+'/content/vote','system-flags':rootUrl+'/system/flags','thread-list':rootUrl+'/thread/list','thread-latest':rootUrl+'/thread/list','user-register':rootUrl+'/register','user-forgot':rootUrl+'/forgot','user-login':rootUrl+'/login','user-logout':rootUrl+'/logout','social-login':rootUrl+'/social-login','facebook-share':'https://www.facebook.com/dialog/share','twitter-share':'https://twitter.com/intent/tweet','pinterest-share':'https://pinterest.com/pin/create/link/',};var getStr=(typeof getVars!=='undefined'?'?'+$.param(getVars):'');return url[name]+getStr}
$.fn.htmlEncode=function(value){return $('<div/>').text(value).html()};$.fn.htmlDecode=function(value){return $('<div/>').html(value).text()};$.fn.htmlStateStore=function(type){var $i=$('.data-ff-sss');var $e=$(this);var d={};if($i.is('[value]')&&$i.val()!=''){d=$.parseJSON($i.val())}
if(type=='auto'){if(!$e.attr('id')){$e=$e.closest('[id]')}
$e2=$e.clone();$e2.find('[data-ff--done]').removeAttr('data-ff--done');if(!('auto' in d)){d.auto={}}
d.auto[$e.attr('id')]=$e2.html()}
if(!type||type=='form'){var f=$(this).closest('form');if(f.length>0){if(f.attr('name')){d.formName=f.attr('name')}else if(f.attr('id')){d.formId=f.attr('id')}else{return}
d.form=f.serializeArray()}}
$i.val(JSON.stringify(d))};var restoreData=!1;$.fn.htmlStateRestore=function(getGroup,getId){var $i=$('.data-ff-sss');if(restoreData==!1){if($i.is('[value]')&&$i.val()!=''){restoreData=$.parseJSON($i.val())}}
if(getGroup&&getId){return(restoreData&&getGroup in restoreData&&getId in restoreData[getGroup]?restoreData[getGroup][getId]:!1)}else{var d=(restoreData?restoreData:{});$i.val('');$i.removeAttr('value');if('form' in d){var f;if('formName' in d){f=$('form[name="'+d.formName+'"]')}else if('formId' in d){f=$('form#'+d.formId)}
if(!f||f.length==0)return;for(var i in d.form){var fld=f.find('[name="'+d.form[i].name+'"]');fld.val(d.form[i].value)}
f.htmlStateStore('form');}
if('auto' in d){for(var i in d.auto){ffJS.log('Restore auto '+i+' to:',d.auto[i]);$('#'+i).html(d.auto[i]).removeAttr('data-ff--done').ffEnhance();$('#'+i).find('.ff-auto > .inputor').val('');$('#'+i).htmlStateStore('auto')}}}};$.fn.outerHTML=function(){return $('<div>').append($(this).clone()).html()};setTimeout('$.fn.htmlStateRestore()',500);$.fn.ffEnhance=function(){var $e=this;if(this.selector&&this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:enhance')}
$e.find('[data-ffw]').each(function(){ffJS.log('Enhance:',this);$(this).trigger('ff:enhance')})}
$.fn.ffRefresh=function(){var $e=this;if(this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:refresh')}
$e.find('[data-ffw]').each(function(){ffJS.log('Refresh:',this);$(this).trigger('ff:refresh')})}
$.fn.ffScrollStopped=function(callback,time){var time=time?time:250;var that=this,$this=$(that);$this.scroll(function(ev){clearTimeout($this.data('scrollTimeout'));$this.data('scrollTimeout',setTimeout(callback.bind(that),time,ev))})};$.fn.ffChangeParent=function(newParent,options){var oldParent=this.get(0);newParent=$(newParent).get(0);if(options&&options.exclude){$(options.exclude).data('ff-tmp-exclude',!0)}
this.children().each(function(){if(!$(this).data('ff-tmp-exclude')){newParent.appendChild(this)}else{$(this).data('ff-tmp-exclude',!1)}});return this};$.fn.ffAutogrow=function(){this.filter("textarea").each(function(){var $this=$(this),minHeight=$this.height(),shadow=$("<div></div>").css({position:"absolute",top:-10000,left:-10000,width:$(this).width(),fontSize:$this.css("fontSize"),fontFamily:$this.css("fontFamily"),lineHeight:$this.css("lineHeight"),resize:"none"}).addClass("shadow").appendTo(document.body),update=function(){var t=this;$(t).css('overflow-y','hidden');setTimeout(function(){var val=t.value.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&/g,"&amp;").replace(/\n/g,"<br/>&nbsp;");if($.trim(val)===""){val="a"}
shadow.html(val);$(t).css("height",Math.max(shadow[0].offsetHeight+20,minHeight));$(t).css('overflow-y','')},0)};$this.change(update).keyup(update).keydown(update).focus(update);update.apply(this)});return this}}},ffDialog:{pagecreate:function(activePage){activePage.on('click','[data-ff="save-dialog"],[data-ff="lookbook-dialog"],[data-ff="share-dialog"]',function(e){e.preventDefault();e.stopPropagation();var login=$('#user-panel div[id^="login-"]');if($(this).attr('data-ff-login-req')&&login.length>0){$('#user-panel').panel('open')}else{var type=$(this).attr('data-ff');var id=$(this).attr('data-ff-popup');var popup=$('#'+id);var url=$(this).attr('data-ff-url');$.get(url,{template:type},function(data){popup.html(data).enhanceWithin();popup.popup();popup.popup('open')})}});$('#dialog-popup').on('submit','[data-ff="dialog-form"]',function(e){e.preventDefault();e.stopPropagation();var form=$(this).closest('.ui-body').find('form');var vars=form.serialize();$.ajax({url:form.attr('action'),method:'post',data:vars,dataType:'json',success:function(data){if(data.success){$('#dialog-popup').popup('close');setTimeout(function(){ffJS.ffResponses.refreshResponse(data.message)},500)}else{ffJS.ffResponses.jsonResponse(data)}}})})},},ffResponses:{responseFunc:!1,responseFuncData:!1,pageloadfailed:function(event,data){var p=$(data.xhr.responseText);if(p.data('response')=='json'){var r;try{r=$.parseJSON(p.html())}catch(e){r={formError:p.html()}}
ffJS.ffResponses.jsonResponse(r)}},pagebeforechange:function(event,data){if(!data.toPage||!data.toPage[0]){return}
var p=$(data.toPage[0]);if(ffJS.ffResponses.responseFunc){ffJS.ffResponses.responseFunc(p)}
var resp=p.data('response');if(resp=='json'){var r;try{r=$.parseJSON(p.text())}catch(e){r={formError:p.text()}}
ffJS.ffResponses.jsonResponse(r);event.preventDefault()}else if(resp=='splash'){ffJS.ffResponses.splashResponse(p);p.remove();event.preventDefault()}else if(resp=='comment'){ffJS.ffResponses.commentResponse(p);p.remove();event.preventDefault()}else if(resp=='redirect'){ffJS.ffResponses.redirectResponse(p);p.remove();event.preventDefault()}else if(resp=='refresh'){$('#user-panel').panel('close');ffJS.ffResponses.refreshResponse(p.find(".splash"));if(p.data('responseUrl')){setTimeout(function(){self.location.href=p.data('responseUrl')},p.data('responseDelay'),p);event.preventDefault();return}
p.remove();setTimeout(function(){location.reload()},1000);event.preventDefault()}else if(resp=="chead"){if($('.ui-page-active[data-response="chead"]').length>0){ffJS.ffResponses.cheadResponse(p);p.remove();event.preventDefault()}}else{if(data.options.link&&data.options.link.data('dom-update')&&p.length>0){event.preventDefault();ffJS.ffResponses.domUpdateResponse(data.options.link.data(),p);p.remove()}}},jsonResponse:function(data){var ap=$(".ui-panel-open");if(ap.length==0){ap=$(".ui-popup-active");if(ap.length==0){ap=$(".ui-page-active")}}
ap.find('label.error').removeClass('error');ap.find('.messages').html('').removeClass('alert').removeClass('alert-danger');var s='';if(data.formError){s='<p>'+data.formError+'</p>'}
if(data.fieldErrors&&data.fieldErrors!=!1){s+='<ul>';for(var i in data.fieldErrors){ap.find("label[for="+i+"]").addClass('error');s+='<li>'+data.fieldErrors[i]+'</li>'}
s+='</ul>'}
if(s.length>0){ap.find(".messages").css({'opacity':0}).html(s).addClass("alert").addClass("alert-danger").animate({'opacity':1},1000)}},redirectResponse:function(data){self.location.href=data.data('response-url')},commentResponse:function(data){var ap=$('.ui-page-active');var comments=data.find('.lv-comment li');comments.appendTo(ap.find('.lv-comment'))},splashResponse:function(data){var el=$('<div id="splash" style="margin-top:-200%;opacity:1;position:fixed;z-index: 999999;width: 100%;left: -1em;">');data.find('#debug-panel').remove();el.html(data.html());var ap=$('.ui-page-active');ap.find('.messages').html('').removeClass('alert').removeClass('alert-danger');el.appendTo(ap);setTimeout(function(){el.animate({opacity:0},500,function(){$("#splash").remove();if(data.data("response-url")&&data.data("response-url").length>0){$.mobile.navigate(data.data("response-url"))}else{ap.find('[data-rel="back"]').click()}})},data.data("response-delay"))},refreshResponse:function(message,func){var splash=$("#splashPopup").html('');splash.append(message);splash.popup({dismissible:!1,history:!1,overlayTheme:"b",positionTo:"window",transition:"pop",theme:"a",});splash.popup('open');setTimeout(function(){$("#splashPopup").popup('close');if(func){func()}},2000)},domUpdateResponse:function(dataOptions,toPage){var ap=$(".ui-page-active");var target=ap.find(dataOptions.target);var source=toPage.find(dataOptions.source);switch(dataOptions.domUpdate){case 'replace':target.replaceWith(source);break}}},ffTrx:{scrollstop:function(event,activePage){activePage.find('[data-trx="i"]').each(function(){var pos=$(this).position().top;var current=$(window).scrollTop();var height=$(window).height();if((pos>current-(height*.3))&&(pos<current+(height*.5))){ffJS.ffTrx.trx.add($(this).data())}})},pagecreate:function(activePage){var tx=activePage.find('[role="main"][data-trx]');if(tx.length>0){ffJS.ffTrx.trx.add(tx.data())}
activePage.on('touchstart click',function(e){var el=$(e.target).closest('[data-trx]');if(el.length>0){ffJS.ffTrx.trx.add(el.data())}
return !0})},trx:{q:[],add:function(data){if(!this.q[data.trx]){this.q[data.trx]=[]}
var t=this.q[data.trx];if(!t[data.trxId]){t[data.trxId+';'+data.trxType+(data.trxChildren?data.trxChildren:'')]=1;this.start()}},start:function(){if(this.t){return}
this.t=setTimeout(function(){ffJS.ffTrx.trx.clear()},5000)},clear:function(){var s=[];var count=0;for(var i in this.q){var t='';for(var j in this.q[i]){if(this.q[i][j]==1){t+=(t.length>0?',':'')+j;this.q[i][j]=2}}
if(t.length>0){count++;s[i]=t}}
if(count>0){s.p=location.pathname;if(document.referrer){s.r=document.referrer}
s.q=window.location.search;__trx.agent(s)}
this.t=!1}}},ffDataff:{inject:function(el){$(el).find('[data-fft]').each(function(){if(ffJS.ffDataff.templates[$(this).attr('data-fft')]){$(this).html(ffJS.ffDataff.templates[$(this).attr('data-fft')])}})},req:null,cleanHtml:function(h){var trim=h.match(/^(\s+)/);if(trim&&trim.length>0){if(trim.length>0){h=h.replace(new RegExp(trim[1]),'');h=h.replace(new RegExp(trim[1],'g'),"\n")}}
return h},devCode:function(el,title){var h=el.html();var h2=$('<div>'+h+'</div>');h2.find('gen').remove();h=h2.html().trim().replace(/=""/g,'');var gother=el.find('gen');var gen=$('<gen>');$('<h4>').text(title).appendTo(gen);$('<pre class="ff-code">').text(h).appendTo(gen);var pre=gen.find('pre').clone().html().replace(' class="ff"','');if(gother.length>0){}
if(gother.length>0&&pre==gother.find('pre').html()){gother.find('h4').remove()}else{gen.appendTo(el)}},content:function(){},dmenu:function(el){if(el.data('done')==!0){return}
el.data('done',!0);function setParentHtml(elSource,elParent){if(!elSource){return}
elParent.show();elParent=elParent.find('table');var idx=elSource.closest('td').index();var ridx=elSource.closest('tr').index();if(idx<0)return;var sTbl=elSource.closest('table');var pHeaders=elParent.find('thead tr');if(pHeaders.length==0){pHeaders=$('<tr>');pHeaders.appendTo(elParent.find('thead'))}
var h=sTbl.find('thead tr th:nth-child('+(idx+1)+')');pHeaders.find('th').each(function(){if(!h)return;if($(this).text()==h.text()){var e=elSource.closest('td');elParent.find('tr td:nth-child('+($(this).index()+1)+')').removeClass('active');e.addClass('active');h=!1}});if(h){var pBody=elParent.find('tbody');h.clone().css('width','auto').appendTo(pHeaders);sTbl.find('tbody tr').each(function(){var pRow=pBody.find('tr:nth-child('+($(this).index()+1)+')');if(pRow.length==0){pRow=$('<tr>').appendTo(pBody)}
var e=$(this).find('td:nth-child('+(idx+1)+')').clone().appendTo(pRow);if(pRow.index()==ridx){e.addClass('active')}});elParent.find('tbody tr').each(function(){var r=$(this);pHeaders.find('th').each(function(){if(!r.find('td:nth-child('+($(this).index()+1)+')').length){$('<td>&nbsp;</td>').appendTo(r)}})})}
elParent.attr('data-ff-target',elSource.closest('[data-ff-target]').attr('data-ff-target'));if(!elParent.is('[data-done]')){ffJS.ffDataff.dmenu(elParent);elParent.on('click','tbody tr td a',function(){var td=$(this).closest('td');while(td&&td.length>0){td=td.next();if(td&&td.length>0){elParent.find('thead tr th:nth-child('+(td.index()+1)+')').remove();elParent.find('tbody tr td:nth-child('+(td.index()+1)+')').remove()}}})}}
function load(link,target,linkEl){var tn=el.attr('data-ff-target');if(!tn){tn=el.closest('[data-ff-target]').attr('data-ff-target')}
var t=$(tn);var w=0;var p;if(t.is('[data-ff-target-parent]')){p=$(t.attr('data-ff-target-parent'));setParentHtml(linkEl,p)}
if(t.attr('data-ff-target')){$(t.attr('data-ff-target')).html('<tr><td>loading...</td></tr>')}
if(target){t=target}
t.width(200);t.html('<tr><td><br><small>loading...</small></td></tr>');t.attr('data-ff-last-link',link);var data={};$('[data-ff-value]').each(function(){data[$(this).attr('name')]=$(this).attr('value')});if(ffJS.ffDataff.req){ffJS.ffDataff.req.abort()}
ffJS.ffDataff.req=$.ajax({url:link,method:'POST',data:data,success:function(data){w=0;if(p&&p.length){w=screen.width-p.width()-60;t.width(100)}
t.html(data);if(w){t.width(w)}
ffJS.ffDataff.ready(t);if(w){t.find('.dataTables_wrapper').width(w)}}})}
el.on('change','th .ff-check',function(){el.find('td .ff-check').prop('checked',$(this).prop('checked'))});el.on('click','thead a',function(e){e.preventDefault();load($(this).attr('href'),el)});el.on('click','li > a,tbody a',function(e){if($(this).attr('href').startsWith('#')){e.preventDefault();$(this).closest('li,[data-ff-dlink]').siblings().removeClass('active');$(this).closest('li,[data-ff-dlink]').addClass('active');load($(this).attr('href').substring(1),!1,$(e.target))}else{}});el.on('click','tbody td',function(e){var a=$(this).find('a');if(a.length>0&&e.target.tagName=='TD'){e.preventDefault();a.click()}});el.on('click','[data-ff-dlink]',function(e){if(e.target.tagName=='A'&&$(e.target).is('[data-ff-dlink]')){if($(e.target).attr('href').startsWith('#')){e.preventDefault();load($(e.target).attr('href').substring(1));$(this).closest('dd').siblings().removeClass('active');$(this).closest('dd').addClass('active')}}else{e.preventDefault();var cb=$(this).closest('tr').find('input.ff-check');if($(this).attr('data-ff-dlink').length>0||cb.length>0){if(cb.length==0){$(this).siblings().removeClass('active')}
$(this).addClass('active');if(cb.length){cb.prop('checked',!cb.prop('checked'))}else{load($(this).attr('data-ff-dlink'))}}}})},ready:function(el){if(!el){el=$('body')}
el.find('[data-ff]').each(function(){var el=$(this);switch(el.attr('data-ff')){case 'dmenu':ffJS.ffDataff.dmenu(el);if(el.get(0).tagName=='TABLE'){var p=$(this).hasClass('ff-detailed');var opts={paginate:!1,info:!1,order:!1};if(p){opts.language={search:"_INPUT_",searchPlaceholder:"Search records"};opts.fixedHeader={header:!0,footer:!1};opts.order=[];opts.columnDefs=[{orderable:!1,targets:0}]}else{opts.searching=!1;opts.ordering=!1}
el.dataTable(opts)}
break;case 'ajax':ffJS.ffDataff.req=$.ajax({url:el.attr('data-ff-url'),success:function(data){el.html(data);ffJS.ffDataff.ready(el)}});break;case 'coptions':ffJS.ffDataff.contentOptions(el);break;case 'devcode':ffJS.ffDataff.devCode(el,'Before:');break}})},readyFirst:function(el){el.find('[data-ff="devcode"],[data-ff="code"]').each(function(){$(this).html(ffJS.ffDataff.cleanHtml($(this).html()))})},readyLast:function(el){if(!el){el=$('body')}
el.find('[data-ff]').each(function(){$(this).addClass('ff');var el=$(this);switch(el.attr('data-ff')){case 'devcode':ffJS.ffDataff.devCode(el,'After:');break;case 'code':el.addClass('ff-code');break}})},},ffEvents:{getTarget:function(elSource){var target=!1;elSource=$(elSource);var el=elSource;if(elSource.attr('data-ff-target')){el=$(elSource.attr('data-ff-target'));target=!0}
if(elSource.attr('data-ff-target-closest')){el=el.closest(elSource.attr('data-ff-target-closest'));target=!0}
if(elSource.attr('data-ff-target-siblings')){el=el.siblings(elSource.attr('data-ff-target-siblings'));target=!0}
if(target&&el.length){return el}
return $({})},ready:function(){$('body').on('click','[data-ff="toggle"]',function(e){e.preventDefault();ffJS.ffEvents.getTarget(this).each(function(){$(this).toggle()})});$('body').on('click','[data-ff="show"]',function(e){e.preventDefault();ffJS.ffEvents.getTarget(this).each(function(){$(this).show()})});$('[data-ff="datepicker"]').each(function(){$(this).datepicker({todayHighlight:!0,dateFormat:"yy-mm-dd",autoclose:!0})});$('body').on('focus','[data-ff="autogrow"]:not(.ff-autogrow-loaded)',function(e){$(e.target).autoGrow();$(e.target).addClass('ff-autogrow-loaded')})}},ffFunctions:{init:function(){$.ajaxSetup({crossDomain:!0,xhrFields:{withCredentials:!0},beforeSend:function(xhr){xhr.withCredentials=!0}});$(function(){$.xhrPool=[];$.xhrPool.abortAll=function(){$(this).each(function(i,jqXHR){jqXHR.abort();$.xhrPool.splice(i,1)})}
$.ajaxSetup({beforeSend:function(jqXHR){$.xhrPool.push(jqXHR)},complete:function(jqXHR){var i=$.inArray(jqXHR,$.xhrPool);if(i>-1)$.xhrPool.splice(i,1)}})});(function($){var re=/([^&=]+)=?([^&]*)/g;var decode=function(str){return decodeURIComponent(str.replace(/\+/g,' '))};$.parseParams=function(query){var params={},e;if(query){if(query.substr(0,1)=='?'){query=query.substr(1)}
while(e=re.exec(query)){var k=decode(e[1]);var v=decode(e[2]);if(params[k]!==undefined){if(!$.isArray(params[k])){params[k]=[params[k]]}
params[k].push(v)}else{params[k]=v}}}
return params}})(jQuery);$.fn.digits=function(){return this.each(function(){$(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"))})};$.fn.center=function(){this.css("position","absolute");this.css('top',parseInt(($(window).height()/2)+jQuery(document).scrollTop()-this.height()/2));this.css('left',parseInt(($(window).width()/2)+jQuery(document).scrollLeft()-this.width()/2));return this};$.fn.subData=function(prefix){var d=$('<div>');$(this.get(0).attributes).each(function(){if(this.name.indexOf('data-'+prefix)===0){d.attr(this.name.replace('data-'+prefix,'data').toLowerCase(),this.value)}});return d.data()};$.fn.slug=function(){return this.val().toLowerCase().replace(/^https?:\/\//,'').replace(/[\/\.]/g,' ').replace(/[^\w ]+/g,'').replace(/ +/g,'-')};$.fn.realSize=function(){var $img=this;if($img.prop('naturalWidth')==undefined){var $tmpImg=$('<img/>').attr('src',$img.attr('src'));console.log($tmpImg);$img.prop('naturalWidth',$tmpImg[0].width);$img.prop('naturalHeight',$tmpImg[0].height)}
return{'width':$img.prop('naturalWidth'),'height':$img.prop('naturalHeight')}};$.fn.realDimensions=function(parent){var clone=this.clone();clone.css({"visibility":"hidden",'position':'absolute','left':0});if(!parent){parent=this.parent()}
$(parent).append(clone);var dims={width:clone.outerWidth(),height:clone.outerHeight()};clone.remove();return dims};String.prototype.format=function(){var s=this;for(var i in arguments){if(typeof(arguments[i])=='object'){for(var j in arguments[i]){var reg=new RegExp("\\{"+j+"\\}","gm");s=s.replace(reg,arguments[i][j])}}else{var reg=new RegExp("\\{"+i+"\\}","gm");s=s.replace(reg,arguments[i])}}
return s};String.prototype.endsWith=function(suffix){return(this.substr(this.length-suffix.length)===suffix)};String.prototype.startsWith=function(prefix){return(this.substr(0,prefix.length)===prefix)};$.fn.messageText=function(code,options){if(ffJS.messages[code]){code=String(ffJS.messages[code]).format($.extend(ffJS.messageSubstitutions,options))}
return code};$.fn.ffTemplate=function(name,vars){if(vars){return ffJS.templates[name].format(vars)}else{return ffJS.templates[name]}};$.fn.ajaxResponse=function(form,data){var alertOnly=!1;var $m=!1;if(!form||form.length==0){alertOnly=!0}else{$m=form.find('.messages');if($m.length==0){alertOnly=!0}}
var s='';if(!alertOnly){form.find('label.ff-error').removeClass('ff-error');form.find('small.ff-error').remove();form.find('.messages').html('').removeClass('alert').removeClass('alert-danger').removeClass('alert-box').removeClass('alert-success')}
if(data.success&&data.message){var content=$.fn.messageText(data.message,data.params);if(data.popover){$.ffw.ffwPopover().hide(!0);setTimeout(function(){$.ffw.ffwPopover({show:!0,type:'success','contents':content})},100);return}else{if(alertOnly){$.ffw.ffwAlert({show:!0,type:'success','message':content});return}else{s=content}}}
var alertType="alert-success";if(data.formError&&data.formError!==!0){s='<p>'+$.fn.messageText(data.formError,data)+'</p>'}
if(data.formError||data.fieldErrors){alertType="alert"}
if(data.fieldErrors&&!alertOnly){for(var i in data.fieldErrors){var field=form.find("label[for="+i+"]");field.addClass('ff-error');field.parent().append('<small class="ff-error">'+$.fn.messageText(data.fieldErrors[i],data)+'</small>')}}
if(s.length>0){console.log(s);if(alertOnly){$.ffw.ffwAlert.error($.fn.messageText(s))}else{form.find(".messages").css({'opacity':0}).html($.fn.messageText(s)).addClass("alert-box").addClass(alertType).animate({'opacity':1},1000)}}
if(data.url){setTimeout(function(){self.location.href=data.url},1000)}};$.fn.refreshTimes=function(tIndex,debug){function getTimeAgo(tIndex,itemIndex){var secsAgo=Math.abs(tIndex-itemIndex);var months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];function pl(num,str){return num+(num==1?str.replace(/s\?/,''):str.replace(/s\?/,'s',str))}
if(secsAgo<5){return 'right now'}else if(secsAgo<60){return pl(secsAgo,' secs? ago')}else if(secsAgo<3600){return pl(Math.floor(secsAgo/60),' mins? ago')}else if(secsAgo<3600*24){return pl(Math.floor(secsAgo/3600),' hrs? ago')}else if(secsAgo<3600*24*7){return pl(Math.floor(secsAgo/(3600*24)),' days? ago')}else{var d=new Date(new Date().getTime()+((itemIndex-tIndex)*1000));var t=new Date();var suff='';if(t.getFullYear()!=d.getFullYear()){suff=', '+d.getFullYear()}
return months[d.getMonth()]+' '+d.getDate()+suff}
return secsAgo}
if(debug){console.log(tIndex,new Date(tIndex*1000),debug,new Date(debug*1000),getTimeAgo(tIndex,debug))}
$('[data-ff-time]').each(function(){$(this).text(getTimeAgo(tIndex,$(this).attr('data-ff-time')))})};$.fn.autoLinks=function(str){var pattern=/(((http[s]?:\/\/)|(www\.))(([-a-z0-9_]+\.)?[-a-z0-9_]+\.(\.[a-z_]{2,2})?)\/?[a-z0-9.,_\/~\(\)\':#&=;%+?-]+[_a-z0-9\/#=?]{1,1})/gi;return str.replace(pattern,' <a target="_blank" href="$1" rel="nofollow">$1</a>').replace(/href="www/,'href="http://www')};$.fn.youtubeId=function(url){var p=/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;return(url.match(p))?RegExp.$1:!1};$.fn.youtubeEmbed=function(id){return '<iframe src="http://www.youtube.com/embed/'+id+'" allowfullscreen></iframe>'};$.fn.getDomain=function(url){var a=document.createElement('a');a.href=url;return a.hostname};$.fn.getDomainLabel=function(url,wrapper){if(!wrapper){wrapper='<span class="via">via </span><span class="via-domain">{url}</span>'}
var d=$.fn.getDomain(url);if(d.match(/img\d+\.bdbphotos\.com/)){d='famousfix.com'}
return wrapper.format({url:d})};$.fn.autoImage=function(options){var imcache=[];var selector=this.selector;function addPhotoToComment(commentText,im){if(im.get(0).width<=0||im.get(0).height<=0){return !1}
var rat=im.get(0).width/im.get(0).height;var sh=$(window).scrollTop();var atBottom=$('body').attr('data-ff-bottom');var u=commentText.find("ul.ff-image-auto");if(u.length==0){u=$("<ul class='ff-image-auto'>").appendTo(commentText)}
var li=$("<li>");im.appendTo(li);im.wrap("<a>");li.find("a").attr({"href":im.attr("src"),"target":"_blank"});li.appendTo(u);var variance=Math.floor((1-((im.width()/im.height())/rat))*100);if(variance>80){li.remove();if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}
return !1}else{if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}}
return !0}
function imCheck(isLater){$(selector).each(function(){var commentText=$(this);$(this).find("a[rel=nofollow][href]:not([data-done])").each(function(){$(this).attr("data-done","true");var isrc=$(this).attr("href");var youtubeId=$.fn.youtubeId(isrc);if(isrc.match(/google\.com\/search/)){console.log("Ignoring "+isrc);return}
var link=$(this);if(youtubeId){$(this).replaceWith($.fn.youtubeEmbed(youtubeId));return}
if(!imcache[isrc]){var im=$("<img>");imcache[isrc]=im;im.load(function(){if($(this).get(0).height>=32&&im.get(0).width>=32){if(addPhotoToComment(commentText,im)){link.html($.fn.getDomainLabel(isrc)).addClass('offsite')}}});im.attr("src",$(this).attr("href"))}else{if(addPhotoToComment(commentText,imcache[isrc])){link.html($.fn.getDomain(isrc)).addClass('offsite')}}})});setTimeout(imCheckSecond,1000)}
function imCheckSecond(){return imCheck(!0)}
imCheck()};$.fn.ffDialog=function(data){function message(d,data){var timeout=(data.timeout?data.timeout:1500);d.html('<div class="small-12"><h2 id="ff-dialog-title"></h2><p class="lead"></p></div>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.close){d.append('<a class="close-reveal-modal" aria-label="Close">&#215;</a>')}
if(data.stayopen){d.foundation('reveal','open')}else{d.foundation('reveal','open');setTimeout(function(){d.foundation('reveal','close');if(data.url=='reload'){window.location.reload(!0)}else if(data.url){window.location.href=data.url}},timeout)}}
function confirm(d,data){d.html('<h2 id="ll-dialog-title"></h2><form><p class="lead"></p></form>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.buttons){d.append(data.buttons)}else{var cancel='<a class="cancel-confirm button secondary small right" aria-label="Cancel">Cancel</a>';var confirm='<button class="success small button right" type="submit">Confirm</button>';data.buttons=confirm+cancel}
d.html('<h2 id="ff-dialog-title">'+data.title+'</h2>'+'<form action='+data.url+'>'+'<p class="lead">'+data.message+'</p>'+data.buttons+'</form>');d.foundation('reveal','open');console.log('load');d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.cancel-confirm',function(e){e.preventDefault();e.stopPropagation();console.log('click');d.foundation('reveal','close')})}
function form(d,data){d.foundation('reveal','open',{url:data.url,data:data.params,multiple_opened:!1,success:function(){d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.close-reveal',function(e){e.preventDefault();e.stopPropagation();d.foundation('reveal','close')})},error:function(){alert('failed loading dialog box')}})}
var dForm=$('#ff-dialog-form');var dMessage=$('#ff-dialog-message');if(data.form){dForm.removeClass('open');dForm.hide();dForm.foundation('reveal','close');form(dForm,data)}else if(data.confirm){dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');confirm(dMessage,data)}else{dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');message(dMessage,data)}}
$.fn.ffUrl=function(name,getVars){var rootUrl='//fdata.whosdatedwho.com';var url={'trx':'//trx.whosdatedwho.com/trx','content-edit':rootUrl+'/content/edit','comment-add':rootUrl+'/comment/add','comment-delete':rootUrl+'/comment/delete','comment-list':rootUrl+'/comment/list','content-like':rootUrl+'/content/like','content-flag':rootUrl+'/content/flag','content-delete':rootUrl+'/content/delete','content-vote':rootUrl+'/content/vote','system-flags':rootUrl+'/system/flags','thread-list':rootUrl+'/thread/list','thread-latest':rootUrl+'/thread/list','user-register':rootUrl+'/register','user-forgot':rootUrl+'/forgot','user-login':rootUrl+'/login','user-logout':rootUrl+'/logout','social-login':rootUrl+'/social-login','facebook-share':'https://www.facebook.com/dialog/share','twitter-share':'https://twitter.com/intent/tweet','pinterest-share':'https://pinterest.com/pin/create/link/',};var getStr=(typeof getVars!=='undefined'?'?'+$.param(getVars):'');return url[name]+getStr}
$.fn.htmlEncode=function(value){return $('<div/>').text(value).html()};$.fn.htmlDecode=function(value){return $('<div/>').html(value).text()};$.fn.htmlStateStore=function(type){var $i=$('.data-ff-sss');var $e=$(this);var d={};if($i.is('[value]')&&$i.val()!=''){d=$.parseJSON($i.val())}
if(type=='auto'){if(!$e.attr('id')){$e=$e.closest('[id]')}
$e2=$e.clone();$e2.find('[data-ff--done]').removeAttr('data-ff--done');if(!('auto' in d)){d.auto={}}
d.auto[$e.attr('id')]=$e2.html()}
if(!type||type=='form'){var f=$(this).closest('form');if(f.length>0){if(f.attr('name')){d.formName=f.attr('name')}else if(f.attr('id')){d.formId=f.attr('id')}else{return}
d.form=f.serializeArray()}}
$i.val(JSON.stringify(d))};var restoreData=!1;$.fn.htmlStateRestore=function(getGroup,getId){var $i=$('.data-ff-sss');if(restoreData==!1){if($i.is('[value]')&&$i.val()!=''){restoreData=$.parseJSON($i.val())}}
if(getGroup&&getId){return(restoreData&&getGroup in restoreData&&getId in restoreData[getGroup]?restoreData[getGroup][getId]:!1)}else{var d=(restoreData?restoreData:{});$i.val('');$i.removeAttr('value');if('form' in d){var f;if('formName' in d){f=$('form[name="'+d.formName+'"]')}else if('formId' in d){f=$('form#'+d.formId)}
if(!f||f.length==0)return;for(var i in d.form){var fld=f.find('[name="'+d.form[i].name+'"]');fld.val(d.form[i].value)}
f.htmlStateStore('form');}
if('auto' in d){for(var i in d.auto){ffJS.log('Restore auto '+i+' to:',d.auto[i]);$('#'+i).html(d.auto[i]).removeAttr('data-ff--done').ffEnhance();$('#'+i).find('.ff-auto > .inputor').val('');$('#'+i).htmlStateStore('auto')}}}};$.fn.outerHTML=function(){return $('<div>').append($(this).clone()).html()};setTimeout('$.fn.htmlStateRestore()',500);$.fn.ffEnhance=function(){var $e=this;if(this.selector&&this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:enhance')}
$e.find('[data-ffw]').each(function(){ffJS.log('Enhance:',this);$(this).trigger('ff:enhance')})}
$.fn.ffRefresh=function(){var $e=this;if(this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:refresh')}
$e.find('[data-ffw]').each(function(){ffJS.log('Refresh:',this);$(this).trigger('ff:refresh')})}
$.fn.ffScrollStopped=function(callback,time){var time=time?time:250;var that=this,$this=$(that);$this.scroll(function(ev){clearTimeout($this.data('scrollTimeout'));$this.data('scrollTimeout',setTimeout(callback.bind(that),time,ev))})};$.fn.ffChangeParent=function(newParent,options){var oldParent=this.get(0);newParent=$(newParent).get(0);if(options&&options.exclude){$(options.exclude).data('ff-tmp-exclude',!0)}
this.children().each(function(){if(!$(this).data('ff-tmp-exclude')){newParent.appendChild(this)}else{$(this).data('ff-tmp-exclude',!1)}});return this};$.fn.ffAutogrow=function(){this.filter("textarea").each(function(){var $this=$(this),minHeight=$this.height(),shadow=$("<div></div>").css({position:"absolute",top:-10000,left:-10000,width:$(this).width(),fontSize:$this.css("fontSize"),fontFamily:$this.css("fontFamily"),lineHeight:$this.css("lineHeight"),resize:"none"}).addClass("shadow").appendTo(document.body),update=function(){var t=this;$(t).css('overflow-y','hidden');setTimeout(function(){var val=t.value.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&/g,"&amp;").replace(/\n/g,"<br/>&nbsp;");if($.trim(val)===""){val="a"}
shadow.html(val);$(t).css("height",Math.max(shadow[0].offsetHeight+20,minHeight));$(t).css('overflow-y','')},0)};$this.change(update).keyup(update).keydown(update).focus(update);update.apply(this)});return this}}},ffDialog:{pagecreate:function(activePage){activePage.on('click','[data-ff="save-dialog"],[data-ff="lookbook-dialog"],[data-ff="share-dialog"]',function(e){e.preventDefault();e.stopPropagation();var login=$('#user-panel div[id^="login-"]');if($(this).attr('data-ff-login-req')&&login.length>0){$('#user-panel').panel('open')}else{var type=$(this).attr('data-ff');var id=$(this).attr('data-ff-popup');var popup=$('#'+id);var url=$(this).attr('data-ff-url');$.get(url,{template:type},function(data){popup.html(data).enhanceWithin();popup.popup();popup.popup('open')})}});$('#dialog-popup').on('submit','[data-ff="dialog-form"]',function(e){e.preventDefault();e.stopPropagation();var form=$(this).closest('.ui-body').find('form');var vars=form.serialize();$.ajax({url:form.attr('action'),method:'post',data:vars,dataType:'json',success:function(data){if(data.success){$('#dialog-popup').popup('close');setTimeout(function(){ffJS.ffResponses.refreshResponse(data.message)},500)}else{ffJS.ffResponses.jsonResponse(data)}}})})},},ffResponses:{responseFunc:!1,responseFuncData:!1,pageloadfailed:function(event,data){var p=$(data.xhr.responseText);if(p.data('response')=='json'){var r;try{r=$.parseJSON(p.html())}catch(e){r={formError:p.html()}}
ffJS.ffResponses.jsonResponse(r)}},pagebeforechange:function(event,data){if(!data.toPage||!data.toPage[0]){return}
var p=$(data.toPage[0]);if(ffJS.ffResponses.responseFunc){ffJS.ffResponses.responseFunc(p)}
var resp=p.data('response');if(resp=='json'){var r;try{r=$.parseJSON(p.text())}catch(e){r={formError:p.text()}}
ffJS.ffResponses.jsonResponse(r);event.preventDefault()}else if(resp=='splash'){ffJS.ffResponses.splashResponse(p);p.remove();event.preventDefault()}else if(resp=='comment'){ffJS.ffResponses.commentResponse(p);p.remove();event.preventDefault()}else if(resp=='redirect'){ffJS.ffResponses.redirectResponse(p);p.remove();event.preventDefault()}else if(resp=='refresh'){$('#user-panel').panel('close');ffJS.ffResponses.refreshResponse(p.find(".splash"));if(p.data('responseUrl')){setTimeout(function(){self.location.href=p.data('responseUrl')},p.data('responseDelay'),p);event.preventDefault();return}
p.remove();setTimeout(function(){location.reload()},1000);event.preventDefault()}else if(resp=="chead"){if($('.ui-page-active[data-response="chead"]').length>0){ffJS.ffResponses.cheadResponse(p);p.remove();event.preventDefault()}}else{if(data.options.link&&data.options.link.data('dom-update')&&p.length>0){event.preventDefault();ffJS.ffResponses.domUpdateResponse(data.options.link.data(),p);p.remove()}}},jsonResponse:function(data){var ap=$(".ui-panel-open");if(ap.length==0){ap=$(".ui-popup-active");if(ap.length==0){ap=$(".ui-page-active")}}
ap.find('label.error').removeClass('error');ap.find('.messages').html('').removeClass('alert').removeClass('alert-danger');var s='';if(data.formError){s='<p>'+data.formError+'</p>'}
if(data.fieldErrors&&data.fieldErrors!=!1){s+='<ul>';for(var i in data.fieldErrors){ap.find("label[for="+i+"]").addClass('error');s+='<li>'+data.fieldErrors[i]+'</li>'}
s+='</ul>'}
if(s.length>0){ap.find(".messages").css({'opacity':0}).html(s).addClass("alert").addClass("alert-danger").animate({'opacity':1},1000)}},redirectResponse:function(data){self.location.href=data.data('response-url')},commentResponse:function(data){var ap=$('.ui-page-active');var comments=data.find('.lv-comment li');comments.appendTo(ap.find('.lv-comment'))},splashResponse:function(data){var el=$('<div id="splash" style="margin-top:-200%;opacity:1;position:fixed;z-index: 999999;width: 100%;left: -1em;">');data.find('#debug-panel').remove();el.html(data.html());var ap=$('.ui-page-active');ap.find('.messages').html('').removeClass('alert').removeClass('alert-danger');el.appendTo(ap);setTimeout(function(){el.animate({opacity:0},500,function(){$("#splash").remove();if(data.data("response-url")&&data.data("response-url").length>0){$.mobile.navigate(data.data("response-url"))}else{ap.find('[data-rel="back"]').click()}})},data.data("response-delay"))},refreshResponse:function(message,func){var splash=$("#splashPopup").html('');splash.append(message);splash.popup({dismissible:!1,history:!1,overlayTheme:"b",positionTo:"window",transition:"pop",theme:"a",});splash.popup('open');setTimeout(function(){$("#splashPopup").popup('close');if(func){func()}},2000)},domUpdateResponse:function(dataOptions,toPage){var ap=$(".ui-page-active");var target=ap.find(dataOptions.target);var source=toPage.find(dataOptions.source);switch(dataOptions.domUpdate){case 'replace':target.replaceWith(source);break}}},ffTrx:{scrollstop:function(event,activePage){activePage.find('[data-trx="i"]').each(function(){var pos=$(this).position().top;var current=$(window).scrollTop();var height=$(window).height();if((pos>current-(height*.3))&&(pos<current+(height*.5))){ffJS.ffTrx.trx.add($(this).data())}})},pagecreate:function(activePage){var tx=activePage.find('[role="main"][data-trx]');if(tx.length>0){ffJS.ffTrx.trx.add(tx.data())}
activePage.on('touchstart click',function(e){var el=$(e.target).closest('[data-trx]');if(el.length>0){ffJS.ffTrx.trx.add(el.data())}
return !0})},trx:{q:[],add:function(data){if(!this.q[data.trx]){this.q[data.trx]=[]}
var t=this.q[data.trx];if(!t[data.trxId]){t[data.trxId+';'+data.trxType+(data.trxChildren?data.trxChildren:'')]=1;this.start()}},start:function(){if(this.t){return}
this.t=setTimeout(function(){ffJS.ffTrx.trx.clear()},5000)},clear:function(){var s=[];var count=0;for(var i in this.q){var t='';for(var j in this.q[i]){if(this.q[i][j]==1){t+=(t.length>0?',':'')+j;this.q[i][j]=2}}
if(t.length>0){count++;s[i]=t}}
if(count>0){s.p=location.pathname;if(document.referrer){s.r=document.referrer}
s.q=window.location.search;__trx.agent(s)}
this.t=!1}}},ffMasonry:{masonry:{},setup:function(masonry){ffJS.ffMasonry.masonry=masonry;if(masonry.length>0){masonry.isotope({itemSelector:'.masonry-item',masonry:{'columnWidth':170,'gutter':10,'isFitWidth':!0},transitionDuration:0,transformsEnabled:!1,containerStyle:{position:'relative'},});if($(window).width()>1050){$('[data-llb="masonry-append"]').click()}}},append:function(btn){$.get(btn.attr('href'),function(data){items=$(data).find('.masonry-item');ffJS.ffMasonry.masonry.append(items).isotope('appended',items);href=$(data).find('.masonry-next-page a').first().attr('href');if(href){btn.attr('href',href)}else{btn.remove()}})},},ffMenu:{ready:function(){var touch=$('html').hasClass('touch');$(document).one('open.fndtn.offcanvas','[data-offcanvas]',function(){if(touch&&!$('#leftMenu').html()){ffJS.ffMenu.loadMenu('#leftMenu')}
if(touch&&!$('#rightMenu').html()){ffJS.ffMenu.loadMenu('#rightMenu')}});$(document).one('mouseover','#browseMenu',function(e){e.preventDefault();var menu=$('#browseMenu ul');var url=$(this).attr('data-ll-url');$.get(url,function(data){menu.html(data);$(document).foundation('topbar','reflow')},"html")})},loadMenu:function(menuId){var menu=$(menuId);var url=menu.attr('data-ll-url');$.get(url,function(data){menu.html(data);$(document).foundation('offcanvas','reflow');ffJS.ffLlb.ready(menu)},"html")}},ffFacebook:{fbp:{},baseUrl:'http://www.lucylooks.com',ready:function(){window.fbAsyncInit=function(){FB.init({appId:589859177821389,cookie:!0,xfbml:!0,version:'v2.4'})};(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="//connect.facebook.net/en_US/sdk.js";fjs.parentNode.insertBefore(js,fjs)}(document,'script','facebook-jssdk'));ffJS.log('Init facebook')},login:function(el){ffJS.log('Start facebook login');if(window.FB){window.FB.login(function(response){if(response.status==='connected'){ffJS.ffFacebook.doLogin(response)}else{ffJS.log('FB: Login problem')}},{scope:'public_profile,email'})}else{ffJS.log('FB: Facebook not contactable')}},doLogin:function(details){var url='/social-login';var user=details.authResponse.userID;window.FB.api('/me',{fields:'id,first_name,last_name,email,gender'},function(response){var obj={social:!0};var settings=$.extend(obj,response,details);$.fn.ffSocialLogin(settings)})},postToFeed:function(pid){FB.login(function(){FB.api('/me',{fields:'id,first_name,last_name,email,gender'},function(response){var uid=response.id;var options={published:!0}
ffJS.ffFacebook.postLink(response,pid,options)})},{scope:'publish_actions'})},postToPage:function(pid){FB.login(function(){FB.api('/me',{fields:'id,first_name,last_name,email,gender'},function(response1){var uid=response1.id;FB.api('/'+uid+'/accounts',function(response2){var pages=response2.data;for(var i=0;i<response2.data.length;i++){var page=response2.data[i];if(page.name=='LucyLooks'){var options={published:!0}
ffJS.ffFacebook.postLink(page,pid,options)}}})})},{scope:'publish_actions,manage_pages,publish_pages'})},postLink:function(target,pid,options){var pdata={access_token:target.access_token,message:$('#text-'+pid).val(),link:ffJS.ffFacebook.baseUrl+'/post/'+pid,}
$.extend(pdata,options);FB.api("/"+target.id+"/feed","POST",data,function(response){if(response&&!response.error){var ldata={'action':'log','ref_id':pid,'ref_type':'post','target':'facebook','target_data':JSON.stringify(data),'target_id':response.id,}
$.post('/admin/social-broadcast/',ldata,function(response){console.log(response);window.location='/admin/social-broadcast'})}else{console.log(response)}})},postAlbumPhotos:function(albumId,photos){for(var i=0;i<photos.length;i++){FB.api("/"+albumId+"/feed","POST",photos[i],function(response){if(response&&!response.error){console.log(response)}})}},postLookbookAsAlbum:function(lookbook){FB.login(function(response){console.log(response)},{scope:'publish_actions,manage_pages,publish_pages'})}},ffGoogle:{auth2:{},googleUser:{},setup:function(el){gapi.load('auth2',function(){ffJS.ffGoogle.auth2=gapi.auth2.init({client_id:'966256967348-2hut70i7cq8eqqjnnaofv5lbl14b36vm.apps.googleusercontent.com',cookiepolicy:'single_host_origin',});ffJS.ffGoogle.login(el)})},login:function(el){ffJS.ffGoogle.auth2.attachClickHandler(el[0],{},function(googleUser){ffJS.ffGoogle.doLogin()},function(error){$.fn.ffDialog({title:'Error logging in',message:'Google login encountered a problem'})})},doLogin:function(){var profile=ffJS.ffGoogle.auth2.currentUser.get().getBasicProfile();var details={provider:'google',id:profile.getId(),email:profile.getEmail(),};$.fn.ffSocialLogin(details)}},ffFunctions:{init:function(){$.ajaxSetup({crossDomain:!0,xhrFields:{withCredentials:!0},beforeSend:function(xhr){xhr.withCredentials=!0}});$(function(){$.xhrPool=[];$.xhrPool.abortAll=function(){$(this).each(function(i,jqXHR){jqXHR.abort();$.xhrPool.splice(i,1)})}
$.ajaxSetup({beforeSend:function(jqXHR){$.xhrPool.push(jqXHR)},complete:function(jqXHR){var i=$.inArray(jqXHR,$.xhrPool);if(i>-1)$.xhrPool.splice(i,1)}})});(function($){var re=/([^&=]+)=?([^&]*)/g;var decode=function(str){return decodeURIComponent(str.replace(/\+/g,' '))};$.parseParams=function(query){var params={},e;if(query){if(query.substr(0,1)=='?'){query=query.substr(1)}
while(e=re.exec(query)){var k=decode(e[1]);var v=decode(e[2]);if(params[k]!==undefined){if(!$.isArray(params[k])){params[k]=[params[k]]}
params[k].push(v)}else{params[k]=v}}}
return params}})(jQuery);$.fn.digits=function(){return this.each(function(){$(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"))})};$.fn.center=function(){this.css("position","absolute");this.css('top',parseInt(($(window).height()/2)+jQuery(document).scrollTop()-this.height()/2));this.css('left',parseInt(($(window).width()/2)+jQuery(document).scrollLeft()-this.width()/2));return this};$.fn.subData=function(prefix){var d=$('<div>');$(this.get(0).attributes).each(function(){if(this.name.indexOf('data-'+prefix)===0){d.attr(this.name.replace('data-'+prefix,'data').toLowerCase(),this.value)}});return d.data()};$.fn.slug=function(){return this.val().toLowerCase().replace(/^https?:\/\//,'').replace(/[\/\.]/g,' ').replace(/[^\w ]+/g,'').replace(/ +/g,'-')};$.fn.realSize=function(){var $img=this;if($img.prop('naturalWidth')==undefined){var $tmpImg=$('<img/>').attr('src',$img.attr('src'));console.log($tmpImg);$img.prop('naturalWidth',$tmpImg[0].width);$img.prop('naturalHeight',$tmpImg[0].height)}
return{'width':$img.prop('naturalWidth'),'height':$img.prop('naturalHeight')}};$.fn.realDimensions=function(parent){var clone=this.clone();clone.css({"visibility":"hidden",'position':'absolute','left':0});if(!parent){parent=this.parent()}
$(parent).append(clone);var dims={width:clone.outerWidth(),height:clone.outerHeight()};clone.remove();return dims};String.prototype.format=function(){var s=this;for(var i in arguments){if(typeof(arguments[i])=='object'){for(var j in arguments[i]){var reg=new RegExp("\\{"+j+"\\}","gm");s=s.replace(reg,arguments[i][j])}}else{var reg=new RegExp("\\{"+i+"\\}","gm");s=s.replace(reg,arguments[i])}}
return s};String.prototype.endsWith=function(suffix){return(this.substr(this.length-suffix.length)===suffix)};String.prototype.startsWith=function(prefix){return(this.substr(0,prefix.length)===prefix)};$.fn.messageText=function(code,options){if(ffJS.messages[code]){code=String(ffJS.messages[code]).format($.extend(ffJS.messageSubstitutions,options))}
return code};$.fn.ffTemplate=function(name,vars){if(vars){return ffJS.templates[name].format(vars)}else{return ffJS.templates[name]}};$.fn.ajaxResponse=function(form,data){var alertOnly=!1;var $m=!1;if(!form||form.length==0){alertOnly=!0}else{$m=form.find('.messages');if($m.length==0){alertOnly=!0}}
var s='';if(!alertOnly){form.find('label.ff-error').removeClass('ff-error');form.find('small.ff-error').remove();form.find('.messages').html('').removeClass('alert').removeClass('alert-danger').removeClass('alert-box').removeClass('alert-success')}
if(data.success&&data.message){var content=$.fn.messageText(data.message,data.params);if(data.popover){$.ffw.ffwPopover().hide(!0);setTimeout(function(){$.ffw.ffwPopover({show:!0,type:'success','contents':content})},100);return}else{if(alertOnly){$.ffw.ffwAlert({show:!0,type:'success','message':content});return}else{s=content}}}
var alertType="alert-success";if(data.formError&&data.formError!==!0){s='<p>'+$.fn.messageText(data.formError,data)+'</p>'}
if(data.formError||data.fieldErrors){alertType="alert"}
if(data.fieldErrors&&!alertOnly){for(var i in data.fieldErrors){var field=form.find("label[for="+i+"]");field.addClass('ff-error');field.parent().append('<small class="ff-error">'+$.fn.messageText(data.fieldErrors[i],data)+'</small>')}}
if(s.length>0){console.log(s);if(alertOnly){$.ffw.ffwAlert.error($.fn.messageText(s))}else{form.find(".messages").css({'opacity':0}).html($.fn.messageText(s)).addClass("alert-box").addClass(alertType).animate({'opacity':1},1000)}}
if(data.url){setTimeout(function(){self.location.href=data.url},1000)}};$.fn.refreshTimes=function(tIndex,debug){function getTimeAgo(tIndex,itemIndex){var secsAgo=Math.abs(tIndex-itemIndex);var months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];function pl(num,str){return num+(num==1?str.replace(/s\?/,''):str.replace(/s\?/,'s',str))}
if(secsAgo<5){return 'right now'}else if(secsAgo<60){return pl(secsAgo,' secs? ago')}else if(secsAgo<3600){return pl(Math.floor(secsAgo/60),' mins? ago')}else if(secsAgo<3600*24){return pl(Math.floor(secsAgo/3600),' hrs? ago')}else if(secsAgo<3600*24*7){return pl(Math.floor(secsAgo/(3600*24)),' days? ago')}else{var d=new Date(new Date().getTime()+((itemIndex-tIndex)*1000));var t=new Date();var suff='';if(t.getFullYear()!=d.getFullYear()){suff=', '+d.getFullYear()}
return months[d.getMonth()]+' '+d.getDate()+suff}
return secsAgo}
if(debug){console.log(tIndex,new Date(tIndex*1000),debug,new Date(debug*1000),getTimeAgo(tIndex,debug))}
$('[data-ff-time]').each(function(){$(this).text(getTimeAgo(tIndex,$(this).attr('data-ff-time')))})};$.fn.autoLinks=function(str){var pattern=/(((http[s]?:\/\/)|(www\.))(([-a-z0-9_]+\.)?[-a-z0-9_]+\.(\.[a-z_]{2,2})?)\/?[a-z0-9.,_\/~\(\)\':#&=;%+?-]+[_a-z0-9\/#=?]{1,1})/gi;return str.replace(pattern,' <a target="_blank" href="$1" rel="nofollow">$1</a>').replace(/href="www/,'href="http://www')};$.fn.youtubeId=function(url){var p=/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;return(url.match(p))?RegExp.$1:!1};$.fn.youtubeEmbed=function(id){return '<iframe src="http://www.youtube.com/embed/'+id+'" allowfullscreen></iframe>'};$.fn.getDomain=function(url){var a=document.createElement('a');a.href=url;return a.hostname};$.fn.getDomainLabel=function(url,wrapper){if(!wrapper){wrapper='<span class="via">via </span><span class="via-domain">{url}</span>'}
var d=$.fn.getDomain(url);if(d.match(/img\d+\.bdbphotos\.com/)){d='famousfix.com'}
return wrapper.format({url:d})};$.fn.autoImage=function(options){var imcache=[];var selector=this.selector;function addPhotoToComment(commentText,im){if(im.get(0).width<=0||im.get(0).height<=0){return !1}
var rat=im.get(0).width/im.get(0).height;var sh=$(window).scrollTop();var atBottom=$('body').attr('data-ff-bottom');var u=commentText.find("ul.ff-image-auto");if(u.length==0){u=$("<ul class='ff-image-auto'>").appendTo(commentText)}
var li=$("<li>");im.appendTo(li);im.wrap("<a>");li.find("a").attr({"href":im.attr("src"),"target":"_blank"});li.appendTo(u);var variance=Math.floor((1-((im.width()/im.height())/rat))*100);if(variance>80){li.remove();if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}
return !1}else{if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}}
return !0}
function imCheck(isLater){$(selector).each(function(){var commentText=$(this);$(this).find("a[rel=nofollow][href]:not([data-done])").each(function(){$(this).attr("data-done","true");var isrc=$(this).attr("href");var youtubeId=$.fn.youtubeId(isrc);if(isrc.match(/google\.com\/search/)){console.log("Ignoring "+isrc);return}
var link=$(this);if(youtubeId){$(this).replaceWith($.fn.youtubeEmbed(youtubeId));return}
if(!imcache[isrc]){var im=$("<img>");imcache[isrc]=im;im.load(function(){if($(this).get(0).height>=32&&im.get(0).width>=32){if(addPhotoToComment(commentText,im)){link.html($.fn.getDomainLabel(isrc)).addClass('offsite')}}});im.attr("src",$(this).attr("href"))}else{if(addPhotoToComment(commentText,imcache[isrc])){link.html($.fn.getDomain(isrc)).addClass('offsite')}}})});setTimeout(imCheckSecond,1000)}
function imCheckSecond(){return imCheck(!0)}
imCheck()};$.fn.ffDialog=function(data){function message(d,data){var timeout=(data.timeout?data.timeout:1500);d.html('<div class="small-12"><h2 id="ff-dialog-title"></h2><p class="lead"></p></div>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.close){d.append('<a class="close-reveal-modal" aria-label="Close">&#215;</a>')}
if(data.stayopen){d.foundation('reveal','open')}else{d.foundation('reveal','open');setTimeout(function(){d.foundation('reveal','close');if(data.url=='reload'){window.location.reload(!0)}else if(data.url){window.location.href=data.url}},timeout)}}
function confirm(d,data){d.html('<h2 id="ll-dialog-title"></h2><form><p class="lead"></p></form>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.buttons){d.append(data.buttons)}else{var cancel='<a class="cancel-confirm button secondary small right" aria-label="Cancel">Cancel</a>';var confirm='<button class="success small button right" type="submit">Confirm</button>';data.buttons=confirm+cancel}
d.html('<h2 id="ff-dialog-title">'+data.title+'</h2>'+'<form action='+data.url+'>'+'<p class="lead">'+data.message+'</p>'+data.buttons+'</form>');d.foundation('reveal','open');console.log('load');d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.cancel-confirm',function(e){e.preventDefault();e.stopPropagation();console.log('click');d.foundation('reveal','close')})}
function form(d,data){d.foundation('reveal','open',{url:data.url,data:data.params,multiple_opened:!1,success:function(){d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.close-reveal',function(e){e.preventDefault();e.stopPropagation();d.foundation('reveal','close')})},error:function(){alert('failed loading dialog box')}})}
var dForm=$('#ff-dialog-form');var dMessage=$('#ff-dialog-message');if(data.form){dForm.removeClass('open');dForm.hide();dForm.foundation('reveal','close');form(dForm,data)}else if(data.confirm){dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');confirm(dMessage,data)}else{dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');message(dMessage,data)}}
$.fn.ffUrl=function(name,getVars){var rootUrl='//fdata.whosdatedwho.com';var url={'trx':'//trx.whosdatedwho.com/trx','content-edit':rootUrl+'/content/edit','comment-add':rootUrl+'/comment/add','comment-delete':rootUrl+'/comment/delete','comment-list':rootUrl+'/comment/list','content-like':rootUrl+'/content/like','content-flag':rootUrl+'/content/flag','content-delete':rootUrl+'/content/delete','content-vote':rootUrl+'/content/vote','system-flags':rootUrl+'/system/flags','thread-list':rootUrl+'/thread/list','thread-latest':rootUrl+'/thread/list','user-register':rootUrl+'/register','user-forgot':rootUrl+'/forgot','user-login':rootUrl+'/login','user-logout':rootUrl+'/logout','social-login':rootUrl+'/social-login','facebook-share':'https://www.facebook.com/dialog/share','twitter-share':'https://twitter.com/intent/tweet','pinterest-share':'https://pinterest.com/pin/create/link/',};var getStr=(typeof getVars!=='undefined'?'?'+$.param(getVars):'');return url[name]+getStr}
$.fn.htmlEncode=function(value){return $('<div/>').text(value).html()};$.fn.htmlDecode=function(value){return $('<div/>').html(value).text()};$.fn.htmlStateStore=function(type){var $i=$('.data-ff-sss');var $e=$(this);var d={};if($i.is('[value]')&&$i.val()!=''){d=$.parseJSON($i.val())}
if(type=='auto'){if(!$e.attr('id')){$e=$e.closest('[id]')}
$e2=$e.clone();$e2.find('[data-ff--done]').removeAttr('data-ff--done');if(!('auto' in d)){d.auto={}}
d.auto[$e.attr('id')]=$e2.html()}
if(!type||type=='form'){var f=$(this).closest('form');if(f.length>0){if(f.attr('name')){d.formName=f.attr('name')}else if(f.attr('id')){d.formId=f.attr('id')}else{return}
d.form=f.serializeArray()}}
$i.val(JSON.stringify(d))};var restoreData=!1;$.fn.htmlStateRestore=function(getGroup,getId){var $i=$('.data-ff-sss');if(restoreData==!1){if($i.is('[value]')&&$i.val()!=''){restoreData=$.parseJSON($i.val())}}
if(getGroup&&getId){return(restoreData&&getGroup in restoreData&&getId in restoreData[getGroup]?restoreData[getGroup][getId]:!1)}else{var d=(restoreData?restoreData:{});$i.val('');$i.removeAttr('value');if('form' in d){var f;if('formName' in d){f=$('form[name="'+d.formName+'"]')}else if('formId' in d){f=$('form#'+d.formId)}
if(!f||f.length==0)return;for(var i in d.form){var fld=f.find('[name="'+d.form[i].name+'"]');fld.val(d.form[i].value)}
f.htmlStateStore('form');}
if('auto' in d){for(var i in d.auto){ffJS.log('Restore auto '+i+' to:',d.auto[i]);$('#'+i).html(d.auto[i]).removeAttr('data-ff--done').ffEnhance();$('#'+i).find('.ff-auto > .inputor').val('');$('#'+i).htmlStateStore('auto')}}}};$.fn.outerHTML=function(){return $('<div>').append($(this).clone()).html()};setTimeout('$.fn.htmlStateRestore()',500);$.fn.ffEnhance=function(){var $e=this;if(this.selector&&this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:enhance')}
$e.find('[data-ffw]').each(function(){ffJS.log('Enhance:',this);$(this).trigger('ff:enhance')})}
$.fn.ffRefresh=function(){var $e=this;if(this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:refresh')}
$e.find('[data-ffw]').each(function(){ffJS.log('Refresh:',this);$(this).trigger('ff:refresh')})}
$.fn.ffScrollStopped=function(callback,time){var time=time?time:250;var that=this,$this=$(that);$this.scroll(function(ev){clearTimeout($this.data('scrollTimeout'));$this.data('scrollTimeout',setTimeout(callback.bind(that),time,ev))})};$.fn.ffChangeParent=function(newParent,options){var oldParent=this.get(0);newParent=$(newParent).get(0);if(options&&options.exclude){$(options.exclude).data('ff-tmp-exclude',!0)}
this.children().each(function(){if(!$(this).data('ff-tmp-exclude')){newParent.appendChild(this)}else{$(this).data('ff-tmp-exclude',!1)}});return this};$.fn.ffAutogrow=function(){this.filter("textarea").each(function(){var $this=$(this),minHeight=$this.height(),shadow=$("<div></div>").css({position:"absolute",top:-10000,left:-10000,width:$(this).width(),fontSize:$this.css("fontSize"),fontFamily:$this.css("fontFamily"),lineHeight:$this.css("lineHeight"),resize:"none"}).addClass("shadow").appendTo(document.body),update=function(){var t=this;$(t).css('overflow-y','hidden');setTimeout(function(){var val=t.value.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&/g,"&amp;").replace(/\n/g,"<br/>&nbsp;");if($.trim(val)===""){val="a"}
shadow.html(val);$(t).css("height",Math.max(shadow[0].offsetHeight+20,minHeight));$(t).css('overflow-y','')},0)};$this.change(update).keyup(update).keydown(update).focus(update);update.apply(this)});return this}}},ffLlb:{ajaxform:function(el){el.on('submit',function(e){e.preventDefault();e.stopPropagation();$.ajax({url:$(this).attr('action'),form:$(this),method:'POST',data:$(this).serialize(),success:function(data){var d=JSON.parse(data);var url=d.url;if(typeof url=="undefined"){url=this.form.attr('data-ll-url')}
if(d.success){$.fn.ffDialog({message:d.message,url:url,stayopen:d.stayopen})}else{$.fn.ajaxResponse(this.form,d)}},error:function(){$.fn.ajaxResponse(this.form,{formError:'REQUEST_FAIL'})}})})},confirm:function(el){el.on('click',function(e){e.preventDefault();data={confirm:!0,title:$(this).data('llTitle'),message:$(this).data('llMessage'),close:!0,url:($(this).attr('href')?$(this).attr('href'):$(this).data('llUrl')),params:{dialog:!0,},}
$.fn.ffDialog(data)})},dialog:function(el){$(document).on('opened.fndtn.reveal','[data-reveal]',function(){ffJS.ffLlb.ready($(this))});$('body').off('click','[data-llb="dialog"]');$('body').on('click','[data-llb="dialog"]',function(e){e.preventDefault();data={form:!0,url:($(this).attr('href')?$(this).attr('href'):$(this).data('llUrl')),params:{pid:$(this).data('llPid'),dialog:!0,},}
$.fn.ffDialog(data)})},masonry:function(el){$(document).on('click','[data-llb="masonry-append"]',function(e){e.preventDefault();ffJS.ffMasonry.append($(this))});ffJS.ffMasonry.setup(el)},matrix:function(el){$(document).on('click','[data-llb="matrix-append"]',function(e){e.preventDefault();$.get($(this).attr('href'),function(data){items=$(data).find('.matrix-row');console.log(items);$('.matrix').append(items);href=$(data).find('.matrix-next-page a').first().attr('href');if(href){$(this).attr('href',href)}else{$(this).remove()}})})},search:function(el){el.on('input','input',function(e){searchTerm=$(this).val();var $dd=$(this).next('ul.f-dropdown');resultList="";$.ajax({url:$(this).attr('data-ll-url'),dataType:"json",crossDomain:!0,xhrFields:{withCredentials:!1},data:{term:searchTerm}}).then(function(response){$.each(response,function(i,item){var n=item.name.replace(/\-/,' ').substr(searchTerm.length);var o="user";if(item.object!="User"){o="topic"}
resultList+='<li data-id="'+item.id+'"><a href="'+item.dataurl+'">'+'<b>'+$('<div>').text(searchTerm).html()+'</b>'+$('<div>').text(n).html()+"</a></li>"});$dd.html("");$dd.html(resultList);if(resultList&&searchTerm){$dd.show();$dd.css({left:15})}else{$dd.hide();$dd.css({left:-9999})}})})},social:function(el){var social=el.data('llSocial');var action=el.data('llAction');switch(el.data('llSocial')){case 'facebook':el.on('click',function(e){e.preventDefault();ffJS.ffFacebook[action]($(this))});break;case 'google':ffJS.ffGoogle.setup(el);break}},ready:function(el){if(!el){el=$('body')}
el.find('[data-llb]').each(function(){var el=$(this);switch(el.attr('data-llb')){case 'ajaxform':ffJS.ffLlb.ajaxform(el);break;case 'confirm':ffJS.ffLlb.confirm(el);break;case 'dialog':ffJS.ffLlb.dialog(el);break;case 'masonry':ffJS.ffLlb.masonry(el);break;case 'matrix':ffJS.ffLlb.matrix(el);break;case 'search':ffJS.ffLlb.search(el);break;case 'social':ffJS.ffLlb.social(el);break}})}},ffResponses:{jsonResponse:function(form,data){var ap=form;ap.find('label.error').removeClass('error');ap.find('.messages').html('').removeClass('alert').removeClass('alert-danger');var s='';if(data.formError){s='<p>'+data.formError+'</p>'}
if(data.fieldErrors&&data.fieldErrors!=!1){s+='<ul>';for(var i in data.fieldErrors){ap.find("label[for="+i+"]").addClass('error');s+='<li>'+data.fieldErrors[i]+'</li>'}
s+='</ul>'}
if(s.length>0){ap.find(".messages").css({'opacity':0}).html(s).addClass("alert").addClass("alert-danger").animate({'opacity':1},1000)}}},ffUpload:{ready:function(){$('.ff-upload').each(function(){$(this).submit(function(e){e.preventDefault();var f=$(this);var formData=new FormData($(this)[0]);$.ajax({url:$(this).attr('action'),type:'POST',data:formData,cache:!1,dataType:'json',processData:!1,contentType:!1,success:function(d){var url=d.url;if(typeof url=="undefined"){url=f.attr('data-ff-url')}
if(d.success){$.fn.ffDialog({message:d.message,url:url,stayopen:d.stayopen})}else{$.fn.ajaxResponse(f,d)}},error:function(jqXHR,textStatus,errorThrown){$.fn.ajaxResponse(f,{formError:'USER.UPLOAD_FAIL'})}});return !1});$(this).find('[type="file"]').change(function(){var file=$(this).get(0).files[0];var el=$('#'+$(this).attr('data-ff-targetid'));if(el.get(0).tagName=='IMG'){var div=$('<div id="'+$(this).attr('data-ff-targetid')+'">');el.replaceWith(div)}
el.html('');ffJS.ffUpload.displayAsImage(file,$(this).attr('data-ff-targetid'))})})},displayAsImage:function(file,containerid){if(typeof FileReader!=="undefined"){var container=document.getElementById(containerid),img=document.createElement("img"),reader;container.appendChild(img);reader=new FileReader();reader.onload=(function(theImg){return function(evt){theImg.src=evt.target.result}}(img));reader.readAsDataURL(file)}},},ffLivecomments:{rfcStop:!1,inSearchMode:!1,rfcLast:new Date(),getUrl:function(params,url){var form=ffJS.ffLivecomments.form;if(!url){url=ffJS.ffLivecomments.url.list}
var s=url+'?'+$.param($.extend({ptype:"json",type:form.find('[name=type]').val(),tid:form.find('[name=tid]').val(),replyId:"",commentId:$('[data-ff-chat] [data-ff-id]:first').attr('data-ff-id'),id:form.find('[name=id]').val(),url:form.find('[name=url]').val(),limit:form.find('[name=limit]').val()},params));return s},rfc:function(refreshed){if(this.inSearchMode){return}
if(refreshed){this.rfcLast=new Date();$("[data-ff-inactive]").hide();this.rfcStop=!1}
var tdiff=new Date()-this.rfcLast;tdiff=tdiff/1000;tdiff=Math.floor(tdiff/60);if(Math.floor(tdiff%60)>ffJS.ffLivecomments.timeout){this.rfcStop=!0;$("[data-ff-inactive]").show();return}
if(this.rfcStop)return;$("[data-ff-updating]").show().css({opacity:0}).animate({opacity:1},100);var form=ffJS.ffLivecomments.form;$.ajax({url:ffJS.ffLivecomments.getUrl({commentId:$('[data-ff-chat] [data-ff-id]:first').attr('data-ff-id')}),dataType:"json",success:function(data){if(ffJS.ffLivecomments.inSearchMode)return;ffJS.ffLivecomments.updateResponse(data,!1);setTimeout(function(){ffJS.ffLivecomments.rfc()},ffJS.ffLivecomments.interval);$("[data-ff-updating]").animate({opacity:0},2000)},error:function(){$("[data-ff-updating]").animate({opacity:0},2000);setTimeout(function(){ffJS.ffLivecomments.rfc()},ffJS.ffLivecomments.interval)}})},updateResponse:function(data,appendMode){if(data.count){$('[data-ff-count]').text(data.count).digits();$('[data-ff-count-message]').each(function(){if(data.count>parseInt($(this).attr('data-ff-count-message'))){$(this).show()}})}
if(data.comments){var idx=0;var end=data.comments.length;while(idx<end){idx++;var i=(appendMode?(idx-1):(end-idx));var c=data.comments[i];if($('[data-ff-id="'+c.id+'"]').length>0){continue}
var cel=$(ffJS.ffLivecomments.tpl).clone();cel.attr('data-ff-id',c.id);cel.find('[data-ff-cid]').text('#'+c.id);cel.find('[data-ff-time]').attr('data-ff-time',c.time).html('');cel.find('[data-ff-text]').html($.fn.autoLinks(c.text));cel.find('[data-ff-webname]').html(c.webname);cel.find('[data-ff-user]').attr('href',cel.find('[data-ff-user]').attr('data-ff-user').format(c));cel.find('[data-ff-image]').attr('href',c.link);if(c.owner){cel.find('[data-ff-not-owner]').remove()}else{cel.find('[data-ff-owner]').remove()}
cel.find('[data-ff-liked]').attr((c.liked?'1':''));if(c.image){cel.find('[data-ff-image]').html('<img>').find('img').attr({'src':c.image,'width':'16px','height':'16px'})}
if(appendMode){cel.appendTo(ffJS.ffLivecomments.cont)}else{cel.prependTo(ffJS.ffLivecomments.cont)}
cel.show()}}
if(data.time){$.fn.refreshTimes(data.time)}},form:null,tpl:null,cont:null,interval:10000,timeout:10,url:{'add':'/comment/add','delete':'/comment/delete','list':'/comment/list','like':'/content/like','flag':'/content/flag'},done:!1,ready:function(){if(ffJS.ffLivecomments.done){return}
ffJS.ffLivecomments.done=!0;$('[data-ff="livecomments"]').each(function(){for(var i in ffJS.ffLivecomments.url){ffJS.ffLivecomments.url[i]='//fdata.whosdatedwho.com'+ffJS.ffLivecomments.url[i]}
console.log('//fdata.whosdatedwho.com');console.log(ffJS.ffLivecomments.url);$('[data-ff-text]').each(function(){$(this).html($.fn.autoLinks($(this).html()))});$('[data-ff-auto-image]').autoImage();$('body').on('custom','[data-ff-liked],[data-ff-flagged]',function(){if($(this).attr('data-ff-liked')==1||$(this).attr('data-ff-flagged')==1){$(this).addClass($(this).attr('data-ff-on-class'))}else{$(this).removeClass($(this).attr('data-ff-on-class'))}});$('[data-ff-liked=1],[data-ff-flagged=1]').trigger('custom');ffJS.ffLivecomments.form=$(this).find('form[data-ff-add]');ffJS.ffLivecomments.tpl=$(this).find('[data-ff-template]');ffJS.ffLivecomments.cont=$(this).find('[data-ff-chat]');ffJS.ffLivecomments.interval=parseInt($(this).attr('data-ff-interval'));ffJS.ffLivecomments.timeout=parseInt($(this).attr('data-ff-timeout'));ffJS.ffLivecomments.form.find('[name=commentId]').val($('[data-ff-chat] [data-ff-id]:first').attr('data-ff-id'));if($(this).is('[data-ff-focus]')){ffJS.ffLivecomments.form.find('[name=comment]').focus()}
$("body").bind("mousemove click keyup","body",function(e){ffJS.ffLivecomments.rfcLast=new Date();if(ffJS.ffLivecomments.rfcStop){ffJS.ffLivecomments.rfc(!0)}});$('body').on('keyup','[data-ff-flag-box] [name=reason]',function(){if($(this).val()!=''){$(this).closest('[data-ff-flag-box]').find('[name=flag]').find('option[value=""]').attr('selected','selected')}});$('body').on('change','[data-ff-flag-box] [name=flag]',function(){if($(this).val()!=''){$(this).closest('[data-ff-flag-box]').find('[name=reason]').val('')}});$('body').on('submit','[data-ff-flag-box] form',function(e){if($(this).closest('[data-ffw]').length>0){return}
e.preventDefault();var form=$(this);var el=$(this).closest('[data-ff-id]');$.ajax({url:ffJS.ffLivecomments.getUrl({commentId:el.attr('data-ff-id')},ffJS.ffLivecomments.url.flag),data:form.serializeArray(),dataType:'json',method:'POST',success:function(data){$.fn.ajaxResponse(form,data);if(data.success){el.find('[data-ff-flagged]').attr('data-ff-flagged',1).trigger('custom');form.closest('[data-ff-flag-box]').hide()}}})});$('body').on('submit','[data-ff-search]',function(e){e.preventDefault();ffJS.ffLivecomments.inSearchMode=!0;var data={page:2,commentId:''};$.each($(this).serializeArray(),function(){data[this.name]=this.value});infScroll(ffJS.ffLivecomments.getUrl(data));$.ajax({url:ffJS.ffLivecomments.getUrl({commentId:''}),data:$(this).serializeArray(),dataType:'json',success:function(data){ffJS.ffLivecomments.cont.html('');ffJS.ffLivecomments.updateResponse(data,!1)}})});$('[data-ff-search-close]').click(function(){ffJS.ffLivecomments.inSearchMode=!1;ffJS.ffLivecomments.cont.html('');ffJS.ffLivecomments.rfc(!0);infScroll()});$('body').on('click',':not([data-ffw]) [data-ff-delete]',function(e){e.preventDefault();$.xhrPool.abortAll();var el=$(this).closest('[data-ff-id]');var form=$(this).closest('form');$.ajax({url:ffJS.ffLivecomments.getUrl({commentId:el.attr('data-ff-id')},ffJS.ffLivecomments.url.delete),type:"POST",dataType:'json',success:function(data){$('body').delay(500).clearQueue().queue(function(){$.fn.ajaxResponse(form,data);ffJS.ffLivecomments.updateResponse(data,!1);if(data.success){el.animate({opacity:0},500,function(){$(this).remove()})}})},error:function(jqXHR,textStatus,errorThrown){$.fn.ajaxResponse(form,{formError:xhr.responseText})}})});ffJS.ffLivecomments.form.find("textarea").keyup(function(e){if(e.keyCode==13){if($("#ff-subenter").prop("checked")){e.preventDefault();$(this).closest("form").submit()}}});setTimeout(function(){ffJS.ffLivecomments.rfc()},ffJS.ffLivecomments.interval);var hasInf=!1;function infScroll(url){if($('.ff-next a').length==0){return}
if(!url){url=ffJS.ffLivecomments.getUrl({page:2,commentId:''})}
$('.ff-next a').attr('href',url);if(hasInf){ffJS.ffLivecomments.cont.infinitescroll('destroy');ffJS.ffLivecomments.cont.data('infinitescroll',null)}
hasInf=!0;ffJS.ffLivecomments.cont.infinitescroll({navSelector:'.ff-next',contentSelector:'[data-ff-chat]',nextSelector:".ff-next a",itemSelector:".ff-comment-item",pathParse:function(path){if(path.match(/^(.*?page=)2([\/\&].*|$)/)){path=path.match(/^(.*?page=)2([\/\&].*|$)/).slice(1);return path}
return[]},bufferPx:350,debug:!1,dataType:'json',appendCallback:!1,loading:{speed:0,msg:$('<div id="infscr-loading" style="text-align:center;margin-top:20px;margin-bottom:20px;"><img alt="Loading..." src="//static.famousfix.com/www/images/ajax-loader-fff.gif"></div>')}},function(json,opts){ffJS.ffLivecomments.updateResponse(json,!0)})}
if($('.ff-next a').length>0){infScroll(ffJS.ffLivecomments.getUrl({page:2,commentId:''}))}
$('[data-ff-refresh]').click(function(e){e.preventDefault();ffJS.ffLivecomments.rfc(!0)});$(this).on('click','[data-ff-liked]',function(e){e.preventDefault();var likeVal=($(this).hasClass($(this).attr('data-ff-on-class'))?0:1);var form=$(this).closest('form');var data=[{name:'id',value:$(this).closest('[data-ff-id]').attr('data-ff-id')},{name:'like',value:likeVal}];var el=$(this);$.ajax({url:ffJS.ffLivecomments.url.like,method:'post',dataType:'json',data:data,success:function(data){if(data.success){el.attr('data-ff-liked',likeVal);el.trigger('custom')}
$.fn.ajaxResponse(ffJS.ffLivecomments.form,data)}})});ffJS.ffLivecomments.form.submit(function(e){e.preventDefault();var c=$(this).find('[name=comment]');if(c.val().length>0){$('.ff-chatbox button').attr({title:'Processing...','disabled':!0}).css({'backgroundColor':'#ccc','borderColor':'#ccc'});ffJS.ffLivecomments.form.find('[name=commentId]').val($('[data-ff-chat] [data-ff-id]:first').attr('data-ff-id'));$.ajax({url:ffJS.ffLivecomments.url.add,method:'POST',dataType:'json',data:ffJS.ffLivecomments.form.serializeArray(),success:function(data){$('.ff-chatbox button').attr({title:'','disabled':!1}).css({'backgroundColor':'','borderColor':''});$.fn.ajaxResponse(ffJS.ffLivecomments.form,data);ffJS.ffLivecomments.updateResponse(data,!1);if(data.success){c.val('');ffJS.ffLivecomments.form.find('[name=comment]').focus()}},error:function(xhr){$('.ff-chatbox button').attr({title:'','disabled':!1}).css({'backgroundColor':'','borderColor':''});$.fn.ajaxResponse(ffJS.ffLivecomments.form,{formError:xhr.responseText})}})}})})}},ffMasonrytmp:{masonry:{},setup:function(masonry){ffJS.ffMasonrytmp.masonry=masonry;if(masonry.length>0){masonry.isotope({itemSelector:'.masonry-item',layoutMode:'masonry',transitionDuration:0,transformsEnabled:!1,containerStyle:{position:'relative'},});if($(window).width()>1050){$('[data-llb="masonry-append"]').click()}}},append:function(btn){$.get(btn.attr('href'),function(data){items=$(data).find('.masonry-item');ffJS.ffMasonrytmp.masonry.append(items).isotope('appended',items);href=$(data).find('.masonry-next-page a').first().attr('href');if(href){btn.attr('href',href)}else{btn.remove()}})},ready:function(el){if(!el){el=$('body')}
el.find('[data-llb]').each(function(){var el=$(this);switch(el.attr('data-llb')){case 'masonry':ffJS.ffMasonrytmp.setup(el);break}})}},ffDataff:{inject:function(el){$(el).find('[data-fft]').each(function(){if(ffJS.ffDataff.templates[$(this).attr('data-fft')]){$(this).html(ffJS.ffDataff.templates[$(this).attr('data-fft')])}})},req:null,cleanHtml:function(h){var trim=h.match(/^(\s+)/);if(trim&&trim.length>0){if(trim.length>0){h=h.replace(new RegExp(trim[1]),'');h=h.replace(new RegExp(trim[1],'g'),"\n")}}
return h},devCode:function(el,title){var h=el.html();var h2=$('<div>'+h+'</div>');h2.find('gen').remove();h=h2.html().trim().replace(/=""/g,'');var gother=el.find('gen');var gen=$('<gen>');$('<h4>').text(title).appendTo(gen);$('<pre class="ff-code">').text(h).appendTo(gen);var pre=gen.find('pre').clone().html().replace(' class="ff"','');if(gother.length>0){}
if(gother.length>0&&pre==gother.find('pre').html()){gother.find('h4').remove()}else{gen.appendTo(el)}},content:function(){},dmenu:function(el){if(el.data('done')==!0){return}
el.data('done',!0);function setParentHtml(elSource,elParent){if(!elSource){return}
elParent.show();elParent=elParent.find('table');var idx=elSource.closest('td').index();var ridx=elSource.closest('tr').index();if(idx<0)return;var sTbl=elSource.closest('table');var pHeaders=elParent.find('thead tr');if(pHeaders.length==0){pHeaders=$('<tr>');pHeaders.appendTo(elParent.find('thead'))}
var h=sTbl.find('thead tr th:nth-child('+(idx+1)+')');pHeaders.find('th').each(function(){if(!h)return;if($(this).text()==h.text()){var e=elSource.closest('td');elParent.find('tr td:nth-child('+($(this).index()+1)+')').removeClass('active');e.addClass('active');h=!1}});if(h){var pBody=elParent.find('tbody');h.clone().css('width','auto').appendTo(pHeaders);sTbl.find('tbody tr').each(function(){var pRow=pBody.find('tr:nth-child('+($(this).index()+1)+')');if(pRow.length==0){pRow=$('<tr>').appendTo(pBody)}
var e=$(this).find('td:nth-child('+(idx+1)+')').clone().appendTo(pRow);if(pRow.index()==ridx){e.addClass('active')}});elParent.find('tbody tr').each(function(){var r=$(this);pHeaders.find('th').each(function(){if(!r.find('td:nth-child('+($(this).index()+1)+')').length){$('<td>&nbsp;</td>').appendTo(r)}})})}
elParent.attr('data-ff-target',elSource.closest('[data-ff-target]').attr('data-ff-target'));if(!elParent.is('[data-done]')){ffJS.ffDataff.dmenu(elParent);elParent.on('click','tbody tr td a',function(){var td=$(this).closest('td');while(td&&td.length>0){td=td.next();if(td&&td.length>0){elParent.find('thead tr th:nth-child('+(td.index()+1)+')').remove();elParent.find('tbody tr td:nth-child('+(td.index()+1)+')').remove()}}})}}
function load(link,target,linkEl){var tn=el.attr('data-ff-target');if(!tn){tn=el.closest('[data-ff-target]').attr('data-ff-target')}
var t=$(tn);var w=0;var p;if(t.is('[data-ff-target-parent]')){p=$(t.attr('data-ff-target-parent'));setParentHtml(linkEl,p)}
if(t.attr('data-ff-target')){$(t.attr('data-ff-target')).html('<tr><td>loading...</td></tr>')}
if(target){t=target}
t.width(200);t.html('<tr><td><br><small>loading...</small></td></tr>');t.attr('data-ff-last-link',link);var data={};$('[data-ff-value]').each(function(){data[$(this).attr('name')]=$(this).attr('value')});if(ffJS.ffDataff.req){ffJS.ffDataff.req.abort()}
ffJS.ffDataff.req=$.ajax({url:link,method:'POST',data:data,success:function(data){w=0;if(p&&p.length){w=screen.width-p.width()-60;t.width(100)}
t.html(data);if(w){t.width(w)}
ffJS.ffDataff.ready(t);if(w){t.find('.dataTables_wrapper').width(w)}}})}
el.on('change','th .ff-check',function(){el.find('td .ff-check').prop('checked',$(this).prop('checked'))});el.on('click','thead a',function(e){e.preventDefault();load($(this).attr('href'),el)});el.on('click','li > a,tbody a',function(e){if($(this).attr('href').startsWith('#')){e.preventDefault();$(this).closest('li,[data-ff-dlink]').siblings().removeClass('active');$(this).closest('li,[data-ff-dlink]').addClass('active');load($(this).attr('href').substring(1),!1,$(e.target))}else{}});el.on('click','tbody td',function(e){var a=$(this).find('a');if(a.length>0&&e.target.tagName=='TD'){e.preventDefault();a.click()}});el.on('click','[data-ff-dlink]',function(e){if(e.target.tagName=='A'&&$(e.target).is('[data-ff-dlink]')){if($(e.target).attr('href').startsWith('#')){e.preventDefault();load($(e.target).attr('href').substring(1));$(this).closest('dd').siblings().removeClass('active');$(this).closest('dd').addClass('active')}}else{e.preventDefault();var cb=$(this).closest('tr').find('input.ff-check');if($(this).attr('data-ff-dlink').length>0||cb.length>0){if(cb.length==0){$(this).siblings().removeClass('active')}
$(this).addClass('active');if(cb.length){cb.prop('checked',!cb.prop('checked'))}else{load($(this).attr('data-ff-dlink'))}}}})},ready:function(el){if(!el){el=$('body')}
el.find('[data-ff]').each(function(){var el=$(this);switch(el.attr('data-ff')){case 'dmenu':ffJS.ffDataff.dmenu(el);if(el.get(0).tagName=='TABLE'){var p=$(this).hasClass('ff-detailed');var opts={paginate:!1,info:!1,order:!1};if(p){opts.language={search:"_INPUT_",searchPlaceholder:"Search records"};opts.fixedHeader={header:!0,footer:!1};opts.order=[];opts.columnDefs=[{orderable:!1,targets:0}]}else{opts.searching=!1;opts.ordering=!1}
el.dataTable(opts)}
break;case 'ajax':ffJS.ffDataff.req=$.ajax({url:el.attr('data-ff-url'),success:function(data){el.html(data);ffJS.ffDataff.ready(el)}});break;case 'coptions':ffJS.ffDataff.contentOptions(el);break;case 'devcode':ffJS.ffDataff.devCode(el,'Before:');break}})},readyFirst:function(el){el.find('[data-ff="devcode"],[data-ff="code"]').each(function(){$(this).html(ffJS.ffDataff.cleanHtml($(this).html()))})},readyLast:function(el){if(!el){el=$('body')}
el.find('[data-ff]').each(function(){$(this).addClass('ff');var el=$(this);switch(el.attr('data-ff')){case 'devcode':ffJS.ffDataff.devCode(el,'After:');break;case 'code':el.addClass('ff-code');break}})},},ffEvents:{getTarget:function(elSource){var target=!1;elSource=$(elSource);var el=elSource;if(elSource.attr('data-ff-target')){el=$(elSource.attr('data-ff-target'));target=!0}
if(elSource.attr('data-ff-target-closest')){el=el.closest(elSource.attr('data-ff-target-closest'));target=!0}
if(elSource.attr('data-ff-target-siblings')){el=el.siblings(elSource.attr('data-ff-target-siblings'));target=!0}
if(target&&el.length){return el}
return $({})},ready:function(){$('body').on('click','[data-ff="toggle"]',function(e){e.preventDefault();ffJS.ffEvents.getTarget(this).each(function(){$(this).toggle()})});$('body').on('click','[data-ff="show"]',function(e){e.preventDefault();ffJS.ffEvents.getTarget(this).each(function(){$(this).show()})});$('[data-ff="datepicker"]').each(function(){$(this).datepicker({todayHighlight:!0,dateFormat:"yy-mm-dd",autoclose:!0})});$('body').on('focus','[data-ff="autogrow"]:not(.ff-autogrow-loaded)',function(e){$(e.target).autoGrow();$(e.target).addClass('ff-autogrow-loaded')})}},ffFfAdhoc:{switcher:function(){$('body').on('click','[data-ff-switch-platform]',function(e){var pl=$(this).attr('data-ff-switch-platform');$.cookie('pl',pl,{domain:'.whosdatedwho.com',path:'/'});e.preventDefault();self.location.reload(!0)})},checkbox:function(){$('[data-ff-checkbox]').change(function(){if($(this).attr('data-ff-target-on')){var t=$($(this).attr('data-ff-target-on'));if($(this).val()){t.show()}else{t.hide()}}})},topicRebuild:function(){$('[data-ff-topic-rebuild]').each(function(){var c=$('body');if(c.attr('data-ff-url')){$.ajax({url:"//fdata.whosdatedwho.com/services/autotext-regen/"+c.attr('data-ff-url'),dataType:"json",xhrFields:{withCredentials:!1},success:function(data){}})}})},async:function(){$('[data-ff-async]').each(function(){var sc=0;var h=$(this).html();sc=(h.match(/<script/g)||[]).length;var newParent=$($(this).attr('data-ff-async')).get(0);var oldParent=$(this).get(0);while(oldParent.childNodes.length>0){newParent.appendChild(oldParent.childNodes[0])}})},ready:function(){ffJS.ffFfAdhoc.topicRebuild();ffJS.ffFfAdhoc.checkbox();ffJS.ffFfAdhoc.switcher()}},ffFfBrowser:{check:function(){var agent=navigator.userAgent,tem;var M=agent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];var vals={brand:'',version:''};if(/trident/i.test(M[1])){tem=/\brv[ :]+(\d+)/g.exec(agent)||[];vals={brand:'IE',version:(tem[1]||'')}}else{tem=agent.match(/\b(OPR|Edge)\/(\d+)/)
if(M[1]==='Chrome'&&tem){M=tem.slice(1).join(' ').replace('OPR','Opera').split(' ')}else{M=M[2]?[M[1],M[2]]:[navigator.appName,navigator.appVersion,'-?'];if((tem=agent.match(/version\/(\d+)/i))!=null){M.splice(1,1,tem[1])}}
vals={brand:M[0],version:M[1]}}
return vals},ready:function(el){var browser=ffJS.ffFfBrowser.check();if(!ffJS.messages['BROWSER.'+browser.brand.toUpperCase()]){browser.ok=!1}else if(parseInt(ffJS.messages['BROWSER.'+browser.brand.toUpperCase()])<=parseInt(browser.version)){browser.ok=!1}else{browser.ok=!0}
el.find('[data-ff-browser-ok]').each(function(e){if(!browser.ok){e.preventDefault();alert('browser invalid')}});el.find('[data-ff-browser-check]').each(function(){if(!ffJS.messages['BROWSER.'+browser.brand.toUpperCase()]){$(this).css('display','inline-block');$(this).html($.fn.messageText('BROWSER.BRAND',{browser:browser.brand+' '+browser.version}))}else if(parseInt(ffJS.messages['BROWSER.'+browser.brand.toUpperCase()])<=parseInt(browser.version)){$(this).css('display','inline-block');$(this).html($.fn.messageText('BROWSER.VERSION',{browser:browser.brand}))}else{$(this).css('display','none');$(this).html('')}})}},ffFfHistory:{checkHash:function(){var url=self.location.href;var hidx=url.indexOf("#");if(hidx>0){var hash=url.substring(hidx+1);var hi=hash.split(',');for(var i in hi){var item=hi[i];var f=item.split(':');switch(f[0]){case 'clk':$(f[1]).trigger('ffw:click');break}}}else{$('body').trigger('ffw:history')}},ready:function(el){window.addEventListener('popstate',function(event){ffJS.ffFfHistory.checkHash()});el.on('click','[data-ff-history="back"]',function(e){e.preventDefault();history.go(-1)})},readyLast:function(){setTimeout(function(){ffJS.ffFfHistory.checkHash()},10)}},ffFfReadmore:{ready:function(el){el.find('[data-ff-readmore]').each(function(){$(this).addClass('ff-has-readmore');$(this).readmore({collapsedHeight:$(this).attr('data-ff-readmore')-10,moreLink:'<a class="ff-readmore ff-readmore-open" style="width:51%" href="#">Read more &raquo;</a>',lessLink:'<a class="ff-readmore ff-readmore-close" href="#">&laquo; Less</a>',})})}},ffFfSortable:{sortable:function(el){Sortable.create(el,{group:"words",animation:150,store:{get:function(sortable){var order=localStorage.getItem(sortable.options.group);return order?order.split('|'):[]},set:function(sortable){var order=sortable.toArray();localStorage.setItem(sortable.options.group,order.join('|'))}},onAdd:function(evt){console.log('onAdd.foo:',[evt.item,evt.from])},onUpdate:function(evt){console.log('onUpdate.foo:',[evt.item,evt.from])},onRemove:function(evt){console.log('onRemove.foo:',[evt.item,evt.from])},onStart:function(evt){console.log('onStart.foo:',[evt.item,evt.from])},onSort:function(evt){console.log('onStart.foo:',[evt.item,evt.from])},onEnd:function(evt){console.log('onEnd.foo:',[evt.item,evt.from])}})},ready:function($el){$el.on('ff:enhance','[data-ffw="sortable"]',function(){ffJS.ffFfSortable.sortable(this)}).trigger('ff:enhance')}},ffFfToggle:{ready:function(el){el.find('[data-ff-toggle]').click(function(){});el.on('click','[data-ff-toggle]',function(e){e.preventDefault();var t;if($(this).attr('data-ff-toggle')){t=$('body').find($(this).attr('data-ff-toggle')).not('span');s=$('body').find('span'+$(this).attr('data-ff-toggle'))}
if(!s&&(!t||t.length==0)){t=$(this)}
var speed=0;if($(this).attr('data-ff-speed')){speed=parseInt($(this).attr('data-ff-speed'))}
console.log(s);console.log(t);if(s){s.toggle()}
t.slideToggle(speed);t.ffRefresh();if($(this).is('[data-ff-scroll]')){if($(this).attr('data-ff-scroll')){$('body').animate({scrollTop:$(this).attr('data-ff-scroll'),},speed),$(this).attr('data-ff-scroll','')}else{$(this).attr('data-ff-scroll',$('body').scrollTop())}}});el.on('click','[data-ff-toggle-open]',function(e){var t;if($(this).attr('data-ff-toggle-open')){t=$('body').find($(this).attr('data-ff-toggle-open')).not('span');s=$('body').find('span'+$(this).attr('data-ff-toggle-open'))}
if(!t||t.length==0){t=$(this)}
var speed=0;if($(this).attr('data-ff-speed')){speed=parseInt($(this).attr('data-ff-speed'))}
if(s){s.toggle()}
t.slideDown(speed);t.ffRefresh()})}},ffFfTouch:{ready:function(el){el.find('[data-ff-swipe="click"]').each(function(){var $inst=$(this);$(this).hammer().bind('swipe',function(e){console.log(e);switch(e.gesture.direction){case 2:$inst.find($inst.attr('data-ff-left')).click();break;case 4:$inst.find($inst.attr('data-ff-right')).click();break}})})}},ffFfb:{firstTime:!0,settings:{rootUrl:'//fdata.whosdatedwho.com',url:{'comment-add':'/comment/add','comment-delete':'/comment/delete','comment-list':'/comment/list','content-like':'/content/like','content-flag':'/content/flag','system-flags':'/system/flags','thread-list':'/thread/list','thread-latest':'/thread/list',},},lookupCache:[],lookup:function(name,func){if(!ffJS.ffFfb.lookupCache[name]){$.ajax({url:ffJS.ffFfb.settings.url[name],dataType:'json',success:function(data){ffJS.ffFfb.lookupCache[name]=data;func(data)}})}else{func(ffJS.ffFfb.lookupCache[name])}},contentUrl:function(el,urlname){var c=el.closest('[data-ff-id]');if(!c.length){return !1}
var cdata=c.subData('ff');if(ffJS.ffFfb.settings.url[urlname]){urlname=ffJS.ffFfb.settings.url[urlname]}
if(cdata){urlname+='?'+$.param(cdata)}
return urlname},contentActions:function(el){if(!$('body').data('ff-content-actions-loaded')){$('body').data('ff-content-actions-loaded',1);$('body').on('custom','[data-ffw] [data-ff-liked],[data-ff-flagged]',function(){if($(this).attr('data-ff-liked')==1||$(this).attr('data-ff-flagged')==1){$(this).addClass($(this).attr('data-ff-on-class'))}else{$(this).removeClass($(this).attr('data-ff-on-class'))}});ffJS.ffFfb.contentFlag(el)}
el.find('[data-ff-liked=1],[data-ff-flagged=1]').trigger('custom')},addLookupOptions:function(lookupName,el,options){if(el.data('done'))return;el.data('done',1);ffJS.ffFfb.lookup(lookupName,function(data){var opt=el.find('option:first');for(var i in data){var o=$('<option>');if(!options.textOnly){o.attr('value',i)}
o.text(data[i]);opt.after(o)}})},contentFlag:function(el){$('body').on('click','[data-ffw] [data-ff-flagged]',function(e){var el=$(this).closest('[data-ffw="content.actions"]');var sel=el.find('[data-ff-flag-box] select');ffJS.ffFfb.addLookupOptions('system-flags',sel,{'textOnly':!0})});$('body').on('keyup','[data-ffw] [data-ff-flag-box] [name=reason]',function(){if($(this).val()!=''){$(this).closest('[data-ff-flag-box]').find('[name=flag]').find('option[value=""]').attr('selected','selected')}});$('body').on('change','[data-ffw] [data-ff-flag-box] [name=flag]',function(){if($(this).val()!=''){$(this).closest('[data-ff-flag-box]').find('[name=reason]').val('')}});$('body').on('submit','[data-ffw] [data-ff-flag-box] form',function(e){e.preventDefault();var form=$(this);var el=$(this).closest('[data-ff-id]');$.ajax({url:ffJS.ffFfb.contentUrl(form,'content-flag'),data:form.serializeArray(),dataType:'json',method:'POST',success:function(data){$.fn.ajaxResponse(form,data);if(data.success){el.find('[data-ff-flagged]').attr('data-ff-flagged',1).trigger('custom');form.closest('[data-ff-flag-box]').hide()}}})})},ready:function(el){if(!el){el=$('body')}
el.find('[data-ffw]').each(function(){var e=$(this);$(this).addClass('ff');switch(e.attr('data-ffw')){case 'content.actions':ffJS.ffFfb.contentActions(e);break}})},init:function(){for(var i in ffJS.ffFfb.settings.url){ffJS.ffFfb.settings.url[i]=ffJS.ffFfb.settings.rootUrl+ffJS.ffFfb.settings.url[i]}}},ffFfmediaOLD:{parUrl:!1,media:function(el){var a=!1;el.on('keypress paste','[data-ffw="content.media"] input.ff-media-link',function(e){if(e.keyCode==13){if(a){a.abort()}
var c=$(this).closest('[data-ffw="content.media"]').find('.ff-media-list');c.attr('data-ff-url',$(this).val());a=$.ajax({url:'/media/get',dataType:'json',data:{url:$(this).val()},success:function(data){console.log(data,this);var t=data.title;if(data.text){t=data.text}
if(!t){t=data.source}
var h='';if(data.images){h='<div class="ff-help">Click an image to add <span>'+$.fn.getDomainLabel(t,'{url}')+'</span></div>';for(var i in data.images){var im=data.images[i];h+='<div class="ff-media-img"><span></span><div class="icon-ok selector pointer"></div><div class="img-wrap"><img class="pointer" src="'+im+'"></div></div>'}}
$(h).appendTo(c);}});e.preventDefault()}});el.on('click','.ff-media-list .ff-media-img',function(){$(this).find('.selector').toggle();var p=$(this).closest('.ff-media-list').attr('data-ff-url');$.ajax({url:'/media/cache',data:{url:$(this).find('img').attr('src'),parent:p},success:function(data){}})})},gal:!1,initGal:function(el){if(!ffJS.ffFfmediaOLD.gal){ffJS.ffFfmediaOLD.gal=$(el).find('.ff-gallery');ffJS.ffFfmediaOLD.gal.sortable({placeholder:"moving"});ffJS.ffFfmediaOLD.gal.disableSelection()}},retrieve:function(sourceUrl,mainForm,ajaxUrl){if(sourceUrl!=axuploader.lastUrl){$.ajax({url:ajaxUrl,data:{form:mainForm.serialize(),term:sourceUrl},dataType:'json',success:function(data){axform.processResponse(data,mainForm)}})}
axuploader.lastUrl=sourceUrl},loadMedia:function(data,readonly){var count=0;for(var i in data){var media=data[i];if(media.type=='img'){axuploader.addImage(media.src,null,media.width,media.height,readonly);count++}
if(media.type=='embed'){axuploader.addEmbed(media.embed,media.embedHTML,readonly);count++}}
if(count>0){setTimeout(function(){$('.btn-uploader').click()},200)}},addEmbed:function(embed,html,readonly){var el=$('<input type="hidden">').attr("name","img[]").val('e,'+embed);el=el.add(html);axuploader.addMedia(el,!1,readonly)},addMedia:function(el,url,readonly){el=$('<li>').wrapInner(el);if(!readonly){$('<span>Click to drag</span>').prependTo(el);$('<button type="button" class="close"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>').appendTo(el)}else{}
el.find('.close').click(function(){if(url){axuploader.removeImage(url);$('.media-img').find('img[src="'+url+'"]').closest('.media-img').find('.selector').hide()}else{$(this).closest('li').remove();ffJS.ffFfmediaOLD.galHide()}});ffJS.ffFfmediaOLD.gal.prepend(el);ffJS.ffFfmediaOLD.gal.closest('.media-selected').show()},galHide:function(){if(ffJS.ffFfmediaOLD.gal.find('li').length==0){ffJS.ffFfmediaOLD.gal.closest('.media-selected').hide()}},removeImage:function(url){ffJS.ffFfmediaOLD.gal.find('img[src="'+url+'"]').closest('li').remove();ffJS.ffFfmediaOLD.galHide()},ready:function(el){ffJS.ffFfmediaOLD.media(el)},xx:function(){$('[data-obj="image-selector"],[data-obj="image-selector-video"]').change(function(){var par=$(this).closest('.editable-block');var sel=$(this).find('.img-list');$(this).find('.img-list .media-img').hide();var count=0;var imgs=$(this).find('img');var clicked=(ffJS.ffFfmediaOLD.gal.find('li').length>0);imgs.each(function(){var el=$(this).closest('.media-img');var elImg=$(this);var img=$('<img>').attr('src',$(this).attr('src'));img.load(function(){if(this.width>=32&&this.height>=32){el.find('span').html(this.width+'x'+this.height).attr('data-width',this.width).attr('data-height',this.height);if((this.width==32&&this.height==32)||(this.height<(this.width/2))||this.width<=64){el.remove();el.appendTo(sel)}else{if(count==0){if(imgs.length==1&&ffJS.ffFfmediaOLD.gal.find('li').length==0){$(elImg).click();clicked=!0}}
count++;if(!clicked&&elImg.hasClass('img-default')&&ffJS.ffFfmediaOLD.gal.find('li').length==0){$(elImg).click();clicked=!0}
if(!par.find('.media-add').is(':visible')){par.find('.media-add-tab-url-btn').click()}}
el.show()}})})}).on('click','.pointer',function(e){var sel=$(this).closest('.media-img').find('.selector');var img=$(this).closest('.media-img').find('img');var sp=$(this).closest('.media-img').find('span');if(!sel.is(':visible')){axuploader.addImage(img.attr('src'),!1,sp.attr('data-width'),sp.attr('data-height'))}else{axuploader.removeImage(img.attr('src'))}
sel.toggle();e.stopPropagation();e.preventDefault();return !1})}},ffFft:{contentActions:function(el){var d=el.data();var o={};if(d.ffOptions){var s='';var opts=d.ffOptions.split(',');for(var i in opts){s+=(s?' ':'')+ffJS.templates['content.'+opts[i]]}
o.options=s}
var c=$('<div>').html(ffJS.tpl('content.actions',o));var p=el.closest('[data-ff-id]');if(!p.is('[data-ff-owner]')){c.find('[data-ff-show-owner]').remove()}else{c.find('[data-ff-hide-owner]').remove()}
el.html(c.html())},ready:function(el){if(!el){el=$('body')}
el.find('[data-fft]').each(function(){var e=$(this);e.html(ffJS.templates[e.attr('data-fft')]).addClass('ff')});el.find('[data-ffw]').each(function(){var e=$(this);switch(e.attr('data-ffw')){case 'content.actions':ffJS.ffFft.contentActions(e);break;default:return}
e.addClass('ff')})}},ffFfwAffix:{widget:{options:{},_create:function(){var $el=$(this.element);this.options={fixPos:{'position':'fixed'},origPos:{'position':'relative'},overlay:!1,id:!1,}
this.options=$.extend(this.options,this.element.subData('ff'));if('stickTo' in this.options){var $parent=$el.parent();var top=$el.offset().top;var h=$el.outerHeight();var $w=$(window);var fix=!1;var $target=$('[data-ff-id="'+this.options.target+'"]');var $clone=null;if(!this.options.target){$target=$el}
if($target.length){switch(this.options.stickTo){case 'bottom':$(window).on('scroll resize',function(){h=$el.outerHeight()>h?$el.outerHeight():h;if(!fix){top=$el.offset().top}
if(($w.scrollTop()+$w.height()>h+top)&&($w.scrollTop()+$w.height()<$parent.outerHeight()+top)){fix=!0;$el.css('margin-top',$w.scrollTop()+$w.height()-(h+top))}else if(fix&&($w.scrollTop()+$w.height()<h+top)){fix=!1;$el.css('margin-top',0)}});break;case 'top':$clone=$target.clone();$clone.css('position','fixed');$clone.css('display','none');$clone.css('top','0');$clone.css('z-index','1000');$clone.attr('data-ffw','');$clone.appendTo($target.parent());$(window).on('scroll resize',function(){if(!fix){top=$target.offset().top}
if($w.scrollTop()>top){$clone.css('display','block');fix=!0}else if($w.scrollTop()<top){$clone.css('display','none');fix=!1}});break;case 'target-top':var l=$target.offset().left-$el.offset().left;h=$el.outerHeight()>h?$el.outerHeight():h;if(!fix){top=$target.offset().top}
$(window).on('scroll resize',function(){if(0.9*$el.parent().outerHeight()>$el.outerHeight()){if($el.parent().outerHeight()-$target.outerHeight()<$w.scrollTop()){$target.css('top',$el.parent().outerHeight()-$target.outerHeight()-$w.scrollTop()+0)}else if(!fix&&$w.scrollTop()>$target.offset().top){top=$target.offset().top
fix=!0;$target.css('width',$target.width());$target.css('max-width',$target.width());$target.css('min-width',$target.width());$target.css('position','fixed');$target.css('top',65);$target.css('left',$el.offset().left+l)}else if(fix&&($w.scrollTop()<top)){fix=!1;$target.css('width',$target.width());$target.css('position','relative');$target.css('top',0);$target.css('left',0)}else if(fix){$target.css('left',$el.offset().left+l);$target.css('top',65)}}});break}}}
return this},run:function(){var scroll_top=$(window).scrollTop()+this.options.offset;var scroll_reset=this.options.reset;var $el=$(this.element);if(this.options.affixDisplay){if(scroll_top>this.element.position().top){$(this.options.affixDisplay).show()
scroll_reset=2*scroll_top-this.options.reset}
if(scroll_reset<=this.element.position().top){$(this.options.affixDisplay).hide()}}else{if($el.css('position')=='fixed'){if(scroll_top<this.element.position().top||scroll_reset>scroll_top){$el.css(this.options.origPos);$el.next('[data-ffw-affix-clone]').remove()}}else if(scroll_top>this.element.position().top){$el.after($el.clone().attr('data-ffw-affix-clone','').css('visibility','hidden'));$el.css(this.options.fixPos)}}}},ready:function($el){$.widget('ffw.ffwAffix',ffJS.ffFfwAffix.widget);$el.find('[data-ffw="affix"]').each(function(){$(this).ffwAffix()});$(window).scroll(function(){$el.find('[data-ffw="affix"]:not([data-ffw-affix-clone])').each(function(){var inst=$(this).ffwAffix().data('ffw-ffwAffix')})})}},ffFfwAjax:{request:null,widget:{options:{},_create:function(){var subData=this.element.subData('ff');this.options=$.extend(this.options,subData);this.init()},init:function(){},},ajax:function(url,options,updateDom){options.url=url;options.complete=function(){$('html').removeClass('ff-ajax-loading')};options.success=function(data){var page=$(data);var dest=$(updateDom);console.log(data,dest,updateDom);console.log("RETURN FROM "+url);if(updateDom){var back=[];page.find(updateDom).each(function(){var $e=$(this);dest.filter(function(){return $(this).attr('data-ff-id')==$e.attr('data-ff-id')}).each(function(){back[$(this).attr('data-ff-id')]=$(this).html();$(this).replaceWith($e)})});if('history' in options&&!$('body').data('ffHistory')){console.log('Storing',back);$('body').data('ffHistory',back);$('html').on('ffw:history','body',function(){ffJS.ffFfwAjax.abort();for(var i in back){$('[data-ff-id="'+i+'"]').html(back[i])}
options.complete()});}}};if('history' in options){ffJS.ffFfwAjax.abort()}
$('html').addClass('ff-ajax-loading');ffJS.ffFfwAjax.request=$.ajax(options)},abort:function(){if(ffJS.ffFfwAjax.request){ffJS.ffFfwAjax.request.abort()}},ready:function(el){$.widget('ffw.ffwAjax',ffJS.ffFfwAjax.widget);el.on('ff:enhance','[data-ffw="ajax"]',function(e){$(this).ffwAjax()});$(el).on('click ffw:click','[data-ff-ajax]',function(e){e.preventDefault();e.stopImmediatePropagation();var subData=$(this).subData('ff');var options=$.extend(options,subData);ffJS.ffFfwAjax.ajax($(this).attr('href'),options,$(this).attr('data-ff-ajax'))})}},ffFfwAlert:{widget:{options:{tpl:'alert.basic',tplParams:{},type:'message',timeout:2500,target:'body',vPos:'middle',hPos:'center',ePos:'inside',size:'small',},_create:function(){if(this.element.is('[data-ffw="alert"]')){var inputs=this.element.subData('ff');this.options=$.extend(this.options,inputs);if('tpl' in inputs){this.options=$.extend(this.options,{tplParams:this.element.subData('ff-tpl-param')})}}
if('message' in this.options){this.options.tplParams.message=unescape(this.options.message)}
this.options.tplParams.message=$.fn.messageText(this.options.tplParams.message);if('pos' in this.options){var p=this.options.pos.split(',');this.options.vPos=p[0];this.options.hPos=p[1];if(p[2]&&this.options.target!='body'){this.options.ePos=p[2]}}
this.options.content=$.fn.ffTemplate(this.options.tpl,this.options.tplParams);if(this.options.show){this.show()}},show:function(){var $ac=this._getContainer();var $a=$($.fn.ffTemplate('alert.box',this.options));var $w=this;$a.appendTo($ac);if(this.options.target!='body'&&this.options.ePos=='outside'){if(this._checkPos($a)){$ac.remove();$ac=this._getContainer();$a.appendTo($ac)}
switch(this.options.vPos+','+this.options.hPos){case 'top,center':$a.addClass('ff-outside-top');break;case 'bottom,center':$a.addClass('ff-outside-bottom');break;case 'middle,left':$a.addClass('ff-outside-left');break;case 'middle,right':$a.addClass('ff-outside-right');break}}
this._positionContainer($ac);this._positionContainer($ac);$a.on('click','[data-ff-close]',function(e){e.preventDefault();$w._close($a,$ac)})
if(this.options.timeout){setTimeout(function(){$w._close($a,$ac)},this.options.timeout)}},_close:function($a,$ac){$a.remove();this._positionContainer($ac);this.destroy()},_getContainer:function(){var $ac=$('.ff-alert-container[data-ff-target="'+this.options.target+'"][data-ff-vPos="'+this.options.vPos+'"][data-ff-hPos="'+this.options.hPos+'"][data-ff-ePos="'+this.options.ePos+'"]');if($ac.length==0){$ac=$($.fn.ffTemplate('alert.container',this.options));$t=this.options.target!='body'?$('#'+this.options.target):$('body');$ac.appendTo($t)}
this._positionContainer($ac);return $ac},_positionContainer:function($ac){var h=$(window).height();var w=$(window).width();var $t=$('#'+this.options.target);var outer=(this.options.target!='body'&&this.options.ePos=='outside');if(this.options.target!='body'){h=$t.outerHeight();w=$t.outerWidth();$t.css('position','relative');$ac.css('position','absolute')}else{$ac.css('position','fixed')}
switch(this.options.vPos){case 'top':if(outer){$ac.css({'top':(-1*$ac.outerHeight())+'px'});console.log(-1*$ac.outerHeight()+'px')}else{$ac.css({'top':'0'})}
break;case 'middle':$ac.css({'top':((h-$ac.outerHeight())/2)+'px'});break;case 'bottom':if(outer){$ac.css({'bottom':(-1*$ac.outerHeight())+'px'})}else{$ac.css({'bottom':'0'})}
break}
switch(this.options.hPos){case 'left':if(outer){$ac.css({left:(-1*$ac.outerWidth())+'px'})}else{$ac.css({left:'0'})}
break;case 'center':$ac.css({left:((w-$ac.outerWidth())/2)+'px'});break;case 'right':if(outer){$ac.css({right:(-1*$ac.outerWidth())+'px'})}else{$ac.css({right:'0'})}
break}},_checkPos:function($a){var $tDims=document.getElementById(this.options.target).getBoundingClientRect();var changed=!1;switch(this.options.vPos){case 'top':if(!this._checkTopPos($a,$tDims)){this.options.vPos='bottom';changed=!0}
break}
switch(this.options.hPos){case 'left':if(!this._checkLeftPos($a,$tDims)){if(this.options.vPos=='middle'){this.options.vPos='bottom'}
this.options.hPos='center';changed=!0}
break;case 'right':if(!this._checkRightPos($a,$tDims)){if(this.options.vPos=='middle'){this.options.vPos='bottom'}
this.options.hPos='center';changed=!0}
break}
return changed},_checkLeftPos:function($a,$tDims){if($tDims.left-$a.outerWidth()>0){return !0}else{return !1}},_checkRightPos:function($a,$tDims){console.log($tDims.right+$a.outerWidth(),$(window).width());if($tDims.right+$a.outerWidth()<$(window).width()){return !0}else{return !1}},_checkTopPos:function($a,$tDims){if($tDims.top-$a.outerHeight()>0){return !0}else{return !1}},_checkBottomPos:function($a,$tDims){if($tDims.bottom+$a.outerHeight()<$(window).height()){return !0}else{return !1}},},ready:function(el){$.widget('ffw.ffwAlert',ffJS.ffFfwAlert.widget);$.ffw.ffwAlert.close=function(){ffJS.ffFfwAlert.hide()};$.ffw.ffwAlert.error=function(message){$.ffw.ffwAlert({message:message,type:'error',show:!0,})};$.ffw.ffwAlert.success=function(message){$.ffw.ffwAlert({message:message,type:'success',show:!0,})};el.on('click','[data-ffw="alert"]',function(e){e.preventDefault();$(this).ffwAlert({show:!0})})}},ffFfwAuto:{ready:function(el){el.on('ff:enhance','[data-ffw="autotag"]',function(){ffJS.ffFfwAuto.initAtWho($(this))});el.on('ff:enhance','[data-ffw="auto"]',function(){ffJS.ffFfwAuto.initAtWho($(this))})},initAtWho:function(elAtWho){if(elAtWho.is('[data-ff--done]')){return}
elAtWho.attr('data-ff--done','');var options=elAtWho.subData('ff');var widget=elAtWho;function isProp(n){return(typeof(options[n])=='undefined'?!1:(options[n]=='false'||(options[n].length>0&&!options[n])?!1:!0))}
var doSubmit=isProp('submit');var empty=!1;if(elAtWho.html().trim()==''){empty=!0;elAtWho.html(ffJS.tpl('content.'+elAtWho.attr('data-ffw'),{query:isProp('query')?elAtWho.attr('data-ff-query'):''}))}else{if(isProp('query')){elAtWho.find('.inputor').val(elAtWho.attr('data-ff-query'))}}
if(isProp('placeholder')){elAtWho.find('.inputor').attr('placeholder',options.placeholder)}
var ffAuto=elAtWho.find('.ff-auto');if(empty&&isProp('layouts')){$('<div class="ff-layouts"><i data-ff-list class="ff-pointer icon-lists"> List View</i> | <i data-ff-grid class="ff-pointer icon-th"> Grid View</i></div>').appendTo(ffAuto)}
var mContainer;if(empty){mContainer=$('<div class="ff-mcontainer">');mContainer.appendTo(ffAuto)}else{mContainer=ffAuto.find('.ff-mcontainer')}
elAtWho.on('click','[data-ff-list]',function(e){elAtWho.closest('.ff-auto').removeClass('ff-grid')});elAtWho.on('click','[data-ff-grid]',function(e){elAtWho.closest('.ff-auto').addClass('ff-grid')});if(isProp('sizeMedium')){elAtWho.find('.ff-auto').addClass('ff-medium')}
var triggers={};if(elAtWho.attr('data-ffw')=='autotag'){triggers['@']=!0;triggers['#']=!0}else{triggers['']=!0}
var dName=elAtWho.attr('data-ff-name');var atCfg;elAtWho=elAtWho.find('.inputor');var emojis=["smile","iphone","girl","smiley","heart","kiss","copyright","coffee","a","ab","airplane","alien","ambulance","angel","anger","angry","arrow_forward","arrow_left","arrow_lower_left","arrow_lower_right","arrow_right","arrow_up","arrow_upper_left","arrow_upper_right","art","astonished","atm","b","baby","baby_chick","baby_symbol","balloon","bamboo","bank","barber","baseball","basketball","bath","bear","beer","beers","beginner","bell","bento","bike","bikini","bird","birthday","black_square","blue_car","blue_heart","blush","boar","boat","bomb","book","boot","bouquet","bow","bowtie","boy","bread","briefcase","broken_heart","bug","bulb","person_with_blond_hair","phone","pig","pill","pisces","plus1","point_down","point_left","point_right","point_up","point_up_2","police_car","poop","post_office","postbox","pray","princess","punch","purple_heart","question","rabbit","racehorse","radio","up","us","v","vhs","vibration_mode","virgo","vs","walking","warning","watermelon","wave","wc","wedding","whale","wheelchair","white_square","wind_chime","wink","wink2","wolf","woman","womans_hat","womens","x","yellow_heart","zap","zzz","+1","-1"];var fnMatcherAll=function(flag,subtext,should_startWithSpace){return subtext};var fnMatcher=function(flag,subtext,should_startWithSpace){var match,regexp,_a,_y;flag=flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");if(should_startWithSpace){flag='(?:^|\\s)'+flag}
_a=decodeURI("%C3%80");_y=decodeURI("%C3%BF");regexp=new RegExp(""+flag+"([A-Za-z\\\s"+_a+"-"+_y+"0-9_'\.\+\-]*)$|"+flag+"([^\\x00-\\xff]\\\s*)$",'gi');match=regexp.exec(subtext);if(match){return match[2]||match[1]}else{return null}};var fnFilter=function(query,data,searchKey){return data};var fnSorter=function(query,items,searchKey){return items};var ajx=null;var fnRemoteFilter=function(query,callback,options,url){if(query.trim().length==0){callback([]);return}
if(ajx){ajx.abort()}
var vals={q:query};if(typeof(options.tids)!='undefined'){vals.tids=options.tids}
if(typeof(options.oids)!='undefined'){vals.oids=options.oids}
if(typeof(options.hideImage)!='undefined'){vals.image='h'}
if(typeof(options.create)!='undefined'){vals.create='1'}
if('limit' in options){vals.limit=options.limit}else{if($('html').hasClass('platform-mobile')){if(isProp('sizeMedium')){vals.limit=2}else{vals.limit=4}}}
if(!url)url='auto';var u="//fdata.whosdatedwho.com/"+url;if($('.inputor:focus').data('ffPage')){u+=$('.inputor:focus').data('ffPage');$('.inputor:focus').data('ffPage',!1);vals=[]}
$('.atwho-view.ff-auto-paging:visible li.cur').each(function(){$(this).replaceWith($(this).clone())});ajx=$.ajax({url:u,dataType:"json",xhrFields:{withCredentials:!1},data:vals,success:function(data){callback(data);elAtWho.trigger('ff.atwho');if($('.atwho-view:visible').hasClass('ff-auto-paging')){$('.atwho-view:visible').removeClass('ff-auto-paging').find('.cur').removeClass('cur')}}})};var fnPage=function(qs,callback){var url="//fdata.whosdatedwho.com/auto";if(ajx){ajx.abort()}
ajx=$.ajax({url:url+qs,dataType:'json',xhrFields:{withCredentials:!1},success:function(data){callback(data)}})};var fnBeforeInsert=function(value,li,max,outerdiv){var im=li.find('img');var el=$(value);var inp=el.find('input,textarea');var sp=$('<span>').text(inp.val());inp.width(sp.realDimensions(elAtWho).width+20);if(im.length>0){inp.css({'background-image':'url('+im.attr('src')+')'})}else{inp.css({'padding-left':'5px'});inp.width(sp.realDimensions(elAtWho).width)}
var a='';if(el.find('[data-id=-2]').length>0){alert("NEXT TRIGGER");return '<div data-ff-auto-remove></div>'}
if(el.find('[data-id=-1]').length>0){var m=''+options.create;if(m.length==0){m='Please confirm you wish to add "{name}" as a new topic'}
a='<div class="ff-create">'+'<label><input data-ff-confirm type="checkbox"> '+m.format({'name':outerdiv.find('[name$=\\[url\\]\\[\\]],[name$=url\\[\\]],[name=url],[name$=\\[url\\]]').val()})+' </input></label>'+'</div>';el.find('.token').remove()}
if(max){inp.width('100%');inp.css({margin:0})}
var $w=widget;setTimeout(function(){$w.htmlStateStore('auto')},500);return a+el.html()};var subEnterAllow=!1;var fnBeforeInsertSubmit=function(value,li){var ret=!1;var eval=elAtWho.val().trim();var id=$(value).find('[data-id]').attr('data-id');if(id>0){elAtWho.val('')}else{ret=!0;this.query.endPos=eval.length;setTimeout(function(){elAtWho.blur()},50,elAtWho);setTimeout(function(){elAtWho.blur()},100,elAtWho);setTimeout(function(){elAtWho.blur()},200,elAtWho)}
if(doSubmit){subEnterAllow=!1;var f=elAtWho.closest('form');var s=f.find('.ffelsub');s.remove();s=$('<div class=ffelsub>');s.appendTo(f);$(value).appendTo(s);if(isProp('urlRedirect')){var u=s.find('[name=url]').val();if(u.length>0){s.remove();self.location.href=u;return eval}}
f.submit();s.remove()}
return(ret!=!1?eval:$(value).attr('data-text'))};var fnBeforeInsertSingle=function(value,li){var v=$(value);var id=v.find('[data-id]').attr('data-id');var retval=!1;if(id<=0){retval=elAtWho.val()}
var iv=v.find('i');var h=fnBeforeInsert(iv.html(),li,!0,v);iv.remove();elAtWho.after('<div class="inputor" data-ff-single>'+h+v.html()+'<i class="icon-remove ff-pointer"></i></div>');elAtWho.next().find('[data-ff-confirm]').trigger('change');elAtWho.val('').hide();setTimeout(function(){elAtWho.val('')},100,elAtWho);return(retval==!1?v.attr('data-text'):retval)};var fnBeforeInsertMultiple=function(value,li){var v=$(value);var id=v.find('[data-id]').attr('data-id');var retval='';if(id<=0){retval=elAtWho.val()}
var u=v.find('[name$=\\[url\\]\\[\\]],[name$=url\\[\\]]').val();var dup=!1;if(id==-1){elAtWho.closest('.ff-auto').find('[data-text][type=hidden]').each(function(){if($(this).val()==u){dup=!0}})}else{dup=(elAtWho.closest('.ff-auto').find('[data-id='+id+']').length>0)}
if(dup){setTimeout(function(){elAtWho.val('')},500,elAtWho);return ''}
var iv=v.find('i');var h=fnBeforeInsert(iv.html(),li,!0,v);iv.remove();$('<div class="inputor ff-minp" data-ff-single>'+h+v.html()+'<i class="icon-remove ff-pointer"></i></div>').appendTo(mContainer);elAtWho.next().find('[data-ff-confirm]').trigger('change');elAtWho.val('');setTimeout(function(){elAtWho.val('')},500,elAtWho);return retval};var dn1='';var dn2='';var dn3='';if(dName){elAtWho.attr('name',dName+'['+elAtWho.attr('name')+']');dn1=dName+'[';dn2=']';dn3=']'}
if(isProp('multiple')){dn2+='[]';dn3+='[${id}][]'}
if(!widget.attr('id')){var mi='auto_'+$.md5(widget.html());if($('#'+mi).length==0){widget.attr('id',mi)}}
var lk=(isProp('showLink')?'<a data-ff-link title="Open link in new tab" href="${dataurl}" class="icon-export" target="_blank"></a>':'');if(!isProp('hideViews')){lk='<em>${extended}</em> '+lk}
if(isProp('sortable')){lk+='<span class="ff-move icon-move"></span>'}
lk=lk.trim();if(lk.length>0){lk='<span>'+lk+'</span>'}
var lkIns='';if(isProp('media')){lkIns+='<div data-ffw="media" data-ff-name="'+dn1+'media'+dn3+'"'+'" data-ff-library data-ff-url data-ff-file data-ff-text data-ff-text-placeholder="Enter comment" data-ff-library-url="/content/gallery?url=${dataurl}"></div>'}
var defConfig={data:[],suffix:'',startWithSpace:!1,displayTpl:'<li class="ff-auto-i${id}">${image}<div>${name} <small>${info}</small>'+lk+"</div></li>",insertTpl:'<div><input data-id="${id}" data-tid="${tid}" class="token timg" type="text" value="${name}" readonly="readonly">'+lk+lkIns+'</div>',limit:200,maxLen:40};var defConfigSubmit=$.extend({},defConfig);if(doSubmit&&!isProp('multiple')){defConfigSubmit.insertTpl='<input data-text="${name}" type=hidden name='+dn1+'url'+dn2+' value="${dataurl}">'+'<input type=hidden name='+dn1+'tid'+dn2+' value="${tid}"><input type=hidden name=oid value="${oid}"><input type=hidden name=id value="${id}">'+lk+lkIns}else{defConfigSubmit.insertTpl='<div><i><div><input data-id="${id}" data-tid="${tid}" class="token timg" type="text" value="${name} ${info}" readonly="readonly"></div></i>'+'<input data-text="${name}" type=hidden name='+dn1+'url'+dn2+' value="${dataurl}"><input type=hidden name='+dn1+'tid'+dn2+' value="${tid}">'+'<input type=hidden name='+dn1+'oid'+dn2+' value="${oid}">'+'<input type=hidden name='+dn1+'id'+dn2+' value="${id}">'+lk+lkIns+'</div>';if(isProp('sortable')){elAtWho.closest('.ff-auto').sortable({items:".ff-mcontainer div.inputor",handle:"span.ff-move"})}}
if(!empty){elAtWho.atwho('destroy')}
if(triggers['@']){var at_config=$.extend({},defConfig);at_config.at='@';at_config.callbacks={matcher:fnMatcher,filter:fnFilter,sorter:fnSorter,beforeInsert:fnBeforeInsert,remoteFilter:function(query,callback){return fnRemoteFilter(query,callback,'User')}};atCfg=at_config;elAtWho.atwho($.extend({},at_config))}
if(triggers['#']){var hash_config=$.extend({},defConfig);hash_config.at='#';hash_config.callbacks={matcher:fnMatcher,filter:fnFilter,sorter:fnSorter,beforeInsert:fnBeforeInsert,remoteFilter:function(query,callback){return fnRemoteFilter(query,callback,'Topic,Tag')}};atCfg=hash_config;elAtWho.atwho(hash_config)}
if(triggers['']){elAtWho.on('keydown',function(e){if(e.keyCode==13){subEnterAllow=!0}});var hash_config=$.extend({},defConfigSubmit);hash_config.at='';hash_config.callbacks={beforeReposition:function(offset){offset.left+=(this.$inputor.offset().left-offset.left);offset.top+=9;if($('html').hasClass('platform-mobile')){offset.top=(this.$inputor.offset().top+this.$inputor.outerHeight())}},matcher:fnMatcherAll,filter:fnFilter,sorter:fnSorter,beforeInsert:(isProp('multiple')?fnBeforeInsertMultiple:(doSubmit?fnBeforeInsertSubmit:fnBeforeInsertSingle)),remoteFilter:function(query,callback){return fnRemoteFilter(query,callback,options)}};atCfg=hash_config;elAtWho.atwho(hash_config);var f=elAtWho.closest('form');if(!f.data('storestate')){f.data('storestate',!0);f.on('change',function(e){f.htmlStateStore('form')})}
if($('html').hasClass('platform-mobile')){elAtWho.on('focus',function(e){var t=$(this).offset().top;var p=$(this);var ptop=0;while(p.length>0&&p[0].tagName){if(p.css('margin-top')&&p.css('margin-top')!='0px'){ptop+=parseInt(p.css('margin-top'))}
p=p.parent()}
$('body').addClass('ff-fullscreen');$('html, body').animate({scrollTop:$(this).offset().top},500)}).on('blur',function(e){$('body').removeClass('ff-fullscreen')})}
elAtWho.on('keypress',function(e){if(e.keyCode==13){if(doSubmit){if(!subEnterAllow){e.preventDefault()}else{e.preventDefault();elAtWho.closest('form').submit()}}else{if(elAtWho.find('input.inputor').length>0&&elAtWho.find('input.inputor').val()==''){elAtWho.closest('form').submit()}else{e.preventDefault()}}}})}
var eb=elAtWho;if(isProp('multiple')){elAtWho.on('paste',function(){setTimeout(function(){fnRemoteFilter(elAtWho.val().replace(/[\n\r]/g,',').replace(/\t/g,','),function(data){for(var i in data){var disp=atCfg.displayTpl.replace(/\$\{/g,'{').format(data[i]);var ins=atCfg.insertTpl.replace(/\$\{/g,'{').format(data[i]);atCfg.callbacks.beforeInsert(ins,$(disp));}},options,'auto')},elAtWho,fnRemoteFilter,atCfg)})}
$('.atwho-container .atwho-view-ul:not(.done)').on('click','li a[data-ff-link]',function(e){e.stopPropagation()}).addClass('done').each(function(){if(isProp('sizeMedium')){$(this).closest('.atwho-container').addClass('ff-medium')}});if(!jQuery.fn.serializeToForm){$(document).on('change','[data-ff-confirm]',function(e){if($(this).prop('checked')){$(this).closest('.inputor').find('[data-ff-name]').each(function(){$(this).attr('name',$(this).attr('data-ff-name'));$(this).removeAttr('data-ff-name')})}else{$(this).closest('.inputor').find('[name]').each(function(){$(this).attr('data-ff-name',$(this).attr('name'));$(this).removeAttr('name')})}});$(document).on('paste','[contenteditable]',function(e){var h=(e.originalEvent||e).clipboardData.getData('text/html');if(h.match(/<input data-id="\d+" data-tid=".*?" class="token/i)){return}
e.preventDefault();var text=(e.originalEvent||e).clipboardData.getData('text/plain');document.execCommand("insertText",!1,text)});$(document).on('click','.ff-auto .inputor > .icon-remove',function(){var i=$(this).closest('.inputor');i.siblings().show().val('');i.siblings().focus();var a=i.closest('[data-ffw="auto"]');i.remove();a.htmlStateStore('auto')});$(document).on('keydown','input.token',function(e){if(e.keyCode==46||e.keyCode==8){var p=$(this).closest('.inputor[data-ff-single]');if(p.length>0){p.find('.icon-remove').click();e.preventDefault()}else{$(this).remove()}
if(e.keyCode==8){e.preventDefault()}}});jQuery.fn.serializeToForm=function(form){var el=$('<div>'+this.html()+'</div>');var eb=elAtWho.closest('.editable-block');var nm=this.attr('name');var nmTags=this.attr('data-tags');var vals={};eb.find('input.token').each(function(){vals[nmTags+'['+$(this).attr('data-tid')+':'+$(this).attr('data-id')+']']=$(this).val()});el.find('input.token').each(function(){$(this).replaceWith($(this).val())});form.find('input[name|='+axutils.escapeSelector(nmTags)+']').remove();form.find('input[name='+axutils.escapeSelector(nm)+']').remove();var t='';el.contents().each(function(){if(this.outerHTML){t+=this.outerHTML}else{t+=this.textContent}});vals[nm]=t.trim();for(var i in vals){var inp=$('<input type=hidden>').attr('name',i).val(vals[i]);inp.appendTo(form)}}}
if(empty){eb.find('div.hide.token').each(function(){$(this).replaceWith(fnBeforeInsert($('<div>').append($(this).find('input')),$(this).find('span')))});eb.find('input.token').each(function(){$(this).wrap('<span class="atwho-inserted">')})}
eb.closest('[data-ffw="auto"]').on('click','div.inputor input.token',function(e){var i=$(this);var $inp=$(this).closest('.inputor');var $med=$inp.find('[data-ffw="media"]');var $auto=$inp.closest('[data-ffw="auto"]');if($med.length>0&&!$med.attr('[data-ff--done]')){var d=$auto.attr('data-ff-media-value');if(d){var vals=$.parseJSON(d);if(vals.selected[$(this).attr('data-id')]){$med.data('ffValue',{selected:vals.selected[$(this).attr('data-id')]})}}
$med.ffEnhance()}
if($(this).closest('.ff-tabs').length>0){e.stopPropagation()
return}
if(i.hasClass('token')||this.tagName=='INPUT'){e.preventDefault();e.stopPropagation()}
if(!i.hasClass('inputor')){i=$(this).closest('div.inputor')}
i.each(function(){if($(this).hasClass('ff-active')){$(this).removeClass('ff-active')}else{$(this).siblings().removeClass('ff-active');$(this).addClass('ff-active')}})});if(isProp('value')&&!$.fn.htmlStateRestore('auto',widget.attr('id'))){fnRemoteFilter(options.value,function(data){for(var i in data){var disp=atCfg.displayTpl.replace(/\$\{/g,'{').format(data[i]);var ins=atCfg.insertTpl.replace(/\$\{/g,'{').format(data[i]);atCfg.callbacks.beforeInsert(ins,$(disp));}},options,'auto-load')}
elAtWho.on("ff.atwho",function(event,flag,query){console.log("POPDOWN - ATTACH");if($('[data-ff-auto-remove]').length>0){$('[data-ff-auto-remove]').closest('.inputor').remove()}
$('.atwho-view:visible').css('maxWidth',elAtWho.outerWidth());function paging(e){console.log(e.type,$(e.target)[0].tagName);e.preventDefault();e.stopImmediatePropagation();if(e.type=='mousedown'){$('.atwho-view:visible').addClass('ff-auto-paging');var $el=$(this);if($el[0].tagName!='li'){$el=$(this).closest('li')}
if($el.find('i').hasClass('ff-disabled')){$el.replaceWith($el.clone());return !1}
$('.inputor:focus').data('ffPage',$el.find('i').attr('data-ff-url'));elAtWho.atwho('run')}
return !1}
$('.atwho-view:visible ul.atwho-view-ul').off('click mousedown mouseup','li.ff-auto-i-2,li.ff-auto-i-3',paging);$('.atwho-view:visible ul.atwho-view-ul').on('click mousedown mouseup','li.ff-auto-i-2,li.ff-auto-i-3',paging)})},},ffFfwChart:{ready:function(el){var types=['corechart','timeline'];function drawCharts(){el.find('[data-ffw="chart"]').each(function(e){var jsonData=JSON.parse($.ajax({type:'POST',url:'/chart/'+$(this).attr('data-ff-chart-type'),data:$(this).subData('ff-chart'),dataType:"json",async:!1}).responseText);var data=[];var chart=null;var options=[];switch($(this).attr('data-ff-chart-format')){case 'timeline':var data=new google.visualization.DataTable(jsonData.data);chart=new google.visualization.Timeline($(this)[0]);break;case 'combo':data=new google.visualization.arrayToDataTable(jsonData.data);chart=new google.visualization.ComboChart($(this)[0]);break}
if(chart){chart.draw(data,jsonData.options)}})}
if(el.find('[data-ffw="chart"]').length>0){initCharts(types,drawCharts)}}},ffFfwContent:{widget:{options:{},_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));return this},liked:function(){this.options.liked=!0;this._trigger('liked',null,this.options)},},ready:function($el){$.widget('ffw.ffwContent',ffJS.ffFfwContent.widget);$el.on('ff:enchance','[data-ffw="content"]',function(){$(this).ffwContent()})}},ffFfwCrud:{widget:{options:{url:'//fdata.whosdatedwho.com/crud/',label:'Select'},$list:!1,_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));this.element.addClass('ffw-crud');this.options.url+=this.options.name;this.load();var inst=this;this.element.on('ff:crud-refresh',function(){inst.load()});return this},load:function(){var el=this;console.log('LOADING CRUD '+this.options.name);var add='';var $opts=!1;if(this.options.mode=='crud'){add+='<li data-ff-update class="ff-crud-opt"><a href="#">Update</a></li><li data-ff-add class="ff-crud-opt"><a href="#">Add</a></li>'}
var $list=$('<ul class="ff-crud'+(el.options.class?' '+el.options.class:'')+'">'+add+'</ul>');$list.find('[data-ff-add] a').click(function(e){e.preventDefault();e.stopImmediatePropagation();el.add()});$list.find('[data-ff-update] a').click(function(e){e.preventDefault();e.stopImmediatePropagation();el.update()});var $lbl=$('<fieldset><legend></legend></fieldset>');$lbl.find('legend').text(this.options.label);this.element.html('');$lbl.appendTo(this.element);$list.appendTo($lbl);this.$list=$list;this.$list.on('click','li:not(.ff-crud-opt) a',function(e){e.preventDefault();e.stopImmediatePropagation();$(this).closest('li').siblings().removeClass('ff-active');$(this).closest('li').addClass('ff-active');el.find($(this).attr('data-ff-id'))});this.refresh()},select:function(id){this.$list.find('.ff-crud data-ff-id="'+data.data.id+'"').click()},setParentData:function(d){d[this.options.name]=this.currentId();return d},_getData:function(data){if(this.options.parent){var $p=$('[data-ffw="crud"][data-ff-name="'+this.options.parent+'"]');if($p.length>0){var pinst=$p.data('ffw-ffwCrud');pinst.setParentData(data)}}
return data},find:function(id){var inst=this;$.getJSON(this.options.url,this._getData({action:'read',id:id}),function(data){$('[data-ff-crud="'+inst.options.name+'"]').each(function(){var n=$(this).attr('name');if(n in data.data){$(this).val(data.data[n])}});inst.element.trigger('ff:crud-find');inst.notify()})},notify:function(){$('[data-ffw="crud"][data-ff-parent="'+this.options.name+'"]').trigger('ff:crud-refresh')},refresh:function(after,params){var inst=this;var $list=this.$list;var $add=this.$list.find('[data-ff-add]');if($add.length==0){$add=!1}
$list.find('li:not(.ff-crud-opt)').remove();$.getJSON(this.options.url,this._getData({action:'list'}),function(data){for(var i in data.data){var r=data.data[i];var $li=$('<li><a></a></li>');$li.find('a').text(r.label).attr({'href':'?'+inst.options.name+'='+r.id,'data-ff-id':r.id});if($add>0){$li.before($add)}else{$li.appendTo($list)}}
if(after){after(params)}})},add:function(){var inst=this;$.ffw.ffwPopover({show:!0,tpl:'popover.prompt',tplParams:{title:'Add Item',message:'Enter the new name for this item',label:'Item name'},'submitUrl':this.options.url+'?'+$.param(this._getData({'action':'create'})),afterSuccess:function(pinst,data){inst.refresh()}})},del:function(){this.$rows.each(function(){if($(this).find('input:first').prop('checked')){$(this).remove()}});this.refresh()},data:function(options){var data={};$('[data-ff-crud="'+this.options.name+'"]').each(function(){if($(this).is('[name]')){data[$(this).attr('name')]=$(this).val()}});return data},currentId:function(){return this.$list.find('li.ff-active a').attr('data-ff-id')},update:function(){var inst=this;if(this.currentId()){$.ajax({url:this.options.url+'?action=update&id='+this.currentId(),method:'POST',dataType:'json',data:this._getData(this.data()),success:function(data){$.fn.ajaxResponse($(inst.element).closest('form'),data);inst.element.trigger('ff:crud-update')}})}else{$.ffw.ffwAlert.error('Please select an item first')}},},ready:function($el){$.widget('ffw.ffwCrud',ffJS.ffFfwCrud.widget);$.ffw.ffwCrud.getVars=function(names){var data={};$('[data-ffw="crud"]').each(function(){if(!names||$(this).attr('data-ff-name')in names){var inst=$(this).data('ffw-ffwCrud');data[$(this).attr('data-ff-name')]=inst.currentId()}});return data};$el.on('ff:enhance','[data-ffw="crud"]',function(){$(this).ffwCrud()})}},ffFfwDatalist:{widget:{options:{},settings:{},header:{},footer:{},_create:function(){this.options={};this.settings={display:!1,filter:!1,search:!1,sort:!1,dataHeight:0,height:0,heights:{},width:0,displayWidths:{},pageItems:8,pageRowItems:4,pageRows:2,displayPageItems:{},showCount:0,itemCount:0,filterCount:0,pages:0,currPage:0,};this.footer={'showing':'','paging':'','filtered':''};this.header={};if(this.element.is('[data-ffw="datalist"]')){this.options=$.extend(this.options,this.element.subData('ff'));this.element.addClass('ff-datalist');this.element.height(this.element.height());this._addDisplay();this._addSort();this._addFilter();this._addSearchable();this._addPaging();this._header();this.element.children('.ff-data-fill').detach();this._render();this._footer();w=this;$(window).resize(function(){w.reset();console.log('datalist resizing')});return this}},reset:function(){this.settings=$.extend(this.settings,{dataHeight:0,height:0,heights:{},width:0,displayWidths:{},});this._render()},_header:function(){var header='<div class="ff-datalist-header"><div class="row collapse">';if(this.header.search&&this.header.display){header+='<div class="small-8 columns text-left"><div class="ff-searchable left">'+this.header.search+'</div></div>';header+='<div class="small-4 columns text-right"><div class="ff-display right">'+this.header.display+'</div></div>';if(this.header.filter||this.header.sort){header+='</div><div class="row collapse">';var c=0;if(this.header.filter){header+='<div class="small-6 columns text-left"><div class="ff-select left">'+this.header.filter+'</div></div>';c++}
if(this.header.sort){header+='<div class="small-6 columns text-left"><div class="ff-select '+(c?'right':'left')+'">'+this.header.sort+'</div></div>'}}}else if(this.header.display){if(this.header.filter||this.header.sort){var c=0;if(this.header.filter){header+='<div class="small-6 columns text-left"><div class="ff-select left">'+this.header.filter+'</div></div>';c++}
if(this.header.sort){header+='<div class="small-6 columns text-left"><div class="ff-select '+(c?'right':'left')+'">'+this.header.sort+'</div></div>'}}
header+='</div><div class="row collapse">';header+='<div class="small-offset-8 small-4 columns text-right"><div class="ff-display right">'+this.header.display+'</div></div>'}else if(this.header.search){header+='<div class="small-6 columns text-left"><div class="ff-searchable left">'+this.header.search+'</div></div>';if(this.header.filter||this.header.sort){var c=0;if(this.header.filter&&this.header.sort){header+='</div><div class="row collapse">';c++}
if(this.header.filter){header+='<div class="small-6 columns text-left"><div class="ff-select left">'+(c?'right':'left')+'">'+this.header.filter+'</div></div>';c++}
if(this.header.sort){header+='<div class="small-6 columns text-left"><div class="ff-select right">'+this.header.sort+'</div></div>'}}}else{if(this.header.filter||this.header.sort){var c=0;if(this.header.filter){header+='<div class="small-6 columns text-left"><div class="ff-select left">'+this.header.filter+'</div></div>';c++}
if(this.header.sort){header+='<div class="small-6 columns text-left"><div class="ff-select '+(c?'right':'left')+'">'+this.header.sort+'</div></div>'}}}
header+='</div></div>';this.element.find('.ff-datalist-header').detach();this.element.prepend(header)},_footer:function(){var footer='<div class="ff-datalist-footer">';footer+='<div class="row collapse">';footer+='<div class="small-12 columns text-center">'+this.footer.paging+'</div>';footer+='</div><div class="row collapse">';footer+='<div class="small-6 columns text-left">'+this.footer.filtered+'</div>';footer+='<div class="small-6 columns text-right">'+this.footer.showing+'</div>';footer+='</div></div>';this.element.find('.ff-datalist-footer').detach();this.element.append(footer)},_render:function(){var el=this.element;var data=el.children('.ff-data');var s=this.settings;var showCount=0;var height=this.element.height();data.each(function(){var show=!0;if(s.filter){if(s.filter=='show all'||$(this).attr('data-ff-filter').toLowerCase().indexOf(s.filter)>=0){show=!0}else{show=!1}}
if(s.search){if(show&&(s.search==''||$(this).attr('data-ff-searchable').toLowerCase().indexOf(s.search)>=0)){show=!0}else{show=!1}}
if(show){showCount ++;$(this).show()}else{$(this).hide()}});if(s.sort){data.sort(function(a,b){var an=a.getAttribute('data-ff-'+s.sort).toLowerCase();var bn=b.getAttribute('data-ff-'+s.sort).toLowerCase();if(isNaN(an)&&isNaN(bn)){var ml=Math.min(an.length,bn.length);var ans=an.substr(0,ml);var bns=bn.substr(0,ml);if(ans<bns){return-1}
if(ans>bns){return 1}
return(an.length-bn.length)}else{return an-bn}})}
this.settings.filterCount=showCount;if('paging' in this.options){var w=this;s.pages=Math.ceil(showCount/s.pageItems);s.currPage=s.currPage>s.pages?s.pages:s.currPage;s.currPage=s.currPage>0?s.currPage:1;var min=(s.currPage-1)*s.pageItems;var max=s.currPage*s.pageItems;var count=0;showCount=0;data.each(function(i){var shown=$(this).is(":visible");if(shown){if(count>=min&&count<max){$(this).show();showCount++}else{$(this).hide()}
count++}});this.settings.showCount=showCount;this.updatePaging()}
this._widthFix(data);var w=this;data.each(function(){$(this).detach().appendTo(el);$(this).css('width',w.settings.width+'px');w.settings.dataHeight=Math.max($(this).height(),w.settings.dataHeight)});this._heightFix(data)},_heightFix:function(data){var w=this;this.element.height('auto');data.each(function(){$(this).height(w.settings.dataHeight)});if(this.element.height()<this.settings.height){if(this.settings.pageItems<=this.settings.showCount&&this.settings.currPage==1){this.settings.height=this.element.height()}
this.element.height(this.settings.height)}else{this.settings.height=this.element.height()}
if(this.settings.display){this.settings.heights[this.settings.display]=this.settings.height}},_widthFix:function(data){this.element.width('100%');data.each(function(){$(this).width('99%')});var totalWidth=this.element.width();var itemWidth=data.first().outerWidth();var rowItems=this.settings.pageRowItems?this.settings.pageRowItems:Math.floor(totalWidth/itemWidth);this.settings.width=Math.floor(totalWidth/rowItems)},_addDisplay:function(){var el=this;if(this.options.display){var displays=this.options.display.split(',');this.element.addClass('ff-data-'+displays[0]);this.header.display='<ul class="button-group radius">';for(i=0;i<displays.length;i++){var d=displays[i];this.settings.heights[d]=0;this.settings.displayWidths[d]=0;if('paging' in this.options){xy=this.element.attr('data-ff-paging').split(',');if(this.element.attr('data-ff-paging-'+d)){xy=this.element.attr('data-ff-paging-'+d).split(',')}
this.settings.displayPageItems[d]={items:xy[0]*xy[1],rows:xy[1],rowitems:xy[0]}}
var icon='';switch(displays[i]){case 'grid':icon='icon-th-large';break;case 'list':icon='icon-lists';break;default:icon='icon-th-small';break}
var active=(i==0?' active':'');this.header.display+='<li><a href="#" data-ff-display-switch="'+displays[i]+'" class="tiny button secondary'+active+'">'+'<i class="'+icon+'"></i></a></li>'}
this.header.display+='</li>';this.element.on('click','[data-ff-display-switch]',function(e){e.preventDefault();el.displaySwitch($(this).attr('data-ff-display-switch').toLowerCase())});this.displaySwitch(displays[0])}},displaySwitch:function(type){this.element.removeClass('ff-data-grid ff-data-list');this.element.addClass('ff-data-'+type);this.settings.display=type;this.element.find('.ff-datalist-header .button-group li a').each(function(){if($(this).attr('data-ff-display-switch')==type){$(this).addClass('active')}else{$(this).removeClass('active')}})
this.settings.height=this.settings.heights[type];if(this.settings.pages){this.settings.currPage=Math.ceil(((this.settings.currPage-1)*this.settings.pageItems)/this.settings.displayPageItems[type].items);this.settings.pageItems=this.settings.displayPageItems[type].items;this.settings.pageRows=this.settings.displayPageItems[type].rows;this.settings.pageRowItems=this.settings.displayPageItems[type].rowitems}
this._render()},_addFilter:function(){var el=this;if(this.options.filter){var filters=this.options.filter.split(',');this.header.filter='<div class="row collapse">'+'<div class="small-5 columns">'+'<label class="right">Filter by: </label>'+'</div><div class="small-7 columns">'+'<select data-ff-filter>';this.header.filter+='<option>show all</option>';for(i=0;i<filters.length;i++){this.header.filter+='<option>'+filters[i]+'</option>'}
this.header.filter+='</select></div></div>';this.element.on('change','[data-ff-filter]',function(){el.filter(this.value.toLowerCase())});this.settings.filter='show all'}},filter:function(type){this.settings.filter=type;this._render()},_addPaging:function(){var el=this;var footStr='';if('paging' in this.options){if(this.options.paging){xy=this.options.paging.split(',');this.settings.pageItems=xy[0]*xy[1];this.settings.pageRowItems=xy[0];this.settings.pageRows=xy[1]}
this.settings.itemCount=this.element.find('.ff-data').not('.ff-data-fill').length;this.settings.pages=Math.ceil(this.settings.itemCount/this.settings.pageItems);this.updatePaging();this.pager('init');this.settings.currPage=1;this.element.on('click','[data-ff-pager]',function(e){e.preventDefault();e.stopPropagation();el.pager($(this).attr('data-ff-pager'))})}},updatePaging:function(){var first=(this.settings.currPage-1)*this.settings.pageItems+1;var last=first+this.settings.showCount-1;var str='';if(last>first){str=first+'-'+last}else{str=last}
this.footer.showing='<div class="ff-showing">Showing: '+str+' of '+this.settings.filterCount+'</div>';this.footer.filtered='<div class="ff-filtered">Filtered out: '+(this.settings.itemCount-this.settings.filterCount)+' of '+this.settings.itemCount+'</div>';this.footer.paging='<div class="ff-paging">';if(this.settings.currPage>1){this.footer.paging+='<a data-ff-pager="prev" href="#" class="ff-pagenum">&lt; prev</a>'}
if(this.settings.pages>1){var start=Math.max(this.settings.currPage-3,1);var end=Math.min(this.settings.currPage+3,this.settings.pages);for(i=start;i<=end;i++){if(i==this.settings.currPage){this.footer.paging+='<strong>'+i+'</strong>'}else{this.footer.paging+='<a data-ff-pager="'+i+'" href="#" class="ff-pagenum">'+i+'</a>'}}}
if(this.settings.currPage<this.settings.pages){this.footer.paging+='<a data-ff-pager="next" href="#" class="ff-pagenum">next &gt;</a>'}
this.footer.paging+='</div>';this._footer()},pager:function(pnum){if(pnum=='init'){pnum=1}
if(pnum=='next'){this.settings.currPage++}else if(pnum=='prev'){this.settings.currPage--}else{this.settings.currPage=pnum}
this.settings.currPage=this.settings.currPage>this.settings.pages?this.settings.pages:this.settings.currPage;this.settings.currPage=this.settings.currPage<1?1:this.settings.currPage;this._render()},_addSearchable:function(){var el=this;if('searchable' in this.options){this.header.search='<div class="row collapse">'+'<div class="small-9 columns">'+'<input data-ff-searchable type="text" placeholder="Search">'+'</div><div class="small-3 columns">'+'<span class="postfix"><i class="icon-search"></i></span>';this.header.search+='</div></div>';this.element.on('input','[data-ff-searchable]',function(){el.searchable(this.value.toLowerCase())});this.settings.search=''}},searchable:function(type){this.settings.search=type;this._render()},_addSort:function(){var el=this;if(this.options.sort){var sorts=this.options.sort.split(',');this.header.sort='<div class="row collapse">'+'<div class="small-5 columns">'+'<label class="right">Sort by: </label>'+'</div><div class="small-7 columns">'+'<select data-ff-sort>';for(i=0;i<sorts.length;i++){this.header.sort+='<option>'+sorts[i]+'</option>'}
this.header.sort+='</select></div></div>';this.element.on('change','[data-ff-sort]',function(){el.sort(this.value)});this.settings.sort=sorts[0]}},sort:function(type){this.settings.sort=type;this._render()},},ready:function($el){$.widget('ffw.ffwDatalist',ffJS.ffFfwDatalist.widget);$el.on('ff:enhance','[data-ffw="datalist"]',function(){$(this).ffwDatalist()});$el.on('ff:reset','[data-ffw="datalist"]',function(){$(this).ffwDatalist('reset')})}},ffFfwEdit:{widget:{options:{},_create:function(){var subData=this.element.subData('ff');this.options=$.extend(this.options,subData);var inst=this;var $i=$('<i class="ff-edit icon-pencil"></i>');$i.appendTo(this.element);$i.on('click',function(e){e.preventDefault();var data={parent:inst.element.parent().closest('[data-ff-id]').subData('ff'),edit:subData};var url=$.fn.ffUrl('content-edit',data);$.ffw.ffwPopover({url:url,show:!0,submitUrl:url})})}},ready:function(el){$.widget('ffw.ffwEdit',ffJS.ffFfwEdit.widget);el.on('ff:enhance','[data-ffw="edit"]',function(e){$(this).ffwEdit($(this))})}},ffFfwForm:{ready:function(el){el.on('submit','[data-ff-submit="ajax"]',function(e){e.preventDefault();var url=self.location.href;if($(this).attr('action')){url=$(this).attr('action')}
var form=$(this);var opts={url:url,dataType:'json',data:form.serializeArray(),success:function(data){$.fn.ajaxResponse(form,data)},error:function(){$.ffw.ffwAlert.error('Unable to submit form')}};if($(this).attr('method')){opts.method=$(this).attr('method')}
$.ajax(opts)});el.on('submit','[data-ff-loading]',function(e){$.ffw.ffwPopover({show:!0,tpl:'popover.loading',tplParams:{title:$(this).attr('data-ff-loading')}})})},},ffFfwGallery:{widget:{options:{},display:null,thumbs:null,count:0,page:0,lock:!1,_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));this.display=new Swiper('#'+this.options.displayId,{nextButton:'.swiper-button-next',prevButton:'.swiper-button-prev',spaceBetween:10,});this.thumbs=new Swiper('#'+this.options.thumbsId,{spaceBetween:10,centeredSlides:!0,slidesPerView:'auto',slideToClickedSlide:!0});this.display.params.control=this.thumbs;this.thumbs.params.control=this.display;this.count=this.thumbs.slides.length;var inst=this;this.thumbs.on('slideChangeEnd',function(swiper){if(swiper.activeIndex>(inst.count-8)&&!inst.lock){inst.lock=!0;inst.appendSlides()}});this.display.on('onTap',function(swiper,e){if(e.target.tagName=='IMG'){swiper.slideNext()}})},appendSlides:function(){var inst=this;$.ajax({type:'POST',dataType:'json',url:'//fdata.whosdatedwho.com/services/gallery-append',data:{page:inst.page+1,count:inst.count/(inst.page+1),topic:inst.options.topic},success:function(result){var displaySlides=[];var thumbSlides=[];if(result.length>0){inst.count=inst.count+result.length;inst.page=inst.page+1;for(var i=0;i<result.length;i++){displaySlides[i]='<div class="swiper-slide"><img src="'+result[i].url+'"><div class="ff-caption">'+result[i].caption+'</div></div>';thumbSlides[i]='<div class="swiper-slide" style="background-image:url('+result[i].url+')"></div>'}
inst.display.appendSlide(displaySlides);inst.thumbs.appendSlide(thumbSlides);inst.lock=!1}}})},},ready:function(el){$.widget('ffw.ffwGallery',ffJS.ffFfwGallery.widget);el.on('ff:enhance','[data-ffw="gallery"]',function(e){$(this).ffwGallery()});el.on('ff:refresh','[data-ffw="gallery"]',function(){$(this).ffwGallery('reload')})}},ffFfwGrid:{widget:{options:{},$tbl:null,$tbody:null,$hdrs:null,$rows:null,$panel:null,_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));if(this.options.data){this.loadData(this.options.data)}
if(this.options.url){this.load(this.options.url)}
return this},loadData:function(data){var el=this;this.element.html('');var $tbl=$('<table class="ff-table'+(el.options.class?' '+el.options.class:'')+'"><thead><tr></tr></thead><tbody></tbody></table>');var $tbody=$tbl.find('tbody');var settings={};var rn=0;for(var i in data){var row=data[i];if(rn==0){var $r=$tbl.find('tr');if('selectable' in el.options){$('<th class="ff-hdr-check"><input class="ff-check" type="checkbox"></th>').appendTo($r);$r.find('input.ff-check').click(function(){$(this).closest('table').find('tbody tr input.ff-check').prop('checked',$(this).prop('checked'))})}
for(var j in row){if(j[0]=='_')continue;var lbl=j;var type='ro';if(j[0]=='.'){lbl=j.substr(j.indexOf(':')+1);type=j.substr(1,j.indexOf(':')-1)}
settings[j]={type:type,label:lbl,ref:lbl};$('<th>').attr({'data-ff-name':j,'data-ff-form-ref':'grid['+j+'][]','data-ff-type':type,'data-ff-ref':lbl}).html(lbl).appendTo($r)}}
rn++;var $r=$('<tr>');if('selectable' in el.options){$('<td class="ff-hdr-check"><input class="ff-check" type="checkbox"></td>').appendTo($r)}
for(var j in row){if(j[0]=='_')continue;if(settings[j].type=='rw'){var $i=$('<input>').attr('name','grid['+j+'][]').val(row[j]).wrap('<td>').parent().attr({'data-ff-name':j,'data-ff-ref':settings[j].ref});$i.appendTo($r);}else{$('<td>').html(row[j]).attr({'data-ff-name':j,'data-ff-ref':settings[j].ref}).appendTo($r)}}
$r.appendTo($tbody)}
$tbl.appendTo(el.element);if(el.options.actions){el.$panel=$('<div class="ff-panel">');var actions=el.options.actions.split(',');for(var i in actions){var a=actions[i];var $inp=$('<input type="button" class="ff-btn" name="action">');$inp.val(a).appendTo(el.$panel);if(a=='Save'){$inp.click(function(e){var f=el.element.closest('form').clone();f.find('[data-ffw="grid"]').remove();var data=f.serializeArray();var data2=el.data({formData:!0});for(var idx in data2){data.push(data2[idx])}
console.log(data);$.ajax({url:el.options.urlUpdate,method:'POST',data:data,dataType:'json',success:function(data){$.fn.ajaxResponse(el.element.closest('form'),data)}})})}else if(a=='Add'){$inp.click(function(e){e.preventDefault();el.add()})}else if(a=='Delete'){$inp.click(function(e){e.preventDefault();el.del()})}}
$tbl.after(el.$panel)}
el.$tbl=$tbl;el.$tbody=$tbody;el.$hdrs=$tbl.find('thead tr th');el.$rows=$tbl.find('tbody tr')},load:function(url){var el=this;$.getJSON(url,{},function(data){el.loadData(data)})},add:function(){var $row=$(this.$rows[0]).clone();$row.find('td').each(function(){if($(this).find('input').length>0){$(this).find('input').val('')}else{$(this).html('')}});$row.appendTo(this.$tbody);this.refresh()},refresh:function(){this.$rows=this.$tbl.find('tbody tr')},del:function(){this.$rows.each(function(){if($(this).find('input:first').prop('checked')){$(this).remove()}});this.refresh()},data:function(options){var $hdrs=this.$hdrs;var data=[];if(!options){options={}}
this.$rows.each(function(){var $cells=$(this).find('td');if(options.selected&&!$($cells[0]).find('input').prop('checked')){return}
var row={};$hdrs.each(function(){if($(this).is('[data-ff-name]')){var $c=$($cells[$(this).index()]);var ref=$(this).attr('data-ff-ref');var val=($c.find('input').length>0?$c.find('input').val():$c.html());if('formData' in options){ref=$(this).attr('data-ff-form-ref');data.push({name:ref,value:val})}else{row[ref]=val}}});if(!('formData' in options)){data.push(row)}});return data},find:function(field,value){return this.$rows.find('td[data-ff-ref="'+field+'"]').filter(function(){return($(this).find('input').length>0?$(this).find('input').val()==value:$(this).html()==value)}).closest('tr')},update:function(field,value,data){var $row=this.find(field,value);if($row.length>0){$row.find('td[data-ff-name]').each(function(){for(var i in data){if(i==$(this).attr('data-ff-name')){var $i=$(this).find('input').val(data[i]);if($i.length==0){$(this).html(data[i])}}}});}},},ready:function($el){$.widget('ffw.ffwGrid',ffJS.ffFfwGrid.widget);$el.on('ff:enhance','[data-ffw="grid"]',function(){$(this).ffwGrid()})}},ffFfwGx:{done:!1,errors:[],focusTriggers:function($el){$el.on('focus','[data-ff-trx="eb"]',function(e){$el.ffwTrx('add',$(this))})},store:function(el,event){var att=el.attr('data-ff-gx');if(att){var arr=att.split(',');if(typeof(ga)!='undefined'){ga('send',{hitType:'event',eventCategory:event,eventAction:arr[0],eventLabel:(arr.length>1?arr[1]:null),nonInteraction:!0})}}},error:function(err,fbTrack){if(ffJS.ffFfwGx.errors.indexOf(err)>=0){return}
ffJS.ffFfwGx.errors.push(err);if(fbTrack&&typeof(firebase)!='undefined'){if(firebase.apps.length==0){firebase.initializeApp(ffJS.public.firebase)}
var dt=new Date().toISOString().split('T');var oRef=firebase.database().ref('exceptions/'+dt[0]+"/"+dt[1].replace(/\./,'-').replace(/Z/,''));oRef.set({'url':window.location.href,'ref':document.referrer,'agent':navigator.userAgent,'error':err})}
ga('send','exception',{'exDescription':err,'exFatal':!1})},readyFirst:function($el){if(ffJS.ffFfwGx.done)return;$('body').on('click','[data-ff-gx-click]',function(e){ffJS.ffFfwGx.store($(this),'Click')});$('body').on('focus','[data-ff-gx-focus]',function(e){ffJS.ffFfwGx.store($(this),'Focus')});$('[data-ff-gx-view]').each(function(e){ffJS.ffFfwGx.store($(this),'Page View')});ffJS.ffFfwGx.done=!0}},ffFfwInfinite:{widget:{options:{navSelector:'.ff-ipaging',contentSelector:'ul',nextSelector:"a.ff-inext",itemSelector:"li",pathParse:function(path){if(path.match(/^(.*?page=)2([\/\&].*|$)/)){path=path.match(/^(.*?page=)2([\/\&].*|$)/).slice(1);return path}
return[]},prefill:!0,bufferPx:350,debug:!1,dataType:'html',appendCallback:!1,loading:{speed:0,msg:$('<div id="infscr-loading" style="clear:left;text-align:center;margin-top:20px;margin-bottom:20px;"><img alt="Loading..." src="//static.famousfix.com/www/images/ajax-loader-fff.gif"></div>')}},blockName:!1,_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));this.blockName=this.element.closest('fieldset[data-ff-name]').attr('data-ff-name');if(this.blockName){var s='fieldset[data-ff-name="'+this.blockName+'"]';this.options.contentSelector=s+' [data-ffw=infinite] '+this.options.contentSelector;this.options.navSelector=s+' [data-ffw=infinite] '+this.options.navSelector;this.options.itemSelector=this.options.contentSelector+' '+this.options.itemSelector;var n=$(this.options.navSelector).find(this.options.nextSelector);n.attr('href',n.attr('href')+'&_block='+this.blockName)}
$(this.options.itemSelector).each(function(){$(this).attr('data-md5',$.md5($(this).html()))});this.bind()},bind:function(){if(this.element.data('infinitescroll')){this.element.data('infinitescroll',null);this.element.infinitescroll('destroy')}
ffJS.ffFfwInfinite.$inf=this.element;this.element.infinitescroll(this.options,this.update)},update:function(response,options){var ul=this;$(response).each(function(){var m=$.md5($(this).html());if($(options.itemSelector+'[data-md5="'+m+'"]').length==0){$(this).attr('data-md5',m);$(this).appendTo(ul)}})}},ready:function($el){$.widget('ffw.ffwInfinite',ffJS.ffFfwInfinite.widget);$el.on('ff:enhance','[data-ffw="infinite"]',function(){$(this).ffwInfinite()})},count:0,$inf:null,hasNext:!1,seeMore:function(){if(ffJS.ffFfwInfinite.count>5){return}
var gal=$container;if($(window).height()>=gal.height()){var pager=gal.find('.pager:last-child');if(pager.length==0){pager=$('.pager:last-child')}
if(pager.find('.next a').attr('href')&&$('.infscr-end').length==0){$('#infscr-loading').show();gal.infinitescroll('retrieve');setTimeout(function(){axendless.seeMore($container,count+1)},1000,$container,count)}}else{$(window).trigger('scroll')}
if($("body").height()<=$(window).height()){}},},ffFfwInteraction:{widget:{options:{},target:'',tData:{},_create:function(){if(this.element.is('[data-ffw="interaction"]')){this.options=$.extend(this.options,this.element.subData('ff'));this.target=this._getTarget();if(this.target.length!=0){this.tData=this.target.subData('ff')}else{this.tData=this.element.subData('ff')}
if('trxOff' in this.options){this.tData.trxOff=''}
var classes='ff-interaction';switch(this.options.action){case 'like':case 'likeComment':classes+=' icon-heart';if('liked' in this.tData){classes+=' ff-active'}
$(this.element).attr('data-ff-trx','');break;case 'share':classes+=' icon-share';if('shared' in this.tData){classes+=' ff-active'}
break;case 'flag':classes+=' icon-flag';if('flagged' in this.tData){classes+=' ff-active'}
break;case 'delete':classes+=' icon-remove';break;case 'vote':this.element.html('<i class="icon-thumbs-'+this.options.dir+'"></i>'+'<v>'+(this.options.v?this.options.v:0)+'</v>');this.tData.vote=this.options.dir=='up'?1:-1;break}
this.element.addClass(classes)}else{if(this.options.run){this.run()}}},run:function(){this['_'+this.options.action]()},_vote:function(){var inst=this;$.ajax({method:"POST",url:$.fn.ffUrl('content-vote'),data:this.tData,dataType:'json',success:function(data){if(data.success){var val=data['v'+inst.options.dir];inst.element.find('v').html(val)}else{$.fn.ajaxResponse(!1,{formError:'CONTENT.VOTED'})}},error:function(xhr,status,error){$.fn.ajaxResponse(!1,{formError:'GLOBAL.REQUEST_FAIL'})}})},_likeComment:function(){var inst=this;$.ffw.ffwPopover({tpl:'interaction.like_comment_form',tplParams:this.tData,size:'medium',show:!0,submitUrl:$.fn.ffUrl('content-like'),afterSuccess:function(data,res){inst._likeSuccess(res)}})},_like:function(){var inst=this;$.ajax({method:"POST",url:$.fn.ffUrl('content-like'),data:this.tData,dataType:'json',success:function(data){if(!('trxOff' in inst.options)){if(data.success){inst.target.trigger('ff:trx-success',['like'])}else{inst.target.trigger('ff:trx-fail',['like'])}}
inst._likeSuccess(data)},error:function(xhr,status,error){$.fn.ajaxResponse(!1,{formError:'GLOBAL.REQUEST_FAIL'})}})},_likeSuccess:function(data){var el=this.element;if(data.success){el.toggleClass('ff-active')}else if(data.login){$.ffw.ffwPopover({tpl:'popover.message',tplParams:{message:$.fn.messageText('USER.AUTH')},show:!0,})}},_share:function(){this.tData.buttons=ffJS.ffFfwInteraction.shareBtns(this.tData);$.ffw.ffwPopover({tpl:'interaction.share_form',tplParams:this.tData,show:!0,})},_flag:function(){$flag=this.element;var url=$.fn.ffUrl('content-flag',{id:this.tData.id,tid:this.tData.tid,url:this.tData.url});var reasons='';for(var i in $.ffw.ffwLookup.flagReasons){var res=$.ffw.ffwLookup.flagReasons[i];reasons+=$.fn.ffTemplate('interaction.flag_reason',{value:res.display,reason:res.display})}
this.tData.reasons=reasons;$.ffw.ffwPopover({tpl:'interaction.flag_form',tplParams:this.tData,show:!0,submitUrl:url,afterSuccess:function(data,res){$flag.addClass('ff-flagged')}})},'_delete':function(){var $el=this.target;var url=$.fn.ffUrl('content-delete',{id:this.tData.id,tid:this.tData.tid,});$.ffw.ffwPopover({tpl:'popover.confirm',tplParams:{title:'Are you sure you want to delete this?',message:''},show:!0,submit:function(e,data){$.ajax({method:"POST",url:url,data:data.values,dataType:'json',success:function(result,status,xhr){$el.hide();$.ffw.ffwPopover.close()},error:function(xhr,status,error){$.fn.ajaxResponse(data.form,{formError:'GLOBAL.REQUEST_FAIL'})}})}})},_getTarget:function(){if(this.options.target){return $(this.options.target)}else{return this.element.closest('[data-ffw="content"]')}},},shareBtns:function(content){var shareBtns='';var shares=['facebook','twitter','pinterest'];for(var i=0;i<shares.length;++i){var opts={network:shares[i],text:content.title,img:content.img,url:content.url,id:content.id,tid:content.tid,eid:content.eid,};shareBtns+=$.fn.ffTemplate('social.share_button',opts)}
return shareBtns},ready:function(el){$.widget('ffw.ffwInteraction',ffJS.ffFfwInteraction.widget);el.on('ff:enhance','[data-ffw="interaction"]',function(){$(this).ffwInteraction()});el.on('click','[data-ffw="interaction"]',function(e){e.preventDefault();var $inst=$(this);if(!$inst.hasClass('ff')){$(this).ffwInteraction()}
$inst.ffwInteraction('run')})}},ffFfwLookup:{ready:function(){$.widget('ffw.ffwLookup',{});$.ffw.ffwLookup.flagReasons=[{"selection_entry_id":"18497","display":"Adult content","alt_display":"Adult Content","url":"adult-content"},{"selection_entry_id":"740","display":"Copyright issue","alt_display":"Copyright","url":"copyright"},{"selection_entry_id":"18498","display":"Duplicate profile\/content","alt_display":"Duplicate Content","url":"duplicate-content"},{"selection_entry_id":"18499","display":"Incorrect\/not true\/unsubstantiated","alt_display":"Incorrect","url":"incorrect"},{"selection_entry_id":"18496","display":"Low quality content","alt_display":"Low Quality Image","url":"low-quality-image"},{"selection_entry_id":"21853","display":"Other reason","alt_display":"Other reason","url":"other-reason"},{"selection_entry_id":"18500","display":"Slander\/abusive","alt_display":"Slander","url":"slander"},{"selection_entry_id":"739","display":"Spam","alt_display":"Spam","url":"spam"},{"selection_entry_id":"21852","display":"Violence\/hate\/propaganda","alt_display":"Violence\/hate\/propaganda","url":"violence-hate-propaganda"},{"selection_entry_id":"18501","display":"Watermarked image","alt_display":"Watermarked Image","url":"watermarked-image"},{"selection_entry_id":"21851","display":"Website bug\/data problem","alt_display":"Website bug","url":"website-bug"}]}},ffFfwMedia:{saveData:function($e,value){if($e.find('input').length==0){$('<input>').attr({'type':'hidden','name':$e.closest('[data-ffw="media"]').attr('data-ff-name'),'value':value}).appendTo($e)}},load:function($el){$el.addClass('ff');if(!$el.is('[data-ff-name]')){$el.attr('data-ff-name','media[]')}
var tn=$el.attr('data-ff-name');if(tn.endsWith('[]')){tn=tn.replace(/\[\]$/,'[text]')}else{tn=tn+'[text]'}
if($el.is('[data-ff-style="popover"]')){var $p=$($.fn.ffTemplate('media.popover'));$p.appendTo($el);if($el.is('[data-ff-value]')){}else{$p.html('CLICK TO ADD NEW IMAGES HERE')}
$p.click(function(){var $m=$el.clone();$m.data('ffSelected',$p.find('.ff-selected-items')).removeAttr('data-ff-style').removeAttr('data-ff--done').html('');var name=$el.attr('data-ff-name');$.ffw.ffwPopover({contents:'<form><h3>Add Images / Videos</h3><span id="media-tmp"></span>'+'<div class="ff-form-buttons"><button class="ff-btn type="submit">Update</button> <button data-ff-close class="ff-btn">Cancel</button></div></form>',beforeShow:function(e,data){data.popover.find('#media-tmp').replaceWith($m);data.popover.ffEnhance()},size:'auto',afterShow:function(e,data){data.object.center()},submit:function(e,data){var items=[];var values=data.form.serializeArray();for(var i in values){if(values[i].name==name){items.push(values[i].value)}}
$el.data('ffValue',{selected:items});console.log(data,items);$p.html('');data.form.find('.ff-selected-items').clone().appendTo($p);if($p.html()==''){$p.html('CLICK TO ADD NEW IMAGES HERE')}
$.ffw.ffwPopover.close()},show:!0})});return}
var options={'tab_library':($el.is('[data-ff-library]')?$.fn.ffTemplate('media.tab_library'):''),'tab_url':($el.is('[data-ff-url]')?$.fn.ffTemplate('media.tab_url'):''),'tab_file':($el.is('[data-ff-file]')?$.fn.ffTemplate('media.tab_file'):''),'content_library':($el.is('[data-ff-library]')?$.fn.ffTemplate('media.content_library'):''),'content_url':($el.is('[data-ff-url]')?$.fn.ffTemplate('media.content_url'):''),'content_file':($el.is('[data-ff-file]')?$.fn.ffTemplate('media.content_file'):''),'header':($el.is('[data-ff-text]')?$.fn.ffTemplate('media.header_text',{name:tn,placeholder:$el.attr('data-ff-text-placeholder')}):'')};$el.html($.fn.ffTemplate('media.content',options));$el.find('.ff-tabs .ff-tab-page:first').addClass('ff-active');var $selectedItems=$el.find('.ff-selected-items');var doLoad=!0;if($el.data('ffSelected')&&$el.data('ffSelected').length>0){$selectedItems.html($el.data('ffSelected').html());doLoad=!1}
$selectedItems.sortable({items:'.ff-gal-im',placeholder:'ff-gal-im-placeholder'});ffJS.ffFfwMedia.library($el);ffJS.ffFfwMedia.url($el);ffJS.ffFfwMedia.file($el);$el.on('click','.ff-selected-items .ff-gal-im span.icon-remove',function(){if(confirm('Please confirm delete')){$(this).closest('.ff-gal-im').remove();ffJS.ffFfwMedia.refreshSelected($el)}});$el.on('click','.ff-gal .ff-gal-im',function(e){if(e.target.tagName=="I")return;if($(this).hasClass('ff-active')){$(this).removeClass('ff-active');var id=$(this).attr('data-ff-id');$selectedItems.find('[data-ff-id="'+id+'"]').remove()}else{ffJS.ffFfwMedia.preview($(this));var $im=$(this).clone();$('<span class="icon-remove">').appendTo($im);$im.appendTo($selectedItems);$(this).addClass('ff-active');var $i=$im.find('i[data-ff-verify]');if($i.length>0){$i.attr('data-ff-contents','Verifying image can be retrieved from original source');$im.trigger('ff:media-im')}else{ffJS.ffFfwMedia.saveData($im,unescape($im.attr('data-ff-value')))}}});$el.on('ff:media-im','.ff-gal-im',function(){if($(this).is('[data-ff-verified]')){return}
var $e=$(this);var $i=$e.find('i');$.ajax({url:'/media/cache',dataType:'json',data:{url:$i.attr('data-ff-verify'),parent:$e.attr('data-ff-parent')},success:function(data){if(data.huge&&data.huge.size>0){$e.attr('data-ff-verified','1').addClass('ff-imok');$i.attr('data-ff-orig',data.huge.src).attr('data-ff-contents',escape(unescape($i.attr('data-ff-verify-contents')).format({src:data.huge.src})));ffJS.ffFfwMedia.saveData($e,unescape(data.huge.id))}else{$e.attr('data-ff-verified','0').addClass('ff-imbad');$i.attr('data-ff-contents','Unable to retrieve image from original source');$('<b class="icon-remove" title="Unable to retrieve image"></b>').insertBefore($e.find('i'))}},error:function(){$e.attr('data-ff-verified','0').addClass('ff-imbad');$i.attr('data-ff-contents','Unable to retrieve image from original source');$('<b class="icon-remove" title="Unable to retrieve image"></b>').insertBefore($e.find('i'))}})});if(doLoad){ffJS.ffFfwMedia.loadData($el,$selectedItems)}},displayInit:function(){$.ffw.ffwPopover.center()},loadData:function($el,$selectedItems){var d=!1;if($el.is('[data-ff-value]')){d=$.parseJSON($el.attr('data-ff-value'))}else if($el.data('ffValue')){d=$el.data('ffValue')}
if(d){if(d.selected){$.ajax({url:'/media/load',data:{items:d.selected,sizes:['80x80','huge']},dataType:'json',success:function(data){var s='';for(var i in data){var im=data[i].huge;if(im.video){im.popover=$.fn.youtubeEmbed(im.video)}else{im.orig=im.src;im.src=data[i]['80x80'].src;im.popover='<img src="'+im.orig+'"'+(im.width>0?' style="width:'+im.width+'px;height:'+im.height+'px"':'')+'>'}
var $im=$(ffJS.ffFfwMedia.getGalleryItem(im));$('<span class="icon-remove">').appendTo($im);$im.appendTo($selectedItems);ffJS.ffFfwMedia.saveData($im,unescape($im.attr('data-ff-value')))}
ffJS.ffFfwMedia.refreshSelected($el);ffJS.ffFfwMedia.displayInit()}})}}},preview:function($target){return;var $el=$target.closest('[data-ffw="media"]');if($target.hasClass('ff-gal-im')){if($el.find('.ff-gal-im i.ff-pin').length>0){$target=$target.find('i')}else{return}}
if($target.get(0).tagName=="I"){$el.find('.ff-gal-im i.ff-pin').removeClass('ff-pin');if($el.find('[data-ff-preview-image]').attr('data-ff-img')==$target.attr('data-ff-orig')){$el.find('[data-ff-preview]').hide('slow');$el.find('[data-ff-preview-image]').attr('data-ff-img','')}else{$target.addClass('ff-pin');var h='';if($target.is('[data-ff-video]')){h=$.fn.youtubeEmbed($target.attr('data-ff-orig'))}else{h='<img src="'+$target.attr('data-ff-orig')+'">'}
$el.find('[data-ff-preview-image]').html($target.attr('data-ff-info')+"<br>"+h).attr('data-ff-img',$target.attr('data-ff-orig'));$el.find('[data-ff-preview]').show('slow')}}},getGalleryItem:function(data){var x='<div class="ff-gal-im" data-ff-id="im_'+data.id+'"'+(data.parent?' data-ff-parent="'+data.parent+'"':'')+' data-ff-value="'+escape(data.value)+'">'+'<b class="icon-ok"></b>'+(data.src?'<img src="'+data.src+'">':(data.video?'<b class="ff-youtube icon-youtube"></b>':''))+'<i class="icon-search" '+(data.verify?'data-ff-verify-contents="'+escape(data.popoverVerify)+'" data-ff-verify':'data-ff-orig=')+'="'+data.orig+'" data-ffw="popover" data-ff-navigate data-ff-contents="'+escape(data.popover)+'"></i>'+'</div>';return x},addToGallery:function($gal,data,page,more){var s='';for(var i in data){data[i].value=data[i].id;data[i].popover='<img src="'+data[i].orig+'" style="width:'+data[i].width+'px;height:'+data[i].height+'px">';s+=ffJS.ffFfwMedia.getGalleryItem(data[i]);}
if(s.length==0&&page==1){$('<label>No images available.  You may add your own by adding from a URL or by uploading a file.</label>').appendTo($gal);return}
var $g=$('<div class="ff-gal"><label>Click to select</label><span class="ff-pagination"><i class="'+(page==1?'ff-disabled ':'')+'ff-prev ff-pointer icon-chevron-left"></i>'+'<span class="ff-page">'+page+'</span>'+'<i class="ff-next ff-pointer icon-chevron-right'+(more?'':' ff-disabled')+'"></i></span><div class="ff-gal-images">'+s+'</div></div>');$g.appendTo($gal)},refreshSelected:function($m){var $selected=$m.find('.ff-selected-items [data-ff-id]');var $galItems=$m.find('.ff-gal .ff-gal-im[data-ff-id]');$galItems.each(function(){var $i=$(this);if($selected.filter(function(){if($(this).attr('data-ff-id')==$i.attr('data-ff-id'))return !0}).length>0){if(!$(this).hasClass('ff-active')){$(this).addClass('ff-active')}}else{if($(this).hasClass('ff-active')){$(this).removeClass('ff-active')}}})},library:function($el){var $lib=$el.find('.ff-tab-library');if($lib.length==0)return;if($lib.is('[data-ff-library-url]')){var f;function loadlib(page){if(f){f.abort()}
page=Math.max(1,page);var mode=0;if($lib.attr('data-ff-page')<page){mode=-1}else{mode=1}
$lib.attr('data-ff-page',page);f=$.ajax({url:$el.attr('data-ff-library-url'),data:{page:$lib.attr('data-ff-page')},dataType:'json',success:function(data){$lib.find('.ff-load-msg').remove();var $g=$lib.find('.ff-gal-images');var more=!1;if(data.length==22){data.pop();more=!0}
if($g.length>0){$g.animate({left:$g.width()*mode*1.5},250,function(){$lib.html('');ffJS.ffFfwMedia.addToGallery($lib,data,page,more);$g.css({left:0});ffJS.ffFfwMedia.refreshSelected($el)})}else{ffJS.ffFfwMedia.addToGallery($lib,data,page,more);ffJS.ffFfwMedia.refreshSelected($el);ffJS.ffFfwMedia.displayInit()}}})}
loadlib(1);$lib.on('click','.ff-next:not(.ff-disabled)',function(){loadlib(parseInt($lib.attr('data-ff-page'))+1)});$lib.on('click','.ff-prev:not(.ff-disabled)',function(){loadlib(parseInt($lib.attr('data-ff-page'))-1)})}},loadImages:function(data,onload){$.each(data,function(index,value){var img=$('<img>').attr('src',value);img.load(function(){if(this.width>=128&&this.height>=128){onload(this)}})})},url:function($el){var $url=$el.find('.ff-tab-url');if($url.length==0)return;var a=!1;$url.on('keypress paste','input.ff-media-link',function(e){if(e.keyCode==13){if(a){a.abort()}
var c=$url.find('.ff-media-list');c.html('');c.attr('data-ff-url',$(this).val());a=$.ajax({url:'/media/get',dataType:'json',data:{url:$(this).val()},success:function(data){console.log(data,this);var t=data.title;if(data.text){t=data.text}
if(!t){t=data.source}
var h='';var $gal;if(data.images||data.embed){h='<div class="ff-help"><label>Click an image to add from <span>'+$.fn.getDomainLabel(data.url,'{url}')+'</span></label></div><div class="ff-gal"></div>';$(h).appendTo(c);$gal=$url.find('.ff-gal')}
if(data.embed){var idata={id:'v_'+data.embed,value:"v_"+data.embed,width:null,height:null,video:data.embed,popover:$.fn.youtubeEmbed(data.embed),parent:c.attr('data-ff-url')};$(ffJS.ffFfwMedia.getGalleryItem(idata)).appendTo($gal);$(data.embed).appendTo($gal)}
if(data.images){var onload=function(im){var idata={id:'u_'+$.md5($(im).attr('src')),src:$(im).attr('src'),orig:$(im).attr('src'),popoverVerify:'<img src="{src}" style="width:'+im.width+'px;height:'+im.height+'px">',popover:'<img src="'+$(im).attr('src')+'" style="width:'+im.width+'px;height:'+im.height+'px">',verify:!0,parent:c.attr('data-ff-url')};$(ffJS.ffFfwMedia.getGalleryItem(idata)).appendTo($gal);ffJS.ffFfwMedia.refreshSelected($el)};ffJS.ffFfwMedia.loadImages(data.images,onload)}}});e.preventDefault()}});$url.on('click','.ff-media-list .ff-media-img',function(){$(this).find('.selector').toggle();var p=$(this).closest('.ff-media-list').attr('data-ff-url')})},file:function($el){var $file=$el.find('.ff-tab-file');if($file.length==0)return;var $elInput=$el.find('[type="file"]');var inpTpl=$elInput.clone().wrap('<div>').parent().html();$file.on('change','[type="file"]',function(){var $form=$(this).closest('form');var $c=$file.find('.ff-media-list');var subHandler=function(e){var formData=new FormData($form[0]);$.ajax({url:'/media/upload',type:'POST',data:formData,cache:!1,dataType:'json',processData:!1,contentType:!1,success:function(data){if(data.formError){alert(data.formError);return}
if(data){var s='';var click=[];for(var i in data){var di=data[i];var im={id:di.huge.id,value:di.huge.value,orig:di.huge.src,src:di['80x80'].src,popover:'<img src="'+di.huge.src+'" style="width:'+di.huge.width+'px;height:'+di.huge.height+'px">'};var sel='[data-ff-id="im_'+im.value+'"]';if($c.find(sel).length==0){click.push(sel);s+=ffJS.ffFfwMedia.getGalleryItem(im)}}
if($c.find('.ff-gal').length==0){var h='<div class="ff-help"><label>Uploaded files</label></div><div class="ff-gal"></div>';$(h).appendTo($c)}
$(s).appendTo($c.find('.ff-gal'));$c.find(click.join(',')).trigger('click');ffJS.ffFfwMedia.refreshSelected($el)}},error:function(jqXHR,textStatus,errorThrown){},complete:function(){$elInput.replaceWith(inpTpl);$elInput=$el.find('[type="file"]')}})};subHandler()})},init:function(){$.fn.ffwMedia=function($el){if($el.is('[data-ff--done]')){return}
$el.attr('data-ff--done','');ffJS.ffFfwMedia.load($el)}},ready:function($el){$el.on('ff:enhance','[data-ffw="media"]',function(){$.fn.ffwMedia($(this))})}},ffFfwOnline:{widget:{options:{},_create:function(){if(firebase.apps.length==0){firebase.initializeApp(ffJS.public.firebase)}
this.options=$.extend(this.options,this.element.subData('ff'));this.store('pages',('page' in this.options?this.options.page:!1),this.options.user)},store:function(node,id,id2,val){if(!val){val=!0}
if(!id){id='*'}
var oRef=firebase.database().ref('online/'+node+'/'+id+(id2?'/'+id2:''));var cRef=firebase.database().ref('.info/connected');try{cRef.on('value',function(snap){if(snap.val()){var con=oRef.set('O');var idle=new Idle({onHidden:function(){oRef.set('H')},onVisible:function(){oRef.set('O')},onAway:function(){oRef.remove()},onAwayBack:function(){oRef.set('O')},awayTimeout:1000*60*10}).start();oRef.onDisconnect().remove()}},function(err){console.log(err)})}catch(ex){console.log(ex)}},},top:function(){var tRef=firebase.database().ref('online/top');tRef.on('value',function(snap){if(snap.exists()){var d=snap.val();var s='<div class="ff-online"><h2>Trending Now</h2><div class="ff-panel">'+'<div>Here are the top profiles being viewed right now:</div>'+'<ul>';for(var i in d.topics){var t=d.topics[i];s+='<li>'+'<a href="/dating/'+t.url+'">'+'<span>'+(parseInt(i)+1)+'.</span>'+'<img src="'+(t.img.substr(0,7)=='http://'?t.img:'http://img3.bdbphotos.com/images/80x80/'+t.img)+'">'+'<div>'+t.name+'<div class="ff-status">'+(t.status?t.status:'&nbsp;')+'</div>'+'</div>'+'</a></li>';if((parseInt(i)+1)%5==0){s+='</ul><ul>'}}
s+='</ul></div></div>';$('[data-ffw="online-top"]').html(s)}})},ready:function(el){$.widget('ffw.ffwOnline',ffJS.ffFfwOnline.widget);$('[data-ffw="online"]').each(function(){$(this).ffwOnline();$('[data-ffw="online-top"]').each(function(){ffJS.ffFfwOnline.top()})})}},ffFfwPopover:{pageHtml:!1,scrollPos:!1,bodyClass:!1,widget:{options:{size:'large',},_create:function(){var subData=this.element.subData('ff');var inst=this;if(this.element.is('[data-ffw="popover"]')){this.options=$.extend(this.options,subData);if(this.element.is('[data-ff-tpl]')){this.options=$.extend(this.options,{tplParams:this.element.subData('ff-tpl-param')})}
if('contents' in this.options){this.options.contents=unescape(this.options.contents)}}
if('tpl' in this.options){var params={'title':'','message':''};if('tplParams' in this.options){params=$.extend(params,this.options.tplParams)}
this.options.contents=$.fn.ffTemplate(this.options.tpl,params);if(params.trxOff){this.options.trxOff=''}}
if(this.options.url){var d=this.element.subData('ff-url');$.ajax({url:this.options.url,data:d,async:!1,success:function(data){inst.options.contents=data},error:function(xHR){console.log(xHR)}})}
if(this.options.contents){var cx=$('<div>'+this.options.contents+'</div>');if(cx.children().length>0){var o=cx.children().subData('ff');if(o){this.options=$.extend(this.options,o)}}}
if(this.options.show){this.show()}
if(!('submit' in this.options)){if('submitUrl' in this.options){this.options.submit=function(e,data){if(data.options.values){data.values=$.extend(data.options.values,data.values)}
$.ajax({method:"POST",url:data.options.submitUrl,data:data.values,dataType:'json',success:function(result){if('trx' in data.options&&!('trxOff' in data.options)){if(result.success){data.form.trigger('ff:trx-success',[data.options.trxType])}else{data.form.trigger('ff:trx-fail',[data.options.trxType])}}
$.fn.ajaxResponse(data.form,result);if(result.success){inst.hide(!0);if(data.options.afterSuccess){data.options.afterSuccess(data,result)}}},error:function(xhr,status,error){if(data.options.error){data.options.error()}else{$.ffw.ffwAlert({tpl:'alert.basic',tplParams:{message:'Login Error. Please refresh and start again'},type:'error',show:!0,})}}})}}}
if(!('values' in this.options)){this.options.values=this.element.subData('ff-value')}},show:function(){this.hide();var $w=this;var mId='popover_'+$.md5(this.options.contents);if(this.options.popoverExpireMins){var n=this.options.tpl;if(!n){n=mId}
this.options.cookie=n;if($.cookie(n)=='hide'){return}}
$pc=$('<div class="ff-popover-canvas"></div>');$pc.appendTo($('body'));if('class' in this.options){$pc.addClass(this.options.class)}
ffJS.ffFfwPopover.bodyClass='ff-popover-active-'+this.options.size;$('body').addClass(ffJS.ffFfwPopover.bodyClass);$pc.show();if('navigate' in this.options){this.showNavigation()}
var isNew=!1;var $p=$('[data-ff-cache-id="'+mId+'"]');if($p.length==0){$p=$($.fn.ffTemplate('popover.container',this.options));$p.appendTo($('body'));$p.data('inst',this);isNew=!0}
var cm='';if('closeMessage' in this.options){cm+=this.options.closeMessage}
var iClose='<span class="ff-close-link ff-pointer">'+cm+'<i class="icon-remove right"></i></span>';if('modal' in this.options){$pc.attr('data-ff-modal',!0)}
if('closeUrl' in this.options){$pc.attr('data-ff-close-url',this.options.closeUrl)}
if(isNew){$p.html(iClose+this.options.contents).attr('data-ff-cache-id',mId);this._trigger('beforeShow',null,{element:this.element,'popover':$p,object:this});var $im=$p.find('img');var $form=$p.find('form');if($form.length>0){var $el=this;$form.submit(function(e){e.preventDefault();var result={};$.each($(this).serializeArray(),function(){result[this.name]=this.value});var res=$el._trigger('submit',e,{form:$(this),values:result,options:$el.options})})}
if(this.options.values){for(var i in this.options.values){$form.find('[name="'+i+'"]').val(this.options.values[i])}}}
function render(){if($im.length>0){var iw=parseInt($im.css('width'));var ih=parseInt($im.css('height'));var nw=Math.min(iw,$(window).width()*0.7);var nh=ih;if(nw<iw){nh=(nw/iw)*ih}
nh=Math.min(ih,$(window).height()*0.7,nh)
if(nh<ih){nw=(nh/ih)*iw}
if(nw!=iw){$im.width(nw).height(nh)}
$p.removeClass('ff-'+$w.options.size)}
$w.center();$w._trigger('afterShow',null,{element:$w.element,'popover':$p,object:$w})}
if(isNew){if($im.length==0||parseInt($im.css('width')>0)){render()}else{if($im.length>0){if($im[0].width==0){$im.load(function(){render()}).error(function(){alert("Error showing large image")})}else{render()}}}}
ffJS.ffFfwPopover.pageHtml=!1;if(this.options.size=='full'){ffJS.ffFfwPopover.scrollPos=$(window).scrollTop();$('<div id="ff-popover-tmp" class="hide">').appendTo($('body'));$('body').ffChangeParent('#ff-popover-tmp',{exclude:'.ff-popover.ff-full,#ff-popover-tmp'})}
if(isNew){$p.ffEnhance()}else{$p.show()}
$pTrx=$p.find('[data-ff-trx]');if('trx' in this.options||$pTrx.length>0){this._activateTrx($p,$pTrx)}},showNavigation:function(){var $n=$('.ff-popover-navigate');if($n.length==0){$n=$('<div class="ff-popover-navigate">');var $i=$('<div class="ff-inner"><div class="ff-pagination"><i class="ff-prev icon-chevron-left"></i> | <i class="ff-next icon-chevron-right"></i></div></div>');var $prev=this.element.closest('.ff-gal-im').prev().find('[data-ffw="popover"]');if($prev.length>0){$i.find('.ff-prev').click(function(){$n.remove();$prev.click()})}else{$i.find('.ff-prev').addClass('ff-disabled')}
var $next=this.element.closest('.ff-gal-im').next().find('[data-ffw="popover"]');if($next.length){$i.find('.ff-next').click(function(){$n.remove();$next.click()})}else{$i.find('.ff-next').addClass('ff-disabled')}
$i.appendTo($n);$n.appendTo('body')}},expirePopover:function(){if(this.options.cookie){var o={path:'/','domain':document.domain.replace(/[^\.]+/,"")};if(this.options.popoverExpireMins){var date=new Date();date.setTime(date.getTime()+(this.options.popoverExpireMins*60*1000));o.expires=date}
$.cookie(this.options.cookie,'hide',o)}
ffJS.ffFfwPopover.hide(!0)},center:function(){ffJS.ffFfwPopover.center()},hide:function(noTrx){ffJS.ffFfwPopover.hide(noTrx)},_activateTrx:function($p,$pTrx){if($pTrx.length>0){this.options.trx='';this.options.trxType=$pTrx.data('ffTrxType')}
if(!('trxOff' in this.options.tplParams)&&('trx' in this.options||$p.find('[data-ff-trx]'))){var ptData=$pTrx.subData('ff');if(ptData.id){$p.attr('data-ff-id',ptData.id);$p.attr('data-ff-tid',ptData.tid);$p.attr('data-ff-eid',ptData.eid)}
$p.attr('data-ff-trx',this.options.trx);$p.attr('data-ff-trx-type',this.options.trxType);$p.attr('data-ff-trx-off',this.options.trxOff);$p.trigger('ff:trx-open',[this.options.trxType])}},},isActive:function(){return $('.ff.ff-popover:visible').length>0},hide:function(noTrx){if(noTrx!=!0){var $p=$('.ff-popover[data-ff-trx]');if($p.length>0){$p.trigger('ff:trx-close',[$p.attr('data-ff-trx-type')])}}
$('.ff-popover').each(function(){if($(this).attr('data-ff-cache-id')){$(this).hide()}else{$(this).remove()}});$('.ff-popover-canvas,.ff-popover-browser,.ff-popover-navigate').remove();$('#ff-popover-tmp').ffChangeParent('body').remove();if(ffJS.ffFfwPopover.scrollPos){$("html, body").scrollTop(ffJS.ffFfwPopover.scrollPos);ffJS.ffFfwPopover.scrollPos=!1}
if(ffJS.ffFfwPopover.bodyClass){$('body').removeClass(ffJS.ffFfwPopover.bodyClass);ffJS.ffFfwPopover.bodyClass=!1}},center:function(){var $p=$('.ff-popover');$p.css({'left':(($(window).width()-$p.outerWidth())/2)+'px','top':(($(window).height()-$p.outerHeight())/2)+'px','right':'auto'})},ready:function(el){$.widget('ffw.ffwPopover',ffJS.ffFfwPopover.widget);$.ffw.ffwPopover.close=function(noTrx){ffJS.ffFfwPopover.hide(noTrx)};$.ffw.ffwPopover.center=function(){ffJS.ffFfwPopover.center()};el.on('click','[data-ffw="popover"]',function(e){e.preventDefault();$(this).ffwPopover().data('ffw-ffwPopover').show()});el.on('click','.ff-popover-canvas:not([data-ff-modal]),.ff-popover .ff-close-link,.ff-popover [data-ff-close]',function(e){e.preventDefault();var inst=$('.ff-popover').data('inst');var $t=$(this);function closeUrl(){if($t.attr('data-ff-close')&&$t.attr('data-ff-close').length>0){var f=$t.attr('data-ff-close');inst[f]();return}
if(inst&&inst.options.closeUrl){if(self.location.href==inst.options.closeUrl){self.location.reload()}else{self.location.href=inst.options.closeUrl}
return}
ffJS.ffFfwPopover.hide()}
if('trxFlush' in $t.subData('ff')||(inst&&inst.options.closeUrl)){if(!('trxAction' in $t.subData('ff'))){$t.trigger('ff:trx-close',[inst.options.trxType])}
$t.trigger('ff:trx-flush');setTimeout(function(){closeUrl()},300)}else{closeUrl()}});el.find('[data-ffw="popover"][data-ff-target]').each(function(){var $p=$(this);el.on('click',$(this).attr('data-ff-target'),function(e){e.preventDefault();$p.ffwPopover().data('ffw-ffwPopover').show()})});el.find('[data-ffw="popover"][data-ff-show]').each(function(){$(this).ffwPopover().data('ffw-ffwPopover').show()})}},ffFfwScroll:{widget:{options:{horizontal:1,itemNav:'basic',smart:1,activateOn:'click',mouseDragging:0,touchDragging:0,releaseSwing:0,startAt:0,scrollBy:0,speed:500,elasticBounds:1,easing:'easeOutExpo',dragHandle:1,dynamicHandle:1,clickBar:1,interactive:".ff-scroll-notouch"},callbacks:{},sly:null,padding:0,_create:function(){var subData=this.element.subData('ff');this.options=$.extend(this.options,subData);var inst=this;this.element.find('ul').css('min-width','auto');var sel=this.element.find('li[data-ff-active]');if(sel.length>0){this.options.startAt=sel.index()}
if('leftOffset' in this.options){this.element.find('ul').prepend($('<li class="ff-scroll-notouch" style="background-color:transparent;width:'+$(this.options.leftOffset).offset().left+'px"></li>'));this.element.addClass('ff-preload')}
this.element.width(this.element.width());var set=this.element.find('li:hidden').first().attr('class');var endpoint=this.element.width();if('history' in this.options){$('html').on('ffw:history','body',function(){inst.element.sly.activate(0)})}
this.callbacks={change:function(){if(this.pos.dest>this.pos.end-454){inst._append();this.reload()}},active:function(event,index){$(this.items[index].el).find('[data-ff-onchange]').trigger('ffw:click');if('leftOffset' in this.options){if($(this.items[index].el).offset().left>endpoint||$(this.items[index].el).offset().left<inst.element.find('li.ff-scroll-notouch').outerWidth()){this.toCenter(index)}}},};this.element.find('ul').on('ffw:click','li',function(){inst.element.sly.activate(this)});if(this.options.scrollBy=='item'){this.options=$.extend(this.options,{prev:this.element.parent().find('.ff-prev'),next:this.element.parent().find('.ff-next'),})}else{this.options=$.extend(this.options,{prevPage:this.element.parent().find('.ff-prev'),nextPage:this.element.parent().find('.ff-next'),})}
this.init();var l=this.element.find('li:last');if(l.length>0){var w=l.offset().left+l.outerWidth();while(w<screen.width){inst._append();this.element.sly.reload();l=this.element.find('li:last');var w2=l.offset().left+l.outerWidth();if(w2==w)break;w=w2}}
endpoint=this.element.sly.pos.end;setTimeout(function(){inst.element.find('li').css('opacity',1)},340)},init:function(){var inst=this;var el=this.element;el.padding=el.width()-el.parent().width();el.sly=new Sly(el,this.options,this.callbacks);el.sly.init();this.element.parent().find('.ff-start').on('click',function(){el.sly.toStart()});this.element.parent().find('.ff-end').on('click',function(){el.find('li:hidden').show();el.sly.reload();el.sly.toEnd()});if('gallery' in this.options){this.element.on('ffw:click click','li [data-ff-image]',function(e){e.preventDefault();el.parent().find(el.attr('data-ff-gallery')).empty();el.parent().find(el.attr('data-ff-caption')).empty();el.parent().find(el.attr('data-ff-gallery')).append('<img src='+$(this).attr('data-ff-image')+'>')
el.parent().find(el.attr('data-ff-caption')).append($(this).attr('data-ff-caption'))});this.element.parent().on('click','.ff-prev-image',function(e){el.sly.activate(el.find('li.active').prev());el.parent().find('.ff-next-image').show();if(el.find('li.active').prev().length==0){el.parent().find('.ff-prev-image').hide()}});this.element.parent().on('click','.ff-next-image',function(e){el.sly.activate(el.find('li.active').next());el.parent().find('.ff-prev-image').show();if(el.find('li.active').next().length==0){el.parent().find('.ff-next-image').hide()}})}
if(!el.is('[class~="-table"]')){var width=$(window).width();$(window).on('resize',function(){if($(window).width()!=width){inst.reload();width=$(window).width()}})}},_append:function(){var inst=this;var set=this.element.find('li:hidden').first().attr('class');if(set){this.element.find('li.'+set).show()}
if('gallery' in this.options){var el=this.element;var a=el.find('.ff-inext');var blockName=el.closest('fieldset[data-ff-name]').attr('data-ff-name');if(a.attr('href')){a.attr('href',a.attr('href')+'&_block='+blockName);$.ajax({url:a.attr('href'),async:!1,success:function(data){el.sly.remove($(el.find('li.ff-ipaging')));el.sly.add($(data).find('[data-ff-name="'+blockName+'"] [data-ffw="scroll"] li'));if($(el.find('li.ff-ipaging')).first()[0].childElementCount==0){el.sly.remove($(el.find('li.ff-ipaging')))}
el.sly.reload()},error:function(xHR){console.log(xHR)}})}}},reload:function(){this.element.width(0);this.element.width(this.element.parent().width());this.element.sly.reload()}},ready:function(el){return;$.widget('ffw.ffwScroll',ffJS.ffFfwScroll.widget);el.on('ff:enhance','[data-ffw="scroll"]',function(e){$(this).ffwScroll()});el.on('ff:refresh','[data-ffw="scroll"]',function(){$(this).ffwScroll('reload')})}},ffFfwSocial:{widget:{options:{},gauth2:{},_create:function(){if(this.element.is('[data-ffw="social"]')){this.options=$.extend(this.options,this.element.subData('ff'));if(this.options.network){this._capitalise('network');this._capitalise('action');this.options.icon=$.fn.ffTemplate('icon.'+this.options.network);this.element.addClass('ff-btn ff-social '+this.options.network);this.element.html('<i class="'+this.options.icon+'"></i> '+this.options.actionTitle+' with '+this.options.networkTitle)}
if(this.options.action=='share'){var params={};switch(this.options.network){case 'facebook':params={app_id:'589859177821389',display:'popup',href:this.options.url,redirect_uri:this.options.url};break;case 'twitter':params={text:this.options.text,hashtags:'famousfix',url:this.options.url};break;case 'pinterest':params={url:this.options.url,media:this.options.img,description:this.options.text};break}
this.element.attr('target','_blank');this.element.attr('href',$.fn.ffUrl(this.options.network+'-share',params))}
if(this.options.action=='login'||this.options.action=='register'){this._initNetworks()}else if(this.options.action=='gossip-blast'){this.options.network='facebook';this._initNetworks()}}},register:function(){this.login(!0)},share:function(){$(this.element).trigger('ff:trx-custom',[this._trxCode(),this.options.action]);window.open($(this.element).prop('href'),'_blank')},login:function(isRegistration){this['_'+this.options.network+'PreLogin']()},gossipBlast:function(posts){var inst=this;FB.login(function(){FB.api('/me',{fields:'id,first_name,last_name,email,gender'},function(response1){var uid=response1.id;FB.api('/'+uid+'/accounts',function(response2){var pages=response2.data;for(var i=0;i<response2.data.length;i++){var page=response2.data[i];if(page.id=='161093650579384'){inst._postBlast(page,posts,{})}}})})},{scope:'publish_actions,manage_pages,publish_pages'})},_postBlast:function(target,posts,options){var inst=this;$.ffw.ffwPopover({modal:!0,size:'medium',contents:'<h3>Gossip Blast</h3><p class="ff-gossip-blast-feedback">Processing...<br/></p>',show:!0,});var feedback=$('.ff-gossip-blast-feedback');$.ajax({type:'POST',dataType:'json',url:'//fdata.whosdatedwho.com/social-feed/gossip-blast',data:{posts:posts},success:function(result){if(result.length>0){for(var i=0;i<result.length;i++){var o=$.extend({},options,result[i]);inst._delayedPost(i,target,o,feedback)}
feedback.parent().append('<button class="tiny right" data-ff-close>Close</button>')}else{feedback.append('No post(s) to send<br />')}}})},_delayedPost:function(i,target,options,feedback){var inst=this;setTimeout(function(){feedback.append('Sending post '+options.ref_id+'<br />');inst._postLink(target,options,feedback,function(data){$.ajax({type:'POST',url:'//fdata.whosdatedwho.com/social-feed/process-gossip-blast',data:data,})})},i*1000)},_postLink:function(target,options,feedback,success){var data={access_token:target.access_token,published:!0,}
$.extend(data,options);var ref_id=options.ref_id;FB.api("/"+target.id+"/feed","POST",data,function(response){if(response&&!response.error){var rdata={'post':ref_id,'target':'facebook','target_id':response.id,}
if(success){if(feedback){feedback.append('Processing post '+ref_id+'<br />')}
success(rdata)}}else if(response.error){feedback.append('Posting '+ref_id+' failed - '+response.error.message+'<br />')}})},_trxCode:function(type){var code='CUSTOM0'
var t=type?type.toUpperCase():this.options.network.toUpperCase();if(this.options.action=='share'){code=$.fn.messageText('TRX_SHARE.'+t)}else{code=$.fn.messageText('TRX_LOGIN.'+t)}
return code},_capitalise:function(ref){if(this.options[ref]){var str=this.options[ref];var capStr=str.charAt(0).toUpperCase()+str.substring(1);var capRef=ref.charAt(0).toUpperCase()+ref.substring(1);this.options[ref+'Title']=capStr}},_message:function(data){var form=this.element.closest('.ff-popover').find('form');$.fn.ajaxResponse(form,data)},_facebookPreLogin:function(){if(!('scope' in this.options)){this.options.scope='public_profile,email'}
var inst=this;if(window.FB){window.FB.login(function(response){if(response.status==='connected'){inst._facebookLogin(response)}else if(response.status==='not_authorized'){inst._message({formError:'SOCIAL.LOGIN_CANCELLED',network:inst.options.networkTitle});$(inst.element).trigger('ff:trx-custom',[inst._trxCode('facebook-authorisation'),inst.options.action])}else{inst._message({formError:'SOCIAL.LOGIN_CANCELLED',network:inst.options.networkTitle});$(inst.element).trigger('ff:trx-custom',[inst._trxCode('facebook-cancel'),inst.options.action])}},{scope:inst.options.scope})}else{inst._message({formError:'NETWORK_PROBLEM',network:inst.options.networkTitle})}},_facebookLogin:function(details){var user=details.authResponse.userID;var inst=this;window.FB.api('/me',{fields:'id,first_name,last_name,email,gender'},function(response){var settings=$.extend({},response,details);inst._socialLogin(settings)})},_googlePreLogin:function(){var el=this.element;var inst=this;this.gauth2.attachClickHandler(el[0],{},function(googleUser){inst._googleLogin()},function(error){inst._message({formError:'SOCIAL.LOGIN_CANCELLED',network:inst.options.networkTitle});$(inst.element).trigger('ff:trx-custom',[inst._trxCode('google-cancel'),inst.options.action])})},_googleLogin:function(){var profile=this.gauth2.currentUser.get().getBasicProfile();var details={id:profile.getId(),email:profile.getEmail(),};this._socialLogin(details)},_socialLogin:function(data){var inst=this;var defaults={social:!0,provider:this.options.network};$.ajax({method:"POST",url:$.fn.ffUrl('social-login'),data:$.extend({},defaults,data),dataType:'json',success:function(result){if(result.success){$(inst.element).trigger('ff:trx-custom',[inst._trxCode(),inst.options.action]);$.ffw.ffwPopover.close(!0);$.ffw.ffwAlert({tpl:'alert.basic',tplParams:{message:result.message},type:'success',show:!0,});self.location.reload()}else{$.fn.ajaxResponse(data.form,result)}},error:function(xhr,status,error){$.ffw.ffwPopover.close();$.ffw.ffwAlert({tpl:'alert.basic',tplParams:{message:error},type:'error',show:!0,})}})},_initNetworks:function(){if(this.options.network=='google'){var inst=this;if(typeof(gapi)=="undefined"||!gapi||!gapi.auth2){$.ajax({url:'https://apis.google.com/js/platform.js',dataType:"script",success:function(){inst._initGoogle()}})}else{inst.gauth2=gapi.auth2.getAuthInstance();inst._googlePreLogin()}}
if(this.options.network=='facebook'&&!window.FB){window.fbAsyncInit=function(){FB.init({appId:'589859177821389',cookie:!0,xfbml:!0,version:'v2.4'})};(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="//connect.facebook.net/en_US/sdk.js";fjs.parentNode.insertBefore(js,fjs)}(document,'script','facebook-jssdk'))}},_initGoogle:function(){var inst=this;gapi.load('auth2',function(){inst.gauth2=gapi.auth2.init({client_id:'966256967348-2hut70i7cq8eqqjnnaofv5lbl14b36vm.apps.googleusercontent.com',cookiepolicy:'single_host_origin',});inst._googlePreLogin()})},},ready:function(el){$.widget('ffw.ffwSocial',ffJS.ffFfwSocial.widget);el.on('ff:enhance','[data-ffw="social"]',function(){$(this).ffwSocial()});el.on('click','[data-ffw="social"][data-ff-action="share"]',function(e){e.preventDefault();$(this).ffwSocial('share')});el.on('click','[data-ffw="social"][data-ff-action="login"][data-ff-network!="google"]',function(e){e.preventDefault();$(this).ffwSocial('login')});el.on('click','[data-ffw="social"][data-ff-action="register"][data-ff-network!="google"]',function(e){e.preventDefault();$(this).ffwSocial('login')});el.on('click','[data-ffw="social"][data-ff-action="gossip-blast"]',function(e){e.preventDefault();$(this).ffwSocial('gossipBlast',$(this).attr('data-ff-ids'))})}},ffFfwSwiper:{widget:{swiper:null,options:{},_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));if(this.element.parent().width()){var config={loop:this.options.loop,slidesPerView:'auto',spaceBetween:this.options.spaceBetween?this.options.spaceBetween:0,pagination:'.swiper-pagination',paginationClickable:!0,paginationType:'fraction',nextButton:'.swiper-button-next',prevButton:'.swiper-button-prev',};if(this.options.autoplay){config.autoplay=this.options.autoplay;config.speed=750;config.centeredSlides=!0;config.loop=!0;config.autoplayDisableOnInteraction=this.options.autoplayDisableOnInteraction}
this.swiper=new Swiper('#'+this.element[0].id,config)}},reload:function(){if(this.swiper){this.swiper.update(!0)}else{this._create()}},},ready:function(el){$.widget('ffw.ffwSwiper',ffJS.ffFfwSwiper.widget);el.on('ff:enhance','[data-ffw="swiper"]',function(e){$(this).ffwSwiper()});el.on('ff:refresh','[data-ffw="swiper"]',function(){$(this).ffwSwiper('reload')})}},ffFfwTabs:{ready:function(el){el.on('click','[data-ffw="tabs"] .ff-tab',function(e){var t=$(this).closest('[data-ffw="tabs"]');$(this).siblings().each(function(){$(this).removeClass('ff-active');t.find($(this).attr('data-ff-target')).hide()});$(this).addClass('ff-active');t.find($(this).attr('data-ff-target')).show()})}},ffFfwTrx:{trxOn:!1,widget:{cn:'trx',cDomain:document.domain.replace(/[^\.]+/,""),trxUrl:'',q:[],m:!1,options:{},_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));this.trxUrl=$.fn.ffUrl('trx');var dt=new Date();if(this._getCookie(this.cn)==null){var sv=parseInt(Math.random()*4294967295)+"-"+Math.floor(dt.getTime()/10000);this._setCookie(this.cn,sv,365*10,"/",this.cDomain)}
this._trxAlert('TRX started','success');return this},scrollstop:function(){var trx=this;if(0&&0){$(this.element).find('.ff-trx-viewing[data-ff-trx="eb"][data-ff-trx-off]').each(function(){$(this).addClass('ff-trx-viewed');$(this).removeClass('ff-trx-viewing')})}
$(this.element).find('[data-ff-trx*="eb"]:not([data-ff-trx-off])').each(function(){var current=$(window).scrollTop();var height=$(window).height();var rect={};if(this.getBoundingClientRect){rect=this.getBoundingClientRect()}else{rect={top:this.offsetTop,bottom:this.offsetBottom,}}
if(!(rect.top==0&&rect.bottom==0)&&((rect.top>-1*(rect.height*.1))&&(rect.top<(height*.5))||(rect.bottom<height*1.1&&rect.bottom>(height*.5)))){trx.add($(this));var data=$(this).subData('ff');var v=data.trxData?'1/'+data.trxData:'1';trx._trxAlert(v+' trx '+$(this).attr('data-ff-id'));$(this).attr('data-ff-trx-off','');if(0&&0){$(this).addClass('ff-trx-viewing')}}})},add:function($obj,action,step,message){if(!this.q.tx){this.q.tx=[]}
var data=$obj.subData('ff');var ts=new Date().getTime();var s=''+ts;if(action){var aid=!1;if($obj.attr('data-ff-trx-id')){aid=$obj.attr('data-ff-trx-id')}else{$obj.attr('data-ff-trx-id',ts);$obj.find('[data-ff-trx]').each(function(){$(this).attr('data-ff-trx-id',ts)})}
var a='TRX.'+action.toUpperCase();action=$.fn.messageText(a);var b=step.toUpperCase();step=$.fn.messageText(b);s+='|a'+action+';'+step+';'+(aid?Math.abs(ts-aid):0)}
if(data.id){s+='|'+(action?'c':'e')+data.id+';'+(data.tid?data.tid:'')+';'+(data.eid?data.eid:'')}
if(message){s+='|m'+message}
if(data.trxData){s+='|d'+data.trxData}
this.q.tx[s]=1;this._trxAlert(s)},flush:function(){var s=[];var count=0;for(var i in this.q){var t='';for(var j in this.q[i]){if(this.q[i][j]==1){t+=(t.length>0?',':'')+j;this.q[i][j]=2}}
if(t.length>0){count++;s[i]=t}}
if(this.message){var t='';for(var i in this.m){t+=(t.length>0?',':'')+this.m[i]}
if(t.length>0){s.m=t}}
if(count>0){s.p=location.pathname;if(document.referrer){s.r=document.referrer}
s.q=window.location.search;this._agent(s);this._trxAlert('trx flush','success')}
this.q=[];this.m=!1},_trxAlert:function(message,type,pos){if(0&&0){pos=pos?pos:'bottom,right';type=type?type:'info';if(typeof $.ffw.ffwAlert!=='undefined'){$.ffw.ffwAlert({show:!0,type:type,message:message,pos:pos})}}},_agent:function(args){try{var url=this.trxUrl;if(this._getCookie(this.cn)==null||!this._getCookie(this.cn)){return}
var dt=new Date();var ti=dt.getTime();url+='?t='+ti+'&c='+this._getCookie(this.cn);for(var i in args){url+='&'+i+'='+(i=='tx'||i=='p'?args[i]:escape(args[i]))}
var i=new Image(1,1);i.src=url;i.onload=this._voidFunc()}catch(err){return}},_voidFunc:function(){return},_getCookie:function(check_name){var a_all_cookies=document.cookie.split(';');var a_temp_cookie='';var cookie_name='';var cookie_value='';var b_cookie_found=!1;for(i=0;i<a_all_cookies.length;i++){a_temp_cookie=a_all_cookies[i].split('=');cookie_name=a_temp_cookie[0].replace(/^\s+|\s+$/g,'');if(cookie_name==check_name){b_cookie_found=!0;if(a_temp_cookie.length>1){cookie_value=unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g,''))}
return cookie_value;break}
a_temp_cookie=null;cookie_name=''}
if(!b_cookie_found){return null}},_setCookie:function(name,value,expires,path,domain,secure){var today=new Date();today.setTime(today.getTime());if(expires){expires=expires*1000*60*60*24}
var expires_date=new Date(today.getTime()+(expires));var c=name+"="+escape(value)+((expires)?";expires="+expires_date.toGMTString():"")+((path)?";path="+path:"")+((domain&&domain.indexOf(".")>=0)?";domain="+domain:"")+((secure)?";secure":"");document.cookie=c},},customTriggers:function($el){$el.on('ff:trx-open','[data-ff-trx]:not([data-ff-trx-off])',function(e,actCode){e.stopPropagation();$el.ffwTrx('add',$(this),actCode,'TRX.OPEN')});$el.on('ff:trx-success','[data-ff-trx]:not([data-ff-trx-off])',function(e,actCode){e.stopPropagation();console.log(actCode);$el.ffwTrx('add',$(this),actCode,'TRX.SUCCESS')});$el.on('ff:trx-fail','[data-ff-trx]:not([data-ff-trx-off])',function(e,actCode){e.stopPropagation();$el.ffwTrx('add',$(this),actCode,'TRX.FAIL')});$el.on('ff:trx-exception','[data-ff-trx]:not([data-ff-trx-off])',function(e,actCode,message){e.stopPropagation();$el.ffwTrx('add',$(this),actCode,message,'TRX.EXCEPTION')});$el.on('ff:trx-close','[data-ff-trx]:not([data-ff-trx-off])',function(e,actCode){e.stopPropagation();$el.ffwTrx('add',$(this),actCode,'TRX.CLOSE')});$el.on('ff:trx-custom','[data-ff-trx]:not([data-ff-trx-off])',function(e,custom,actCode){e.stopPropagation();$el.ffwTrx('add',$(this),actCode,'TRX.'+custom)});$el.on('ff:trx-flush','[data-ff-trx]',function(e){e.stopPropagation();$el.ffwTrx('flush')})},clickTriggers:function($el){$el.on('click','[data-ff-trx-action][data-ff-trx-type]:not([data-ff-trx-off])',function(e){e.stopPropagation();var data=$(this).subData('ff');$el.ffwTrx('add',$(this),data.trxType,'TRX.'+data.trxAction)});if($('body').is('[data-ff-trx]')){$el.on('click','a[href]:not([href~="#"]):not([data-ffw]):not([data-ff-trx]):not([data-ff-trx-action])',function(e){var data=$(this).subData('ff');var t=$(this);if('trxFlush' in data||!0){if(!data.trxFlushed){e.preventDefault();e.stopPropagation();$el.ffwTrx('flush');t.attr('data-ff-trx-flushed',!0);if(!t.attr('data-ff-ajax')){var href=$(this).attr('href');setTimeout(function(){self.location.href=href},300)}}}})}},focusTriggers:function($el){$el.on('focus','[data-ff-trx="eb"]',function(e){$el.ffwTrx('add',$(this))})},readyFirst:function($el){if($('html').hasClass('ff-trx-off')){ffJS.ffFfwTrx.trxOn=!1;return}
$.widget('ffw.ffwTrx',ffJS.ffFfwTrx.widget);$el.ffwTrx();$(document).ffScrollStopped(function(event){$el.ffwTrx('scrollstop')},1000);ffJS.ffFfwTrx.focusTriggers($el);ffJS.ffFfwTrx.customTriggers($el);ffJS.ffFfwTrx.clickTriggers($el);var f=setInterval(function(){$el.ffwTrx('flush')},5000)},readyLast:function($el){if(ffJS.ffFfwTrx.trxOn){$el.ffwTrx('scrollstop')}}},ffFfwUser:{widget:{options:{},_create:function(){if(this.element.is('[data-ffw="user"]')){this.options=$.extend(this.options,this.element.subData('ff'));if('social' in this.options&&!this.options.social){this.options.social='facebook,google'}}else{if(this.options.run){this.run()}}},login:function(){var inst=this;if(ffJS.ffFfwPopover.isActive()){ffJS.ffFfwPopover.hide()}
$.ffw.ffwPopover({tpl:'user.login_form',tplParams:{buttons:inst._socialButtons('social.login_button')},show:!0,submitUrl:$.fn.ffUrl('user-login'),afterSuccess:function(data){if(inst.options.successUrl){self.location.href=inst.options.successUrl}
if('successReload' in inst.options){self.location.reload()}
$('#ff-auth-refresh').click()}})},register:function(){if(ffJS.ffFfwPopover.isActive()){ffJS.ffFfwPopover.hide()}
$.ffw.ffwPopover({tpl:'user.register_form',tplParams:{buttons:this._socialButtons('social.register_button'),text:this._registerText(),},show:!0,submitUrl:$.fn.ffUrl('user-register'),})},forgot:function(){if(ffJS.ffFfwPopover.isActive()){ffJS.ffFfwPopover.hide()}
$.ffw.ffwPopover({tpl:'user.forgot_form',tplParams:{buttons:''},show:!0,submitUrl:$.fn.ffUrl('user-forgot')})},_registerText:function(){switch('fdata.whosdatedwho.com'){case 'fdata.whosdatedwho.com':case 'fdatawdw.famousfix.org':case 'fdatawdw.famousfix.net':return $.fn.ffTemplate('user.register_text_wdw');break
default:return $.fn.ffTemplate('user.register_text');break}},_socialButtons:function(template){if('social' in this.options){var btns='';var types=this.options.social.split(',');for(var i=0;i<types.length;++i){var opts={network:types[i]};btns+=$.fn.ffTemplate(template,opts)}
return btns}else{return ''}},},ready:function(el){$.widget('ffw.ffwUser',ffJS.ffFfwUser.widget);el.on('ff:enhance','[data-ffw="user"]',function(){$(this).ffwUser()});el.on('click','[data-ffw="user"][data-ff-action="logout"]',function(e){e.preventDefault();$.post($.fn.ffUrl('user-logout'),function(){location.reload()})});el.on('click','[data-ffw="user"][data-ff-action="login"]',function(e){e.preventDefault();if(!$(this).data('ffwFfwUser')){$(this).ffwUser()}
$(this).ffwUser('login')});el.on('click','[data-ffw="user"][data-ff-action="forgot"]',function(e){e.preventDefault();if(!$(this).data('ffwFfwUser')){$(this).ffwUser()}
$(this).ffwUser('forgot')});el.on('click','[data-ffw="user"][data-ff-action="register"]',function(e){e.preventDefault();$(this).ffwUser('register')})}},ffFfwWiki:{widget:{options:{name:'wiki[]'},$wiki:null,$panel:null,_create:function(){this.options=$.extend(this.options,this.element.subData('ff'));if(this.options.url){this.load(this.options.url)}
$($.fn.ffTemplate('wiki.content')).appendTo(this.element);this.$wiki=this.element.find('.ff-wiki-container');this.$panel=this.element.find('.ff-wiki-action');var inst=this;this.element.on('click','[data-ff-wiki-add]',function(e){e.preventDefault();inst.add($(this).attr('data-ff-wiki-add'))});this.element.on('keypress','.ff-wiki-heading',function(e){if(e.keyCode==13){e.preventDefault();inst.$panel.find('[data-ff-wiki-add="text"]').click()}});this.element.closest('form').on('submit',function(e){});return this},load:function(url){},getData:function(){var data=[];this.element.find('.ff-wiki-heading,.ff-wiki-text,[data-ffw="media"]').each(function(){var n;if($(this).is('[data-ff-name]')){n=$(this).attr('data-ff-name')}else{n=$(this).attr('name')}
var v;if($(this).is('[data-ff-value]')){v=$(this).attr('data-ff-value')}else{v=$(this).attr('value')}
data.push({type:n,value:v})});return data},add:function(type){this.element.find('.ff-wiki-placeholder').remove();var $el;switch(type){case 'heading':$el=$('<input placeholder="#New Heading" type="text" class="ff-wiki-heading">').attr('name','heading');break;case 'text':$el=$('<textarea placeholder="#New Text Paragraph" class="ff-wiki-text">').attr('name','text');break;case 'media':$el=$('<div data-ffw="media" data-ff-name="media" data-ff-style="popover"'+'" data-ff-library data-ff-url data-ff-file data-ff-library-url="/content/gallery?url=${dataurl}"></div>'.format({dataurl:'/topic/tom-cruise'}));break;default:return}
$el.appendTo(this.$wiki).focus();if(type=='text'){$el.ffAutogrow()}
if(type=='media'){$el.ffEnhance();$el.find('>*:first').click()}},},ready:function($el){$.widget('ffw.ffwWiki',ffJS.ffFfwWiki.widget);$el.on('ff:enhance','[data-ffw="wiki"]',function(){$(this).ffwWiki()})}},ffFunctions:{init:function(){$.ajaxSetup({crossDomain:!0,xhrFields:{withCredentials:!0},beforeSend:function(xhr){xhr.withCredentials=!0}});$(function(){$.xhrPool=[];$.xhrPool.abortAll=function(){$(this).each(function(i,jqXHR){jqXHR.abort();$.xhrPool.splice(i,1)})}
$.ajaxSetup({beforeSend:function(jqXHR){$.xhrPool.push(jqXHR)},complete:function(jqXHR){var i=$.inArray(jqXHR,$.xhrPool);if(i>-1)$.xhrPool.splice(i,1)}})});(function($){var re=/([^&=]+)=?([^&]*)/g;var decode=function(str){return decodeURIComponent(str.replace(/\+/g,' '))};$.parseParams=function(query){var params={},e;if(query){if(query.substr(0,1)=='?'){query=query.substr(1)}
while(e=re.exec(query)){var k=decode(e[1]);var v=decode(e[2]);if(params[k]!==undefined){if(!$.isArray(params[k])){params[k]=[params[k]]}
params[k].push(v)}else{params[k]=v}}}
return params}})(jQuery);$.fn.digits=function(){return this.each(function(){$(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"))})};$.fn.center=function(){this.css("position","absolute");this.css('top',parseInt(($(window).height()/2)+jQuery(document).scrollTop()-this.height()/2));this.css('left',parseInt(($(window).width()/2)+jQuery(document).scrollLeft()-this.width()/2));return this};$.fn.subData=function(prefix){var d=$('<div>');$(this.get(0).attributes).each(function(){if(this.name.indexOf('data-'+prefix)===0){d.attr(this.name.replace('data-'+prefix,'data').toLowerCase(),this.value)}});return d.data()};$.fn.slug=function(){return this.val().toLowerCase().replace(/^https?:\/\//,'').replace(/[\/\.]/g,' ').replace(/[^\w ]+/g,'').replace(/ +/g,'-')};$.fn.realSize=function(){var $img=this;if($img.prop('naturalWidth')==undefined){var $tmpImg=$('<img/>').attr('src',$img.attr('src'));console.log($tmpImg);$img.prop('naturalWidth',$tmpImg[0].width);$img.prop('naturalHeight',$tmpImg[0].height)}
return{'width':$img.prop('naturalWidth'),'height':$img.prop('naturalHeight')}};$.fn.realDimensions=function(parent){var clone=this.clone();clone.css({"visibility":"hidden",'position':'absolute','left':0});if(!parent){parent=this.parent()}
$(parent).append(clone);var dims={width:clone.outerWidth(),height:clone.outerHeight()};clone.remove();return dims};String.prototype.format=function(){var s=this;for(var i in arguments){if(typeof(arguments[i])=='object'){for(var j in arguments[i]){var reg=new RegExp("\\{"+j+"\\}","gm");s=s.replace(reg,arguments[i][j])}}else{var reg=new RegExp("\\{"+i+"\\}","gm");s=s.replace(reg,arguments[i])}}
return s};String.prototype.endsWith=function(suffix){return(this.substr(this.length-suffix.length)===suffix)};String.prototype.startsWith=function(prefix){return(this.substr(0,prefix.length)===prefix)};$.fn.messageText=function(code,options){if(ffJS.messages[code]){code=String(ffJS.messages[code]).format($.extend(ffJS.messageSubstitutions,options))}
return code};$.fn.ffTemplate=function(name,vars){if(vars){return ffJS.templates[name].format(vars)}else{return ffJS.templates[name]}};$.fn.ajaxResponse=function(form,data){var alertOnly=!1;var $m=!1;if(!form||form.length==0){alertOnly=!0}else{$m=form.find('.messages');if($m.length==0){alertOnly=!0}}
var s='';if(!alertOnly){form.find('label.ff-error').removeClass('ff-error');form.find('small.ff-error').remove();form.find('.messages').html('').removeClass('alert').removeClass('alert-danger').removeClass('alert-box').removeClass('alert-success')}
if(data.success&&data.message){var content=$.fn.messageText(data.message,data.params);if(data.popover){$.ffw.ffwPopover().hide(!0);setTimeout(function(){$.ffw.ffwPopover({show:!0,type:'success','contents':content})},100);return}else{if(alertOnly){$.ffw.ffwAlert({show:!0,type:'success','message':content});return}else{s=content}}}
var alertType="alert-success";if(data.formError&&data.formError!==!0){s='<p>'+$.fn.messageText(data.formError,data)+'</p>'}
if(data.formError||data.fieldErrors){alertType="alert"}
if(data.fieldErrors&&!alertOnly){for(var i in data.fieldErrors){var field=form.find("label[for="+i+"]");field.addClass('ff-error');field.parent().append('<small class="ff-error">'+$.fn.messageText(data.fieldErrors[i],data)+'</small>')}}
if(s.length>0){console.log(s);if(alertOnly){$.ffw.ffwAlert.error($.fn.messageText(s))}else{form.find(".messages").css({'opacity':0}).html($.fn.messageText(s)).addClass("alert-box").addClass(alertType).animate({'opacity':1},1000)}}
if(data.url){setTimeout(function(){self.location.href=data.url},1000)}};$.fn.refreshTimes=function(tIndex,debug){function getTimeAgo(tIndex,itemIndex){var secsAgo=Math.abs(tIndex-itemIndex);var months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];function pl(num,str){return num+(num==1?str.replace(/s\?/,''):str.replace(/s\?/,'s',str))}
if(secsAgo<5){return 'right now'}else if(secsAgo<60){return pl(secsAgo,' secs? ago')}else if(secsAgo<3600){return pl(Math.floor(secsAgo/60),' mins? ago')}else if(secsAgo<3600*24){return pl(Math.floor(secsAgo/3600),' hrs? ago')}else if(secsAgo<3600*24*7){return pl(Math.floor(secsAgo/(3600*24)),' days? ago')}else{var d=new Date(new Date().getTime()+((itemIndex-tIndex)*1000));var t=new Date();var suff='';if(t.getFullYear()!=d.getFullYear()){suff=', '+d.getFullYear()}
return months[d.getMonth()]+' '+d.getDate()+suff}
return secsAgo}
if(debug){console.log(tIndex,new Date(tIndex*1000),debug,new Date(debug*1000),getTimeAgo(tIndex,debug))}
$('[data-ff-time]').each(function(){$(this).text(getTimeAgo(tIndex,$(this).attr('data-ff-time')))})};$.fn.autoLinks=function(str){var pattern=/(((http[s]?:\/\/)|(www\.))(([-a-z0-9_]+\.)?[-a-z0-9_]+\.(\.[a-z_]{2,2})?)\/?[a-z0-9.,_\/~\(\)\':#&=;%+?-]+[_a-z0-9\/#=?]{1,1})/gi;return str.replace(pattern,' <a target="_blank" href="$1" rel="nofollow">$1</a>').replace(/href="www/,'href="http://www')};$.fn.youtubeId=function(url){var p=/^(?:https?:\/\/)?(?:www\.|m\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;return(url.match(p))?RegExp.$1:!1};$.fn.youtubeEmbed=function(id){return '<iframe src="http://www.youtube.com/embed/'+id+'" allowfullscreen></iframe>'};$.fn.getDomain=function(url){var a=document.createElement('a');a.href=url;return a.hostname};$.fn.getDomainLabel=function(url,wrapper){if(!wrapper){wrapper='<span class="via">via </span><span class="via-domain">{url}</span>'}
var d=$.fn.getDomain(url);if(d.match(/img\d+\.bdbphotos\.com/)){d='famousfix.com'}
return wrapper.format({url:d})};$.fn.autoImage=function(options){var imcache=[];var selector=this.selector;function addPhotoToComment(commentText,im){if(im.get(0).width<=0||im.get(0).height<=0){return !1}
var rat=im.get(0).width/im.get(0).height;var sh=$(window).scrollTop();var atBottom=$('body').attr('data-ff-bottom');var u=commentText.find("ul.ff-image-auto");if(u.length==0){u=$("<ul class='ff-image-auto'>").appendTo(commentText)}
var li=$("<li>");im.appendTo(li);im.wrap("<a>");li.find("a").attr({"href":im.attr("src"),"target":"_blank"});li.appendTo(u);var variance=Math.floor((1-((im.width()/im.height())/rat))*100);if(variance>80){li.remove();if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}
return !1}else{if(atBottom){window.scrollTo(0,document.body.scrollHeight)}
if(options&&options.repos){window.scrollTo(0,$(window).scrollTop()+(document.body.scrollHeight-sh))}}
return !0}
function imCheck(isLater){$(selector).each(function(){var commentText=$(this);$(this).find("a[rel=nofollow][href]:not([data-done])").each(function(){$(this).attr("data-done","true");var isrc=$(this).attr("href");var youtubeId=$.fn.youtubeId(isrc);if(isrc.match(/google\.com\/search/)){console.log("Ignoring "+isrc);return}
var link=$(this);if(youtubeId){$(this).replaceWith($.fn.youtubeEmbed(youtubeId));return}
if(!imcache[isrc]){var im=$("<img>");imcache[isrc]=im;im.load(function(){if($(this).get(0).height>=32&&im.get(0).width>=32){if(addPhotoToComment(commentText,im)){link.html($.fn.getDomainLabel(isrc)).addClass('offsite')}}});im.attr("src",$(this).attr("href"))}else{if(addPhotoToComment(commentText,imcache[isrc])){link.html($.fn.getDomain(isrc)).addClass('offsite')}}})});setTimeout(imCheckSecond,1000)}
function imCheckSecond(){return imCheck(!0)}
imCheck()};$.fn.ffDialog=function(data){function message(d,data){var timeout=(data.timeout?data.timeout:1500);d.html('<div class="small-12"><h2 id="ff-dialog-title"></h2><p class="lead"></p></div>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.close){d.append('<a class="close-reveal-modal" aria-label="Close">&#215;</a>')}
if(data.stayopen){d.foundation('reveal','open')}else{d.foundation('reveal','open');setTimeout(function(){d.foundation('reveal','close');if(data.url=='reload'){window.location.reload(!0)}else if(data.url){window.location.href=data.url}},timeout)}}
function confirm(d,data){d.html('<h2 id="ll-dialog-title"></h2><form><p class="lead"></p></form>');if(data.title){d.find('h2').html(data.title)}
if(data.message){d.find('p').html(data.message)}
if(data.buttons){d.append(data.buttons)}else{var cancel='<a class="cancel-confirm button secondary small right" aria-label="Cancel">Cancel</a>';var confirm='<button class="success small button right" type="submit">Confirm</button>';data.buttons=confirm+cancel}
d.html('<h2 id="ff-dialog-title">'+data.title+'</h2>'+'<form action='+data.url+'>'+'<p class="lead">'+data.message+'</p>'+data.buttons+'</form>');d.foundation('reveal','open');console.log('load');d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.cancel-confirm',function(e){e.preventDefault();e.stopPropagation();console.log('click');d.foundation('reveal','close')})}
function form(d,data){d.foundation('reveal','open',{url:data.url,data:data.params,multiple_opened:!1,success:function(){d.on('submit','form',function(e){e.preventDefault();e.stopPropagation();var form=$(this);var vars=form.serialize();$.ajax({url:form.attr('action'),form:form,dialog:d,method:'post',data:vars,dataType:'json',success:function(data){if(data.success){this.dialog.foundation('reveal','close');$.fn.ffDialog(data)}else{console.log(data);$.fn.ajaxResponse(this.form,data)}}})});d.on('click','.close-reveal',function(e){e.preventDefault();e.stopPropagation();d.foundation('reveal','close')})},error:function(){alert('failed loading dialog box')}})}
var dForm=$('#ff-dialog-form');var dMessage=$('#ff-dialog-message');if(data.form){dForm.removeClass('open');dForm.hide();dForm.foundation('reveal','close');form(dForm,data)}else if(data.confirm){dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');confirm(dMessage,data)}else{dMessage.removeClass('open');dMessage.hide();dForm.foundation('reveal','close');message(dMessage,data)}}
$.fn.ffUrl=function(name,getVars){var rootUrl='//fdata.whosdatedwho.com';var url={'trx':'//trx.whosdatedwho.com/trx','content-edit':rootUrl+'/content/edit','comment-add':rootUrl+'/comment/add','comment-delete':rootUrl+'/comment/delete','comment-list':rootUrl+'/comment/list','content-like':rootUrl+'/content/like','content-flag':rootUrl+'/content/flag','content-delete':rootUrl+'/content/delete','content-vote':rootUrl+'/content/vote','system-flags':rootUrl+'/system/flags','thread-list':rootUrl+'/thread/list','thread-latest':rootUrl+'/thread/list','user-register':rootUrl+'/register','user-forgot':rootUrl+'/forgot','user-login':rootUrl+'/login','user-logout':rootUrl+'/logout','social-login':rootUrl+'/social-login','facebook-share':'https://www.facebook.com/dialog/share','twitter-share':'https://twitter.com/intent/tweet','pinterest-share':'https://pinterest.com/pin/create/link/',};var getStr=(typeof getVars!=='undefined'?'?'+$.param(getVars):'');return url[name]+getStr}
$.fn.htmlEncode=function(value){return $('<div/>').text(value).html()};$.fn.htmlDecode=function(value){return $('<div/>').html(value).text()};$.fn.htmlStateStore=function(type){var $i=$('.data-ff-sss');var $e=$(this);var d={};if($i.is('[value]')&&$i.val()!=''){d=$.parseJSON($i.val())}
if(type=='auto'){if(!$e.attr('id')){$e=$e.closest('[id]')}
$e2=$e.clone();$e2.find('[data-ff--done]').removeAttr('data-ff--done');if(!('auto' in d)){d.auto={}}
d.auto[$e.attr('id')]=$e2.html()}
if(!type||type=='form'){var f=$(this).closest('form');if(f.length>0){if(f.attr('name')){d.formName=f.attr('name')}else if(f.attr('id')){d.formId=f.attr('id')}else{return}
d.form=f.serializeArray()}}
$i.val(JSON.stringify(d))};var restoreData=!1;$.fn.htmlStateRestore=function(getGroup,getId){var $i=$('.data-ff-sss');if(restoreData==!1){if($i.is('[value]')&&$i.val()!=''){restoreData=$.parseJSON($i.val())}}
if(getGroup&&getId){return(restoreData&&getGroup in restoreData&&getId in restoreData[getGroup]?restoreData[getGroup][getId]:!1)}else{var d=(restoreData?restoreData:{});$i.val('');$i.removeAttr('value');if('form' in d){var f;if('formName' in d){f=$('form[name="'+d.formName+'"]')}else if('formId' in d){f=$('form#'+d.formId)}
if(!f||f.length==0)return;for(var i in d.form){var fld=f.find('[name="'+d.form[i].name+'"]');fld.val(d.form[i].value)}
f.htmlStateStore('form');}
if('auto' in d){for(var i in d.auto){ffJS.log('Restore auto '+i+' to:',d.auto[i]);$('#'+i).html(d.auto[i]).removeAttr('data-ff--done').ffEnhance();$('#'+i).find('.ff-auto > .inputor').val('');$('#'+i).htmlStateStore('auto')}}}};$.fn.outerHTML=function(){return $('<div>').append($(this).clone()).html()};setTimeout('$.fn.htmlStateRestore()',500);$.fn.ffEnhance=function(){var $e=this;if(this.selector&&this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:enhance')}
$e.find('[data-ffw]').each(function(){ffJS.log('Enhance:',this);$(this).trigger('ff:enhance')})}
$.fn.ffRefresh=function(){var $e=this;if(this.selector.length>0){$e=$(this.selector)}
if($e.is('[data-ffw]')){$e.trigger('ff:refresh')}
$e.find('[data-ffw]').each(function(){ffJS.log('Refresh:',this);$(this).trigger('ff:refresh')})}
$.fn.ffScrollStopped=function(callback,time){var time=time?time:250;var that=this,$this=$(that);$this.scroll(function(ev){clearTimeout($this.data('scrollTimeout'));$this.data('scrollTimeout',setTimeout(callback.bind(that),time,ev))})};$.fn.ffChangeParent=function(newParent,options){var oldParent=this.get(0);newParent=$(newParent).get(0);if(options&&options.exclude){$(options.exclude).data('ff-tmp-exclude',!0)}
this.children().each(function(){if(!$(this).data('ff-tmp-exclude')){newParent.appendChild(this)}else{$(this).data('ff-tmp-exclude',!1)}});return this};$.fn.ffAutogrow=function(){this.filter("textarea").each(function(){var $this=$(this),minHeight=$this.height(),shadow=$("<div></div>").css({position:"absolute",top:-10000,left:-10000,width:$(this).width(),fontSize:$this.css("fontSize"),fontFamily:$this.css("fontFamily"),lineHeight:$this.css("lineHeight"),resize:"none"}).addClass("shadow").appendTo(document.body),update=function(){var t=this;$(t).css('overflow-y','hidden');setTimeout(function(){var val=t.value.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&/g,"&amp;").replace(/\n/g,"<br/>&nbsp;");if($.trim(val)===""){val="a"}
shadow.html(val);$(t).css("height",Math.max(shadow[0].offsetHeight+20,minHeight));$(t).css('overflow-y','')},0)};$this.change(update).keyup(update).keydown(update).focus(update);update.apply(this)});return this}}},init:function(){this.lib.FfVtab=this.ffFfVtab;this.lib.ImageSelector=this.ffImageSelector;this.lib.Matrix=this.ffMatrix;this.lib.Menu=this.ffMenu;this.lib.UserMenu=this.ffUserMenu;this.lib.Search=this.ffSearch;this.lib.Facebook=this.ffFacebook;this.lib.SubHeader=this.ffSubHeader;this.lib.FfVtab=this.ffFfVtab;this.lib.ImageSelector=this.ffImageSelector;this.lib.Matrix=this.ffMatrix;this.lib.Menu=this.ffMenu;this.lib.UserMenu=this.ffUserMenu;this.lib.Search=this.ffSearch;this.lib.Facebook=this.ffFacebook;this.lib.SubHeader=this.ffSubHeader;this.lib.Dataff=this.ffDataff;this.lib.Events=this.ffEvents;this.lib.Functions=this.ffFunctions;this.lib.Dialog=this.ffDialog;this.lib.Responses=this.ffResponses;this.lib.Trx=this.ffTrx;this.lib.Dataff=this.ffDataff;this.lib.Events=this.ffEvents;this.lib.Functions=this.ffFunctions;this.lib.Dialog=this.ffDialog;this.lib.Responses=this.ffResponses;this.lib.Trx=this.ffTrx;this.lib.Masonry=this.ffMasonry;this.lib.Menu=this.ffMenu;this.lib.Facebook=this.ffFacebook;this.lib.Google=this.ffGoogle;this.lib.Functions=this.ffFunctions;this.lib.Llb=this.ffLlb;this.lib.Responses=this.ffResponses;this.lib.Upload=this.ffUpload;this.lib.Livecomments=this.ffLivecomments;this.lib.Masonrytmp=this.ffMasonrytmp;this.lib.Dataff=this.ffDataff;this.lib.Events=this.ffEvents;this.lib.FfAdhoc=this.ffFfAdhoc;this.lib.FfBrowser=this.ffFfBrowser;this.lib.FfHistory=this.ffFfHistory;this.lib.FfReadmore=this.ffFfReadmore;this.lib.FfSortable=this.ffFfSortable;this.lib.FfToggle=this.ffFfToggle;this.lib.FfTouch=this.ffFfTouch;this.lib.Ffb=this.ffFfb;this.lib.FfmediaOLD=this.ffFfmediaOLD;this.lib.Fft=this.ffFft;this.lib.FfwAffix=this.ffFfwAffix;this.lib.FfwAjax=this.ffFfwAjax;this.lib.FfwAlert=this.ffFfwAlert;this.lib.FfwAuto=this.ffFfwAuto;this.lib.FfwChart=this.ffFfwChart;this.lib.FfwContent=this.ffFfwContent;this.lib.FfwCrud=this.ffFfwCrud;this.lib.FfwDatalist=this.ffFfwDatalist;this.lib.FfwEdit=this.ffFfwEdit;this.lib.FfwForm=this.ffFfwForm;this.lib.FfwGallery=this.ffFfwGallery;this.lib.FfwGrid=this.ffFfwGrid;this.lib.FfwGx=this.ffFfwGx;this.lib.FfwInfinite=this.ffFfwInfinite;this.lib.FfwInteraction=this.ffFfwInteraction;this.lib.FfwLookup=this.ffFfwLookup;this.lib.FfwMedia=this.ffFfwMedia;this.lib.FfwOnline=this.ffFfwOnline;this.lib.FfwPopover=this.ffFfwPopover;this.lib.FfwScroll=this.ffFfwScroll;this.lib.FfwSocial=this.ffFfwSocial;this.lib.FfwSwiper=this.ffFfwSwiper;this.lib.FfwTabs=this.ffFfwTabs;this.lib.FfwTrx=this.ffFfwTrx;this.lib.FfwUser=this.ffFfwUser;this.lib.FfwWiki=this.ffFfwWiki;this.lib.Functions=this.ffFunctions;if(this.debug){console.log('ffJS: loaded '+Object.keys(this.lib).join(', '))}},trigger:function(func){for(var i in this.lib){if(this.lib[i][func]){if(this.debug){console.log('ffJS: trigger '+i+'.'+func)}
this.lib[i][func].apply(undefined,[].slice.apply(arguments,[1]))}}}};ffJS.init();ffJS.trigger('init');$(document).ready(function(){ffJS.trigger('readyFirst',$('body'));ffJS.trigger('ready',$('body'));ffJS.trigger('readyLast',$('body'));$('body').ffEnhance()});(function(root,factory){if(typeof define==='function'&&define.amd){define(["jquery"],function($){return(root.returnExportsGlobal=factory($))})}else if(typeof exports==='object'){module.exports=factory(require("jquery"))}else{factory(jQuery)}}(this,function($){var Api,App,Controller,DEFAULT_CALLBACKS,EditableController,KEY_CODE,Model,TextareaController,View,__slice=[].slice,__hasProp={}.hasOwnProperty,__extends=function(child,parent){for(var key in parent){if(__hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor();child.__super__=parent.prototype;return child};App=(function(){function App(inputor){this.currentFlag=null;this.controllers={};this.aliasMaps={};this.$inputor=$(inputor);this.setupRootElement();this.listen()}
App.prototype.createContainer=function(doc){var _ref;if((_ref=this.$el)!=null){_ref.remove()}
return $(doc.body).append(this.$el=$("<div class='atwho-container'></div>"))};App.prototype.setupRootElement=function(iframe,asRoot){var error;if(asRoot==null){asRoot=!1}
if(iframe){this.window=iframe.contentWindow;this.document=iframe.contentDocument||this.window.document;this.iframe=iframe}else{this.document=this.$inputor[0].ownerDocument;this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(_error){error=_error;this.iframe=null;throw new Error("iframe auto-discovery is failed.\nPlease use `serIframe` to set the target iframe manually.")}}
return this.createContainer((this.iframeAsRoot=asRoot)?this.document:document)};App.prototype.controller=function(at){var c,current,currentFlag,_ref;if(this.aliasMaps[at]){current=this.controllers[this.aliasMaps[at]]}else{_ref=this.controllers;for(currentFlag in _ref){c=_ref[currentFlag];if(currentFlag===at){current=c;break}}}
if(current){return current}else{return this.controllers[this.currentFlag]}};App.prototype.setContextFor=function(at){this.currentFlag=at;return this};App.prototype.reg=function(flag,setting){var controller,_base;controller=(_base=this.controllers)[flag]||(_base[flag]=this.$inputor.is('[contentEditable]')?new EditableController(this,flag):new TextareaController(this,flag));if(setting.alias){this.aliasMaps[setting.alias]=flag}
controller.init(setting);return this};App.prototype.listen=function(){return this.$inputor.on('keyup.atwhoInner',(function(_this){return function(e){return _this.onKeyup(e)}})(this)).on('keydown.atwhoInner',(function(_this){return function(e){return _this.onKeydown(e)}})(this)).on('scroll.atwhoInner',(function(_this){return function(e){var _ref;return(_ref=_this.controller())!=null?_ref.view.hide(e):void 0}})(this)).on('blur.atwhoInner',(function(_this){return function(e){var c;if(c=_this.controller()){return c.view.hide(e,c.getOpt("displayTimeout"))}}})(this)).on('click.atwhoInner',(function(_this){return function(e){return _this.dispatch(e)}})(this))};App.prototype.shutdown=function(){var c,_,_ref;_ref=this.controllers;for(_ in _ref){c=_ref[_];c.destroy();delete this.controllers[_]}
this.$inputor.off('.atwhoInner');return this.$el.remove()};App.prototype.dispatch=function(e){return $.map(this.controllers,(function(_this){return function(c){var delay;if(delay=c.getOpt('delay')){clearTimeout(_this.delayedCallback);return _this.delayedCallback=setTimeout(function(){if(c.lookUp(e)){return _this.setContextFor(c.at)}},delay)}else{if(c.lookUp(e)){return _this.setContextFor(c.at)}}}})(this))};App.prototype.onKeyup=function(e){var _ref;switch(e.keyCode){case KEY_CODE.ESC:e.preventDefault();if((_ref=this.controller())!=null){_ref.view.hide()}
break;case KEY_CODE.DOWN:case KEY_CODE.UP:case KEY_CODE.CTRL:$.noop();break;case KEY_CODE.P:case KEY_CODE.N:if(!e.ctrlKey){this.dispatch(e)}
break;default:this.dispatch(e)}};App.prototype.onKeydown=function(e){var view,_ref;view=(_ref=this.controller())!=null?_ref.view:void 0;if(!(view&&view.visible())){return}
switch(e.keyCode){case KEY_CODE.ESC:e.preventDefault();view.hide(e);break;case KEY_CODE.UP:e.preventDefault();view.prev();break;case KEY_CODE.DOWN:e.preventDefault();view.next();break;case KEY_CODE.P:if(!e.ctrlKey){return}
e.preventDefault();view.prev();break;case KEY_CODE.N:if(!e.ctrlKey){return}
e.preventDefault();view.next();break;case KEY_CODE.TAB:case KEY_CODE.ENTER:if(!view.visible()){return}
e.preventDefault();view.choose(e);break;default:$.noop()}};return App})();Controller=(function(){Controller.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date().getTime())};function Controller(app,at){this.app=app;this.at=at;this.$inputor=this.app.$inputor;this.id=this.$inputor[0].id||this.uid();this.setting=null;this.query=null;this.pos=0;this.range=null;if((this.$el=$("#atwho-ground-"+this.id,this.app.$el)).length===0){this.app.$el.append(this.$el=$("<div id='atwho-ground-"+this.id+"'></div>"))}
this.model=new Model(this);this.view=new View(this)}
Controller.prototype.init=function(setting){this.setting=$.extend({},this.setting||$.fn.atwho["default"],setting);this.view.init();return this.model.reload(this.setting.data)};Controller.prototype.destroy=function(){this.trigger('beforeDestroy');this.model.destroy();this.view.destroy();return this.$el.remove()};Controller.prototype.callDefault=function(){var args,error,funcName;funcName=arguments[0],args=2<=arguments.length?__slice.call(arguments,1):[];try{return DEFAULT_CALLBACKS[funcName].apply(this,args)}catch(_error){error=_error;return $.error(""+error+" Or maybe At.js doesn't have function "+funcName)}};Controller.prototype.trigger=function(name,data){var alias,eventName;if(data==null){data=[]}
data.push(this);alias=this.getOpt('alias');eventName=alias?""+name+"-"+alias+".atwho":""+name+".atwho";return this.$inputor.trigger(eventName,data)};Controller.prototype.callbacks=function(funcName){return this.getOpt("callbacks")[funcName]||DEFAULT_CALLBACKS[funcName]};Controller.prototype.getOpt=function(at,default_value){var e;try{return this.setting[at]}catch(_error){e=_error;return null}};Controller.prototype.insertContentFor=function($li){var data,tpl;tpl=this.getOpt('insertTpl');data=$.extend({},$li.data('item-data'),{'atwho-at':this.at});return this.callbacks("tplEval").call(this,tpl,data)};Controller.prototype.renderView=function(data){var searchKey;searchKey=this.getOpt("searchKey");data=this.callbacks("sorter").call(this,this.query.text,data.slice(0,1001),searchKey);return this.view.render(data.slice(0,this.getOpt('limit')))};Controller.arrayToDefaultHash=function(data){var item,_i,_len,_results;if(!$.isArray(data)){return data}
_results=[];for(_i=0,_len=data.length;_i<_len;_i++){item=data[_i];if($.isPlainObject(item)){_results.push(item)}else{_results.push({name:item})}}
return _results};Controller.prototype.lookUp=function(e){var query,_callback;if(!(query=this.catchQuery(e))){return}
_callback=function(data){if(data&&data.length>0){return this.renderView(this.constructor.arrayToDefaultHash(data))}else{return this.view.hide()}};this.model.query(query.text,$.proxy(_callback,this));return query};return Controller})();TextareaController=(function(_super){__extends(TextareaController,_super);function TextareaController(){return TextareaController.__super__.constructor.apply(this,arguments)}
TextareaController.prototype.catchQuery=function(){var caretPos,content,end,query,start,subtext;content=this.$inputor.val();caretPos=this.$inputor.caret('pos',{iframe:this.app.iframe});subtext=content.slice(0,caretPos);query=this.callbacks("matcher").call(this,this.at,subtext,this.getOpt('startWithSpace'));if(typeof query==="string"&&query.length<=this.getOpt('maxLen',20)){start=caretPos-query.length;end=start+query.length;this.pos=start;query={'text':query,'headPos':start,'endPos':end};this.trigger("matched",[this.at,query.text])}else{query=null;this.view.hide()}
return this.query=query};TextareaController.prototype.rect=function(){var c,iframeOffset,scaleBottom;if(!(c=this.$inputor.caret('offset',this.pos-1,{iframe:this.app.iframe}))){return}
if(this.app.iframe&&!this.app.iframeAsRoot){iframeOffset=$(this.app.iframe).offset();c.left+=iframeOffset.left;c.top+=iframeOffset.top}
scaleBottom=this.app.document.selection?0:2;return{left:c.left,top:c.top,bottom:c.top+c.height+scaleBottom}};TextareaController.prototype.insert=function(content,$li){var $inputor,source,startStr,suffix,text;$inputor=this.$inputor;source=$inputor.val();startStr=source.slice(0,Math.max(this.query.headPos-this.at.length,0));suffix=(suffix=this.getOpt('suffix'))===""?suffix:suffix||" ";content+=suffix;text=""+startStr+content+(source.slice(this.query.endPos||0));$inputor.val(text);$inputor.caret('pos',startStr.length+content.length,{iframe:this.app.iframe});if(!$inputor.is(':focus')){$inputor.focus()}
return $inputor.change()};return TextareaController})(Controller);EditableController=(function(_super){__extends(EditableController,_super);function EditableController(){return EditableController.__super__.constructor.apply(this,arguments)}
EditableController.prototype._getRange=function(){var sel;sel=this.app.window.getSelection();if(sel.rangeCount>0){return sel.getRangeAt(0)}};EditableController.prototype._setRange=function(position,node,range){if(range==null){range=this._getRange()}
if(!range){return}
node=$(node)[0];if(position==='after'){range.setEndAfter(node);range.setStartAfter(node)}else{range.setEndBefore(node);range.setStartBefore(node)}
range.collapse(!1);return this._clearRange(range)};EditableController.prototype._clearRange=function(range){var sel;if(range==null){range=this._getRange()}
sel=this.app.window.getSelection();sel.removeAllRanges();return sel.addRange(range)};EditableController.prototype._movingEvent=function(e){var _ref;return e.type==='click'||((_ref=e.which)===KEY_CODE.RIGHT||_ref===KEY_CODE.LEFT||_ref===KEY_CODE.UP||_ref===KEY_CODE.DOWN)};EditableController.prototype._unwrap=function(node){var next;node=$(node).unwrap().get(0);if((next=node.nextSibling)&&next.nodeValue){node.nodeValue+=next.nodeValue;$(next).remove()}
return node};EditableController.prototype.catchQuery=function(e){var $inserted,$query,index,inserted,lastNode,matched,offset,query,range,_range;if(!(range=this._getRange())){return}
if(e.which===KEY_CODE.ENTER){($query=$(range.startContainer).closest('.atwho-query')).contents().unwrap();if($query.is(':empty')){$query.remove()}($query=$(".atwho-query",this.app.document)).text($query.text()).contents().last().unwrap();this._clearRange();return}
if(/firefox/i.test(navigator.userAgent)){if($(range.startContainer).is(this.$inputor)){this._clearRange();0
return}
if(e.which===KEY_CODE.BACKSPACE&&range.startContainer.nodeType===document.ELEMENT_NODE&&(offset=range.startOffset-1)>=0){_range=range.cloneRange();_range.setStart(range.startContainer,offset);if($(_range.cloneContents()).contents().last().is('.atwho-inserted')){inserted=$(range.startContainer).contents().get(offset);this._setRange("after",$(inserted).contents().last())}}else if(e.which===KEY_CODE.LEFT&&range.startContainer.nodeType===document.TEXT_NODE){$inserted=$(range.startContainer.previousSibling);if($inserted.is('.atwho-inserted')&&range.startOffset===0){this._setRange('after',$inserted.contents().last())}}}
if(($query=$(".atwho-query",this.app.document)).length>0&&$query.is(':empty')&&$query.text().length===0){$query.remove()}
if(!this._movingEvent(e)){$query.removeClass('atwho-inserted')}
_range=range.cloneRange();_range.setStart(range.startContainer,0);matched=this.callbacks("matcher").call(this,this.at,_range.toString(),this.getOpt('startWithSpace'));var endoffset=0;var r2=!1;if(e.type=='keyup'&&$query.length===0&&typeof matched==='string'&&(index=range.startOffset-this.at.length-matched.length)>=0){var r2=range.cloneRange();r2.setStart(range.startContainer,index);r2.setEnd(range.startContainer,range.startContainer.length);var w=r2.toString().substr(this.at.length).replace(/^([\w-]+)(.*)$/,"$1");if(w.length>0){endoffset=w.length+2;matched=this.callbacks("matcher").call(this,this.at,this.at+w,this.getOpt('startWithSpace'));var r3=r2.cloneRange();r3.setStart(range.startContainer,index);r3.setEnd(range.startContainer,index+w.length+this.at.length);r3.surroundContents(($query=$("<span class='atwho-query'/>",this.app.document))[0]);r3.setStart(range.startContainer.nextSibling,1);index=0}}
if($query.length===0&&typeof matched==='string'&&(index=range.startOffset-this.at.length-matched.length+endoffset)>=0){range.setStart(range.startContainer,index);range.surroundContents(($query=$("<span class='atwho-query'/>",this.app.document))[0]);lastNode=$query.contents().last().get(0);if(/firefox/i.test(navigator.userAgent)){range.setStart(lastNode,lastNode.length);range.setEnd(lastNode,lastNode.length);this._clearRange(range)}else{this._setRange('after',lastNode,range)}}
if(typeof matched==='string'&&matched.length<=this.getOpt('maxLen',20)){query={text:matched,el:$query};this.trigger("matched",[this.at,query.text]);return this.query=query}else{this.view.hide();this.query={el:$query};if($query.text().indexOf(this.at)>=0){if(this._movingEvent(e)&&$query.hasClass('atwho-inserted')){$query.removeClass('atwho-query')}else if(!1!==this.callbacks('afterMatchFailed').call(this,this.at,$query)){}}
return null}};EditableController.prototype.rect=function(){var $iframe,iframeOffset,rect;rect=this.query.el.offset();if(this.app.iframe&&!this.app.iframeAsRoot){iframeOffset=($iframe=$(this.app.iframe)).offset();rect.left+=iframeOffset.left-this.$inputor.scrollLeft();rect.top+=iframeOffset.top-this.$inputor.scrollTop()}
rect.bottom=rect.top+this.query.el.height();return rect};EditableController.prototype.insert=function(content,$li){var range,suffix,suffixNode;suffix=(suffix=this.getOpt('suffix'))?suffix:suffix||"\u00A0";this.query.el.removeClass('atwho-query').addClass('atwho-inserted').html(content);if(range=this._getRange()){range.setEndAfter(this.query.el[0]);range.collapse(!1);range.insertNode(suffixNode=this.app.document.createTextNode(suffix));this._setRange('after',suffixNode,range)}
if(!this.$inputor.is(':focus')){this.$inputor.focus()}
return this.$inputor.change()};return EditableController})(Controller);Model=(function(){function Model(context){this.context=context;this.at=this.context.at;this.storage=this.context.$inputor}
Model.prototype.destroy=function(){return this.storage.data(this.at,null)};Model.prototype.saved=function(){return this.fetch()>0};Model.prototype.query=function(query,callback){var data,searchKey,_remoteFilter;data=this.fetch();searchKey=this.context.getOpt("searchKey");data=this.context.callbacks('filter').call(this.context,query,data,searchKey)||[];_remoteFilter=this.context.callbacks('remoteFilter');if(data.length>0||(!_remoteFilter&&data.length===0)){return callback(data)}else{return _remoteFilter.call(this.context,query,callback)}};Model.prototype.fetch=function(){return this.storage.data(this.at)||[]};Model.prototype.save=function(data){return this.storage.data(this.at,this.context.callbacks("beforeSave").call(this.context,data||[]))};Model.prototype.load=function(data){if(!(this.saved()||!data)){return this._load(data)}};Model.prototype.reload=function(data){return this._load(data)};Model.prototype._load=function(data){if(typeof data==="string"){return $.ajax(data,{dataType:"json"}).done((function(_this){return function(data){return _this.save(data)}})(this))}else{return this.save(data)}};return Model})();View=(function(){function View(context){this.context=context;this.$el=$("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>");this.timeoutID=null;this.context.$el.append(this.$el);this.bindEvent()}
View.prototype.init=function(){var id;id=this.context.getOpt("alias")||this.context.at.charCodeAt(0);return this.$el.attr({'id':"at-view-"+id})};View.prototype.destroy=function(){return this.$el.remove()};View.prototype.bindEvent=function(){var $menu;$menu=this.$el.find('ul');return $menu.on('mouseenter.atwho-view','li',function(e){$menu.find('.cur').removeClass('cur');return $(e.currentTarget).addClass('cur')}).on('click.atwho-view','li',(function(_this){return function(e){$menu.find('.cur').removeClass('cur');$(e.currentTarget).addClass('cur');_this.choose(e);return e.preventDefault()}})(this))};View.prototype.visible=function(){return this.$el.is(":visible")};View.prototype.choose=function(e){var $li,content;if(($li=this.$el.find(".cur")).length){content=this.context.insertContentFor($li);this.context.insert(this.context.callbacks("beforeInsert").call(this.context,content,$li),$li);this.context.trigger("inserted",[$li,e]);this.hide(e)}
if(this.context.getOpt("hideWithoutSuffix")){return this.stopShowing=!0}};View.prototype.reposition=function(rect){var offset,overflowOffset,_ref,_window;_window=this.context.app.iframeAsRoot?this.context.app.window:window;if(rect.bottom+this.$el.height()-$(_window).scrollTop()>$(_window).height()){rect.bottom=rect.top-this.$el.height()}
if(rect.left>(overflowOffset=$(_window).width()-this.$el.width()-5)){rect.left=overflowOffset}
offset={left:rect.left,top:rect.bottom};if(offset.left==0&&offset.top==0){this.hide();return}
if((_ref=this.context.callbacks("beforeReposition"))!=null){_ref.call(this.context,offset)}
this.$el.offset(offset);return this.context.trigger("reposition",[offset])};View.prototype.next=function(){var cur,next;cur=this.$el.find('.cur');next=cur.next();if(!next.length){return}
cur.removeClass('cur');next.addClass('cur');return this.$el.animate({scrollTop:Math.max(0,cur.innerHeight()*(next.index()+2)-this.$el.height())},150)};View.prototype.prev=function(){var cur,prev;cur=this.$el.find('.cur');prev=cur.prev();if(!prev.length){return}
cur.removeClass('cur');prev.addClass('cur');return this.$el.animate({scrollTop:Math.max(0,cur.innerHeight()*(prev.index()+2)-this.$el.height())},150)};View.prototype.show=function(){var rect;if(this.stopShowing){this.stopShowing=!1;return}
if(!this.visible()){this.$el.show();this.$el.scrollTop(0);this.context.trigger('shown')}
if(rect=this.context.rect()){return this.reposition(rect)}};View.prototype.hide=function(e,time){var callback;if(!this.visible()){return}
if(isNaN(time)){this.$el.hide();return this.context.trigger('hidden',[e])}else{callback=(function(_this){return function(){return _this.hide()}})(this);clearTimeout(this.timeoutID);return this.timeoutID=setTimeout(callback,time)}};View.prototype.render=function(list){var $li,$ul,item,li,tpl,_i,_len;if(!($.isArray(list)&&list.length>0)){this.hide();return}
this.$el.find('ul').empty();$ul=this.$el.find('ul');tpl=this.context.getOpt('displayTpl');for(_i=0,_len=list.length;_i<_len;_i++){item=list[_i];item=$.extend({},item,{'atwho-at':this.context.at});li=this.context.callbacks("tplEval").call(this.context,tpl,item);$li=$(this.context.callbacks("highlighter").call(this.context,li,this.context.query.text));$li.data("item-data",item);$ul.append($li)}
this.show();if(this.context.getOpt('highlightFirst')){return $ul.find("li:first").addClass("cur")}};return View})();KEY_CODE={DOWN:40,UP:38,ESC:27,TAB:9,ENTER:13,CTRL:17,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8};DEFAULT_CALLBACKS={beforeSave:function(data){return Controller.arrayToDefaultHash(data)},matcher:function(flag,subtext,should_startWithSpace){var match,regexp,_a,_y;flag=flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");if(should_startWithSpace){flag='(?:^|\\s)'+flag}
_a=decodeURI("%C3%80");_y=decodeURI("%C3%BF");regexp=new RegExp(""+flag+"([A-Za-z"+_a+"-"+_y+"0-9_'\.\+\-]*)$|"+flag+"([^\\x00-\\xff]*)$",'gi');match=regexp.exec(subtext);if(match){return match[2]||match[1]}else{return null}},filter:function(query,data,searchKey){var item,_i,_len,_results;_results=[];for(_i=0,_len=data.length;_i<_len;_i++){item=data[_i];if(~new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase())){_results.push(item)}}
return _results},remoteFilter:null,sorter:function(query,items,searchKey){var item,_i,_len,_results;if(!query){return items}
_results=[];for(_i=0,_len=items.length;_i<_len;_i++){item=items[_i];item.atwho_order=new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase());if(item.atwho_order>-1){_results.push(item)}}
return _results.sort(function(a,b){return a.atwho_order-b.atwho_order})},tplEval:function(tpl,map){var error;try{return tpl.replace(/\$\{([^\}]*)\}/g,function(tag,key,pos){return map[key]})}catch(_error){error=_error;return ""}},highlighter:function(li,query){var regexp;if(!query){return li}
regexp=new RegExp(">\\s*(\\w*?)("+query.replace("+","\\+")+")(\\w*)\\s*<",'ig');return li.replace(regexp,function(str,$1,$2,$3){return '> '+$1+'<strong>'+$2+'</strong>'+$3+' <'})},beforeInsert:function(value,$li){return value},beforeReposition:function(offset){return offset},afterMatchFailed:function(at,el){}};Api={load:function(at,data){var c;if(c=this.controller(at)){return c.model.load(data)}},isSelecting:function(){var _ref;return(_ref=this.controller())!=null?_ref.view.visible():void 0},setIframe:function(iframe,asRoot){this.setupRootElement(iframe,asRoot);return null},run:function(){return this.dispatch()},destroy:function(){this.shutdown();return this.$inputor.data('atwho',null)}};$.fn.atwho=function(method){var result,_args;_args=arguments;result=null;this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var $this,app;if(!(app=($this=$(this)).data("atwho"))){$this.data('atwho',(app=new App(this)))}
if(typeof method==='object'||!method){return app.reg(method.at,method)}else if(Api[method]&&app){return result=Api[method].apply(app,Array.prototype.slice.call(_args,1))}else{return $.error("Method "+method+" does not exist on jQuery.caret")}});return result||this};$.fn.atwho["default"]={at:void 0,alias:void 0,data:null,displayTpl:"<li>${name}</li>",insertTpl:"${atwho-at}${name}",callbacks:DEFAULT_CALLBACKS,searchKey:"name",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,highlightFirst:!0,limit:5,maxLen:20,displayTimeout:300,delay:null}}));(function(root,factory){if(typeof define==='function'&&define.amd){define(["jquery"],function($){return(root.returnExportsGlobal=factory($))})}else if(typeof exports==='object'){module.exports=factory(require("jquery"))}else{factory(jQuery)}}(this,function($){"use strict";var EditableCaret,InputCaret,Mirror,Utils,discoveryIframeOf,methods,oDocument,oFrame,oWindow,pluginName,setContextBy;pluginName='caret';EditableCaret=(function(){function EditableCaret($inputor){this.$inputor=$inputor;this.domInputor=this.$inputor[0]}
EditableCaret.prototype.setPos=function(pos){return this.domInputor};EditableCaret.prototype.getIEPosition=function(){return this.getPosition()};EditableCaret.prototype.getPosition=function(){var inputor_offset,offset;offset=this.getOffset();inputor_offset=this.$inputor.offset();offset.left-=inputor_offset.left;offset.top-=inputor_offset.top;return offset};EditableCaret.prototype.getOldIEPos=function(){var preCaretTextRange,textRange;textRange=oDocument.selection.createRange();preCaretTextRange=oDocument.body.createTextRange();preCaretTextRange.moveToElementText(this.domInputor);preCaretTextRange.setEndPoint("EndToEnd",textRange);return preCaretTextRange.text.length};EditableCaret.prototype.getPos=function(){var clonedRange,pos,range;if(range=this.range()){clonedRange=range.cloneRange();clonedRange.selectNodeContents(this.domInputor);clonedRange.setEnd(range.endContainer,range.endOffset);pos=clonedRange.toString().length;clonedRange.detach();return pos}else if(oDocument.selection){return this.getOldIEPos()}};EditableCaret.prototype.getOldIEOffset=function(){var range,rect;range=oDocument.selection.createRange().duplicate();range.moveStart("character",-1);rect=range.getBoundingClientRect();return{height:rect.bottom-rect.top,left:rect.left,top:rect.top}};EditableCaret.prototype.getOffset=function(pos){var clonedRange,offset,range,rect,shadowCaret;if(oWindow.getSelection&&(range=this.range())){if(range.endOffset-1>0&&range.endContainer===!this.domInputor){clonedRange=range.cloneRange();clonedRange.setStart(range.endContainer,range.endOffset-1);clonedRange.setEnd(range.endContainer,range.endOffset);rect=clonedRange.getBoundingClientRect();offset={height:rect.height,left:rect.left+rect.width,top:rect.top};clonedRange.detach()}
if(!offset||(offset!=null?offset.height:void 0)===0){clonedRange=range.cloneRange();shadowCaret=$(oDocument.createTextNode("|"));clonedRange.insertNode(shadowCaret[0]);clonedRange.selectNode(shadowCaret[0]);rect=clonedRange.getBoundingClientRect();offset={height:rect.height,left:rect.left,top:rect.top};shadowCaret.remove();clonedRange.detach()}}else if(oDocument.selection){offset=this.getOldIEOffset()}
if(offset){offset.top+=$(oWindow).scrollTop();offset.left+=$(oWindow).scrollLeft()}
return offset};EditableCaret.prototype.range=function(){var sel;if(!oWindow.getSelection){return}
sel=oWindow.getSelection();if(sel.rangeCount>0){return sel.getRangeAt(0)}else{return null}};return EditableCaret})();InputCaret=(function(){function InputCaret($inputor){this.$inputor=$inputor;this.domInputor=this.$inputor[0]}
InputCaret.prototype.getIEPos=function(){var endRange,inputor,len,normalizedValue,pos,range,textInputRange;inputor=this.domInputor;range=oDocument.selection.createRange();pos=0;if(range&&range.parentElement()===inputor){normalizedValue=inputor.value.replace(/\r\n/g,"\n");len=normalizedValue.length;textInputRange=inputor.createTextRange();textInputRange.moveToBookmark(range.getBookmark());endRange=inputor.createTextRange();endRange.collapse(!1);if(textInputRange.compareEndPoints("StartToEnd",endRange)>-1){pos=len}else{pos=-textInputRange.moveStart("character",-len)}}
return pos};InputCaret.prototype.getPos=function(){if(oDocument.selection){return this.getIEPos()}else{return this.domInputor.selectionStart}};InputCaret.prototype.setPos=function(pos){var inputor,range;inputor=this.domInputor;if(oDocument.selection){range=inputor.createTextRange();range.move("character",pos);range.select()}else if(inputor.setSelectionRange){inputor.setSelectionRange(pos,pos)}
return inputor};InputCaret.prototype.getIEOffset=function(pos){var h,textRange,x,y;textRange=this.domInputor.createTextRange();pos||(pos=this.getPos());textRange.move('character',pos);x=textRange.boundingLeft;y=textRange.boundingTop;h=textRange.boundingHeight;return{left:x,top:y,height:h}};InputCaret.prototype.getOffset=function(pos){var $inputor,offset,position;$inputor=this.$inputor;if(oDocument.selection){offset=this.getIEOffset(pos);offset.top+=$(oWindow).scrollTop()+$inputor.scrollTop();offset.left+=$(oWindow).scrollLeft()+$inputor.scrollLeft();return offset}else{offset=$inputor.offset();position=this.getPosition(pos);return offset={left:offset.left+position.left-$inputor.scrollLeft(),top:offset.top+position.top-$inputor.scrollTop(),height:position.height}}};InputCaret.prototype.getPosition=function(pos){var $inputor,at_rect,end_range,format,html,mirror,start_range;$inputor=this.$inputor;format=function(value){value=value.replace(/<|>|`|"|&/g,'?').replace(/\r\n|\r|\n/g,"<br/>");if(/firefox/i.test(navigator.userAgent)){value=value.replace(/\s/g,'&nbsp;')}
return value};if(pos===void 0){pos=this.getPos()}
start_range=$inputor.val().slice(0,pos);end_range=$inputor.val().slice(pos);html="<span style='position: relative; display: inline;'>"+format(start_range)+"</span>";html+="<span id='caret' style='position: relative; display: inline;'>|</span>";html+="<span style='position: relative; display: inline;'>"+format(end_range)+"</span>";mirror=new Mirror($inputor);return at_rect=mirror.create(html).rect()};InputCaret.prototype.getIEPosition=function(pos){var h,inputorOffset,offset,x,y;offset=this.getIEOffset(pos);inputorOffset=this.$inputor.offset();x=offset.left-inputorOffset.left;y=offset.top-inputorOffset.top;h=offset.height;return{left:x,top:y,height:h}};return InputCaret})();Mirror=(function(){Mirror.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"];function Mirror($inputor){this.$inputor=$inputor}
Mirror.prototype.mirrorCss=function(){var css,_this=this;css={position:'absolute',left:-9999,top:0,zIndex:-20000};if(this.$inputor.prop('tagName')==='TEXTAREA'){this.css_attr.push('width')}
$.each(this.css_attr,function(i,p){return css[p]=_this.$inputor.css(p)});return css};Mirror.prototype.create=function(html){this.$mirror=$('<div></div>');this.$mirror.css(this.mirrorCss());this.$mirror.html(html);this.$inputor.after(this.$mirror);return this};Mirror.prototype.rect=function(){var $flag,pos,rect;$flag=this.$mirror.find("#caret");pos=$flag.position();rect={left:pos.left,top:pos.top,height:$flag.height()};this.$mirror.remove();return rect};return Mirror})();Utils={contentEditable:function($inputor){return !!($inputor[0].contentEditable&&$inputor[0].contentEditable==='true')}};methods={pos:function(pos){if(pos||pos===0){return this.setPos(pos)}else{return this.getPos()}},position:function(pos){if(oDocument.selection){return this.getIEPosition(pos)}else{return this.getPosition(pos)}},offset:function(pos){var offset;offset=this.getOffset(pos);return offset}};oDocument=null;oWindow=null;oFrame=null;setContextBy=function(settings){var iframe;if(iframe=settings!=null?settings.iframe:void 0){oFrame=iframe;oWindow=iframe.contentWindow;return oDocument=iframe.contentDocument||oWindow.document}else{oFrame=void 0;oWindow=window;return oDocument=document}};discoveryIframeOf=function($dom){var error;oDocument=$dom[0].ownerDocument;oWindow=oDocument.defaultView||oDocument.parentWindow;try{return oFrame=oWindow.frameElement}catch(_error){error=_error}};$.fn.caret=function(method,value,settings){var caret;if(methods[method]){if($.isPlainObject(value)){setContextBy(value);value=void 0}else{setContextBy(settings)}
caret=Utils.contentEditable(this)?new EditableCaret(this):new InputCaret(this);return methods[method].apply(caret,[value])}else{return $.error("Method "+method+" does not exist on jQuery.caret")}};$.fn.caret.EditableCaret=EditableCaret;$.fn.caret.InputCaret=InputCaret;$.fn.caret.Utils=Utils;$.fn.caret.apis=methods}));(function($){'use strict';function safe_add(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF),msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF)}
function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt))}
function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b)}
function md5_ff(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t)}
function md5_gg(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t)}
function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t)}
function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t)}
function binl_md5(x,len){x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var i,olda,oldb,oldc,oldd,a=1732584193,b=-271733879,c=-1732584194,d=271733878;for(i=0;i<x.length;i+=16){olda=a;oldb=b;oldc=c;oldd=d;a=md5_ff(a,b,c,d,x[i],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd)}
return[a,b,c,d]}
function binl2rstr(input){var i,output='';for(i=0;i<input.length*32;i+=8){output+=String.fromCharCode((input[i>>5]>>>(i%32))&0xFF)}
return output}
function rstr2binl(input){var i,output=[];output[(input.length>>2)-1]=undefined;for(i=0;i<output.length;i+=1){output[i]=0}
for(i=0;i<input.length*8;i+=8){output[i>>5]|=(input.charCodeAt(i/8)&0xFF)<<(i%32)}
return output}
function rstr_md5(s){return binl2rstr(binl_md5(rstr2binl(s),s.length*8))}
function rstr_hmac_md5(key,data){var i,bkey=rstr2binl(key),ipad=[],opad=[],hash;ipad[15]=opad[15]=undefined;if(bkey.length>16){bkey=binl_md5(bkey,key.length*8)}
for(i=0;i<16;i+=1){ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C}
hash=binl_md5(ipad.concat(rstr2binl(data)),512+data.length*8);return binl2rstr(binl_md5(opad.concat(hash),512+128))}
function rstr2hex(input){var hex_tab='0123456789abcdef',output='',x,i;for(i=0;i<input.length;i+=1){x=input.charCodeAt(i);output+=hex_tab.charAt((x>>>4)&0x0F)+hex_tab.charAt(x&0x0F)}
return output}
function str2rstr_utf8(input){return unescape(encodeURIComponent(input))}
function raw_md5(s){return rstr_md5(str2rstr_utf8(s))}
function hex_md5(s){return rstr2hex(raw_md5(s))}
function raw_hmac_md5(k,d){return rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d))}
function hex_hmac_md5(k,d){return rstr2hex(raw_hmac_md5(k,d))}
$.md5=function(string,key,raw){if(!key){if(!raw){return hex_md5(string)}else{return raw_md5(string)}}
if(!raw){return hex_hmac_md5(key,string)}else{return raw_hmac_md5(key,string)}}}(typeof jQuery==='function'?jQuery:this))