//////////////////////////////////////////////////////////////////////////////// // // Dave Ramsey Call Of The Day Widget // // Authors: Phil Harvey // Date: June 2008 // Copyright (c) The Lampo Group, Inc. All rights reserved. // http://www.daveramsey.com // //////////////////////////////////////////////////////////////////////////////// var lampo = lampo || {}; // preserve the lampo namespace if it already exists lampo.util = { loadCSS: function(url) { var head = document.getElementsByTagName('head')[0]; var l = document.createElement('link'); l.rel = 'stylesheet'; l.type = 'text/css'; l.href = url; head.appendChild(l); }, mergeHash: function(dest, source) { for(var property in source) { dest[property] = source[property]; } return dest; }, getOptions: function(options, defaults) { return lampo.util.mergeHash(defaults || {}, options || {}); } }; lampo.browser = { IE: !!(window.attachEvent && !window.opera) }; lampo.cotd = { Widget: function(content, options) { this.options = lampo.util.getOptions(options, lampo.cotd.Widget.defaults); var defaultWidth = this.options.width; this.dontAnimate = !this.options.animate; this.orientation = this.options.orientation; this.baseUrl = content.baseUrl; // dynamically load our style sheet (think "CSS on-demand" ;) lampo.util.loadCSS(options.stylesheet); if(window.location.toString().match(/daveramsey\.com/)) { this.bottomBorderColor = '#000000'; } else { // fetch the background color of the body tag var body = document.getElementsByTagName('body')[0]; this.bottomBorderColor = body.bgColor; } // get the width parameter if it was passed in on the script tag's src attribute var scriptTags = document.getElementsByTagName('script'); for(var i = 0; i < scriptTags.length; i++) { var src = scriptTags[i].src; if(src) { var matches = src.match(/\?width=(\d{3,4})$/); if(matches !== null && matches.length == 2) { this.width = parseInt(matches[1], 10); } } } this.buildDOM(); if(this.width >= defaultWidth && this.width <= 9999) { this.element.style.width = this.width + 'px'; } else { this.width = defaultWidth; } this.element.parts.title.onclick = this.toggleHandler; this.content = content; this.open = false; this.animating = false; this.CSS = lampo.cotd.Widget.CSS; this.CSS_Class = lampo.cotd.Widget.CSS.Classes; this.setTitle(this.content.title); this.renderPlayer(); this.calcDimensions(); this.used = false; } }; lampo.cotd.Widget.prototype = { calcDimensions: function() { // calculate the widget's collapsed and expanded height var c = this.element.parts.content; var cw = this.element.parts.contentWrapper; this.renderBody(true); c.expandedHeight = c.offsetHeight; cw.expandedHeight = cw.offsetHeight; this.renderTeaser(true); c.collapsedHeight = c.offsetHeight; cw.collapsedHeight = cw.offsetHeight; }, setTitle: function(title) { var titleDiv = this.element.parts.title; titleDiv.innerHTML = ''; var h = document.createElement('h3'); h.innerHTML = title; titleDiv.appendChild(h); }, setContent: function(content) { var contentDiv = this.element.parts.content; var sub = document.createElement('div'); sub.id = this.CSS.Elements.SubContent; sub.style.width = (this.width - 111) + 'px'; if(lampo.browser.IE) { sub.style.paddingLeft = '0px'; } sub.innerHTML = content; contentDiv.innerHTML = ''; contentDiv.appendChild(sub); }, bindToggle: function() { // bind toggle link var toggle = document.getElementById(this.CSS.Elements.ToggleButton); if(toggle) toggle.onclick = this.toggleHandler; }, showBodyContent: function() { //this.setContent(c.body + ' ' + this.options.toggleCollapseTitle + ''); this.setContent(this.getBodyContent()); this.element.parts.content.className = this.CSS.Classes.Body; this.bindToggle(); if(this.options.bottomBorder) { this.element.parts.contentWrapper.style.borderBottom = '16px solid ' + this.bottomBorderColor; } }, renderTeaser: function(dontAnimate) { var c = this.content; var content = this.element.parts.content; var contentWrapper = this.element.parts.contentWrapper; if(this.options.bottomBorder) { this.element.parts.contentWrapper.style.borderBottom = ''; } //this.setContent('

' + c.teaser + ' ' + this.options.toggleExpandTitle + '

'); this.setContent(this.getTeaserContent()); this.element.parts.content.className = this.CSS.Classes.Teaser; if(!dontAnimate && !this.dontAnimate) { this.animating = true; this.hidePlayer(); var a = new Animator({ onComplete: function() { var widget = lampo.cotd.Widget.getInstance(); widget.showPlayer(); widget.animating = false; } }); a.addSubject( new CSSStyleSubject( this.element.parts.content, 'height: ' + content.expandedHeight + 'px;', 'height: ' + content.collapsedHeight + 'px;' ), new CSSStyleSubject( this.element.parts.contentWrapper, 'height: ' + contentWrapper.expandedHeight + 'px;', 'height: ' + contentWrapper.collapsedHeight + 'px;' ) ); a.play(); } this.used = true; this.afterTeaser(); //var toggle = document.getElementById(this.CSS.Elements.ToggleButton); //if(toggle) toggle.onclick = this.toggleHandler; }, renderBody: function(dontAnimate) { var c = this.content; var content = this.element.parts.content; var contentWrapper = this.element.parts.contentWrapper; if(!this.used) { var p = this.element.parts.player; if(content.expandedHeight) { content.expandedHeight = p.offsetHeight + content.expandedHeight + 0; contentWrapper.expandedHeight = p.offsetHeight + contentWrapper.expandedHeight + 0; } } this.beforeBody(); if(!dontAnimate && !this.dontAnimate) { this.animating = true; this.hidePlayer(); var a = new Animator({ onComplete: function() { var widget = lampo.cotd.Widget.getInstance(); widget.showBodyContent(); widget.showPlayer(); widget.animating = false; } }); a.addSubject( new CSSStyleSubject( this.element.parts.content, 'height: ' + content.collapsedHeight + 'px;', 'height: ' + content.expandedHeight + 'px;' ), new CSSStyleSubject( this.element.parts.contentWrapper, 'height: ' + contentWrapper.collapsedHeight + 'px;', 'height: ' + contentWrapper.expandedHeight + 'px;' ) ); a.play(); } else { this.showBodyContent(); this.bindToggle(); } }, renderPlayer: function() { var xml = '' /* workaround for the Flash Media Player's single clip playlist preloading bug: add a small invisible gif as the first clip and set it's autoplay to true */ + '' + ''; xml = xml.replace(/"/g, "\%22"); var flashvars = { XMLData: xml, skin: this.baseUrl + '/resources/css/askDavePlayer.css' }; var params = { bgcolor: '#ffffff', wmode: 'transparent', quality: 'best', allowScriptAccess: 'always' }; this.playerId = 'cotd' + Math.floor(Math.random() * 1000000); var attributes = { id: this.playerId, name: this.playerId }; swfobject.embedSWF( this.baseUrl + '/media/flash/player.swf', this.CSS.Elements.PlayerReplace, this.options.playerWidth.toString(), this.options.playerHeight.toString(), '9.0.28', this.baseUrl + '/media/flash/expressinstall.swf', flashvars, params, attributes ); }, hidePlayer: function() { var player = document.getElementById(lampo.cotd.Widget.CSS.Elements.Player); player.style.visibility = 'hidden'; }, showPlayer: function() { var player = document.getElementById(lampo.cotd.Widget.CSS.Elements.Player); player.style.visibility = ''; }, expand: function() { if(this.orientation) { this.element.className = this.CSS_Class.Expanded + '_' + this.orientation; } else { this.element.className = this.CSS_Class.Expanded; } this.renderBody(); }, collapse: function() { this.renderTeaser(); if(this.orientation) { this.element.className = this.CSS_Class.Collapsed + '_' + this.orientation; } else { this.element.className = this.CSS_Class.Collapsed; } }, toggleHandler: function() { var widget = lampo.cotd.Widget.getInstance(); widget.toggle(); }, toggle: function() { // unselect any text that may have been accidently selected during a mouse click var sel; if(document.selection && document.selection.empty) { document.selection.empty(); } else if(window.getSelection) { sel = window.getSelection(); if(sel && sel.removeAllRanges) { sel.removeAllRanges(); } } if(this.animating !== true) { if(this.open) { this.collapse(); } else { this.expand(); } } this.open = !this.open; }, buildDOM: function() { /* dynamically create our html structure: step 1: write a div tag out to the document, in place, as an anchor step 2: get a reference to the div we just wrote out step 3: using DOM functions, create all the necessary elements on the fly and add it to the first div step 4: hookup event handlers step 5: render contents (title, teaser) */ var CSS = lampo.cotd.Widget.CSS.Elements; var CSS_Class = lampo.cotd.Widget.CSS.Classes; document.write('
'); var widgetDiv = document.getElementById(CSS.Widget); var widgetWrapperDiv = document.createElement('div'); widgetWrapperDiv.id = CSS.WidgetWrapper; var widgetHeaderDiv = document.createElement('div'); widgetHeaderDiv.id = CSS.WidgetHeader; var widgetBodyDiv = document.createElement('div'); widgetBodyDiv.id = CSS.WidgetBody; var titleDiv = document.createElement('div'); titleDiv.id = CSS.Title; var contentWrapperDiv = document.createElement('div'); contentWrapperDiv.id = CSS.ContentWrapper; var contentDiv = document.createElement('div'); contentDiv.id = CSS.Content; var breakerDiv = document.createElement('div'); breakerDiv.id = CSS.Breaker; var playerDiv = document.createElement('div'); playerDiv.id = CSS.Player; var playerReplaceDiv = document.createElement('div'); playerReplaceDiv.id = CSS.PlayerReplace; playerReplaceDiv.innerHTML = 'Want to listen to this clip? ' + 'You\'ll need to get the ' + '' + 'Adobe Flash Player'; var imgDiv = document.createElement('div'); imgDiv.id = CSS.ImageDiv; // Flash Player playerDiv.appendChild(playerReplaceDiv); // Widget container + wrapper + children var wrapperWrapperDiv = document.createElement('div'); wrapperWrapperDiv.id = CSS.WidgetWrapperWrapper; wrapperWrapperDiv.appendChild(widgetWrapperDiv); widgetDiv.appendChild(wrapperWrapperDiv); widgetWrapperDiv.appendChild(widgetHeaderDiv); widgetWrapperDiv.appendChild(widgetBodyDiv); // Content Wrapper + children widgetBodyDiv.appendChild(contentWrapperDiv); contentWrapperDiv.appendChild(imgDiv); contentWrapperDiv.appendChild(titleDiv); contentWrapperDiv.appendChild(contentDiv); contentWrapperDiv.appendChild(breakerDiv); contentWrapperDiv.appendChild(playerDiv); // References this.element = widgetDiv; this.element.parts = {}; this.element.parts.title = titleDiv; this.element.parts.content = contentDiv; this.element.parts.contentWrapper = contentWrapperDiv; this.element.parts.player = playerDiv; if(this.orientation) { this.element.className = CSS_Class.Collapsed + '_' + this.orientation; } else { this.element.className = CSS_Class.Collapsed; } }, afterTeaser: function() { this.bindToggle(); }, beforeBody: function() {}, getTeaserContent: function() { return '

' + this.content.teaser + ' ' + this.options.toggleExpandTitle + '

'; }, getBodyContent: function() { return this.content.body + ' ' + this.options.toggleCollapseTitle + ''; } }; lampo.cotd.Widget.getInstance = function() { return window.cotd_widget; }; lampo.cotd.Widget.Left = 'left'; lampo.cotd.Widget.Right = 'right'; lampo.cotd.Widget.CSS = { Classes: { Teaser: 'dr_cotd_teaser', Body: 'dr_cotd_body', Expanded: 'dr_cotd_expanded', Collapsed: 'dr_cotd_collapsed' }, Elements: { Widget: 'dr_cotd', WidgetWrapper: 'dr_cotd_wrapper', WidgetWrapperWrapper: 'dr_cotd_wrapper_wrapper', // Yeah, no kidding, our wrappers have wrappers WidgetHeader: 'dr_cotd_header', WidgetBody: 'dr_cotd_body', ContentWrapper: 'dr_cotd_content_wrapper', Content: 'dr_cotd_content', SubContent: 'dr_cotd_sub_content', ImageDiv: 'dr_cotd_img', Title: 'dr_cotd_title', ToggleButton: 'dr_cotd_toggle_button', Breaker: 'dr_cotd_breaker', Player: 'dr_cotd_player', PlayerReplace: 'dr_cotd_player_replace' } }; /* Inlined swfobject2.js: */ /* SWFObject v2.2 is released under the MIT License */ var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;abQUESTION: Renée in Atlanta started sharing money with her parents in high school when they left their six-figure jobs to go into ministry. They are still asking to borrow money from Renée. She’s now feeling bitterness about it. How does she stop this pattern? Dave thinks Renée’s mom is a travel agent for guilt trips.

ANSWER: You giving your parents money or loaning your parents money has caused your relationship with them to be strained, and you have lost respect for them in the process. Your mom is a travel agent for guilt trips. And it’s for the Lord after all. That’s the implication, isn’t it?

Paul said in my Bible, \"Those that don’t work, don’t let them eat.\" That’s what he said in my Bible. He’s also the guy who made tents while he did ministry. He had a job. I remember that. Do you remember that? That’s not being mean.

I think you’ve had an unhealthy relationship with your parents for years. It’s going to be difficult for you to unravel that and it turn out well. I hope you can sit down with a pastor and mediate you no longer giving or lending them money ever again. You should be through with that starting right now. Get a book called Boundaries by Dr. Henry Cloud. Then, after you read that, you won’t feel as crazy as your mother wants you to feel.

", mp3: "http://a1611.g.akamai.net/f/1611/23575/9h/dramsey.download.akamai.com/23575/audio/mp3/askdave/1900_relationships/1900_062810_money_parents.mp3", category: "Featured Call for Widget", thumbnail: "/media/image/askdave/relationships.png", contentId: "117157", datePublished: "2010-09-01 00:00:00.0", baseUrl: 'http://www.daveramsey.com' }, { stylesheet: 'http://www.daveramsey.com/widgets/cotd.widget.css', width: 400, animate: false, orientation: '', playerWidth: 285, playerHeight: 20, toggleExpandTitle: 'More...', toggleCollapseTitle: 'Close', bottomBorder: true } );