/**
 * function to remove elements
 */
function remover(e, s, callback) {
	if (typeof s == 'undefined' || s == false || confirm(s)) {
		if (typeof callback == 'undefined' || callback(e)) {
			$(e).remove();
		}
	}
	
	return false;
}

/**
 * function to clone an element
 */
function cloner(e, src, dst, i) {
	if (!$(e).data('umc_js_cloner')) {
		$(e).data('umc_js_cloner', i);
	}
	
	var c = $(e).data('umc_js_cloner');
	
	var element = $(src)
		.clone(true)
		.removeAttr('id')
		.removeAttr('style');
	
	element.find(':input').each(function() {
		var _attr = {
			id: $(this).attr('id').replace('{n}', c)
		};
		
		switch ($(this).attr('type')) {
			case 'text':
				_attr['name'] = $(this).attr('name').replace('{n}', c);
				break;
			
			case 'textarea':
				_attr['name'] = $(this).attr('name').replace('{n}', c);
				break;
			
		    case 'file':
				_attr['name'] = $(this).attr('name').replace('{n}', c);
				break;
			
		    case 'checkbox':
			    _attr['name'] = $(this).attr('name').replace('{n}', c);
				_attr['value'] = $(this).attr('value').replace('{n}', c);
				break;
			
    		case 'hidden':
    			_attr['name'] = $(this).attr('name').replace('{n}', c);
				break;
			
			case 'radio':
				break;
		}
		
		$(this).attr(_attr);
	});
	element.find('label').each(function() {
		$(this).attr({
			'for': $(this).attr('for').replace('{n}', c)
		});
	});
	element.find('select').each(function() {
		$(this).attr({
			'id': $(this).attr('id').replace('{n}', c),
			'name': $(this).attr('name').replace('{n}', c)
		});
	});
	
	$(dst).append(element);
	
	$(e).data('umc_js_cloner', ++c);
}

/**
 * function to toggel a div
 */
function toggle_div(select, time, trigger, toggle, auto_switch) {
	var e = $(select);
	
	if (!e.data('umc_js_toggle_div')) {
		$(trigger).show();
		
		e.data('umc_js_toggle_div', {
			state: false,
			toggle: $(trigger).html()
		});
		
		if (auto_switch) {
			time = 0;
		}
	}
	
	var q = e.data('umc_js_toggle_div');
	
	if (q.state) {
		e.slideDown(time);
		$(trigger).html(q.toggle);
	}
	else {
		e.slideUp(time);
		$(trigger).html(toggle);
	}
	
	q.state = !q.state;
	
	e.data('umc_js_toggle_div', q);
}

/**
 * add .trunc to strings
 */
String.prototype.trunc =
	function (n, word_boundary) {
		var to_long = this.length > n,
			s_ = to_long ? this.substr(0, n - 1) : this;
			s_ = word_boundary && to_long ? s_.substr(0, s_.lastIndexOf(' ')) : s_;
		return to_long ? s_ + '...' : s_;
	};
