/*
a ser feito:

ao amarrar os eventos de click nas DLs deve ser amarrado somente à DL que foi criada no momento
*/
$.fn.jSelect = function(options) {
	var objs = this;
	var objects = this.length;
	
	for (var i = 0; i < objects; i++) {
		var n_options = this[i].options.length;

		var $prox_elem = $(this[i]).next();
		if ($prox_elem.length > 0) {
			if ($prox_elem[0].tagName == 'DL' || $prox_elem[0].tagName == 'dl') {
				$prox_elem.remove();
			}
		}

		var lis = '';
		var dt = '';
		var result = '';
		for (var n = 0; n < n_options; n++) {
			if (this[i].options[n].selected) {
				dt = '<dt><a class="title" href="#" name="' + this[i].options[n].value + '">' + this[i].options[n].innerHTML + '</a></dt>';
				lis += '<li><a class="selected option" href="#" name="' + this[i].options[n].value + '">' + this[i].options[n].innerHTML + '</a></li>';
			} else {
				lis += '<li><a class="option" href="#" name="' + this[i].options[n].value + '">' + this[i].options[n].innerHTML + '</a></li>';
			}
		}
		result = '<dl class="select '+ this[i].className +'">' + dt + '<dd><ul>' + lis + '</ul></dd></dl>';
		$(this[i]).after(result).hide();
	}
	
	var $dls = $('dl.select');

	$dls.find('a.title').unbind('click').bind('click',function(){
		$(this).parent().next().toggle();
		return false;
	});
	
	$dls.find('a.option').unbind('click').bind('click',function(){
		var value = $(this).attr('name');
		var html = $(this).html();
		var $dd = $(this).parent().parent().parent();
		$dd.find('a').removeClass('selected');
		$(this).addClass('selected');
		$dd.hide();
		$dd.prev().find('a').attr('name',value).html(html);
		$dd.parent().prev().val(value).trigger('change');
		return false;
	});
	
	$(document).unbind('click').bind('click',function(e){
		$('dl.select dd').hide();
	});
}
