/** class Quote * */ function Quote() { if (arguments.length) { this.layer = arguments[0]; this.C_Height = arguments[1].C_Height; this.C_Width = arguments[1].C_Width; this.C_TopOffset = arguments[1].C_TopOffset; this.C_LeftOffset = arguments[1].C_LeftOffset; this.C_Spacing = arguments[1].C_Spacing; this.C_Direction = arguments[1].getDirection(); this.C_EndSpace = 0; this.C_AbovePosition = 0; this.pixelsRolled = 0; this.isRolling = false; this.isFirstRoll = null; this.reperPosition = null; this.reper = null; this.reperTop = null; this.isInit = false; } /** * Restore initial position and size */ this.init = function init() { setObjectStyleProperty(this.layer, "position", "absolute"); var list = this.layer.getElementsByTagName("img"); if (list && list.length) this.reper = list.item(list.length - 1); this.pixelsRolled = 0; this.isRolling = false; this.isInit = true; } } /** Class QuoteUp * Extends Quote * */ function QuoteUp(layer, headline) { // Call super , Quote, constructor; this.super_(layer, headline); this.topOff = 0; this.clipTop = 0; this.clipBottom = this.C_Height; this.clipRight = this.C_Width; this.top = this.C_TopOffset + this.C_Height; this.pixelsRolled = 0; this.super_init = this.init; this.init = function init() { if (!this.isInit) { this.super_init(); setObjectStyleProperty(this.layer, "width", this.C_Width); setObjectStyleProperty(this.layer, "clip", "rect(0px auto 0px auto)"); // Browsers bug this.C_Spacing = parseInt(this.C_Spacing) + 1; this.C_EndSpace = parseInt(this.C_EndSpace) + 1; this.C_AbovePosition = parseInt(this.C_TopOffset) - parseInt(this.C_Spacing) - parseInt(this.C_EndSpace); } setObjectStyleProperty(this.layer, "visibility", "hidden"); this.topOff = 0; this.clipTop = -5; this.clipBottom = this.C_Height; this.top = this.C_TopOffset + this.C_Height + 5; this.isRolling = false; } /** * Roll the line inside the headline's rectangle */ this.rollLine = function() { setObjectStyleProperty(this.layer, "visibility", "visible"); this.isRolling = true; this.top--; var rect = "rect(auto auto auto auto)" // When quote starts roll from bottom. if (this.topOff <= this.C_Height ) { this.topOff++; rect = 'rect(auto auto ' + this.topOff + 'px auto)'; } // When quote has the bottom above header bottom line. else { this.clipBottom++; this.clipTop++; rect = 'rect(' + this.clipTop + 'px auto ' + this.clipBottom + 'px auto)'; } // Reset quote position if it's bottom line is above headline top. //this.reperPosition = this.getQuoteBottomPosition(); if (this.reperPosition == this.C_TopOffset - this.C_Spacing - this.C_EndSpace) this.init(); setObjectStyleProperty(this.layer, "clip", rect); setLayerPosition(this.layer, "top", this.top); } this.isAbove = function() { this.reperPosition = parseInt(this.getQuoteBottomPosition()); if (this.reperPosition != null && this.reperPosition == this.C_TopOffset + this.C_Height - this.C_Spacing - this.C_EndSpace) return true return false; } this.getQuoteBottomPosition = function() { return findObjectTopOffset(this.reper); } this.isOnTop = function () { if (this.reperTop == null) this.reperTop = this.layer.getElementsByTagName("img").item(0); if ( findObjectTopOffset(this.reperTop) == this.C_TopOffset) return true; return false; } } QuoteUp.prototype = new Quote; QuoteUp.prototype.super_ = Quote; /** Class QuoteLeft * Extends Quote * */ function QuoteLeft(layer, headline) { // Call super , Quote, constructor; this.super_(layer, headline); this.clipLeft = 0; this.clipRight = 0; this.left = 0; this.leftPosition = null; this.leftOff = 0; this.super_init = this.init; this.init = function init() { if (!this.isInit) { this.super_init(); setObjectStyleProperty(this.layer, "height", this.C_Height); setObjectStyleProperty(this.layer, "clip", "rect(auto 0px auto 0px)"); // Browsers bug this.C_Spacing = parseInt(this.C_Spacing)+ 1; this.C_EndSpace = parseInt(this.C_EndSpace) + 1; this.C_AbovePosition = parseInt(this.C_LeftOffset) + parseInt(this.C_Width) - parseInt(this.C_Spacing) - parseInt(this.C_EndSpace); } setObjectStyleProperty(this.layer, "visibility", "hidden"); this.leftOff = 0; this.clipLeft = this.C_Width - 5; this.clipRight = 0; this.left = this.C_LeftOffset + this.C_Width + 5; this.isRolling = false; } /** * Roll the line inside the headline's rectangle */ this.rollLine = function() { setObjectStyleProperty(this.layer, "visibility", "visible"); this.isRolling = true; this.left--; var rect = "rect(auto auto auto auto)" // When quote starts roll from bottom. if (this.leftOff <= this.C_Width ) { this.leftOff++; rect = 'rect(auto ' + this.leftOff + 'px auto auto)'; } // When quote has the bottom above header bottom line. else { this.clipRight++; this.clipLeft++; rect = 'rect(auto ' + this.clipLeft + 'px auto ' + this.clipRight + 'px)'; } // Reset quote position if it's bottom line is above headline top. //this.leftPosition = this.getQuoteLeftPosition(); if (this.leftPosition == this.C_LeftOffset - parseInt(this.C_Spacing) - parseInt(this.C_EndSpace)) this.init(); setObjectStyleProperty(this.layer, "clip", rect); setLayerPosition(this.layer, "left", this.left); } this.isAbove = function() { this.leftPosition = this.getQuoteLeftPosition(); if (this.leftPosition != null && this.leftPosition == this.C_LeftOffset + this.C_Width - this.C_Spacing - this.C_EndSpace) { return true } return false; } this.getQuoteLeftPosition = function() { return findObjectLeftOffset(this.reper); } this.isOnTop = function () { if (this.reperTop == null) this.reperTop = this.layer.getElementsByTagName("img").item(0); if ( findObjectLeftOffset(this.reperTop) == this.C_LeftOffset) return true; return false; } } QuoteLeft.prototype = new Quote; QuoteLeft.prototype.super_ = Quote;