
    ui = {
        
		calendar: function(selector){
			$(selector).datepicker({
				yearRange: "-100:+0",
				dateFormat: CFG_UI_CALENDAR_FORMAT,
				showOn: "both", 
				buttonImageOnly: true, 
				buttonImage: "", 
				buttonText: "",
				showAnim: "show"
			});	
		},
	
		tabs: function(selector){
	                $(selector).each(function(){
	                    aTabs = [];
	                    $(this).show();
	                    var group = utilities.randomString(10); // agrupamos las pesta�as
	                    var lis = $(this).find("li"); // buscamos los <li>
	                    var selectedByClass = false;
	                    lis.each(function(i){
	                            var a = $($(this).children());
	                            var li = $(this);
	                            var id = a.attr("href");
	                            var div = $(id);
	                            div.hide();
	                            li.attr("rel", group);
	                            div.attr("rel", group);
	                            aTabs[id] = li;
	                            if(/selected/.test(li.attr("class"))){
	                                    selectedByClass = true;
	                                    div.show();
	                                    for(x = (i - 1); x >= 0; x--){
	                                        $(lis[x]).removeClass("selected");
	                                        $($($(lis[x]).children()).attr("href")).hide();
	                                    }
	                            }
	                            if(!selectedByClass){
	                                    $(lis[0]).addClass("selected");
	                                    $($($(lis[0]).children()).attr("href")).show();
	                                    selectedByClass = true;
	                            }
	                            li.click(function(){
	                                    var a = $($(this).children());
	                                    var id = a.attr("href");
	                                    var rel = $(this).attr("rel");
	                                    var div = $(id);
	                                    if(/selected/.test($(this).attr("class"))) return false;
	                                    $(this).toggleClass("selected");
	                                    div.show();
	                                    $("li[rel='" + rel + "']").each(function(){
	                                            var thisAnchor = $($(this).find("a")[0]).attr("href");
	                                            if(thisAnchor != a.attr("href")){
	                                                    $(this).removeClass("selected");
	                                                    $(thisAnchor).hide();
	                                            }
	                                    });
	                                    return false;
	                            });
	                    });
	                });
		},
	
		thickBox: function(){
		    tb_init('a.thickbox, area.thickbox, input.thickbox');
		},
		
		toggleAjaxPreloader: function(){
			var preloader = $("#the-preloader");
			if(preloader.visible()) preloader.fadeOut("slow");
			else preloader.alefadeIn("slow");
		},
	        
	    helpOver: function(obj, text, size){
	        var bubblePosition = $(obj).findPos();
	        var bubbleY = bubblePosition.y + 15;
	        var bubbleX = bubblePosition.x + 15;
	        var bubbleWidth = (!size) ? "" : "width:" + size + "px; ";
	        if(!$("div#help-bubble").exists())
	            $("body").prepend("<div id='help-bubble'></div>");
	        $("div#help-bubble")
	            .attr("style", bubbleWidth + "top:" + bubbleY + "px; left:" + bubbleX + "px")
	            .html(text)
	            .show();
	    },
	    
	    helpOut: function(){
	        $("div#help-bubble").fadeOut("fast");
	    },
        
        requiredFormItems: function(){
            $("input.required, select.required, textarea.required").each(function(){
                $(this).blur(function(){
                    var empty;
                    // text, password, textarea
                    if($(this).is("input[type='text']") || $(this).is("input[type='password']") || $(this).is("textarea"))
                        empty = ($(this).attr("value") == "" || $(this).attr("value") == undefined);
                    // select
                    if($(this).is("select"))
                        empty = ($(this).get(0)[$(this).get(0).selectedIndex].value == "");
                    if(empty){
                        $(this).addClass("required-focus");
                    }else{
                        $(this).removeClass("required-focus"); 
                    }
                });
            });
        },
        
        hidePreloader: function(){
            $("#page-preloader").fadeOut("slow");
        },
        
        addAttachField: function(obj){
            var td = $($(obj).parent().parent().parent().find("td")[1]);
            var div = $(td.find("div")[0]);
            div.clone().appendTo(td).find("input").attr("value", "");
        },
        
        deleteAttachField: function(obj){
            if($(obj).parent().parent().find("div").length == 1)
                $(obj).parent().find("input").attr("value", "");
            else $(obj).parent().remove();
        },
        
        openFileManager: function(obj){
            fileManagerInput = $(obj);
            $("#file-manager").toggleVisible();
        },
        
        attachFileInfo: function(fileUrl){
            if(fileManagerInput != null) fileManagerInput.attr("value", fileUrl);
            $("#file-manager").hide();
        },
        
        /*********************************************************************************
         * Metodos AJAX
         * 
         **/
        
		rowsPos: function(selector){
			$(selector).tableDnD({
				onDrop: function(table, srow){
					var rows = table.tBodies[0].rows;
					var debugStr = "";
					for (var i = 0; i < rows.length; i++) {
						debugStr += rows[i].id.replace("row-", "") + "," + i + ";";
					}
					var pars = "do=sortTable&positions=" + debugStr + "&table=" + table.id;
					$.ajax({
						type: "POST",
	                                        url: "core/controller/ajax/_common.ajax.controller.php",
	                                        data: pars,
						success: function(msg){
							utilities.handleAjaxResponse(msg, function(){  
	                                                });
						}
					});
				},
				onDragClass: "on-drag"
			});
		},
        
        checkItem: function(obj, field, id, table){
                var icon = $(obj).find("img");
                var action = (icon.attr("src").substr(icon.attr("src").length - 5) == "n.gif") ? 0 : 1;
                var pars = "do=checkItem&action=" + action + "&field=" + field + "&id=" + id + "&table=" + table;
                $.ajax({
                        type: "POST",
                        url: "core/controller/ajax/_common.ajax.controller.php",
                        data: pars,
                        success: function(msg){
                            utilities.handleAjaxResponse(msg, function(){
                                icon.attr("src", "interface/images/icon-" + ((action) ? "on" : "off") + ".gif");
                            }); 
                        }
                }); 
        },
		
		inputTextToggler: function(input){
			if(input.value == input.defaultValue)
				input.value = "";
			input.onmouseout = function(){
				if(input.value == "")
					input.value = input.defaultValue;
			}
		}

        
    }