/* FILE ARCHIVED ON 23:52:03 Feb 25, 2013 AND RETRIEVED FROM THE AN OPENWAYBACK INSTANCE ON 15:20:54 Jul 21, 2024. JAVASCRIPT APPENDED BY OPENWAYBACK, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ // Simply Buttons, version 2.0 // (c) 2007-2009 Kevin Miller // // This script is freely distributable under the terms of an MIT-style license. // /*-----------------------------------------------------------------------------------------------*/ // // * Adjusts the buttons so that they will not have an outline when they are pressed. // * If the browser is mobile then we replace the buttons with inputs for compatibility. // * Disables the text in the buttons from being selected. // * The default styles here are meant for use with the Sliding Doors technique https://webarchive.library.unt.edu/web/20130225235203/http://alistapart.com/articles/slidingdoors/ // to be used for IE so we can have nice states with a horrid browser too! // /*-----------------------------------------------------------------------------------------------*/ var SimplyButtons = { options : { hyperlinkClass : 'button' ,activeButtonClass : 'button_active' ,states : { outer : { active : { backgroundPosition : 'bottom left' } ,inactive : { backgroundPosition : 'top left' } } ,inner : { active : { backgroundPosition : 'bottom right' } ,inactive : { backgroundPosition : 'top right' } } } ,iphone : { replaceButtons : true } } ,buttons : [] ,iphone : false ,init : function(options) { for (var property in options) { this.options[property] = options[property]; } this.iphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)); this.process(document.getElementsByTagName('button'), false); this.process(document.getElementsByTagName('a'), true); if (this.iphone && this.options.iphone.replaceButtons) { this.remove(); } } ,process : function(elements, links) { var linkTest = new RegExp('\\b' + this.options.hyperlinkClass + '\\b'); for (var a = 0; a < elements.length; a++) { if ((links && linkTest.test(elements[a].className)) || !links) { if (this.iphone && !links) { this.mobile(elements[a]); } else { this.disable(elements[a]); this.setup(elements[a]); } if (!links) { this.buttons.push(elements[a]); } } } } ,mobile : function(element) { var input = document.createElement('input'); input.setAttribute('type', element.getAttribute('type') == 'submit' ? 'submit' : 'button'); var attributes = new Array('id', 'name', 'value', 'class', 'onclick', 'onmouseover', 'onmouseout', 'onpress', 'onfocus', 'onblur', 'onmouseup', 'onmousedown'); for (var a = 0; a < attributes.length; a++) { if (element.getAttribute(attributes[a])) { input.setAttribute(attributes[a], element.getAttribute(attributes[a])); } } input.style.marginLeft = element.style.marginLeft; input.style.marginRight = element.style.marginRight; element.parentNode.insertBefore(input, element); } ,remove : function() { for (var a = 0; a < this.buttons.length; a++) { this.buttons[a].parentNode.removeChild(this.buttons[a]); } } ,disable : function(element) { element.onselectstart = function() { return false; }; element.style.MozUserSelect = 'none'; element.style.KhtmlUserSelect = 'none'; element.style.UserSelect = 'none'; element.style.cursor = 'default'; } ,setup : function(element) { if (document.all) { if (element.tagName == 'BUTTON') { element.attachEvent('onfocus', this.bind(this.toggle, this, element)); } else { element.attachEvent('onmousedown', this.bind(this.toggle, this, element)); } element.attachEvent('onmouseup', this.bind(this.toggle, this, element)); } else { element.onfocus = function() { this.blur(); }; } } ,toggle : function(o, element) { if (element.tagName != 'BUTTON' && element.tagName != 'A') { while (element.tagName != 'A') { element = element.parentNode; } } if (event.type == 'focus' || event.type == 'mousedown') { element.className += ' ' + o.options.activeButtonClass; o.style(element.childNodes[0], o.options.states.inner.active); o.style(element.childNodes[0].childNodes[0], o.options.states.outer.active); element.blur(); } else { element.className = element.className.replace(o.options.activeButtonClass, ''); o.style(element.childNodes[0], o.options.states.inner.inactive); o.style(element.childNodes[0].childNodes[0], o.options.states.outer.inactive); } } ,style : function(element, styles) { for (var property in styles) { element.style[property] = styles[property]; } } ,bind : function(func) { var args = []; for (var a = 1; a < arguments.length; a++) { args.push(arguments[a]); } return function() { return func.apply(this, args); }; } };