var isAndroid = false;
var isIos = false;
var isMobile = false;
var facebookAppId = null;
var accessToken = null;
var userID = null;
var loggedInUsername = null;
var twitterLoggedInUsername = null;
var uploaderSliding = 0;
var haveTopFriends = false;
var twitterAccessToken = null;
var twitterUserId = null;
var twitterUsername = null;
var currentTwitterUser = null;
var currentFacebookUser = null;
var dbUsername = null;

function applyCssObject(css)
{
    if(isMobile)
    {
	return;
    }

    if(!css)
    {
	$('body').addClass('defaultBodyStyle');
	return;
    }

    $('body').removeClass('defaultBodyStyle');

    $('body').css('background-image', '');
    $('body').css('background-position', '');
    $('body').css('background-size', '');
    $('body').css('background-repeat', '');
    $('body').css('background-attachment', '');

    for(var element in css)
    {
        var cssItem = css[element];
        for(var name in cssItem)
        {
            var value = cssItem[name];
            if($(element).css(name) != value)
                $(element).css(name, value);
        }
    }
}

function uploadFileDone()
{
    var ret = jQuery.trim($('#hiddenFileUploadFrame').contents().find('body').html());
    if(!ret) 
	return;

    var data = eval('('+ret+')');
    var status = data['status'];
    var message = data['message'];
    var path = data['path'];

    if(!status)
    {
	$('#thumb').attr('gotImage', '0');
	$('#thumb').attr('src', '/images/H.png');
	$('#fileUploaderError').html(message);
    }
    else
    {
	$('#thumb').attr('gotImage', '1');
	$('#thumb').attr('src', path);
	$('#fileUploaderError').html('');
    }

    $('.cssLoadingAnimation').slideUp();
}

function uploadFileSelected()
{
    $('.cssLoadingAnimation').slideDown();
    var fileName = $('#file-uploader').val();
    $('#file_upload_form').submit();
}

function showFileUploader()
{
    if(uploaderSliding)
	return;

    uploaderSliding = 1;

    $("#fileUploaderContainer").slideDown(function()
    {
        $("#addPictureLink").bind('mouseup', hideFileUploader);
        $("#addPictureLink").html('hide pic uploader');
	uploaderSliding = 0;
    });
}

function hideFileUploader()
{
    if(uploaderSliding)
	return;

    uploaderSliding = 1;

    $("#fileUploaderContainer").slideUp(function()
    {
        $("#addPictureLink").bind('mouseup', showFileUploader);
        $("#addPictureLink").html('add a picture');
	uploaderSliding = 0;
    });
}

function deleteHowWasArchivedEmotion(element)
{
    var _id = $(element).parent().parent().attr('id');
    $(element).parent().parent().slideUp();
    howis.emotionDeleteViaLogin((loggedInUsername ? 'facebook' : 'twitter'), userID, (loggedInUsername ? accessToken : twitterAccessToken), _id, 
	function() 
	{
	}
    );
}

function checkTwitterLoginStatus(trueFunction, falseFunction, passedFunction)
{
}

function processTwitterLoginSuccess()
{
}

function processTwitterLogoutSuccess()
{
}

function checkFacebookLoginStatus(trueFunction, falseFunction, passedFunction, checkPermissions)
{
    var permissions = null;
    if(userID && accessToken && checkPermissions && checkPermissions.length > 0)
    {
        $.ajax(
        {
            url: '/ajax/getFacebookPermissions',
	    type: 'POST',
            async: false,
	    data: {'userId':userID, 'accessToken':accessToken},
            success: function(data)
            {
		permissions = data;
            },   
            dataType: 'json'
        });
    }

    if(checkPermissions && checkPermissions.length > 0 && permissions)
    {
        var permissionData = permissions.data;
        var havePermissions = true;

        if(permissionData && permissionData.length == 1)
        {
    	    var checkPermissionsCount = checkPermissions.length;
	    for(var i = 0; i < checkPermissionsCount; i++)
	    {
	        if(!permissionData[0][checkPermissions[i]])
	        {
	    	    havePermissions = false;
		    break;
		}
	    }
	}

	if(!havePermissions)
	{
	    facebookLogin(passedFunction, checkPermissions, cancelPermission);
	    return;
	}
    }

    FB.getLoginStatus(function(response)
    {
        if(response.authResponse)
        {
	    currentFacebookUser = response;
	    trueFunction(response.authResponse, passedFunction);
        }
        else
        {
	    falseFunction(passedFunction, checkPermissions);
        }
    });
}

function cancelPermission()
{
}

function facebookLogin(successCallback, morePermissions, failureCallback)
{
    morePermissions = ['read_stream','publish_stream'];

    FB.login(function(response) 
    {
        if(response.authResponse)
	{
	    currentFacebookUser = response;
	    processFacebookLoginSuccess(response.authResponse, successCallback);
   	} 
	else 
	{
	    if(failureCallback)
	    {
		failureCallback();
	    }
	    else
	    {
	        FB.getLoginStatus(function(response)
	        {
	            if(response.authResponse)
	            {
			currentFacebookUser = response;
		        cancelPermission();
	            }
	            else
	            {
	                processFacebookLogoutSuccess();
	            }
	        });
	    }
   	}
    }, {scope: 'email'+(morePermissions ? ','+morePermissions : '')});
}

function processDone(trueFunction, falseFunction, passedFunction)
{
    var basic = jQuery.trim($('#basic').val());
    var basicOther = jQuery.trim($('#basicOther').val()).toLowerCase();
    var reason = jQuery.trim($('#reason').val());
    var postToFaceBook = $('#postToFaceBook:checked').length;
    var postToTwitter = $('#postToTwitter:checked').length;
    var checkPermissions = [];

    if(!basic)
	return;

    if(basic == 'other' && !basicOther)
    {
	alert('Dude, if you choose "other" you gotta enter something.');
	return;
    }

    if(postToFaceBook)
    {
	checkPermissions.push('publish_stream');
	checkPermissions.push('read_stream');
    }

    if(postToTwitter && !twitterLoggedInUsername)
    {
  	var tweetText = (basicOther ? basicOther : basic)+(reason ? " because "+reason : '');
	var tweetExtra = "I'm  AAAAAAAAAAAAAAAAAAAA via @howdotis";
	var tweetString = "I'm "+tweetText;

	if((tweetText.length + tweetExtra.length) > 140)
	{
	    var tweetTextLength = tweetText.length - (((tweetText.length + tweetExtra.length) - 140) + 3);
	    tweetText = tweetText.substr(0, tweetTextLength);
	    tweetString	= "I'm "+tweetText+"...";
	}

        var width  = 575,
	height = 400,
	left   = ($(window).width()  - width)  / 2,
	top    = ($(window).height() - height) / 2,
	url    = "http://twitter.com/share?text="+encodeURI(tweetString)+"&url=http://how.is&via=howdotis",
	opts   = 'status=1' +
	    ',width='  + width  +
	    ',height=' + height +
	    ',top='    + top    +
	    ',left='   + left;
	window.open(url, 'twitter', opts);
    }

    if(loggedInUsername)
    {
        $('.cssLoadingAnimation').slideDown();
        checkFacebookLoginStatus(processFacebookLoginSuccess, facebookLogin, createEmotion, checkPermissions);
    }
    else if(twitterLoggedInUsername)
    {
        $('.cssLoadingAnimation').slideDown();
   	createEmotion();
    }
    else
    {
    }
}

function createEmotion()
{
    var basic = jQuery.trim($('#basic').val()).toLowerCase();
    var basicOther = jQuery.trim($('#basicOther').val()).toLowerCase();
    var reason = $('#reason').val();
    var postToFaceBook = $('#postToFaceBook:checked').length;
    var postToTwitter = $('#postToTwitter:checked').length;
    var gotImage = $('#thumb').attr('gotimage');
    var imagePath = '';

    if(gotImage == "1")
    {
        imagePath = $('#thumb').attr('src');
    }

    if(basic == 'other')
	basic = basicOther;

    if(loggedInUsername)
    {
        howis.emotionCreateViaFacebookLogin(userID, accessToken, basic, reason, imagePath, postToFaceBook, postToTwitter, addArchivedResult);
    }
    else if(twitterLoggedInUsername)
    {
        howis.emotionCreateViaTwitterLogin(userID, twitterAccessToken, basic, reason, imagePath, postToFaceBook, postToTwitter, addArchivedResult);
    }
}

function applyUserMetaToTopFriendsList(data)
{
    if(!data)
	return;

    for(var i = 0; i < data.length; i++)
    {
        var friend = data[i];
        var friendName = friend.name;
        var friendId = 0;
        var postCount = friend.postCount;
        var lastPost = friend.lastPost;
        var lastPostBasic = '';

	if(loggedInUsername)
	{
	    friendId = friend.facebookUserId;
	}
	else
	{
	    friendId = friend.twitterUserId;
	}

        if(lastPost[0]) lastPostBasic = lastPost[0].basic;

        if(postCount > 0)
            $('#topFriendsContainer').append('<div style="float:left;" id="fbFriend_'+friendId+'" class="friendListItem"><span class="fakeLink" onclick="window.location.href=\'/fb/'+friendId+'\';">'+friendName+'</span> is '+lastPostBasic+'&nbsp;|&nbsp;</div>');
    }

    $('#topFriendsContainer').append('<div style="clear:both;"></div>');
}

function processFacebookLoginSuccess(authResponse, callBack)
{
    twttr.anywhere(function (T)
    {
        if(T.isConnected())
        {
            currentTwitterUser = T.currentUser;
	}
    });

    if(authResponse)
    {
        accessToken = authResponse.accessToken;
        userID = authResponse.userID;
	loggedInUsername = userID;
        signedRequest = authResponse.signedRequest;
	$('#postToFaceBook').attr('CHECKED', '1');
        howis.accountCreateViaFacebookLogin(userID, accessToken, callBack, signedRequest);
	howis.getSettingsViaFacebookLogin(accessToken);
    }

    FB.api('/me', function(response) 
    {
	$('#doneButtonDiv').css('display', 'block');
	$('#connectNoticeDiv').css('display', 'none');
	$('#postToFaceBookDiv').css('display', 'block');

        $('#statusContainer').html(''+response.name+' logged in via facebook.<br><span class="fakeLink" onclick="window.location.href = \'/fb/friends\';">friends</span> | <span class="fakeLink" onclick="window.location.href = \'/settings\';">settings</span> | <span class="fakeLink" onclick="facebookLogout();">logout</span>');
	$('#statusContainer').css('display', 'block');

	$('#facebookLogin').css('display', 'none');
	$('#twitterLogin').css('display', 'none');

	processArchive();

	if(!haveTopFriends)
	{
	    haveTopFriends = true;
	    howis.getActiveFriendsViaFacebookLogin(userID, accessToken, applyUserMetaToTopFriendsList);
	}
    });
}

function initFromAccountData(data)
{
    dbUsername = data[0].username;
    twitterAccessToken = data[0].twitterAccessToken;
    howis.getUserSettings(data[0].username);
    processArchive();
}

function processFacebookLogoutSuccess()
{
    twttr.anywhere(function (T) 
    { 
	if(T.isConnected()) 
	{
	    $('#doneButtonDiv').css('display', 'block');
            $('#connectNoticeDiv').css('display', 'none');
	    $('#postToTwitterDiv').css('display', 'block');

            currentTwitterUser = T.currentUser;
	    userID = currentTwitterUser.id;
	    twitterLoggedInUsername = userID;
	    $('#postToTwitter').attr('CHECKED', '1');

	    howis.accountSearch(null, null, userID, initFromAccountData);

            $('#statusContainer').css('display', 'block');
     	    $('#facebookLogin').css('display', 'none');
            $('#twitterLogin').css('display', 'none');
            $('#statusContainer').html(''+currentTwitterUser.name+' logged in via twitter.<br><span class="fakeLink" onclick="window.location.href = \'/fb/friends\';">friends</span> | <span class="fakeLink" onclick="window.location.href = \'/settings\';">settings</span> | <span class="fakeLink" onclick="facebookLogout();">logout</span>');

            if(!haveTopFriends)
            {
                haveTopFriends = true;
                howis.getActiveFriendsViaTwitterLogin(userID, twitterAccessToken, applyUserMetaToTopFriendsList);
            }
	}
	else
	{
	    $('#doneButtonDiv').css('display', 'none');
      	    $('#connectNoticeDiv').css('display', 'block');

	    $('.cssLoadingAnimation').slideUp();
	    $('#facebookLogin').html('<span class="fakeLink" onclick="facebookLogin();"><img src="/images/fb-connect-large.1.png" height="22"></span>');
	    $('#howWasContainer').fadeOut();
	    $('#howWasArchiveContainer').html('');
	    $('#howWasArchiveContainer').attr('populated', '0');

	    if(isMobile)
	    {
	        return;
	    }

	    $('body').addClass('defaultBodyStyle');
	}

	T("#twitterLogin").connectButton(
    	{
    	    authComplete: function(user) 
	    {
	        currentTwitterUser = T.currentUser;

		if(!loggedInUsername)
	 	{
		    $('#doneButtonDiv').css('display', 'block');
	            $('#connectNoticeDiv').css('display', 'none');
		    $('#postToTwitterDiv').css('display', 'block');

		    userID = currentTwitterUser.id;
	  	    twitterLoggedInUsername = userID;
	            $('#postToTwitter').attr('CHECKED', '1');

 	            howis.accountSearch(null, null, userID, initFromAccountData);

        	    $('#statusContainer').css('display', 'block');
     	    	    $('#facebookLogin').css('display', 'none');
            	    $('#twitterLogin').css('display', 'none');
	            $('#statusContainer').html(''+currentTwitterUser.name+' logged in via twitter.<br><span class="fakeLink" onclick="window.location.href = \'/fb/friends\';">friends</span> | <span class="fakeLink" onclick="window.location.href = \'/settings\';">settings</span> | <span class="fakeLink" onclick="facebookLogout();">logout</span>');

	            if(!haveTopFriends)
	            {
	                haveTopFriends = true;
	                howis.getActiveFriendsViaTwitterLogin(userID, twitterAccessToken, applyUserMetaToTopFriendsList);
	            }
		}
      	    },
      	    signOut: function() 
	    {
      	    }
	});
    });
}

function processArchive()
{
    if($('#howWasArchiveContainer').attr('populated') == "1") return;
    $('.cssLoadingAnimation').slideDown();

    if(loggedInUsername)
        howis.emotionSearchViaFacebookLogin(userID, accessToken, loggedInUsername, '', '', initializeArchiveResults);
    else if(twitterLoggedInUsername)
        howis.emotionSearchViaTwitterLogin(userID, twitterAccessToken, twitterLoggedInUsername, '', '', dbUsername, initializeArchiveResults);
}

function addArchivedResult(emotion)
{
    var _id = emotion._id;
    var basic = emotion.basic;
    var reason = emotion.reason;
    var createDate = emotion.createDate;
    var imagePath = emotion.imagePath;
    var fbPostId = emotion.fbPostId;
    if(!imagePath) imagePath = '';

    $('#basic').val('');
    $('#basicOther').val('');
    $('#reason').val('');
    $('#basicOther').slideUp();
    $('#fileUploaderContainer').slideUp();
    $("#addPictureLink").bind('mouseup', showFileUploader);
    $("#addPictureLink").html('add a picture');
    $('#thumb').attr('gotImage', '0');
    $('#thumb').attr('src', '/images/H.png');
    $('#file-uploader').val('');

    var html = '<div class="archivedEmotion" id="'+_id+'" fbPostId="'+fbPostId+'"><span class="archivedEmotionBasic">'+basic+'</span>'+((reason) ? ' because <span class="archivedEmotionReason">'+reason+'</span>' : '')+(imagePath ? '<br><img class="postImage" src="'+imagePath+'" alt="">' : '')+'<br><span class="archivedEmotionCreateDate">On '+createDate+'</span>';
    html += '<div class="archivedEmotionDelete">';
    html += '<span class="fakeLink" onclick="deleteHowWasArchivedEmotion(this);">delete</span>';
    html += '</div>';
    html += '<div class="archivedEmotionCommentContainer" id="archivedEmotionComments_'+_id+'"><span style="text-decoration:underline;">Comments</span><br></div>';
    html += '<div class="archivedEmotionCommentFieldContainer" id="archivedEmotionCommentFieldContainer_'+_id+'" class="commentFieldContainer"><br><input processingKeypress="0" focused="0" class="archivedEmotionCommentField" type="text" value="comment..."></div>';
    html += '</div>';

    $('#howWasArchiveContainer').prepend(html);
    bindCommentFieldEvents();
    $('.cssLoadingAnimation').slideUp();
}

function getDistributedHost()
{
    var fqd = window.location.hostname;
    var host = '';
    var c = 0;

    if(fqd == 'testbed.how.is')
    {
	host = 'testbed';
    }
    else
    {
    	c = Math.floor(Math.random() * (10 - 1 + 1) + 1);
    	host = 'c'+c;
    }

    return(host);
}

function initializeArchiveResults(data)
{
    var allowed = data.allowed;
    var fbFriendName = data.fbFriendName;
    var friendId = data.friendId;
    var data = data.data;

    if(!allowed)
    {
	$('#howWasLabel').html('Sorry, you can\'t view that user\'s information.');
    }
    else if(fbFriendName)
    {
	$('#howWasLabel').html(fbFriendName+' was...');
    }

    if(!data) data = [];
    $('#howWasArchiveContainer').html('');

    for(var i = 0; i < data.length; i++)
    {
	var emotion = data[i];
	var _id = emotion._id;
	var fbPostId = emotion.fbPostId;
	var createDate = emotion.createDate.substr(0, 19).replace(/T/, ' ');
	var basic = unescape(emotion.basic);
	var reason = emotion.reason;
	var imagePath = emotion.imagePath;
	var username = emotion.username;
        var isOwner = (friendId == userID);

	var html = '<div class="archivedEmotion" id="'+_id+'" fbPostId="'+fbPostId+'"><span class="archivedEmotionBasic">'+basic+'</span>'+((reason) ? ' because <span class="archivedEmotionReason">'+reason+'</span>' : '')+(imagePath ? '<br><img class="postImage" src="'+imagePath+'" alt="">' : '')+'<br><span class="archivedEmotionCreateDate">On '+createDate+'</span>';
	html += '<div class="archivedEmotionDelete">';
	html += isOwner ? '<span class="fakeLink" onclick="deleteHowWasArchivedEmotion(this);">delete</span>' : '';
	html += '</div>';
	if(!isMobile) html += '<img id="archivedEmotionCommentsLoadingImage_'+_id+'" src="/images/ajax-loader.gif">';
	html += '<div class="archivedEmotionCommentContainer" id="archivedEmotionComments_'+_id+'"><span style="text-decoration:underline;">Comments</span><br></div>';
	html += '<div class="archivedEmotionCommentFieldContainer" id="archivedEmotionCommentFieldContainer_'+_id+'" class="commentFieldContainer"><br><input processingKeypress="0" focused="0" class="archivedEmotionCommentField" type="text" value="comment..."></div>';
	html += '</div>';
	$('#howWasArchiveContainer').append(html);

	var commentRetrieveFunction = null;
	var passedAccessToken = null;

	if(twitterLoggedInUsername)
	{
	    commentRetrieveFunction = howis.emotionCommentSearchViaTwitterLogin;
	    passedAccessToken = twitterAccessToken;
	}
	else
	{
	    commentRetrieveFunction = howis.emotionCommentSearchViaFacebookLogin;
	    passedAccessToken = accessToken;
	}

    	commentRetrieveFunction(userID, passedAccessToken, friendId, _id, fbPostId,
        function(data)
        {
	    if(!data)
	    {
		if(!isMobile) $('#archivedEmotionCommentsLoadingImage_'+_id).remove();
		return;
	    }

	    var emotionCommentSearchViaFacebookLoginFbPostId = data.fbPostId;
	    var emotionCommentSearchViaFacebookLogin_id = data._id;
	    var commentData = data.data;
	    var localCommentHtml = '';
	    var commentObject = {};
	    var commentObjectLength = 0;

	    if(commentData && commentData.length > 0)
	    {
	    	for(var j = 0; j < commentData.length; j++)
	    	{
		    var commentDataItem = commentData[j];
		    var localCommentId = commentDataItem._id;
		    var localComment = commentDataItem.comment;
		    var localName = commentDataItem.name;
		    var localFbCommentId = commentDataItem.fbCommentId;
		    var localCreateDate = commentDataItem.createDate.substr(0, 19).replace(/T/, ' ');

		    commentObjectLength++;
		    commentObject['_'+localCreateDate] = {fbId:localFbCommentId, name:localName, message:localComment, date:localCreateDate};
	            localCommentHtml += '<div style="padding: 0px 0px 5px 0px;"><span class="archivedEmotionCommentName">'+localName+'</span><br>'+localComment+'<br><span class="archivedEmotionCreateDate">'+localCreateDate+'</span></div>';
	    	}			
	    }

 	    if(currentFacebookUser && emotionCommentSearchViaFacebookLoginFbPostId && emotionCommentSearchViaFacebookLoginFbPostId != 'undefined')
	    {
		var c = getDistributedHost();
                $.ajax(
                {
                    url: 'http://'+c+'.how.is/ajax/getFacebookComments/'+emotionCommentSearchViaFacebookLoginFbPostId+'/'+accessToken+'/'+emotionCommentSearchViaFacebookLogin_id,
                    dataType: "jsonp",
                    timeout: 30000,
                    data:
                    {
                    },
                    success: function( data )
                    {
		    	var fbCommentData = data.data;
		    	var getFacebookCommentsFbPostId = data.fbPostId;
		    	var _mongoId = data._id;

		    	if(fbCommentData.length > 0)
		    	{
			    if(isMobile)
		                $('#archivedEmotionComments_'+_mongoId).css('display','block');
			    else
		                $('#archivedEmotionComments_'+_mongoId).fadeIn();
		    	}

		    	var commentHtml = '';
		    	for(var j = 0; j < fbCommentData.length; j++)
	 	    	{
		            var fbComment = fbCommentData[j];
		            var fbCommentFrom = fbComment.from;
		            var fbCommentFromId = fbCommentFrom.id;

		            var fbCommentMessage = fbComment.message;
		            var fbCommentFromName = fbCommentFrom.name;
		            var fbCommentId = fbComment.id;
		            var fbCommentCreatedTime = fbComment.created_time.substr(0, 19).replace(/T/, ' ');

			    commentObjectLength++;
		            commentObject['_'+fbCommentCreatedTime] = {fbId:fbCommentId, name:fbCommentFromName, message:fbCommentMessage, date:fbCommentCreatedTime};
		            commentHtml += '<div style="padding: 0px 0px 5px 0px;"><span class="archivedEmotionCommentName">'+fbCommentFromName+'</span><br>'+fbCommentMessage+'<br><span class="archivedEmotionCreateDate">'+fbCommentCreatedTime+'</span></div>';
		    	}

		    	if(commentHtml.length == 0 && localCommentHtml.length > 0)
			{
		            $('#archivedEmotionComments_'+_mongoId).append(localCommentHtml);
			}
		    	else if(commentObjectLength > 0)
			{
			    commentHtml = '';
			    var commentObjectSortedKeys = keys(commentObject).sort();
			    var remoteCommentTracker = {};

			    for(var j = 0; j < commentObjectSortedKeys.length; j++)
			    {
				var commentKey = commentObjectSortedKeys[j];
				var comment = commentObject[commentKey];

				if(comment.fbId && remoteCommentTracker[''+comment.fbId])
				    continue;
				else if(comment.fbId)
				    remoteCommentTracker[''+comment.fbId] = true;

		                commentHtml += '<div style="padding: 0px 0px 5px 0px;"><span class="archivedEmotionCommentName">'+comment.name+'</span><br>'+comment.message+'<br><span class="archivedEmotionCreateDate">'+comment.date+'</span></div>';
			    }

		            $('#archivedEmotionComments_'+_mongoId).append(commentHtml);
			}

		    	if(!isMobile) $('#archivedEmotionCommentsLoadingImage_'+_mongoId).remove();
                    },
             	    error: function(jqXHR, textStatus, errorThrown)
                    {
		    	if(!isMobile) $('#archivedEmotionCommentsLoadingImage_'+emotionCommentSearchViaFacebookLogin_id).remove();
             	    }
                });
	    }
	    else if(commentData && commentData.length > 0)
	    {
		// only local comments

		if(isMobile)
	            $('#archivedEmotionComments_'+emotionCommentSearchViaFacebookLogin_id).css('display','block');
		else
	            $('#archivedEmotionComments_'+emotionCommentSearchViaFacebookLogin_id).fadeIn();

	        $('#archivedEmotionComments_'+emotionCommentSearchViaFacebookLogin_id).append(localCommentHtml);
		if(!isMobile) $('#archivedEmotionCommentsLoadingImage_'+emotionCommentSearchViaFacebookLogin_id).remove();
	    }
	    else
	    {
		if(!isMobile) $('#archivedEmotionCommentsLoadingImage_'+emotionCommentSearchViaFacebookLogin_id).remove();
	    }
        }, 'json'); // emotionCommentSearchViaFacebookLoginFbPostId
    }

    $('#howWasArchiveContainer').attr('populated', '1');
    $('#howWasContainer').fadeIn( function() {bindCommentFieldEvents();} );
    $('.cssLoadingAnimation').slideUp();
}

function keys(obj)
{
    var keys = [];

    for(var key in obj)
    {
        keys.push(key);
    }

    return keys;
}

function bindCommentFieldEvents()
{
	$('.archivedEmotionCommentField').keypress(
	function(event) 
	{
	    if($(this).attr('processingKeypress') == '0')
	    {
		
	        $(this).attr('processingKeypress', '1');
	        if(event.which == 13)
	        {
		    var _id = $(this).parent().parent().attr('id');
		    var fbpostid = $(this).parent().parent().attr('fbpostid');
		    var commentValue = jQuery.trim($(this).val());

		    $(this).parent().html('<br><img src="/images/ajax-loader.gif">');
		    
		    if(loggedInUsername)
        	        howis.emotionCommentViaFacebookLogin(userID, accessToken, _id, commentValue, fbpostid, emotionCommentCallback);
		    else if(twitterLoggedInUsername)
        	        howis.emotionCommentViaTwitterLogin(userID, twitterAccessToken, _id, commentValue, dbUsername, emotionCommentCallback);

	            event.preventDefault();
	        }
	    }
	});

	$('.archivedEmotionCommentField').keyup(
	function() 
	{
	    if($(this).attr('processingKeypress') == '1')
	    {
	        $(this).attr('processingKeypress', '0');
	    }
	});

	$('.archivedEmotionCommentField').focus(
	function() 
	{
   	    $(this).attr('focused', '1');
	    if(jQuery.trim($(this).val()) == 'comment...')
	    {
		$(this).val('');
	    }
	});

	$('.archivedEmotionCommentField').blur(
	function() 
	{
   	    $(this).attr('focused', '0');
	});

        $('.archivedEmotion').mouseover(
        function()
 	{
            if($(this).attr('isActive') != 1)
            {
                var fbPostId = $(this).attr('fbPostId');
                var _id = $(this).attr('id');

	        $('#archivedEmotionCommentFieldContainer_'+_id).slideDown();
    
                $(this).attr('isActive', '1');
                $(this).animate({'border-color': '1px solid #808080'}, 200);
                $(this).find('.archivedEmotionDelete').fadeIn(200);
            }
        });         
    
        $('.archivedEmotion').mouseleave(
        function()
        {
            if($(this).attr('isActive') == 1)
            {
             	var fbPostId = $(this).attr('fbPostId');
                var _id = $(this).attr('id');

                $('#archivedEmotionCommentFieldContainer_'+_id).slideUp();

                $(this).attr('isActive', '0');
                $(this).animate({'border-color': '1px solid #FFFFFF'}, 200);
                $(this).find('.archivedEmotionDelete').fadeOut(200);
            }
	});
}

function emotionCommentCallback(_id, fbpostid, data)
{
    var name = data.name;
    var comment = data.comment;
    var createDate = data.createDate;

    var commentHtml = '<div style="padding: 0px 0px 5px 0px;"><span class="archivedEmotionCommentName">'+name+'</span><br>'+comment+'<br><span class="archivedEmotionCreateDate">'+createDate+'</span><div>';
    $('#archivedEmotionComments_'+_id).append(commentHtml);

    if(isMobile)
        $('#archivedEmotionComments_'+_id).css('display','block');
    else
        $('#archivedEmotionComments_'+_id).fadeIn();

    $('#archivedEmotionCommentFieldContainer_'+_id).html('<br><input processingKeypress="0" focused="0" class="archivedEmotionCommentField" type="text" value="comment...">');
    bindCommentFieldEvents();
}

function facebookLogout()
{
    twttr.anywhere.signOut();

    FB.getLoginStatus(function(response)
    {
     	if(response.authResponse)
        {
	    FB.logout(function(response) 
	    {
		window.location = "/";
	    });
        }
        else
	{
  	    window.location = "/";
        }
    });
}

function basicSelected()
{
    $('#reasonContainer').fadeIn();
    $('#basic').focusout();

    var basic = $('#basic').val();

    if(basic == 'other')
    {
        $('#basicOther').slideDown(function() { $('#basicOther').focus(); });
    }
    else
    {
        $('#reason').focus();
        $('#basicOther').slideUp();
    }
}

function processKeyPress(e, f)
{
    if(!e || !f)
        return;
     
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
    {
 	f();
    }
}

