(function($){
$.fn.marquee=function(klass){
var newMarquee=[],
last=this.length
function getReset(newDir,marqueeRedux,marqueeState){
var behavior=marqueeState.behavior,width=marqueeState.width,dir=marqueeState.dir
var r=0
if(behavior=='alternate'){
r=newDir==1 ? marqueeRedux[marqueeState.widthAxis]-(width*2): width
}else if(behavior=='slide'){
if(newDir==-1){
r=dir==-1 ? marqueeRedux[marqueeState.widthAxis] : width
}else{
r=dir==-1 ? marqueeRedux[marqueeState.widthAxis]-(width*2): 0}
}else{
r=newDir==-1 ? marqueeRedux[marqueeState.widthAxis] : 0}
return r}
function animateMarquee(){
var i=newMarquee.length,
marqueeRedux=null,
$marqueeRedux=null,
marqueeState={},
newMarqueeList=[],
hitedge=false
while(i--){
marqueeRedux=newMarquee[i]
$marqueeRedux=$(marqueeRedux)
marqueeState=$marqueeRedux.data('marqueeState')
if($marqueeRedux.data('paused')!==true){
marqueeRedux[marqueeState.axis]+=(marqueeState.scrollamount*marqueeState.dir)
hitedge=marqueeState.dir==-1 ? marqueeRedux[marqueeState.axis]<=getReset(marqueeState.dir*-1,marqueeRedux,marqueeState): marqueeRedux[marqueeState.axis]>=getReset(marqueeState.dir*-1,marqueeRedux,marqueeState)
if((marqueeState.behavior=='scroll'&&marqueeState.last==marqueeRedux[marqueeState.axis])||(marqueeState.behavior=='alternate'&&hitedge&&marqueeState.last !=-1)||(marqueeState.behavior=='slide'&&hitedge&&marqueeState.last !=-1)){
if(marqueeState.behavior=='alternate'){
marqueeState.dir*=-1}
marqueeState.last=-1
$marqueeRedux.trigger('stop')
marqueeState.loops--
if(marqueeState.loops===0){
if(marqueeState.behavior !='slide'){
marqueeRedux[marqueeState.axis]=getReset(marqueeState.dir,marqueeRedux,marqueeState)
}else{
marqueeRedux[marqueeState.axis]=getReset(marqueeState.dir*-1,marqueeRedux,marqueeState)}
$marqueeRedux.trigger('end')
}else{
newMarqueeList.push(marqueeRedux)
$marqueeRedux.trigger('start')
marqueeRedux[marqueeState.axis]=getReset(marqueeState.dir,marqueeRedux,marqueeState)}
}else{
newMarqueeList.push(marqueeRedux)}
marqueeState.last=marqueeRedux[marqueeState.axis]
$marqueeRedux.data('marqueeState',marqueeState)
}else{
newMarqueeList.push(marqueeRedux)}}
newMarquee=newMarqueeList
if(newMarquee.length){
setTimeout(animateMarquee,25)}}
this.each(function(i){
var $marquee=$(this),
width=$marquee.attr('width')|| $marquee.width(),
height=$marquee.attr('height')|| $marquee.height(),
$marqueeRedux=$marquee.after('<div '+(klass ? 'class="'+klass+'" ' : '')+'style="display: block-inline; width: '+width+'px; height: '+height+'px; overflow: hidden;"><div style="float: left; white-space: nowrap;">'+$marquee.html()+'</div></div>').next(),
marqueeRedux=$marqueeRedux.get(0),
hitedge=0,
direction=($marquee.attr('direction')|| 'left').toLowerCase(),
marqueeState={
dir :/down|right/.test(direction)?-1 : 1,
axis :/left|right/.test(direction)? 'scrollLeft' : 'scrollTop',
widthAxis :/left|right/.test(direction)? 'scrollWidth' : 'scrollHeight',
last :-1,
loops : $marquee.attr('loop')||-1,
scrollamount : $marquee.attr('scrollamount')|| this.scrollAmount || 2,
behavior :($marquee.attr('behavior')|| 'scroll').toLowerCase(),
width :/left|right/.test(direction)? width : height}
if($marquee.attr('loop')==-1&&marqueeState.behavior=='slide'){
marqueeState.loops=1}
$marquee.remove()
if(/left|right/.test(direction)){
$marqueeRedux.find('> div').css('padding','0 '+width+'px')
}else{
$marqueeRedux.find('> div').css('padding',height+'px 0')}
$marqueeRedux.bind('stop',function(){
$marqueeRedux.data('paused',true)
}).bind('pause',function(){
$marqueeRedux.data('paused',true)
}).bind('start',function(){
$marqueeRedux.data('paused',false)
}).bind('unpause',function(){
$marqueeRedux.data('paused',false)
}).data('marqueeState',marqueeState)
newMarquee.push(marqueeRedux)
marqueeRedux[marqueeState.axis]=getReset(marqueeState.dir,marqueeRedux,marqueeState)
$marqueeRedux.trigger('start')
if(i+1==last){
animateMarquee()}
})
return $(newMarquee)}
}(jQuery))
function removeFilter(element){
if(element.style.removeAttribute){
element.style.removeAttribute('filter')}}
(function($){
$.fn.equalHeights=function(minHeight,maxHeight){
tallest=(minHeight)? minHeight : 0
this.each(function(){
if($(this).height()>tallest){
tallest=$(this).height()}
})
if((maxHeight)&&tallest>maxHeight)tallest=maxHeight
return this.each(function(){
$(this).height(tallest).css("overflow","hidden")
})}
})(jQuery)
jQuery.fn.ytplaylist=function(options){
var options=jQuery.extend({
holderId: 'ytvideo',
playerHeight: '430',
playerWidth: '540',
addThumbs: false,
thumbSize: 'small',
showInline: false,
autoPlay: true,
showRelated: true,
allowFullScreen: false
},options)
return this.each(function(){
var selector=$(this)
var autoPlay=""
var showRelated="&rel=0"
var fullScreen="true"
if(options.autoPlay)autoPlay="&autoplay=1"
if(options.showRelated)showRelated="&rel=1"
function play(id){
var html=''
html+='<iframe class="youtube-player" type="text/html" width="'+options.playerWidth+'" height="'+options.playerHeight+'" src="http://www.youtube.com/embed/'+id+'" frameborder="0"></iframe>'
return html}
function youtubeid(url){
var ytid=url.match("[\\?&]v=([^&#]*)")
ytid=ytid[1]
return ytid}
var firstVid=selector.children("li:first-child").addClass("currentvideo").children("a").attr("href")
$("#"+options.holderId+"").html(play(youtubeid(firstVid)))
selector.children("li").children("a").click(function(){
if(options.showInline){
$("li.currentvideo").removeClass("currentvideo")
$(this).parent("li").addClass("currentvideo").html(play(youtubeid($(this).attr("href"))))}
else{
$("#"+options.holderId+"").html(play(youtubeid($(this).attr("href"))))
$(this).parent().parent("ul").find("li.currentvideo").removeClass("currentvideo")
$(this).parent("li").addClass("currentvideo")}
return false
})
if(options.addThumbs){
selector.children().each(function(i){
var replacedText=$(this).text()
if(options.thumbSize=='small'){
var thumbUrl="http://img.youtube.com/vi/"+youtubeid($(this).children("a").attr("href"))+"/2.jpg"}
else{
var thumbUrl="http://img.youtube.com/vi/"+youtubeid($(this).children("a").attr("href"))+"/0.jpg"}
$(this).children("a").empty().html("<img src='"+thumbUrl+"' alt='"+replacedText+"' />"+replacedText).attr("title",replacedText)
})}
})}

