define(["jquery", "./core"] , function (jQuery){ (function ($, undefined){ var reverseBoolOptionMap = { "ui-shadow": "shadow", "ui-corner-all": "corners", "ui-btn-inline": "inline", "ui-shadow-icon": "iconshadow", "ui-mini": "mini"} , getAttrFixed = function (){ var ret = $.mobile.getAttribute.apply(this, arguments); return (ret == null ? undefined: ret); } , capitalLettersRE = /[A-Z]/g; function optionsToClasses(options, existingClasses){ var classes = existingClasses? existingClasses: [] ; classes.push("ui-btn"); if (options.theme) { classes.push("ui-btn-" + options.theme); } if (options.icon) { classes = classes.concat(["ui-icon-" + options.icon, "ui-btn-icon-" + options.iconpos] ); if (options.iconshadow) { classes.push("ui-shadow-icon"); } } if (options.inline) { classes.push("ui-btn-inline"); } if (options.shadow) { classes.push("ui-shadow"); } if (options.corners) { classes.push("ui-corner-all"); } if (options.mini) { classes.push("ui-mini"); } return classes; } function classNameToOptions(classes){ var idx, map, unknownClass, alreadyEnhanced = false , noIcon = true , o = { icon: "", inline: false , shadow: false , corners: false , iconshadow: false , mini: false } , unknownClasses = [] ; classes = classes.split(" "); for (idx = 0; idx < _AN_Read_length("length", classes); idx++ ){ unknownClass = true ; map = reverseBoolOptionMap[classes[idx]]; if (map !== undefined) { unknownClass = false ; o[map] = true ; } else if (classes[idx].indexOf("ui-btn-icon-") === 0) { unknownClass = false ; noIcon = false ; o.iconpos = classes[idx].substring(12); } else if (classes[idx].indexOf("ui-icon-") === 0) { unknownClass = false ; o.icon = classes[idx].substring(8); } else if (classes[idx].indexOf("ui-btn-") === 0 && _AN_Read_length("length", classes[idx]) === 8) { unknownClass = false ; o.theme = classes[idx].substring(7); } else if (classes[idx] === "ui-btn") { unknownClass = false ; alreadyEnhanced = true ; } if (unknownClass) { unknownClasses.push(classes[idx]); } } if (noIcon) { o.icon = ""; } return { options: o, unknownClasses: unknownClasses, alreadyEnhanced: alreadyEnhanced} ; } function camelCase2Hyphenated(c){ return "-" + c.toLowerCase(); } $.fn.buttonMarkup = function (options, overwriteClasses){ var idx, data, el, retrievedOptions, optionKey, defaults = $.fn.buttonMarkup.defaults; for (idx = 0; idx < _AN_Read_length("length", this); idx++ ){ el = this[idx]; data = overwriteClasses? { alreadyEnhanced: false , unknownClasses: [] } : classNameToOptions(el.className); retrievedOptions = $.extend({ } , (data.alreadyEnhanced? data.options: { } ), options); if (!data.alreadyEnhanced) { for (optionKey in defaults){ if (retrievedOptions[optionKey] === undefined) { retrievedOptions[optionKey] = getAttrFixed(el, _AN_Call_replace("replace", optionKey, capitalLettersRE, camelCase2Hyphenated)); } } } el.className = optionsToClasses($.extend({ } , defaults, retrievedOptions), data.unknownClasses).join(" "); if (el.tagName.toLowerCase() !== "button") { _AN_Call_setattribute("setAttribute", el, "role", "button"); } } return this; } ; $.fn.buttonMarkup.defaults = { icon: "", iconpos: "left", theme: null , inline: false , shadow: true , corners: true , iconshadow: false , mini: false } ; $.extend($.fn.buttonMarkup, { initSelector: "a:jqmData(role='button'), .ui-bar > a, .ui-bar > :jqmData(role='controlgroup') > a, button"} ); } )(jQuery); } );