function update_required() {
	$('.form .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';
	}
}


$(document).ready(function() {
	$('.custom_form .currency, .payment_form .currency').each(function(){
		$(this).parent().prepend('<span class="dollar" style="display: none;">$</span>');
		var restingPosition = '5px';

		var dollar = $(this).prev();
		// style the label with JS for progressive enhancement
		dollar.css({
			'display' : 'inline',
			'left' : restingPosition
		});

		var inputval = $(this).val();

		// grab the label width, then add 5 pixels to it
		var labelwidth = dollar.width();
		var labelmove = labelwidth + 5 +'px';

		// onload, check if a field is filled out, if so, move the label out of the way
		if(inputval !== ''){
			dollar.stop().animate({ 'left':'-'+labelmove }, 1);
		}    	

		// if the input is empty on focus move the label to the left
		// if it's empty on blur, move it back
		$(this,'input, textarea').focus(function(){
			var label = $(this).prev('.dollar');
			var width = $(label).width();
			var adjust = width + 5 + 'px';
			var value = $(this).val();

			if(value == ''){
				label.stop().animate({ 'left':'-'+adjust }, 'fast');
			} else {
				label.css({ 'left':'-'+adjust });
			}
		}).blur(function(){
			var label = $(this).prev('.dollar');
			var value = $(this).val();

			if(value == ''){
				label.stop().animate({ 'left':restingPosition }, 'fast');
			}	

		});
	}); // End "each" statement
	$('form.no_labels .input input, form.no_labels .input textarea').each(function(intIndex) {
		var input = $(this);
		var label = input.parent().parent().find('label');
		label.css('display', 'none');
		if(input.val() == '') {
			input.val(label.text());
		}

		input.bind('blur', function() {
			var input = $(this);
			if(input.val() == '') {
				var label = input.parent().parent().find('label');
				input.val(label.text());
			}
		});
		input.bind('focus', function() {
			var input = $(this);
			var label = input.parent().parent().find('label');
			input.val(input.val());
			if(input.val() == label.text()) {
				input.val('');
			}
		});
	});
	$('form.no_labels').bind('submit', function() {
		$('form.no_labels .input input, form.no_labels .input textarea').each(function(intIndex) {
			var input = $(this);
			var label = input.parent().parent().find('label');
			label.css('display', 'none');
			if(input.val() == label.text()) {
				input.val('');
			}
		});
	});
});
