|
// https://cheeaun.talkerapp.com/plugins/56 |
|
|
|
(function(plugin, $){ |
|
var msgbox = $('#msgbox'); |
|
|
|
// Gladly stolen from |
|
// http://github.com/mootools/mootools-more/blob/master/Source/Element/Element.Forms.js |
|
var selectRange = function(el, start, end){ |
|
if (el.setSelectionRange) { |
|
el.focus(); |
|
el.setSelectionRange(start, end); |
|
} else { |
|
var value = el.value; |
|
var diff = value.substr(start, end - start).replace(/\r/g, '').length; |
|
start = value.substr(0, start).replace(/\r/g, '').length; |
|
var range = el.createTextRange(); |
|
range.collapse(true); |
|
range.moveEnd('character', start + diff); |
|
range.moveStart('character', start); |
|
range.select(); |
|
} |
|
}; |
|
|
|
var setCaretPosition = function(el, pos){ |
|
if (pos == 'end') pos = el.value.length; |
|
selectRange(el, pos, pos); |
|
}; |
|
|
|
$('tr.message').live('mouseover', function(){ |
|
var el = $(this); |
|
var message = el.find('td.message'); |
|
var replyButton = message.find('a.reply-button'); |
|
if (!replyButton.length){ |
|
var replyContainer = $('<div class="reply-button-container"></div>').css('position', 'relative'); |
|
replyButton = $('<a href="#" class="reply-button">Reply</a>').css({ |
|
position: 'absolute', |
|
right: 9, |
|
bottom: 4, |
|
backgroundColor: '#fff', |
|
padding: '3px 8px', |
|
fontSize: '.8em', |
|
textTransform: 'uppercase', |
|
'-moz-border-radius': '3px', |
|
'-webkit-border-radius': '3px' |
|
}).appendTo(replyContainer); |
|
replyContainer.appendTo(message); |
|
} |
|
replyButton.show(); |
|
}).live('mouseout', function(){ |
|
var el = $(this); |
|
var message = el.find('td.message'); |
|
var replyButton = message.find('a.reply-button'); |
|
if (!replyButton.length) return; |
|
replyButton.hide(); |
|
}); |
|
|
|
$('tr.message a.reply-button').live('click', function(){ |
|
var el = $(this); |
|
var message = el.parents('tr.message'); |
|
if (!message.length) return; |
|
var author = message.attr('author'); |
|
var val = $.trim(msgbox.val()); |
|
var pattern = new RegExp('@' + author + '(\\s|$)', 'gi'); |
|
if (val === ''){ |
|
msgbox.val('@' + author + ' '); |
|
} else if (!pattern.test(val)){ |
|
msgbox.val(val + ' @' + author); |
|
} |
|
setCaretPosition(msgbox[0], 'end'); |
|
msgbox.focus(); |
|
return false; |
|
}); |
|
})(plugin, jQuery); |