String.prototype.trim = function() {
    a = this.replace(/^\s+/, '');
    return a.replace(/\s+$/, '');
};
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
     }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}
function checkCookies()
{
	if(readCookie('user')&&readCookie('apiKey'))
	{
		switchPanel();
	}
	
}
function setTab()
{	
	$('#panel').animate({
			'top': -($('#panel').height()-27) 
		}, 1000);
	$('.panelTab').click(function(){
		togglePanel();
	});
	$('.submitBtn').hover(function(){
		$(this).css('backgroundPosition','0 -24');
		$(this).mousedown(function(){
			$(this).css('backgroundPosition','0 -48')
		});
		$(this).mouseup(function(){
			$(this).css('backgroundPosition','0 -24')
		});
	}, function(){
		$(this).css('backgroundPosition','0 0');
	});
	setTextBoxes();
	$('#loginSubmit').mouseup(function(){
		tryLogin();
	});
	$('#regSubmit').mouseup(function(){
		register();
	});
}
function setTextBoxes()
{
	
	$('.textBox').each(function(){
		$(this).val($(this).attr('data_text'));
	});
	$('.textBox').focus(function(){
		if($(this).val()==$(this).attr('data_text'))
			$(this).val('');
			$(this).removeClass('fieldRequired');
	});
	$('.textBox').blur(function(){
		if($(this).val()==''){
			$(this).val($(this).attr('data_text'));
			if($(this).attr('id')=='twSearchBox')
			{
				if($('#resultsContent').html().trim()=='')
					$('#searchResults').fadeOut();
			}
		}
	});
}
function togglePanel()
{
	var pan=$('#panel');
	if (pan.hasClass('panDown'))
	{
		//scroll up
		pan.animate({'top':-($('#panel').height()-27) }, 300);
		pan.removeClass('panDown');
		pan.addClass('panUp');
	}
	else
	{
		pan.animate( {'top': 0 }, 300);
		pan.addClass('panDown');
		pan.removeClass('panUp');
	}
	return $('#panel');
}
var errormsg = "";
function tryLogin()
{
	var form = $('#loginForm');
	if(validate(form))
	{
		errormsg="";
		var data = { username: $('#login_username').val(), password: $('#login_password').val() };
		$.getJSON('doLogin.php', data, function(json){
			if(json.msg=="successful")
			{
				createCookie('user',json.username);
				createCookie('apiKey',json.apiKey);
				createCookie('associated',json.associated);
				createCookie('twUser',json.twUser);
				setTimeout('switchPanel()',300);
			}
			else
			{
				$('#loginError').text(json.msg);
			}
		});
	}
	showError($(form));
}
function switchPanel()
{
	$('#panel').removeClass('panDown');
	$('#panel').addClass('panUp');
	$('#panel').animate({
		'top': -($('#panel').height()) 
	}, 300);
	$('#panel').html('');
	$('#panel').load('post.php');
}
function register()
{
	var form = $('#registrationForm');
	if(validate(form))
	{	
		errormsg="";
		var data = { email: $('#emailAddress').val(), username: $('#register_username').val(), password: $('#register_password').val() , twUsername: null, twPassword: null};
		if($('#Twitter_username').val()!='' && $('#Twitter_password').val()!='')
		{
			data.twUsername = $('#Twitter_username').val();
			data.twPassword = $('#Twitter_password').val();
		}
		$.getJSON('register.php', data, function(json){
			if(json.msg=="successful")
			{
				createCookie('user',json.username);
				createCookie('apiKey',json.apiKey);
				setTimeout('switchPanel()',300);
			}
			else
			{
				$('#registrationError').text(json.msg);
			}
		});
	}
	showError($(form));
}
function setAssociateForm()
{
	var sb = $('#associateSubmit');
	sb.click(function(){
		if(validate($('#associateTwitter')))
		{
			var data = { username : readCookie('user'), apiKey : readCookie('apiKey'), twUsername : $('#Twitter_username').val(), twPassword: $('#Twitter_password').val() };
			$.getJSON('associate.php',data,function(json){
				if(json.msg=="successful")
				{
					createCookie('associated',json.associated);
					createCookie('twUser',json.twUser);
					setAssociatedForm();
				}
				else
				{
					$('#registrationError').text(json.msg);
				}	
			});
		}
	});
}
function validate(form)
{
	var ret = true;
	form.find('.textBox').each(function(){
		if(($(this).attr('data_text') == $(this).val() || $(this).val()=="") && !$(this).hasClass('optional'))
		{
			$(this).addClass('fieldRequired');
			ret=false;
			errormsg = "Red fields are required.";
		}
		else
		{
			$(this).removeClass('fieldRequired');
		}
	});
	return ret;
}
function showError(form)
{
	form.find('.errorText').html(errormsg);
}
function login()
{
	var username = $('#login_username').val();
	var password = $('#login_password').val();
	setTimeout('switchPanel()',300);
}
function countChars()
{
	var tb=$('#postText');
	var chars = $('#postChars');
	var charsLeft = (120 - tb.val().length)+"";
	chars.text(charsLeft);
	if(charsLeft<=0)
		chars.addClass('errorText');
	else
		chars.removeClass('errorText');
}
function submitPost()
{
//http://api.bit.ly/shorten?version=2.0.1&longUrl=http://cnn.com&login=dcinzona&apiKey=R_f622d99bb0a8c03b4fe2dc1b2f99fdf5&callback=?
//check if Twitter account is associated
if(readCookie('associated')=='1')
{
	if(validate($('#postForm')))
	{
		errormsg = "";
		var utb = $('#post_url');
		var urlv = utb.val();
		if(urlv == "Optional")
			urlv = null;
		else if(!(/^http:\/\//.test(urlv)))
		{
			urlv = "http://"+urlv;
		}
		var user = readCookie('user');
		var api = readCookie('apiKey');
		var ttext = $('#postText').val();
		var data = { username : user, apiKey : api, url: urlv, text : ttext };
		console.log(data.url);
		$.getJSON('postTweet.php', data, function(json){
			console.log(json);
		});
	}
}
else
	errormsg="You must associate a Twitter account first!";
	showError($('#postForm'));
}
var twbase = {
page: 1,
lang: 'en'
}
function setKeys()
{
	$('#twSearchBox').keyup(function(evt){
		setPage(evt.keyCode);
		getSearch();
	});
}
function setPage(key)
{
	//back
	if(key==37)
	{
		if(twbase.page>1)
			twbase.page--;
	}
	//forward
	if(key==39)
		twbase.page++;
}
function getSearch()
{
	hidePreview();
	var sb = $('#twSearchBox');
	if(sb.val().length>0 && sb.val()!= 'Start Typing...')
	{
		var url = "http://search.twitter.com/search.json?"+"page="+
			twbase.page+"&rpp=10&lang="+
			twbase.lang+"&q="+sb.val()+"&callback=?";
		$('#gettingRes').remove();
		$('#resultsContent').prepend('<div id="gettingRes">Updating Results...</div>');
		$('#searchResults').fadeIn();
		$.getJSON(url, function(json){
			if(json.query == $('#twSearchBox').val())
				displayResults(json);
		});	
	}
	else
	{
		$('#resultsContent').html('');
		hidePreview();
		if($('#searchResults').css('display')!='none')
			$('#searchResults').fadeOut();
	}
}
function displayResults(json)
{
	var container = $('#resultsContent');
	var list = json.results;
	var html = "";
	if(list.length>0)
	{
		for(var x=0;x<list.length;x++)
		{
			var d = list[x];
			var reg = /http:\/\/\S+/g;
			var re = new RegExp(reg);
			var m = re.exec(d.text);
			html+='<div class="resultItem">';
			if(m)
				html += '<a href="' + m[0] + '" target=_blank class="rUrl">';
			else
				html += '<a href="http://www.twitter.com/' + d.from_user + '" target=_blank class="rUrl">';;
			html+='<img src="'+d.profile_image_url+'" class="twitImage" width="48" height="48" />';
			html+='<div class="twitRight">';
			html+='<span class="twitUsername">'+d.from_user+': </span>';
			html+='<span class="twitText">'+d.text+'</span>';
			if (m) {
				html += '<div class="rLink">' + m[0] + '</div>';
				html += '</div></a>';
			}
			else {
				html += '<div class="rLink">http://www.twitter.com/' + d.from_user + '</div>';
				html += '</div></a>';
			}
			html+='<br /></div>';
		}
		$('#gettingRes').remove();
		container.html(html+'<div class="clear"></div>');
		setResults();
	}
	else
	{
		container.html('');
		container.prepend('<div id="gettingRes">No results found</div>');
	}
}
function setResults()
{
	$('#divider').height($('#resultsContent').height()+30);
	var links = $('.rLink');
	links.each(function(){
		var trigger = $(this).parent();
		trigger.hover(function(){
			showPreview($(this));
		}, function(){
		});
	});
}
function hidePreview()
{
	$('#divider').fadeOut();
	$('#linkPreview').fadeOut();
	$('#previewContent').html('');
}
function showPreview(el)
{
//http://api.bit.ly/expand?version=2.0.1&shortUrl=http://bit.ly/31IqMl
//http://is.gd/api.php?longurl=http://www.google.com

	var url = el.find('.rLink').text();
	if(/http:\/\/bit.ly/.test(url))
	{
		$.getJSON('http://api.bit.ly/expand?version=2.0.1&shortUrl='+url+'&login=dcinzona&apiKey=R_f622d99bb0a8c03b4fe2dc1b2f99fdf5&format=json&callback=?', function(data){
			var hash = url.replace(/http:\/\/bit.ly\//,'');
			var j = $(data.results).toSource();
			var exUrl = j.match(/".+"/)[0].replace(/"/g,'');
			$('#divider').show();
			offset = '(left '+(el.offset().top-$('.resultItem:first').offset().top+30)+'px)';
			$('#divider').animate({
				backgroundPosition :  offset
			}, 100);
			$('#previewContent').load('preview.php?url='+exUrl);//html('<iframe width="100%" height="'+858+'" src="'+exUrl+'" frameborder=0>Your browser doesn\'t support iFrames</iframe>');//
			$('#linkPreview').fadeIn();
		});
	}
	else if(/http:\/\/www.twitter.com/.test(url))
	{
		$('#divider').show();
		offset = '(left '+(el.offset().top-$('.resultItem:first').offset().top+30)+'px)';
		$('#divider').animate({
			backgroundPosition :  offset
		}, 100);
		$('#previewContent').load('preview.php?url='+url);
		$('#linkPreview').fadeIn();
	}
	else
	{
		$('#divider').show();
		offset = '(left '+(el.offset().top-$('.resultItem:first').offset().top+30)+'px)';
		$('#divider').animate({
			backgroundPosition :  offset
		}, 100);
		$('#previewContent').html('<iframe width="100%" height="'+850+'" src="'+url+'" frameborder=0>Your browser doesn\'t support iFrames</iframe>');//
		$('#linkPreview').fadeIn();
	}
}


$(window).bind('resize', function() {
	setPreviewWidth();
});
function setPreviewWidth()
{
	$('#linkPreview').width($(window).width()-462);
}


$(function(){
	setTab();
	setKeys();
	checkCookies();
	setPreviewWidth();
});




























