var advselect_focus = '';

$.fn.css_val = function(n) { 
    r = $(this).css(n);
    return parseInt(r.replace('px',''));
}

$.fn.undo = function(n) { 
    if ($(this).is(".advedit")) {
        v = $(this).attr('undo');
        if (typeof v === 'undefined') return;
        
        $(".advedit_input[default=0]", this).val(v);
    }
} 

$.fn.value = function(val) {
    def = $(".advedit_input[default=1]", $(this));
    inp = $(".advedit_input[default=0]", $(this));
    if (typeof val !== 'undefined') {
        if (val == '') {
            if (inp.is(":visible")) {
                inp.val('');
                inp.hide();
                def.show();    
            }
        } else {
            inp.show();
            inp.val(val);
            def.hide();
        }
    } else {
        if (inp.is(":visible"))
            return inp.val(); else 
            return def.val();        
    }
}  

$(document).ready(function() {
    $(document).mouseup(function() {
        if (advselect_focus) {
            h1 = $(advselect_focus).attr('hovered');
            h2 = $(".advselect_list", advselect_focus).attr('hovered');
            
            if (!h1 && !h2) { 
                advselect_toggle_list(advselect_focus, -1);
                advselect_focus.removeClass("focused");
                $(".advselect_list", advselect_focus).removeClass("focused");
                
                advselect_focus = null;
            }
        };
    });

    $(".advedit_input[file=1]").live("change", function() {
        edit = $(this).parents(".advedit:first");
        i = $(".advedit_input[file=0]", edit);
        i.val($(this).val());
        i.removeClass("default");
    });
    $(".advedit_input[file=0]").live("click", function() {
        edit = $(this).parents(".advedit:first");
        $(".advedit_input[file=1]", edit).trigger("click");
        $(this).blur();
    });

                          
    $(".advedit_input[default=1]").live("focus", function() {
        edit = $(this).parents(".advedit:first");
        $(".advedit_input[default=0]", edit).show();
        $(".advedit_input[default=0]", edit).focus();
    });
    $(".advedit_input[default=0]").live("focus", function() {
        edit = $(this).parents(".advedit:first");
        edit.addClass('focused');             
        edit.attr('undo', $(this).val());   
        $(".advedit_input[default=1]", edit).hide();
    });
    $(".advedit_input[default=0]").live("change", function() {
        if ($(this).val() == '') {
            $(this).hide();
            $(".advedit_input[default=1]", edit).show();            
        } else {
            $(this).show();
            $(".advedit_input[default=1]", edit).hide();
        }
    });
    $(".advedit_input[default=0]").live("focusout", function() {
        edit = $(this).parents(".advedit:first");
        
        if ($(this).val() != edit.attr('undo'))
            edit.trigger('advedit_changed');
        
        if ($(this).val() == '') {
            $(this).hide();
            $(".advedit_input[default=1]", edit).show();            
        }
        edit.removeClass("focused");
    }).bind("keypress", function(e) {
         if (e.keyCode == 13) {
             edit = $(this).parents(".advedit:first");
             
             if ($(this).val() != edit.attr('undo'))
                edit.trigger('advedit_changed');
             
             $(this).blur(); 
         }    
    }); 
    $(".advedit_input[default=0]").bind("inputs_error", function() {
        edit = $(this).parents(".advedit:first");
        edit.addClass("error");
    });
    $(".advedit_input[default=0]").bind("inputs_reset", function() {
        edit = $(this).parents(".advedit:first");
        edit.removeClass("error");
    });
    
    $(".advselect, .advselect_list").live("mouseover", function() { 
        $(this).attr('hovered',1);
    });
    $(".advselect, .advselect_list").live("mouseout", function() {
        $(this).removeAttr('hovered');
    });
    $(".advselect_main > input").live("click", function() {
        select = $(this).parents(".advselect:first");
        select.trigger("click");
    });
    $(".advselect").live("click", function() {
        $(this).addClass("focused");
        $(".advselect_list", this).addClass("focused");

        advselect_focus = $(this);
        advselect_toggle_list($(this), 0);
    });
    $(".advselect_item").live("click", function() {
        select = $(this).parents(".advselect:first");
        
        $(" > input", select).val($(this).attr('name'));
        $(".advselect_main", select).html($(this).html()).removeClass('default');
        
        advselect_toggle_list($(this), -1); 
    });
    $(".advselect > input").bind("inputs_error", function() {
        select = $(this).parents(".advselect:first");
        select.addClass("error");
    });
    $(".advselect > input").bind("inputs_reset", function() {
        select = $(this).parents(".advselect:first");
        select.removeClass("error");
    });
    
    $(".advarea_main > textarea").live("focus", function() {
        if ($(this).hasClass("default")) {
            $(this).val('');
            $(this).removeClass("default");
        }
        area = $(this).parents(".advarea:first");
        area.addClass("focused");
    });
    $(".advarea_main > textarea").live("focusout", function() {
        area = $(this).parents(".advarea:first");
        $("> input", area).val($(this).val());
        
        if ($(this).val() == '') {
            $(this).val($(this).attr('default'));
            $(this).addClass('default');    
        }
        
        area.find("*").removeClass("focused");
    });
    $(".advarea_main > textarea").bind("inputs_error", function() {
        area = $(this).parents(".advarea:first");
        area.addClass("error");
    });    
});

function advedit_value(edit, val) {
    $(".advedit_input[default=1]", edit).hide();
    $(".advedit_input[default=0]", edit).show().val(val);
}

function advselect_toggle_list(select, st) {
    list = $(".advselect_list", select);
    if (list.is(":visible")) {
        if (st == 1) return;
        
        select.find("*").removeClass("expanded");
        
        list.hide();
    } else {
        if (st == -1) return;
        select.find("*").addClass("expanded");
        list.show();
        
        wl = list.width();
        ws = select.width();
        
        if (wl <= ws) {
            list.addClass('sticked');
            p = list.css_val('padding-left') + list.css_val('padding-right');
            list.width((ws-p) + 'px');
        } 
        
        cont = $(".advselect_cont");
        ch = cont.height();
        ih = cont.children().height();
        
        if (ih > ch) 
            cont.css("overflow-y", "scroll");
    }                                                            
}

