4837: Upgraded Infusion Library to 1.4 with the latest build on Aug 30th, 2011.
[atutor.git] / docs / jscripts / infusion / components / uiOptions / js / UIEnhancer.js
index 803a53e..34fec10 100644 (file)
@@ -1 +1 @@
-fluid_1_1=fluid_1_1||{};(function($,fluid){var replaceClass=function(container,selector,regExp,newVal){newVal=newVal||"";$(selector,container).andSelf().each(function(i){var attr=($.browser.msie===false)?"class":"className";if(this.getAttribute(attr)){this.setAttribute(attr,this.getAttribute(attr).replace(regExp,newVal))}})};var addClassForSetting=function(element,settingName,value,classnameMap){var settingValues=classnameMap[settingName]||{};var className=settingValues[value];if(className){element.addClass(className)}};var isTrue=function(val){return val&&(val===true||val==="true")};var setToc=function(that,tocSetting){if(isTrue(tocSetting)){if(that.tableOfContents){that.tableOfContents.show()}else{that.tableOfContents=fluid.initSubcomponent(that,"tableOfContents",[that.container,fluid.COMPONENT_OPTIONS])}}else{if(that.tableOfContents){that.tableOfContents.hide()}}};var setLineSpacing=function(container,spacing){spacing=spacing&&spacing>0?spacing:1;container.css("line-height",spacing+"em")};var setMinSize=function(container,size){if(size&&size>0){container.css("font-size",size+"pt");replaceClass(container,"[class*=fl-font-size-]",/\bfl-font-size-[0-9]{1,2}\s+/g,"fl-font-size-100")}else{container.css("font-size","")}};var addStyles=function(container,settings,classnameMap){addClassForSetting(container,"textFont",settings.textFont,classnameMap);addClassForSetting(container,"textSpacing",settings.textSpacing,classnameMap);addClassForSetting(container,"theme",settings.theme,classnameMap);addClassForSetting(container,"layout",settings.layout,classnameMap)};var styleElements=function(elements,setting,classname){if(setting){elements.addClass(classname)}else{elements.removeClass(classname)}};var styleLinks=function(container,settings,classnameMap){var links=$("a",container);styleElements(links,settings.linksUnderline,classnameMap.linksUnderline);styleElements(links,settings.linksBold,classnameMap.linksBold);styleElements(links,settings.linksLarger,classnameMap.linksLarger)};var styleInputs=function(container,settings,classnameMap){styleElements($("input",container),settings.inputsLarger,classnameMap.inputsLarger)};var initModel=function(that){if(that.options.savedSettings){that.model=that.options.savedSettings;return }that.model=that.settingsStore.fetch()||fluid.copy(that.defaultSiteSettings)};var clearClashingClasses=function(container,classnameMap){var settingsWhichMayClash=["textFont","textSpacing","theme","layout"];var classesToRemove="fl-noBackgroundImages";var selector=".fl-noBackgroundImages";for(var i=0;i<settingsWhichMayClash.length;i++){var settingValues=classnameMap[settingsWhichMayClash[i]];for(var val in settingValues){var classname=settingValues[val];if(classname){classesToRemove=classesToRemove+" "+classname;selector=selector+",."+classname}}}$(selector,container).removeClass(classesToRemove);return classesToRemove};var setupUIEnhancer=function(that){that.settingsStore=fluid.initSubcomponent(that,"settingsStore",[fluid.COMPONENT_OPTIONS]);initModel(that);that.refreshView()};fluid.uiEnhancer=function(doc,options){doc=doc||document;var that=fluid.initView("fluid.uiEnhancer",doc,options);$(doc).data("uiEnhancer",that);that.container=$("body",doc);that.defaultSiteSettings=that.options.defaultSiteSettings;var clashingClassnames;that.refreshView=function(){that.container.removeClass(clashingClassnames);addStyles(that.container,that.model,that.options.classnameMap);styleElements(that.container,!isTrue(that.model.backgroundImages),that.options.classnameMap.noBackgroundImages);setMinSize(that.container,that.model.textSize);setLineSpacing(that.container,that.model.lineSpacing);setToc(that,that.model.toc);styleLinks(that.container,that.model,that.options.classnameMap);styleInputs(that.container,that.model,that.options.classnameMap)};that.updateModel=function(newModel,source){that.events.modelChanged.fire(newModel,that.model,source);fluid.clear(that.model);fluid.model.copyModel(that.model,newModel);that.settingsStore.save(that.model);that.refreshView()};clashingClassnames=clearClashingClasses(that.container,that.options.classnameMap);setupUIEnhancer(that);return that};fluid.defaults("fluid.uiEnhancer",{tableOfContents:{type:"fluid.tableOfContents",options:{templateUrl:"../../tableOfContents/html/TableOfContents.html"}},settingsStore:{type:"fluid.uiEnhancer.cookieStore"},events:{modelChanged:null},classnameMap:{textFont:{serif:"fl-font-serif",sansSerif:"fl-font-sans",arial:"fl-font-arial",verdana:"fl-font-verdana",monospace:"fl-font-monospace",courier:"fl-font-courier",times:"fl-font-times"},textSpacing:{"default":"",wide0:"fl-font-spacing-0",wide1:"fl-font-spacing-1",wide2:"fl-font-spacing-2",wide3:"fl-font-spacing-3",wide4:"fl-font-spacing-4",wide5:"fl-font-spacing-5",wide6:"fl-font-spacing-6"},theme:{mist:"fl-theme-mist",rust:"fl-theme-rust",highContrast:"fl-theme-hc",highContrastInverted:"fl-theme-hci",lowContrast:"fl-theme-slate",mediumContrast:"fl-theme-coal","default":""},layout:{simple:"fl-layout-linear","default":""},noBackgroundImages:"fl-noBackgroundImages",linksUnderline:"fl-text-underline",linksBold:"fl-text-bold",linksLarger:"fl-text-larger",inputsLarger:"fl-text-larger"},defaultSiteSettings:{textFont:"",textSpacing:"",theme:"default",layout:"default",textSize:"",lineSpacing:"",backgroundImages:true,toc:false,linksUnderline:false,linksBold:false,linksLarger:false,inputsLarger:false}});fluid.uiEnhancer.cookieStore=function(options){var that={};fluid.mergeComponentOptions(that,"fluid.uiEnhancer.cookieStore",options);that.fetch=function(){var cookie=document.cookie;var cookiePrefix=that.options.cookieName+"=";var retObj,startIndex,endIndex;if(cookie.length>0){startIndex=cookie.indexOf(cookiePrefix);if(startIndex>-1){startIndex=startIndex+cookiePrefix.length;endIndex=cookie.indexOf(";",startIndex);if(endIndex<startIndex){endIndex=cookie.length}retObj=JSON.parse(decodeURIComponent(cookie.substring(startIndex,endIndex)))}}return retObj};that.save=function(settings){document.cookie=that.options.cookieName+"="+encodeURIComponent(JSON.stringify(settings))};return that};fluid.defaults("fluid.uiEnhancer.cookieStore",{cookieName:"fluid-ui-settings"});fluid.uiEnhancer.tempStore=function(options){var that={};that.model=null;that.fetch=function(){return that.model};that.save=function(settings){that.model=settings};return that}})(jQuery,fluid_1_1);
\ No newline at end of file
+var fluid_1_4=fluid_1_4||{};(function($,fluid){var isTrue=function(val){return val&&(val===true||val==="true")};var setToc=function(that,tocSetting){if(isTrue(tocSetting)){if(that.tableOfContents){that.tableOfContents.show()}else{$(document).ready(that.events.onReady.fire)}}else{if(that.tableOfContents){that.tableOfContents.hide()}}};fluid.defaults("fluid.uiEnhancer",{gradeNames:["fluid.viewComponent","autoInit"],components:{textSize:{type:"fluid.uiEnhancer.textSizer",container:"{uiEnhancer}.container"},tableOfContents:{type:"fluid.tableOfContents",container:"{uiEnhancer}.container",createOnEvent:"onReady",options:{components:{levels:{type:"fluid.tableOfContents.levels",options:{resources:{template:{forceCache:true,url:"{uiEnhancer}.options.tocTemplate"}}}}}}},textFont:{type:"fluid.uiEnhancer.classSwapper",container:"{uiEnhancer}.container",options:{classes:"{uiEnhancer}.options.classnameMap.textFont"}},lineSpacing:{type:"fluid.uiEnhancer.lineSpacer",container:"{uiEnhancer}.container"},theme:{type:"fluid.uiEnhancer.classSwapper",container:"{uiEnhancer}.container",options:{classes:"{uiEnhancer}.options.classnameMap.theme"}},settingsStore:{type:"fluid.uiOptions.store",options:{defaultSiteSettings:"{uiEnhancer}.options.defaultSiteSettings"}}},invokers:{updateModel:{funcName:"fluid.uiEnhancer.updateModel",args:["@0","{uiEnhancer}.applier"]},updateFromSettingsStore:{funcName:"fluid.uiEnhancer.updateFromSettingsStore",args:["{uiEnhancer}"]},refreshView:{funcName:"fluid.uiEnhancer.refreshView",args:["{uiEnhancer}"]},styleElements:"fluid.uiEnhancer.styleElements",setLayout:"fluid.uiEnhancer.setLayout",styleLinks:"fluid.uiEnhancer.styleLinks",styleInputs:"fluid.uiEnhancer.styleInputs"},events:{onReady:null,modelChanged:null},classnameMap:{textFont:{"default":"",times:"fl-font-times",comic:"fl-font-comic-sans",arial:"fl-font-arial",verdana:"fl-font-verdana"},theme:{"default":"",bw:"fl-theme-uio-bw fl-theme-bw",wb:"fl-theme-uio-wb fl-theme-wb",by:"fl-theme-uio-by fl-theme-by",yb:"fl-theme-uio-yb fl-theme-yb"},layout:"fl-layout-linear",links:"fl-text-underline fl-text-bold fl-text-larger",inputsLarger:"fl-text-larger"},finalInitFunction:"fluid.uiEnhancer.finalInit"});fluid.uiEnhancer.finalInit=function(that){that.applier.modelChanged.addListener("",function(newModel,oldModel,changeRequest){that.events.modelChanged.fire(newModel,oldModel,changeRequest);that.refreshView()});that.updateFromSettingsStore();return that};fluid.uiEnhancer.updateFromSettingsStore=function(that){that.updateModel(that.settingsStore.fetch())};fluid.uiEnhancer.updateModel=function(newModel,applier){applier.requestChange("",newModel)};fluid.uiEnhancer.refreshView=function(that){that.textSize.set(that.model.textSize);that.textFont.swap(that.model.textFont);that.lineSpacing.set(that.model.lineSpacing);that.theme.swap(that.model.theme);that.setLayout(that);setToc(that,that.model.toc);that.styleLinks(that);that.styleInputs(that)};fluid.uiEnhancer.styleElements=function(elements,setting,classname){if(setting){elements.addClass(classname)}else{$("."+classname,elements).andSelf().removeClass(classname)}};fluid.uiEnhancer.setLayout=function(that){that.styleElements(that.container,that.model.layout,that.options.classnameMap.layout)};fluid.uiEnhancer.styleLinks=function(that){var links=$("a",that.container);that.styleElements(links,that.model.links,that.options.classnameMap.links)};fluid.uiEnhancer.styleInputs=function(that){that.styleElements($("input",that.container),that.model.inputsLarger,that.options.classnameMap.inputsLarger)};fluid.uiEnhancer.getTextSize=function(container){return parseFloat(container.css("font-size"))};fluid.defaults("fluid.uiEnhancer.textSizer",{gradeNames:["fluid.viewComponent","autoInit"],invokers:{set:{funcName:"fluid.uiEnhancer.textSizer.set",args:["@0","{textSizer}"]},calcInitSize:{funcName:"fluid.uiEnhancer.textSizer.calcInitSize",args:["{textSizer}"]}}});fluid.uiEnhancer.textSizer.set=function(times,that){if(!that.initialSize){that.calcInitSize()}if(times===1){that.container.css("font-size","")}else{if(times&&times>0){that.container.css("font-size",that.initialSize*times+"px")}}};fluid.uiEnhancer.textSizer.calcInitSize=function(that){that.initialSize=fluid.uiEnhancer.getTextSize(that.container)};fluid.defaults("fluid.uiEnhancer.classSwapper",{gradeNames:["fluid.viewComponent","autoInit"],invokers:{clearClasses:{funcName:"fluid.uiEnhancer.classSwapper.clearClasses",args:["{classSwapper}"]},swap:{funcName:"fluid.uiEnhancer.classSwapper.swap",args:["@0","{classSwapper}"]}},classes:{},finalInitFunction:"fluid.uiEnhancer.classSwapper.finalInit"});fluid.uiEnhancer.classSwapper.finalInit=function(that){that.classSelector="";that.classStr="";fluid.each(that.options.classes,function(className){if(className){that.classSelector+=that.classSelector?", ."+className:"."+className;that.classStr+=that.classStr?" "+className:className}})};fluid.uiEnhancer.classSwapper.clearClasses=function(that){$(that.classSelector,that.container).add(that.container).removeClass(that.classStr)};fluid.uiEnhancer.classSwapper.swap=function(classname,that){that.clearClasses(that);that.container.addClass(that.options.classes[classname])};fluid.defaults("fluid.uiEnhancer.lineSpacer",{gradeNames:["fluid.viewComponent","autoInit"],invokers:{set:{funcName:"fluid.uiEnhancer.lineSpacer.set",args:["@0","{lineSpacer}"]},calcInitSize:{funcName:"fluid.uiEnhancer.lineSpacer.calcInitSize",args:["{lineSpacer}"]}}});fluid.uiEnhancer.lineSpacer.set=function(times,that){if(!that.initialSize){that.calcInitSize()}var newLineSpacing=times===""||times===1?that.initialSize:times*that.initialSize;that.container.css("line-height",newLineSpacing+"em")};fluid.uiEnhancer.lineSpacer.calcInitSize=function(that){var lineHeight=that.container.css("lineHeight");if(lineHeight==="normal"){return 1}if($.browser.msie){var lineHeightInIE;lineHeightInIE=that.container[0].currentStyle.lineHeight;if(lineHeightInIE.match(/[0-9]$/)){return lineHeightInIE}}that.initialSize=Math.round(parseFloat(lineHeight)/fluid.uiEnhancer.getTextSize(that.container)*100)/100};fluid.pageEnhancer=function(uiEnhancerOptions){var that=fluid.initLittleComponent("fluid.pageEnhancer");that.uiEnhancerOptions=uiEnhancerOptions;fluid.initDependents(that);fluid.staticEnvironment.uiEnhancer=that.uiEnhancer;return that};fluid.defaults("fluid.pageEnhancer",{gradeNames:["fluid.littleComponent"],components:{uiEnhancer:{type:"fluid.uiEnhancer",container:"body",options:"{pageEnhancer}.uiEnhancerOptions"}}});fluid.demands("fluid.uiOptions.store",["fluid.uiEnhancer"],{funcName:"fluid.cookieStore"})})(jQuery,fluid_1_4);
\ No newline at end of file