1(function ($){ 2$.fn.ticker=function (options){ 3var opts=$.extend({}, $.fn.ticker.defaults, options); 4if($(this).length==0){ 5if(window.console&&window.console.log){ 6window.console.log('Element does not exist in DOM!'); 7}else{ 8alert('Element does not exist in DOM!'); 9} 10return false; 11} 12var newsID='#' + $(this).attr('id'); 13var tagType=$(this).get(0).tagName; 14return this.each(function (){ 15var uniqID=getUniqID(); 16var settings={ 17position: 0, 18time: 0, 19distance: 0, 20newsArr: {}, 21play: true, 22paused: false, 23contentLoaded: false, 24dom: { 25contentID: '#ticker-content-' + uniqID, 26titleID: '#ticker-title-' + uniqID, 27titleElem: '#ticker-title-' + uniqID + ' SPAN', 28tickerID: '#ticker-' + uniqID, 29wrapperID: '#ticker-wrapper-' + uniqID, 30revealID: '#ticker-swipe-' + uniqID, 31revealElem: '#ticker-swipe-' + uniqID + ' SPAN' 32}}; 33if(tagType!='UL'&&tagType!='OL'&&opts.htmlFeed===true){ 34debugError('Cannot use <' + tagType.toLowerCase() + '> type of element for this plugin - must of type <ul> or <ol>'); 35return false; 36} 37opts.direction=='rtl' ? opts.direction='right':opts.direction='left'; 38initialisePage(); 39function countSize(obj){ 40var size=0, key; 41for (key in obj){ 42if(obj.hasOwnProperty(key)) size++; 43} 44return size; 45}; 46function getUniqID(){ 47var newDate=new Date; 48return newDate.getTime(); 49} 50function debugError(obj){ 51if(opts.debugMode){ 52if(window.console&&window.console.log){ 53window.console.log(obj); 54}else{ 55alert(obj); 56}} 57} 58function initialisePage(){ 59var typo=''; 60if(opts.displayType!=='reveal'){ 61typo='non-reveal '; 62} 63processContent(); 64$(newsID).wrap('<div id="' + settings.dom.wrapperID.replace('#', '') + '"></div>'); 65$(settings.dom.wrapperID).children().remove(); 66$(settings.dom.wrapperID).append('<div id="' + settings.dom.tickerID.replace('#', '') + '" class="ticker"><div id="' + settings.dom.titleID.replace('#', '') + '" class="ticker-title"><span><!-- --></span></div><p id="' + settings.dom.contentID.replace('#', '') + '" class="' + typo + 'ticker-content"></p><div id="' + settings.dom.revealID.replace('#', '') + '" class="ticker-swipe"><span><!-- --></span></div></div>'); 67$(settings.dom.wrapperID).removeClass('no-js').addClass('ticker-wrapper has-js ' + opts.direction); 68$(settings.dom.tickerElem + ',' + settings.dom.contentID).hide(); 69if(opts.displayType!='fade'&&opts.displayType!='slide'){ 70$(settings.dom.contentID).mouseover(function (){ 71if(settings.paused==false){ 72pauseTicker(); 73}}).mouseout(function (){ 74if(settings.paused==false){ 75restartTicker(); 76}}); 77} 78if(!opts.ajaxFeed){ 79setupContentAndTriggerDisplay(); 80}} 81function processContent(){ 82if(settings.contentLoaded==false){ 83if(opts.ajaxFeed){ 84if(opts.feedType=='xml'){ 85$.ajax({ 86url: opts.feedUrl, 87cache: false, 88dataType: opts.feedType, 89async: true, 90success: function (data){ 91count=0; 92for (var a=0; a < data.childNodes.length; a++){ 93if(data.childNodes[a].nodeName=='rss'){ 94xmlContent=data.childNodes[a]; 95}} 96for (var i=0; i < xmlContent.childNodes.length; i++){ 97if(xmlContent.childNodes[i].nodeName=='channel'){ 98xmlChannel=xmlContent.childNodes[i]; 99}} 100for (var x=0; x < xmlChannel.childNodes.length; x++){ 101if(xmlChannel.childNodes[x].nodeName=='item'){ 102xmlItems=xmlChannel.childNodes[x]; 103var title, link=false; 104for (var y=0; y < xmlItems.childNodes.length; y++){ 105if(xmlItems.childNodes[y].nodeName=='title'){ 106title=xmlItems.childNodes[y].lastChild.nodeValue; 107} 108else if(xmlItems.childNodes[y].nodeName=='link'){ 109link=xmlItems.childNodes[y].lastChild.nodeValue; 110} 111if((title!==false&&title!='')&&link!==false){ 112settings.newsArr['item-' + count]={type: opts.titleText, content: '<a href="' + link + '">' + title + '</a>'}; 113count++; 114title=false; 115link=false; 116}} 117}}
118if(countSize(settings.newsArr < 1)){ 119debugError('Couldn\'t find any content from the XML feed for the ticker to use!'); 120return false; 121} 122settings.contentLoaded=true; 123setupContentAndTriggerDisplay(); 124}}); 125}else{ 126debugError('Code Me!'); 127}} 128else if(opts.htmlFeed){ 129if($(newsID + ' LI').length > 0){ 130$(newsID + ' LI').each(function (i){ 131settings.newsArr['item-' + i]={type: opts.titleText, content: $(this).html()};}); 132}else{ 133debugError('Couldn\'t find HTML any content for the ticker to use!'); 134return false; 135}}else{ 136debugError('The ticker is set to not use any types of content! Check the settings for the ticker.'); 137return false; 138}} 139} 140function setupContentAndTriggerDisplay(){ 141settings.contentLoaded=true; 142$(settings.dom.titleElem).html(settings.newsArr['item-' + settings.position].type); 143$(settings.dom.contentID).html(settings.newsArr['item-' + settings.position].content); 144if(settings.position==(countSize(settings.newsArr) - 1)){ 145settings.position=0; 146}else{ 147settings.position++; 148} 149distance=$(settings.dom.contentID).width(); 150time=distance / opts.speed; 151revealContent(); 152} 153function revealContent(){ 154$(settings.dom.contentID).css('opacity', '1'); 155if(settings.play){ 156var offset=$(settings.dom.titleID).width() + 20; 157$(settings.dom.revealID).css(opts.direction, offset + 'px'); 158if(opts.displayType=='fade'){ 159$(settings.dom.revealID).hide(0, function (){ 160$(settings.dom.contentID).css(opts.direction, offset + 'px').fadeIn(opts.fadeInSpeed, postReveal); 161}); 162} 163else if(opts.displayType=='slide'){ 164$(settings.dom.revealID).hide(0, function (){ 165$(settings.dom.contentID).css(opts.direction, offset + 'px').slideDown(opts.fadeInSpeed, postReveal); 166}); 167}else{ 168$(settings.dom.revealElem).show(0, function (){ 169$(settings.dom.contentID).css(opts.direction, offset + 'px').show(); 170animationAction=opts.direction=='right' ? {marginRight: distance + 'px'}:{marginLeft: distance + 'px'}; 171$(settings.dom.revealID).css('margin-' + opts.direction, '0px').delay(20).animate(animationAction, time, 'linear', postReveal); 172}); 173}}else{ 174return false; 175}}; 176function postReveal(){ 177if(settings.play){ 178$(settings.dom.contentID).delay(opts.pauseOnItems).fadeOut(opts.fadeOutSpeed); 179if(opts.displayType=='fade'){ 180$(settings.dom.contentID).fadeOut(opts.fadeOutSpeed, function (){ 181$(settings.dom.wrapperID) 182.find(settings.dom.revealElem + ',' + settings.dom.contentID) 183.hide() 184.end().find(settings.dom.tickerID + ',' + settings.dom.revealID) 185.show() 186.end().find(settings.dom.tickerID + ',' + settings.dom.revealID) 187.removeAttr('style'); 188setupContentAndTriggerDisplay(); 189}); 190}else if(opts.displayType=='slide'){ 191$(settings.dom.contentID).slideUp(opts.fadeOutSpeed, function (){ 192$(settings.dom.wrapperID) 193.find(settings.dom.revealElem + ',' + settings.dom.contentID) 194.hide() 195.end().find(settings.dom.tickerID + ',' + settings.dom.revealID) 196.show() 197.end().find(settings.dom.tickerID + ',' + settings.dom.revealID) 198.removeAttr('style'); 199setupContentAndTriggerDisplay(); 200}); 201}else{ 202$(settings.dom.revealID).hide(0, function (){ 203$(settings.dom.contentID).fadeOut(opts.fadeOutSpeed, function (){ 204$(settings.dom.wrapperID) 205.find(settings.dom.revealElem + ',' + settings.dom.contentID) 206.hide() 207.end().find(settings.dom.tickerID + ',' + settings.dom.revealID) 208.show() 209.end().find(settings.dom.tickerID + ',' + settings.dom.revealID) 210.removeAttr('style'); 211setupContentAndTriggerDisplay(); 212}); 213}); 214}}else{ 215$(settings.dom.revealElem).hide(); 216}} 217function pauseTicker(){ 218settings.play=false; 219$(settings.dom.tickerID + ',' + settings.dom.revealID + ',' + settings.dom.titleID + ',' + settings.dom.titleElem + ',' + settings.dom.revealElem + ',' + settings.dom.contentID).stop(true, true); 220$(settings.dom.revealID + ',' + settings.dom.revealElem).hide(); 221$(settings.dom.wrapperID) 222.find(settings.dom.titleID + ',' + settings.dom.titleElem).show() 223.end().find(settings.dom.contentID).show(); 224} 225function restartTicker(){ 226settings.play=true; 227settings.paused=false; 228postReveal(); 229} 230function manualChangeContent(direction){ 231pauseTicker(); 232switch (direction){ 233case 'prev': 234if(settings.position==0){
235settings.position=countSize(settings.newsArr) - 2; 236} 237else if(settings.position==1){ 238settings.position=countSize(settings.newsArr) - 1; 239}else{ 240settings.position=settings.position - 2; 241} 242$(settings.dom.titleElem).html(settings.newsArr['item-' + settings.position].type); 243$(settings.dom.contentID).html(settings.newsArr['item-' + settings.position].content); 244break; 245case 'next': 246$(settings.dom.titleElem).html(settings.newsArr['item-' + settings.position].type); 247$(settings.dom.contentID).html(settings.newsArr['item-' + settings.position].content); 248break; 249} 250if(settings.position==(countSize(settings.newsArr) - 1)){ 251settings.position=0; 252}else{ 253settings.position++; 254}} 255}); 256}; 257$.fn.ticker.defaults={ 258speed: 0.10, 259ajaxFeed: false, 260feedUrl: '', 261feedType: 'xml', 262displayType: 'reveal', 263htmlFeed: true, 264debugMode: true, 265titleText: 'Latest', 266direction: 'ltr', 267pauseOnItems: 3000, 268fadeInSpeed: 600, 269fadeOutSpeed: 300 270};})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.