// // iWeb - TimerWidget.js // Copyright (c) 2007-2008 Apple Inc. All rights reserved. // var TimerWidget=Class.create(Widget,{widgetIdentifier:"com-apple-iweb-widget-timer",types:['text','digital','odometer','flip'],minFontFactor:1.2,initialize:function($super,instanceID,widgetPath,sharedPath,sitePath,preferences,runningInApp){if(instanceID!=null) {$super(instanceID,widgetPath,sharedPath,sitePath,preferences,runningInApp);this.autosizing=0;this.view=null;this.units=[this.localizedString("Secs"),this.localizedString("Mins"),this.localizedString("Hours"),this.localizedString("Days"),this.localizedString("Years")];var targetDate=new Date();targetDate.setDate(targetDate.getDate());this.initializingDefaultPreferences=true;this.initializeDefaultPreferences({'type':1,'target':targetDate.getTime(),'unitsRange':{'location':1,'length':4},'labelsEnabled':1});this.initializingDefaultPreferences=undefined;this.updateFromPreferences();}},onload:function(){this.view||this.p_createView();},onunload:function(){this.refreshInterval===undefined||this.refreshInterval==0||clearInterval(this.refreshInterval);this.view=null;},changedPreferenceForKey:function(key){if(!this.initializingDefaultPreferences&&(key=='type'||key=='target'||key=='unitsRange'||key=='labelsEnabled')) {this.updateFromPreferences();this.p_createView();} if(key=='labelFontSize') {if(this.view) {this.view.updateFromLabelFontSize();}} else if(key=='labelFontFactor') {if(this.view) {this.view.updateFromLabelFontFactor();}}},setDocumentInternalCSS:function($super,css){$super(css);var currentFontFamily=this.p_currentFontFamily();if(this.lastFontFamily!=currentFontFamily){this.lastFontFamily=currentFontFamily;var testTable=new Element('table');var testRow=new Element('tr',{className:'Timer_Labels'});var testCell=new Element('td');testTable.appendChild(testRow);testRow.appendChild(testCell);testTable.setStyle({position:'absolute',top:'0px'});testRow.setStyle({fontSize:'100px'});testCell.innerText='0123456789:';this.div().appendChild(testTable);var fontFactor=Math.max(testTable.offsetHeight/100,this.minFontFactor);this.div().removeChild(testTable);this.setPreferenceForKey(fontFactor,'labelFontFactor');}},updateFromPreferences:function(){this.targetDate=this.p_targetDateFromPreferences();this.unitsRange=this.p_unitsRangeFromPreferences();this.labelsEnabledValue=this.p_labelsEnabledFromPreferences();},p_currentFontFamily:function(){var family=undefined;var labelElement=this.div().selectFirst('.Timer_Labels');if(labelElement){family=labelElement.getStyle('font-family');} return family;},p_targetDateFromPreferences:function(){var target=this.preferenceForKey('target');return new Date(target);},p_unitsRangeFromPreferences:function(){var rangeDict=this.preferenceForKey('unitsRange');return new IWRange(rangeDict.location,rangeDict.length);},p_labelsEnabledFromPreferences:function(){return((this.preferenceForKey('labelsEnabled')>0)?true:false);},currentTimeDelta:function(){var now=new Date();return Math.max(0,this.targetDate-now);},p_createView:function(){var timerDisplayHeight=this.view!=null?this.view.timerDisplayHeight:-1;viewType=this.preferenceForKey('type');this.refreshInterval===undefined||this.refreshInterval==0||clearInterval(this.refreshInterval);this.view=null;switch(this.types[viewType]) {case'odometer':this.view=new OdometerTimerView(this,timerDisplayHeight);break;case'flip':this.view=new FlipTimerView(this,timerDisplayHeight);break;case'digital':this.view=new DigitalTimerView(this,timerDisplayHeight);break;case'text':this.view=new TextualTimerView(this,timerDisplayHeight);break;default:iWLog('timer widget could not instatiate unknown view');this.view=null;} this.view.setSelectedStyle();if(this.runningInApp) {window.onresize=function() {if(this.autosizing==0) {this.view.resize(false);}}.bind(this);this.view.resizeWidgetWindow();} this.view.refresh();this.refreshInterval=setInterval(this.view.refresh.bind(this.view),1000);}});var TimerView=Class.create({labelClassName:'Timer_Labels',initialize:function(widget,in_timerDisplayHeight){if(widget) {this.widget=widget;this.div=widget.div();this.p_calculateRatios();var widgetWidth=toPixels(this.div.getStyle('width'));var widgetHeight=toPixels(this.div.getStyle('height'));this.widgetAspectRatio=widgetHeight/widgetWidth;this.handlingHandleResize=0;var timer=this.widget.getElementById('timer');if(timer!==undefined){timer.update();} this.timerDisplayHeight=in_timerDisplayHeight;this.yDigitsNumber=0;this.dDigitsNumber=0;this.hDigitsNumber=0;this.mDigitsNumber=0;this.sDigitsNumber=0;this.p_setNumberOfDigitsPerUnit();}},refresh:function(){this.render();},render:function(){},ensureVisible:function(){var timer=this.widget.div().selectFirst('.timer_widget');if(timer) {timer.setStyle({visibility:'visible'});}},setSelectedStyle:function(){this.widget.setPreferenceForKey(this.labelClassName,"x-selected-style-class",false);},updateFromLabelFontSize:function(){var labelFontSize=this.widget.preferenceForKey("labelFontSize");this.timerDisplayHeight=this.fontFactor*this.digitsToLabelsFontsRatio*labelFontSize;this.resize(true);if(this.handlingHandleResize==0) {this.resizeWidgetWindow();}},updateFromLabelFontFactor:function(){this.p_calculateRatios();this.updateFromLabelFontSize();},setLabelFontSize:function(labelFontSize) {labelFontSize>=10||(labelFontSize=10);labelFontSize<=50||(labelFontSize=50);var oldLabelFontSize=this.widget.preferenceForKey("labelFontSize");if(this.widget.runningInApp&&(this.handlingHandleResize||!oldLabelFontSize)&&!this.widget.preferences.isUndoingOrRedoing()) {if(labelFontSize!=oldLabelFontSize) {this.widget.setPreferenceForKey(labelFontSize,"labelFontSize",!!oldLabelFontSize);}}},resize:function(in_preserveHeight){if(in_preserveHeight){if(this.widget.runningInApp){this.windowWidth=window.innerWidth;this.windowHeight=window.innerHeight;} else{this.windowWidth=Math.ceil(this.widget.div().offsetWidth);this.windowHeight=Math.ceil(this.widget.div().offsetHeight);} var widgetSize=this.resizeTimer(true);this.widgetWidth=widgetSize.width;this.widgetHeight=widgetSize.height;this.widgetAspectRatio=this.widgetHeight/this.widgetWidth;} else{++this.handlingHandleResize;try{var widthChanged=false,heightChanged=false;if(this.windowWidth!=window.innerWidth) {this.windowWidth=window.innerWidth;widthChanged=true;} if(this.windowHeight!=window.innerHeight) {this.windowHeight=window.innerHeight;heightChanged=true;} if(widthChanged||heightChanged) {var windowAspectRatio=this.windowHeight/this.windowWidth;if(windowAspectRatio>this.widgetAspectRatio){this.widgetWidth=this.windowWidth;this.widgetHeight=this.windowWidth*this.widgetAspectRatio;} else if(windowAspectRatio=unitsRangeMin;i--){result[i]=Math.floor(acc/divisors[i]);acc/=divisors[i];if(i>unitsRangeMin){result[i]=result[i]%divisors[i-1];}} return{y:result[0],d:result[1],h:result[2],m:result[3],s:result[4]};},heightWithLabels:function(in_height){return this.widget.labelsEnabledValue?in_height*(1+this.labelsToDigitsFontsRatio):in_height;},heightWithoutLabels:function(in_height){return this.widget.labelsEnabledValue?in_height/(1+this.labelsToDigitsFontsRatio):in_height;},getDigitsFromInteger:function(in_value,in_length){(function(){return in_value>=0&&in_length>=0;}).assert("getDigitsFromInteger - Invalid arguments: in_value="+in_value+" in_length="+in_length);var digits=[];var digitCount=0;var ratio=in_value;do{var mod=this.intMod(ratio,10);digits.push(mod.remainder);ratio=mod.ratio;digitCount++;}while((digitCount<2)||(in_length==0&&ratio!=0)||(in_length>0&&digitCount=0&&in_div>0;}).assert("intMod - Invalid arguments: in_value="+in_value+" in_div="+in_div);var ratio=Math.floor(in_value/in_div);return{ratio:ratio,remainder:Math.floor(in_value%in_div)};},p_calculateRatios:function(){this.fontFactor=this.widget.preferenceForKey('labelFontFactor')||this.widget.minFontFactor;this.digitsToLabelsFontsRatio=(5.0/this.fontFactor)-1;this.labelsToDigitsFontsRatio=1/this.digitsToLabelsFontsRatio;if(this.widget.runningInApp){this.widget.setPreferenceForKey(this.labelsToDigitsFontsRatio,'x-labelsToDigitsFontsRatio',false);}},p_setNumberOfDigitsPerUnit:function(){var ms=this.widget.currentTimeDelta();var unitsRange=this.widget.unitsRange;var unitsRangeMin=unitsRange.min();var timeUnits=this.timeUnits(ms,unitsRange);this.yDigitsNumber=unitsRange.containsLocation(0)?this.getDigitsFromInteger(timeUnits.y,0).size():0;this.dDigitsNumber=unitsRange.containsLocation(1)?this.getDigitsFromInteger(timeUnits.d,1==unitsRangeMin?0:3).size():0;this.hDigitsNumber=unitsRange.containsLocation(2)?this.getDigitsFromInteger(timeUnits.h,2==unitsRangeMin?0:2).size():0;this.mDigitsNumber=unitsRange.containsLocation(3)?this.getDigitsFromInteger(timeUnits.m,3==unitsRangeMin?0:2).size():0;this.sDigitsNumber=unitsRange.containsLocation(4)?this.getDigitsFromInteger(timeUnits.s,4==unitsRangeMin?0:2).size():0;},labelsRowMarkup:function(){var labelsRowMarkupString="";if(this.widget.labelsEnabledValue>0){var unitsRange=this.widget.unitsRange;var unitsRangeMin=unitsRange.min();var unitsRangeMax=unitsRange.max();for(i=(4-unitsRangeMin);i>(4-unitsRangeMax);i--){labelsRowMarkupString+=""+this.widget.units[i]+"";if(i>(4-unitsRangeMax)+1){labelsRowMarkupString+="";}}} return labelsRowMarkupString;}});var TextualTimerView=Class.create(TimerView,{timerType:'text',initialize:function($super,widget,in_timerDisplayHeight){$super(widget,in_timerDisplayHeight);var unitsRange=this.widget.unitsRange;var timeDigitColumns="";for(i=unitsRange.min();i";if(unitsRange.containsLocation(i+1)){timeDigitColumns+=':';}} var template=new Template("#{columns}"+"#{labels_markup}
");this.widget.getElementById('timer').update(template.evaluate({table_id:this.widget.getInstanceId("timer_block"),digit_id:this.widget.getInstanceId("timer_digit_block"),label_class:this.labelClassName,columns:timeDigitColumns,labels_id:this.widget.getInstanceId("timer_labels_block"),labels_class:this.labelClassName,labels_markup:this.labelsRowMarkup()}));this.widget.getElementById("timer_digit_block").selectFirst('td').setStyle({textAlign:'right'});this.resize(true);},render:function($super){var needsUpdateSize=false;var ms=this.widget.currentTimeDelta();var unitsRange=this.widget.unitsRange;var timerDigitBlock=this.widget.getElementById("timer_digit_block");var timeUnits=this.timeUnits(ms,unitsRange);var unitsArray=[timeUnits.y,timeUnits.d,timeUnits.h,timeUnits.m,timeUnits.s];var unitsPaddingArray=[1,3,2,2,2];var timerDigitColumns=timerDigitBlock.select("td");for(i=unitsRange.min();iunitsRange.min()) {minLength=Math.max(minLength,unitsPaddingArray[i]);} timerDigitColumns[(i-unitsRange.min())*2].update(unitsArray[i].toPaddedString(minLength,10));} this.ensureVisible();},resizeTimer:function(in_preserveHeight){var timerTotalHeight=0;var timerDisplayHeight=0;if(in_preserveHeight){if(this.timerDisplayHeight>0){timerTotalHeight=this.heightWithLabels(this.timerDisplayHeight);timerDisplayHeight=this.timerDisplayHeight;} else if(this.widgetHeight>0){timerTotalHeight=this.widgetHeight;timerDisplayHeight=this.heightWithoutLabels(this.widgetHeight);} else{timerTotalHeight=this.windowHeight;timerDisplayHeight=this.heightWithoutLabels(this.windowHeight);}} else{timerTotalHeight=this.widgetHeight;timerDisplayHeight=this.heightWithoutLabels(this.widgetHeight);} var baseLabelFontSize=timerDisplayHeight/(this.digitsToLabelsFontsRatio*this.fontFactor);this.setLabelFontSize(baseLabelFontSize);baseLabelFontSize=this.widget.preferenceForKey("labelFontSize");var timerDigitBlock=this.widget.getElementById("timer_digit_block");timerDigitBlock.setStyle({fontSize:px(this.digitsToLabelsFontsRatio*baseLabelFontSize)});var timerLabelsBlock=this.widget.getElementById("timer_labels_block");if(this.widget.labelsEnabledValue>0){timerLabelsBlock.setStyle({fontSize:px(baseLabelFontSize)});}else{timerLabelsBlock.setStyle({fontSize:"0"});} this.timerDisplayHeight=timerDisplayHeight;this.render();var sizeChanged=false;var timerTable=this.widget.getElementById("timer_block");if(timerTable&&timerTable.offsetWidth>0&&timerTable.offsetHeight>0) {if((this.totalNativeWidth===undefined)||(this.totalNativeHeight===undefined)||(this.totalNativeWidth!=timerTable.offsetWidth)||(this.totalNativeHeight!=timerTable.offsetHeight)) {this.totalNativeWidth=timerTable.offsetWidth;this.totalNativeHeight=timerTable.offsetHeight;this.widgetWidth=this.totalNativeWidth;this.widgetHeight=this.totalNativeHeight;this.widgetAspectRatio=this.widgetHeight/this.widgetWidth;sizeChanged=true;}} if(sizeChanged&&this.handlingHandleResize==0&&this.widget.view===this){this.resizeWidgetWindow();} return new IWSize(this.totalNativeWidth,this.totalNativeHeight);}});var GraphicalTimerView=Class.create(TimerView,{initialize:function($super,widget,in_timerDisplayHeight){$super(widget,in_timerDisplayHeight);this.preloadAssets();var markup="
";markup+="
";markup+=this.makeBGMarkup();markup+="
";markup+="
";markup+=this.makeFGMarkup();markup+="
";markup+="
";markup+=this.makeLabelMarkup();markup+="
";markup+="
";var timerElement=this.widget.getElementById('timer');timerElement.update(markup);this.setBGImageSources();this.setNativeGeometry();this.resize(true);},preloadAssets:function(){this.digits=[{image:IWCreateImage(this.assetPath('0',this.widget.widgetPath+'/'+this.timerType+'/0.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('1',this.widget.widgetPath+'/'+this.timerType+'/1.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('2',this.widget.widgetPath+'/'+this.timerType+'/2.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('3',this.widget.widgetPath+'/'+this.timerType+'/3.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('4',this.widget.widgetPath+'/'+this.timerType+'/4.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('5',this.widget.widgetPath+'/'+this.timerType+'/5.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('6',this.widget.widgetPath+'/'+this.timerType+'/6.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('7',this.widget.widgetPath+'/'+this.timerType+'/7.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('8',this.widget.widgetPath+'/'+this.timerType+'/8.pdf')),size:new IWSize(120,150)},{image:IWCreateImage(this.assetPath('9',this.widget.widgetPath+'/'+this.timerType+'/9.pdf')),size:new IWSize(120,150)}];this.digits.each(function(digit){digit.image.load();});this.digitSize=$(this.digits).pluck('size').inject(new IWSize(0,0),function(acc,size){return size.width>acc.width?size:acc;});this.separator={image:IWCreateImage(this.assetPath('fg-separator',this.widget.widgetPath+'/'+this.timerType+'/fg-separator.pdf')),size:new IWSize(50,150)};this.separator.image.load();this.leftCap={image:IWCreateImage(this.assetPath('bg-cap-left',this.widget.widgetPath+'/'+this.timerType+'/bg-cap-left.pdf')),size:new IWSize(5,45)};this.leftCap.image.load();this.rightCap={image:IWCreateImage(this.assetPath('bg-cap-right',this.widget.widgetPath+'/'+this.timerType+'/bg-cap-right.pdf')),size:new IWSize(5,45)};this.rightCap.image.load();this.center={image:IWCreateImage(this.assetPath('bg-center',this.widget.widgetPath+'/'+this.timerType+'/bg-center.pdf')),size:new IWSize(30,45)};this.center.image.load();},makeBGMarkup:function(){var markup="";markup+="";markup+="";markup+="";return markup;},makeFGMarkup:function(){var markup="";var digit="";var separator=imgMarkup(this.separator.image.sourceURL(),"","class='fg-separator' ","",false);markup+="
";markup+=digit.times(this.yDigitsNumber);markup+=separator.times(this.yDigitsNumber>0&&this.dDigitsNumber>0);markup+=digit.times(this.dDigitsNumber);markup+=separator.times(this.dDigitsNumber>0&&this.hDigitsNumber>0);markup+=digit.times(this.hDigitsNumber);markup+=separator.times(this.hDigitsNumber>0&&this.mDigitsNumber>0);markup+=digit.times(this.mDigitsNumber);markup+=separator.times(this.mDigitsNumber>0&&this.sDigitsNumber>0);markup+=digit.times(this.sDigitsNumber);markup+="
";return markup;},setBGImageSources:function(){setImgSrc(this.widget.getElementById('bg-cap-left'),this.leftCap.image.sourceURL(),false);setImgSrc(this.widget.getElementById('bg-cap-right'),this.rightCap.image.sourceURL(),false);setImgSrc(this.widget.getElementById('bg-center'),this.center.image.sourceURL(),false);},setNativeGeometry:function(){var maxHeight=this.leftCap.size.height;var digitHeightRatio=0.55;var digitScaleFactor=(maxHeight/this.digitSize.height)*digitHeightRatio;this.numberOfDigits=this.widget.div().select('img.fg-digit').size();this.numberOfSeparators=this.widget.div().select('img.fg-separator').size();this.digitNativeHeight=this.digitSize.height*digitScaleFactor;this.digitNativeWidth=this.digitSize.width*digitScaleFactor;this.separatorNativeWidth=this.separator.size.width*(this.textSeparator?digitScaleFactor:1);this.separatorNativeHeight=this.separator.size.height*(this.textSeparator?digitScaleFactor:1);this.leftCapNativeWidth=this.leftCap.size.width;this.rightCapNativeWidth=this.rightCap.size.width;this.totalNativeHeight=this.heightWithLabels(maxHeight);this.totalNativeWidth=this.leftCapNativeWidth+ this.digitNativeWidth*this.numberOfDigits+ this.separatorNativeWidth*this.numberOfSeparators+ this.rightCapNativeWidth;},assetPath:function($super,asset,defaultPath){return this.widget.preferenceForKey(asset)||defaultPath;},fitTimerIntoView:function(in_nativeTimerWidth,in_nativeTimerHeight,in_viewWidth,in_viewHeight,in_preserveHeight){var timerWidth=in_viewWidth;var timerHeight=in_viewHeight;var sf=1;if(in_preserveHeight){if(this.timerDisplayHeight>0){var timerDisplayHeight=this.timerDisplayHeight;sf=this.heightWithLabels(timerDisplayHeight)/in_nativeTimerHeight;timerHeight=in_nativeTimerHeight*sf;timerWidth=in_nativeTimerWidth*sf;}else{timerHeight=this.windowHeight;sf=timerHeight/in_nativeTimerHeight;timerWidth=in_nativeTimerWidth*sf;}}else{var viewAspectRatio=in_viewHeight/in_viewWidth;var timerAspectRatio=in_nativeTimerHeight/in_nativeTimerWidth;if(viewAspectRatio0){labelMarkup=""+""+ this.labelsRowMarkup()+""+"
";} return labelMarkup;},resizeTimer:function(in_preserveHeight){var thisWidth=this.widgetWidth;var thisHeight=this.widgetHeight;var timerScaledSize=this.fitTimerIntoView(this.totalNativeWidth,this.totalNativeHeight,thisWidth,thisHeight,in_preserveHeight);var sf=timerScaledSize.scale;var timerWidth=timerScaledSize.width;var timerHeight=this.heightWithoutLabels(timerScaledSize.height);var leftPos=0;var bgElementWidth=0;var leftCap=this.widget.getElementById('bg-cap-left');var rightCap=this.widget.getElementById('bg-cap-right');var center=this.widget.getElementById('bg-center');var capWidth=Math.floor(this.leftCap.size.width*sf);var leftCapElement=this.widget.getElementById('bg-cap-left');leftCapElement.setStyle({height:px(timerHeight),width:px(capWidth),left:px(leftPos)});leftPos+=capWidth;var centerElement=this.widget.getElementById('bg-center');var width=Math.floor(timerWidth-2*capWidth);centerElement.setStyle({height:px(timerHeight),width:px(width),left:px(leftPos)});leftPos+=width;var rightCapElement=this.widget.getElementById('bg-cap-right');rightCapElement.setStyle({height:px(timerHeight),width:px(capWidth),left:px(leftPos)});leftPos+=capWidth;leftPos=capWidth;var digitHeight=this.digitNativeHeight*sf;var digitWidth=this.digitNativeWidth*sf;var separatorHeight=this.textSeparator?this.separatorNativeHeight*sf:timerHeight;var separatorWidth=this.separatorNativeWidth/this.separatorNativeHeight*separatorHeight;var centerWidth=(this.digitNativeWidth*this.numberOfDigits+this.separatorNativeWidth*this.numberOfSeparators)*sf;var placeholder=this.widget.div().select('div.graphical_digits_placeholder')[0];placeholder.setStyle({left:px((timerWidth-centerWidth)/2),height:px(timerHeight)});leftPos=0;placeholder.select('img').each(function(element){var height=element.hasClassName('fg-digit')?digitHeight:separatorHeight;var width=Math.max(element.hasClassName('fg-digit')?digitWidth:separatorWidth,1);var top=(timerHeight-height)/2;element.setStyle({height:px(height),top:px(top),left:px(leftPos),width:px(width)});leftPos+=width;});var labelHeight=this.resizeLabels(timerScaledSize.height,digitWidth,separatorWidth);this.centerTimerInView(timerWidth,timerHeight,labelHeight,placeholder.offsetLeft);this.timerDisplayHeight=timerHeight;this.render();return new IWSize(timerScaledSize.width,timerScaledSize.height);},resizeLabels:function(areaHeight,digitWidth,separatorWidth){var leftMostDigitLeft=0;var labelHeight=0;var labelTable=this.widget.getElementById("timer_labels_table");var labelFontSize=areaHeight/(((labelTable?1:0)+this.digitsToLabelsFontsRatio)*this.fontFactor);this.setLabelFontSize(labelFontSize);labelHeight=labelFontSize*this.fontFactor;if(labelTable){labelFontSize=this.widget.preferenceForKey("labelFontSize");labelTable.setStyle({fontSize:px(labelFontSize)});var labelsFG=labelTable.select('td.fg-label');var curLeft=leftMostDigitLeft;var curField=this.widget.unitsRange.min();var nDigitsArray=[this.yDigitsNumber,this.dDigitsNumber,this.hDigitsNumber,this.mDigitsNumber,this.sDigitsNumber];var digitIndex=0;for(var i=this.widget.unitsRange.min();i0){this.setFGDigits(digitImages,digitCount,this.yDigitsNumber,timeUnits.y);digitCount+=this.yDigitsNumber;} if(this.yDigitsNumber>0&&this.dDigitsNumber>0){this.p_setFGSeparator(separatorImages,separatorCount);++separatorCount;} if(this.dDigitsNumber>0){this.setFGDigits(digitImages,digitCount,this.dDigitsNumber,timeUnits.d);digitCount+=this.dDigitsNumber;} if(this.dDigitsNumber>0&&this.hDigitsNumber>0){this.p_setFGSeparator(separatorImages,separatorCount);++separatorCount;} if(this.hDigitsNumber>0){this.setFGDigits(digitImages,digitCount,this.hDigitsNumber,timeUnits.h);digitCount+=this.hDigitsNumber;} if(this.hDigitsNumber>0&&this.mDigitsNumber>0){this.p_setFGSeparator(separatorImages,separatorCount);++separatorCount;} if(this.mDigitsNumber>0){this.setFGDigits(digitImages,digitCount,this.mDigitsNumber,timeUnits.m);digitCount+=this.mDigitsNumber;} if(this.mDigitsNumber>0&&this.sDigitsNumber>0){this.p_setFGSeparator(separatorImages,separatorCount);++separatorCount;} if(this.sDigitsNumber>0){this.setFGDigits(digitImages,digitCount,this.sDigitsNumber,timeUnits.s);digitCount+=this.sDigitsNumber;} this.ensureVisible();},p_setFGSeparator:function(io_placeholders,in_pos){var img=io_placeholders[in_pos];if(!img.visible()) {img.show();}}});var OdometerTimerView=Class.create(GraphicalTimerView,{timerType:'odometer',initialize:function($super,widget,in_timerDisplayHeight){this.textSeparator=false;return $super(widget,in_timerDisplayHeight);},preloadAssets:function($super){$super();this.leftCap.size=new IWSize(9,50);this.rightCap.size=new IWSize(9,50);this.center.size=new IWSize(38,50);this.separator.size=new IWSize(5,50);$A(this.digits).each(function(digit){digit.size=new IWSize(210,280);});}});var FlipTimerView=Class.create(GraphicalTimerView,{timerType:'flip',initialize:function($super,widget,in_timerDisplayHeight){this.textSeparator=false;return $super(widget,in_timerDisplayHeight);},preloadAssets:function($super){$super();this.leftCap.size=new IWSize(8,50);this.rightCap.size=new IWSize(8,50);this.center.size=new IWSize(39,50);this.separator.size=new IWSize(1,50);$A(this.digits).each(function(digit){digit.size=new IWSize(39,50);});}});var DigitalTimerView=Class.create(GraphicalTimerView,{timerType:'digital',initialize:function($super,widget,in_timerDisplayHeight){this.textSeparator=true;$super(widget,in_timerDisplayHeight);},preloadAssets:function($super){$super();this.leftCap.size=new IWSize(5,45);this.rightCap.size=new IWSize(5,45);this.center.size=new IWSize(30,45);this.separator.size=new IWSize(50,150);$A(this.digits).each(function(digit){digit.size=new IWSize(120,150);});}});