function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.value = limitNum - limitField.value.length;
	}
}

function updateFields(event)
{
	var element = event.element();
	limitText(element, $('MessageCountDown'), 150);
}

function friendsTooltip(element, friends)
{
	new Tip(element, {
	  ajax: {
	    url: '/messages/friendsTooltip',
	    options: {
	    	parameters: {ids: friends}
	    }
	  },
	  effect: 'appear',
	  fixed: true,
	  className: 'darktip',
	  title: 'Beraberdik...',
	  stem: 'topLeft',
	  width: 'auto',
	  closeButton: true,
	  hideOn: false,
	  hideAfter: 0.5
	});
}

function getTags(event)
{
	var element = event.element();
	replaced = false;
	
	tags = $F(element).split(',');
	tags = array_map(trim, tags);
	tagToSearch = tags[tags.length-1];
	
	if(tagToSearch.length > 2)
	{
		element.addClassName('spinner');
		
		new Ajax.Updater('tags-container', '/messages/acTags', {
			evalScripts: true,
			onComplete: function(request, json) {
				element.removeClassName('spinner')
			},
			parameters:Form.Element.serialize(element),
			requestHeaders:['X-Update', 'tags-container']
		});
	}
}

function addTag(element)
{
	tags = $F('MessageTags').split(',');
	tags = array_map(trim, tags);
	
	$('MessageTags').value = tags.join(", ");
	
	if(replaced)
	{
		$('MessageTags').value = $F('MessageTags')+', '+element.innerHTML;
	}
	else
	{
		tags = $F('MessageTags').split(',');
		$('MessageTags').value = $F('MessageTags').replace(tags[tags.length-1], element.innerHTML);
		replaced = true;
	}
	
	Element.hide(element.parentNode);
}

function trim( str, charlist ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
 
    var whitespace;
    
    if(!charlist){
        whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
    } else{
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    }
  
  for (var i = 0; i < str.length; i++) {
    if (whitespace.indexOf(str.charAt(i)) === -1) {
    str = str.substring(i);
    break;
    }
  }
  for (i = str.length - 1; i >= 0; i--) {
    if (whitespace.indexOf(str.charAt(i)) === -1) {
      str = str.substring(0, i + 1);
      break;
      }
  }
  return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

function array_map( callback ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Andrea Giammarchi (http://webreflection.blogspot.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: array_map( function(a){return (a * a * a);}, [1, 2, 3, 4, 5] );
    // *     returns 1: [ 1, 8, 27, 64, 125 ]
 
 
    var argc = arguments.length, argv = arguments;
    var j = argv[1].length, i = 0, k = 1, m = 0;
    var tmp = [], tmp_ar = [];
 
    while (i < j) {
        while (k < argc){
            tmp[m++] = argv[k++][i];
        }
 
        m = 0;
        k = 1;
 
        if( callback ){
            tmp_ar[i++] = callback.apply(null, tmp);
        } else{
            tmp_ar[i++] = tmp;
        }
 
        tmp = [];
    }
 
    return tmp_ar;
}
