function update_required() {
	$('.required label').each(function(){
		$(this).append('*').css('font-weight', 'bold');
	});
	$('.custom_form .required label').each(function(){
		if($(this).parent().parent().hasClass('form')) {
		} else {
			$(this).append('*').css('font-weight', 'bold');
		}
	});
}

function get_keywords(content, field) {
	$.getJSON(base_url + 'generate-keywords.html?content=' + urlencode(content) + '&field=' + urlencode(field), function(j){
		$('#' + j.field + ' input').val(j.tags);
	});
}

function update_class_fields(object, field) {
	value = object.value;
	if(value != '') {
		$.getJSON(base_url + 'getclassfields.html?class=' + urlencode(value) + '&field_id=' + urlencode(field), function(j){
			var fields = $('#' + j.field_id + ' .input select')
			fields.children().remove();
			var first = '';
			for (key in j.fields) {
				if(first == '') { first = key; }
				if (typeof(j.fields[key]) == 'string') {
					fields.append('<option value="' + key + '">' + j.fields[key] + '</option>');
				}
			}
			$.getJSON(base_url + 'getclassfieldvalues.html?class=' + urlencode(j.class_name) + '&field=' + urlencode(fields.val()), function(j){
				var base_id = '#do_objectpermission_values .input';
				var values = $(base_id + ' select[multiple]');
				var name = values.attr('name');
				$(base_id).children().remove();
				$(base_id).append('<select name="' + name + '" multiple="multiple"></select>');
				var values = $(base_id + ' select');
				for (key in j.values) {
					if (typeof(j.values[key]) == 'string') {
						values.append('<option value="' + key + '">' + j.values[key] + '</option>');
					}
				}
				$('select[multiple]').asmSelect({ animate: true });
			});
		});
	}
}
function update_class_values(class_id, field_id, value_id) {
	class_id = '#' + class_id + ' .input select';
	var class_name = $(class_id).val();
	var field = $('#' + field_id + ' .input select').val();
	if(value != '') {
		$.getJSON(base_url + 'getclassfieldvalues.html?class=' + urlencode(class_name) + '&field=' + urlencode(field) + '&value_id=' + urlencode(value_id), function(j){
			var base_id = '#' + j.value_id + ' .input';
			var values = $(base_id + ' select[multiple]');
			var name = values.attr('name');
			$(base_id).children().remove();
			$('#' + j.value_id + ' .input').append('<select name="' + name + '" multiple="multiple"></select>');
			var values = $('#' + j.value_id + ' .input select');
			for (key in j.values) {
				if (typeof(j.values[key]) == 'string') {
					values.append('<option value="' + key + '">' + j.values[key] + '</option>');
				}
			}
			$('select[multiple]').asmSelect({ animate: true });
		});
	}
}
function is_field_value_unique(object, id, class_name, field, label) {
	value = object.value;
		
	$.getJSON(base_url + 'field_unique.html?id=' + urlencode(id) + '&label=' + urlencode(label) + '&class=' + urlencode(class_name) + '&field=' + urlencode(field) + '&value=' + urlencode(value), function(j){
		if(j.count != 0) {
			alert(j.label + ' is not unique and is required to be unique.');
		}
	});
}
function url_safe(text) {
	text = text.toLowerCase();
	text = text.replace(/[^a-z 0-9]+/g,'');
	text = text.replace(/[ ]+/g,'-');
	
	return text;
}
function getElementsByClassName(className, tag, elm) {
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for (var i = 0; i < length; i++) {
		current = elements[i];
		if (testClass.test(current.className)) {
			returnElements.push(current);
		}
	}
	return returnElements;
}

function returnObjById(id) {
	if (document.getElementById)
		var returnVar = document.getElementById(id);
	else if (document.all)
		var returnVar = document.all[id];
	else if (document.layers)
		var returnVar = document.layers[id];
	return returnVar;
}
function in_array(needle, array) {
	var return_value = false;
	var length = array.length;
	for (var i = 0; i < length; i++) {
		if (array[i] == needle) {
			return_value = true;
			break;
		}
	}

	return return_value;
}
function Hash() {
	this.length = 0;
	this.items = new Array();
	for (var i = 0; i < arguments.length; i += 2) {
		if (typeof (arguments[i + 1]) != 'undefined') {
			this.items[arguments[i]] = arguments[i + 1];
			this.length++;
		}
	}

	this.removeItem = function(in_key) {
		var tmp_value;
		if (typeof (this.items[in_key]) != 'undefined') {
			this.length--;
			var tmp_value = this.items[in_key];
			delete this.items[in_key];
		}
		return tmp_value;
	}

	this.getItem = function(in_key) {
		return this.items[in_key];
	}

	this.setItem = function(in_key, in_value) {
		if (typeof (in_value) != 'undefined') {
			if (typeof (this.items[in_key]) == 'undefined') {
				this.length++;
			}
			this.items[in_key] = in_value;
		}
		return in_value;
	}

	this.hasItem = function(in_key) {
		return typeof (this.items[in_key]) != 'undefined';
	}
}

