String.prototype.parseTweet = function() { return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/gi, function(url) { return url.link(url);}).replace(/[@]+[A-Za-z0-9-_]+/gi, function(u) { var username = u.replace("@","")
return u.link("http://twitter.com/"+username);}).replace(/[#]+[A-Za-z0-9-_]+/gi, function(t) { var tag = t.replace("#","%23")
return t.link("http://search.twitter.com/search?q="+tag);});}
var max_id; var baseUrl; var reloaded = 0; var max_age = 3600 * 8; var AUTH_DOMAIN = 'http://upc.videodock.com'; var MASH_DOMAIN = 'http://upc.videodock.com/app'; var mashup_locator; function MashUp()
{ this.noConflict = true; this.targetEl = ''; this.tweetLimit = 20; this.channelID = ''; this.write = function( id ) { mashup_locator = this; this.targetEl = id; if( typeof jQuery == "undefined" ) { initializeJQuery();}else{ loadMashUp();}
};}
var $j; var formMsg = { title: 'Jetzt auf Twitter mitreden', msg: 'Ihre Nachricht &uuml;ber ', username: 'Benutzername', password: 'Passwort', hashtag: ''
}
function getFormHtml() { var html = '<div class="mu_html_fixer"></div>'; 	html += '<div class="mu_fb_share"><a name="fb_share"></a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div>'; html += '<div class="mu_post_form"><div class="mu_form_title">' + formMsg.title + '</div>'; html += '<div class="mu_post_msg"><input type="text" name="mu_message" value="' + formMsg.msg + formMsg.hashtag + '" /></div>'; html += '<div class="mu_post_footer"><div class="mu_post_post">'; html += '<img name="mu_post_twitter" src="' + MASH_DOMAIN + '/pics/bt_submit.png" alt="Submit" border="0" /></div>'; html += '<div class="mu_post_login"><img name="mu_post_oauth" src="' + MASH_DOMAIN + '/pics/bt_submit.png" alt="Submit" border="0" /></div></div>'; html += '</div>'; return html;}
function initForm() { $j('input[name=mu_message]').focus( function()
{ if( $j(this).val().substr(0,10) == formMsg.msg.substr(0,10) )
{ $j(this).val( '' );}
$j(this).addClass( 'inuse' ); $j( 'div[class=mu_post_footer]').slideDown();} ).blur( function()
{ var msg = $j(this).val(); if( msg == '' ) { $j( 'div[class=mu_post_footer]').slideUp();}
else if( msg.indexOf( formMsg.hashtag ) < 0 )
{ msg += ' ' + formMsg.hashtag; $j(this).val( msg );}
} ).keyup( function(e)
{ var code = (e.keyCode ? e.keyCode : e.which); if( code == 13 ) { }
}
)
$j('input[name=mu_username]').focus( function()
{ if( $j(this).val() == formMsg.username ) $j(this).val( '' ); $j(this).addClass( 'inuse' );} ); $j('input[name=mu_password]').focus( function()
{ if( $j(this).val() == formMsg.password ) $j(this).val( '' ); $j(this).addClass( 'inuse' );} ); $j('div[class=mu_post_login]').click( function()
{ var referer = window.location; var ref = $j('input[name=mu_message]'); var msg = escape($j(ref).val()); window.location = AUTH_DOMAIN + '/ext/oauth_connect.php?msg=' + msg + '&ref=' + escape(referer);} ); $j('img[name=mu_post_twitter]').click( function()
{ var ref = $j('input[name=mu_message]'); var msg = escape($j(ref).val()); var dUrl = AUTH_DOMAIN + '/ext/twitter_post.json?msg=' + msg + '&callback=?'; $j.getJSON( dUrl, function(data) { if( data.success ) { $j(ref).removeClass( 'inuse' ); $j(ref).val(''); $j( 'div[class=mu_post_footer]').slideUp()
}else{ alert( data.msg );}
} );} );}
function loadMashUp() { $j = jQuery.noConflict(); $j.ajaxSetup({ cache: false }); $j(document.createElement('link')).attr({type: 'text/css', href: MASH_DOMAIN + '/csjs/upc.css', rel: 'stylesheet', media:'screen'}).appendTo('head'); var html = ''; html += getFormHtml(); html += '<div class="mu_pointer"></div>'; html += '<div class="mu_wrapper">'; html += '<div class="mu_header"><div class="mu_title"></div><img src="' + MASH_DOMAIN + '/pics/logo_twitter.jpg" alt="Twitter" border="0" /><div class="clear"></div></div>'; html += '<div id="' + mashup_locator.targetEl+'_results"></div>'; html += '<div class="mu_disclaimer">Die hier dargestellten Tweets stammen von Benutzern von twitter.com und nicht von Cablecom. Der jeweilige Benutzer ist f&uuml;r den Inhalt seiner Tweets ausschliesslich und selbst verantwortlich. Cablecom &uuml;bt keine redaktionelle Kontrolle &uuml;ber solche Tweets aus. Weder Cablecom noch eine mit ihr verbundene Gesellschaft &uuml;bernehmen irgendeine Haftung f&uuml;r Tweets, die hier dargestellt werden.</div>'; html += '<div style="padding: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=' + encodeURIComponent(window.location) + '&amp;layout=standard&amp;show_faces=true&amp;width=500&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:500px; height:80px;" allowTransparency="true"></iframe></div>'; html += '</div>'; var targetEl = $j('#' + mashup_locator.targetEl).html( html ); initForm(); getProgram(); setInterval( getNewTweets, 10*1000 ); setInterval( getProgram, 60*1000 );}
function addJavascript(jsname,pos) { var th = document.getElementsByTagName(pos)[0]; var s = document.createElement('script'); s.setAttribute('type','text/javascript'); s.setAttribute('src',jsname); th.appendChild(s);}
function initializeJQuery() { var url = 'http://code.jquery.com/jquery-1.4.2.min.js'; addJavascript ( url, 'head' ); tryReady(0);}
function tryReady(time_elapsed) { if (typeof jQuery == "undefined" ) { if (time_elapsed <= 5000) { setTimeout("tryReady(" + (time_elapsed + 200) + ")", 200);} else { alert("Problem loading widget")
}
} else { loadMashUp();}
}
function parse_date(date_str) { return Date.parse(date_str.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i, '$1,$2$4$3'));}
var months = new Array( 'Januar', 'Februar', 'Merz', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septamber', 'Oktober', 'Novamber', 'Dezamber' ); function relative_time(time_value) { var parsed_date = parse_date(time_value); var day = new Date( parsed_date ).getDate(); var month = months[new Date( parsed_date ).getMonth()]; var h = new Date( parsed_date ).getHours(); var m = new Date( parsed_date ).getMinutes(); var s = new Date( parsed_date ).getSeconds(); if( h < 10 ) h = "0"+h; if( m < 10 ) m = "0"+m; var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); if( delta > max_age ) return false; return h + ':' + m + ' ' + day + ' ' + month;}
function getTweets( sUrl ) { $j.getJSON( sUrl , function(data) { var targetEl = $j('#' + mashup_locator.targetEl+'_results'); if( !max_id || max_id == 0 ) $j(targetEl).html(''); var tweets = (data.results || data); if( tweets.length > 0 ) { $j('.mu_new').addClass('mu_tweet'); $j('div').removeClass('mu_new');}
$j.each(tweets, function(i,item) { var from_user = item.from_user || item.user.screen_name; var time = relative_time(item.created_at); var image = item.profile_image_url; if( time != false ) { var html = '<div class="mu_new">'; html += '<div class="mu_image"><a href="http://www.twitter.com/' + from_user + '" target="_blank"><img width="48" height="48" src="' + image + '" border="0" alt="" /></a></div>'; html += '<div class="mu_msg">'; html += '<a href="http://www.twitter.com/' + from_user + '" target="_blank">' + from_user + '</a> '; html += '<span>' + item.text.parseTweet() + '</span> '; html += '<span class="tweetDate">' + time + '</span>'; html += '</div>'; html += '<div class="clear"></div>'; if( max_id || max_id > 0 ) { $j(targetEl).prepend( html );} else { $j(targetEl).append( html );}
}
}); max_id = data.max_id; limitTweets();});}
function limitTweets() { var targetEl = $j('#' + mashup_locator.targetEl+'_results')
var i = 0; if( $j(targetEl).children().length > mashup_locator.tweetLimit )
{ $j(targetEl).children().each( function() { if( i > mashup_locator.tweetLimit ) { $j(this).remove();}
i++;} );}
}
var oAuthChecked = false; function showForm() { $j( 'div[class=mu_post_form]' ).show()
var dUrl = AUTH_DOMAIN + '/ext/twitter_oauth.json?callback=?'; if( !oAuthChecked ) { oAuthChecked = true; $j.getJSON( dUrl, function(data) { var success = data.success; if( success ) { $j( 'div[class=mu_post_post]' ).show(); $j( 'div[class=mu_post_login]' ).hide();}else{ $j( 'div[class=mu_post_post]' ).hide(); $j( 'div[class=mu_post_login]' ).show();}
} );}
}
function getProgram() { var dUrl = MASH_DOMAIN + '/import/getNow.json?cID=' + mashup_locator.channelID + '&callback=?'; $j.getJSON( dUrl , function(data) { var url = data.result.Url; var program = unescape(data.result.Program); var prefered = unescape(data.result.Prefered); formMsg.hashtag = prefered; if( prefered == '' ) { $j( 'div[class=mu_post_form]' ).hide();}else{ showForm();}
var length = 140 - formMsg.hashtag.length - 1; if( !baseUrl || url != baseUrl ) { if( baseUrl ) max_id = null; $j('.mu_title').text( program + '' ); baseUrl = url; var msg = $j('div[class=mu_html_fixer]').html(formMsg.msg).text() + formMsg.hashtag; $j('input[name=mu_message]').val( msg ); getTweets( baseUrl );}
});}
function getNewTweets() { reloaded++; $j('#reloaded').text('( update: '+reloaded.toString()+')'); if( baseUrl ) { var url = baseUrl; if( max_id ) { url += '&since_id=' + max_id;}
getTweets( url );}
}
