﻿// TWICKER.NET 

var resizeTimer = null;
var bodyW,bodyH,headerH,footerH,contentH;

function initTicker()
{
		resizeScreen();

		$(window).bind('resize', function(){
				if(resizeTimer) clearTimeout (resizeTimer);
				resizeTimer = setTimeout("resizeScreen()",250);
			 });
}

function resizeScreen()
{
		resizeTimer = null;
		
		if (typeof window.innerWidth == 'number') 
		{
			bodyW = window.innerWidth;
			bodyH = window.innerHeight;
		}
		else if (typeof document.documentElement.clientWidth == 'number')
		{
			bodyW = document.documentElement.clientWidth;
			bodyH = document.documentElement.clientHeight;
		}  
		else if (typeof document.body.clientWidth == 'number')
		{
			bodyW = document.body.clientWidth;
			bodyH = document.body.clientHeight;
		}   
				
		if(bodyH < 500) bodyH = 500;
		if(bodyW < 720) bodyW = 720;
		
		var height = bodyH - 190;
		var tlH = $('#toplists').height();
		if(tlH > height)
			height = tlH;
		$('#channelcontent').css({'height' : height+'px'});
}

var ticker = null;
var lastID = 0;
var reloadInterval = 10; // seconds
var reloadTimer = null;
var activeType = '';
var activeID = null;
var totalRead = 0;
var totalRequests = 0;
var updating = false;
var updatecounter = 0;
var newRows = new Array();
var modus = 'ticker';
var loggedin = false;
var editorInit = false;
var sendFlag = false;


function reloadTweets()
{
	if(activeType == '')
		return false;
		
	$('#channelcontent').html('');
	lastID = 0;
	getTweets();
}

function setChannel(channelid,channelname)
{
	if(checkUpdate("setChannel('"+channelid+"','"+channelname+"');"))
		return false;
	
	$('#channelcontent').html('');
	$('#channelname').html('Channel: '+channelname);
	lastID = 0;
	activeType = 'channel';
	activeID = channelid;
	getTweets();
}

function setTag(tag)
{
	if(checkUpdate("setTag('"+tag+"');"))
		return false;

	$('#channelcontent').html('');
	$('#channelname').html('Hashtag: '+tag);
	lastID = 0;
	activeType = 'hashtag';
	activeID = tag;
	getTweets();
}

function setUsername(username)
{
	if(checkUpdate("setUsername('"+username+"');"))
		return false;
	$('#channelcontent').html('');
	$('#channelname').html('User: '+username);
	lastID = 0;
	activeType = 'username';
	activeID = username;
	getTweets();
}

function setLink(linkid,linkname)
{
	if(checkUpdate("setLink('"+linkid+"','"+linkname+"');"))
		return false;
	$('#channelcontent').html('');
	$('#channelname').html('Link: '+linkname);
	lastID = 0;
	activeType = 'link';
	activeID = linkid;
	getTweets();
}

function checkUpdate(func)
{
	if(!updating)
		return false;
	if(reloadTimer)
	{
		clearTimeout(reloadTimer);
		reloadTimer = null;
		$('#loader').hide();
	}	
	reloadTimer = setTimeout(func,1000);
	return true;
}

function getTweets()
{
	if(checkUpdate("getTweets();"))
		return false;
	if(reloadTimer)
	{
		clearTimeout(reloadTimer);
		reloadTimer = null;
	}
	
	if(activeType == 'hashtag')
		$('#dictw').show();
	else
		$('#dictw').hide();
	
	$('#loader').show();
	if(modus == 'wall')
		ajax_getTweets(activeType,activeID,lastID,callbackAJAXGetWall);
	else
		ajax_getTweets(activeType,activeID,lastID,callbackAJAXGetTweets);
}

function tweetsFadeOut()
{
	try {
		for(var i=0 ; i<newRows.length ; i++)
			if(newRows[i])
				$(newRows[i]).css({'background-color':'#C3D9FF'});
	} catch (e) {
	}
	setTimeout("tweetsFadeIn();",200);
}

function tweetsFadeIn()
{
	try {
		for(var i=0 ; i<newRows.length ; i++)
			if(newRows[i])
				$(newRows[i]).css({'background-color':'#ffffff'}); // css({'opacity':fader});
	} catch (e) {
	}
}

function activate(cb)
{
	if(cb.checked)
	{
		getTweets();
	}
	else if(reloadTimer)
	{
		clearTimeout(reloadTimer);
		reloadTimer = null;
		$('#loader').hide();
	}
}

function searchUser()
{
	var user = $.trim($('#searchuser').attr('value'));
	var re = new RegExp('^[_a-zA-Z0-9äöüÄÖÜß@]+$');
	if(!user.match(re) )
		alert('Der Name darf nur Buchstaben, Zahlen und den Unterstrich _ enthalten. Mit \'@username\' wird nach allen Tweets gesucht, in denen der jeweilige Twitterer erwähnt wird bzw. die er selbst gepostet hat.','Ungülter Name!');
	else
		setUsername(user);
}

function searchHashtag()
{
	var tag = $.trim($('#searchhashtag').attr('value'));
	var re = new RegExp('^(#)?[_a-zA-Z0-9äöüÄÖÜß]+(\ )?$');
	if(!tag.match(re) )
		alert('Ein Hashtag beginnt mit einer Raute # und darf nur Buchstaben, Zahlen und den Unterstrich _ enthalten.','Ungültes Hashtag!');
	else
	{
		if(tag.substr(0,1) != '#')
			tag = '#'+tag;
		setTag(tag);
	}	
}

function setReload(doReload)
{
	var cb = $('#autoreload');
	cb.attr('checked',doReload);
	activate(cb);
}

function callbackAJAXString(result)
{
	eval("var resultString = ("+result+")");
}

function callbackAJAXArray(result)
{
	eval("var resultArray = ("+result+")");
}

function callbackAJAXSendTweet(result)
{
	eval("var resultArray = ("+result+")");
	$('#loader').hide();
	if(resultArray['error'] == 0)
	{
		closeEditor();
		alert('Tweet wurde erfolgreich angeschickt!','Tweet gesendet');
	}
	else
		alert('Es ist ein Fehler aufgetreten (#'+resultArray['error']+')!\n\nTweet konnte nicht gespeichert werden!','Fehler!');
}

function callbackAJAXFollowUser(result)
{
	eval("var resultArray = ("+result+")");
	$('#loader').hide();
	if(resultArray['error'] == 0)
		alert('Sie folgen jetzt "'+resultArray['username']+'"!','Follow');
	else
		alert('Es ist ein Fehler aufgetreten (#'+resultArray['error']+')!\n\nFolgen nicht möglich!','Fehler');
}

function callbackAJAXShortURL(result)
{
	eval("var resultArray = ("+result+")");
	$('#loader').hide();
	if(resultArray['error'] == 0)
	{
		$('#shorturl').attr('value',resultArray['shorturl']);
	}
	else
		alert('Es ist ein Fehler aufgetreten (#'+resultArray['error']+')!\n\nKürzen nicht möglich!','Fehler');
}

function callbackAJAXRetweet(result)
{
	eval("var resultArray = ("+result+")");
	$('#loader').hide();
	if(resultArray['error'] == 0)
	{
		openEditor(resultArray['text']);
	}
	else
		alert('Es ist ein Fehler aufgetreten (#'+resultArray['error']+')!\n\nRetweet nicht möglich!','Fehler');
}

function callbackAJAXGetTweets(result)
{
	eval("var resultArray = ("+result+")");
	if((activeType != resultArray['type']) || (activeID != resultArray['id']))
	{
		$('#loader').hide();
		if($('#autoreload').attr('checked') ? true : false)
			reloadTimer = setTimeout("getTweets();",1000);
		return false;
	}
	lastID = resultArray['maxid'];
	newRows = new Array();
	
	resUpdate = updateList(resultArray);
	
	totalRequests++;
	totalRead += resultArray['content'].length;
	
	var now = new Date();
	$('#debugger').html(now.getHours()+':'+now.getMinutes()+':'+now.getSeconds()+' | last id: '+lastID+' | total: '+totalRead+'/'+totalRequests+' | rows:'+resultArray['content'].length+'/'+resUpdate+'/'+updatecounter+' | execution time:'+resultArray['time']);
	$('#loader').hide();
	
	if(newRows.length > 0)
		tweetsFadeOut();
	
	if($('#autoreload').attr('checked') ? true : false)
	{
		reloadInterval = resultArray['reload'];
		reloadTimer = setTimeout("getTweets();", (reloadInterval < 1 ? 10 : reloadInterval) * 1000);
	}	
}

function updateList(resultArray)
{
	updating = true;
	
	if(!ticker)
		ticker = document.getElementById('channelcontent');
	var lastDiv = null;
	var tempDiv = null;
	var now1 = new Date();
	// alert('rows:'+resultArray['content'].length);
	
	updatecounter++;
	var fading = resultArray['content'].length < 5;
	
	for(var i= (resultArray['content'].length - 1);i>=0; i--)
	{
		if(!document.getElementById(resultArray['content'][i]['id']))
		{	
			var div1 = document.createElement("div");
			var div2 = document.createElement("div");
			var div3 = document.createElement("div");
			var div4 = document.createElement("div");
			var div5 = document.createElement("div");
			var div6 = document.createElement("div");
			var div7 = document.createElement("div");
			var div8 = document.createElement("div");
			var span1 = document.createElement("span");
			var span2 = document.createElement("span");
			var span3 = document.createElement("span");
			var img = document.createElement("img");
		
			$(span1).css({'font-size': '13px'});
			$(span2).css({'font-size': '9px', 'color': 'black', 'font-weight': 'bold', 'cursor': 'pointer'});
			$(span3).css({'font-size': '9px', 'color': '#606060'});
			
			$(span1).html(resultArray['content'][i]['msg']+'<br />');
			$(span2).html('['+resultArray['content'][i]['un']+'] ');
			$(span3).html(resultArray['content'][i]['da']);
		
			div4.appendChild(span1);
			div4.appendChild(span2);
			div4.appendChild(span3);
			
			$(div1).css({'float': 'left' , 'border-bottom': '1px solid #a0a0a0'});
			$(div2).css({'float': 'left' , 'width': '50px'});
			$(div3).css({'float': 'left' , 'width': '48px', 'height': '48px', 'cursor': 'pointer'});
			$(div4).css({'float': 'left' , 'width': '430px', 'overflow':'hidden'});
		
			$(img).css({'width': '48px', 'height': '48px'});
			$(img).attr('src',resultArray['content'][i]['ui']);
			$(img).attr('un',resultArray['content'][i]['un']);
			$(img).click(function(){selectUN($(this).attr('un'));});
			// $(img).mouseover(function(){initMO('img',this);});
			
			$(span2).attr('un',resultArray['content'][i]['un']);
			$(span2).click(function(){selectUN($(this).attr('un'));});
			
			$(div8).attr('title','Retweet erstellen');
			$(div8).addClass('retweet');
			$(div8).css('margin-top','10px');
			$(div8).attr('un',resultArray['content'][i]['un']);
			$(div8).attr('mid',resultArray['content'][i]['id'].substr(1,resultArray['content'][i]['id'].length));
			$(div8).click(function(){retweet($(this).attr('un'),$(this).attr('mid'));});
						
			$(div5).attr('title',resultArray['content'][i]['un']+' antworten');
			$(div5).addClass('reply');
			$(div5).css('margin-top','10px');
			$(div5).attr('un',resultArray['content'][i]['un']);
			$(div5).attr('mid',resultArray['content'][i]['id'].substr(1,resultArray['content'][i]['id'].length));
			$(div5).click(function(){reply($(this).attr('un'),$(this).attr('mid'));});
			
			$(div6).attr('title',resultArray['content'][i]['un']+' folgen');
			$(div6).addClass('follow');
			$(div6).css('margin-top','10px');
			$(div6).attr('un',resultArray['content'][i]['un']);
			$(div6).attr('uid',resultArray['content'][i]['uid']);
			$(div6).click(function(){followUser($(this).attr('uid'),$(this).attr('un'));});
			
			$(div7).attr('title','Twitter-Profil von '+resultArray['content'][i]['un']+' anzeigen');
			$(div7).addClass('opntw');
			$(div7).css('margin-top','10px');
			$(div7).attr('un',resultArray['content'][i]['un']);
			$(div7).click(function(){openProfile($(this).attr('un'));});
			
			div4.appendChild(div8);
			div4.appendChild(div5);
			div4.appendChild(div6);
			div4.appendChild(div7);
			
			div3.appendChild(img);
			div2.appendChild(div3);
			div1.appendChild(div2);
			div1.appendChild(div4);
			
			$(div1).attr('id',resultArray['content'][i]['id']);
			
			if(ticker.hasChildNodes())
			{
				if(!lastDiv)
					tempDiv = ticker.firstChild;
				else
					tempDiv = lastDiv;
				
				if(tempDiv && (resultArray['content'][i]['id'] != $(tempDiv).attr('id')))
				{
					if(resultArray['content'][i]['id'] > $(tempDiv).attr('id'))
					{
						// neuer
						while(tempDiv.previousSibling)
						{
							if(resultArray['content'][i]['id'] > $(tempDiv.previousSibling).attr('id'))
								tempDiv = tempDiv.previousSibling;
							else
								break;
						}
						ticker.insertBefore(div1,tempDiv);
					}
					else if(resultArray['content'][i]['id'] < $(tempDiv).attr('id'))
					{
						// älter
						while(tempDiv.nextSibling)
						{
							if(resultArray['content'][i]['id'] < $(tempDiv.nextSibling).attr('id'))
								tempDiv = tempDiv.nextSibling;
							else
								break;
						}
						ticker.insertBefore(div1,tempDiv.nextSibling);		
					}
					lastDiv = div1;
				}
			}
			else
			{
				ticker.appendChild(div1); // erstes Element in der Liste
				lastDiv = div1;
			}
			if(fading)
				newRows[newRows.length] = div1;
		}
	}

	if(ticker.hasChildNodes())
	{
		// limited to 1000 entries
		for(var i = (ticker.childNodes.length - 1); i >= 1000 ; i--)
			setTimeout(function(){ $(ticker.childNodes[i+1]).remove(); }, 200); // ticker.removeChild(ticker.childNodes[i]);
	}
	var now2 = new Date();
	var time = ((now2.getMinutes() * 60 + now2.getSeconds()) * 1000 + now2.getMilliseconds()) - ((now1.getMinutes() * 60 + now1.getSeconds()) * 1000 + now1.getMilliseconds());
 	
	updating = false;	
	return time;
}

function callbackAJAXGetWall(result)
{
	eval("var resultArray = ("+result+")");
	if((activeType != resultArray['type']) || (activeID != resultArray['id']))
	{
		$('#loader').hide();
		reloadTimer = setTimeout("getTweets();",1000);
		return false;
	}
	lastID = resultArray['maxid'];
	newRows = new Array();
	
	resUpdate = updateWallList(resultArray);

	totalRequests++;
	totalRead += resultArray['content'].length;
	
	var now = new Date();
	$('#debugger').html(now.getHours()+':'+now.getMinutes()+':'+now.getSeconds()+' | getWall | last id: '+lastID+' | total: '+totalRead+'/'+totalRequests+' | rows:'+resultArray['content'].length+'/'+resUpdate+'/'+updatecounter+' | execution time:'+resultArray['time']);
	$('#loader').hide();
	
	if(newRows.length > 0)
		tweetsFadeOut();
	
	if($('#autoreload').attr('checked') ? true : false)
	{
		reloadInterval = resultArray['reload'];
		reloadTimer = setTimeout("getTweets();", 5000);
	}	
}

function updateWallList(resultArray)
{
	updating = true;
	
	if(!ticker)
		ticker = document.getElementById('channelcontent');
	var lastDiv = null;
	var tempDiv = null;
	var now1 = new Date();
	
	updatecounter++;
	var fading = resultArray['content'].length < 5;
	
	for(var i= (resultArray['content'].length - 1);i>=0; i--)
	{
		if(!document.getElementById(resultArray['content'][i]['id']))
		{	
			var div1 = document.createElement("div");
			var div3 = document.createElement("div");
			var div4 = document.createElement("div");
			var div5 = document.createElement("div");
			var div6 = document.createElement("div");
			var div7 = document.createElement("div");
			var div8 = document.createElement("div");
			var span1 = document.createElement("span");
			var span2 = document.createElement("span");
			var span3 = document.createElement("span");
			var img = document.createElement("img");
		
			$(span1).addClass('walltweettext');
			$(span2).css({'font-size': '9px', 'color': 'black', 'font-weight': 'bold', 'cursor': 'pointer'});
			$(span3).css({'font-size': '9px', 'color': '#606060'});
			
			$(span1).html(resultArray['content'][i]['msg']+'<br />');
			$(span2).html('['+resultArray['content'][i]['un']+'] ');
			$(span3).html(resultArray['content'][i]['da']);
		
			div4.appendChild(span1);
			
			$(div1).addClass('walltweet');
			$(div3).addClass('walltweetinfo');
			$(div4).addClass('walltweettext');
			
			$(img).css({'width': '24px', 'height': '24px'});
			$(img).attr('src',resultArray['content'][i]['ui']);
			$(img).attr('un',resultArray['content'][i]['un']);
			$(img).click(function(){selectUN($(this).attr('un'));});
			
			$(span2).attr('un',resultArray['content'][i]['un']);
			$(span2).click(function(){selectUN($(this).attr('un'));});
			
			$(div8).attr('title','Retweet erstellen');
			$(div8).addClass('retweet');
			$(div8).css('margin-top','10px');
			$(div8).attr('un',resultArray['content'][i]['un']);
			$(div8).attr('mid',resultArray['content'][i]['id'].substr(1,resultArray['content'][i]['id'].length));
			$(div8).click(function(){retweet($(this).attr('un'),$(this).attr('mid'));});
			div3.appendChild(div8);
			$(div8).addClass('reply');
			
			$(div5).attr('title',resultArray['content'][i]['un']+' antworten');
			$(div5).css('margin-top','10px');
			$(div5).attr('un',resultArray['content'][i]['un']);
			$(div5).attr('mid',resultArray['content'][i]['id'].substr(1,resultArray['content'][i]['id'].length));
			$(div5).click(function(){reply($(this).attr('un'),$(this).attr('mid'));});
			div3.appendChild(div5);
			$(div5).addClass('reply');
			
			$(div6).attr('title',resultArray['content'][i]['un']+' folgen');
			$(div6).addClass('follow');
			$(div6).css('margin-top','10px');
			$(div6).attr('un',resultArray['content'][i]['un']);
			$(div6).attr('uid',resultArray['content'][i]['uid']);
			$(div6).click(function(){followUser($(this).attr('uid'),$(this).attr('un'));});
			
			$(div7).attr('title','Twitter-Profil von '+resultArray['content'][i]['un']+' anzeigen');
			$(div7).addClass('opntw');
			$(div7).css('margin-top','10px');
			$(div7).attr('un',resultArray['content'][i]['un']);
			$(div7).click(function(){openProfile($(this).attr('un'));});
			
			
			div3.appendChild(div6);
			div3.appendChild(div7);
			
			div1.appendChild(div4);
			div3.appendChild(img);
			div3.appendChild(span2);
			div3.appendChild(span3);
			
			div1.appendChild(div3);
						
			$(div1).attr('id',resultArray['content'][i]['id']);
			
			if(ticker.hasChildNodes())
			{
				if(!lastDiv)
					tempDiv = ticker.firstChild;
				else
					tempDiv = lastDiv;
				
				if(tempDiv && (resultArray['content'][i]['id'] != $(tempDiv).attr('id')))
				{
					if(resultArray['content'][i]['id'] > $(tempDiv).attr('id'))
					{
						// neuer
						while(tempDiv.previousSibling)
						{
							if(resultArray['content'][i]['id'] > $(tempDiv.previousSibling).attr('id'))
								tempDiv = tempDiv.previousSibling;
							else
								break;
						}
						ticker.insertBefore(div1,tempDiv);
					}
					else if(resultArray['content'][i]['id'] < $(tempDiv).attr('id'))
					{
						// älter
						while(tempDiv.nextSibling)
						{
							if(resultArray['content'][i]['id'] < $(tempDiv.nextSibling).attr('id'))
								tempDiv = tempDiv.nextSibling;
							else
								break;
						}
						ticker.insertBefore(div1,tempDiv.nextSibling);		
					}
					lastDiv = div1;
				}
			}
			else
			{
				ticker.appendChild(div1); // erstes Element in der Liste
				lastDiv = div1;
			}
			if(fading)
				newRows[newRows.length] = div1;
		}
	}

	if(ticker.hasChildNodes())
	{
		// limited to 600 entries
		for(var i = (ticker.childNodes.length - 1); i >= 600 ; i--)
			ticker.removeChild(ticker.childNodes[i]);
	}

	var now2 = new Date();
	var time = ((now2.getMinutes() * 60 + now2.getSeconds()) * 1000 + now2.getMilliseconds()) - ((now1.getMinutes() * 60 + now1.getSeconds()) * 1000 + now1.getMilliseconds());
	updating = false;	
	return time;
}

function checkEnter(e)
{
	var keynum=0;
	if(window.event) // IE
  		keynum = e.keyCode;
	else if(e.which) // Netscape/Firefox/Opera
	  	keynum = e.which;
	return keynum == 13;
}

function callbackAJAXSilent(result)
{
	// do nothing
}

function selectHT(tag)
{ 
	setTag(tag);
} 

function selectUN(username)
{
	// setUsername(username);
	location.href = '/'+username;
}

function selectAT(username)
{
	setUsername(username);
}

function initMO(t,elem,width)
{
	var tt = '';
	var ttWidth = 180;
	
	if(!$(elem).attr('tt'))
	{
		if(t=='url')
		{
			if(elem.href)
			{
				var href = elem.href;
				
				var re = new RegExp('^http://(www\.)?twitpic.com/(.*)$');
				var check = href.match(re);
				if(check && check[2])
					tt = 'http://twitpic.com/show/thumb/'+check[2]+'.jpg';
				
				if(tt=='')
				{
					re = new RegExp('^http://img([0-9]+).yfrog.com/i/([0-9a-zA-Z]+).jpg');
					check = href.match(re);
					if(check && check[1] && check[2])
						tt = 'http://triton.imageshack.us/Himg'+check[1]+'/scaled.php?tn=1&server='+check[1]+'&filename='+check[2]+'.jpg&xsize=100&ysize=100'; 
				}
				
				if(tt=='')
				{
					re = new RegExp('^http://yfrog.com/([0-9a-z]{2})([0-9a-zA-Z]+)j/?');
					check = href.match(re);
					
					if(check && check[1] && check[2])
					{
						var c1 = check[1].charCodeAt(0);
						var c2 = check[1].charCodeAt(1);
						c1 -= (c1 > 57 ? 87 : 48);
						c2 -= (c2 > 57 ? 87 : 48);
						tt = 'http://triton.imageshack.us/Himg'+eval(36*c1+c2)+'/scaled.php?tn=1&server='+eval(36*c1+c2)+'&filename='+check[2]+'.jpg&xsize=100&ysize=100';
					}
				}
			}
		}  // if(t=='url')
		else if(t=='img')
		{
			if(elem.src)
			{
				// 24x24 http://a3.twimg.com/profile_images/400555605/pic.php_twitter_normal.jpg
				// 48x48 http://a3.twimg.com/profile_images/400555605/pic.php_twitter_normal.jpg
				// 73x73 http://a3.twimg.com/profile_images/400555605/pic.php_twitter_bigger.jpg	
				var src = elem.src;
				re = new RegExp('^http://(.*).twimg.com/profile_images/([0-9]+)/(.*)_normal.([a-zA-Z]+)$'); //   http://yfrog.com/([0-9a-z]{2})([0-9a-zA-Z]+)j/?');
				check = src.match(re);
				if(check && (check.length >= 5))
				{
					tt = 'http://'+check[1]+'.twimg.com/profile_images/'+check[2]+'/'+check[3]+'_bigger.'+check[4];
					ttWidth = 96;
				}
			}
		}		
				
		if(tt != '') 
		{
			$(elem).qtip({
				content: {
						prerender: true,
						text :  '<img src="'+tt+'" alt="Vorschau wird geladen..." />'
					},
				position: {
			            corner: {
			               tooltip: 'leftTop',
			               target: 'rightMiddle'
			            }
			         },
			    show: { when: { event: 'mouseover' } },
			    style: {
			    	background: '#C3D9FF',
			        color: '#32527A',
			        'font-size': '10px',
			        textAlign: 'center',
			        width: ttWidth,
			        border: {
			           width: 1,
			           radius: 2,
			           color: '#73AADC'
			        },
			        tip: true}
			   });
			$(elem).qtip('show');
		}
			
		if(false)
		{
			// Create image content using websnapr thumbnail service
			var content = '<img src="http://images.websnapr.com/?url=';
			content += href; // $(this).attr('href');
			content += '" alt="Loading thumbnail..." height="152" width="202" />';
			      
			// Setup the tooltip with the content
			tip = $(elem).qtip({
			         content: {
								prerender: true,
								text : content
							  },
			         position: {
					            corner: {
					               tooltip: 'bottomMiddle',
					               target: 'topMiddle'
					            }
					         },
					 
					 show: { when: { event: 'mouseover' } },

					 style: {
					            tip: true
					         }
					});
		}
		
		$(elem).attr('tt',true);					
	}
}

var replyToMsgID = null;
var replyToUser = null;

function reply(username,msgid)
{
	if(openEditor('@'+username+': '))
	{
		replyToUser = username;
		replyToMsgID = msgid;
		//$('#newtweettext').attr('value','@'+username);
	}
}

function retweet(username,msgid)
{
	if(msgid)
	{
		replyToUser = username;
		replyToMsgID = msgid;
		$('#loader').show();		
		ajax_getRetweet(replyToMsgID,replyToUser,callbackAJAXRetweet);
	}
}

function forceLogin()
{
	confirm('Sie sind nicht bei Twitter angemeldet. Jetzt anmelden?','/twitterlogin.html','Anmeldung erforderlich');
	return true;
}

/* Overriding Javascript's Confirm Dialog */
function openEditor(txt,caption) {
	if(!loggedin)
	{
		forceLogin();
		return false;
	}	
	
	if(!editorInit)
	{
		$('#sendyes').click(function(){
			var txt = $.trim($('#tweettext').attr('value'));
		    if(txt=='')
		    	alert('Geben Sie bitte einen Text ein!','Unvollständige Eingabe');
		    else
		    {
		    	sendFlag = true;
		    	confirm('Tweet abschicken?',sendTweetCallback,'Tweet senden');
		    }
		  });

		$('#sendno').click(function(){
				sendFlag = false;
				$('#tweetmodaleditor').jqmHide();
		      });  
  
		$('#tweetmodaleditor').keypress(function (e) {
					if (e.keyCode == 27) {
				   		$('#tweetmodaleditor').jqmHide();
			   		}
				});

		$('#getshorturl').click(function(){
			 shortURL();
		  	});
		  
		$('#appendshorturl').click(function(){
			  appendURL();
			  	});
		  
		$('#testurl').click(function(){
			  		var url = $('#longurl').attr('value');
			  		openURL(url);	  		
			  	});  
		$('#testshorturl').click(function(){
				var url = $('#shorturl').attr('value');
				openURL(url);
			}); 
		  
		$('#tweettext').keyup(function (e) {
			  updatetextlength('tweettext');
		  	});
		  
		  editorInit = true;
	}
	sendFlag = false;
	
	if(caption){
		$('#tweetmodaleditor')
		    .find('h1.jqmConfirmCaption')
		     .html(caption); 
	}
	if(!txt)
		var txt = '';
	$('#tweettext').attr('value',txt);
	updatetextlength('tweettext');
	$('#longurl').attr('value','');
	$('#shorturl').attr('value','');
	
	$('#tweetmodaleditor').jqmShow();
	
	$('#tweettext').focus();
	
	return true;
}

function closeEditor()
{
	replyToMsgID = null;
	replyToUser = null;
	sendFlag = false;
	$('#tweettext').attr('value','')
	$('#tweetmodaleditor').jqmHide();
}

function appendURL()
{
	var text = $.trim($('#tweettext').attr('value'));
	var shortURL = $('#shorturl').attr('value');
	
	text = $.trim(text.substr(0,140-1-shortURL.length)+' '+shortURL);
	
	$('#tweettext').attr('value',text);
	updatetextlength('tweettext');
}

function updatetextlength(id)
{
	var obj = $('#'+id);
	if(obj)
	{
		var v = obj.attr('value');
		var l = v.length;
		if(l>140)
		{
			obj.attr('value',v.substr(0,140));
			l = 140;
		}
			
		$('#charscounter').html(140-l);
	}
}

function shortURL()
{
	var longURL = $('#longurl').attr('value');
	$('#shorturl').attr('value','');
	ajax_shortURL(longURL,callbackAJAXShortURL);
}

function sendTweetCallback()
{
	var txt = $.trim($('#tweettext').attr('value'));
	if(sendFlag && (txt!=''))
	{
		$('#loader').show();
		ajax_sendTweet(txt,replyToMsgID,replyToUser,callbackAJAXSendTweet);
	}	
	sendFlag = false;	
}

function followUser(userid,username)
{
	if(loggedin)
	{	
		confirm('"'+username+'" folgen?',function(){followUserCallback(userid,username);},'Follow');
		return true;
	}
	else
	{
		forceLogin();
		return false;
	}	
}

function followUserCallback(userid,username)
{
	if(userid && username)
	{
		 $('#loader').show();
		 ajax_followUser(userid,username,callbackAJAXFollowUser);
	}
}

function setButtons()
{
	if(activeType == 'hashtag')
		$('#dictw').show();
	else
		$('#dictw').hide();
}

function openProfile(username)
{	
	return openURL('http://twitter.com/'+username); 
}

function openURL(url)
{
	if($.trim(url)=='')
		return false;
	
	var re = new RegExp('^http([s]?)://');
	var check = url.toLowerCase().match(re);
	if(!check)
		url = 'http://'+url;
	return window.open(url,'_blank');
}