/* * jQuery.fontselect - A font selector for the Google Web Fonts api * Tom Moor, http://tommoor.com * Copyright (c) 2011 Tom Moor * MIT Licensed * @version 0.1 */ jQuery(document).ready(function() { jQuery('#wpsocial_gfonts').fontselect().change(function(){ var font = jQuery(this).val().replace(/\+/g, ' '); font = font.split(':'); jQuery(".wpsocial_msgfont").val(font[0]); }); }); (function($){ $.fn.fontselect = function(options) { var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; var fonts = [ "", "Aclonica", "Allan", "Annie Use Your Telescope", "Anonymous Pro", "Allerta Stencil", "Allerta", "Amaranth", "Anton", "Architects Daughter", "Arimo", "Artifika", "Arvo", "Asset", "Astloch", "Bangers", "Bentham", "Bevan", "Bigshot One", "Bowlby One", "Bowlby One SC", "Brawler", "Buda:300", "Cabin", "Calligraffitti", "Candal", "Cantarell", "Cardo", "Carter One", "Caudex", "Cedarville Cursive", "Cherry Cream Soda", "Chewy", "Coda", "Coming Soon", "Copse", "Corben:700", "Cousine", "Covered By Your Grace", "Crafty Girls", "Crimson Text", "Crushed", "Cuprum", "Damion", "Dancing Script", "Dawning of a New Day", "Didact Gothic", "Droid Sans", "Droid Sans Mono", "Droid Serif", "EB Garamond", "Expletus Sans", "Fontdiner Swanky", "Forum", "Francois One", "Geo", "Give You Glory", "Goblin One", "Goudy Bookletter 1911", "Gravitas One", "Gruppo", "Hammersmith One", "Holtwood One SC", "Homemade Apple", "Inconsolata", "Indie Flower", "IM Fell DW Pica", "IM Fell DW Pica SC", "IM Fell Double Pica", "IM Fell Double Pica SC", "IM Fell English", "IM Fell English SC", "IM Fell French Canon", "IM Fell French Canon SC", "IM Fell Great Primer", "IM Fell Great Primer SC", "Irish Grover", "Irish Growler", "Istok Web", "Josefin Sans", "Josefin Slab", "Judson", "Jura", "Jura:500", "Jura:600", "Just Another Hand", "Just Me Again Down Here", "Kameron", "Kenia", "Kranky", "Kreon", "Kristi", "La Belle Aurore", "Lato:100", "Lato:100italic", "Lato:300", "Lato", "Lato:bold", "Lato:900", "League Script", "Lekton", "Limelight", "Lobster", "Lobster Two", "Lora", "Love Ya Like A Sister", "Loved by the King", "Luckiest Guy", "Maiden Orange", "Mako", "Maven Pro", "Maven Pro:500", "Maven Pro:700", "Maven Pro:900", "Meddon", "MedievalSharp", "Megrim", "Merriweather", "Metrophobic", "Michroma", "Miltonian Tattoo", "Miltonian", "Modern Antiqua", "Monofett", "Molengo", "Mountains of Christmas", "Muli:300", "Muli", "Neucha", "Neuton", "News Cycle", "Nixie One", "Nobile", "Nova Cut", "Nova Flat", "Nova Mono", "Nova Oval", "Nova Round", "Nova Script", "Nova Slim", "Nova Square", "Nunito:light", "Nunito", "OFL Sorts Mill Goudy TT", "Old Standard TT", "Open Sans:300", "Open Sans", "Open Sans:600", "Open Sans:800", "Open Sans Condensed:300", "Orbitron", "Orbitron:500", "Orbitron:700", "Orbitron:900", "Oswald", "Over the Rainbow", "Reenie Beanie", "Pacifico", "Patrick Hand", "Paytone One", "Permanent Marker", "Philosopher", "Play", "Playfair Display", "Podkova", "PT Sans", "PT Sans Narrow", "PT Sans Narrow:regular,bold", "PT Serif", "PT Serif Caption", "Puritan", "Quattrocento", "Quattrocento Sans", "Radley", "Raleway:100", "Redressed", "Rock Salt", "Rokkitt", "Ruslan Display", "Schoolbell", "Shadows Into Light", "Shanti", "Sigmar One", "Six Caps", "Slackey", "Smythe", "Sniglet:800", "Special Elite", "Stardos Stencil", "Sue Ellen Francisco", "Sunshiney", "Swanky and Moo Moo", "Syncopate", "Tangerine", "Tenor Sans", "Terminal Dosis Light", "The Girl Next Door", "Tinos", "Ubuntu", "Ultra", "Unkempt", "UnifrakturCook:bold", "UnifrakturMaguntia", "Varela", "Varela Round", "Vibur", "Vollkorn", "VT323", "Waiting for the Sunrise", "Wallpoet", "Walter Turncoat", "Wire One", "Yanone Kaffeesatz", "Yanone Kaffeesatz:300", "Yanone Kaffeesatz:400", "Yanone Kaffeesatz:700", "Yeseva One", "Zeyada"]; var settings = { style: 'font-select', placeholder: 'Select a font', lookahead: 8, api: 'http://fonts.googleapis.com/css?family=' }; var Fontselect = (function(){ function Fontselect(original, o){ this.$original = $(original); this.options = o; this.active = false; this.setupHtml(); this.getVisibleFonts(); this.bindEvents(); var font = this.$original.val(); if (font) { this.updateSelected(); this.addFontLink(font); } } Fontselect.prototype.bindEvents = function(){ $('li', this.$results) .click(__bind(this.selectFont, this)) .mouseenter(__bind(this.activateFont, this)) .mouseleave(__bind(this.deactivateFont, this)); $('span', this.$select).click(__bind(this.toggleDrop, this)); this.$arrow.click(__bind(this.toggleDrop, this)); }; Fontselect.prototype.toggleDrop = function(ev){ if(this.active){ this.$element.removeClass('font-select-active'); this.$drop.hide(); clearInterval(this.visibleInterval); } else { this.$element.addClass('font-select-active'); this.$drop.show(); this.moveToSelected(); this.visibleInterval = setInterval(__bind(this.getVisibleFonts, this), 500); } this.active = !this.active; }; Fontselect.prototype.selectFont = function(){ var font = $('li.active', this.$results).data('value'); this.$original.val(font).change(); this.updateSelected(); this.toggleDrop(); }; Fontselect.prototype.moveToSelected = function(){ var $li, font = this.$original.val(); if (font){ $li = $("li[data-value='"+ font +"']", this.$results); } else { $li = $("li", this.$results).first(); } this.$results.scrollTop($li.addClass('active').position().top); }; Fontselect.prototype.activateFont = function(ev){ $('li.active', this.$results).removeClass('active'); $(ev.currentTarget).addClass('active'); }; Fontselect.prototype.deactivateFont = function(ev){ $(ev.currentTarget).removeClass('active'); }; Fontselect.prototype.updateSelected = function(){ var font = this.$original.val(); $('span', this.$element).text(this.toReadable(font)).css(this.toStyle(font)); }; Fontselect.prototype.setupHtml = function(){ this.$original.empty().hide(); this.$element = $('
', {'class': this.options.style}); this.$arrow = $('
'); this.$select = $(''+ this.options.placeholder +''); this.$drop = $('
', {'class': 'fs-drop'}); this.$results = $('